BasicSpec.hascasl revision aa60342b6a000c6798730e1b1ddeec846254c62c
class Type
var t:Type
class TYPE = Type; TYPE={x.x < t}
type Pred __ : Type- -> Type; Unit:TYPE
class a, b, c
class a, b, c <d; a=b
var s:c
pred tt : s
var x : s
program tt = \x: s . ()
program __res__ (x: s, y: t) : s = x ;
fst (x: s, y: t) : s = x ;
snd (x: s, y: t) : t = y
pred eq : s * s
type s < ?s
program all (p: (?s)) : (?()) = eq(p, tt)
program And (x, y: (?())) :(?()) = t1() res t2()
program __impl__ (x, y: (?())) = eq(x, x And y)
program __or__ (x, y: (?())) :(?()) = all(\r: (?()).
((x impl r) res (y impl r)) impl r)
; ex (p: (?s)) :(?()) = all(\r: (?()).
all(\x:s. p(x) impl r) impl r)
; ff () :(?()) = all(\r: (?()). r())
;
forall x: t; y : t
%(..)%
. x = y
%[% [ ] % %[
]%
%[ ]%
]%
%[ ]%
sort s
op a: (?s); %[ Should be: op a:?s ]%
type Data1 ::= a | b | c;
type Data2 ::= Cons21 (Data1; Data2) | Cons22(Data2; Data1) | sort Data1
type Data3 ::= Cons31 (sel1:?Data1; sel2:?Data2) | Cons32(sel2:?Data2; sel1:?
Data1)
type Data4 ::= Cons41 (sel1:?Data1; sel2:?Data2)? | Cons42(sel2:?Data2; sel1:?Data1)?
axioms true ;forall x:s.e;
forall x:s.e