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)