AI::Constraints::LiftUtils is a Perl module implementing
methods to manipulate relations of arity r over a finite domain
{0,1,..., k-1}, optionally together with an r-tuple of permutations
of the domain to be applied to a relation. At the most basic level,
strings representing these expressions can be converted to internal
form (and vice versa). Routines are also provided to enumerate
relations and permutations (using an ordering suggested by Knuth),
to apply a tuple of permutations to a
relation (called "lifting"), to convert a relation to a "Booleanized"
representation, and to determine the complexity of a relation.
Several example scripts are provided, including lift
which now uses this module. This code is still experimental and
undergoing major work, feedback is most welcome.
Most of the real work is done by an external program, Richard Gault's polyanna.
Download from here: