Programming Research Group
Research Report RR-01-20
Polyanna technical manual (version 1.00)
Richard Gault.
December 2001, 53pp.
Abstract
Polyanna is a program for finding the polymorphisms of a given set of
finite relations over a finite domain. Other programs have been
written in the past to solve this problem, but all have run
prohibitively slowly. Polyanna is the first program to fully exploit
the symmetry inherent in this problem, and as a result, can run
exponentially
faster than its rivals.
This manual details the working of Polyanna at several levels of
abstraction. We begin by describing the program from a user's point
of view, and then give a detailed account of Polyanna's internals,
which will be of interest to those who wish to modify or extend the
program. We conclude with a high-level discussion of some of the
algorithms used in Polyanna.
This paper is available as a 140,554 bytes gzipped Postscript file.
|