-
Notifications
You must be signed in to change notification settings - Fork 38
Update to use libsemigroups v3
#1087
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
99b4a25 to
086b2b0
Compare
|
Requires libsemigroups/libsemigroups#880 (and possibly a release to be made) to be merged first before this has any chance that the CI will pass. |
fa7ee49 to
4ab5495
Compare
|
I've been doing some digging about why the tests on Since the most recent release of GAP, gap-system/gap#6064 has been merged. The change that I think is impacting us is described in that PR:
This is changing the behaviour of the following line that gets called at some point during the call to map := IsomorphismPermGroup(SchutzenbergerGroup(H));In the example given in the test file, Previously, using the same input as given in the test file, this line returned a map whose If this isn't a bug, then the following changes in InstallMethod(IsomorphismPermGroup, "for H-class of an acting semigroup",
[IsGreensHClass and IsActingSemigroupGreensClass],
function(H)
local map, id, iso, inv;
if not IsGroupHClass(H) then
ErrorNoReturn("the argument (a Green's H-class) is not a group");
elif not IsPermGroup(SchutzenbergerGroup(H)) then
map := IsomorphismPermGroup(SchutzenbergerGroup(H));
else
map := IdentityMapping(SchutzenbergerGroup(H));
fi;
id := ConvertToInternalElement(Parent(H), MultiplicativeNeutralElement(H));
iso := function(x)
if not x in H then
ErrorNoReturn("the argument does not belong to the domain of the ",
"function");
fi;
x := ConvertToInternalElement(Parent(H), x);
return LambdaPerm(Parent(H))(id, x) ^ map;
end;
inv := function(x)
local S, act;
if not x in Image(map) then
ErrorNoReturn("the argument does not belong to the domain of the ",
"function");
fi;
S := Parent(H);
act := StabilizerAction(S);
return ConvertToExternalElement(S,
- act(id, x ^ InverseGeneralMapping(map)));
+ act(id, x ^ RestrictedInverseGeneralMapping(map)));
end;
- return MappingByFunction(H, Range(map), iso, inv);
+ return MappingByFunction(H, Image(map), iso, inv);
end);This makes sure our inverse map satisfies |
This PR updates the package to use
libsemigroupsv3.Presently, this is a draft and there is a lot more work to be done. In a few critical places, I have added errors of the form
"<the thing you are trying to do> is not yet implemented". With this, running any of the test files should clearly highlight further changes that need to be made.Some notable things still to be done:
Congruenceobjects fromFroidurePinobjects.FroidurePinobjects fromToddCoxeterobjects.Congruence::ntcfunction.FroidurePinobjects.