Derpar1
type t
var q : t
relation z(T:t)
type s = struct {
f1 : bool,
f2 : bool
}
action foo(x:bool, y:s)
function inv(X:bool) : bool
definition inv(X) = ~X
before foo {
var yy := y;
require yy.f1 = (inv(y.f2) & z(q));
}
interpret t -> bv[1]
action foo1(x:bool, y:s) = {
call foo(x,y)
}
export foo1