finite-semigroups-0.1.0.0: Operations and classification for finite semigroups
Copyright(c) 2023 Dakotah Lambert
LicenseMIT
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Representation.FiniteSemigroup.Order

Description

This module provides support for quasiordered semigroups.

Synopsis

Documentation

data OrderedSemigroup s Source #

A semigroup alongside a preorder (reflexive and transitive). The constructor itself is not exported so as to enforce this condition.

Instances

Instances details
(FiniteSemigroupRep s, Read s) => Read (OrderedSemigroup s) Source # 
Instance details

Defined in Data.Representation.FiniteSemigroup.Order

(FiniteSemigroupRep s, Show s) => Show (OrderedSemigroup s) Source # 
Instance details

Defined in Data.Representation.FiniteSemigroup.Order

FiniteSemigroupRep s => FiniteSemigroupRep (OrderedSemigroup s) Source # 
Instance details

Defined in Data.Representation.FiniteSemigroup.Order

Eq s => Eq (OrderedSemigroup s) Source # 
Instance details

Defined in Data.Representation.FiniteSemigroup.Order

Ord s => Ord (OrderedSemigroup s) Source # 
Instance details

Defined in Data.Representation.FiniteSemigroup.Order

odual :: OrderedSemigroup s -> OrderedSemigroup s Source #

Return the given semigroup with its order reversed.

sdual :: FiniteSemigroupRep s => OrderedSemigroup s -> OrderedSemigroup FSMult Source #

Return the given semigroup with its multiplication reversed.

assignOrder :: FiniteSemigroupRep s => [(Int, Int)] -> s -> OrderedSemigroup s Source #

Associate the reflexive, transitive closure of the given relation as an order for the given semigroup.

assignOrderBy :: FiniteSemigroupRep s => (s -> Int -> Int -> Bool) -> s -> OrderedSemigroup s Source #

Derive an order from the given function and associate it with the given semigroup.

fromBasesWith :: (GeneratedAction -> Int -> Int -> Bool) -> [[Int]] -> OrderedSemigroup GeneratedAction Source #

Create a GeneratedAction alongside an order derived from the given function.

syntacticOrder :: Int -> IntSet -> GeneratedAction -> Int -> Int -> Bool Source #

The order where \(x\leq y\) if and only if whenever \(uyv\) maps the given object into the given set, so too does \(uxv\).

trivialOrder :: s -> Int -> Int -> Bool Source #

The order where \(x\leq y\) if and only if \(x=y\).