[SMT-LIB] Multiple representations

Cesare Tinelli tinelli at cs.uiowa.edu
Fri Oct 15 23:38:45 EDT 2010


Hi David,

On 13 Oct 2010, at 16:04, cok at frontiernet.net wrote:

> Given a new sort symbols, e.g. (declare-sort ZZZ 0) and (declare-sort YYY 1)
> section 4.1 of the SMT-LIB document says that ZZZ is a sort (because the sort symbol ZZZ has arity 0), but YYY is not.
> 
That is correct. In the same way as a function symbol of arity 0 is a term but one of arity > 0 is not.


> Point 2 under section 4.1 says that (YYY Int) would be a sort.  My question is whether (ZZZ) is also a sort by this rule. 

> The case n=0 is not explicitly excluded, 

If you are referring to point 2 of Definition 1, the n there is meant to be > 0. I'll add the missing constraint. However, even as given, there is no ambiguity---only redundancy. See below.


> but we end up with two equivalent representations: ZZZ and (ZZZ).
> Similarly in section 4.2.2, it would appear that with (declare-fun c () Bool)
> both  c  and (c) are well-sorted terms of sort Bool.
> Is this intended?
> 

Section 4 defines an abstract syntax for SMT-LIB 2, for the purposes of providing a formal semantics. In the abstract syntax, parentheses are meta symbols, so ZZZ and (ZZZ) are the same thing indeed, and so are c and (c). The parentheses in these cases are just unnecessary (meta) notation.

I suspect however that you are wondering whether in the *concrete* syntax (ZZZ) is a sort, and if so, how it relates to ZZZ. Now, in the concrete syntax the expression (ZZZ) is not a sort (see Section 3.5). Similarly, again in the concrete syntax, the expression (c) is not a term (see Section 3.5). So there is no ambiguity there.

I hope this clarifies your doubts.


Cesare



> - David
> 
> _______________________________________________
> SMT-LIB mailing list
> SMT-LIB at cs.nyu.edu
> http://www.cs.nyu.edu/mailman/listinfo/smt-lib




More information about the SMT-LIB mailing list