/usr/share/doc/prover9-doc/html/m4-input.html is in prover9-doc 0.0.200902a-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Prover9 Manual: Mace4 Input</title>
<link rel="stylesheet" href="manual.css">
</head>
<body>
<hr>
<table width="100%">
<tr>
<colgroup>
<col width="33%">
<col width="34%">
<col width="33%">
</colgroup>
<td align="left"><i>Prover9 Manual</i>
<td align="center"><img src="prover9-5a-256t.gif">
<td align="right"><i>Version 2009-02A</i>
</table>
<hr>
<!-- Main content -->
<h1>Mace4 Input</h1>
Mace4 has been designed so that it accepts most Prover9 input files.
This allows users to prepare one input file which can be used
by Prover9 (to search for proofs) and by Mace4 (to search for
counterexamples).
<h2>Mace4 Options</h2>
Mace4 and Prover9 accept different sets of flags and parameters.
In order to use the same input files for both programs, we let Mace4
take its options from the command line instead of from
the input file. If Mace4 is given a Prover9 input file,
along with the command-line option <tt>-c</tt>, it will ignore any
unrecognized (e.g., Prover9) options in the input file.
The Mace4 options are described on the
<a href="m4-options.html">next page</a>.
<h2>Formulas (including Clauses)</h2>
Mace4 accepts the same formulas and clauses as Prover9.
See the page <a href="syntax.html">Prover9 Clauses and Formulas</a>.
<h3><i>A Caveat: Domain Elements</i></h3>
<blockquote class="otter_diff">
In one important case, formulas have different meanings
in Prover9 and Mace4:
</blockquote>
If a formula contains constants that
are natural-numbers, {0,1,...}, Mace4 assumes they
are members of the domain of some structure, that is,
they are distinct objects; in effect, Mace4 operates under the
assumptions 0 ≠ 1, 0 ≠ 2, ... .
<p>
To Prover9, natural numbers are just ordinary constants.
For example, to Prover9 the statement 0=1 is satisfiable,
and to Mace4 it is unsatisfiable.
<p>
Because Mace4 assumes that natural-number constants are
members of the domain, if a formula contains a natural
number that is out of range (≥ <i>n</i>), when searching
for a structure of size <i>n</i>), Mace4 will terminate its
search for size <i>n</i> (and continue with larger sizes if
the specification says to do so).
<p>
<i>An Exception.</i> When the flag <tt>arithmetic</tt> is set,
natural numbers outside of {0,1,...,n-1} can occur.
<h2>Lists of Formulas (including Clauses)</h2>
Prover9 accepts a fixed set of lists of formulas (e.g.,
<tt>assumptions</tt>,
<tt>usable</tt>,
<tt>goals</tt>,
<tt>hints</tt>).
<p>
Mace4 accepts any lists of formulas.
All are treated
as ordinary formulas <i>except the following two lists</i>.
<ul>
<li><tt>formulas(hints)</tt>. These are intended to help
Prover9 find proofs and are ignored by Mace4.
<li><tt>formulas(goals)</tt>. These are negated by Mace4, just as
they are by Prover9.
</ul>
<h3><tt>formulas(goals)</tt></h3>
Prover9 has several restrictions on the goals it accepts
(see <a href="goals.html">Prover9 Goals and Denials</a>),
and Mace4 has the same restrictions. Mace4 negates
goals and translates them to clauses in the same way
as Prover9. (The term "goal" might seem to be bad
teminology for Mace4 users, because Mace4 does not prove theorems;
however, one can think of Mace4 as searching for a counterexample
to the goal.)
<p>
When there are multiple goals, Mace handles them the same
as Prover9. For example, consider the following goals.
<pre class="my_file">
formulas(goals).
x * y = y * x # label(commutativity).
(x * y) * z = x * (y * z) # label(associativity).
end_of_list.
</pre>
Logically, this is a disjunction: Prover9 gives a proof
if either goal is proved, and Mace4 gives a counterexample
if both are falsified. In particular, this pair of goals
is equivalent (for both Prover9 and Mace4) to the
following pair of assumptions.
<pre class="my_file">
formulas(assumptions).
exists x exists y (x * y != y * x).
exists x exists y exists z (x * y) * z != x * (y * z).
end_of_list.
</pre>
<h2>Distinct Objects</h2>
Mace4 accepts a shorthand method for stating that sets of objects
are distinct. Here is an example of two sets of distinct objects.
<pre class="my_file">
list(distinct).
[a,b,c]. % equivalent to (a!=b & a!=c & b!=c).
[d,e,f(a)]. % equivalent to (d!=e & d!=f(a) & e!=f(a)).
end_of_list.
</pre>
Although <tt>list(distinct)</tt> will probably be used mostly for
constants and other ground terms, terms with variables can occur.
<hr>
Next Section:
<a href="m4-options.html">Mace4 Options</a>
</body>
</html>
|