Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

McAlister triples #271

Merged
merged 8 commits into from
Aug 31, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions doc/main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,15 +64,16 @@
<#Include SYSTEM "z-chap09.xml"> <!-- standard constructions-->
<#Include SYSTEM "z-chap10.xml"> <!-- free objects -->
<#Include SYSTEM "z-chap11.xml"> <!-- graph inverse semigroups -->
<#Include SYSTEM "z-chap12.xml"> <!-- Green's relations -->
<#Include SYSTEM "z-chap13.xml"> <!-- attributes of semigroups -->
<#Include SYSTEM "z-chap14.xml"> <!-- properties of semigroups -->
<#Include SYSTEM "z-chap15.xml"> <!-- properties and attributes of inverse semigroups -->
<#Include SYSTEM "z-chap16.xml"> <!-- congruences -->
<#Include SYSTEM "z-chap17.xml"> <!-- homomorphisms -->
<#Include SYSTEM "z-chap18.xml"> <!-- visualising semigroups -->
<#Include SYSTEM "z-chap19.xml"> <!-- utils -->
<!--<#Include SYSTEM "z-chap20.xml"> <!-- orbits -->
<#Include SYSTEM "z-chap12.xml"> <!-- McAlister triple semigroups -->
<#Include SYSTEM "z-chap13.xml"> <!-- Green's relations -->
<#Include SYSTEM "z-chap14.xml"> <!-- attributes of semigroups -->
<#Include SYSTEM "z-chap15.xml"> <!-- properties of semigroups -->
<#Include SYSTEM "z-chap16.xml"> <!-- properties and attributes of inverse semigroups -->
<#Include SYSTEM "z-chap17.xml"> <!-- congruences -->
<#Include SYSTEM "z-chap18.xml"> <!-- homomorphisms -->
<#Include SYSTEM "z-chap19.xml"> <!-- visualising semigroups -->
<#Include SYSTEM "z-chap20.xml"> <!-- utils -->
<!--<#Include SYSTEM "z-chap21.xml"> <!-- orbits -->
<!-- <#Include SYSTEM "z-chap22.xml"> <!-- extending the package -->
</Body>

Expand Down
311 changes: 311 additions & 0 deletions doc/semieunit.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,311 @@
############################################################################
##
#W semieunit.xml
#Y Copyright (C) 2016 Christopher Russell
##
## Licensing information can be found in the README file of this package.
##
#############################################################################
##

<#GAPDoc Label="IsMcAlisterTripleSemigroup">
<ManSection>
<Filt Name = "IsMcAlisterTripleSemigroup" Arg = "S"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
This function returns <K>true</K> if <A>S</A> is a McAlister triple semigroup.
A <E>McAlister triple semigroup</E> is a special representation of an
E-unitary inverse semigroup <Ref Oper="IsEUnitaryInverseSemigroup"/>
created by <Ref Oper="McAlisterTripleSemigroup"/>.
</Description>
</ManSection>
<#/GAPDoc>

<#GAPDoc Label="McAlisterTripleSemigroup">
<ManSection>
<Oper Name = "McAlisterTripleSemigroup" Arg = "G, X, Y[, act]"/>
<Returns>A McAlister triple semigroup.</Returns>
<Description>

The following documentation covers the technical information needed to
create McAlister triple semigroups in GAP, the underlying theory can be
read in the introduction to Chapter
<Ref Chap = "McAlister triple semigroups"/>.
<P/>

In this implementation the partial order <C>X</C> of a McAlister triple is
represented by a <Ref Oper="Digraph" BookName="Digraphs"/> object <A>X</A>.
The digraph represents a partial order in the sense that vertices are the
elements of the partial order and the order relation is defined by
<C>A</C> <M>\leq</M> <C>B</C> if and only if there is an edge from <C>B</C>
to <C>A</C>. The semilattice <C>Y</C> of the McAlister triple should be an
induced subdigraph <A>Y</A> of <A>X</A> and the
<Ref Oper="DigraphVertexLabels" BookName="Digraphs"/> must correspond to
the vertices of <A>X</A> on which <A>Y</A> is induced. That means that
the following:
<P/>

<C><A>Y</A> = InducedSubdigraph(<A>X</A>, DigraphVertexLabels(<A>Y</A>))
</C><P/>

