[GAP Forum] How to find a minimal (or small) list of congruences for a monoid, given a list of congruences?

Martin Rubey martin.rubey at tuwien.ac.at
Wed Sep 16 13:16:24 BST 2020


Dear all!

I have a list of congruences defining a monoid, eg:

a b = b a
b c = c b
a c b = b a c

Some of these congruences may be redundant, in the above example

a c b = a b c = b a c

where the first equality is from the second, the second equality from
the first given congruence.

I would like to compute a minimal (or, smaller, since I don't expect to
solve the word problem) list of congruences defining the same monoid.

I thought that the following might work, but it just gave me the same list:

gap> LoadPackage("Semigroups");
gap> S := FreeMonoid(3);
gap> G := Generators(S);
gap> a := G[1]; b := G[2]; c := G[3];
gap> C := SemigroupCongruence(S, [[a*b, b*a], [b*c, c*b], [b*a*c, a*c*b]]);
gap> GeneratingPairsOfSemigroupCongruence(C);
[ [ s1*s2, s2*s1 ], [ s1*s3, s3*s1 ], [ s1*s3*s2, s2*s1*s3 ] ]

(I expected to get only the first two pairs)

Is there a way to achieve an approximate solution?  (Background below)

All the best,

Martin

In case anyone is interested in the background:

the http://findstat.org database currently determines a list of
identities between maps, see, for example
http://www.findstat.org/MapsDatabase/Mp00175 and click on "click to show
experimental identities" (beware that these identities are only checked
for the a few hundred small elements, automatically - there is not
proof).

While this is nice, it is sometimes hard to find the interesting
identities, because there are so many, and very many are just
consequences of the previous ones.

My goal is to (automatically!) remove identities which are found to be
redundant.



More information about the Forum mailing list