#############################################################################
##
#W maximal.xml
#Y Copyright (C) 2013-16 James D. Mitchell
## Wilf A. Wilson
##
## Licensing information can be found in the README file of this package.
##
#############################################################################
##
<#GAPDoc Label="MaximalSubsemigroups">
<ManSection>
<Attr Name = "MaximalSubsemigroups" Arg = "S" Label="for a finite semigroup"/>
<Oper Name = "MaximalSubsemigroups" Arg = "S, opts"
Label="for a finite semigroup and a record"/>
<Returns>
The maximal subsemigroups of <A>S</A>.
</Returns>
<Description>
If <A>S</A> is a finite semigroup, then the attribute
<C>MaximalSubsemigroups</C> returns a list of the non-empty maximal
subsemigroups of <A>S</A>. The methods used by <C>MaximalSubsemigroups</C>
are based on <Cite Key="Graham1968aa"/>, and are described in
<Cite Key="Donoven2018aa"/>.
<P/>
It is computationally expensive to search for the maximal subsemigroups of a
semigroup, and so computations involving <C>MaximalSubsemigroups</C> may be
very lengthy. A substantial amount of information on the progress of
<C>MaximalSubsemigroups</C> is provided through the info class <Ref
InfoClass="InfoSemigroups"/>, with increasingly detailed information given
at levels 1, 2, and 3.
<P/>
The behaviour of <C>MaximalSubsemigroups</C> can be altered via the second
argument <A>opts</A>, which should be a record. The optional
components of <A>opts</A> are:
<List>
<Mark>gens (a boolean)</Mark>
<Item>
If <C><A>opts</A>.gens</C> is <K>false</K> or unspecified, then the
maximal subsemigroups themselves are returned and not just generating
sets for these subsemigroups.
<P/>
It can be more computationally expensive to return the generating sets
for the maximal subsemigroups, than to return the maximal subsemigroups
themselves.
</Item>
<Mark>contain (a list)</Mark>
<Item>
If <C><A>opts</A>.contain</C> is duplicate-free list of elements of
<A>S</A>, then <C>MaximalSubsemigroups</C> will search for the maximal
subsemigroups of <A>S</A> which contain those elements.
</Item>
<Mark>D (a &D;-class)</Mark>
<Item>
For a maximal subsemigroup <C>M</C> of a finite semigroup <A>S</A>,
there exists a unique &D;-class which contains the complement of
<C>M</C> in <A>S</A>. In other words, the elements of <A>S</A> which
<C>M</C> lacks are contained in a unique &D;-class.
<P/>
If <C><A>opts</A>.D</C> is a &D;-class of <A>S</A>, then
<C>MaximalSubsemigroups</C> will search exclusively for those maximal
subsemigroups of <A>S</A> whose complement is contained in
<C><A>opts</A>.D</C>.
</Item>
<Mark>types (a list)</Mark>
<Item>
<E>This option is relevant only if <A>S</A> is a regular Rees
(0-)matrix semigroup over a group.</E>
<P/>
As described at the start of this subsection, <Ref Sect = "Computing maximal subsemigroups" />, a maximal subsemigroup of a
regular Rees (0-)matrix semigroup over a group is one of 6 possible
types.
<P/>
If <A>S</A> is a regular Rees (0-)matrix semigroup over a group and
<C><A>opts</A>.types</C> is a subset of <C>[1 .. 6]</C>, then
<C>MaximalSubsemigroups</C> will search for those maximal subsemigroups
of <A>S</A> of the types enumerated by <C><A>opts</A>.types</C>.
<P/>
The default value for this option is <C>[1 .. 6]</C> (i.e. no
restriction).
</Item>
</List>
<Example><![CDATA[
gap> S := FullTransformationSemigroup(3);
<full transformation monoid of degree 3>
gap> MaximalSubsemigroups(S);
[ <transformation semigroup of degree 3 with 7 generators>,
<transformation semigroup of degree 3 with 7 generators>,
<transformation semigroup of degree 3 with 7 generators>,
<transformation semigroup of degree 3 with 7 generators>,
<transformation monoid of degree 3 with 5 generators> ]
gap> MaximalSubsemigroups(S,
> rec(gens := true, D := DClass(S, Transformation([2, 2, 3]))));
[ [ Transformation( [ 1, 1, 1 ] ), Transformation( [ 3, 3, 3 ] ),
Transformation( [ 2, 2, 2 ] ), IdentityTransformation,
Transformation( [ 2, 3, 1 ] ), Transformation( [ 2, 1 ] ) ] ]
gap> MaximalSubsemigroups(S,
> rec(contain := [Transformation([2, 3, 1])]));
[ <transformation semigroup of degree 3 with 7 generators>,
<transformation monoid of degree 3 with 5 generators> ]
gap> R := PrincipalFactor(
> DClass(FullTransformationMonoid(4), Transformation([2, 2])));
<Rees 0-matrix semigroup 6x4 over Group([ (2,3,4), (2,4) ])>
gap> MaximalSubsemigroups(R, rec(types := [5],
> contain := [RMSElement(R, 1, (), 1),
> RMSElement(R, 1, (2, 3), 2)]));
[ <subsemigroup of 6x4 Rees 0-matrix semigroup with 10 generators>,
<subsemigroup of 6x4 Rees 0-matrix semigroup with 10 generators>,
<subsemigroup of 6x4 Rees 0-matrix semigroup with 10 generators>,
<subsemigroup of 6x4 Rees 0-matrix semigroup with 10 generators> ]]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="NrMaximalSubsemigroups">
<ManSection>
<Attr Name = "NrMaximalSubsemigroups" Arg = "S" />
<Returns>
The number of maximal subsemigroups of <A>S</A>.
</Returns>
<Description>
If <A>S</A> is a finite semigroup, then <C>NrMaximalSubsemigroups</C>
returns the number of non-empty maximal subsemigroups of <A>S</A>. The
methods used by <C>MaximalSubsemigroups</C> are based on <Cite
Key="Graham1968aa"/>, and are described in <Cite Key="Donoven2018aa"/>.
<P/>
It can be significantly faster to find the number of maximal subsemigroups
of a semigroup than to find the maximal subsemigroups themselves.
<P/>
Unless the maximal subsemigroups of <A>S</A> are already known, the command
<C>NrMaximalSubsemigroups(<A>S</A>)</C> simply calls the command
<C>MaximalSubsemigroups(<A>S</A>, rec(number := true))</C>.
<P/>
For more information about searching for maximal subsemigroups of a finite
semigroup in the &SEMIGROUPS; package, and for information about the options
available to alter the search, see <Ref Oper="MaximalSubsemigroups"
Label="for a finite semigroup and a record"/>. By supplying the additional
option <C><A>opts</A>.number :=</C> <K>true</K>, the number of maximal
subsemigroups will be returned rather than the subsemigroups themselves.
<#GAPDoc Label="IsMaximalSubsemigroup">
<ManSection>
<Oper Name = "IsMaximalSubsemigroup" Arg = "S, T"/>
<Returns>
<K>true</K> or <K>false</K>.
</Returns>
<Description>
If <A>S</A> and <A>T</A> are semigroups, then <C>IsMaximalSubsemigroup</C>
returns <K>true</K> if and only if <A>T</A> is a maximal subsemigroup of
<A>S</A>.
<P/>
A <E>maximal subsemigroup</E> of <A>S</A> is a proper subsemigroup of
<A>S</A> which is contained in no other proper subsemigroup of <A>S</A>.
<Example><![CDATA[
gap> S := ZeroSemigroup(2);;
gap> IsMaximalSubsemigroup(S, Semigroup(MultiplicativeZero(S)));
true
gap> S := FullTransformationSemigroup(4);
<full transformation monoid of degree 4>
gap> T := Semigroup(Transformation([3, 4, 1, 2]),
> Transformation([1, 4, 2, 3]),
> Transformation([2, 1, 1, 3]));
<transformation semigroup of degree 4 with 3 generators>
gap> IsMaximalSubsemigroup(S, T);
true
gap> R := Semigroup(Transformation([3, 4, 1, 2]),
> Transformation([1, 4, 2, 2]),
> Transformation([2, 1, 1, 3]));
<transformation semigroup of degree 4 with 3 generators>
gap> IsMaximalSubsemigroup(S, R);
false]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.