It seems that the default refiner for VoleCon.InGroup(AlternatingGroup(points)) is InGroup-GB, which I guess uses a stabiliser chain? This would explain why this is slow:
Using a stabiliser chain for an alternating group is perhaps not the best way of refining for an alternating group. Can we even sensibly refine for an alternating group in (extended) graph backtracking?
Perhaps the refiner should not actually add anything onto the stack, but it should just check for evenness when you reach a leaf node. In particular, perhaps this is what the refiner for VoleCon.IsEven should do (#31), and then VoleCon.InGroup(AlternatingGroup(points)) can just be immediately translated to [VoleCon.IsEven(), VoleCon.MovedPoints(points)].
It seems that the default refiner for
VoleCon.InGroup(AlternatingGroup(points))
isInGroup-GB
, which I guess uses a stabiliser chain? This would explain why this is slow:Using a stabiliser chain for an alternating group is perhaps not the best way of refining for an alternating group. Can we even sensibly refine for an alternating group in (extended) graph backtracking?
Perhaps the refiner should not actually add anything onto the stack, but it should just check for evenness when you reach a leaf node. In particular, perhaps this is what the refiner for
VoleCon.IsEven
should do (#31), and thenVoleCon.InGroup(AlternatingGroup(points))
can just be immediately translated to[VoleCon.IsEven(), VoleCon.MovedPoints(points)]
.