Skip to content

Commit

Permalink
Add IsomorphismSemigroup from Clifford smgp to SSS
Browse files Browse the repository at this point in the history
  • Loading branch information
tomcontileslie committed May 20, 2021
1 parent 34d3dfd commit ee0fcca
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions gap/attributes/isomorph.gi
Original file line number Diff line number Diff line change
Expand Up @@ -327,3 +327,60 @@ function(S)
UseIsomorphismRelation(H, G);
return H;
end);

InstallMethod(IsomorphismSemigroup,
"for IsStrongSemilatticeOfSemigroups and a Clifford semigroup",
[IsStrongSemilatticeOfSemigroups, IsSemigroup and IsFinite],
function(filt, S)
local A, idemps, n, D, N, L, classes, idemp, DC, H, map, SSS, i, j;
# decomposes a finite Clifford semigroup S into a strong semilattice of
# groups and returns an SSS object.
if not (IsCliffordSemigroup(S) and IsFinite(S)) then
TryNextMethod();
fi;
# There should be one idempotent per D-class, i.e. per semilattice element
# since the semilattice decomposition is by J-classes, and J = D here
A := Semigroup(Idempotents(S));
idemps := Elements(A);
n := Size(idemps);

# create semilattice
D := DigraphReflexiveTransitiveReduction(Digraph(NaturalPartialOrder(A)));
# currently wrong way round
D := DigraphReverse(D);
N := OutNeighbours(D);

# populate list of semigroups in semilattice.
# keep a list of D-classes at the same time, to figure out where elements are
L := [];
classes := [];
for i in [1 .. n] do
idemp := idemps[i]; # the idempotent of this D-class
DC := DClass(S, idemp);
Add(L, Semigroup(DC));
Add(classes, DC);
od;

# populate list of homomorphisms
H := [];
for i in [1 .. n] do
idemp := idemps[i];
Add(H, []);
for j in N[i] do
map := function(elm)
return idemp * elm;
end;
Add(H[i], MappingByFunction(L[j], L[i], map));
od;
od;

SSS := StrongSemilatticeOfSemigroups(D, L, H);

return MagmaIsomorphismByFunctionsNC(S,
SSS,
x -> SSSE(SSS,
Position(classes,
DClass(S, x)),
x),
x -> x![3]);
end);

0 comments on commit ee0fcca

Please sign in to comment.