Mixtus, an automatic partial evaluator for full Prolog

What is Mixtus

Mixtus is an automatic partial evaluator for full Prolog. Given a Prolog program and a partially instantiated query it will produce a new Prolog program optimized for all instances of that query. Mixtus will do this automatically, i.e. without any user annotation, and Mixtus accepts practically all built in predicates in Prolog.

If all works well, Mixtus will produce a program that runs faster than the original one, and this is also the main reason for doing partial evaluation.

Use

You can use Mixtus on any Prolog program, but you can't expect Mixtus to produce a very good result unless your program contains some "redundant" computations. A typical example of such a program is a interpreter for a variant of Prolog or an other language. You may also be able to use use Mixtus as a powerful macroexpander. For instance, if you have a database with various access predicate, Mixtus may produce specialized instances for those accesses.

Click here to see a sample session of Mixtus

Availability

Mixtus is available free of charge to interested research collegues, but you need to register first in order to get the password to the special ftp area for Mixtus. Just mail me (dan@sics.se) your name and postal address (needed for the registration), and I will send you the password.
Currently there are about 100 registered users of Mixtus. The latest version of Mixtus is 0.3.6.

Compatibility

Mixtus runs best under SICStus Prolog 2.1, but earlier versions and other Prolog systems such as Quintus Prolog will also work, but with somewhat reduced functionality.
Mixtus also runs under SICStus Prolog 3 patch #3 or later. However, modules are not (yet) supported by Mixtus.

More information

Write to me if you would like to know more about Mixtus. My thesis named An Automatic Partial Evaluator for Full Prolog is also available free of charge. The manual page for Mixtus is now also available on-line.

Dan Sahlin (dan@sics.se)