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.