[SMT-LIB] Draft of SMT-LIB 2.5: request for feedback - typos and minor comments

David R. Cok dcok at grammatech.com
Sun Sep 28 16:05:37 EDT 2014


On my first read through, here is my accumulated list of typos and 
clarifications that do not affect the definition of SMT-LIB. - David


Typos or wording:
p.11: change ":produced-assertions" to ":produce-assertions"
p. 11 (reset-assertions bullet) change 'remove' to 'removes'
p.13: change 'seeked' to 'sought'
p. 17, first full paragraph: change 'set of sort' to 'set of sorts'
p.17: change "a lot more" to "much more"
p.25, last full paragraph: change "specifying the sort of" to 
"specifying the sorts of"
p.27: change "The values of the :named attribute ranges over" to "The 
values of the :named attribute range over"
p. 27: In the example showing the use of :pattern, the syntax such as  
(x1 t1) is used. In this context t1 is a sort, not a term. Since t is 
usually used to designate terms, using a sigma would be better.
p.28: The first alternative of <theory_attribute> should be (:sorts 
<sort_symbol_decl>+ ), as stated on p.29
p.37: Say "all defined sort and function symbols by their respective 
definitions" (two plurals)
p.37: say "complement the values attributes" (plural)
p.43: the uses of @ for abstract values are supposed to be enclosed in 
(as ...) expressions
p.46: change "from a scripts stored" to "from a script stored"
p.47: say "In general, *when* a solver completes"...
p.48: the examples of terms with :named should include a ! symbol - also 
at the top of p.49, p.54, p.55, p.57
p.51: change "is defined by" to "is defined by the"
p.51: change "se Figure 3.8" to "see Figure 3.8"
p. 51: :all-statistics: remove "intervening". [You can't precede 
intervening commands.]
p. 51: :error-behavior : change "solver is states" to "solver is stating"
p. 52: change ":unsupported" to "unsupported"
p. 52 (push): change "no assertion level" to "no assertion levels"
p. 52 (4.2.3): change "new functions symbols" to "new function symbols"
p. 52 (4.2.3): remove "also"
p.54: change ":interactive-mode" to ":produce-assertions"
p.54: change ":set-logic" to "set-logic"
p. 54, check-sat-assuming: change "effect of" to "effect as" (in two places)
p.54, penultimate line: adding a comma - "after the command executes, 
the current context" would improve first-read parsability.
p. 55: change "as the same sort as" to "has the same sort as"
p.56: change "modify the assertions set" to "modify the assertion set"
p.57: change ":unsupported" to "unsupported"
p.59: remove the comma from "(defined later), use" in the penultimate 
paragraph
p.62: change "definedby" to "defined by"
p.64, last line: change "if and only the" to "if and only if the"
p. 74, note 12: perhaps say "by listing a set of axioms as *the value 
of* an :axioms attribute"
p. 75, note 31: change "proving" to "providing"
p. 78: the list of predefined keywords is missing :pattern and 
:produce-unsat-assumptions
p.82: list of command options is missing :produce-unsat-assumptions

Clarifications (perhaps pedantic)
Section: 4.1.6
:diagnostic-output-channel, :regular-output-channel : change "subsequent 
solver output" to "subsequent solver output (including that of the 
current set-option command)
:global declarations, :produce-assertions, :produce-assignments, 
:produce-models, :produce-proofs, :produce-unsat-assumptions, 
:produce-unsat-cores: change "The option may not be set after a 
set-logic without an intervening reset." to "The option may only be set 
after the beginning of a script or a reset command and before the first 
subsequent set-logic command."
:print-success : change "in all responses to commands." to "in all 
subsequent responses to commands, including of the current set-option 
command, until the option is set again to true."
:random-seed : add "The intent for the option that the solver will 
produce identical results for identical input and identical non-zero 
seeds on repeated runs of the solver."
p. 51, :assertion-stack-levels: be clearer about the value. Instead of 
the sentence beginning "Intuitively", say, for example, "The value of n 
returned is the sum of the arguments of all the valid push commands 
minus the sum of the arguments of all the valid pop commands since the 
most recent reset or reset-assertions command."
p. 51, :version : the phrase "a singleton" seems extraneous
p. 53: There is a restriction on user-defined symbols that they are not 
'already present in the assertion stack'. Do we consider that symbols 
from the background theory are defined in the global assertion level? I 
think it would be clearer if we stated in 4.1.3 and/or on p.39 that a 
set-logic command introduces into the global assertion level all the 
sort and function symbols defined by the stated logic.
p.55: we should state somewhere the precise set of commands that "modify 
the assertion set": reset, reset-assertions, assert, push, pop, 
check-sat-assuming
p.78: :axioms is not defined in V 2.0 and 2.5, according to note 12
p.79: the definition of <symbol> should say "a sequence of whitespace 
and printable characters that starts and ends with | and does not 
otherwise include | or \"  , as stated on p.23 (which could use the 
addition of otherwise). [The current wording here allows |a|b| as a 
symbol, which is not a symbol.]



More information about the SMT-LIB mailing list