New basic (uninterpreted) types can be declared in yices using the following syntax:
For example, the following yices declarations declare t1 and t2 as new basic types.
(define-type t2)
New types can be defined in terms of existing ones using the following syntax:
Here,
For example, the following yices declaration defines an alias
Recursive datatypes and scalar types must be
given a name using a type definition. They cannot appear anywhere else, except in type definitions. For example,
the following declaration defines
Constant, function, and predicate symbols are all referred as constants. Constants can be declared using the following syntax:
Here,
For example, the following declarations declare
(define f::(-> int int))
(define t::(tuple bool int real))
(define b::bool)
Constants may be defined using the following syntax:
Here,
For example, the following definitions declare
(define f0::int (f 0))
Theorem declarations allow properties to be stated. These are just boolean-valued expressions, which are thus just logical formulas. A yices file may contain several theorem declarations. Theorems may be defined using the following syntax:
Here,
Example:
(define a::int)
(define b::int)
(theorem simple (=> (= a b) (= (f a) (f b))))