Something called by `JoinIrreducibleDClasses` of an ideal of a bipartition semigroup calls `GeneratorsOfSemigroup`

Issue #88 resolved
James Mitchell
repo owner created an issue

Something called by JoinIrreducibleDClasses of an ideal of a bipartition semigroup calls GeneratorsOfSemigroup, it shouldn't...

gap> I:=SemigroupIdeal(S, x);
<inverse bipartition semigroup ideal on 6 pts with 1 generator>
gap> JoinIrreducibleDClasses(I);
[ {Bipartition( [ [ 1, 2, 3, 4, 5, -1, -2, -3, -4, -5 ], [ 6, -6 ] ] )} ]
gap> I;
<inverse bipartition semigroup of size 178923, on 6 pts with 33 generators>

Comments (5)

  1. wilfwilson

    For a bipartition inverse semigroup, JoinIrreducibleDClasses checks IsJoinIrreducible for each D-class. The first offending line in IsJoinIrreducible is IsPartialPermBipartitionSemigroup.

    This is called because IsJoinIrreducible relies on the idempotents of the inverse semigroup being sorted in a particular way for efficiency reasons. For most semigroups using Set gives the desired ordering. We would like consistent ordering between a set of partial perms and a set of equivalent partial perm bipartitions, however Set doesn't give this. Asking for IsPartialPermBipartitionSemigroup dealt with this special case.

    I have looked at the code and found a better way to deal with this. The desired ordering is that elements are ordered by increasing rank. I now do this explicitly for both partial perms and for bipartitions.

    In the future if there are additional types of semigroup satisfying IsActingSemigroupWithInverseOp then this will need its own special case. A general method called Rank for an element which chose the relevant method (e.g. RankOfTransformation or RankOfPartialPerm or RankOfBipartition) would make this easier to future-proof, however it is perhaps not desirable as it is not a very specific word.

  2. Log in to comment