// RUN: %boogie -typeEncoding:n -logPrefix:0n "%s" > "%t" // RUN: %diff "%s.n.expect" "%t" // RUN: %boogie -typeEncoding:p -logPrefix:0p "%s" > "%t" // RUN: %diff "%s.p.expect" "%t" // RUN: %boogie -typeEncoding:a -logPrefix:0a "%s" > "%t" // RUN: %diff "%s.a.expect" "%t" type Field a, Heap = [ref, Field a]a; function f([b, Field a]a) returns (int); axiom (forall x:[int, Field a]a :: f(x) == 17); axiom (forall x:[ref, Field a]a :: f(x) == 42); procedure P() returns () { var h : Heap, g : [bool, Field a]a; assert f(h) == 42; assert f(g) >= 0; // should not be provable } type ref; const null : ref;