peal / vole

A GAP package for backtrack search in permutation groups with graphs
https://peal.github.io/vole
Mozilla Public License 2.0
8 stars 2 forks source link

Have a version of the search functions that does no preprocessing #66

Open wilfwilson opened 2 years ago

wilfwilson commented 2 years ago

As we have discussed before, we are currently not really bothering to add special cases to our packages.

Nevertheless, some optimisations and special cases will naturally creep in, and indeed, some already have: for example, if both Constraint.IsOdd and Constraint.IsEven are specified, then the search doesn't even begin (since there are no even-and-odd perms).

However, for some purposes, it may be useful to be able to use Vole, while ensuring that this never happens.

One way to do this is to use the undocumented _Vole.Solve function, etc, directly (with arguments points, find_single, find_coset, find_canonical, constraints, canonical_group, root_search)...but this is difficult. Surely it would be nicer to offer the same functions as usual, but just to guarantee that nothing clever will be done before the search commences.

I think the simplest way is just to have an option to skip the 'preprocessing' steps of the various VoleFind functions, such as VoleFind.Group and VoleFind.Rep, and simply pass the arguments directly to _Vole.Solve, etc, in the appropriate way.

Perhaps this could be a value option, e.g. VoleFind.Rep(constraint1, refiner1, constraint2 : pure)

The question is: how little processing should be done? Does it still let Vole interpret constraints into refiners, or should it only allow actual refiners as arguments?

(To some extent, this issue may also apply to BacktrackKit and GraphBacktracking).