
COMPACT -- Polytime Propositional simplifier

Compact reads a clausal wff from standard input and writes a (possibly
simplified) wff to standard output.  The format is the same as for
ntab.

With not arguments, compact just does unit resolution removes all
satisfied clauses, and renames the variables to be contiguous.  For
example:

1 2 3
-2

becomes:

1 2

(3 having been renamed to 2).

Command line arguments:

	-p	Pure literal rule.  If a variable only occurs with
		one sign, set it to that value.

	-s	Singleton rule.  If a variables only occurs once with
		a sign, then resolve to completion on that variable
		(and remove the variable from the theory).

	-l	Failed literal rule.  If THEORY AND l leads to a contradiction
		by unit resolution, then set l to false.

	-b	Binary failed literal rule.  If THEORY AND l1 and l2 leads to a
		contradiction by unit resolution, then add the clause
		NOT l1 OR NOT l2.  The current version does a limited version
		of the binary failed lit rule (not all binary implicates are
		found).  It is still slow on really large problems.

	-vx	sets the maximum number of variables to x (the default is 1000).

	-fname	writes out a translation table to file "name".  The translation table
		allows one to map models of the compacted theory back to
		models of the original theory.  The format of the translation table
		is:

			old_variable	new_variable

		meaning that old_variable has been mapped to new_variable.
		In some cases compact values variables (by unit propagation or
		some other simplification).  If a variable has been set to true then
		the new_variable column holds -1, and if the variable has been set
		to false then the new_variable column holds -2.

WARNING: Much of this is old code and none of it is ANSI standard.
Some day I hope to clean it up and comment it, but for the moment if
you do find any helpful comments consider it a lucky accident.

TODO:

1. Add some facility to iterate these simplifications to quiescence.
2. Add Dubois' augmentation rule.
3. If incorrect flags are given, print out a summary of allowed options.
4. Add text explaining the algorithm used by -b.
