[SMT-LIB] SMT-LIB semantics

Cesare Tinelli tinelli at cs.uiowa.edu
Thu Feb 7 22:51:04 EST 2008


Hi Viktor,

On Feb 6, 2008, at 8:02 AM, Viktor Kuncak wrote:

> I have a few questions about SMT semantics.
> I've been looking at
>
> http://goedel.cs.uiowa.edu/smtlib/papers/format-v1.2-r06.08.30.pdf
>
> which I suppose to be the latest version.

Yes.

> My motivation is building
> an HOL like notation and ensuring that I have a reasonable translation
> into SMT-LIB format.
>
>> From the document I do not get much about specific theories and their
> semantics.  Is there a document explaining them?
>
No theories are defined there. That document is meant to define only  
the general semantics and the syntax of the SMT-LIB format. The  
theories currently supported by SMT-LIB are defined individually in  
the Theories section of the SMT-LIB web site.

For the next version of the format (Version 2.0) we intend to add  
these definitions as an appendix to the format document, for our  
users' convenience.

Incidentally, we are currently discussing Version 2.0 in small work  
group. I hope to be able to present a proposal for it to this list  
for further feedback at the end of the month.


> For example, at some point I was wondering about the uses of modulo
> operator %.  Is it general modulo for integers and what is its
> semantics?
>

Function symbols and operators are defined internally by a theory,  
there are no global SMT-LIB definitions of them. Only logical symbols  
are defined globally.
As far as I remember, none of the currently supported theories uses %  
as an operator, even if it is allowed in the syntax.

If there is a need to have an modulus operator, we will be happy to  
add it to the proper theory, and create a new sublogic as needed. As  
usual, the likelihood that this happens soon is directly proportional  
to the number of benchmarks we receive that use that operator :)


> Right now I am searching for any information on inductively defined
> data types.  It seems that none of the SMT-LIB logics use them?

That is correct. Currently, it is impossible to define inductive data  
types as a theory in SMT-LIB. The problem is simply that IDT's are  
not a theory but an infinite family of ones, parametrized by the  
actual signature of constructor and destructor symbols, and so, as  
things are now, we would need a new theory for each benchmark that  
use a new IDT.

There are plans to extend the format to allow the definition of IDT's  
but that will be after Version 2.0.

Of course, a couple of popular and well established IDTs, such as ML  
style lists for instance, could be added right now. The only reason a  
theory of lists is not in SMT-LIB at the moment is that we do not  
have benchmarks for it.



> At
> one point though I got quite puzzled because I read at
>
> http://combination.cs.uiowa.edu/smtlib/
>
> that AUFLIA stands for "Closed linear formulas over the theory of
> integer arrays with FREE sort, function and predicate symbols."  Why
> are the function symbols FREE?  Was this supposed to mean
> UNINTERPRETED?

Yes. "Free symbol" is in fact the common terminoly in logic and  
automated reasoning for what formal methods people traditionally have  
called "unintepreted symbols".


> To me, FREE would mean that function symbols come from
> term algebra, that is, inductively definited data types.

That is not quite how "free" is used in the literature, at least the  
literature *I* am familiar with :)

When people want to say what you mean they refer to those symbols as  
"free constructors" not "free symbols".
In truth, I have seen some authors use "free symbol" in your sense,  
but, as far as I can tell, it is not the norm (and is of course  
confusing).


> There is a
> clear difference between free datatype constructors and uninterpreted
> predicates even in quantifier-free case,

Sure.


> e.g. f(x)=f(y) would imply
> x=y, so if you claim the symbols are free then solvers would be
> allowed to make such deduction and that would be unsound wrt.
> expectations of someone who things they are uninterpreted.  Is my
> terminology wrong (it seems to be the one used in model theory,
> though)?
>
I find this surprising. Which model theory references do you have in  
mind?


> A more specific question is whether CVC3 is expected to have a stable
> support for its inductively defined data types through SMT-LIB format.
>
I guess this is a question for the CVC3 mailing list (cvc- 
users at cs.nyu.edu), not this one :)

At any rate, what do you mean by stable support? CVC3 currently  
allows you to define IDTs using its own input language (or the API).  
I'm sure that if SMT-LIB is extended to allow IDTs, CVC3 will comply.


> (P.S. In my version of SMT-LIB write-up several latex citations are  
> unresolved.)
>
Yes. As embarrassing as it is, Silvio and I never managed to fill in  
all the holes in the document.

The new year's resolution is to write one without holes for Version  
2.0, as well as a tutorial, as a gentler introduction to the SMT-LIB  
format.

Best,


Cesare


> Thanks!
>
> -- 
> Viktor Kuncak
> http://lara.epfl.ch/~kuncak
> _______________________________________________
> 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