Rough idea: Vole “canonisers” #12
Labels
kind: new feature
New features/capabilities
nature: technical
Uninteresting mathematically and fiddly things
topic: canonical
Relating to ‘canonical’ searches
In writing the documentation for
VoleFind.Canonical
(which I am still working on), I realised that it's quite tricky to explain what the user needs to do in order to make everything work ‘right’.To canonise an object
x
in a way that involves custom refiners or constraints, a user needs to do something like:where the constraints/refiners
con/ref1
,con/ref2
,con/ref3
relate to the objectx
somehow (this code snippet is simplified).con/ref1
might be something likeGB_Con.NormaliserSimple2
.But there's not much point in ever canonising one object in isolation; because a canonical image is essentially meaningless without another canonical image to compare it to.
So if a user does want to canonise another object
y
(which is possibly in the same orbit ofG
asx
, i.e.x
andy
are possibly isomorphic, and we want to useVoleFind.Canonical
to determine this...) then they have to do everything again in a 'consistent' way (and in the same GAP session). It would again look something like this:This is a lot of typing, and there's potential for accidentally using the wrong refiner, or for giving the refiners in the wrong order, which might give the wrong answer.
Therefore I had an idea: what if you could give the group in which you wish to canonise several things (i.e.
G
), and the 'family' of refiners you want to use for this (con/ref1
,con/ref2
,con/ref3
), and then would Vole return a function that makes sure that everything is done in a consistent way. You would then call this function on the individual objects that you want to canonise, without having to deal with the refiners again.The interface would look something like:
It will probably be a little bit fiddly to make this work properly (e.g. in my example here, we are canonising a single object, not a pair of objects, and all of the constraints/refiners apply to that object one – what if you want to canonise of a pair of different things instead?).
But that's the idea that I've had anyway.
The text was updated successfully, but these errors were encountered: