# No zero class in semigroup congruence EquivalenceClasses (generating pairs)

Issue #95 resolved
Michael Torpey
created an issue

(Library)

For certain congruences by generating pairs on Rees 0-matrix semigroups, the EquivalenceClasses function does not give a class containing 0.

```gap> P := [ [ (), 0, (1,3), (1,3), 0, (), 0 ],
>   [ (), (1,3), 0, 0, (1,3), (), 0 ], [ (), (1,3), 0, (), 0, 0, () ],
>   [ 0, (), (1,3), (1,3), (), 0, 0 ], [ 0, 0, 0, (), (), (1,3), () ],
>   [ (), 0, (1,3), 0, (), 0, () ] ];;
gap> R := ReesZeroMatrixSemigroup(Group([(1,3)]), P);;
gap> x := ReesZeroMatrixSemigroupElement(R, 1, (1,3), 1);;
gap> y := ReesZeroMatrixSemigroupElement(R, 1, (), 1);;
gap> cong := SemigroupCongruenceByGeneratingPairs(R, [[x,y]]);;
gap> c := EquivalenceClasses(cong);
[ {(1,(1,3),1)}, {(1,(1,3),2)}, {(1,(1,3),3)}, {(1,(1,3),4)}, {(1,(1,3),5)},
{(1,(1,3),6)}, {(2,(1,3),1)}, {(3,(1,3),1)}, {(4,(1,3),1)}, {(5,(1,3),1)},
{(6,(1,3),1)}, {(7,(1,3),1)}, {(2,(1,3),2)}, {(3,(1,3),2)}, {(4,(1,3),2)},
{(5,(1,3),2)}, {(6,(1,3),2)}, {(7,(1,3),2)}, {(2,(1,3),3)}, {(3,(1,3),3)},
{(4,(1,3),3)}, {(5,(1,3),3)}, {(6,(1,3),3)}, {(7,(1,3),3)}, {(2,(1,3),4)},
{(3,(1,3),4)}, {(4,(1,3),4)}, {(5,(1,3),4)}, {(6,(1,3),4)}, {(7,(1,3),4)},
{(2,(1,3),5)}, {(3,(1,3),5)}, {(4,(1,3),5)}, {(5,(1,3),5)}, {(6,(1,3),5)},
{(7,(1,3),5)}, {(2,(1,3),6)}, {(3,(1,3),6)}, {(4,(1,3),6)}, {(5,(1,3),6)},
{(6,(1,3),6)}, {(7,(1,3),6)} ]
gap> MultiplicativeZero(R);
0
gap> ForAny(c, x->MultiplicativeZero(R) in x);
false
```

1. repo owner
• removed milestone

Removing milestone: 2.1 (automated comment)

2. repo owner

I was trying to check if this is still an issue, and I get:

```gap> P := [ [ (), 0, (1,3), (1,3), 0, (), 0 ],
>   [ (), (1,3), 0, 0, (1,3), (), 0 ], [ (), (1,3), 0, (), 0, 0, () ],
>   [ 0, (), (1,3), (1,3), (), 0, 0 ], [ 0, 0, 0, (), (), (1,3), () ],
>   [ (), 0, (1,3), 0, (), 0, () ] ];;
gap> R := ReesZeroMatrixSemigroup(Group([(1,3)]), P);;
gap> x := ReesZeroMatrixSemigroupElement(R, 1, (1,3), 1);;
gap> y := ReesZeroMatrixSemigroupElement(R, 1, (), 1);;
gap> cong := SemigroupCongruenceByGeneratingPairs(R, [[x,y]]);;
gap> c := EquivalenceClasses(cong);
Error, Record: '<rec>.opts' must have an assigned value in
ht := HTCreate( pairs[1], rec(
forflatplainlists := true,
treehashsize := s!.opts.hashlen.L ) ); called from
SEMIGROUPS_SetupCongData( cong ); called from
AsLookupTable( cong ) called from
<function "unknown">( <arguments> )
called from read-eval loop at line 18 of *stdin*
you can 'return;' after assigning a value
brk> IsActingSemigroup(R);
false
brk>
```
3. repo owner
• removed milestone

Removing milestone: 2.3 (automated comment)

This seems to be fixed in the `congruences` branch.

4. repo owner
• removed milestone

Removing milestone: 2.4 (automated comment)