[SMT-LIB] Issues with define-fun for Functions of Arity 0
Tjark Weber
tjark.weber at it.uu.se
Thu Apr 21 09:48:10 EDT 2016
According to Section 4.2.3 of the SMT-LIB Standard (version 2.5),
(define-fun f ((x1 σ1) ··· (xn σn)) σ t)
with n ≥ 0 is semantically equivalent to
(declare-fun f (σ1 ··· σn) σ)
(assert (forall ((x1 σ1) ··· (xn σn)) (= (f x1 ··· xn) t))
Here, n=0 is explicitly permitted.
However, the grammar for terms in Section 3.6 requires that a "forall"
binder is followed by *one or more* (cf. Section 1.1.3) sorted
variables.
Moreover, there are currently numerous SMT-LIB benchmarks in
*quantifier-free* logics that use define-fun to define functions of
arity 0.
I believe a clarification (probably by providing a special-cased
semantics for n=0 in Section 4.2.3) might be in order.
Best,
Tjark
More information about the SMT-LIB
mailing list