must return <K>true</K>. Herein if we say that a vertex <C>A</C> of <A>X</A>
is 'in' <A>Y</A> then we mean there is a vertex of <A>Y</A> whose label is
<C>A</C>. Alerternatively the user may choose to give the argument
<A>Y</A> as the vertices of <A>X</A> on which <A>Y</A> is the induced
subdigraph. <P/>

A McAlister triple semigroup is created from a quadruple
<C>(<A>G</A>, <A>X</A>, <A>Y</A>, <A>act</A>)</C> where:

<List>
<Item>
<A>G</A> is a finite group.
</Item>
<Item>
<A>X</A> is a digraph satisfying
<Ref Prop= "IsPartialOrderDigraph" BookName="Digraphs"/>.
</Item>
<Item>
<A>Y</A> is a digraph satisfying
<Ref Prop="IsJoinSemilatticeDigraph" BookName="Digraphs"/> which
is an induced subdigraph of <A>X</A> satisfying the aforementioned
labeling criteria. Furthermore the <Ref Attr="OutNeighbours"
BookName="Digraphs"/> of each vertex of <A>X</A> which is in <A>Y</A>
must contain only vertices which are in <A>Y</A>.
</Item>
<Item>
<A>act</A> is a function which takes as its first argument a vertex
of the digraph <A>X</A>, its second argument should be an element of
<A>G</A>, and it must return a vertex of <A>X</A>.
<A>act</A> must be a right action, meaning that
<A>act</A><C>(A,gh)=<A>act</A>(<A>act</A>(A,g),h)</C> holds for all
<C>A</C> in <A>X</A> and <C>g,h</C> <M>\in</M> <A>G</A>. Furthermore
the permutation represenation of this action must be a subgroup of the
automorphism group of <A>X</A>. That means we require the following
to return <K>true</K>: <P/>
<C>IsSubgroup(AutomorphismGroup(</C><A>X</A><C>),
Image(ActionHomomorphism(</C><A>G</A><C>,
DigraphVertices(</C><A>X</A><C>), </C><A>act</A><C>));</C> <P/>
Furthermore every vertex of <A>X</A> must be in the orbit of some
vertex of <A>X</A> which is in <A>Y</A>. Finally, <A>act</A> must fix
the vertex of <A>X</A> which is the minimal vertex of <A>Y</A>, i.e.
the unique vertex of <A>Y</A> whose only out-neighbour is itself.
</Item>
</List>

For user convienience, there are multiple versions of
<C>McAlisterTripleSemigroup</C>. When the argument <A>act</A> is ommitted
it is assumed to be <Ref Func= "OnPoints" BookName= "ref"/>. Additionally,
the semilattice argument <A>Y</A> may be replaced by a homogeneous list
<A>sub_ver</A> of vertices of <A>X</A>. When <A>sub_ver</A> is provided,
<C>McAlisterTripleSemigroup</C> is called with <A>Y</A> equalling
<C>InducedSubdigraph(<A>X</A>, <A>sub_ver</A>)</C> with the appropriate
labels.

<Example><![CDATA[
gap> x := Digraph([[1], [1, 2], [1, 2, 3], [1, 4], [1, 4, 5]]);
<digraph with 5 vertices, 11 edges>
gap> y := InducedSubdigraph(x, [1, 4, 5]);
<digraph with 3 vertices, 6 edges>
gap> DigraphVertexLabels(y);
[ 1, 4, 5 ]
gap> A := AutomorphismGroup(x);
Group([ (2,4)(3,5) ])
gap> S := McAlisterTripleSemigroup(A, x, y, OnPoints);
<McAlister triple semigroup over Group([ (2,4)(3,5) ])>
gap> T := McAlisterTripleSemigroup(A, x, y);
<McAlister triple semigroup over Group([ (2,4)(3,5) ])>
gap> S = T;
false
gap> IsIsomorphicSemigroup(S, T);
true
gap> GeneratorsOfSemigroup(T);
[ (1, ()), (4, ()), (5, ()), (1, (2,4)(3,5)) ]
gap> AsSemigroup(IsPartialPermSemigroup, T);
<inverse partial perm monoid of size 4, rank 4 with 4 generators>]]></Example>
</Description>
</ManSection>
<#/GAPDoc>

<#GAPDoc Label="McAlisterTripleSemigroupGroup">
<ManSection>
<Attr Name = "McAlisterTripleSemigroupGroup" Arg = "S"/>
<Returns>A group.</Returns>
<Description>
Returns the group used to create the McAlister triple semigroup <A>S</A>
via <Ref Oper="McAlisterTripleSemigroup"/>.
</Description>
</ManSection>
<#/GAPDoc>

<#GAPDoc Label="McAlisterTripleSemigroupPartialOrder">
<ManSection>
<Attr Name = "McAlisterTripleSemigroupPartialOrder" Arg = "S"/>
<Returns>A partial order digraph.</Returns>
<Description>
Returns the <Ref Prop="IsPartialOrderDigraph" BookName="Digraphs"/> used
to create the McAlister triple semigroup <A>S</A> via
<Ref Oper="McAlisterTripleSemigroup"/>.
</Description>
</ManSection>
<#/GAPDoc>

<#GAPDoc Label="McAlisterTripleSemigroupSemilattice">
<ManSection>
<Attr Name = "McAlisterTripleSemigroupSemilattice" Arg = "S"/>
<Returns>A join-semilattice digraph.</Returns>
<Description>
Returns the <Ref Prop="IsJoinSemilatticeDigraph" BookName="Digraphs"/>
used to create the McAlister triple semigroup <A>S</A> via
<Ref Oper="McAlisterTripleSemigroup"/>.
</Description>
</ManSection>
<#/GAPDoc>

<#GAPDoc Label="McAlisterTripleSemigroupAction">
<ManSection>
<Attr Name = "McAlisterTripleSemigroupAction" Arg = "S"/>
<Returns>A function.</Returns>
<Description>
Returns the action used to create the McAlister triple semigroup
<A>S</A> via <Ref Oper="McAlisterTripleSemigroup"/>.
</Description>
</ManSection>
<#/GAPDoc>

<#GAPDoc Label="IsMcAlisterTripleSemigroupElement">
<ManSection>
<Filt Name = "IsMcAlisterTripleSemigroupElement" Arg = "x"/>
<Filt Name = "IsMTSE" Arg = "x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
Returns <K>true</K> if <A>x</A> is an element of a McAlister triple
semigroup; in particular, this returns <K>true</K> if <A>x</A> has been
created by <Ref Oper="McAlisterTripleSemigroupElement"/>. The functions
<C>IsMTSE</C> and <C>IsMcAlisterTripleSemigroupElement</C> are synonyms.
The mathematical description of these objects can be found in the
introduction to Chapter <Ref Chap = "McAlister triple semigroups"/>.
</Description>
</ManSection>
<#/GAPDoc>

<#GAPDoc Label="McAlisterTripleSemigroupElement">
<ManSection>
<Oper Name = "McAlisterTripleSemigroupElement" Arg = "S, A, g"/>
<Oper Name = "MTSE" Arg = "S, A, g"/>
<Returns>A McAlister triple semigroup element.</Returns>
<Description>
Returns the <E>McAlister triple semigroup element</E> of the McAlister
triple semigroup <A>S</A> which corresponds to a label <A>A</A> of a
vertex from the <Ref Attr="McAlisterTripleSemigroupSemilattice"/> of
<A>S</A> and a group element <A>g</A> of the <Ref Attr=
"McAlisterTripleSemigroupGroup"/> of <A>S</A>. The pair
<A>(A,g)</A> only represents an element of <A>S</A> if the following
holds:

<A>A</A> acted on by the inverse of <A>g</A> (via <Ref
Attr="McAlisterTripleSemigroupAction"/>) is a vertex of the
join-semilattice of <A>S</A>. <P/>

The functions <C>MTSE</C> and <C>McAlisterTripleSemigroupElement</C>
are synonyms.
<Example><![CDATA[
gap> x := Digraph([[1], [1, 2], [1, 2, 3], [1, 4], [1, 4, 5]]);
<digraph with 5 vertices, 11 edges>
gap> y := InducedSubdigraph(x, [1, 2, 3]);
<digraph with 3 vertices, 6 edges>
gap> A := AutomorphismGroup(x);
Group([ (2,4)(3,5) ])
gap> S := McAlisterTripleSemigroup(A, x, y, OnPoints);
<McAlister triple semigroup over Group([ (2,4)(3,5) ])>
gap> T := McAlisterTripleSemigroup(A, x, y);
<McAlister triple semigroup over Group([ (2,4)(3,5) ])>
gap> S = T;
false
gap> IsIsomorphicSemigroup(S, T);
true
gap> a := MTSE(S, 1, (2, 4)(3, 5));
(1, (2,4)(3,5))
gap> b := MTSE(S, 2, ());
(2, ())
gap> a * a;
(1, ())
gap> IsMTSE(a * a);
true
gap> a = MTSE(T, 1, (2, 4)(3, 5));
false
gap> a * b;
(1, (2,4)(3,5))]]></Example>
</Description>
</ManSection>
<#/GAPDoc>

<#GAPDoc Label="EUnitaryInverseCover">
<ManSection>
<Attr Name = "EUnitaryInverseCover" Arg = "S"/>
<Returns>A homomorphism between semigroups.</Returns>
<Description>
If the argument <A>S</A> is an inverse semigroup then this function
returns a finite E-unitary inverse cover of <A>S</A>. A finite E-unitary
cover of <A>S</A> is a surjective idempotent separating homomorphism from
a finite semigroup satisfying <Ref Prop="IsEUnitaryInverseSemigroup"/>
to <A>S</A>. A semigroup homomorphism is said to be idempotent separating
if no two idempotents are mapped to the same element of the image.
<Example><![CDATA[
gap> S := InverseSemigroup([PartialPermNC([1, 2], [2, 1]),
> PartialPermNC([1], [1])]);
<inverse partial perm semigroup of rank 2 with 2 generators>
gap> cov := EUnitaryInverseCover(S);
MappingByFunction( <inverse partial perm semigroup of rank 4 with 2
generators>, <inverse partial perm semigroup of rank 2 with 2
generators>, function( x ) ... end )
gap> IsEUnitaryInverseSemigroup(Source(cov));
true
gap> S = Range(cov);
true]]></Example>
</Description>
</ManSection>
<#/GAPDoc>

<#GAPDoc Label="IsFInverseSemigroup">
<ManSection>
<Prop Name = "IsFInverseSemigroup" Arg = "S"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
This functions determines whether a given semigroup is an F-inverse
semigroup. An F-inverse semigroup is a semigroup which satisfies
<Ref Prop="IsEUnitaryInverseSemigroup"/> as well as being isomorphic
to some <Ref Oper="McAlisterTripleSemigroup"/> where the
<Ref Attr="McAlisterTripleSemigroupPartialOrder"/> satisfies
<Ref Prop="IsJoinSemilatticeDigraph" BookName="Digraphs"/>. McAlister
triple semigroups are a represenation of E-unitary inverse semigroups and
more can be read about them in Chapter
<Ref Chap="McAlister triple semigroups"/>.
<Example><![CDATA[
gap> S := InverseMonoid([PartialPermNC([1, 2], [1, 2]),
> PartialPermNC([1, 2, 3], [1, 2, 3]),
> PartialPermNC([1, 2, 4], [1, 2, 4]),
> PartialPermNC([1, 2], [2, 1]), PartialPermNC([1, 2, 3], [2, 1, 3]),
> PartialPermNC([1, 2, 4], [2, 1, 4])]);;
gap> IsEUnitaryInverseSemigroup(S);
true
gap> IsFInverseSemigroup(S);
false
gap> IsFInverseSemigroup(IdempotentGeneratedSubsemigroup(S));
true]]></Example>
</Description>
</ManSection>
<#/GAPDoc>

<#GAPDoc Label="IsFInverseMonoid">
<ManSection>
<Prop Name = "IsFInverseMonoid" Arg = "S"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
This function determines whether a given semigroup is an F-inverse
monoid. A semigroup is an F-inverse monoid when it satisfies
<Ref Filt="IsMonoid" BookName = "ref"/> and
<Ref Prop="IsFInverseSemigroup"/>.
</Description>
</ManSection>
<#/GAPDoc>
Loading