Skip to content

Disallow named generators with the same name in FreeBand and FreeInverseSemigroup #1117

Description

@wilfwilson

In gap-system/gap#6097, I am working on disallowing named generators to have the same name in the free object constructors, such as FreeGroup, FreeSemigroup, FreeMonoid, FreeInverseSemigroup, etc. It just doesn't make sense.

On this theme, the Semigroups package has the constructor FreeBand, which also currently allows named generators to have the same name. Unless anyone vigorously objects, I'll change the behaviour of FreeBand in the same way that I'm changing it for the other constructors.

This is how it looks:

gap> S := FreeBand("x", "x");
<free band on the generators [ x, x ]>
gap> gens := GeneratorsOfSemigroup(S);
[ x, x ]
gap> gens[1]; gens[2];
x
x
gap> gens[1] = gens[2];
false
gap> gens[1] in S and gens[2] in S and gens[1] <> gens[2];
true
gap> T := FreeBand(2);
<free band on the generators [ x1, x2 ]>
gap> iso := IsomorphismSemigroups(T, S);;
gap> T.1 ^ iso;
x
gap> T.2 ^ iso;
x

It's just strange.

Also FreeInverseSemigroup lets you specify duplicate generators, and it doesn't throw any of them away, but it also considers generators with the same name to be equal, which is also strange!

gap> U := FreeInverseSemigroup("a", "b", "c", "b");
<free inverse semigroup on the generators [ a, b, c, b ]>
gap> U.2; U.4;
b
b
gap> U.2 = U.4;
true
gap> GeneratorsOfInverseSemigroup(U);
[ a, b, c, b ]

Metadata

Metadata

Assignees

Labels

gap-compatibilityA label for PRs or issues that are related to compatibility with changes in GAP

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions