SMT-LIB: Inital proposal for a common format
Greg Nelson
GNelson at compaq.com
Fri Sep 20 12:29:31 EDT 2002
Cesare, Silvio,
The Sparta group at SRC discussed the three proposals that you two made
in your message of 16 September 2002. Thank you very much for taking the
initiative on this issue. We at SRC surely will have benchmarks to
contribute, once the formats and processes are settled. This message
summarizes our comments about your three proposals. Some of our comments
raise additional "fine points" on the topics you have raised. We hope
these fine points will move the discussion along and not bog the discussion
down. Surely you are right to treat major issues first, before getting
to the details. But you have made such a good beginning that it may already
be appropriate to consider some of the major subdecisions. Finally, at
the end of this message, we make two proposals of our own.
P1. Your first proposal was to use unsorted FOL-EQ as the underlying logic.
We agree with this proposal. We have four fine points to raise.
P1.F1. The first fine point is that more needs to be said about what
"unsorted" means. (Is 2+nil = nil+2 or not? The answer that Simplify
gives, and that we have always found satisfactory, is that terms that
intuitively are mistyped, like 2+nil, may appear, but nothing non-trivial
will be provable about them. So 2+nil does equal nil+2. (Perhaps more
than any of our other fine points, this one has the possibility
of getting us bogged down, so having mentioned it, we move on as fast
as possible.)
P1.F2. The second fine point is that although we agree with the use of
an unsorted logic, we propose that function and relation symbols be required
to be used with consistent argument count throughout any one benchmark
in the suite. Thus no benchmark will contain anything like P(f(a),f(a,b)).
(The only use this might have is overloading, where "f" denotes different
functions depending on the argument count with which it is used. If some
benchmark contained overloading in this way, we would propose that the
overloading be resolved before the benchmark is placed into the suite.)
On the other hand, there seems to be no reason to require that arities
be consistent across different benchmarks. To do so would be an invitation
to irritation. Finally on this topic, in the spirit of unsortedness,
we would propose that the arity of a function or relation symbol be inferred
from the first use rather than be explicitly declared.
P1.F3. The third fine point is that we consider that FOL (even unsorted
FOL) segregates formulas from terms: a formula is built in the usual way
from atomic formulae, which are relation symbols applied to lists of terms,
while a term is a function symbol applied to a list of terms. The set
of function symbols is disjoint from the set of relation symbols (in any
one benchmark). Sometimes this is inconvenient, and Simplify, for example,
will sometimes consider that a term t used in a position where a formula
is required is syntactic sugar for the formula (t=@true), which @true
is a constant whose purpose is to facilitate this desugaring. We propose
that any desugaring of this sort necessary for the benchmarks in the suite
be applied before they are included in the suite. That is, the benchmarks
will strictly segregate formulas from terms.
P1.F4. The fourth fine point is that FOL-EQ might or might not be construed
to include an IF-THEN-ELSE (or ITE or something) operator that constructs
a term from a formula and two terms. Several existing provers include
this feature. Our prover, Simplify, does not, but nevertheless we would
propose thatsome such operator be allowed in the conjectures in the
test suite, since it is undeniably useful. Like P1.F1, the potential for
getting bogged down in details is great, which is possibly a valid argument
for leaving out this feature, but our judgement would be to take the risk.
P2. Your second proposal was that the input class of formulas include
any formula of full FOL-EQ, with or without quantifiers, but that the
quantifier-free benchmarks be separated from those with quantifiers.
We agree with this proposal. (After the second proposal you wrote a remark
about normal forms; you wrote "we are not sure" whether to convert the
problems into any normal form (such as CNF). We interpret this remark
as implying that your proposal is to leave the input problems in general
form rather than impose a normal form, and it is with this interpretation
that we agree.)
P3. Your third proposal was to specify theories algebraically, rather
than axiomatically. We do not agree with this. We propose instead that
each theory be specified with whichever technique works best for that
theory. Probably most will be specified algebraically, but some might
be specified axiomatically. Since it will be human beings rather than
programs that read these specifications, we don't see what is gained by
ruling out an option that could be attractive in some cases.
So much for our comments on your three proposals. We also have a two
proposals of our own, which I will label P4 and P5:
P4. The suite will contain invalid as well as valid conjectures,
appropriately labelled. (Or satisfiable as well as unsatisfiable problems,
if the conjectures appear in the suite in negated form.)
P5. Each conjecture in the suite will be labelled with the names of the
theories whose symbols appear in the conjecture. The possible theories
include at least the following two:
Linear arithmetic, with relations <, >, <=, >=, the integer numbers, and
symbols + and -. Whether multiplication by an integer numeral is allowed
as an abbreviation is TBD.
The theory of arrays, with function symbols for reading and writing elements.
(The names of these symbols is TBD, as is the semantic question of whether
it is or isn't possible for arrays with identical elements to be distinct.)
Sincerely,
Cormac Flanagan,
Rajeev Joshi
Greg Nelson
Shaz Qadeer
Serdar Tasiran
HP Systems Research Center
More information about the SMT-LIB
mailing list