When we write that a program takes a "stream" of objects, we mean that it reads them from the standard input, and the objects are not enclosed in objects(..) and end_of_list.
When we write that a program takes a "set" of objects, we mean that the filename containing the objects is an argument to the program, and the objects are not enclosed in objects(..) and end_of_list.
When we write that a program takes a "list" of objects, we mean that the filename containing the objects is an argument to the program, and the objects are enclosed in objects(..) and end_of_list.
Contents
The accepted tests are true_in_all, true_in_some, false_in_all, and false_in_some.
Example: given a set of non-modular orthomodular lattices and a stream of identities, print the identities that are false in all of the lattices. This job was used when searching for modular ortholattice (MOL) single axioms: any MOL single axiom is false in all non MOLs.
clausefilter non-MOL-OML.interps false_in_all < MOL-cand.296 > MOL-cand.238
Example:
clausetester uc-18.interps < uc-hunt.clauses > uc-hunt.out
The accepted tests are all_true, some_true, all_false, and some_false.
Example:
Example:
mace4 -N6 -m -1 -f BA2.in | get_interps > BA2.interps isofilter < BA2.interps > BA2.interps2Note that the two models in BA2.interps2 differ only in one of the constants. In this case the constants come from existentially quantified variables in the goal, and all we really care about is the lattice. We can tell Isofilter to ignore differences in constants by giving it the argument ignore_constants as in the following command.
isofilter ignore_constants < BA2.interps > BA2.interps3Another way to use only a subset of the operations is the check argument, which us used to specify exactly which operations to test for isomorphism. In the following example, only the meet and join operations are checked. (If there is more than one operation, or if the operation may be interpreted by the shell, they should be enclosed in single quotes.)
mace4 -N6 -m -1 -f MOL.in | get_interps > MOL.interps isofilter check '^ v' < MOL.interps > MOL.interps2The output of isofilter is frequently used as input to a program that expects the interpretations to be in a list of interpretations; we can tell isofilter to put the output in that form by giving it the argument wrap as in the following command.
isofilter ignore_constants wrap < BA2.interps > BA2.interps4Finally, we can string together some of the preceding commands as follows.
mace4 -N6 -m -1 -f BA2.in | get_interps | isofilter ignore_constants wrap > BA2.interps5
Basic example that canonicalizes group expressions:
rewriter group.demods < group-terms.in > group-terms.outThis example canonicalizes Boolean ring expressions. It uses associative-commutative (AC) operations and the op command to change the parsing rules.
rewriter bool-ring.demods < bool-ring.in > bool-ring.outThis example rewrites identities in terms of {meet,join,complementation} into the Sheffer stroke.
rewriter BA-Sheffer.demods < BA4.in > BA4.out