function union( [a] bool, [a] bool) returns ( [a] bool);
axiom (forall // error: alpha has to occur in dummy types
x : [a] bool, y : [a] bool,
z : int ::
{ union(x, y)[z] }
union(x, y)[z] == (x[z] || y[z]));
function poly() returns (a);
axiom (forall
x : [a] bool, y : [a] bool,
z : int ::
{ union(x, y)[z], poly() : alpha }
union(x, y)[z] == (x[z] || y[z]));