From d652155ae013f36a1ee17653a8e458baad2d9c2c Mon Sep 17 00:00:00 2001 From: Checkmate50 Date: Mon, 6 Jun 2016 23:14:18 -0600 Subject: Merging complete. Everything looks good *crosses fingers* --- Test/test21/HeapAxiom.bpl | 66 +++++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 33 deletions(-) (limited to 'Test/test21/HeapAxiom.bpl') diff --git a/Test/test21/HeapAxiom.bpl b/Test/test21/HeapAxiom.bpl index 691c97f9..a49ddd36 100644 --- a/Test/test21/HeapAxiom.bpl +++ b/Test/test21/HeapAxiom.bpl @@ -1,33 +1,33 @@ -// 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 IsHeap(Heap) returns (bool); -const alloc : Field bool; - -axiom (forall H:Heap, o:ref, f:Field ref :: - IsHeap(H) && H[o,alloc] ==> H[H[o,f], alloc]); - -procedure P() returns () { - var h : Heap, o : ref, g : Field ref, i : Field ref, o2 : ref; - assume IsHeap(h) && h[o, alloc]; - - o2 := h[o, g]; - assert h[o2, alloc]; - - o2 := h[o2, g]; - assert h[o2, alloc]; - - h[o2, alloc] := false; - - o2 := h[o2, g]; - assert h[o2, alloc]; // should not be provable -} - -type ref; +// 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 IsHeap(Heap) returns (bool); +const alloc : Field bool; + +axiom (forall H:Heap, o:ref, f:Field ref :: + IsHeap(H) && H[o,alloc] ==> H[H[o,f], alloc]); + +procedure P() returns () { + var h : Heap, o : ref, g : Field ref, i : Field ref, o2 : ref; + assume IsHeap(h) && h[o, alloc]; + + o2 := h[o, g]; + assert h[o2, alloc]; + + o2 := h[o2, g]; + assert h[o2, alloc]; + + h[o2, alloc] := false; + + o2 := h[o2, g]; + assert h[o2, alloc]; // should not be provable +} + +type ref; -- cgit v1.2.3