Finite semigroups¶
-
class
sage.categories.finite_semigroups.
FiniteSemigroups
(base_category)¶ Bases:
sage.categories.category_with_axiom.CategoryWithAxiom_singleton
The category of finite (multiplicative) semigroups.
A finite semigroup is a
finite set
endowed with an associative binary operation \(*\).Warning
Finite semigroups in Sage used to be automatically endowed with an
enumerated set
structure; the default enumeration is then obtained by iteratively multiplying the semigroup generators. This forced any finite semigroup to either implement an enumeration, or provide semigroup generators; this was often inconvenient.Instead, finite semigroups that provide a distinguished finite set of generators with
semigroup_generators()
should now explicitly declare themselves in the category offinitely generated semigroups
:sage: Semigroups().FinitelyGenerated() Category of finitely generated semigroups
This is a backward incompatible change.
EXAMPLES:
sage: C = FiniteSemigroups(); C Category of finite semigroups sage: C.super_categories() [Category of semigroups, Category of finite sets] sage: sorted(C.axioms()) ['Associative', 'Finite'] sage: C.example() An example of a finite semigroup: the left regular band generated by ('a', 'b', 'c', 'd')
-
class
ParentMethods
¶ Bases:
object
-
idempotents
()¶ Returns the idempotents of the semigroup
EXAMPLES:
sage: S = FiniteSemigroups().example(alphabet=('x','y')) sage: sorted(S.idempotents()) ['x', 'xy', 'y', 'yx']
-
j_classes
()¶ Returns the \(J\)-classes of the semigroup.
Two elements \(u\) and \(v\) of a monoid are in the same \(J\)-class if \(u\) divides \(v\) and \(v\) divides \(u\).
OUTPUT:
All the $J$-classes of self, as a list of lists.
EXAMPLES:
sage: S = FiniteSemigroups().example(alphabet=('a','b', 'c')) sage: sorted(map(sorted, S.j_classes())) [['a'], ['ab', 'ba'], ['abc', 'acb', 'bac', 'bca', 'cab', 'cba'], ['ac', 'ca'], ['b'], ['bc', 'cb'], ['c']]
-
j_classes_of_idempotents
()¶ Returns all the idempotents of self, grouped by J-class.
OUTPUT:
a list of lists.
EXAMPLES:
sage: S = FiniteSemigroups().example(alphabet=('a','b', 'c')) sage: sorted(map(sorted, S.j_classes_of_idempotents())) [['a'], ['ab', 'ba'], ['abc', 'acb', 'bac', 'bca', 'cab', 'cba'], ['ac', 'ca'], ['b'], ['bc', 'cb'], ['c']]
-
j_transversal_of_idempotents
()¶ Returns a list of one idempotent per regular J-class
EXAMPLES:
sage: S = FiniteSemigroups().example(alphabet=('a','b', 'c')) sage: sorted(S.j_transversal_of_idempotents()) # py2 ['a', 'acb', 'b', 'ba', 'bc', 'c', 'ca']
The chosen elements depend on the order of each \(J\)-class, and that order is random when using Python 3.
sage: sorted(S.j_transversal_of_idempotents()) # py3 random ['a', 'ab', 'abc', 'ac', 'b', 'c', 'cb']
-
-
class