diff --git a/heap-theory-benchmarks/array/alternating_list-1.i.smt2 b/heap-theory-benchmarks/array/alternating_list-1.i.smt2 new file mode 100644 index 00000000..16e6b408 --- /dev/null +++ b/heap-theory-benchmarks/array/alternating_list-1.i.smt2 @@ -0,0 +1,91 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Int Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main37 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main40 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main53 (Heap Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 node) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Heap) (var16 Addr)) (or (not (and (inv_main17 var15 var11 var8 var14 var16) (and (and (not (= var0 nullAddr)) (and (and (and (and (and (= var7 (newHeap (alloc var6 (O_node var9)))) (= var13 0)) (= var10 var3)) (= var4 var2)) (= var5 var12)) (= var0 (newAddr (alloc var6 (O_node var9)))))) (and (and (and (and (= var6 (write var15 var16 (O_node (node 1 (n (getnode (read var15 var16))))))) (= var1 var11)) (= var3 var8)) (= var2 var14)) (= var12 var16))))) (inv_main23 var7 var13 var10 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 node) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Heap) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main18 var11 var9 var7 var10 var14) (and (and (not (= var15 nullAddr)) (and (and (and (and (and (= var12 (newHeap (alloc var8 (O_node var3)))) (= var1 1)) (= var0 var2)) (= var4 var16)) (= var5 var13)) (= var15 (newAddr (alloc var8 (O_node var3)))))) (and (and (and (and (= var8 (write var11 var14 (O_node (node 2 (n (getnode (read var11 var14))))))) (= var6 var9)) (= var2 var7)) (= var16 var10)) (= var13 var14))))) (inv_main23 var12 var1 var0 var15 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int)) (or (not (inv_main8 var2 var1 var0 var3)) (inv_main8 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 node) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int)) (or (not (and (inv_main3 var4 var3) (and (= var0 nullAddr) (and (and (= var2 (newHeap (alloc var4 (O_node var1)))) (= var5 var3)) (= var0 (newAddr (alloc var4 (O_node var1)))))))) (inv_main8 var2 var5 var0 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main49 var7 var3 var0 var6 var9) (and (not (= var5 3)) (and (and (and (and (and (= var8 var7) (= var4 var3)) (= var2 var0)) (= var1 var6)) (= var10 var9)) (= var5 (h (getnode (read var7 var9)))))))) (inv_main53 var8 var4 var2 var1 var10 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main29 var7 var4 var0 var6 var9) (and (and (and (and (and (= var1 var7) (= var3 var4)) (= var8 var0)) (= var10 var6)) (= var5 var9)) (= var2 (n (getnode (read var7 var9))))))) (inv_main12 var1 var3 var8 var10 var2)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (inv_main3 var5 var2) (and (not (= var1 nullAddr)) (and (and (= var3 (newHeap (alloc var5 (O_node var0)))) (= var6 var2)) (= var1 (newAddr (alloc var5 (O_node var0)))))))) (inv_main12 var3 var6 var1 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int)) (or (not (and (inv_main37 var7 var5 var0 var6 var8) (and (and (and (and (and (= var3 var7) (= var10 var5)) (= var1 var0)) (= var9 var6)) (= var4 var8)) (= var2 (n (getnode (read var7 var8))))))) (inv_main33 var3 var10 var1 var9 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main13 var8 var4 var1 var7 var9) (and (and (and (and (= var6 (write var8 var9 (O_node (node 3 (n (getnode (read var8 var9))))))) (= var0 var4)) (= var3 var1)) (= var2 var7)) (= var5 var9)))) (inv_main33 var6 1 var3 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main33 var8 var3 var0 var7 var9) (and (not (= var1 0)) (and (not (= var2 3)) (and (and (and (and (and (= var10 var8) (= var1 var3)) (= var6 var0)) (= var5 var7)) (= var4 var9)) (= var2 (h (getnode (read var8 var9))))))))) (inv_main40 var10 0 var6 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (inv_main26 var3 var1 var0 var2 var5 var4)) (inv_main26 var3 var1 var0 var2 var5 var4)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Addr)) (or (not (and (inv_main17 var14 var10 var8 var13 var15) (and (and (= var11 nullAddr) (and (and (and (and (and (= var6 (newHeap (alloc var5 (O_node var0)))) (= var1 0)) (= var9 var4)) (= var16 var3)) (= var7 var12)) (= var11 (newAddr (alloc var5 (O_node var0)))))) (and (and (and (and (= var5 (write var14 var15 (O_node (node 1 (n (getnode (read var14 var15))))))) (= var2 var10)) (= var4 var8)) (= var3 var13)) (= var12 var15))))) (inv_main26 var6 var1 var9 var11 var7 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 node) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Heap) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main18 var11 var8 var5 var10 var13) (and (and (= var15 nullAddr) (and (and (and (and (and (= var9 (newHeap (alloc var7 (O_node var4)))) (= var0 1)) (= var1 var2)) (= var14 var16)) (= var6 var12)) (= var15 (newAddr (alloc var7 (O_node var4)))))) (and (and (and (and (= var7 (write var11 var13 (O_node (node 2 (n (getnode (read var11 var13))))))) (= var3 var8)) (= var2 var5)) (= var16 var10)) (= var12 var13))))) (inv_main26 var9 var0 var1 var15 var6 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main23 var3 var1 var0 var2 var4)) (inv_main29 (write var3 var4 (O_node (node (h (getnode (read var3 var4))) var2))) var1 var0 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main40 var7 var4 var0 var6 var8) (and (= var9 1) (and (and (and (and (and (= var3 var7) (= var5 var4)) (= var10 var0)) (= var2 var6)) (= var1 var8)) (= var9 (h (getnode (read var7 var8)))))))) (inv_main37 var3 var5 var10 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int)) (or (not (and (inv_main44 var6 var4 var0 var5 var8) (and (= var7 2) (and (and (and (and (and (= var9 var6) (= var10 var4)) (= var1 var0)) (= var2 var5)) (= var3 var8)) (= var7 (h (getnode (read var6 var8)))))))) (inv_main37 var9 var10 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main33 var8 var3 var0 var7 var9) (and (= var1 0) (and (not (= var2 3)) (and (and (and (and (and (= var10 var8) (= var1 var3)) (= var6 var0)) (= var5 var7)) (= var4 var9)) (= var2 (h (getnode (read var8 var9))))))))) (inv_main44 var10 1 var6 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main12 var4 var2 var0 var3 var5) (and (not (= var2 0)) (not (= var1 0))))) (inv_main17 var4 var2 var0 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main12 var3 var1 var0 var2 var5) (= var4 0))) (inv_main13 var3 var1 var0 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main53 var9 var4 var0 var8 var11 var7) (and (and (and (and (and (and (= var1 var9) (= var5 var4)) (= var10 var0)) (= var2 var8)) (= var12 var11)) (= var6 var7)) (= var3 (n (getnode (read var9 var11))))))) (inv_main49 (write var1 var6 defObj) var5 var10 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main33 var6 var3 var0 var5 var9) (and (= var4 3) (and (and (and (and (and (= var1 var6) (= var2 var3)) (= var8 var0)) (= var7 var5)) (= var10 var9)) (= var4 (h (getnode (read var6 var9)))))))) (inv_main49 var1 var2 var8 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main40 var8 var6 var1 var7 var9) (and (not (= var3 1)) (and (and (and (and (and (= var5 var8) (= var2 var6)) (= var4 var1)) (= var10 var7)) (= var0 var9)) (= var3 (h (getnode (read var8 var9)))))))) (inv_main57 var5 var2 var4 var10 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main44 var6 var3 var1 var5 var8) (and (not (= var0 2)) (and (and (and (and (and (= var4 var6) (= var2 var3)) (= var10 var1)) (= var9 var5)) (= var7 var8)) (= var0 (h (getnode (read var6 var8)))))))) (inv_main57 var4 var2 var10 var9 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main12 var4 var2 var0 var3 var5) (and (= var2 0) (not (= var1 0))))) (inv_main18 var4 var2 var0 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main17 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main18 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main23 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main29 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main13 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main33 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main40 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main44 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main37 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main49 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main53 var4 var1 var0 var3 var5 var2) (not (is-O_node (read var4 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (inv_main57 var3 var1 var0 var2 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/alternating_list-2.i.smt2 b/heap-theory-benchmarks/array/alternating_list-2.i.smt2 new file mode 100644 index 00000000..f613f006 --- /dev/null +++ b/heap-theory-benchmarks/array/alternating_list-2.i.smt2 @@ -0,0 +1,91 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Int Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main37 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main40 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main53 (Heap Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main12 var3 var4 var0 var2 var5) (and (= var4 0) (not (= var1 0))))) (inv_main18 var3 var4 var0 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main29 var5 var7 var1 var4 var10) (and (and (and (and (and (= var8 var5) (= var2 var7)) (= var3 var1)) (= var9 var4)) (= var6 var10)) (= var0 (n (getnode (read var5 var10))))))) (inv_main12 var8 var2 var3 var9 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 node) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Int)) (or (not (and (inv_main3 var4 var6) (and (not (= var0 nullAddr)) (and (and (= var5 (newHeap (alloc var4 (O_node var2)))) (= var1 var6)) (= var0 (newAddr (alloc var4 (O_node var2)))))))) (inv_main12 var5 var1 var0 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main53 var7 var9 var1 var6 var12 var2) (and (and (and (and (and (and (= var3 var7) (= var5 var9)) (= var8 var1)) (= var11 var6)) (= var10 var12)) (= var4 var2)) (= var0 (n (getnode (read var7 var12))))))) (inv_main49 (write var3 var4 defObj) var5 var8 var11 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr)) (or (not (and (inv_main33 var6 var7 var0 var5 var10) (and (= var3 3) (and (and (and (and (and (= var8 var6) (= var9 var7)) (= var4 var0)) (= var2 var5)) (= var1 var10)) (= var3 (h (getnode (read var6 var10)))))))) (inv_main49 var8 var9 var4 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main37 var6 var7 var0 var5 var10) (and (and (and (and (and (= var9 var6) (= var1 var7)) (= var2 var0)) (= var8 var5)) (= var3 var10)) (= var4 (n (getnode (read var6 var10))))))) (inv_main33 var9 var1 var2 var8 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main13 var3 var5 var0 var2 var8) (and (and (and (and (= var1 (write var3 var8 (O_node (node 3 (n (getnode (read var3 var8))))))) (= var4 var5)) (= var9 var0)) (= var7 var2)) (= var6 var8)))) (inv_main33 var1 1 var9 var7 var9)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main12 var3 var4 var0 var2 var5) (= var1 0))) (inv_main13 var3 var4 var0 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (inv_main23 var2 var3 var0 var1 var4)) (inv_main29 (write var2 var4 (O_node (node (h (getnode (read var2 var4))) var1))) var3 var0 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (or (not (and (inv_main40 var6 var7 var0 var5 var9) (and (= var10 1) (and (and (and (and (and (= var2 var6) (= var1 var7)) (= var8 var0)) (= var4 var5)) (= var3 var9)) (= var10 (h (getnode (read var6 var9)))))))) (inv_main37 var2 var1 var8 var4 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main44 var6 var7 var1 var5 var9) (and (= var0 2) (and (and (and (and (and (= var2 var6) (= var3 var7)) (= var8 var1)) (= var4 var5)) (= var10 var9)) (= var0 (h (getnode (read var6 var9)))))))) (inv_main37 var2 var3 var8 var4 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main40 var6 var7 var1 var5 var9) (and (not (= var10 1)) (and (and (and (and (and (= var8 var6) (= var0 var7)) (= var2 var1)) (= var3 var5)) (= var4 var9)) (= var10 (h (getnode (read var6 var9)))))))) (inv_main57 var8 var0 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main44 var4 var6 var1 var3 var9) (and (not (= var2 2)) (and (and (and (and (and (= var8 var4) (= var5 var6)) (= var0 var1)) (= var7 var3)) (= var10 var9)) (= var2 (h (getnode (read var4 var9)))))))) (inv_main57 var8 var5 var0 var7 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 node) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main17 var3 var5 var8 var13 var15) (and (and (not (= var0 nullAddr)) (and (and (and (and (and (= var6 (newHeap (alloc var12 (O_node var4)))) (= var11 0)) (= var14 var1)) (= var7 var9)) (= var10 var2)) (= var0 (newAddr (alloc var12 (O_node var4)))))) (and (and (and (and (= var12 (write var3 var15 (O_node (node 2 (n (getnode (read var3 var15))))))) (= var16 var5)) (= var1 var8)) (= var9 var13)) (= var2 var15))))) (inv_main23 var6 var11 var14 var0 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 node) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr)) (or (not (and (inv_main18 var4 var6 var12 var14 var16) (and (and (not (= var8 nullAddr)) (and (and (and (and (and (= var9 (newHeap (alloc var15 (O_node var7)))) (= var0 1)) (= var1 var10)) (= var5 var3)) (= var13 var11)) (= var8 (newAddr (alloc var15 (O_node var7)))))) (and (and (and (and (= var15 (write var4 var16 (O_node (node 1 (n (getnode (read var4 var16))))))) (= var2 var6)) (= var10 var12)) (= var3 var14)) (= var11 var16))))) (inv_main23 var9 var0 var1 var8 var13)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr)) (or (not (and (inv_main33 var7 var8 var0 var6 var10) (and (not (= var5 0)) (and (not (= var9 3)) (and (and (and (and (and (= var4 var7) (= var5 var8)) (= var1 var0)) (= var2 var6)) (= var3 var10)) (= var9 (h (getnode (read var7 var10))))))))) (inv_main40 var4 0 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr)) (or (not (inv_main26 var2 var3 var0 var1 var5 var4)) (inv_main26 var2 var3 var0 var1 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 node) (var16 Int)) (or (not (and (inv_main17 var4 var5 var8 var12 var14) (and (and (= var13 nullAddr) (and (and (and (and (and (= var7 (newHeap (alloc var11 (O_node var15)))) (= var1 0)) (= var6 var2)) (= var0 var9)) (= var10 var3)) (= var13 (newAddr (alloc var11 (O_node var15)))))) (and (and (and (and (= var11 (write var4 var14 (O_node (node 2 (n (getnode (read var4 var14))))))) (= var16 var5)) (= var2 var8)) (= var9 var12)) (= var3 var14))))) (inv_main26 var7 var1 var6 var13 var10 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Heap) (var14 node) (var15 Addr) (var16 Addr)) (or (not (and (inv_main18 var4 var5 var9 var11 var16) (and (and (= var0 nullAddr) (and (and (and (and (and (= var10 (newHeap (alloc var13 (O_node var14)))) (= var1 1)) (= var15 var6)) (= var8 var3)) (= var12 var7)) (= var0 (newAddr (alloc var13 (O_node var14)))))) (and (and (and (and (= var13 (write var4 var16 (O_node (node 1 (n (getnode (read var4 var16))))))) (= var2 var5)) (= var6 var9)) (= var3 var11)) (= var7 var16))))) (inv_main26 var10 var1 var15 var0 var12 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr)) (or (not (and (inv_main33 var7 var8 var0 var6 var10) (and (= var5 0) (and (not (= var9 3)) (and (and (and (and (and (= var4 var7) (= var5 var8)) (= var1 var0)) (= var2 var6)) (= var3 var10)) (= var9 (h (getnode (read var7 var10))))))))) (inv_main44 var4 1 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main12 var3 var4 var0 var2 var5) (and (not (= var4 0)) (not (= var1 0))))) (inv_main17 var3 var4 var0 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int)) (or (not (inv_main8 var1 var2 var0 var3)) (inv_main8 var1 var2 var0 var3)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main3 var3 var4) (and (= var1 nullAddr) (and (and (= var2 (newHeap (alloc var3 (O_node var0)))) (= var5 var4)) (= var1 (newAddr (alloc var3 (O_node var0)))))))) (inv_main8 var2 var5 var1 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main49 var4 var6 var0 var3 var9) (and (not (= var5 3)) (and (and (and (and (and (= var1 var4) (= var8 var6)) (= var2 var0)) (= var10 var3)) (= var7 var9)) (= var5 (h (getnode (read var4 var9)))))))) (inv_main53 var1 var8 var2 var10 var7 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main17 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main18 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main23 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main29 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main13 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main33 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main40 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main44 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main37 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main49 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main53 var3 var4 var0 var2 var5 var1) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (inv_main57 var2 var3 var0 var1 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/cart.i.smt2 b/heap-theory-benchmarks/array/cart.i.smt2 new file mode 100644 index 00000000..34815e13 --- /dev/null +++ b/heap-theory-benchmarks/array/cart.i.smt2 @@ -0,0 +1,87 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (stock Int) (order Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Int Addr) Bool) +(declare-fun inv_main14 (Heap Addr Int Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int) Bool) +(declare-fun inv_main21 (Heap Addr Addr Int) Bool) +(declare-fun inv_main26 (Heap Addr Addr Int) Bool) +(declare-fun inv_main27 (Heap Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main26 var2 var1 var3 var0)) (inv_main28 var2 var1 var3 var0 (stock (getnode (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main20 var3 var10 var5 var6) (and (and (= var0 0) (and (not (<= 0 (+ (* (- 1) var6) (- 1)))) (and (and (and (and (= var8 var3) (= var9 var10)) (= var2 var5)) (= var4 var6)) (= var1 (stock (getnode (read var3 var5))))))) (and (and (and (and (= var7 var8) (= var13 var9)) (= var11 var2)) (= var12 var4)) (or (and (<= 0 (+ (+ var4 (* (- 1) var1)) (- 1))) (= var0 1)) (and (not (<= 0 (+ (+ var4 (* (- 1) var1)) (- 1)))) (= var0 0))))))) (inv_main21 var7 var13 var11 var12)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main16 var2 var1 var3) (not (= var3 nullAddr)))) (inv_main20 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main28 var3 var2 var4 var0 var1)) (inv_main27 (write var3 var4 (O_node (node (next (getnode (read var3 var4))) var1 (order (getnode (read var3 var4)))))) var2 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main27 var7 var6 var8 var2) (and (and (and (and (= var3 var7) (= var1 var6)) (= var5 var8)) (= var4 var2)) (= var0 (next (getnode (read var7 var8))))))) (inv_main16 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main20 var2 var1 var3 var0) (<= 0 (+ (* (- 1) var0) (- 1))))) (inv_main16 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr)) (or (not (and (inv_main20 var5 var13 var8 var10) (and (and (not (= var4 0)) (and (not (<= 0 (+ (* (- 1) var10) (- 1)))) (and (and (and (and (= var11 var5) (= var12 var13)) (= var3 var8)) (= var7 var10)) (= var2 (stock (getnode (read var5 var8))))))) (and (and (and (and (= var0 var11) (= var9 var12)) (= var6 var3)) (= var1 var7)) (or (and (<= 0 (+ (+ var7 (* (- 1) var2)) (- 1))) (= var4 1)) (and (not (<= 0 (+ (+ var7 (* (- 1) var2)) (- 1)))) (= var4 0))))))) (inv_main16 var0 var9 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int)) (or (not (and (inv_main3 var1 var0) (= var2 0))) (inv_main16 var1 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main31 var1 var0 var2)) (inv_main35 var1 var0 var2 (order (getnode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main32 var4 var1 var5) (and (not (= var2 nullAddr)) (and (and (and (= var3 var4) (= var0 var1)) (= var6 var5)) (= var2 (next (getnode (read var4 var5)))))))) (inv_main31 var3 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main16 var1 var0 var2) (and (not (= var0 nullAddr)) (= var2 nullAddr)))) (inv_main31 var1 var0 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main21 var2 var1 var3 var0)) (inv_main26 (write var2 var3 (O_node (node (next (getnode (read var2 var3))) (stock (getnode (read var2 var3))) var0))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (or (not (inv_main12 var2 var0 var1 var3)) (inv_main13 (write var2 var3 (O_node (node (next (getnode (read var2 var3))) var1 (order (getnode (read var2 var3)))))) var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (or (not (inv_main13 var2 var0 var1 var3)) (inv_main14 (write var2 var3 (O_node (node (next (getnode (read var2 var3))) (stock (getnode (read var2 var3))) 0))) var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main35 var1 var0 var2 var3) (<= 0 (+ (+ var3 (* (- 1) (stock (getnode (read var1 var2))))) (- 1))))) (inv_main33 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 node)) (or (not (and (inv_main3 var3 var0) (and (not (<= 0 (+ (* (- 1) var2) (- 1)))) (not (= var1 0))))) (inv_main12 (newHeap (alloc var3 (O_node var4))) var0 var2 (newAddr (alloc var3 (O_node var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main33 var1 var0 var2)) (inv_main32 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main35 var1 var0 var2 var3) (not (<= 0 (+ (+ var3 (* (- 1) (stock (getnode (read var1 var2))))) (- 1)))))) (inv_main32 var1 var0 var2)))) +(assert (forall ((var0 Heap)) (or (not (inv_main2 var0)) (inv_main3 var0 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main14 var4 var1 var2 var7) (and (and (and (= var6 (write var4 var7 (O_node (node var1 (stock (getnode (read var4 var7))) (order (getnode (read var4 var7))))))) (= var0 var1)) (= var3 var2)) (= var5 var7)))) (inv_main3 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int)) (or (not (and (inv_main3 var2 var0) (and (<= 0 (+ (* (- 1) var3) (- 1))) (not (= var1 0))))) (inv_main3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (not (and (inv_main12 var2 var0 var1 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (not (and (inv_main13 var2 var0 var1 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (not (and (inv_main14 var2 var0 var1 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main20 var2 var1 var3 var0) (and (not (<= 0 (+ (* (- 1) var0) (- 1)))) (not (is-O_node (read var2 var3)))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main21 var2 var1 var3 var0) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var1 var3 var0) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main28 var3 var2 var4 var0 var1) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main27 var2 var1 var3 var0) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main31 var1 var0 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main35 var1 var0 var2 var3) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main33 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main32 var1 var0 var2) (not (is-O_node (read var1 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll-01-1.i.smt2 b/heap-theory-benchmarks/array/dll-01-1.i.smt2 new file mode 100644 index 00000000..cf7fb47b --- /dev/null +++ b/heap-theory-benchmarks/array/dll-01-1.i.smt2 @@ -0,0 +1,181 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (prev Addr) (inner Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main101 (Heap Addr Addr) Bool) +(declare-fun inv_main104 (Heap Addr Addr) Bool) +(declare-fun inv_main107 (Heap Addr Addr) Bool) +(declare-fun inv_main109 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr) Bool) +(declare-fun inv_main112 (Heap Addr Addr) Bool) +(declare-fun inv_main114 (Heap Addr Addr) Bool) +(declare-fun inv_main119 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main8 (Heap Addr) Bool) +(declare-fun inv_main80 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main85 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main90 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main94 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main112 var0 var2 var1) (not (= nullAddr (next (getTSLL (read var0 var1))))))) (inv_main119 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main52 var1 var3 var2 var0)) (inv_main51 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) var0))) var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main32 var0 var3 var1 var2)) (inv_main31 (write var0 var1 (O_TSLL (TSLL var2 (prev (getTSLL (read var0 var1))) (inner (getTSLL (read var0 var1)))))) var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main104 var0 var9 var1) (and (not (= nullAddr var6)) (and (and (and (and (= var8 var0) (= var3 var9)) (= var2 var1)) (= var7 (next (getTSLL (read var0 var9))))) (and (and (= var5 (write var8 var3 defObj)) (= var4 var3)) (= var6 var7)))))) (inv_main101 var5 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main94 var1 var10 var2 var5 var9) (and (not (= nullAddr var0)) (and (= nullAddr var8) (and (and (and (and (and (= var3 var1) (= var0 var10)) (= var4 var2)) (= var7 var5)) (= var6 var9)) (= var8 (next (getTSLL (read var1 var2))))))))) (inv_main101 var3 var0 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var1 var6 var2) (and (not (= nullAddr var0)) (and (= nullAddr var0) (and (not (= nullAddr var0)) (and (= var3 0) (and (and (= var4 var1) (= var0 var6)) (= var5 nullAddr)))))))) (inv_main101 var4 var0 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main101 var0 var5 var1) (and (not (= nullAddr var4)) (and (not (= nullAddr var4)) (and (and (and (= var2 var0) (= var6 var5)) (= var3 var1)) (= var4 (inner (getTSLL (read var0 var5))))))))) (inv_main107 var2 var6 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var0 var4 var1 var2 var3) (and (not (<= 0 (+ 1 (* (- 1) var2)))) (= nullAddr var3)))) (inv_main96 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Heap) (var4 TSLL) (var5 Addr)) (or (not (and (inv_main4 var3 var5) (and (= var1 0) (and (not (= var0 nullAddr)) (and (= var2 (write var3 var5 (O_TSLL (TSLL (next (getTSLL (read var3 var5))) nullAddr (inner (getTSLL (read var3 var5))))))) (= var0 var5)))))) (inv_main16 (newHeap (alloc var2 (O_TSLL var4))) var0 (newAddr (alloc var2 (O_TSLL var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var0 var4 var1 var2 var3) (and (not (= nullAddr var3)) (and (= var2 0) (not (= nullAddr var3)))))) (inv_main78 var0 var4 var1 1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var0 var4 var1 var2 var3) (and (not (= nullAddr var3)) (and (not (= var2 0)) (not (= nullAddr var3)))))) (inv_main78 var0 var4 var1 2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main58 var3 var10 var4 var9) (and (and (= var5 0) (and (= var9 nullAddr) (and (and (and (= var8 var3) (= var0 var10)) (= var6 var4)) (= var2 (inner (getTSLL (read var3 var4))))))) (and (and (and (= var7 var8) (= var11 var0)) (= var1 var6)) (or (and (= var2 nullAddr) (= var5 1)) (and (not (= var2 nullAddr)) (= var5 0))))))) (inv_main56 var7 var11 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main101 var0 var5 var1) (and (= nullAddr var4) (and (and (and (= var2 var0) (= var6 var5)) (= var3 var1)) (= var4 (inner (getTSLL (read var0 var5)))))))) (inv_main104 var2 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main112 var2 var5 var3) (and (= nullAddr (next (getTSLL (read var2 var3)))) (and (and (= var1 (write var2 var3 defObj)) (= var4 var5)) (= var0 var3))))) (inv_main104 var1 var4 nullAddr)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main33 var0 var5 var1) (and (and (and (= var2 var0) (= var6 var5)) (= var4 var1)) (= var3 (next (getTSLL (read var0 var1))))))) (inv_main34 var2 var6 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var0 var4 var1 var2 var3) (and (<= 0 (+ 1 (* (- 1) var2))) (= nullAddr var3)))) (inv_main94 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 TSLL) (var4 Addr)) (or (not (and (inv_main27 var1 var4 var2) (not (= var0 0)))) (inv_main32 (newHeap (alloc var1 (O_TSLL var3))) var4 var2 (newAddr (alloc var1 (O_TSLL var3))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main4 var1 var3) (and (= var2 nullAddr) (and (= var0 (write var1 var3 (O_TSLL (TSLL (next (getTSLL (read var1 var3))) nullAddr (inner (getTSLL (read var1 var3))))))) (= var2 var3))))) (inv_main8 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (inv_main71 var0 var3 var1 var2)) (inv_main72 var0 var3 var1 var2 (inner (getTSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main88 var2 var9 var3 var7 var8) (and (and (and (and (and (= var5 var2) (= var6 var9)) (= var10 var3)) (= var1 var7)) (= var4 var8)) (= var0 (inner (getTSLL (read var2 var8))))))) (inv_main72 var5 var6 var10 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 var1))) (inner (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main107 var0 var2 var1) (not (= nullAddr (inner (getTSLL (read var0 var1))))))) (inv_main114 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 TSLL) (var6 Int) (var7 Addr)) (or (not (and (inv_main34 var1 var7 var2) (and (= var6 0) (and (not (= var3 nullAddr)) (and (not (= nullAddr var3)) (and (and (= var0 (write var1 var2 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var2))) (inner (getTSLL (read var1 var2))))))) (= var4 var7)) (= var3 var2))))))) (inv_main52 (newHeap (alloc var0 (O_TSLL var5))) var4 var3 (newAddr (alloc var0 (O_TSLL var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var0 var4 var1 var2 var3) (and (= nullAddr var3) (and (= var2 0) (not (= nullAddr var3)))))) (inv_main80 var0 var4 var1 1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var0 var4 var1 var2 var3) (and (= nullAddr var3) (and (not (= var2 0)) (not (= nullAddr var3)))))) (inv_main80 var0 var4 var1 2 var3)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main4 var2 var3) (and (not (= var0 0)) (and (not (= var4 nullAddr)) (and (= var1 (write var2 var3 (O_TSLL (TSLL (next (getTSLL (read var2 var3))) nullAddr (inner (getTSLL (read var2 var3))))))) (= var4 var3)))))) (inv_main12 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main78 var0 var4 var1 var2 var3) (= nullAddr (inner (getTSLL (read var0 var3)))))) (inv_main83 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var1 var6 var2) (and (= nullAddr var0) (and (= var3 0) (and (and (= var4 var1) (= var0 var6)) (= var5 nullAddr)))))) (inv_main66 var4 var0 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main22 var2 var8 var6) (and (and (= var0 0) (and (= var6 nullAddr) (and (and (= var4 var2) (= var3 var8)) (= var7 (inner (getTSLL (read var2 var8))))))) (and (and (= var5 var4) (= var1 var3)) (or (and (= var7 nullAddr) (= var0 1)) (and (not (= var7 nullAddr)) (= var0 0))))))) (inv_main20 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main83 var0 var4 var1 var2 var3) (not (= nullAddr (next (getTSLL (read var0 var3))))))) (inv_main88 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main16 var1 var2 var0)) (inv_main15 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) var0))) var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main83 var0 var4 var1 var2 var3) (= nullAddr (next (getTSLL (read var0 var3)))))) (inv_main90 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main107 var0 var2 var1) (= nullAddr (inner (getTSLL (read var0 var1)))))) (inv_main112 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main94 var1 var10 var2 var5 var9) (and (not (= nullAddr var8)) (and (and (and (and (and (= var3 var1) (= var0 var10)) (= var4 var2)) (= var7 var5)) (= var6 var9)) (= var8 (next (getTSLL (read var1 var2)))))))) (inv_main71 var3 var0 var8 0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var1 var6 var2) (and (not (= nullAddr var0)) (and (not (= nullAddr var0)) (and (= var3 0) (and (and (= var4 var1) (= var0 var6)) (= var5 nullAddr))))))) (inv_main71 var4 var0 var0 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main48 var0 var2 var1)) (inv_main47 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (prev (getTSLL (read var0 var1))) nullAddr))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main53 var0 var2 var1)) (inv_main47 (write var0 (inner (getTSLL (read var0 var1))) (O_TSLL (TSLL (next (getTSLL (read var0 (inner (getTSLL (read var0 var1)))))) (prev (getTSLL (read var0 (inner (getTSLL (read var0 var1)))))) nullAddr))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main34 var1 var5 var2) (and (= var3 nullAddr) (and (not (= nullAddr var3)) (and (and (= var0 (write var1 var2 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var2))) (inner (getTSLL (read var1 var2))))))) (= var4 var5)) (= var3 var2)))))) (inv_main44 var0 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main34 var2 var6 var3) (and (not (= var0 0)) (and (not (= var4 nullAddr)) (and (not (= nullAddr var4)) (and (and (= var1 (write var2 var3 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 var3))) (inner (getTSLL (read var2 var3))))))) (= var5 var6)) (= var4 var3))))))) (inv_main48 var1 var5 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main78 var0 var4 var1 var2 var3) (not (= nullAddr (inner (getTSLL (read var0 var3))))))) (inv_main85 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main15 var0 var1)) (inv_main17 (write var0 (inner (getTSLL (read var0 var1))) (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 (inner (getTSLL (read var0 var1)))))) (inner (getTSLL (read var0 (inner (getTSLL (read var0 var1))))))))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main11 var0 var1)) (inv_main22 var0 var1 (inner (getTSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main34 var2 var5 var3) (and (= nullAddr var0) (and (and (= var4 (write var2 var3 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 var3))) (inner (getTSLL (read var2 var3))))))) (= var1 var5)) (= var0 var3))))) (inv_main39 var4 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main58 var0 var3 var1 var2) (not (= var2 nullAddr)))) (inv_main27 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr)) (or (not (and (inv_main58 var1 var11 var2 var8) (and (and (not (= var10 0)) (and (= var8 nullAddr) (and (and (and (= var6 var1) (= var0 var11)) (= var4 var2)) (= var3 (inner (getTSLL (read var1 var2))))))) (and (and (and (= var9 var6) (= var5 var0)) (= var7 var4)) (or (and (= var3 nullAddr) (= var10 1)) (and (not (= var3 nullAddr)) (= var10 0))))))) (inv_main27 var9 var5 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main22 var0 var2 var1) (not (= var1 nullAddr)))) (inv_main27 var0 var2 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main22 var1 var8 var5) (and (and (not (= var0 0)) (and (= var5 nullAddr) (and (and (= var4 var1) (= var2 var8)) (= var6 (inner (getTSLL (read var1 var8))))))) (and (and (= var3 var4) (= var7 var2)) (or (and (= var6 nullAddr) (= var0 1)) (and (not (= var6 nullAddr)) (= var0 0))))))) (inv_main27 var3 var7 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main101 var0 var5 var1) (and (= nullAddr var4) (and (not (= nullAddr var4)) (and (and (and (= var2 var0) (= var6 var5)) (= var3 var1)) (= var4 (inner (getTSLL (read var0 var5))))))))) (inv_main109 var2 var6 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main51 var0 var2 var1)) (inv_main53 (write var0 (inner (getTSLL (read var0 var1))) (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 (inner (getTSLL (read var0 var1)))))) (inner (getTSLL (read var0 (inner (getTSLL (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main31 var0 var2 var1)) (inv_main33 (write var0 (next (getTSLL (read var0 var1))) (O_TSLL (TSLL (next (getTSLL (read var0 (next (getTSLL (read var0 var1)))))) var1 (inner (getTSLL (read var0 (next (getTSLL (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main12 var0 var1)) (inv_main11 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (prev (getTSLL (read var0 var1))) nullAddr))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main17 var0 var1)) (inv_main11 (write var0 (inner (getTSLL (read var0 var1))) (O_TSLL (TSLL (next (getTSLL (read var0 (inner (getTSLL (read var0 var1)))))) (prev (getTSLL (read var0 (inner (getTSLL (read var0 var1)))))) nullAddr))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main47 var0 var2 var1)) (inv_main58 var0 var2 var1 (inner (getTSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (inv_main8 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main12 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main16 var1 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main15 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main15 var0 var1) (not (is-O_TSLL (read var0 (inner (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main17 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main17 var0 var1) (not (is-O_TSLL (read var0 (inner (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main11 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main22 var0 var2 var1) (and (= var1 nullAddr) (not (is-O_TSLL (read var0 var2)))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (inv_main20 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main32 var0 var3 var1 var2) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main31 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main31 var0 var2 var1) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main33 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main34 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main39 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main44 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main48 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main52 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main51 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main51 var0 var2 var1) (not (is-O_TSLL (read var0 (inner (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main53 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main53 var0 var2 var1) (not (is-O_TSLL (read var0 (inner (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main47 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main58 var0 var3 var1 var2) (and (= var2 nullAddr) (not (is-O_TSLL (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main56 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main66 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main71 var0 var3 var1 var2) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (inv_main80 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main78 var0 var4 var1 var2 var3) (not (is-O_TSLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (inv_main85 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main83 var0 var4 var1 var2 var3) (not (is-O_TSLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (inv_main90 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main88 var0 var4 var1 var2 var3) (not (is-O_TSLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (inv_main96 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main94 var0 var4 var1 var2 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main101 var0 var2 var1) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main109 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main107 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main114 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main112 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main119 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main104 var0 var2 var1) (not (is-O_TSLL (read var0 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll-01-2.i.smt2 b/heap-theory-benchmarks/array/dll-01-2.i.smt2 new file mode 100644 index 00000000..e4b1ec38 --- /dev/null +++ b/heap-theory-benchmarks/array/dll-01-2.i.smt2 @@ -0,0 +1,184 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (prev Addr) (inner Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main101 (Heap Addr Addr) Bool) +(declare-fun inv_main104 (Heap Addr Addr) Bool) +(declare-fun inv_main107 (Heap Addr Addr) Bool) +(declare-fun inv_main109 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr) Bool) +(declare-fun inv_main112 (Heap Addr Addr) Bool) +(declare-fun inv_main114 (Heap Addr Addr) Bool) +(declare-fun inv_main119 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr) Bool) +(declare-fun inv_main122 (Heap Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main8 (Heap Addr) Bool) +(declare-fun inv_main80 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main85 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main90 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main94 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap)) (or (not (and (inv_main4 var3 var1) (and (= var0 nullAddr) (and (= var2 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) nullAddr (inner (getTSLL (read var3 var1))))))) (= var0 var1))))) (inv_main8 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main112 var1 var0 var2) (= nullAddr (next (getTSLL (read var1 var2)))))) (inv_main122 (write var1 var2 defObj) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main51 var1 var0 var2)) (inv_main53 (write var1 (inner (getTSLL (read var1 var2))) (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 (inner (getTSLL (read var1 var2)))))) (inner (getTSLL (read var1 (inner (getTSLL (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main12 var1 var0)) (inv_main11 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) nullAddr))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main17 var1 var0)) (inv_main11 (write var1 (inner (getTSLL (read var1 var0))) (O_TSLL (TSLL (next (getTSLL (read var1 (inner (getTSLL (read var1 var0)))))) (prev (getTSLL (read var1 (inner (getTSLL (read var1 var0)))))) nullAddr))) var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main94 var7 var3 var8 var6 var9) (and (not (= nullAddr var4)) (and (and (and (and (and (= var1 var7) (= var5 var3)) (= var2 var8)) (= var0 var6)) (= var10 var9)) (= var4 (next (getTSLL (read var7 var8)))))))) (inv_main71 var1 var5 var4 0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var3 var2 var4) (and (not (= nullAddr var6)) (and (not (= nullAddr var6)) (and (= var1 0) (and (and (= var0 var3) (= var6 var2)) (= var5 nullAddr))))))) (inv_main71 var0 var6 var6 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main101 var5 var3 var6) (and (not (= nullAddr var1)) (and (not (= nullAddr var1)) (and (and (and (= var0 var5) (= var2 var3)) (= var4 var6)) (= var1 (inner (getTSLL (read var5 var3))))))))) (inv_main107 var0 var2 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 TSLL)) (or (not (and (inv_main27 var2 var1 var3) (not (= var0 0)))) (inv_main32 (newHeap (alloc var2 (O_TSLL var4))) var1 var3 (newAddr (alloc var2 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main104 var3 var1 var4) (and (not (= nullAddr var0)) (and (and (and (and (= var9 var3) (= var7 var1)) (= var8 var4)) (= var6 (next (getTSLL (read var3 var1))))) (and (and (= var2 (write var9 var7 defObj)) (= var5 var7)) (= var0 var6)))))) (inv_main101 var2 var0 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main94 var7 var3 var8 var6 var9) (and (not (= nullAddr var5)) (and (= nullAddr var4) (and (and (and (and (and (= var1 var7) (= var5 var3)) (= var2 var8)) (= var0 var6)) (= var10 var9)) (= var4 (next (getTSLL (read var7 var8))))))))) (inv_main101 var1 var5 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var3 var2 var4) (and (not (= nullAddr var6)) (and (= nullAddr var6) (and (not (= nullAddr var6)) (and (= var1 0) (and (and (= var0 var3) (= var6 var2)) (= var5 nullAddr)))))))) (inv_main101 var0 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main33 var5 var3 var6) (and (and (and (= var2 var5) (= var1 var3)) (= var4 var6)) (= var0 (next (getTSLL (read var5 var6))))))) (inv_main34 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main78 var2 var0 var3 var1 var4) (not (= nullAddr (inner (getTSLL (read var2 var4))))))) (inv_main85 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main47 var1 var0 var2)) (inv_main58 var1 var0 var2 (inner (getTSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 TSLL) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap)) (or (not (and (inv_main34 var4 var2 var5) (and (= var6 0) (and (not (= var0 nullAddr)) (and (not (= nullAddr var0)) (and (and (= var7 (write var4 var5 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var4 var5))) (inner (getTSLL (read var4 var5))))))) (= var1 var2)) (= var0 var5))))))) (inv_main52 (newHeap (alloc var7 (O_TSLL var3))) var1 var0 (newAddr (alloc var7 (O_TSLL var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var2 var0 var3 var1 var4) (and (not (= nullAddr var4)) (and (= var1 0) (not (= nullAddr var4)))))) (inv_main78 var2 var0 var3 1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var2 var0 var3 var1 var4) (and (not (= nullAddr var4)) (and (not (= var1 0)) (not (= nullAddr var4)))))) (inv_main78 var2 var0 var3 2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main78 var2 var0 var3 var1 var4) (= nullAddr (inner (getTSLL (read var2 var4)))))) (inv_main83 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main15 var1 var0)) (inv_main17 (write var1 (inner (getTSLL (read var1 var0))) (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 (inner (getTSLL (read var1 var0)))))) (inner (getTSLL (read var1 (inner (getTSLL (read var1 var0))))))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main16 var2 var1 var0)) (inv_main15 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) var0))) var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var3 var2 var4) (and (= nullAddr var6) (and (= var1 0) (and (and (= var0 var3) (= var6 var2)) (= var5 nullAddr)))))) (inv_main66 var0 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main107 var1 var0 var2) (not (= nullAddr (inner (getTSLL (read var1 var2))))))) (inv_main114 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main31 var1 var0 var2)) (inv_main33 (write var1 (next (getTSLL (read var1 var2))) (O_TSLL (TSLL (next (getTSLL (read var1 (next (getTSLL (read var1 var2)))))) var2 (inner (getTSLL (read var1 (next (getTSLL (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var2 var0 var3 var1 var4) (and (not (<= 0 (+ 1 (* (- 1) var1)))) (= nullAddr var4)))) (inv_main96 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main101 var5 var3 var6) (and (= nullAddr var1) (and (not (= nullAddr var1)) (and (and (and (= var0 var5) (= var2 var3)) (= var4 var6)) (= var1 (inner (getTSLL (read var5 var3))))))))) (inv_main109 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap)) (or (not (and (inv_main34 var3 var2 var4) (and (= var0 nullAddr) (and (not (= nullAddr var0)) (and (and (= var5 (write var3 var4 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var3 var4))) (inner (getTSLL (read var3 var4))))))) (= var1 var2)) (= var0 var4)))))) (inv_main44 var5 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main52 var2 var1 var3 var0)) (inv_main51 (write var2 var3 (O_TSLL (TSLL (next (getTSLL (read var2 var3))) (prev (getTSLL (read var2 var3))) var0))) var1 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (or (not (inv_main71 var2 var0 var3 var1)) (inv_main72 var2 var0 var3 var1 (inner (getTSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main88 var8 var5 var9 var7 var10) (and (and (and (and (and (= var6 var8) (= var0 var5)) (= var2 var9)) (= var3 var7)) (= var1 var10)) (= var4 (inner (getTSLL (read var8 var10))))))) (inv_main72 var6 var0 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main48 var1 var0 var2)) (inv_main47 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main53 var1 var0 var2)) (inv_main47 (write var1 (inner (getTSLL (read var1 var2))) (O_TSLL (TSLL (next (getTSLL (read var1 (inner (getTSLL (read var1 var2)))))) (prev (getTSLL (read var1 (inner (getTSLL (read var1 var2)))))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var2 var0 var3 var1 var4) (and (= nullAddr var4) (and (= var1 0) (not (= nullAddr var4)))))) (inv_main80 var2 var0 var3 1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var2 var0 var3 var1 var4) (and (= nullAddr var4) (and (not (= var1 0)) (not (= nullAddr var4)))))) (inv_main80 var2 var0 var3 2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main83 var2 var0 var3 var1 var4) (= nullAddr (next (getTSLL (read var2 var4)))))) (inv_main88 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main11 var1 var0)) (inv_main22 var1 var0 (inner (getTSLL (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main4 var3 var2) (and (not (= var4 0)) (and (not (= var1 nullAddr)) (and (= var0 (write var3 var2 (O_TSLL (TSLL (next (getTSLL (read var3 var2))) nullAddr (inner (getTSLL (read var3 var2))))))) (= var1 var2)))))) (inv_main12 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main112 var1 var0 var2) (not (= nullAddr (next (getTSLL (read var1 var2))))))) (inv_main119 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main58 var2 var1 var3 var0) (not (= var0 nullAddr)))) (inv_main27 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap)) (or (not (and (inv_main58 var7 var5 var8 var1) (and (and (not (= var10 0)) (and (= var1 nullAddr) (and (and (and (= var11 var7) (= var6 var5)) (= var9 var8)) (= var4 (inner (getTSLL (read var7 var8))))))) (and (and (and (= var0 var11) (= var2 var6)) (= var3 var9)) (or (and (= var4 nullAddr) (= var10 1)) (and (not (= var4 nullAddr)) (= var10 0))))))) (inv_main27 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main22 var2 var0 var1) (not (= var1 nullAddr)))) (inv_main27 var2 var0 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main22 var6 var3 var5) (and (and (not (= var0 0)) (and (= var5 nullAddr) (and (and (= var2 var6) (= var7 var3)) (= var8 (inner (getTSLL (read var6 var3))))))) (and (and (= var1 var2) (= var4 var7)) (or (and (= var8 nullAddr) (= var0 1)) (and (not (= var8 nullAddr)) (= var0 0))))))) (inv_main27 var1 var4 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main22 var5 var3 var4) (and (and (= var0 0) (and (= var4 nullAddr) (and (and (= var2 var5) (= var6 var3)) (= var8 (inner (getTSLL (read var5 var3))))))) (and (and (= var1 var2) (= var7 var6)) (or (and (= var8 nullAddr) (= var0 1)) (and (not (= var8 nullAddr)) (= var0 0))))))) (inv_main20 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var2 var0 var3 var1 var4) (and (<= 0 (+ 1 (* (- 1) var1))) (= nullAddr var4)))) (inv_main94 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main34 var4 var3 var5) (and (not (= var2 0)) (and (not (= var0 nullAddr)) (and (not (= nullAddr var0)) (and (and (= var6 (write var4 var5 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var4 var5))) (inner (getTSLL (read var4 var5))))))) (= var1 var3)) (= var0 var5))))))) (inv_main48 var6 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main32 var2 var1 var3 var0)) (inv_main31 (write var2 var3 (O_TSLL (TSLL var0 (prev (getTSLL (read var2 var3))) (inner (getTSLL (read var2 var3)))))) var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main107 var1 var0 var2) (= nullAddr (inner (getTSLL (read var1 var2)))))) (inv_main112 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap)) (or (not (and (inv_main58 var7 var5 var8 var0) (and (and (= var4 0) (and (= var0 nullAddr) (and (and (and (= var11 var7) (= var6 var5)) (= var10 var8)) (= var3 (inner (getTSLL (read var7 var8))))))) (and (and (and (= var2 var11) (= var9 var6)) (= var1 var10)) (or (and (= var3 nullAddr) (= var4 1)) (and (not (= var3 nullAddr)) (= var4 0))))))) (inv_main56 var2 var9 var1)))) +(assert (forall ((var0 Heap) (var1 TSLL) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main4 var5 var4) (and (= var2 0) (and (not (= var3 nullAddr)) (and (= var0 (write var5 var4 (O_TSLL (TSLL (next (getTSLL (read var5 var4))) nullAddr (inner (getTSLL (read var5 var4))))))) (= var3 var4)))))) (inv_main16 (newHeap (alloc var0 (O_TSLL var1))) var3 (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main83 var2 var0 var3 var1 var4) (not (= nullAddr (next (getTSLL (read var2 var4))))))) (inv_main90 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr)) (or (not (and (inv_main34 var4 var1 var5) (and (= nullAddr var0) (and (and (= var3 (write var4 var5 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var4 var5))) (inner (getTSLL (read var4 var5))))))) (= var2 var1)) (= var0 var5))))) (inv_main39 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var0))) (inner (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main122 var1 var0 var2)) (inv_main104 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main101 var5 var3 var6) (and (= nullAddr var1) (and (and (and (= var0 var5) (= var2 var3)) (= var4 var6)) (= var1 (inner (getTSLL (read var5 var3)))))))) (inv_main104 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (inv_main8 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main12 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main16 var2 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main15 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main15 var1 var0) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main17 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main17 var1 var0) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main11 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main22 var2 var0 var1) (and (= var1 nullAddr) (not (is-O_TSLL (read var2 var0)))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (inv_main20 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main32 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main31 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main31 var1 var0 var2) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main33 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main34 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main39 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main44 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main48 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main52 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main51 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main51 var1 var0 var2) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main53 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main53 var1 var0 var2) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main47 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main58 var2 var1 var3 var0) (and (= var0 nullAddr) (not (is-O_TSLL (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main56 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main66 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (not (and (inv_main71 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (inv_main80 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main78 var2 var0 var3 var1 var4) (not (is-O_TSLL (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (inv_main85 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main83 var2 var0 var3 var1 var4) (not (is-O_TSLL (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (inv_main90 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main88 var2 var0 var3 var1 var4) (not (is-O_TSLL (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (inv_main96 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main94 var2 var0 var3 var1 var4) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main101 var1 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main109 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main107 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main114 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main112 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main119 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main122 var1 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main104 var1 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll-circular-1.i.smt2 b/heap-theory-benchmarks/array/dll-circular-1.i.smt2 new file mode 100644 index 00000000..55205b50 --- /dev/null +++ b/heap-theory-benchmarks/array/dll-circular-1.i.smt2 @@ -0,0 +1,111 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (prev Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr Addr Int) Bool) +(declare-fun inv_main17 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main27 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Int) Bool) +(declare-fun inv_main33 (Heap Addr Addr Int) Bool) +(declare-fun inv_main35 (Heap Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Int) Bool) +(declare-fun inv_main43 (Heap Addr Addr Int) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main46 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main51 (Heap Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main33 var4 var5 var3 var2) (and (= var6 0) (and (and (and (and (= var0 var4) (= var8 var5)) (= var1 var3)) (= var7 var2)) (= var6 (data (getTSLL (read var4 var3)))))))) (inv_main38 var0 var8 var1 var7)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main13 var5 var8 var4 var3) (and (and (and (and (= var0 var5) (= var2 var8)) (= var7 var4)) (= var1 var3)) (= var6 (next (getTSLL (read var5 var4))))))) (inv_main14 var0 var2 var6 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main8 var2 var3 var1 var0)) (inv_main30 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) var0))) var3 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL var1 (prev (getTSLL (read var0 var1))) (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main11 var2 var3 var1 var0)) (inv_main13 (write var2 (next (getTSLL (read var2 var1))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var1)))))) var1 (data (getTSLL (read var2 (next (getTSLL (read var2 var1))))))))) var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main45 var3 var4 var2 var1 var0) (not (= var0 0)))) (inv_main46 var3 var4 var2 var1 (data (getTSLL (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main14 var3 var6 var2 var1) (and (not (= var5 2)) (and (not (= var5 1)) (and (not (= var0 0)) (and (and (and (= var4 (write var3 var2 (O_TSLL (TSLL var6 (prev (getTSLL (read var3 var2))) (data (getTSLL (read var3 var2))))))) (= var8 var6)) (= var7 var2)) (= var5 var1))))))) (inv_main8 var4 var8 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main17 var4 var8 var3 var2) (and (= var1 0) (and (not (= nullAddr var7)) (and (and (and (= var6 (write var4 var3 (O_TSLL (TSLL (next (getTSLL (read var4 var3))) (prev (getTSLL (read var4 var3))) var2)))) (= var5 var8)) (= var7 var3)) (= var0 var2)))))) (inv_main8 var6 var5 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main4 var1 var2) (and (= var3 0) (and (= var4 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) 0)))) (= var0 var2))))) (inv_main8 var4 var0 var0 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main14 var2 var6 var1 var0) (and (= var3 0) (and (and (and (= var4 (write var2 var1 (O_TSLL (TSLL var6 (prev (getTSLL (read var2 var1))) (data (getTSLL (read var2 var1))))))) (= var8 var6)) (= var7 var1)) (= var5 var0))))) (inv_main17 var4 var8 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main14 var3 var6 var2 var1) (and (= var5 1) (and (not (= var0 0)) (and (and (and (= var4 (write var3 var2 (O_TSLL (TSLL var6 (prev (getTSLL (read var3 var2))) (data (getTSLL (read var3 var2))))))) (= var8 var6)) (= var7 var2)) (= var5 var1)))))) (inv_main17 var4 var8 var7 2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main14 var3 var6 var2 var1) (and (= var5 2) (and (not (= var5 1)) (and (not (= var0 0)) (and (and (and (= var4 (write var3 var2 (O_TSLL (TSLL var6 (prev (getTSLL (read var3 var2))) (data (getTSLL (read var3 var2))))))) (= var8 var6)) (= var7 var2)) (= var5 var1))))))) (inv_main17 var4 var8 var7 3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 TSLL) (var9 Addr)) (or (not (and (inv_main17 var4 var9 var3 var2) (and (not (= var0 0)) (and (not (= nullAddr var7)) (and (and (and (= var6 (write var4 var3 (O_TSLL (TSLL (next (getTSLL (read var4 var3))) (prev (getTSLL (read var4 var3))) var2)))) (= var5 var9)) (= var7 var3)) (= var1 var2)))))) (inv_main12 (newHeap (alloc var6 (O_TSLL var8))) var5 var7 var1 (newAddr (alloc var6 (O_TSLL var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Heap) (var4 TSLL) (var5 Addr)) (or (not (and (inv_main4 var3 var5) (and (not (= var1 0)) (and (= var2 (write var3 var5 (O_TSLL (TSLL (next (getTSLL (read var3 var5))) (prev (getTSLL (read var3 var5))) 0)))) (= var0 var5))))) (inv_main12 (newHeap (alloc var2 (O_TSLL var4))) var0 var0 1 (newAddr (alloc var2 (O_TSLL var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main51 var3 var5 var2 var1) (and (not (= var4 0)) (and (and (and (and (= var0 var3) (= var7 var5)) (= var6 var2)) (= var8 var1)) (= var4 (data (getTSLL (read var3 var2)))))))) (inv_main56 var0 var6 var6 var8)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main39 var2 var3 var1 var0)) (inv_main45 var2 var3 var1 var0 (data (getTSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main45 var3 var4 var2 var1 var0) (= var0 0))) (inv_main43 var3 var4 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main46 var5 var7 var4 var3 var1) (and (= var9 0) (and (and (and (and (= var8 var5) (= var0 var7)) (= var2 var4)) (= var6 var3)) (or (and (<= 0 (+ (+ var1 (* (- 1) (data (getTSLL (read var5 (next (getTSLL (read var5 var4)))))))) (- 1))) (= var9 1)) (and (not (<= 0 (+ (+ var1 (* (- 1) (data (getTSLL (read var5 (next (getTSLL (read var5 var4)))))))) (- 1)))) (= var9 0))))))) (inv_main43 var8 var0 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main33 var6 var8 var5 var4) (and (not (= var7 0)) (and (and (and (and (= var3 var6) (= var1 var8)) (= var0 var5)) (= var2 var4)) (= var7 (data (getTSLL (read var6 var5)))))))) (inv_main39 var3 var1 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main38 var4 var8 var3 var2) (and (and (and (and (= var7 var4) (= var5 var8)) (= var1 var3)) (= var0 var2)) (= var6 (next (getTSLL (read var4 var8))))))) (inv_main51 var7 var5 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main56 var5 var7 var4 var3) (and (and (and (and (= var1 var5) (= var2 var7)) (= var0 var4)) (= var8 var3)) (= var6 (next (getTSLL (read var5 var4))))))) (inv_main51 (write var1 var2 defObj) var2 var6 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main46 var5 var7 var4 var3 var1) (and (not (= var9 0)) (and (and (and (and (= var8 var5) (= var0 var7)) (= var2 var4)) (= var6 var3)) (or (and (<= 0 (+ (+ var1 (* (- 1) (data (getTSLL (read var5 (next (getTSLL (read var5 var4)))))))) (- 1))) (= var9 1)) (and (not (<= 0 (+ (+ var1 (* (- 1) (data (getTSLL (read var5 (next (getTSLL (read var5 var4)))))))) (- 1)))) (= var9 0))))))) (inv_main41 var8 var0 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main30 var5 var6 var4 var3) (and (= nullAddr var8) (and (and (and (and (= var1 var5) (= var7 var6)) (= var0 var4)) (= var2 var3)) (= var8 (next (getTSLL (read var5 var6)))))))) (inv_main35 var1 var7 var8 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (inv_main41 var4 var6 var3 var2) (and (and (and (and (= var7 var4) (= var1 var6)) (= var0 var3)) (= var8 var2)) (= var5 (next (getTSLL (read var4 var3))))))) (inv_main33 var7 var1 var5 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main30 var5 var6 var4 var3) (and (not (= nullAddr var8)) (and (and (and (and (= var1 var5) (= var7 var6)) (= var0 var4)) (= var2 var3)) (= var8 (next (getTSLL (read var5 var6)))))))) (inv_main33 var1 var7 var8 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main17 var4 var5 var3 var2) (and (= nullAddr var6) (and (and (and (= var0 (write var4 var3 (O_TSLL (TSLL (next (getTSLL (read var4 var3))) (prev (getTSLL (read var4 var3))) var2)))) (= var1 var5)) (= var6 var3)) (= var7 var2))))) (inv_main27 var0 var1 var6 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main12 var2 var4 var1 var0 var3)) (inv_main11 (write var2 var1 (O_TSLL (TSLL var3 (prev (getTSLL (read var2 var1))) (data (getTSLL (read var2 var1)))))) var4 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main12 var2 var4 var1 var0 var3) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main11 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main11 var2 var3 var1 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main13 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main14 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main17 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main27 var2 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main8 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main30 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main35 var2 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main33 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main39 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main39 var2 var3 var1 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main45 var3 var4 var2 var1 var0) (and (not (= var0 0)) (not (is-O_TSLL (read var3 var2)))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main46 var3 var4 var2 var1 var0) (not (is-O_TSLL (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main46 var3 var4 var2 var1 var0) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var2)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main43 var2 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main41 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main38 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main51 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main56 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll-circular-2.i.smt2 b/heap-theory-benchmarks/array/dll-circular-2.i.smt2 new file mode 100644 index 00000000..8a419a4e --- /dev/null +++ b/heap-theory-benchmarks/array/dll-circular-2.i.smt2 @@ -0,0 +1,114 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (prev Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Addr Addr Int) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr Int) Bool) +(declare-fun inv_main15 (Heap Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main28 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Int) Bool) +(declare-fun inv_main36 (Heap Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int) Bool) +(declare-fun inv_main42 (Heap Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main47 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Int) Bool) +(declare-fun inv_main57 (Heap Addr Addr Int) Bool) +(declare-fun inv_main9 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main46 var4 var3 var2 var1 var0) (not (= var0 0)))) (inv_main47 var4 var3 var2 var1 (data (getTSLL (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main39 var4 var3 var2 var1) (and (and (and (and (= var8 var4) (= var0 var3)) (= var6 var2)) (= var5 var1)) (= var7 (next (getTSLL (read var4 var3))))))) (inv_main52 var8 var0 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main57 var6 var5 var4 var3) (and (and (and (and (= var8 var6) (= var0 var5)) (= var7 var4)) (= var2 var3)) (= var1 (next (getTSLL (read var6 var4))))))) (inv_main52 (write var8 var0 defObj) var0 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL var0 (prev (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 TSLL) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main18 var5 var4 var3 var2) (and (not (= var1 0)) (and (not (= nullAddr var7)) (and (and (and (= var8 (write var5 var3 (O_TSLL (TSLL (next (getTSLL (read var5 var3))) (prev (getTSLL (read var5 var3))) var2)))) (= var9 var4)) (= var7 var3)) (= var6 var2)))))) (inv_main13 (newHeap (alloc var8 (O_TSLL var0))) var9 var7 var6 (newAddr (alloc var8 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 TSLL)) (or (not (and (inv_main5 var3 var2) (and (not (= var4 0)) (and (= var1 (write var3 var2 (O_TSLL (TSLL (next (getTSLL (read var3 var2))) (prev (getTSLL (read var3 var2))) 0)))) (= var0 var2))))) (inv_main13 (newHeap (alloc var1 (O_TSLL var5))) var0 var0 1 (newAddr (alloc var1 (O_TSLL var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main14 var6 var5 var4 var3) (and (and (and (and (= var2 var6) (= var8 var5)) (= var7 var4)) (= var1 var3)) (= var0 (next (getTSLL (read var6 var4))))))) (inv_main15 var2 var8 var0 var1)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main15 var4 var3 var2 var1) (and (not (= var8 2)) (and (not (= var8 1)) (and (not (= var6 0)) (and (and (and (= var0 (write var4 var2 (O_TSLL (TSLL var3 (prev (getTSLL (read var4 var2))) (data (getTSLL (read var4 var2))))))) (= var7 var3)) (= var5 var2)) (= var8 var1))))))) (inv_main9 var0 var7 var5 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main18 var3 var2 var1 var0) (and (= var6 0) (and (not (= nullAddr var5)) (and (and (and (= var7 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) (prev (getTSLL (read var3 var1))) var0)))) (= var8 var2)) (= var5 var1)) (= var4 var0)))))) (inv_main9 var7 var8 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main5 var1 var0) (and (= var4 0) (and (= var3 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) 0)))) (= var2 var0))))) (inv_main9 var3 var2 var2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main42 var5 var3 var2 var1) (and (and (and (and (= var4 var5) (= var7 var3)) (= var6 var2)) (= var0 var1)) (= var8 (next (getTSLL (read var5 var2))))))) (inv_main34 var4 var7 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main31 var5 var4 var3 var2) (and (not (= nullAddr var1)) (and (and (and (and (= var8 var5) (= var0 var4)) (= var7 var3)) (= var6 var2)) (= var1 (next (getTSLL (read var5 var4)))))))) (inv_main34 var8 var0 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main4 var1 var0)) (inv_main5 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) nullAddr (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (and (inv_main52 var6 var5 var4 var3) (and (not (= var8 0)) (and (and (and (and (= var0 var6) (= var2 var5)) (= var1 var4)) (= var7 var3)) (= var8 (data (getTSLL (read var6 var4)))))))) (inv_main57 var0 var1 var1 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main13 var3 var2 var1 var0 var4)) (inv_main12 (write var3 var1 (O_TSLL (TSLL var4 (prev (getTSLL (read var3 var1))) (data (getTSLL (read var3 var1)))))) var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main34 var8 var6 var5 var4) (and (not (= var1 0)) (and (and (and (and (= var3 var8) (= var0 var6)) (= var7 var5)) (= var2 var4)) (= var1 (data (getTSLL (read var8 var5)))))))) (inv_main40 var3 var0 var7 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main15 var4 var3 var2 var1) (and (= var6 0) (and (and (and (= var0 (write var4 var2 (O_TSLL (TSLL var3 (prev (getTSLL (read var4 var2))) (data (getTSLL (read var4 var2))))))) (= var7 var3)) (= var5 var2)) (= var8 var1))))) (inv_main18 var0 var7 var5 var8)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main15 var4 var3 var2 var1) (and (= var8 1) (and (not (= var6 0)) (and (and (and (= var0 (write var4 var2 (O_TSLL (TSLL var3 (prev (getTSLL (read var4 var2))) (data (getTSLL (read var4 var2))))))) (= var7 var3)) (= var5 var2)) (= var8 var1)))))) (inv_main18 var0 var7 var5 2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main15 var4 var3 var2 var1) (and (= var8 2) (and (not (= var8 1)) (and (not (= var6 0)) (and (and (and (= var0 (write var4 var2 (O_TSLL (TSLL var3 (prev (getTSLL (read var4 var2))) (data (getTSLL (read var4 var2))))))) (= var7 var3)) (= var5 var2)) (= var8 var1))))))) (inv_main18 var0 var7 var5 3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main46 var4 var3 var2 var1 var0) (= var0 0))) (inv_main42 var4 var3 var2 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main47 var5 var4 var3 var2 var6) (and (not (= var1 0)) (and (and (and (and (= var9 var5) (= var8 var4)) (= var7 var3)) (= var0 var2)) (or (and (<= 0 (+ (data (getTSLL (read var5 (next (getTSLL (read var5 var3)))))) (* (- 1) var6))) (= var1 1)) (and (not (<= 0 (+ (data (getTSLL (read var5 (next (getTSLL (read var5 var3)))))) (* (- 1) var6)))) (= var1 0))))))) (inv_main42 var9 var8 var7 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main40 var3 var2 var1 var0)) (inv_main46 var3 var2 var1 var0 (data (getTSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main34 var6 var5 var4 var3) (and (= var2 0) (and (and (and (and (= var1 var6) (= var7 var5)) (= var0 var4)) (= var8 var3)) (= var2 (data (getTSLL (read var6 var4)))))))) (inv_main39 var1 var7 var0 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main18 var6 var5 var4 var3) (and (= nullAddr var0) (and (and (and (= var2 (write var6 var4 (O_TSLL (TSLL (next (getTSLL (read var6 var4))) (prev (getTSLL (read var6 var4))) var3)))) (= var7 var5)) (= var0 var4)) (= var1 var3))))) (inv_main28 var2 var7 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main47 var5 var4 var3 var2 var6) (and (= var1 0) (and (and (and (and (= var9 var5) (= var8 var4)) (= var7 var3)) (= var0 var2)) (or (and (<= 0 (+ (data (getTSLL (read var5 (next (getTSLL (read var5 var3)))))) (* (- 1) var6))) (= var1 1)) (and (not (<= 0 (+ (data (getTSLL (read var5 (next (getTSLL (read var5 var3)))))) (* (- 1) var6)))) (= var1 0))))))) (inv_main44 var9 var8 var7 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main12 var3 var2 var1 var0)) (inv_main14 (write var3 (next (getTSLL (read var3 var1))) (O_TSLL (TSLL (next (getTSLL (read var3 (next (getTSLL (read var3 var1)))))) var1 (data (getTSLL (read var3 (next (getTSLL (read var3 var1))))))))) var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main9 var3 var2 var1 var0)) (inv_main31 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) (prev (getTSLL (read var3 var1))) var0))) var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main31 var5 var4 var3 var2) (and (= nullAddr var1) (and (and (and (and (= var8 var5) (= var0 var4)) (= var7 var3)) (= var6 var2)) (= var1 (next (getTSLL (read var5 var4)))))))) (inv_main36 var8 var0 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main5 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main13 var3 var2 var1 var0 var4) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main12 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main12 var3 var2 var1 var0) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main14 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main15 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main18 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main28 var3 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main9 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main31 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main36 var3 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main34 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main40 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main40 var3 var2 var1 var0) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main46 var4 var3 var2 var1 var0) (and (not (= var0 0)) (not (is-O_TSLL (read var4 var2)))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (not (and (inv_main47 var3 var2 var1 var0 var4) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (not (and (inv_main47 var3 var2 var1 var0 var4) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main44 var3 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main42 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main39 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main52 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main57 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll-optional-2.i.smt2 b/heap-theory-benchmarks/array/dll-optional-2.i.smt2 new file mode 100644 index 00000000..c079fba5 --- /dev/null +++ b/heap-theory-benchmarks/array/dll-optional-2.i.smt2 @@ -0,0 +1,136 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (prev Addr) (opt Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr) Bool) +(declare-fun inv_main14 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr) Bool) +(declare-fun inv_main17 (Heap Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main25 (Heap Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Int) Bool) +(declare-fun inv_main54 (Heap Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main41 var2 var1 var0)) (inv_main46 var2 var1 var0 (data (getTSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main23 var3 var2 var0 var1)) (inv_main22 (write var3 var0 (O_TSLL (TSLL var1 (prev (getTSLL (read var3 var0))) (opt (getTSLL (read var3 var0))) (data (getTSLL (read var3 var0)))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap)) (or (not (and (inv_main54 var5 var2 var1) (and (and (and (= var6 var5) (= var4 var2)) (= var0 var1)) (= var3 (next (getTSLL (read var5 var1))))))) (inv_main55 var6 var4 var3)))) +(assert (forall ((var0 Heap) (var1 TSLL) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main7 var4 var2) (and (= var0 (write var4 var2 (O_TSLL (TSLL (next (getTSLL (read var4 var2))) (prev (getTSLL (read var4 var2))) (opt (getTSLL (read var4 var2))) 2)))) (= var3 var2)))) (inv_main12 (newHeap (alloc var0 (O_TSLL var1))) var3 (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap)) (or (not (and (inv_main4 var4 var1) (and (= var2 0) (and (= var0 0) (and (= var5 (write var4 var1 (O_TSLL (TSLL (next (getTSLL (read var4 var1))) nullAddr (opt (getTSLL (read var4 var1))) (data (getTSLL (read var4 var1))))))) (= var3 var1)))))) (inv_main14 var5 var3)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr)) (or (not (and (inv_main46 var9 var7 var0 var10) (and (and (not (= var1 0)) (and (= var10 2) (and (and (and (= var6 var9) (= var3 var7)) (= var2 var0)) (= var4 (opt (getTSLL (read var9 var0))))))) (and (and (and (= var5 var6) (= var8 var3)) (= var11 var2)) (or (and (= var4 var2) (= var1 1)) (and (not (= var4 var2)) (= var1 0))))))) (inv_main42 var5 var8 var11)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap)) (or (not (and (inv_main55 var6 var3 var0) (and (= var5 2) (and (and (and (= var1 var6) (= var2 var3)) (= var4 var0)) (= var5 (data (getTSLL (read var6 var3)))))))) (inv_main58 var1 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main35 var2 var1 var0)) (inv_main38 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) (opt (getTSLL (read var2 var0))) 0))) var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr)) (or (not (and (inv_main25 var6 var3 var1) (and (= var0 0) (and (= var5 0) (and (and (= var4 (write var6 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var6 var1))) (opt (getTSLL (read var6 var1))) (data (getTSLL (read var6 var1))))))) (= var2 var3)) (= var7 var1)))))) (inv_main35 var4 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main12 var2 var0 var1)) (inv_main11 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) var1 (data (getTSLL (read var2 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main42 var5 var3 var0) (and (not (= var6 nullAddr)) (and (and (and (= var4 var5) (= var1 var3)) (= var2 var0)) (= var6 (next (getTSLL (read var5 var0)))))))) (inv_main41 var4 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (and (inv_main18 var2 var1 var0) (and (not (= var1 nullAddr)) (= var3 0)))) (inv_main41 var2 var1 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 TSLL) (var3 Addr) (var4 Heap)) (or (not (and (inv_main18 var4 var3 var1) (not (= var0 0)))) (inv_main23 (newHeap (alloc var4 (O_TSLL var2))) var3 var1 (newAddr (alloc var4 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main42 var5 var3 var0) (and (not (= var1 nullAddr)) (and (= var6 nullAddr) (and (and (and (= var4 var5) (= var1 var3)) (= var2 var0)) (= var6 (next (getTSLL (read var5 var0))))))))) (inv_main54 var4 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (and (inv_main18 var2 var1 var0) (and (not (= var1 nullAddr)) (and (= var1 nullAddr) (= var3 0))))) (inv_main54 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr)) (or (not (and (inv_main58 var6 var2 var0) (and (and (not (= var4 nullAddr)) (and (and (= var7 (write var6 (opt (getTSLL (read var6 var2))) defObj)) (= var5 var2)) (= var8 var0))) (and (and (= var3 (write var7 var5 defObj)) (= var1 var5)) (= var4 var8))))) (inv_main54 var3 var4 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main55 var7 var5 var1) (and (and (not (= var6 nullAddr)) (and (not (= var0 2)) (and (and (and (= var2 var7) (= var4 var5)) (= var8 var1)) (= var0 (data (getTSLL (read var7 var5))))))) (and (and (= var3 (write var2 var4 defObj)) (= var9 var4)) (= var6 var8))))) (inv_main54 var3 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main33 var3 var2 var0 var1)) (inv_main32 (write var3 var0 (O_TSLL (TSLL (next (getTSLL (read var3 var0))) (prev (getTSLL (read var3 var0))) var1 (data (getTSLL (read var3 var0)))))) var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TSLL) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main28 var6 var3 var1) (and (and (= var0 (write var6 var1 (O_TSLL (TSLL (next (getTSLL (read var6 var1))) (prev (getTSLL (read var6 var1))) (opt (getTSLL (read var6 var1))) 2)))) (= var5 var3)) (= var4 var1)))) (inv_main33 (newHeap (alloc var0 (O_TSLL var2))) var5 var4 (newAddr (alloc var0 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main14 var1 var0)) (inv_main17 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) (opt (getTSLL (read var1 var0))) 0))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var0))) (opt (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main24 var3 var1 var0) (and (and (and (= var2 var3) (= var6 var1)) (= var4 var0)) (= var5 (next (getTSLL (read var3 var0))))))) (inv_main25 var2 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap)) (or (not (and (inv_main4 var3 var1) (and (not (= var0 0)) (and (= var4 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) nullAddr (opt (getTSLL (read var3 var1))) (data (getTSLL (read var3 var1))))))) (= var2 var1))))) (inv_main7 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (and (inv_main46 var2 var1 var0 var3) (not (= var3 2)))) (inv_main44 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Int)) (or (not (and (inv_main46 var9 var8 var1 var11) (and (and (= var3 0) (and (= var11 2) (and (and (and (= var7 var9) (= var4 var8)) (= var2 var1)) (= var5 (opt (getTSLL (read var9 var1))))))) (and (and (and (= var6 var7) (= var10 var4)) (= var0 var2)) (or (and (= var5 var2) (= var3 1)) (and (not (= var5 var2)) (= var3 0))))))) (inv_main44 var6 var10 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int)) (or (not (and (inv_main4 var4 var1) (and (not (= var5 0)) (and (= var0 0) (and (= var3 (write var4 var1 (O_TSLL (TSLL (next (getTSLL (read var4 var1))) nullAddr (opt (getTSLL (read var4 var1))) (data (getTSLL (read var4 var1))))))) (= var2 var1)))))) (inv_main13 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main22 var2 var1 var0)) (inv_main24 (write var2 (next (getTSLL (read var2 var0))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var0)))))) var0 (opt (getTSLL (read var2 (next (getTSLL (read var2 var0)))))) (data (getTSLL (read var2 (next (getTSLL (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main34 var2 var1 var0)) (inv_main37 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) (opt (getTSLL (read var2 var0))) 1))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr)) (or (not (and (inv_main25 var6 var3 var0) (and (not (= var2 0)) (and (= var5 0) (and (and (= var4 (write var6 var0 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var6 var0))) (opt (getTSLL (read var6 var0))) (data (getTSLL (read var6 var0))))))) (= var1 var3)) (= var7 var0)))))) (inv_main34 var4 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main13 var1 var0)) (inv_main16 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) (opt (getTSLL (read var1 var0))) 1))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main32 var2 var1 var0)) (inv_main18 (write var2 (opt (getTSLL (read var2 var0))) (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 (opt (getTSLL (read var2 var0)))))) (opt (getTSLL (read var2 (opt (getTSLL (read var2 var0)))))) (data (getTSLL (read var2 (opt (getTSLL (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main37 var2 var1 var0)) (inv_main18 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) var0 (data (getTSLL (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main38 var2 var1 var0)) (inv_main18 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) var0 (data (getTSLL (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main11 var2 var0) (and (= var1 (write var2 (opt (getTSLL (read var2 var0))) (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 (opt (getTSLL (read var2 var0)))))) (opt (getTSLL (read var2 (opt (getTSLL (read var2 var0)))))) (data (getTSLL (read var2 (opt (getTSLL (read var2 var0)))))))))) (= var3 var0)))) (inv_main18 var1 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap)) (or (not (and (inv_main16 var3 var1) (and (= var2 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) (prev (getTSLL (read var3 var1))) var1 (data (getTSLL (read var3 var1))))))) (= var0 var1)))) (inv_main18 var2 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap)) (or (not (and (inv_main17 var3 var2) (and (= var1 (write var3 var2 (O_TSLL (TSLL (next (getTSLL (read var3 var2))) (prev (getTSLL (read var3 var2))) var2 (data (getTSLL (read var3 var2))))))) (= var0 var2)))) (inv_main18 var1 var0 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main25 var5 var3 var1) (and (not (= var0 0)) (and (and (= var4 (write var5 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var5 var1))) (opt (getTSLL (read var5 var1))) (data (getTSLL (read var5 var1))))))) (= var2 var3)) (= var6 var1))))) (inv_main28 var4 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main7 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main12 var2 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main11 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main11 var1 var0) (not (is-O_TSLL (read var1 (opt (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main13 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main16 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main14 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main17 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main23 var3 var2 var0 var1) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main22 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main22 var2 var1 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main24 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main25 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main28 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main33 var3 var2 var0 var1) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main32 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main32 var2 var1 var0) (not (is-O_TSLL (read var2 (opt (getTSLL (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main34 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main35 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main38 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main41 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (not (and (inv_main46 var2 var1 var0 var3) (and (= var3 2) (not (is-O_TSLL (read var2 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main44 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main42 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main54 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main55 var2 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main58 var2 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll-queue-2.i.smt2 b/heap-theory-benchmarks/array/dll-queue-2.i.smt2 new file mode 100644 index 00000000..49ad33a6 --- /dev/null +++ b/heap-theory-benchmarks/array/dll-queue-2.i.smt2 @@ -0,0 +1,174 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (prev Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main101 (Heap Addr Addr Int) Bool) +(declare-fun inv_main105 (Heap Addr Addr Int) Bool) +(declare-fun inv_main108 (Heap Addr Addr Int) Bool) +(declare-fun inv_main111 (Heap Addr Addr Int) Bool) +(declare-fun inv_main113 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int) Bool) +(declare-fun inv_main121 (Heap Addr Addr Int) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr Int) Bool) +(declare-fun inv_main15 (Heap Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Addr Addr Int) Bool) +(declare-fun inv_main19 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int) Bool) +(declare-fun inv_main25 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Int) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int) Bool) +(declare-fun inv_main47 (Heap Addr Addr Int) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Int) Bool) +(declare-fun inv_main55 (Heap Addr Addr Int) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int) Bool) +(declare-fun inv_main60 (Heap Addr Addr Int) Bool) +(declare-fun inv_main63 (Heap Addr Addr Int) Bool) +(declare-fun inv_main65 (Heap Addr Addr Int) Bool) +(declare-fun inv_main70 (Heap Addr Addr Int) Bool) +(declare-fun inv_main74 (Heap Addr Addr Int) Bool) +(declare-fun inv_main77 (Heap Addr Addr Int) Bool) +(declare-fun inv_main79 (Heap Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Addr Addr Int) Bool) +(declare-fun inv_main82 (Heap Addr Addr Int) Bool) +(declare-fun inv_main84 (Heap Addr Addr Int) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int) Bool) +(declare-fun inv_main90 (Heap Addr Addr Int) Bool) +(declare-fun inv_main94 (Heap Addr Addr Int) Bool) +(declare-fun inv_main96 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main74 var2 var6 var5 var8) (and (and (and (and (= var4 var2) (= var7 var6)) (= var3 var5)) (= var0 var8)) (= var1 (next (getTSLL (read var2 var6))))))) (inv_main105 var4 var7 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main111 var2 var5 var4 var7) (and (and (and (and (= var0 var2) (= var8 var5)) (= var3 var4)) (= var6 var7)) (= var1 (next (getTSLL (read var2 var4))))))) (inv_main105 var0 var8 var1 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (inv_main12 var0 var2 var1 var3)) (inv_main14 (write var0 (next (getTSLL (read var0 var1))) (O_TSLL (TSLL (next (getTSLL (read var0 (next (getTSLL (read var0 var1)))))) var1 (data (getTSLL (read var0 (next (getTSLL (read var0 var1))))))))) var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main13 var1 var3 var2 var4 var0)) (inv_main12 (write var1 var2 (O_TSLL (TSLL var0 (prev (getTSLL (read var1 var2))) (data (getTSLL (read var1 var2)))))) var3 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main77 var0 var3 var2 var5) (and (not (= var7 nullAddr)) (and (and (and (and (= var6 var0) (= var8 var3)) (= var4 var2)) (= var1 var5)) (= var7 (next (getTSLL (read var0 var3)))))))) (inv_main82 var6 var8 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main42 var0 var2 var1 var3) (and (not (= var2 nullAddr)) (= var3 2)))) (inv_main58 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main105 var0 var2 var1 var3) (and (not (= var4 0)) (not (= var1 nullAddr))))) (inv_main108 var0 var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main45 var1 var5 var4 var7) (and (= var0 nullAddr) (and (and (and (and (= var8 var1) (= var6 var5)) (= var2 var4)) (= var3 var7)) (= var0 (next (getTSLL (read var1 var5)))))))) (inv_main51 var8 var6 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 TSLL) (var5 Int)) (or (not (and (inv_main8 var0 var2 var1 var3) (not (= var5 0)))) (inv_main13 (newHeap (alloc var0 (O_TSLL var4))) var2 var1 var3 (newAddr (alloc var0 (O_TSLL var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main8 var1 var3 var2 var4) (and (= var3 nullAddr) (and (= var4 1) (and (not (= var3 nullAddr)) (= var0 0)))))) (inv_main47 var1 var3 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main55 var0 var2 var1 var3) (not (= var3 3)))) (inv_main74 var0 var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main94 var2 var5 var4 var6) (and (not (= var7 3)) (and (and (and (and (= var1 var2) (= var8 var5)) (= var0 var4)) (= var3 var6)) (= var7 (data (getTSLL (read var2 (next (getTSLL (read var2 (next (getTSLL (read var2 (next (getTSLL (read var2 var5))))))))))))))))) (inv_main74 var1 var8 var0 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main55 var0 var2 var1 var3) (and (= var2 nullAddr) (= var3 3)))) (inv_main79 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main55 var0 var2 var1 var3) (and (not (= var2 nullAddr)) (= var3 3)))) (inv_main77 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main4 var0 var1)) (inv_main5 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) nullAddr (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int)) (or (not (and (inv_main77 var3 var5 var4 var7) (and (= var6 nullAddr) (and (and (and (and (= var0 var3) (= var1 var5)) (= var2 var4)) (= var8 var7)) (= var6 (next (getTSLL (read var3 var5)))))))) (inv_main84 var0 var1 var2 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main58 var0 var4 var3 var7) (and (= var8 nullAddr) (and (and (and (and (= var5 var0) (= var2 var4)) (= var1 var3)) (= var6 var7)) (= var8 (next (getTSLL (read var0 var4)))))))) (inv_main65 var5 var2 var1 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main94 var1 var3 var2 var5) (and (= var6 3) (and (and (and (and (= var8 var1) (= var7 var3)) (= var4 var2)) (= var0 var5)) (= var6 (data (getTSLL (read var1 (next (getTSLL (read var1 (next (getTSLL (read var1 (next (getTSLL (read var1 var3))))))))))))))))) (inv_main101 var8 var7 var4 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main18 var0 var2 var1 var3) (= var2 nullAddr))) (inv_main30 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main108 var0 var2 var1 var3) (= var3 0))) (inv_main111 var0 var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Addr)) (or (not (and (inv_main108 var10 var3 var11 var5) (and (and (not (= var4 0)) (and (not (= var5 0)) (and (and (and (and (= var6 var10) (= var1 var3)) (= var0 var11)) (= var9 var5)) (= var7 (data (getTSLL (read var10 var11))))))) (and (and (and (and (= var12 var6) (= var2 var1)) (= var13 var0)) (= var8 var9)) (or (and (<= 0 (+ var7 (- 1))) (= var4 1)) (and (not (<= 0 (+ var7 (- 1)))) (= var4 0))))))) (inv_main111 var12 var2 var13 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (and (inv_main88 var2 var4 var3 var7) (and (= var0 nullAddr) (and (and (and (and (= var6 var2) (= var5 var4)) (= var1 var3)) (= var8 var7)) (= var0 (next (getTSLL (read var2 (next (getTSLL (read var2 (next (getTSLL (read var2 var4)))))))))))))) (inv_main96 var6 var5 var1 var8)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main63 var1 var3 var2 var5) (and (= var6 nullAddr) (and (and (and (and (= var0 var1) (= var4 var3)) (= var8 var2)) (= var7 var5)) (= var6 (next (getTSLL (read var1 (next (getTSLL (read var1 var3))))))))))) (inv_main70 var0 var4 var8 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main105 var0 var2 var1 var3) (and (not (= var2 nullAddr)) (= var1 nullAddr)))) (inv_main121 var0 var2 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main105 var0 var2 var1 var4) (and (not (= var2 nullAddr)) (and (= var3 0) (not (= var1 nullAddr)))))) (inv_main121 var0 var2 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main121 var0 var5 var4 var8) (and (and (not (= var9 nullAddr)) (and (and (and (and (= var2 var0) (= var11 var5)) (= var7 var4)) (= var3 var8)) (= var6 (next (getTSLL (read var0 var5)))))) (and (and (and (= var1 (write var2 var7 defObj)) (= var9 var6)) (= var10 var7)) (= var12 var3))))) (inv_main121 var1 var9 var9 var12)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main15 var1 var5 var4 var7) (and (= var0 0) (and (and (and (= var3 (write var1 var4 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var4))) (data (getTSLL (read var1 var4))))))) (= var2 var5)) (= var6 var4)) (= var0 var7))))) (inv_main19 var3 var2 var6 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main8 var1 var3 var2 var4) (and (not (= var3 nullAddr)) (and (= var4 1) (and (not (= var3 nullAddr)) (= var0 0)))))) (inv_main45 var1 var3 var2 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main82 var2 var5 var4 var7) (and (not (= var6 nullAddr)) (and (and (and (and (= var1 var2) (= var3 var5)) (= var8 var4)) (= var0 var7)) (= var6 (next (getTSLL (read var2 (next (getTSLL (read var2 var5))))))))))) (inv_main88 var1 var3 var8 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main8 var1 var3 var2 var4) (and (= var3 nullAddr) (= var0 0)))) (inv_main39 var1 var3 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main42 var0 var2 var1 var3) (and (= var2 nullAddr) (= var3 2)))) (inv_main60 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main18 var0 var2 var1 var3) (and (= var1 nullAddr) (not (= var2 nullAddr))))) (inv_main34 var0 var2 var1 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main8 var1 var3 var2 var4) (and (not (= var4 1)) (and (not (= var3 nullAddr)) (= var0 0))))) (inv_main42 var1 var3 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main45 var0 var3 var2 var7) (and (not (= var4 nullAddr)) (and (and (and (and (= var1 var0) (= var6 var3)) (= var8 var2)) (= var5 var7)) (= var4 (next (getTSLL (read var0 var3)))))))) (inv_main42 var1 var6 var8 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main14 var0 var4 var3 var5) (and (and (and (and (= var2 var0) (= var1 var4)) (= var6 var3)) (= var7 var5)) (= var8 (next (getTSLL (read var0 var3))))))) (inv_main15 var2 var1 var8 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main18 var0 var2 var1 var3) (and (not (= var1 nullAddr)) (not (= var2 nullAddr))))) (inv_main8 var0 var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main5 var1 var3) (and (= var2 (write var1 var3 (O_TSLL (TSLL (next (getTSLL (read var1 var3))) (prev (getTSLL (read var1 var3))) 0)))) (= var0 var3)))) (inv_main8 var2 var0 var0 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main58 var1 var4 var3 var7) (and (not (= var2 nullAddr)) (and (and (and (and (= var6 var1) (= var8 var4)) (= var5 var3)) (= var0 var7)) (= var2 (next (getTSLL (read var1 var4)))))))) (inv_main63 var6 var8 var5 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr)) (or (not (and (inv_main15 var2 var4 var3 var5) (and (= var0 1) (and (not (= var0 0)) (and (and (and (= var6 (write var2 var3 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 var3))) (data (getTSLL (read var2 var3))))))) (= var7 var4)) (= var1 var3)) (= var0 var5)))))) (inv_main22 var6 var7 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main42 var0 var2 var1 var3) (not (= var3 2)))) (inv_main55 var0 var2 var1 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main63 var1 var4 var3 var6) (and (not (= var5 nullAddr)) (and (and (and (and (= var8 var1) (= var2 var4)) (= var7 var3)) (= var0 var6)) (= var5 (next (getTSLL (read var1 (next (getTSLL (read var1 var4))))))))))) (inv_main55 var8 var2 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main88 var3 var5 var4 var7) (and (not (= var0 nullAddr)) (and (and (and (and (= var1 var3) (= var2 var5)) (= var8 var4)) (= var6 var7)) (= var0 (next (getTSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 var5)))))))))))))) (inv_main94 var1 var2 var8 var6)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 var1))) (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr)) (or (not (and (inv_main15 var2 var4 var3 var5) (and (<= 0 (+ var0 (- 2))) (and (not (= var0 1)) (and (not (= var0 0)) (and (and (and (= var6 (write var2 var3 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 var3))) (data (getTSLL (read var2 var3))))))) (= var7 var4)) (= var1 var3)) (= var0 var5))))))) (inv_main25 var6 var7 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main82 var2 var4 var3 var6) (and (= var0 nullAddr) (and (and (and (and (= var1 var2) (= var5 var4)) (= var8 var3)) (= var7 var6)) (= var0 (next (getTSLL (read var2 (next (getTSLL (read var2 var4))))))))))) (inv_main90 var1 var5 var8 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr)) (or (not (and (inv_main19 var1 var3 var2 var6) (and (and (and (= var4 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) 1)))) (= var7 var3)) (= var0 var2)) (= var5 var6)))) (inv_main18 var4 var7 var0 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap)) (or (not (and (inv_main22 var1 var4 var3 var5) (and (and (and (= var7 (write var1 var3 (O_TSLL (TSLL (next (getTSLL (read var1 var3))) (prev (getTSLL (read var1 var3))) 2)))) (= var2 var4)) (= var0 var3)) (= var6 var5)))) (inv_main18 var7 var2 var0 2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr)) (or (not (and (inv_main15 var2 var4 var3 var5) (and (not (<= 0 (+ var0 (- 2)))) (and (not (= var0 1)) (and (not (= var0 0)) (and (and (and (= var6 (write var2 var3 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 var3))) (data (getTSLL (read var2 var3))))))) (= var7 var4)) (= var1 var3)) (= var0 var5))))))) (inv_main18 var6 var7 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main25 var1 var3 var2 var4) (and (and (and (= var0 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) 3)))) (= var6 var3)) (= var5 var2)) (= var7 var4)))) (inv_main18 var0 var6 var5 3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main108 var9 var3 var11 var5) (and (and (= var1 0) (and (not (= var5 0)) (and (and (and (and (= var6 var9) (= var2 var3)) (= var0 var11)) (= var8 var5)) (= var7 (data (getTSLL (read var9 var11))))))) (and (and (and (and (= var10 var6) (= var13 var2)) (= var12 var0)) (= var4 var8)) (or (and (<= 0 (+ var7 (- 1))) (= var1 1)) (and (not (<= 0 (+ var7 (- 1)))) (= var1 0))))))) (inv_main113 var10 var13 var12 var4)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main5 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main13 var1 var3 var2 var4 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main12 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main12 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main14 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main15 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main19 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main22 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main25 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main30 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main34 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main39 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main47 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main45 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main51 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main60 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main58 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main65 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main63 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main63 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var2)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main70 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main79 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main77 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main84 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main82 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main82 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var2)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main90 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main88 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main88 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var2)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main88 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 (next (getTSLL (read var0 var2))))))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main96 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main94 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main94 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var2)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main94 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 (next (getTSLL (read var0 var2))))))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main94 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 (next (getTSLL (read var0 (next (getTSLL (read var0 var2)))))))))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main101 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main74 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main108 var0 var2 var1 var3) (and (not (= var3 0)) (not (is-O_TSLL (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main113 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main111 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main121 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll-rb-sentinel-1.i.smt2 b/heap-theory-benchmarks/array/dll-rb-sentinel-1.i.smt2 new file mode 100644 index 00000000..04a0d0ef --- /dev/null +++ b/heap-theory-benchmarks/array/dll-rb-sentinel-1.i.smt2 @@ -0,0 +1,161 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (prev Addr) (colour Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main61 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main65 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main77 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Addr Addr) Bool) +(declare-fun inv_main81 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main21 var2 var3 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main34 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 TSLL) (var3 Heap) (var4 Addr)) (or (not (and (inv_main5 var3 var4) (and (= var1 (write var3 var4 (O_TSLL (TSLL (next (getTSLL (read var3 var4))) (prev (getTSLL (read var3 var4))) 1)))) (= var0 var4)))) (inv_main7 (newHeap (alloc var1 (O_TSLL var2))) var0 (newAddr (alloc var1 (O_TSLL var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main81 var4 var6 var1 var2) (and (and (and (and (= var0 var4) (= var7 var6)) (= var5 var1)) (= var8 var2)) (= var3 (next (getTSLL (read var4 var2))))))) (inv_main58 (write var0 var8 defObj) var7 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Heap)) (or (not (and (inv_main78 var9 var10 var3 var5) (and (and (and (and (and (= var8 var9) (= var4 var10)) (= var7 var3)) (= var6 var5)) (= var2 (next (getTSLL (read var9 var3))))) (and (and (and (= var12 (write var8 var7 defObj)) (= var11 var4)) (= var1 var7)) (= var0 var2))))) (inv_main58 var12 var11 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main60 var4 var7 var1 var2) (and (= var3 var0) (and (and (and (and (= var5 var4) (= var3 var7)) (= var8 var1)) (= var6 var2)) (= var0 (next (getTSLL (read var4 var2)))))))) (inv_main58 var5 var3 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main48 var2 var3 var0 var1) (and (= var3 var1) (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main58 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main58 var2 var3 var0 var1) (not (= var3 var0)))) (inv_main76 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main26 var2 var3 var0 var1)) (inv_main28 (write var2 (next (getTSLL (read var2 var1))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var1)))))) var1 (colour (getTSLL (read var2 (next (getTSLL (read var2 var1))))))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main58 var2 var3 var0 var1) (= var3 var0))) (inv_main0 var2 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main11 var3 var4 var0 var2) (and (= var4 var0) (= var1 0)))) (inv_main50 var3 var4 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main48 var2 var3 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main55 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main61 var5 var7 var0 var4) (and (not (= var8 var2)) (and (and (and (and (= var6 var5) (= var8 var7)) (= var1 var0)) (= var3 var4)) (= var2 (next (getTSLL (read var5 var4)))))))) (inv_main65 var6 var8 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main7 var1 var2 var0)) (inv_main8 (write var1 var0 (O_TSLL (TSLL var2 (prev (getTSLL (read var1 var0))) (colour (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main18 var5 var7 var0 var3) (and (not (= var6 0)) (and (and (and (= var1 (write var5 var3 (O_TSLL (TSLL var7 (prev (getTSLL (read var5 var3))) (colour (getTSLL (read var5 var3))))))) (= var2 var7)) (= var8 var0)) (= var4 var3))))) (inv_main22 var1 var2 var8 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main28 var4 var6 var1 var2) (and (and (and (and (= var3 var4) (= var8 var6)) (= var7 var1)) (= var0 var2)) (= var5 (next (getTSLL (read var4 var2))))))) (inv_main29 var3 var8 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main59 var2 var3 var0 var1) (not (= 0 (colour (getTSLL (read var2 var1))))))) (inv_main60 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main65 var2 var3 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main60 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main11 var3 var4 var0 var2) (and (not (= var4 var0)) (= var1 0)))) (inv_main48 var3 var4 var0 var0)))) +(assert (forall ((var0 Addr) (var1 TSLL) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main11 var4 var5 var0 var3) (not (= var2 0)))) (inv_main16 (newHeap (alloc var4 (O_TSLL var1))) var5 var0 var3 (newAddr (alloc var4 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main76 var2 var3 var0 var1) (not (= 0 (colour (getTSLL (read var2 var0))))))) (inv_main78 var2 var3 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main77 var6 var8 var1 var2) (and (and (and (and (= var0 var6) (= var3 var8)) (= var7 var1)) (= var4 var2)) (= var5 (next (getTSLL (read var6 var1))))))) (inv_main81 (write var0 var7 defObj) var3 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main22 var2 var3 var0 var1)) (inv_main21 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 1))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main31 var2 var3 var0 var1)) (inv_main21 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 1))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main27 var2 var3 var0 var1 var4)) (inv_main26 (write var2 var1 (O_TSLL (TSLL var4 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1)))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main32 var2 var3 var0 var1) (and (not (= var3 var1)) (= var3 (next (getTSLL (read var2 var1))))))) (inv_main11 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (and (inv_main9 var3 var5 var1) (and (and (= var2 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) (prev (getTSLL (read var3 var1))) 1)))) (= var4 var5)) (= var0 var1)))) (inv_main11 var2 var4 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main61 var5 var7 var0 var4) (and (= var8 var2) (and (and (and (and (= var6 var5) (= var8 var7)) (= var1 var0)) (= var3 var4)) (= var2 (next (getTSLL (read var5 var4)))))))) (inv_main67 var6 var8 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 var1))) (colour (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main17 var6 var7 var1 var3) (and (and (and (and (= var8 var6) (= var0 var7)) (= var5 var1)) (= var2 var3)) (= var4 (next (getTSLL (read var6 var3))))))) (inv_main18 var8 var0 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main32 var2 var3 var0 var1) (and (= var3 var1) (= var3 (next (getTSLL (read var2 var1))))))) (inv_main43 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main76 var2 var3 var0 var1) (= 0 (colour (getTSLL (read var2 var0)))))) (inv_main77 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main21 var2 var3 var0 var1) (= 1 (colour (getTSLL (read var2 var1)))))) (inv_main32 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main15 var2 var3 var0 var1)) (inv_main17 (write var2 (next (getTSLL (read var2 var1))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var1)))))) var1 (colour (getTSLL (read var2 (next (getTSLL (read var2 var1))))))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main8 var1 var2 var0)) (inv_main9 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) var2 (colour (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main32 var2 var3 var0 var1) (not (= var3 (next (getTSLL (read var2 var1))))))) (inv_main39 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main65 var2 var3 var0 var1) (= 1 (colour (getTSLL (read var2 var1)))))) (inv_main71 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 TSLL) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main23 var6 var7 var0 var3) (and (and (and (= var4 (write var6 var3 (O_TSLL (TSLL (next (getTSLL (read var6 var3))) (prev (getTSLL (read var6 var3))) 0)))) (= var8 var7)) (= var1 var0)) (= var5 var3)))) (inv_main27 (newHeap (alloc var4 (O_TSLL var2))) var8 var1 var5 (newAddr (alloc var4 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main18 var5 var6 var0 var3) (and (= var8 0) (and (and (and (= var1 (write var5 var3 (O_TSLL (TSLL var6 (prev (getTSLL (read var5 var3))) (colour (getTSLL (read var5 var3))))))) (= var2 var6)) (= var7 var0)) (= var4 var3))))) (inv_main23 var1 var2 var7 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main29 var2 var3 var0 var1)) (inv_main31 (write var2 var1 (O_TSLL (TSLL var3 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1)))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main16 var2 var4 var0 var1 var3)) (inv_main15 (write var2 var1 (O_TSLL (TSLL var3 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1)))))) var4 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main60 var4 var7 var1 var2) (and (not (= var3 var0)) (and (and (and (and (= var5 var4) (= var3 var7)) (= var8 var1)) (= var6 var2)) (= var0 (next (getTSLL (read var4 var2)))))))) (inv_main59 var5 var3 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main48 var2 var3 var0 var1) (and (not (= var3 var1)) (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main59 var2 var3 var0 var1)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main4 var0 var1)) (inv_main5 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) nullAddr (colour (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main59 var2 var3 var0 var1) (= 0 (colour (getTSLL (read var2 var1)))))) (inv_main61 var2 var3 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main5 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main7 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main8 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main9 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main16 var2 var4 var0 var1 var3) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var3 var0 var1) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main17 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main18 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main22 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main23 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main27 var2 var3 var0 var1 var4) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var3 var0 var1) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main28 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main29 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main31 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main21 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main34 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main32 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main39 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main43 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main50 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main48 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main55 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main59 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main61 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main67 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main65 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main71 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main60 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main76 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main77 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main81 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main78 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main0 var0 var2) (not (= (read var0 var1) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll-rb-sentinel-2.i.smt2 b/heap-theory-benchmarks/array/dll-rb-sentinel-2.i.smt2 new file mode 100644 index 00000000..144ae5db --- /dev/null +++ b/heap-theory-benchmarks/array/dll-rb-sentinel-2.i.smt2 @@ -0,0 +1,156 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (prev Addr) (colour Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main61 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main65 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main77 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Addr Addr) Bool) +(declare-fun inv_main81 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main29 var2 var3 var0 var1)) (inv_main31 (write var2 var1 (O_TSLL (TSLL var3 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1)))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main32 var2 var3 var0 var1) (not (= var3 (next (getTSLL (read var2 var1))))))) (inv_main39 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main32 var2 var3 var0 var1) (and (= var3 var1) (= var3 (next (getTSLL (read var2 var1))))))) (inv_main43 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main21 var2 var3 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main34 var2 var3 var0 var1)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main76 var2 var3 var0 var1) (not (= 0 (colour (getTSLL (read var2 var0))))))) (inv_main78 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main77 var5 var6 var0 var1) (and (and (and (and (= var7 var5) (= var8 var6)) (= var2 var0)) (= var4 var1)) (= var3 (next (getTSLL (read var5 var0))))))) (inv_main81 (write var7 var2 defObj) var8 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 var1))) (colour (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr)) (or (not (and (inv_main81 var6 var9 var2 var3) (and (and (not (= var11 var0)) (and (and (and (and (= var10 var6) (= var5 var9)) (= var8 var2)) (= var1 var3)) (= var12 (next (getTSLL (read var6 var3)))))) (and (and (and (= var4 (write var10 var1 defObj)) (= var11 var5)) (= var0 var12)) (= var7 var1))))) (inv_main76 var4 var11 var0 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main78 var6 var9 var1 var2) (and (not (= var12 var7)) (and (and (and (and (and (= var0 var6) (= var4 var9)) (= var10 var1)) (= var5 var2)) (= var8 (next (getTSLL (read var6 var1))))) (and (and (and (= var3 (write var0 var10 defObj)) (= var12 var4)) (= var11 var10)) (= var7 var8)))))) (inv_main76 var3 var12 var7 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main60 var4 var6 var1 var2) (and (not (= var8 var7)) (and (= var8 var5) (and (and (and (and (= var3 var4) (= var8 var6)) (= var7 var1)) (= var0 var2)) (= var5 (next (getTSLL (read var4 var2))))))))) (inv_main76 var3 var8 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main48 var2 var3 var0 var1) (and (not (= var3 var0)) (and (= var3 var1) (= 1 (colour (getTSLL (read var2 var1)))))))) (inv_main76 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main60 var4 var6 var1 var2) (and (not (= var8 var5)) (and (and (and (and (= var3 var4) (= var8 var6)) (= var7 var1)) (= var0 var2)) (= var5 (next (getTSLL (read var4 var2)))))))) (inv_main59 var3 var8 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main48 var2 var3 var0 var1) (and (not (= var3 var1)) (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main59 var2 var3 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main4 var0 var1)) (inv_main5 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) nullAddr (colour (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main17 var3 var6 var1 var2) (and (and (and (and (= var8 var3) (= var7 var6)) (= var5 var1)) (= var4 var2)) (= var0 (next (getTSLL (read var3 var2))))))) (inv_main18 var8 var7 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main26 var2 var3 var0 var1)) (inv_main28 (write var2 (next (getTSLL (read var2 var1))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var1)))))) var1 (colour (getTSLL (read var2 (next (getTSLL (read var2 var1))))))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main18 var3 var5 var0 var1) (and (= var2 0) (and (and (and (= var4 (write var3 var1 (O_TSLL (TSLL var5 (prev (getTSLL (read var3 var1))) (colour (getTSLL (read var3 var1))))))) (= var8 var5)) (= var7 var0)) (= var6 var1))))) (inv_main23 var4 var8 var7 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main11 var2 var4 var0 var1) (and (not (= var4 var0)) (= var3 0)))) (inv_main48 var2 var4 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main7 var1 var2 var0)) (inv_main8 (write var1 var0 (O_TSLL (TSLL var2 (prev (getTSLL (read var1 var0))) (colour (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main65 var2 var3 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main71 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 TSLL) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main23 var5 var7 var1 var2) (and (and (and (= var8 (write var5 var2 (O_TSLL (TSLL (next (getTSLL (read var5 var2))) (prev (getTSLL (read var5 var2))) 0)))) (= var6 var7)) (= var0 var1)) (= var3 var2)))) (inv_main27 (newHeap (alloc var8 (O_TSLL var4))) var6 var0 var3 (newAddr (alloc var8 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main27 var2 var3 var0 var1 var4)) (inv_main26 (write var2 var1 (O_TSLL (TSLL var4 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1)))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main59 var2 var3 var0 var1) (not (= 0 (colour (getTSLL (read var2 var1))))))) (inv_main60 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main65 var2 var3 var0 var1) (= 1 (colour (getTSLL (read var2 var1)))))) (inv_main60 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main21 var2 var3 var0 var1) (= 1 (colour (getTSLL (read var2 var1)))))) (inv_main32 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main16 var2 var3 var0 var1 var4)) (inv_main15 (write var2 var1 (O_TSLL (TSLL var4 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1)))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main76 var2 var3 var0 var1) (= 0 (colour (getTSLL (read var2 var0)))))) (inv_main77 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main48 var2 var3 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main55 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main11 var2 var4 var0 var1) (and (= var4 var0) (= var3 0)))) (inv_main50 var2 var4 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main61 var5 var6 var1 var2) (and (not (= var3 var7)) (and (and (and (and (= var8 var5) (= var3 var6)) (= var0 var1)) (= var4 var2)) (= var7 (next (getTSLL (read var5 var2)))))))) (inv_main65 var8 var3 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main18 var2 var4 var0 var1) (and (not (= var7 0)) (and (and (and (= var3 (write var2 var1 (O_TSLL (TSLL var4 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1))))))) (= var8 var4)) (= var6 var0)) (= var5 var1))))) (inv_main22 var3 var8 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 TSLL) (var5 Addr)) (or (not (and (inv_main11 var3 var5 var0 var1) (not (= var2 0)))) (inv_main16 (newHeap (alloc var3 (O_TSLL var4))) var5 var0 var1 (newAddr (alloc var3 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main59 var2 var3 var0 var1) (= 0 (colour (getTSLL (read var2 var1)))))) (inv_main61 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main28 var5 var7 var1 var2) (and (and (and (and (= var8 var5) (= var0 var7)) (= var3 var1)) (= var6 var2)) (= var4 (next (getTSLL (read var5 var2))))))) (inv_main29 var8 var0 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main15 var2 var3 var0 var1)) (inv_main17 (write var2 (next (getTSLL (read var2 var1))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var1)))))) var1 (colour (getTSLL (read var2 (next (getTSLL (read var2 var1))))))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main22 var2 var3 var0 var1)) (inv_main21 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 1))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main31 var2 var3 var0 var1)) (inv_main21 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 1))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main61 var5 var6 var1 var2) (and (= var3 var7) (and (and (and (and (= var8 var5) (= var3 var6)) (= var0 var1)) (= var4 var2)) (= var7 (next (getTSLL (read var5 var2)))))))) (inv_main67 var8 var3 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main8 var1 var2 var0)) (inv_main9 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) var2 (colour (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 TSLL) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap)) (or (not (and (inv_main5 var2 var3) (and (= var4 (write var2 var3 (O_TSLL (TSLL (next (getTSLL (read var2 var3))) (prev (getTSLL (read var2 var3))) 1)))) (= var1 var3)))) (inv_main7 (newHeap (alloc var4 (O_TSLL var0))) var1 (newAddr (alloc var4 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main32 var2 var3 var0 var1) (and (not (= var3 var1)) (= var3 (next (getTSLL (read var2 var1))))))) (inv_main11 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main9 var2 var4 var0) (and (and (= var1 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) 1)))) (= var3 var4)) (= var5 var0)))) (inv_main11 var1 var3 var5 var5)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main5 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main7 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main8 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main9 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main16 var2 var3 var0 var1 var4) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var3 var0 var1) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main17 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main18 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main22 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main23 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main27 var2 var3 var0 var1 var4) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var3 var0 var1) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main28 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main29 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main31 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main21 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main34 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main32 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main39 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main43 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main50 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main48 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main55 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main59 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main61 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main67 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main65 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main71 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main60 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main76 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main77 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main81 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main78 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll-reverse.i.smt2 b/heap-theory-benchmarks/array/dll-reverse.i.smt2 new file mode 100644 index 00000000..25f7e4f0 --- /dev/null +++ b/heap-theory-benchmarks/array/dll-reverse.i.smt2 @@ -0,0 +1,150 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TDLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TDLL (getTDLL TDLL)) (defObj)) + ((TDLL (next Addr) (prev Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main25 (Heap Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main63 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main65 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main68 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main69 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main77 (Heap Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main40 var0 var2 var1 var3)) (inv_main39 (write var0 var1 (O_TDLL (TDLL var3 (prev (getTDLL (read var0 var1))) (data (getTDLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main23 var0 var4 var2) (and (and (and (= var5 var0) (= var1 var4)) (= var6 var2)) (= var3 (next (getTDLL (read var0 var2))))))) (inv_main17 var5 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main16 var0 var4 var3) (and (= var1 0) (and (and (= var2 (write var0 var3 (O_TDLL (TDLL (next (getTDLL (read var0 var3))) (prev (getTDLL (read var0 var3))) 0)))) (= var6 var4)) (= var5 var3))))) (inv_main17 var2 var6 var6)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main5 var0 var3) (and (= var4 0) (and (= var1 (write var0 var3 (O_TDLL (TDLL (next (getTDLL (read var0 var3))) (prev (getTDLL (read var0 var3))) 0)))) (= var2 var3))))) (inv_main17 var1 var2 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main13 var0 var4 var1) (and (and (and (= var3 var0) (= var6 var4)) (= var5 var1)) (= var2 (next (getTDLL (read var0 var1))))))) (inv_main14 var3 var6 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main50 var0 var7 var4 var1 var5) (and (not (= var8 nullAddr)) (and (and (and (and (= var9 (write var0 var4 (O_TDLL (TDLL (next (getTDLL (read var0 var4))) var5 (data (getTDLL (read var0 var4))))))) (= var2 var7)) (= var3 var4)) (= var6 var1)) (= var8 var5))))) (inv_main48 var9 var2 var8 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main44 var0 var8 var3) (and (and (not (= var4 nullAddr)) (and (and (and (= var5 var7) (= var4 var6)) (= var9 var2)) (= var1 nullAddr))) (and (and (= var7 (write var0 var3 (O_TDLL (TDLL (next (getTDLL (read var0 var3))) (prev (getTDLL (read var0 var3))) 2)))) (= var6 var8)) (= var2 var3))))) (inv_main48 var5 var4 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main37 var0 var8 var5) (and (and (not (= var6 nullAddr)) (and (and (and (= var1 var4) (= var6 var7)) (= var9 var3)) (= var2 nullAddr))) (and (and (= var4 (write var0 (next (getTDLL (read var0 var5))) (O_TDLL (TDLL (next (getTDLL (read var0 (next (getTDLL (read var0 var5)))))) (prev (getTDLL (read var0 (next (getTDLL (read var0 var5)))))) 2)))) (= var7 var8)) (= var3 var5))))) (inv_main48 var1 var6 var6 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main17 var0 var3 var2) (and (not (= var6 nullAddr)) (and (= var1 nullAddr) (and (and (and (= var5 var0) (= var4 var3)) (= var6 var2)) (= var1 (next (getTDLL (read var0 var2))))))))) (inv_main29 var5 var4 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main17 var0 var5 var3) (and (not (= var4 nullAddr)) (and (= var6 0) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var5)) (= var4 var3)) (= var7 (next (getTDLL (read var0 var3)))))))))) (inv_main29 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main54 var0 var3 var2 var1) (and (not (= var3 nullAddr)) (= var2 nullAddr)))) (inv_main77 var0 var3 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr)) (or (not (and (inv_main77 var0 var9 var3 var1) (and (and (not (= var12 nullAddr)) (and (and (and (and (= var6 var0) (= var4 var9)) (= var11 var3)) (= var7 var1)) (= var2 (next (getTDLL (read var0 var3)))))) (and (and (and (= var10 (write var6 var4 defObj)) (= var8 var4)) (= var12 var2)) (= var5 var7))))) (inv_main77 var10 var12 var12 var5)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main4 var0 var1)) (inv_main5 (write var0 var1 (O_TDLL (TDLL (next (getTDLL (read var0 var1))) nullAddr (data (getTDLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main49 var0 var4 var2 var1 var3)) (inv_main50 (write var0 var2 (O_TDLL (TDLL var1 (prev (getTDLL (read var0 var2))) (data (getTDLL (read var0 var2)))))) var4 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr)) (or (not (and (inv_main69 var0 var9 var6 var1 var10 var5) (and (and (and (and (and (and (= var2 var0) (= var7 var9)) (= var8 var6)) (= var12 var1)) (= var3 var10)) (= var4 var5)) (= var11 (next (getTDLL (read var0 var6))))))) (inv_main68 var2 var7 var11 var12 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int)) (or (not (and (inv_main63 var0 var10 var5 var1 var11 var4) (and (not (= var6 2)) (and (and (and (and (and (and (= var3 var0) (= var2 var10)) (= var9 var5)) (= var8 var1)) (= var12 var11)) (= var7 var4)) (= var6 (data (getTDLL (read var0 var5)))))))) (inv_main68 var3 var2 var9 var8 var12 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main54 var0 var3 var2 var1) (not (= var2 nullAddr)))) (inv_main56 var0 var3 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main14 var0 var2 var1)) (inv_main16 (write var0 var1 (O_TDLL (TDLL nullAddr (prev (getTDLL (read var0 var1))) (data (getTDLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main17 var0 var6 var3) (and (not (= var5 nullAddr)) (and (not (= var4 0)) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var6)) (= var5 var3)) (= var7 (next (getTDLL (read var0 var3)))))))))) (inv_main23 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main12 var0 var3 var2 var1)) (inv_main11 (write var0 var2 (O_TDLL (TDLL var1 (prev (getTDLL (read var0 var2))) (data (getTDLL (read var0 var2)))))) var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main56 var0 var6 var3 var1) (and (= var8 2) (and (and (and (and (= var4 var0) (= var2 var6)) (= var7 var3)) (= var5 var1)) (= var8 (data (getTDLL (read var0 var3)))))))) (inv_main60 var4 var2 var7 var5 var8 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main63 var0 var10 var5 var2 var11 var4) (and (= var3 2) (and (and (and (and (and (and (= var6 var0) (= var12 var10)) (= var1 var5)) (= var9 var2)) (= var7 var11)) (= var8 var4)) (= var3 (data (getTDLL (read var0 var5)))))))) (inv_main69 var6 var12 var1 var9 var7 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main17 var0 var3 var2) (and (= var6 nullAddr) (and (= var1 nullAddr) (and (and (and (= var5 var0) (= var4 var3)) (= var6 var2)) (= var1 (next (getTDLL (read var0 var2))))))))) (inv_main31 var5 var4 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main17 var0 var5 var3) (and (= var4 nullAddr) (and (= var6 0) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var5)) (= var4 var3)) (= var7 (next (getTDLL (read var0 var3)))))))))) (inv_main31 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main17 var0 var6 var3) (and (= var5 nullAddr) (and (not (= var4 0)) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var6)) (= var5 var3)) (= var7 (next (getTDLL (read var0 var3)))))))))) (inv_main25 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main60 var0 var10 var8 var2 var11 var7) (and (or (not (= var1 2)) (= var5 1)) (and (and (and (and (and (and (= var4 var0) (= var6 var10)) (= var9 var8)) (= var12 var2)) (= var1 var11)) (= var3 var7)) (= var5 (data (getTDLL (read var0 (next (getTDLL (read var0 var8))))))))))) (inv_main63 var4 var6 var9 var12 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main56 var0 var7 var3 var1) (and (and (not (= var4 2)) (not (= var4 2))) (and (and (and (and (= var2 var0) (= var6 var7)) (= var8 var3)) (= var5 var1)) (= var4 (data (getTDLL (read var0 var3)))))))) (inv_main63 var2 var6 var8 var5 var4 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap)) (or (not (and (inv_main68 var0 var8 var6 var1 var9 var5) (and (and (and (and (and (and (= var12 var0) (= var3 var8)) (= var7 var6)) (= var10 var1)) (= var4 var9)) (= var11 var5)) (= var2 (next (getTDLL (read var0 var6))))))) (inv_main54 var12 var3 var2 var10)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main50 var0 var7 var4 var1 var5) (and (= var8 nullAddr) (and (and (and (and (= var9 (write var0 var4 (O_TDLL (TDLL (next (getTDLL (read var0 var4))) var5 (data (getTDLL (read var0 var4))))))) (= var2 var7)) (= var3 var4)) (= var6 var1)) (= var8 var5))))) (inv_main54 var9 var3 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main44 var0 var4 var2) (and (and (= var5 nullAddr) (and (and (and (= var3 var6) (= var5 var1)) (= var9 var8)) (= var7 nullAddr))) (and (and (= var6 (write var0 var2 (O_TDLL (TDLL (next (getTDLL (read var0 var2))) (prev (getTDLL (read var0 var2))) 2)))) (= var1 var4)) (= var8 var2))))) (inv_main54 var3 var7 var7 var7)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main37 var0 var6 var4) (and (and (= var9 nullAddr) (and (and (and (= var8 var1) (= var9 var7)) (= var2 var3)) (= var5 nullAddr))) (and (and (= var1 (write var0 (next (getTDLL (read var0 var4))) (O_TDLL (TDLL (next (getTDLL (read var0 (next (getTDLL (read var0 var4)))))) (prev (getTDLL (read var0 (next (getTDLL (read var0 var4)))))) 2)))) (= var7 var6)) (= var3 var4))))) (inv_main54 var8 var5 var5 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main60 var0 var10 var8 var2 var11 var7) (and (and (= var1 2) (not (= var5 1))) (and (and (and (and (and (and (= var4 var0) (= var6 var10)) (= var9 var8)) (= var12 var2)) (= var1 var11)) (= var3 var7)) (= var5 (data (getTDLL (read var0 (next (getTDLL (read var0 var8))))))))))) (inv_main65 var4 var6 var9 var12 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main56 var0 var7 var4 var2) (and (and (= var1 2) (not (= var1 2))) (and (and (and (and (= var8 var0) (= var6 var7)) (= var3 var4)) (= var5 var2)) (= var1 (data (getTDLL (read var0 var4)))))))) (inv_main65 var8 var6 var3 var5 var1 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main48 var0 var3 var2 var1)) (inv_main49 var0 var3 var2 var1 (next (getTDLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TDLL (TDLL nullAddr (prev (getTDLL (read var0 var1))) (data (getTDLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 TDLL) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main34 var0 var6 var3) (and (= var5 nullAddr) (and (and (and (= var1 var0) (= var2 var6)) (= var7 var3)) (= var5 (next (getTDLL (read var0 var3)))))))) (inv_main40 (newHeap (alloc var1 (O_TDLL var4))) var2 var7 (newAddr (alloc var1 (O_TDLL var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main41 var0 var4 var2) (and (and (and (= var5 var0) (= var1 var4)) (= var6 var2)) (= var3 (next (getTDLL (read var0 var2))))))) (inv_main42 var5 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main42 var0 var2 var1)) (inv_main44 (write var0 var1 (O_TDLL (TDLL nullAddr (prev (getTDLL (read var0 var1))) (data (getTDLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main39 var0 var2 var1)) (inv_main41 (write var0 (next (getTDLL (read var0 var1))) (O_TDLL (TDLL (next (getTDLL (read var0 (next (getTDLL (read var0 var1)))))) var1 (data (getTDLL (read var0 (next (getTDLL (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 TDLL)) (or (not (and (inv_main16 var0 var6 var4) (and (not (= var3 0)) (and (and (= var5 (write var0 var4 (O_TDLL (TDLL (next (getTDLL (read var0 var4))) (prev (getTDLL (read var0 var4))) 0)))) (= var2 var6)) (= var1 var4))))) (inv_main12 (newHeap (alloc var5 (O_TDLL var7))) var2 var1 (newAddr (alloc var5 (O_TDLL var7))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 TDLL) (var5 Int)) (or (not (and (inv_main5 var0 var3) (and (not (= var5 0)) (and (= var2 (write var0 var3 (O_TDLL (TDLL (next (getTDLL (read var0 var3))) (prev (getTDLL (read var0 var3))) 0)))) (= var1 var3))))) (inv_main12 (newHeap (alloc var2 (O_TDLL var4))) var1 var1 (newAddr (alloc var2 (O_TDLL var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main34 var0 var4 var2) (and (not (= var1 nullAddr)) (and (and (and (= var5 var0) (= var6 var4)) (= var3 var2)) (= var1 (next (getTDLL (read var0 var2)))))))) (inv_main37 var5 var6 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main29 var0 var2 var1)) (inv_main34 (write var0 var1 (O_TDLL (TDLL (next (getTDLL (read var0 var1))) (prev (getTDLL (read var0 var1))) 1))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main11 var0 var2 var1)) (inv_main13 (write var0 (next (getTDLL (read var0 var1))) (O_TDLL (TDLL (next (getTDLL (read var0 (next (getTDLL (read var0 var1)))))) var1 (data (getTDLL (read var0 (next (getTDLL (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 TDLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TDLL var1))) (newAddr (alloc var0 (O_TDLL var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main5 var0 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main12 var0 var3 var2 var1) (not (is-O_TDLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main11 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main11 var0 var2 var1) (not (is-O_TDLL (read var0 (next (getTDLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main13 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main14 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main16 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main17 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main25 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main23 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main31 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main29 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main34 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main40 var0 var2 var1 var3) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main39 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main39 var0 var2 var1) (not (is-O_TDLL (read var0 (next (getTDLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main41 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main42 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main44 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main37 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main37 var0 var2 var1) (not (is-O_TDLL (read var0 (next (getTDLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main48 var0 var3 var2 var1) (not (is-O_TDLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main49 var0 var4 var2 var1 var3) (not (is-O_TDLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main50 var0 var4 var2 var1 var3) (not (is-O_TDLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main56 var0 var3 var2 var1) (not (is-O_TDLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main60 var0 var4 var3 var1 var5 var2) (not (is-O_TDLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main60 var0 var4 var3 var1 var5 var2) (not (is-O_TDLL (read var0 (next (getTDLL (read var0 var3)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (inv_main65 var0 var4 var3 var1 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main63 var0 var4 var3 var1 var5 var2) (not (is-O_TDLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main69 var0 var4 var3 var1 var5 var2) (not (is-O_TDLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main68 var0 var4 var3 var1 var5 var2) (not (is-O_TDLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main77 var0 var3 var2 var1) (not (is-O_TDLL (read var0 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll-simple-white-blue-1.i.smt2 b/heap-theory-benchmarks/array/dll-simple-white-blue-1.i.smt2 new file mode 100644 index 00000000..1b654c10 --- /dev/null +++ b/heap-theory-benchmarks/array/dll-simple-white-blue-1.i.smt2 @@ -0,0 +1,136 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (prev Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr) Bool) +(declare-fun inv_main67 (Heap Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main12 var2 var3 var1 var0)) (inv_main11 (write var2 var1 (O_TSLL (TSLL var0 (prev (getTSLL (read var2 var1))) (data (getTSLL (read var2 var1)))))) var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main11 var1 var2 var0)) (inv_main13 (write var1 (next (getTSLL (read var1 var0))) (O_TSLL (TSLL (next (getTSLL (read var1 (next (getTSLL (read var1 var0)))))) var0 (data (getTSLL (read var1 (next (getTSLL (read var1 var0))))))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main36 var2 var5 var1 var3) (and (and (and (and (= var6 var2) (= var7 var5)) (= var0 var1)) (= var8 var3)) (= var4 (next (getTSLL (read var2 var1))))))) (inv_main38 var6 var7 var4 var8)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 var1))) (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 TSLL) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var2 var3 var1) (not (= var4 0)))) (inv_main12 (newHeap (alloc var2 (O_TSLL var0))) var3 var1 (newAddr (alloc var2 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main67 var4 var6 var3) (and (and (not (= var8 nullAddr)) (and (and (and (= var2 var4) (= var5 var6)) (= var7 var3)) (= var9 (next (getTSLL (read var4 var3)))))) (and (and (= var1 (write var2 var5 defObj)) (= var0 var5)) (= var8 var9))))) (inv_main67 var1 var8 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main47 var2 var4 var1) (and (not (= var5 nullAddr)) (and (= var3 nullAddr) (and (and (and (= var0 var2) (= var5 var4)) (= var6 var1)) (= var3 (next (getTSLL (read var2 var1))))))))) (inv_main67 var0 var5 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main55 var2 var6 var1) (and (not (= var4 nullAddr)) (and (= var5 nullAddr) (and (and (and (= var3 var2) (= var4 var6)) (= var0 var1)) (= var5 (next (getTSLL (read var2 var1))))))))) (inv_main67 var3 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main47 var2 var4 var1) (and (not (= var3 nullAddr)) (and (and (and (= var0 var2) (= var5 var4)) (= var6 var1)) (= var3 (next (getTSLL (read var2 var1)))))))) (inv_main54 var0 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main55 var2 var6 var1) (and (not (= var5 nullAddr)) (and (and (and (= var4 var2) (= var3 var6)) (= var0 var1)) (= var5 (next (getTSLL (read var2 var1)))))))) (inv_main54 var4 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main16 var1 var2 var0)) (inv_main7 (write var1 var0 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main5 var2 var3) (and (= var0 (write var2 var3 (O_TSLL (TSLL (next (getTSLL (read var2 var3))) (prev (getTSLL (read var2 var3))) 0)))) (= var1 var3)))) (inv_main7 var0 var1 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main26 var3 var5 var2) (and (= var0 0) (and (not (= var4 nullAddr)) (and (and (and (= var6 var3) (= var7 var5)) (= var1 var2)) (= var4 (next (getTSLL (read var3 var2))))))))) (inv_main30 var6 var7 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main14 var1 var2 var0)) (inv_main16 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) 0))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main37 var1 var3 var0 var2 var4)) (inv_main36 (write var1 var0 (O_TSLL (TSLL var4 (prev (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var3 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main23 var1 var2 var0)) (inv_main24 (write var1 var0 (O_TSLL (TSLL var2 (prev (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 TSLL) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main7 var3 var7 var2) (and (and (and (and (= var0 (newHeap (alloc var3 (O_TSLL var6)))) (= var8 var7)) (= var1 var2)) (= var9 (newAddr (alloc var3 (O_TSLL var6))))) (and (not (= var5 0)) (= var4 0))))) (inv_main21 var0 var8 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main42 var1 var3 var0 var2)) (inv_main45 var1 var3 var0 var2 (prev (getTSLL (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main54 var3 var4 var2) (and (= var6 1) (and (and (and (= var0 var3) (= var1 var4)) (= var5 var2)) (= var6 (data (getTSLL (read var3 var2)))))))) (inv_main55 var0 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main26 var2 var5 var1) (and (= var3 nullAddr) (and (and (and (= var6 var2) (= var0 var5)) (= var4 var1)) (= var3 (next (getTSLL (read var2 var1)))))))) (inv_main27 var6 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (or (not (and (inv_main26 var2 var4 var1) (and (not (= var7 0)) (and (not (= var3 nullAddr)) (and (and (and (= var5 var2) (= var6 var4)) (= var0 var1)) (= var3 (next (getTSLL (read var2 var1))))))))) (inv_main27 var5 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main46 var3 var4 var2) (and (= var1 1) (and (and (and (= var6 var3) (= var0 var4)) (= var5 var2)) (= var1 (data (getTSLL (read var3 var2)))))))) (inv_main47 var6 var0 var5)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main48 var2 var5 var1) (and (and (and (= var0 var2) (= var6 var5)) (= var3 var1)) (= var4 (next (getTSLL (read var2 var1))))))) (inv_main46 var0 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main44 var1 var4 var0 var3) (and (and (= var2 (write var1 var3 (O_TSLL (TSLL (next (getTSLL (read var1 var3))) var0 (data (getTSLL (read var1 var3))))))) (= var6 var4)) (= var5 var0)))) (inv_main46 var2 var6 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main40 var3 var6 var2 var5) (and (= var7 nullAddr) (and (and (and (= var0 (write var3 var2 (O_TSLL (TSLL var5 (prev (getTSLL (read var3 var2))) (data (getTSLL (read var3 var2))))))) (= var1 var6)) (= var4 var2)) (= var7 var5))))) (inv_main46 var0 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main24 var2 var4 var1) (and (and (= var5 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) nullAddr (data (getTSLL (read var2 var1))))))) (= var0 var4)) (= var3 var1)))) (inv_main46 var5 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main45 var1 var4 var0 var3 var2)) (inv_main44 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) var2 (data (getTSLL (read var1 var0)))))) var4 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main54 var2 var5 var1) (and (not (= var3 1)) (and (and (and (= var6 var2) (= var4 var5)) (= var0 var1)) (= var3 (data (getTSLL (read var2 var1)))))))) (inv_main60 var6 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main40 var4 var6 var3 var5) (and (not (= var0 nullAddr)) (and (and (and (= var1 (write var4 var3 (O_TSLL (TSLL var5 (prev (getTSLL (read var4 var3))) (data (getTSLL (read var4 var3))))))) (= var2 var6)) (= var7 var3)) (= var0 var5))))) (inv_main42 var1 var2 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main13 var2 var3 var1) (and (and (and (= var6 var2) (= var0 var3)) (= var4 var1)) (= var5 (next (getTSLL (read var2 var1))))))) (inv_main14 var6 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main21 var1 var2 var0)) (inv_main23 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) 1))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main30 var4 var6 var3) (and (and (and (= var5 var4) (= var0 var6)) (= var2 var3)) (= var1 (next (getTSLL (read var4 var3))))))) (inv_main26 var5 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main7 var2 var4 var1) (and (= var0 0) (= var3 0)))) (inv_main26 var2 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 TSLL) (var6 Heap) (var7 Addr)) (or (not (and (inv_main27 var2 var4 var1) (and (and (and (= var6 var2) (= var7 var4)) (= var3 var1)) (= var0 (next (getTSLL (read var2 var1))))))) (inv_main37 (newHeap (alloc var6 (O_TSLL var5))) var7 var3 var0 (newAddr (alloc var6 (O_TSLL var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main46 var4 var5 var3) (and (not (= var2 1)) (and (and (and (= var0 var4) (= var1 var5)) (= var6 var3)) (= var2 (data (getTSLL (read var4 var3)))))))) (inv_main48 var0 var1 var6)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main4 var0 var1)) (inv_main5 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) nullAddr (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main38 var1 var3 var0 var2)) (inv_main40 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) 1))) var3 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main5 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main12 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main11 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main11 var1 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main13 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main14 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main16 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main21 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main23 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main24 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main26 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main30 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main27 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main37 var1 var3 var0 var2 var4) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main36 var1 var3 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main38 var1 var3 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main40 var1 var3 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main42 var1 var3 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main45 var1 var4 var0 var3 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main44 var1 var3 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main46 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main48 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main47 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main54 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main60 var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main55 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main67 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll-token-1.i.smt2 b/heap-theory-benchmarks/array/dll-token-1.i.smt2 new file mode 100644 index 00000000..b252968d --- /dev/null +++ b/heap-theory-benchmarks/array/dll-token-1.i.smt2 @@ -0,0 +1,128 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (prev Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr) Bool) +(declare-fun inv_main8 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main52 var2 var1 var0) (= 1 (data (getTSLL (read var2 var0)))))) (inv_main53 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main45 var2 var1 var0) (= 2 (data (getTSLL (read var2 var0)))))) (inv_main52 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main55 var3 var2 var1) (and (and (and (= var4 var3) (= var5 var2)) (= var0 var1)) (= var6 (next (getTSLL (read var3 var1))))))) (inv_main52 (write var4 var5 defObj) var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main27 var2 var1 var0) (= 1 (data (getTSLL (read var2 var0)))))) (inv_main32 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main53 var2 var1 var0) (= 1 (data (getTSLL (read var2 var0)))))) (inv_main58 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main52 var2 var1 var0) (not (= 1 (data (getTSLL (read var2 var0))))))) (inv_main55 var2 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main33 var2 var1 var0) (= 0 (data (getTSLL (read var2 var0)))))) (inv_main34 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 TSLL) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main14 var3 var2 var0) (and (not (= var7 0)) (and (not (= nullAddr var6)) (and (and (= var1 (write var3 var0 (O_TSLL (TSLL (next (getTSLL (read var3 var0))) (prev (getTSLL (read var3 var0))) 0)))) (= var5 var2)) (= var6 var0)))))) (inv_main12 (newHeap (alloc var1 (O_TSLL var4))) var5 var6 (newAddr (alloc var1 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 TSLL)) (or (not (and (inv_main5 var2 var1) (and (not (= var3 0)) (and (= var4 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 0)))) (= var0 var1))))) (inv_main12 (newHeap (alloc var4 (O_TSLL var5))) var0 var0 (newAddr (alloc var4 (O_TSLL var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main12 var2 var1 var0 var3)) (inv_main11 (write var2 var0 (O_TSLL (TSLL var3 (prev (getTSLL (read var2 var0))) (data (getTSLL (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main23 var2 var1 var0 var3)) (inv_main22 (write var2 var0 (O_TSLL (TSLL var3 (prev (getTSLL (read var2 var0))) (data (getTSLL (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main34 var2 var1 var0) (and (and (and (= var5 var2) (= var6 var1)) (= var3 var0)) (= var4 (next (getTSLL (read var2 var0))))))) (inv_main27 var5 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap)) (or (not (and (inv_main24 var3 var2 var0) (and (not (= nullAddr var1)) (and (and (= var5 (write var3 (next (getTSLL (read var3 var0))) (O_TSLL (TSLL (next (getTSLL (read var3 (next (getTSLL (read var3 var0)))))) (prev (getTSLL (read var3 (next (getTSLL (read var3 var0)))))) 2)))) (= var1 var2)) (= var4 var0))))) (inv_main27 var5 var1 var1)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main22 var2 var1 var0)) (inv_main24 (write var2 (next (getTSLL (read var2 var0))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var0)))))) var0 (data (getTSLL (read var2 (next (getTSLL (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main27 var2 var1 var0) (not (= 1 (data (getTSLL (read var2 var0))))))) (inv_main33 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main4 var1 var0)) (inv_main5 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) nullAddr (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main32 var2 var1 var0) (not (= 1 (data (getTSLL (read var2 var0))))))) (inv_main42 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main45 var2 var1 var0) (not (= 2 (data (getTSLL (read var2 var0))))))) (inv_main49 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main40 var3 var2 var0) (and (and (and (= var1 var3) (= var5 var2)) (= var4 var0)) (= var6 (next (getTSLL (read var3 var0))))))) (inv_main45 var1 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main53 var2 var1 var0) (not (= 1 (data (getTSLL (read var2 var0))))))) (inv_main60 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main14 var2 var1 var0) (and (= nullAddr var4) (and (and (= var5 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) 0)))) (= var3 var1)) (= var4 var0))))) (inv_main18 var5 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main11 var2 var1 var0)) (inv_main13 (write var2 (next (getTSLL (read var2 var0))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var0)))))) var0 (data (getTSLL (read var2 (next (getTSLL (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 TSLL) (var5 Heap) (var6 Addr)) (or (not (and (inv_main8 var2 var1 var0) (and (and (= var5 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) 1)))) (= var6 var1)) (= var3 var0)))) (inv_main23 (newHeap (alloc var5 (O_TSLL var4))) var6 var3 (newAddr (alloc var5 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main14 var3 var2 var0) (and (= var6 0) (and (not (= nullAddr var5)) (and (and (= var1 (write var3 var0 (O_TSLL (TSLL (next (getTSLL (read var3 var0))) (prev (getTSLL (read var3 var0))) 0)))) (= var4 var2)) (= var5 var0)))))) (inv_main8 var1 var4 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap)) (or (not (and (inv_main5 var2 var1) (and (= var0 0) (and (= var4 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 0)))) (= var3 var1))))) (inv_main8 var4 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main13 var4 var3 var2) (and (and (and (= var5 var4) (= var6 var3)) (= var0 var2)) (= var1 (next (getTSLL (read var4 var2))))))) (inv_main14 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap)) (or (not (and (inv_main24 var3 var2 var0) (and (= nullAddr var1) (and (and (= var5 (write var3 (next (getTSLL (read var3 var0))) (O_TSLL (TSLL (next (getTSLL (read var3 (next (getTSLL (read var3 var0)))))) (prev (getTSLL (read var3 (next (getTSLL (read var3 var0)))))) 2)))) (= var1 var2)) (= var4 var0))))) (inv_main29 var5 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main32 var2 var1 var0) (= 1 (data (getTSLL (read var2 var0)))))) (inv_main40 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main33 var2 var1 var0) (not (= 0 (data (getTSLL (read var2 var0))))))) (inv_main36 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main5 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main12 var2 var1 var0 var3) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main11 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main11 var2 var1 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main13 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main14 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main18 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main8 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main23 var2 var1 var0 var3) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main22 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main22 var2 var1 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main24 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main24 var2 var1 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main29 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main27 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main33 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main36 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main34 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main32 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main42 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main40 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main45 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main49 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main52 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main55 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main53 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main60 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main58 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll-token-2.i.smt2 b/heap-theory-benchmarks/array/dll-token-2.i.smt2 new file mode 100644 index 00000000..eb2b3b8d --- /dev/null +++ b/heap-theory-benchmarks/array/dll-token-2.i.smt2 @@ -0,0 +1,128 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (prev Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr) Bool) +(declare-fun inv_main8 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main45 var1 var0 var2) (= 2 (data (getTSLL (read var1 var2)))))) (inv_main49 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap)) (or (not (and (inv_main24 var3 var2 var4) (and (= nullAddr var0) (and (and (= var5 (write var3 (next (getTSLL (read var3 var4))) (O_TSLL (TSLL (next (getTSLL (read var3 (next (getTSLL (read var3 var4)))))) (prev (getTSLL (read var3 (next (getTSLL (read var3 var4)))))) 2)))) (= var0 var2)) (= var1 var4))))) (inv_main29 var5 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main32 var1 var0 var2) (= 1 (data (getTSLL (read var1 var2)))))) (inv_main40 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main11 var1 var0 var2)) (inv_main13 (write var1 (next (getTSLL (read var1 var2))) (O_TSLL (TSLL (next (getTSLL (read var1 (next (getTSLL (read var1 var2)))))) var2 (data (getTSLL (read var1 (next (getTSLL (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main45 var1 var0 var2) (not (= 2 (data (getTSLL (read var1 var2))))))) (inv_main52 var1 var0 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main55 var3 var1 var4) (and (and (and (= var0 var3) (= var2 var1)) (= var6 var4)) (= var5 (next (getTSLL (read var3 var4))))))) (inv_main52 (write var0 var2 defObj) var2 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main33 var1 var0 var2) (= 0 (data (getTSLL (read var1 var2)))))) (inv_main34 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main52 var1 var0 var2) (not (= 1 (data (getTSLL (read var1 var2))))))) (inv_main55 var1 var2 var2)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main33 var1 var0 var2) (not (= 0 (data (getTSLL (read var1 var2))))))) (inv_main36 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main14 var4 var1 var5) (and (= nullAddr var3) (and (and (= var0 (write var4 var5 (O_TSLL (TSLL (next (getTSLL (read var4 var5))) (prev (getTSLL (read var4 var5))) 0)))) (= var2 var1)) (= var3 var5))))) (inv_main18 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main34 var3 var2 var5) (and (and (and (= var1 var3) (= var0 var2)) (= var6 var5)) (= var4 (next (getTSLL (read var3 var5))))))) (inv_main27 var1 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap)) (or (not (and (inv_main24 var3 var2 var4) (and (not (= nullAddr var0)) (and (and (= var5 (write var3 (next (getTSLL (read var3 var4))) (O_TSLL (TSLL (next (getTSLL (read var3 (next (getTSLL (read var3 var4)))))) (prev (getTSLL (read var3 (next (getTSLL (read var3 var4)))))) 2)))) (= var0 var2)) (= var1 var4))))) (inv_main27 var5 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main22 var1 var0 var2)) (inv_main24 (write var1 (next (getTSLL (read var1 var2))) (O_TSLL (TSLL (next (getTSLL (read var1 (next (getTSLL (read var1 var2)))))) var2 (data (getTSLL (read var1 (next (getTSLL (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main13 var3 var1 var5) (and (and (and (= var4 var3) (= var6 var1)) (= var2 var5)) (= var0 (next (getTSLL (read var3 var5))))))) (inv_main14 var4 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main53 var1 var0 var2) (= 1 (data (getTSLL (read var1 var2)))))) (inv_main58 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main23 var2 var1 var3 var0)) (inv_main22 (write var2 var3 (O_TSLL (TSLL var0 (prev (getTSLL (read var2 var3))) (data (getTSLL (read var2 var3)))))) var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main32 var1 var0 var2) (not (= 1 (data (getTSLL (read var1 var2))))))) (inv_main42 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main40 var3 var0 var5) (and (and (and (= var1 var3) (= var2 var0)) (= var6 var5)) (= var4 (next (getTSLL (read var3 var5))))))) (inv_main45 var1 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main12 var2 var0 var3 var1)) (inv_main11 (write var2 var3 (O_TSLL (TSLL var1 (prev (getTSLL (read var2 var3))) (data (getTSLL (read var2 var3)))))) var0 var3)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main4 var1 var0)) (inv_main5 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) nullAddr (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main53 var1 var0 var2) (not (= 1 (data (getTSLL (read var1 var2))))))) (inv_main60 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main27 var1 var0 var2) (= 1 (data (getTSLL (read var1 var2)))))) (inv_main32 var1 var0 var2)))) +(assert (forall ((var0 TSLL) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main14 var2 var1 var4) (and (not (= var3 0)) (and (not (= nullAddr var7)) (and (and (= var6 (write var2 var4 (O_TSLL (TSLL (next (getTSLL (read var2 var4))) (prev (getTSLL (read var2 var4))) 0)))) (= var5 var1)) (= var7 var4)))))) (inv_main12 (newHeap (alloc var6 (O_TSLL var0))) var5 var7 (newAddr (alloc var6 (O_TSLL var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TSLL) (var3 Int) (var4 Heap) (var5 Addr)) (or (not (and (inv_main5 var4 var1) (and (not (= var3 0)) (and (= var0 (write var4 var1 (O_TSLL (TSLL (next (getTSLL (read var4 var1))) (prev (getTSLL (read var4 var1))) 0)))) (= var5 var1))))) (inv_main12 (newHeap (alloc var0 (O_TSLL var2))) var5 var5 (newAddr (alloc var0 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 TSLL) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main8 var4 var1 var6) (and (and (= var5 (write var4 var6 (O_TSLL (TSLL (next (getTSLL (read var4 var6))) (prev (getTSLL (read var4 var6))) 1)))) (= var0 var1)) (= var3 var6)))) (inv_main23 (newHeap (alloc var5 (O_TSLL var2))) var0 var3 (newAddr (alloc var5 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main52 var1 var0 var2) (= 1 (data (getTSLL (read var1 var2)))))) (inv_main53 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main27 var1 var0 var2) (not (= 1 (data (getTSLL (read var1 var2))))))) (inv_main33 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int)) (or (not (and (inv_main14 var1 var0 var2) (and (= var6 0) (and (not (= nullAddr var5)) (and (and (= var4 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) 0)))) (= var3 var0)) (= var5 var2)))))) (inv_main8 var4 var3 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr)) (or (not (and (inv_main5 var2 var1) (and (= var0 0) (and (= var3 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 0)))) (= var4 var1))))) (inv_main8 var3 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main5 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main12 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main11 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main11 var1 var0 var2) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main13 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main14 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main18 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main8 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main23 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main22 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main22 var1 var0 var2) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main24 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main24 var1 var0 var2) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main29 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main27 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main33 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main36 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main34 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main32 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main42 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main40 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main45 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main49 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main52 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main55 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main53 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main60 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main58 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll2c_append_equal.i.smt2 b/heap-theory-benchmarks/array/dll2c_append_equal.i.smt2 new file mode 100644 index 00000000..d4414e7a --- /dev/null +++ b/heap-theory-benchmarks/array/dll2c_append_equal.i.smt2 @@ -0,0 +1,132 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (prev Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main35 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main58 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main69 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main70 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main74 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main77 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main89 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main93 (Heap Int Int Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main96 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main23 var1 var2 var3 var6 var5 var4 var0)) (inv_main44 (write var1 var0 (O_node (node var4 (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main61 var5 var6 var7 var0 var1 var2 var3 var4)) (inv_main62 (write var5 var4 (O_node (node (next (getnode (read var5 var4))) nullAddr (data (getnode (read var5 var4)))))) var6 var7 var0 var1 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main77 var5 var8 var9 var0 var7 var6) (and (not (= nullAddr var12)) (and (= (+ var4 1) (+ 1 var11)) (and (= var3 var12) (and (and (and (and (and (and (= var2 var5) (= var11 var8)) (= var10 var9)) (= var12 var0)) (= var1 var7)) (= var4 var6)) (= var3 (next (getnode (read var5 var7)))))))))) (inv_main89 var2 var11 var10 var12 var3 (+ var4 1) var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 node) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var6 var15 var16 var12 var11 var10 var3) (and (and (not (= nullAddr var2)) (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var6 (O_node var14)))) (= var13 var15)) (= var4 var16)) (= var7 var12)) (= var5 var11)) (= var8 var10)) (= var0 var3)) (= var9 var11)) (= var2 (newAddr (alloc var6 (O_node var14)))))) (<= 0 (+ (+ var12 (- 1)) (- 1)))))) (inv_main29 var1 var13 var4 var7 var5 var8 var0 var9 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main58 var6 var7 var8 var0 var1 var2 var3 var4 var5)) (inv_main58 var6 var7 var8 var0 var1 var2 var3 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Int) (var21 Int) (var22 node)) (or (not (and (inv_main44 var6 var19 var21 var11 var10 var9 var5) (and (and (= nullAddr var4) (and (and (and (and (and (and (and (= var3 (newHeap (alloc var7 (O_node var22)))) (= var16 var18)) (= var2 var13)) (= var0 var17)) (= var12 3)) (= var20 var13)) (= var8 var13)) (= var4 (newAddr (alloc var7 (O_node var22)))))) (and (and (and (and (and (and (= var7 (write var6 var9 (O_node (node (next (getnode (read var6 var9))) var5 (data (getnode (read var6 var9))))))) (= var18 var19)) (= var13 var21)) (= var14 var11)) (= var1 var10)) (= var17 var9)) (= var15 var5))))) (inv_main58 var3 var16 var2 var0 var12 var20 var8 var4 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main12 var1 var2 var4 var6 var5 var3 var0)) (inv_main18 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (or (not (and (inv_main74 var1 var4 var5 var0 var3 var2) (= var5 (data (getnode (read var1 var3)))))) (inv_main77 var1 var4 var5 var0 var3 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main41 var3 var14 var15 var10 var9 var8 var2 var4) (and (and (and (and (and (and (and (= var7 (write var3 var8 (O_node (node (next (getnode (read var3 var8))) var4 (data (getnode (read var3 var8))))))) (= var5 var14)) (= var6 var15)) (= var0 var10)) (= var1 var9)) (= var13 var8)) (= var12 var2)) (= var11 var4)))) (inv_main22 var7 var5 var6 (+ var0 (- 1)) var1 var11 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main38 var4 var13 var15 var9 var8 var7 var3 var5) (and (= var11 nullAddr) (and (and (and (and (and (and (and (= var12 (write var4 var5 (O_node (node var7 (prev (getnode (read var4 var5))) (data (getnode (read var4 var5))))))) (= var6 var13)) (= var0 var15)) (= var1 var9)) (= var14 var8)) (= var11 var7)) (= var2 var3)) (= var10 var5))))) (inv_main22 var12 var6 var0 (+ var1 (- 1)) var14 var10 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var2 var11 var13 var7 var6 var3 var10) (and (and (and (and (and (and (= var9 (write var2 var10 (O_node (node (next (getnode (read var2 var10))) (prev (getnode (read var2 var10))) var3)))) (= var5 var11)) (= var4 var13)) (= var12 var7)) (= var0 var6)) (= var8 var3)) (= var1 var10)))) (inv_main22 var9 var5 var4 var12 var0 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main18 var1 var2 var4 var6 var5 var3 var0)) (inv_main19 (write var1 var0 (O_node (node (next (getnode (read var1 var0))) nullAddr (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main70 var5 var6 var7 var0 var1 var2 var4 var3)) (inv_main71 (write var5 var4 (O_node (node (next (getnode (read var5 var4))) var3 (data (getnode (read var5 var4)))))) var6 var7 var0 var1 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (inv_main65 var4 var5 var6 var0 var1 var2 var3)) (inv_main67 (write var4 var3 (O_node (node (next (getnode (read var4 var3))) var3 (data (getnode (read var4 var3)))))) var5 var6 var0 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main77 var5 var8 var9 var0 var7 var6) (and (not (= var3 var12)) (and (and (and (and (and (and (= var2 var5) (= var11 var8)) (= var10 var9)) (= var12 var0)) (= var1 var7)) (= var4 var6)) (= var3 (next (getnode (read var5 var7)))))))) (inv_main74 var2 var11 var10 var12 var3 (+ var4 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main72 var5 var10 var12 var7 var0 var1 var3 var9) (and (and (and (and (and (= var4 (write var5 var7 (O_node (node (next (getnode (read var5 var7))) var3 (data (getnode (read var5 var7))))))) (= var8 var10)) (= var2 var12)) (= var13 var7)) (= var11 var0)) (= var6 var1)))) (inv_main74 var4 var8 var2 var13 var13 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Int)) (or (not (and (inv_main67 var4 var10 var13 var9 var0 var1 var3) (and (and (and (and (and (and (= var6 (write var4 var3 (O_node (node var3 (prev (getnode (read var4 var3))) (data (getnode (read var4 var3))))))) (= var12 var10)) (= var8 var13)) (= var5 var9)) (= var2 var0)) (= var7 var1)) (= var11 var3)))) (inv_main74 var6 var12 var8 var11 var11 0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (or (not (and (inv_main74 var1 var4 var5 var0 var3 var2) (not (= var5 (data (getnode (read var1 var3))))))) (inv_main96 var1 var4 var5 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main77 var5 var8 var9 var0 var7 var6) (and (not (= (+ var4 1) (+ 1 var11))) (and (= var3 var12) (and (and (and (and (and (and (= var2 var5) (= var11 var8)) (= var10 var9)) (= var12 var0)) (= var1 var7)) (= var4 var6)) (= var3 (next (getnode (read var5 var7))))))))) (inv_main96 var2 var11 var10 var12 var3 (+ var4 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main71 var5 var6 var7 var0 var1 var2 var4 var3)) (inv_main72 (write var5 var4 (O_node (node var0 (prev (getnode (read var5 var4))) (data (getnode (read var5 var4)))))) var6 var7 var0 var1 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int)) (or (not (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)) (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 node) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var5 var14 var16 var10 var9 var8 var4) (and (and (= nullAddr var2) (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var5 (O_node var3)))) (= var13 var14)) (= var12 var16)) (= var11 var10)) (= var15 var9)) (= var7 var8)) (= var0 var4)) (= var6 var9)) (= var2 (newAddr (alloc var5 (O_node var3)))))) (<= 0 (+ (+ var10 (- 1)) (- 1)))))) (inv_main32 var1 var13 var12 var11 var15 var7 var0 var6 var2 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (and (inv_main22 var1 var2 var3 var6 var5 var4 var0) (not (<= 0 (+ (+ var6 (- 1)) (- 1)))))) (inv_main23 var1 var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (inv_main66 var4 var5 var6 var0 var1 var2 var3)) (inv_main69 var4 var5 var6 var0 var1 var2 var3 (prev (getnode (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Addr) (var17 Int)) (or (not (and (inv_main36 var3 var14 var17 var8 var7 var6 var2 var12 var10) (and (and (and (and (and (and (and (and (= var11 (write var3 var10 (O_node (node (next (getnode (read var3 var10))) (prev (getnode (read var3 var10))) var12)))) (= var9 var14)) (= var1 var17)) (= var15 var8)) (= var13 var7)) (= var0 var6)) (= var16 var2)) (= var4 var12)) (= var5 var10)))) (inv_main38 var11 var9 var1 var15 var13 var0 var16 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)) (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 node) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Heap) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var6 var7 var9) (and (= nullAddr var2) (and (and (and (and (and (and (= var8 (newHeap (alloc var6 (O_node var1)))) (= var0 var7)) (= var5 var9)) (= var4 var7)) (= var10 var9)) (= var3 var9)) (= var2 (newAddr (alloc var6 (O_node var1)))))))) (inv_main15 var8 var0 var5 var4 var10 var3 var2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main62 var4 var13 var15 var7 var1 var2 var8 var11) (and (= nullAddr var3) (and (and (and (and (and (and (and (= var12 (write var4 var11 (O_node (node (next (getnode (read var4 var11))) (prev (getnode (read var4 var11))) var8)))) (= var6 var13)) (= var14 var15)) (= var3 var7)) (= var10 var1)) (= var0 var2)) (= var5 var8)) (= var9 var11))))) (inv_main65 var12 var6 var14 var3 var10 var0 var9)))) +(assert (forall ((var0 Int) (var1 node) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Heap) (var21 Int) (var22 Int)) (or (not (and (inv_main44 var4 var18 var21 var10 var9 var8 var2) (and (and (not (= nullAddr var6)) (and (and (and (and (and (and (and (= var20 (newHeap (alloc var5 (O_node var1)))) (= var22 var17)) (= var3 var11)) (= var16 var15)) (= var19 3)) (= var7 var11)) (= var13 var11)) (= var6 (newAddr (alloc var5 (O_node var1)))))) (and (and (and (and (and (and (= var5 (write var4 var8 (O_node (node (next (getnode (read var4 var8))) var2 (data (getnode (read var4 var8))))))) (= var17 var18)) (= var11 var21)) (= var12 var10)) (= var0 var9)) (= var15 var8)) (= var14 var2))))) (inv_main55 var20 var22 var3 var16 var19 var7 var13 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main36 (write var3 var0 (O_node (node (next (getnode (read var3 var0))) nullAddr (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main62 var4 var13 var15 var7 var1 var2 var8 var11) (and (not (= nullAddr var3)) (and (and (and (and (and (and (and (= var12 (write var4 var11 (O_node (node (next (getnode (read var4 var11))) (prev (getnode (read var4 var11))) var8)))) (= var6 var13)) (= var14 var15)) (= var3 var7)) (= var10 var1)) (= var0 var2)) (= var5 var8)) (= var9 var11))))) (inv_main66 var12 var6 var14 var3 var10 var0 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main38 var5 var13 var15 var11 var10 var9 var2 var6) (and (not (= var4 nullAddr)) (and (and (and (and (and (and (and (= var3 (write var5 var6 (O_node (node var9 (prev (getnode (read var5 var6))) (data (getnode (read var5 var6))))))) (= var8 var13)) (= var0 var15)) (= var14 var11)) (= var1 var10)) (= var4 var9)) (= var7 var2)) (= var12 var6))))) (inv_main41 var3 var8 var0 var14 var1 var4 var7 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 node) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var4 var6 var9) (and (not (= nullAddr var7)) (and (and (and (and (and (and (= var2 (newHeap (alloc var4 (O_node var8)))) (= var1 var6)) (= var3 var9)) (= var5 var6)) (= var10 var9)) (= var0 var9)) (= var7 (newAddr (alloc var4 (O_node var8)))))))) (inv_main12 var2 var1 var3 var5 var10 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int)) (or (not (and (inv_main89 var3 var12 var14 var8 var6 var4 var13) (and (not (= var7 var11)) (and (and (and (and (and (and (and (= var5 var3) (= var10 var12)) (= var9 var14)) (= var1 var8)) (= var0 var6)) (= var2 var4)) (= var11 var13)) (= var7 (next (getnode (read var3 var13)))))))) (inv_main93 var5 var10 var9 var1 var0 var2 var11 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Int) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Int) (var23 Int) (var24 Addr) (var25 Int)) (or (not (and (inv_main93 var7 var23 var25 var14 var9 var8 var24 var6) (and (not (= var16 var18)) (and (and (and (and (and (and (and (and (and (= var1 var7) (= var17 var23)) (= var11 var25)) (= var3 var14)) (= var5 var9)) (= var22 var8)) (= var19 var24)) (= var10 var6)) (= var21 (next (getnode (read var7 var6))))) (and (and (and (and (and (and (and (and (= var15 (write var1 var10 defObj)) (= var0 var17)) (= var20 var11)) (= var12 var3)) (= var4 var5)) (= var2 var22)) (= var18 var19)) (= var13 var10)) (= var16 var21)))))) (inv_main93 var15 var0 var20 var12 var4 var2 var18 var16)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main69 var5 var6 var7 var0 var1 var2 var4 var3)) (inv_main70 (write var5 var3 (O_node (node var4 (prev (getnode (read var5 var3))) (data (getnode (read var5 var3)))))) var6 var7 var0 var1 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main55 var5 var6 var7 var0 var1 var2 var3 var4)) (inv_main61 (write var5 var4 (O_node (node nullAddr (prev (getnode (read var5 var4))) (data (getnode (read var5 var4)))))) var6 var7 var0 var1 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main35 (write var3 var0 (O_node (node nullAddr (prev (getnode (read var3 var0))) (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main12 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main18 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main19 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main36 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main38 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main41 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main23 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main44 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main55 var5 var6 var7 var0 var1 var2 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main61 var5 var6 var7 var0 var1 var2 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main62 var5 var6 var7 var0 var1 var2 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main65 var4 var5 var6 var0 var1 var2 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main67 var4 var5 var6 var0 var1 var2 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main66 var4 var5 var6 var0 var1 var2 var3) (not (is-O_node (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main69 var5 var6 var7 var0 var1 var2 var4 var3) (not (is-O_node (read var5 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main70 var5 var6 var7 var0 var1 var2 var4 var3) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main71 var5 var6 var7 var0 var1 var2 var4 var3) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main72 var5 var6 var7 var0 var1 var2 var4 var3) (not (is-O_node (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (not (and (inv_main74 var1 var4 var5 var0 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (not (and (inv_main77 var1 var4 var5 var0 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main89 var1 var4 var6 var0 var3 var2 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main93 var2 var5 var7 var0 var4 var3 var6 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (not (inv_main96 var1 var4 var5 var0 var3 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll2c_prepend_equal.i.smt2 b/heap-theory-benchmarks/array/dll2c_prepend_equal.i.smt2 new file mode 100644 index 00000000..24400499 --- /dev/null +++ b/heap-theory-benchmarks/array/dll2c_prepend_equal.i.smt2 @@ -0,0 +1,132 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (prev Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main35 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main58 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main68 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Int Int Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Int Int Addr Addr Addr) Bool) +(declare-fun inv_main73 (Heap Int Int Addr Int Int Addr Addr Addr) Bool) +(declare-fun inv_main74 (Heap Int Int Addr Int Int Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main79 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main91 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main95 (Heap Int Int Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main98 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main23 var1 var2 var3 var6 var5 var4 var0)) (inv_main44 (write var1 var0 (O_node (node var4 (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main61 var5 var6 var7 var0 var1 var2 var3 var4)) (inv_main62 (write var5 var4 (O_node (node (next (getnode (read var5 var4))) nullAddr (data (getnode (read var5 var4)))))) var6 var7 var0 var1 var2 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int)) (or (not (and (inv_main91 var4 var10 var14 var8 var5 var9 var13) (and (not (= var2 var12)) (and (and (and (and (and (and (and (= var0 var4) (= var1 var10)) (= var6 var14)) (= var3 var8)) (= var11 var5)) (= var7 var9)) (= var12 var13)) (= var2 (next (getnode (read var4 var13)))))))) (inv_main95 var0 var1 var6 var3 var11 var7 var12 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Heap) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Int) (var24 Addr) (var25 Int)) (or (not (and (inv_main95 var8 var22 var25 var14 var9 var21 var24 var12) (and (not (= var1 var0)) (and (and (and (and (and (and (and (and (and (= var10 var8) (= var6 var22)) (= var23 var25)) (= var18 var14)) (= var20 var9)) (= var15 var21)) (= var2 var24)) (= var4 var12)) (= var19 (next (getnode (read var8 var12))))) (and (and (and (and (and (and (and (and (= var11 (write var10 var4 defObj)) (= var5 var6)) (= var3 var23)) (= var17 var18)) (= var16 var20)) (= var13 var15)) (= var0 var2)) (= var7 var4)) (= var1 var19)))))) (inv_main95 var11 var5 var3 var17 var16 var13 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 node) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var3 var14 var15 var7 var6 var5 var2) (and (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (and (= var13 (newHeap (alloc var3 (O_node var9)))) (= var16 var14)) (= var0 var15)) (= var12 var7)) (= var1 var6)) (= var8 var5)) (= var4 var2)) (= var10 var6)) (= var11 (newAddr (alloc var3 (O_node var9)))))) (<= 0 (+ (+ var7 (- 1)) (- 1)))))) (inv_main29 var13 var16 var0 var12 var1 var8 var4 var10 var11)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main58 var6 var7 var8 var0 var1 var2 var3 var4 var5)) (inv_main58 var6 var7 var8 var0 var1 var2 var3 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 node) (var22 Int)) (or (not (and (inv_main44 var6 var19 var22 var11 var10 var9 var4) (and (and (= nullAddr var3) (and (and (and (and (and (and (and (= var14 (newHeap (alloc var1 (O_node var21)))) (= var20 var2)) (= var5 var17)) (= var7 var15)) (= var16 3)) (= var8 var17)) (= var13 var17)) (= var3 (newAddr (alloc var1 (O_node var21)))))) (and (and (and (and (and (and (= var1 (write var6 var9 (O_node (node (next (getnode (read var6 var9))) var4 (data (getnode (read var6 var9))))))) (= var2 var19)) (= var17 var22)) (= var18 var11)) (= var12 var10)) (= var15 var9)) (= var0 var4))))) (inv_main58 var14 var20 var5 var7 var16 var8 var13 var3 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main12 var1 var2 var4 var6 var5 var3 var0)) (inv_main18 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main41 var6 var14 var15 var12 var11 var10 var4 var7) (and (and (and (and (and (and (and (= var2 (write var6 var10 (O_node (node (next (getnode (read var6 var10))) var7 (data (getnode (read var6 var10))))))) (= var0 var14)) (= var3 var15)) (= var13 var12)) (= var8 var11)) (= var9 var10)) (= var5 var4)) (= var1 var7)))) (inv_main22 var2 var0 var3 (+ var13 (- 1)) var8 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main38 var3 var13 var15 var7 var6 var5 var2 var4) (and (= var10 nullAddr) (and (and (and (and (and (and (and (= var0 (write var3 var4 (O_node (node var5 (prev (getnode (read var3 var4))) (data (getnode (read var3 var4))))))) (= var14 var13)) (= var11 var15)) (= var1 var7)) (= var9 var6)) (= var10 var5)) (= var8 var2)) (= var12 var4))))) (inv_main22 var0 var14 var11 (+ var1 (- 1)) var9 var12 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int)) (or (not (and (inv_main19 var3 var11 var13 var7 var6 var5 var9) (and (and (and (and (and (and (= var12 (write var3 var9 (O_node (node (next (getnode (read var3 var9))) (prev (getnode (read var3 var9))) var5)))) (= var0 var11)) (= var1 var13)) (= var8 var7)) (= var4 var6)) (= var2 var5)) (= var10 var9)))) (inv_main22 var12 var0 var1 var8 var4 var10 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main71 var6 var7 var8 var0 var1 var2 var4 var3 var5)) (inv_main72 (write var6 var4 (O_node (node var5 (prev (getnode (read var6 var4))) (data (getnode (read var6 var4)))))) var7 var8 var0 var1 var2 var4 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main18 var1 var2 var4 var6 var5 var3 var0)) (inv_main19 (write var1 var0 (O_node (node (next (getnode (read var1 var0))) nullAddr (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main79 var7 var10 var11 var0 var8 var9) (and (not (= var6 var12)) (and (and (and (and (and (and (= var4 var7) (= var5 var10)) (= var3 var11)) (= var12 var0)) (= var1 var8)) (= var2 var9)) (= var6 (next (getnode (read var7 var8)))))))) (inv_main76 var4 var5 var3 var12 var6 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int)) (or (not (and (inv_main68 var6 var8 var10 var0 var1 var2 var4) (and (and (and (and (and (= var9 (write var6 var4 (O_node (node (next (getnode (read var6 var4))) var4 (data (getnode (read var6 var4))))))) (= var11 var8)) (= var3 var10)) (= var5 var0)) (= var12 var1)) (= var7 var2)))) (inv_main76 var9 var11 var3 var5 var5 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main74 var9 var13 var14 var11 var1 var2 var5 var12 var7) (and (and (and (and (and (= var4 (write var9 var5 (O_node (node (next (getnode (read var9 var5))) var12 (data (getnode (read var9 var5))))))) (= var8 var13)) (= var3 var14)) (= var6 var11)) (= var0 var1)) (= var10 var2)))) (inv_main76 var4 var8 var3 var6 var6 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main73 var6 var7 var8 var0 var1 var2 var4 var3 var5)) (inv_main74 (write var6 var3 (O_node (node var4 (prev (getnode (read var6 var3))) (data (getnode (read var6 var3)))))) var7 var8 var0 var1 var2 var4 var3 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main62 var4 var14 var15 var9 var1 var2 var10 var13) (and (= nullAddr var11) (and (and (and (and (and (and (and (= var3 (write var4 var13 (O_node (node (next (getnode (read var4 var13))) (prev (getnode (read var4 var13))) var10)))) (= var12 var14)) (= var0 var15)) (= var11 var9)) (= var5 var1)) (= var8 var2)) (= var7 var10)) (= var6 var13))))) (inv_main67 var3 var12 var0 var6 var5 var8 var6)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main66 var5 var13 var14 var7 var1 var2 var4) (and (and (and (and (and (and (and (= var0 var5) (= var3 var13)) (= var10 var14)) (= var8 var7)) (= var12 var1)) (= var6 var2)) (= var11 var4)) (= var9 (prev (getnode (read var5 var7))))))) (inv_main71 var0 var3 var10 var11 var12 var6 var11 var9 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int)) (or (not (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)) (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap) (var9 node) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var5 var15 var16 var12 var11 var10 var2) (and (and (= nullAddr var13) (and (and (and (and (and (and (and (and (= var8 (newHeap (alloc var5 (O_node var9)))) (= var0 var15)) (= var14 var16)) (= var6 var12)) (= var1 var11)) (= var3 var10)) (= var7 var2)) (= var4 var11)) (= var13 (newAddr (alloc var5 (O_node var9)))))) (<= 0 (+ (+ var12 (- 1)) (- 1)))))) (inv_main32 var8 var0 var14 var6 var1 var3 var7 var4 var13 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (and (inv_main22 var1 var2 var3 var6 var5 var4 var0) (not (<= 0 (+ (+ var6 (- 1)) (- 1)))))) (inv_main23 var1 var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main72 var6 var7 var8 var0 var1 var2 var4 var3 var5)) (inv_main73 (write var6 var5 (O_node (node (next (getnode (read var6 var5))) var4 (data (getnode (read var6 var5)))))) var7 var8 var0 var1 var2 var4 var3 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Int) (var17 Int)) (or (not (and (inv_main36 var3 var14 var17 var9 var8 var7 var2 var12 var10) (and (and (and (and (and (and (and (and (= var15 (write var3 var10 (O_node (node (next (getnode (read var3 var10))) (prev (getnode (read var3 var10))) var12)))) (= var13 var14)) (= var0 var17)) (= var16 var9)) (= var6 var8)) (= var4 var7)) (= var1 var2)) (= var11 var12)) (= var5 var10)))) (inv_main38 var15 var13 var0 var16 var6 var4 var1 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)) (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var4 var5 var9) (and (= nullAddr var8) (and (and (and (and (and (and (= var3 (newHeap (alloc var4 (O_node var1)))) (= var6 var5)) (= var2 var9)) (= var10 var5)) (= var0 var9)) (= var7 var9)) (= var8 (newAddr (alloc var4 (O_node var1)))))))) (inv_main15 var3 var6 var2 var10 var0 var7 var8 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (inv_main67 var4 var5 var6 var0 var1 var2 var3)) (inv_main68 (write var4 var3 (O_node (node var3 (prev (getnode (read var4 var3))) (data (getnode (read var4 var3)))))) var5 var6 var0 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Heap) (var19 Int) (var20 Int) (var21 node) (var22 Int)) (or (not (and (inv_main44 var5 var19 var22 var9 var8 var7 var3) (and (and (not (= nullAddr var14)) (and (and (and (and (and (and (and (= var18 (newHeap (alloc var1 (O_node var21)))) (= var17 var2)) (= var13 var16)) (= var11 var12)) (= var6 3)) (= var20 var16)) (= var4 var16)) (= var14 (newAddr (alloc var1 (O_node var21)))))) (and (and (and (and (and (and (= var1 (write var5 var7 (O_node (node (next (getnode (read var5 var7))) var3 (data (getnode (read var5 var7))))))) (= var2 var19)) (= var16 var22)) (= var15 var9)) (= var10 var8)) (= var12 var7)) (= var0 var3))))) (inv_main55 var18 var17 var13 var11 var6 var20 var4 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main79 var7 var10 var11 var0 var8 var9) (and (not (= nullAddr var12)) (and (= (+ var3 1) (+ 1 var6)) (and (= var5 var12) (and (and (and (and (and (and (= var4 var7) (= var6 var10)) (= var2 var11)) (= var12 var0)) (= var1 var8)) (= var3 var9)) (= var5 (next (getnode (read var7 var8)))))))))) (inv_main91 var4 var6 var2 var12 var5 (+ var3 1) var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (or (not (and (inv_main76 var1 var4 var5 var0 var2 var3) (= var5 (data (getnode (read var1 var2)))))) (inv_main79 var1 var4 var5 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main36 (write var3 var0 (O_node (node (next (getnode (read var3 var0))) nullAddr (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main62 var4 var14 var15 var9 var1 var2 var10 var13) (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (= var3 (write var4 var13 (O_node (node (next (getnode (read var4 var13))) (prev (getnode (read var4 var13))) var10)))) (= var12 var14)) (= var0 var15)) (= var11 var9)) (= var5 var1)) (= var8 var2)) (= var7 var10)) (= var6 var13))))) (inv_main66 var3 var12 var0 var11 var5 var8 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int)) (or (not (and (inv_main38 var4 var13 var15 var10 var9 var8 var2 var5) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (= var14 (write var4 var5 (O_node (node var8 (prev (getnode (read var4 var5))) (data (getnode (read var4 var5))))))) (= var1 var13)) (= var3 var15)) (= var6 var10)) (= var11 var9)) (= var12 var8)) (= var7 var2)) (= var0 var5))))) (inv_main41 var14 var1 var3 var6 var11 var12 var7 var0)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int)) (or (not (and (inv_main4 var5 var6 var8) (and (not (= nullAddr var9)) (and (and (and (and (and (and (= var3 (newHeap (alloc var5 (O_node var0)))) (= var10 var6)) (= var7 var8)) (= var1 var6)) (= var4 var8)) (= var2 var8)) (= var9 (newAddr (alloc var5 (O_node var0)))))))) (inv_main12 var3 var10 var7 var1 var4 var2 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (or (not (and (inv_main76 var1 var4 var5 var0 var2 var3) (not (= var5 (data (getnode (read var1 var2))))))) (inv_main98 var1 var4 var5 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main79 var7 var10 var11 var0 var8 var9) (and (not (= (+ var3 1) (+ 1 var6))) (and (= var5 var12) (and (and (and (and (and (and (= var4 var7) (= var6 var10)) (= var2 var11)) (= var12 var0)) (= var1 var8)) (= var3 var9)) (= var5 (next (getnode (read var7 var8))))))))) (inv_main98 var4 var6 var2 var12 var5 (+ var3 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main55 var5 var6 var7 var0 var1 var2 var3 var4)) (inv_main61 (write var5 var4 (O_node (node nullAddr (prev (getnode (read var5 var4))) (data (getnode (read var5 var4)))))) var6 var7 var0 var1 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main35 (write var3 var0 (O_node (node nullAddr (prev (getnode (read var3 var0))) (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main12 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main18 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main19 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main36 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main38 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main41 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main23 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main44 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main55 var5 var6 var7 var0 var1 var2 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main61 var5 var6 var7 var0 var1 var2 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main62 var5 var6 var7 var0 var1 var2 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main67 var4 var5 var6 var0 var1 var2 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main68 var4 var5 var6 var0 var1 var2 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main66 var4 var5 var6 var0 var1 var2 var3) (not (is-O_node (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (not (and (inv_main71 var6 var7 var8 var0 var1 var2 var4 var3 var5) (not (is-O_node (read var6 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (not (and (inv_main72 var6 var7 var8 var0 var1 var2 var4 var3 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (not (and (inv_main73 var6 var7 var8 var0 var1 var2 var4 var3 var5) (not (is-O_node (read var6 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (not (and (inv_main74 var6 var7 var8 var0 var1 var2 var4 var3 var5) (not (is-O_node (read var6 var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main76 var1 var4 var5 var0 var2 var3) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main79 var1 var4 var5 var0 var2 var3) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main91 var1 var4 var6 var0 var2 var3 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main95 var1 var4 var6 var0 var2 var3 var5 var7) (not (is-O_node (read var1 var7))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (not (inv_main98 var1 var4 var5 var0 var2 var3)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll2c_prepend_unequal.i.smt2 b/heap-theory-benchmarks/array/dll2c_prepend_unequal.i.smt2 new file mode 100644 index 00000000..30a2dba5 --- /dev/null +++ b/heap-theory-benchmarks/array/dll2c_prepend_unequal.i.smt2 @@ -0,0 +1,139 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (prev Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main101 (Heap Int Int Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main104 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main35 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Int Int Int Addr Int) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main63 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main68 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main69 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main73 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main74 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main75 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main77 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main82 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main85 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main97 (Heap Int Int Addr Int Addr Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main23 var1 var2 var3 var6 var5 var4 var0)) (inv_main44 (write var1 var0 (O_node (node var4 (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main97 var7 var14 var15 var10 var4 var13 var3 var11) (and (not (= var2 var5)) (and (and (and (and (and (and (and (and (= var12 var7) (= var0 var14)) (= var6 var15)) (= var9 var10)) (= var1 var4)) (= var8 var13)) (= var16 var3)) (= var5 var11)) (= var2 (next (getnode (read var7 var11)))))))) (inv_main101 var12 var0 var6 var9 var1 var8 var16 var5 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Int) (var16 Addr) (var17 Int) (var18 Addr) (var19 Addr) (var20 Heap) (var21 Int) (var22 Int) (var23 Addr) (var24 Int) (var25 Addr) (var26 Int) (var27 Int) (var28 Int)) (or (not (and (inv_main101 var20 var15 var28 var23 var5 var13 var3 var10 var4) (and (not (= var7 var11)) (and (and (and (and (and (and (and (and (and (and (= var9 var20) (= var6 var15)) (= var26 var28)) (= var19 var23)) (= var17 var5)) (= var25 var13)) (= var24 var3)) (= var2 var10)) (= var12 var4)) (= var16 (next (getnode (read var20 var4))))) (and (and (and (and (and (and (and (and (and (= var14 (write var9 var12 defObj)) (= var0 var6)) (= var27 var26)) (= var8 var19)) (= var21 var17)) (= var1 var25)) (= var22 var24)) (= var11 var2)) (= var18 var12)) (= var7 var16)))))) (inv_main101 var14 var0 var27 var8 var21 var1 var22 var11 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main85 var3 var13 var14 var6 var2 var12 var1) (and (not (= var8 var7)) (and (and (and (and (and (and (and (= var5 var3) (= var4 var13)) (= var11 var14)) (= var7 var6)) (= var10 var2)) (= var9 var12)) (= var0 var1)) (= var8 (next (getnode (read var3 var12)))))))) (inv_main82 var5 var4 var11 var7 var10 var8 (+ var0 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main77 var8 var9 var12 var0 var5 var7) (and (and (and (and (and (and (= var4 var8) (= var6 var9)) (= var2 var12)) (= var10 var0)) (= var1 var5)) (= var11 var7)) (= var3 (next (getnode (read var8 var7))))))) (inv_main82 var4 var6 var2 var10 var1 var3 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 node) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var3 var13 var15 var7 var6 var5 var2) (and (and (not (= nullAddr var1)) (and (and (and (and (and (and (and (and (= var0 (newHeap (alloc var3 (O_node var9)))) (= var16 var13)) (= var14 var15)) (= var12 var7)) (= var8 var6)) (= var4 var5)) (= var10 var2)) (= var11 var6)) (= var1 (newAddr (alloc var3 (O_node var9)))))) (<= 0 (+ (+ var7 (- 1)) (- 1)))))) (inv_main29 var0 var16 var14 var12 var8 var4 var10 var11 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main12 var1 var2 var4 var6 var5 var3 var0)) (inv_main18 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main76 var3 var4 var5 var0 var1 var2) (= var1 (data (getnode (read var3 var2)))))) (inv_main77 var3 var4 var5 var0 var1 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main41 var4 var13 var14 var9 var8 var7 var3 var5) (and (and (and (and (and (and (and (= var6 (write var4 var7 (O_node (node (next (getnode (read var4 var7))) var5 (data (getnode (read var4 var7))))))) (= var1 var13)) (= var15 var14)) (= var11 var9)) (= var0 var8)) (= var10 var7)) (= var12 var3)) (= var2 var5)))) (inv_main22 var6 var1 var15 (+ var11 (- 1)) var0 var2 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main38 var3 var13 var15 var11 var10 var9 var2 var4) (and (= var14 nullAddr) (and (and (and (and (and (and (and (= var5 (write var3 var4 (O_node (node var9 (prev (getnode (read var3 var4))) (data (getnode (read var3 var4))))))) (= var6 var13)) (= var12 var15)) (= var8 var11)) (= var7 var10)) (= var14 var9)) (= var0 var2)) (= var1 var4))))) (inv_main22 var5 var6 var12 (+ var8 (- 1)) var7 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var5 var12 var13 var8 var7 var6 var11) (and (and (and (and (and (and (= var3 (write var5 var11 (O_node (node (next (getnode (read var5 var11))) (prev (getnode (read var5 var11))) var6)))) (= var1 var12)) (= var9 var13)) (= var10 var8)) (= var2 var7)) (= var0 var6)) (= var4 var11)))) (inv_main22 var3 var1 var9 var10 var2 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main18 var1 var2 var4 var6 var5 var3 var0)) (inv_main19 (write var1 var0 (O_node (node (next (getnode (read var1 var0))) nullAddr (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main72 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5)) (inv_main73 (write var4 var8 (O_node (node var5 (prev (getnode (read var4 var8))) (data (getnode (read var4 var8)))))) var7 var9 var0 var2 var3 var6 var8 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main73 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5)) (inv_main74 (write var4 var5 (O_node (node (next (getnode (read var4 var5))) var8 (data (getnode (read var4 var5)))))) var7 var9 var0 var2 var3 var6 var8 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main74 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5)) (inv_main75 (write var4 var1 (O_node (node var8 (prev (getnode (read var4 var1))) (data (getnode (read var4 var1)))))) var7 var9 var0 var2 var3 var6 var8 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int)) (or (not (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)) (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 node) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var4 var15 var16 var9 var8 var7 var1) (and (and (= nullAddr var11) (and (and (and (and (and (and (and (and (= var10 (newHeap (alloc var4 (O_node var5)))) (= var3 var15)) (= var0 var16)) (= var12 var9)) (= var2 var8)) (= var13 var7)) (= var14 var1)) (= var6 var8)) (= var11 (newAddr (alloc var4 (O_node var5)))))) (<= 0 (+ (+ var9 (- 1)) (- 1)))))) (inv_main32 var10 var3 var0 var12 var2 var13 var14 var6 var11 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (and (inv_main22 var1 var2 var3 var6 var5 var4 var0) (not (<= 0 (+ (+ var6 (- 1)) (- 1)))))) (inv_main23 var1 var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (and (inv_main82 var4 var5 var6 var0 var2 var3 var1) (not (= var6 (data (getnode (read var4 var3))))))) (inv_main104 var4 var5 var6 var0 var2 var3 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main85 var3 var13 var14 var6 var2 var12 var1) (and (not (= (+ var0 1) (+ 1 var4))) (and (= var8 var7) (and (and (and (and (and (and (and (= var5 var3) (= var4 var13)) (= var11 var14)) (= var7 var6)) (= var10 var2)) (= var9 var12)) (= var0 var1)) (= var8 (next (getnode (read var3 var12))))))))) (inv_main104 var5 var4 var11 var7 var10 var8 (+ var0 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (and (inv_main76 var4 var5 var6 var0 var1 var3) (not (= var1 (data (getnode (read var4 var3))))))) (inv_main104 var4 var5 var6 var0 var1 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (and (inv_main82 var4 var5 var6 var0 var2 var3 var1) (= var6 (data (getnode (read var4 var3)))))) (inv_main85 var4 var5 var6 var0 var2 var3 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int)) (or (not (and (inv_main69 var6 var12 var14 var10 var1 var5 var11 var8) (and (and (and (and (and (and (= var4 (write var6 var8 (O_node (node (next (getnode (read var6 var8))) var8 (data (getnode (read var6 var8))))))) (= var9 var12)) (= var7 var14)) (= var13 var10)) (= var3 var1)) (= var2 var5)) (= var0 var11)))) (inv_main76 var4 var9 var7 var13 var3 var13)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Heap)) (or (not (and (inv_main75 var3 var13 var14 var6 var0 var2 var12 var5 var8 var11) (and (and (and (and (and (and (= var16 (write var3 var5 (O_node (node (next (getnode (read var3 var5))) var8 (data (getnode (read var3 var5))))))) (= var9 var13)) (= var4 var14)) (= var1 var6)) (= var7 var0)) (= var15 var2)) (= var10 var12)))) (inv_main76 var16 var9 var4 var1 var7 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main56 var4 var7 var8 var0 var1 var3 var6 var5 var2)) (inv_main62 (write var4 var2 (O_node (node nullAddr (prev (getnode (read var4 var2))) (data (getnode (read var4 var2)))))) var7 var8 var0 var1 var3 var6 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main67 var4 var13 var16 var6 var1 var3 var12 var5) (and (and (and (and (and (and (and (and (= var0 var4) (= var15 var13)) (= var11 var16)) (= var14 var6)) (= var8 var1)) (= var9 var3)) (= var7 var12)) (= var2 var5)) (= var10 (prev (getnode (read var4 var6))))))) (inv_main72 var0 var15 var11 var2 var8 var9 var7 var2 var10 var14)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Int) (var16 Addr) (var17 Int)) (or (not (and (inv_main36 var1 var15 var17 var7 var6 var5 var0 var12 var9) (and (and (and (and (and (and (and (and (= var14 (write var1 var9 (O_node (node (next (getnode (read var1 var9))) (prev (getnode (read var1 var9))) var12)))) (= var13 var15)) (= var11 var17)) (= var3 var7)) (= var2 var6)) (= var4 var5)) (= var16 var0)) (= var8 var12)) (= var10 var9)))) (inv_main38 var14 var13 var11 var3 var2 var4 var16 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)) (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 node) (var10 Int)) (or (not (and (inv_main4 var7 var8 var10) (and (= nullAddr var6) (and (and (and (and (and (and (= var4 (newHeap (alloc var7 (O_node var9)))) (= var2 var8)) (= var0 var10)) (= var3 var8)) (= var5 var10)) (= var1 var10)) (= var6 (newAddr (alloc var7 (O_node var9)))))))) (inv_main15 var4 var2 var0 var3 var5 var1 var6 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main63 var6 var15 var17 var10 var3 var5 var14 var7 var12) (and (= nullAddr var4) (and (and (and (and (and (and (and (and (= var0 (write var6 var12 (O_node (node (next (getnode (read var6 var12))) (prev (getnode (read var6 var12))) var7)))) (= var16 var15)) (= var2 var17)) (= var4 var10)) (= var8 var3)) (= var11 var5)) (= var13 var14)) (= var1 var7)) (= var9 var12))))) (inv_main68 var0 var16 var2 var9 var8 var11 var13 var9)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main63 var6 var15 var17 var10 var3 var5 var14 var7 var12) (and (not (= nullAddr var4)) (and (and (and (and (and (and (and (and (= var0 (write var6 var12 (O_node (node (next (getnode (read var6 var12))) (prev (getnode (read var6 var12))) var7)))) (= var16 var15)) (= var2 var17)) (= var4 var10)) (= var8 var3)) (= var11 var5)) (= var13 var14)) (= var1 var7)) (= var9 var12))))) (inv_main67 var0 var16 var2 var4 var8 var11 var13 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main85 var3 var13 var14 var6 var2 var12 var1) (and (not (= nullAddr var7)) (and (= (+ var0 1) (+ 1 var4)) (and (= var8 var7) (and (and (and (and (and (and (and (= var5 var3) (= var4 var13)) (= var11 var14)) (= var7 var6)) (= var10 var2)) (= var9 var12)) (= var0 var1)) (= var8 (next (getnode (read var3 var12)))))))))) (inv_main97 var5 var4 var11 var7 var10 var8 (+ var0 1) var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main36 (write var3 var0 (O_node (node (next (getnode (read var3 var0))) nullAddr (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main68 var3 var5 var7 var0 var1 var2 var4 var6)) (inv_main69 (write var3 var6 (O_node (node var6 (prev (getnode (read var3 var6))) (data (getnode (read var3 var6)))))) var5 var7 var0 var1 var2 var4 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main38 var2 var13 var15 var7 var6 var5 var1 var3) (and (not (= var11 nullAddr)) (and (and (and (and (and (and (and (= var12 (write var2 var3 (O_node (node var5 (prev (getnode (read var2 var3))) (data (getnode (read var2 var3))))))) (= var0 var13)) (= var8 var15)) (= var4 var7)) (= var14 var6)) (= var11 var5)) (= var9 var1)) (= var10 var3))))) (inv_main41 var12 var0 var8 var4 var14 var11 var9 var10)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 node) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var6 var8 var10) (and (not (= nullAddr var1)) (and (and (and (and (and (and (= var0 (newHeap (alloc var6 (O_node var2)))) (= var7 var8)) (= var9 var10)) (= var5 var8)) (= var4 var10)) (= var3 var10)) (= var1 (newAddr (alloc var6 (O_node var2)))))))) (inv_main12 var0 var7 var9 var5 var4 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 node) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Int) (var18 Addr) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 Int)) (or (not (and (inv_main44 var9 var22 var23 var14 var13 var12 var7) (and (and (not (= nullAddr var10)) (and (and (and (and (and (and (and (and (= var5 (newHeap (alloc var0 (O_node var4)))) (= var8 var2)) (= var16 var17)) (= var15 var20)) (= var6 5)) (= var11 3)) (= var21 5)) (= var19 5)) (= var10 (newAddr (alloc var0 (O_node var4)))))) (and (and (and (and (and (and (= var0 (write var9 var12 (O_node (node (next (getnode (read var9 var12))) var7 (data (getnode (read var9 var12))))))) (= var2 var22)) (= var17 var23)) (= var1 var14)) (= var3 var13)) (= var20 var12)) (= var18 var7))))) (inv_main56 var5 var8 var16 var15 var6 var11 var21 var19 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main62 var4 var7 var8 var0 var1 var3 var6 var5 var2)) (inv_main63 (write var4 var2 (O_node (node (next (getnode (read var4 var2))) nullAddr (data (getnode (read var4 var2)))))) var7 var8 var0 var1 var3 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int)) (or (not (inv_main59 var5 var8 var9 var0 var2 var4 var7 var6 var3 var1)) (inv_main59 var5 var8 var9 var0 var2 var4 var7 var6 var3 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 node) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Int)) (or (not (and (inv_main44 var14 var21 var22 var17 var16 var15 var13) (and (and (= nullAddr var12) (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var1 (O_node var6)))) (= var3 var5)) (= var4 var18)) (= var8 var20)) (= var2 5)) (= var10 3)) (= var23 5)) (= var9 5)) (= var12 (newAddr (alloc var1 (O_node var6)))))) (and (and (and (and (and (and (= var1 (write var14 var15 (O_node (node (next (getnode (read var14 var15))) var13 (data (getnode (read var14 var15))))))) (= var5 var21)) (= var18 var22)) (= var0 var17)) (= var7 var16)) (= var20 var15)) (= var19 var13))))) (inv_main59 var11 var3 var4 var8 var2 var10 var23 var9 var12 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main35 (write var3 var0 (O_node (node nullAddr (prev (getnode (read var3 var0))) (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main12 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main18 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main19 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main36 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main38 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main41 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main23 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main44 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main56 var4 var7 var8 var0 var1 var3 var6 var5 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main62 var4 var7 var8 var0 var1 var3 var6 var5 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main63 var4 var7 var8 var0 var1 var3 var6 var5 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main68 var3 var5 var7 var0 var1 var2 var4 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main69 var3 var5 var7 var0 var1 var2 var4 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main67 var3 var5 var7 var0 var1 var2 var4 var6) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main72 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5) (not (is-O_node (read var4 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main73 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5) (not (is-O_node (read var4 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main74 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main75 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5) (not (is-O_node (read var4 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int)) (not (and (inv_main76 var3 var4 var5 var0 var1 var2) (not (is-O_node (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int)) (not (and (inv_main77 var3 var4 var5 var0 var1 var2) (not (is-O_node (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main82 var4 var5 var6 var0 var2 var3 var1) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main85 var4 var5 var6 var0 var2 var3 var1) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main97 var5 var6 var7 var0 var3 var4 var2 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (not (and (inv_main101 var6 var7 var8 var0 var4 var5 var2 var1 var3) (not (is-O_node (read var6 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (inv_main104 var4 var5 var6 var0 var2 var3 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll2c_remove_all.i.smt2 b/heap-theory-benchmarks/array/dll2c_remove_all.i.smt2 new file mode 100644 index 00000000..f5fd998a --- /dev/null +++ b/heap-theory-benchmarks/array/dll2c_remove_all.i.smt2 @@ -0,0 +1,99 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (prev Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main35 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main47 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main58 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main56 var3 var4 var6 var0 var1 var5 var2)) (inv_main58 var3 var4 var6 var0 var1 var5 var2 (prev (getnode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main23 var1 var2 var3 var6 var5 var4 var0)) (inv_main44 (write var1 var0 (O_node (node var4 (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 node) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var5 var14 var16 var10 var9 var8 var2) (and (and (not (= nullAddr var13)) (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var5 (O_node var3)))) (= var11 var14)) (= var6 var16)) (= var7 var10)) (= var4 var9)) (= var12 var8)) (= var0 var2)) (= var15 var9)) (= var13 (newAddr (alloc var5 (O_node var3)))))) (<= 0 (+ (+ var10 (- 1)) (- 1)))))) (inv_main29 var1 var11 var6 var7 var4 var12 var0 var15 var13)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main58 var4 var5 var7 var0 var1 var6 var3 var2)) (inv_main59 (write var4 var3 (O_node (node (next (getnode (read var4 var3))) var2 (data (getnode (read var4 var3)))))) var5 var7 var0 var1 var6 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr)) (or (not (and (inv_main51 var5 var7 var11 var0 var3 var9) (and (not (= var8 var12)) (and (and (and (and (and (and (= var10 var5) (= var1 var7)) (= var6 var11)) (= var12 var0)) (= var4 var3)) (= var2 var9)) (= var8 (next (getnode (read var5 var0)))))))) (inv_main56 var10 var1 var6 var12 var4 var2 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main12 var1 var2 var4 var6 var5 var3 var0)) (inv_main18 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Heap) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 Int)) (or (not (and (inv_main59 var7 var19 var23 var13 var4 var12 var17 var5) (and (and (and (and (and (and (and (and (= var14 (write var7 var5 (O_node (node var17 (prev (getnode (read var7 var5))) (data (getnode (read var7 var5))))))) (= var21 var19)) (= var18 var23)) (= var3 var13)) (= var0 var4)) (= var22 var12)) (= var11 var17)) (= var8 var5)) (and (and (and (and (and (and (and (= var1 (write var14 var3 defObj)) (= var10 var21)) (= var15 var18)) (= var20 var3)) (= var2 var0)) (= var6 var22)) (= var9 var11)) (= var16 var8))))) (inv_main47 var1 var10 var15 var9 (+ var2 1))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Heap) (var20 Int) (var21 Int) (var22 Int) (var23 Addr) (var24 Int) (var25 Int)) (or (not (and (inv_main51 var8 var22 var25 var14 var3 var11) (and (and (and (= var5 var23) (and (and (and (and (and (and (= var19 var8) (= var15 var22)) (= var21 var25)) (= var23 var14)) (= var16 var3)) (= var0 var11)) (= var5 (next (getnode (read var8 var14)))))) (and (and (and (and (and (and (= var4 (write var19 var23 defObj)) (= var10 var15)) (= var20 var21)) (= var7 var23)) (= var12 var16)) (= var24 var0)) (= var17 var5))) (and (and (and (and (and (= var2 var4) (= var18 var10)) (= var9 var20)) (= var1 nullAddr)) (= var6 var12)) (= var13 var24))))) (inv_main47 var2 var18 var9 var1 (+ var6 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int)) (or (not (and (inv_main44 var4 var11 var13 var8 var7 var6 var3) (and (and (and (and (and (and (= var5 (write var4 var6 (O_node (node (next (getnode (read var4 var6))) var3 (data (getnode (read var4 var6))))))) (= var0 var11)) (= var1 var13)) (= var10 var8)) (= var2 var7)) (= var12 var6)) (= var9 var3)))) (inv_main47 var5 var0 var1 var12 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main41 var4 var14 var15 var9 var8 var7 var3 var5) (and (and (and (and (and (and (and (= var13 (write var4 var7 (O_node (node (next (getnode (read var4 var7))) var5 (data (getnode (read var4 var7))))))) (= var10 var14)) (= var0 var15)) (= var12 var9)) (= var6 var8)) (= var11 var7)) (= var2 var3)) (= var1 var5)))) (inv_main22 var13 var10 var0 (+ var12 (- 1)) var6 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main38 var3 var13 var15 var8 var7 var6 var1 var4) (and (= var0 nullAddr) (and (and (and (and (and (and (and (= var5 (write var3 var4 (O_node (node var6 (prev (getnode (read var3 var4))) (data (getnode (read var3 var4))))))) (= var9 var13)) (= var12 var15)) (= var2 var8)) (= var11 var7)) (= var0 var6)) (= var14 var1)) (= var10 var4))))) (inv_main22 var5 var9 var12 (+ var2 (- 1)) var11 var10 var14)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var3 var12 var13 var6 var5 var4 var9) (and (and (and (and (and (and (= var8 (write var3 var9 (O_node (node (next (getnode (read var3 var9))) (prev (getnode (read var3 var9))) var4)))) (= var7 var12)) (= var11 var13)) (= var0 var6)) (= var1 var5)) (= var2 var4)) (= var10 var9)))) (inv_main22 var8 var7 var11 var0 var1 var10 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main18 var1 var2 var4 var6 var5 var3 var0)) (inv_main19 (write var1 var0 (O_node (node (next (getnode (read var1 var0))) nullAddr (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main47 var2 var3 var4 var0 var1) (<= 0 (+ (+ var3 (* (- 1) var1)) (- 1))))) (inv_main51 var2 var3 var4 var0 var1 3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int)) (or (not (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)) (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 node) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Int)) (or (not (and (inv_main22 var5 var12 var14 var8 var7 var6 var3) (and (and (= nullAddr var2) (and (and (and (and (and (and (and (and (= var15 (newHeap (alloc var5 (O_node var10)))) (= var4 var12)) (= var16 var14)) (= var0 var8)) (= var1 var7)) (= var13 var6)) (= var9 var3)) (= var11 var7)) (= var2 (newAddr (alloc var5 (O_node var10)))))) (<= 0 (+ (+ var8 (- 1)) (- 1)))))) (inv_main32 var15 var4 var16 var0 var1 var13 var9 var11 var2 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (and (inv_main22 var1 var2 var3 var6 var5 var4 var0) (not (<= 0 (+ (+ var6 (- 1)) (- 1)))))) (inv_main23 var1 var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Int)) (or (not (and (inv_main36 var4 var16 var17 var9 var8 var7 var2 var12 var10) (and (and (and (and (and (and (and (and (= var6 (write var4 var10 (O_node (node (next (getnode (read var4 var10))) (prev (getnode (read var4 var10))) var12)))) (= var14 var16)) (= var11 var17)) (= var13 var9)) (= var0 var8)) (= var1 var7)) (= var15 var2)) (= var3 var12)) (= var5 var10)))) (inv_main38 var6 var14 var11 var13 var0 var1 var15 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)) (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 node) (var7 Int) (var8 Addr) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var4 var5 var9) (and (= nullAddr var8) (and (and (and (and (and (and (= var3 (newHeap (alloc var4 (O_node var6)))) (= var0 var5)) (= var10 var9)) (= var2 var5)) (= var1 var9)) (= var7 var9)) (= var8 (newAddr (alloc var4 (O_node var6)))))))) (inv_main15 var3 var0 var10 var2 var1 var7 var8 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main36 (write var3 var0 (O_node (node (next (getnode (read var3 var0))) nullAddr (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main47 var2 var3 var4 var0 var1) (and (not (= nullAddr var0)) (not (<= 0 (+ (+ var3 (* (- 1) var1)) (- 1))))))) (inv_main65 var2 var3 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int)) (or (not (and (inv_main38 var4 var13 var15 var10 var9 var8 var2 var5) (and (not (= var11 nullAddr)) (and (and (and (and (and (and (and (= var14 (write var4 var5 (O_node (node var8 (prev (getnode (read var4 var5))) (data (getnode (read var4 var5))))))) (= var0 var13)) (= var3 var15)) (= var7 var10)) (= var6 var9)) (= var11 var8)) (= var12 var2)) (= var1 var5))))) (inv_main41 var14 var0 var3 var7 var6 var11 var12 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 node) (var10 Int)) (or (not (and (inv_main4 var3 var6 var10) (and (not (= nullAddr var0)) (and (and (and (and (and (and (= var1 (newHeap (alloc var3 (O_node var9)))) (= var5 var6)) (= var8 var10)) (= var4 var6)) (= var2 var10)) (= var7 var10)) (= var0 (newAddr (alloc var3 (O_node var9)))))))) (inv_main12 var1 var5 var8 var4 var2 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main35 (write var3 var0 (O_node (node nullAddr (prev (getnode (read var3 var0))) (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main12 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main18 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main19 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main36 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main38 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main41 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main23 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main44 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main51 var2 var3 var5 var0 var1 var4) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main56 var3 var4 var6 var0 var1 var5 var2) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main58 var4 var5 var7 var0 var1 var6 var3 var2) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main59 var4 var5 var7 var0 var1 var6 var3 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (not (inv_main65 var2 var3 var4 var0 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll2c_update_all.i.smt2 b/heap-theory-benchmarks/array/dll2c_update_all.i.smt2 new file mode 100644 index 00000000..054dd6a6 --- /dev/null +++ b/heap-theory-benchmarks/array/dll2c_update_all.i.smt2 @@ -0,0 +1,112 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (prev Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main35 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main57 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main70 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main78 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main82 (Heap Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main85 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main49 var4 var2 var1 var0 var3) (not (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1)))))) (inv_main61 var4 var2 var1 var0 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Heap)) (or (not (and (inv_main70 var6 var9 var8 var7 var11 var3 var4 var12) (and (= var13 var2) (and (and (and (and (and (and (= var14 var6) (= var0 var9)) (= var1 var8)) (= var10 var7)) (= var5 var11)) (= var13 var3)) (= var2 (data (getnode (read var6 var4)))))))) (inv_main61 var14 var0 var1 var10 (+ var5 1))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main57 var4 var13 var10 var9 var14 var18 var0 var12 var15) (and (not (<= 0 (+ (+ var16 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (and (= var7 var4) (= var2 var13)) (= var8 var10)) (= var1 var9)) (= var11 var14)) (= var3 var18)) (= var6 var0)) (= var17 var12)) (= var16 var15)) (= var5 (next (getnode (read var4 var0)))))))) (inv_main56 var7 var2 var8 var1 var11 var3 var5 var17 (+ var16 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main49 var4 var2 var1 var0 var3) (and (not (<= 0 (+ var3 (- 1)))) (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1)))))) (inv_main56 var4 var2 var1 var0 var3 (+ var3 var2) var0 (+ var3 var2) var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap)) (or (not (inv_main15 var7 var4 var1 var3 var6 var0 var2 var5)) (inv_main15 var7 var4 var1 var3 var6 var0 var2 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Heap) (var8 Int) (var9 Int) (var10 node)) (or (not (and (inv_main4 var7 var4 var2) (and (= nullAddr var1) (and (and (and (and (and (and (= var6 (newHeap (alloc var7 (O_node var10)))) (= var9 var4)) (= var0 var2)) (= var5 var4)) (= var8 var2)) (= var3 var2)) (= var1 (newAddr (alloc var7 (O_node var10)))))))) (inv_main15 var6 var9 var0 var5 var8 var3 var1 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (inv_main29 var8 var3 var0 var2 var7 var1 var5 var6 var4)) (inv_main35 (write var8 var4 (O_node (node nullAddr (prev (getnode (read var8 var4))) (data (getnode (read var8 var4)))))) var3 var0 var2 var7 var1 var5 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 node) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var2 var9 var5 var8 var13 var6 var10) (and (and (not (= nullAddr var12)) (and (and (and (and (and (and (and (and (= var14 (newHeap (alloc var2 (O_node var7)))) (= var1 var9)) (= var4 var5)) (= var3 var8)) (= var15 var13)) (= var0 var6)) (= var11 var10)) (= var16 var13)) (= var12 (newAddr (alloc var2 (O_node var7)))))) (<= 0 (+ (+ var8 (- 1)) (- 1)))))) (inv_main29 var14 var1 var4 var3 var15 var0 var11 var16 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (or (not (inv_main12 var6 var4 var1 var3 var5 var0 var2)) (inv_main18 (write var6 var2 (O_node (node nullAddr (prev (getnode (read var6 var2))) (data (getnode (read var6 var2)))))) var4 var1 var3 var5 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Heap)) (or (not (and (inv_main78 var12 var6 var2 var1 var7 var0) (and (not (= var8 var11)) (and (and (and (and (and (and (= var10 var12) (= var4 var6)) (= var3 var2)) (= var5 var1)) (= var9 var7)) (= var11 var0)) (= var8 (next (getnode (read var12 var0)))))))) (inv_main82 var10 var4 var3 var5 var9 var11 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Addr) (var19 Int) (var20 Heap) (var21 Int) (var22 Int)) (or (not (and (inv_main82 var8 var15 var12 var10 var17 var2 var14) (and (not (= var1 var9)) (and (and (and (and (and (and (and (and (= var3 var8) (= var22 var15)) (= var19 var12)) (= var5 var10)) (= var16 var17)) (= var18 var2)) (= var4 var14)) (= var11 (next (getnode (read var8 var14))))) (and (and (and (and (and (and (and (= var20 (write var3 var4 defObj)) (= var21 var22)) (= var13 var19)) (= var0 var5)) (= var6 var16)) (= var9 var18)) (= var7 var4)) (= var1 var11)))))) (inv_main82 var20 var21 var13 var0 var6 var9 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap)) (or (not (and (inv_main22 var6 var3 var0 var2 var5 var1 var4) (not (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main23 var6 var3 var0 var2 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int)) (or (not (and (inv_main56 var4 var11 var8 var7 var12 var17 var1 var10 var14) (and (and (and (and (and (and (and (and (= var15 (write var4 var1 (O_node (node (next (getnode (read var4 var1))) (prev (getnode (read var4 var1))) var10)))) (= var13 var11)) (= var0 var8)) (= var16 var7)) (= var6 var12)) (= var3 var17)) (= var2 var1)) (= var5 var10)) (= var9 var14)))) (inv_main49 var15 var13 var0 var16 (+ var6 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr)) (or (not (and (inv_main44 var2 var9 var5 var7 var12 var6 var10) (and (and (and (and (and (and (= var11 (write var2 var6 (O_node (node (next (getnode (read var2 var6))) var10 (data (getnode (read var2 var6))))))) (= var1 var9)) (= var0 var5)) (= var4 var7)) (= var3 var12)) (= var8 var6)) (= var13 var10)))) (inv_main49 var11 var1 var0 var8 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main71 var5 var11 var9 var8 var13 var3 var4 var15) (and (<= 0 (+ (+ var0 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (= var6 var5) (= var1 var11)) (= var2 var9)) (= var16 var8)) (= var10 var13)) (= var14 var3)) (= var12 var4)) (= var0 var15)) (= var7 (next (getnode (read var5 var4)))))))) (inv_main71 var6 var1 var2 var16 var10 var14 var7 (+ var0 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main61 var4 var2 var1 var0 var3) (and (<= 0 (+ var3 (- 1))) (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1)))))) (inv_main71 var4 var2 var1 var0 var3 (+ var3 var2) var0 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Heap) (var9 Int) (var10 node)) (or (not (and (inv_main4 var8 var6 var3) (and (not (= nullAddr var1)) (and (and (and (and (and (and (= var7 (newHeap (alloc var8 (O_node var10)))) (= var4 var6)) (= var9 var3)) (= var2 var6)) (= var0 var3)) (= var5 var3)) (= var1 (newAddr (alloc var8 (O_node var10)))))))) (inv_main12 var7 var4 var9 var2 var0 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main57 var4 var13 var10 var9 var14 var18 var0 var12 var15) (and (<= 0 (+ (+ var16 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (and (= var7 var4) (= var2 var13)) (= var8 var10)) (= var1 var9)) (= var11 var14)) (= var3 var18)) (= var6 var0)) (= var17 var12)) (= var16 var15)) (= var5 (next (getnode (read var4 var0)))))))) (inv_main57 var7 var2 var8 var1 var11 var3 var5 var17 (+ var16 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main49 var4 var2 var1 var0 var3) (and (<= 0 (+ var3 (- 1))) (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1)))))) (inv_main57 var4 var2 var1 var0 var3 (+ var3 var2) var0 (+ var3 var2) var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (or (not (inv_main18 var6 var4 var1 var3 var5 var0 var2)) (inv_main19 (write var6 var2 (O_node (node (next (getnode (read var6 var2))) nullAddr (data (getnode (read var6 var2)))))) var4 var1 var3 var5 var0 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main71 var5 var11 var9 var8 var13 var3 var4 var15) (and (not (<= 0 (+ (+ var0 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (= var6 var5) (= var1 var11)) (= var2 var9)) (= var16 var8)) (= var10 var13)) (= var14 var3)) (= var12 var4)) (= var0 var15)) (= var7 (next (getnode (read var5 var4)))))))) (inv_main70 var6 var1 var2 var16 var10 var14 var7 (+ var0 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main61 var4 var2 var1 var0 var3) (and (not (<= 0 (+ var3 (- 1)))) (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1)))))) (inv_main70 var4 var2 var1 var0 var3 (+ var3 var2) var0 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap)) (or (not (inv_main23 var6 var3 var0 var2 var5 var1 var4)) (inv_main44 (write var6 var4 (O_node (node var1 (prev (getnode (read var6 var4))) (data (getnode (read var6 var4)))))) var3 var0 var2 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main70 var6 var11 var10 var9 var12 var4 var5 var14) (and (not (= var13 var0)) (and (and (and (and (and (and (= var2 var6) (= var3 var11)) (= var8 var10)) (= var1 var9)) (= var7 var12)) (= var13 var4)) (= var0 (data (getnode (read var6 var5)))))))) (inv_main85 var2 var3 var8 var1 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr)) (or (not (and (inv_main36 var5 var12 var9 var11 var16 var10 var15 var4 var2) (and (and (and (and (and (and (and (and (= var6 (write var5 var2 (O_node (node (next (getnode (read var5 var2))) (prev (getnode (read var5 var2))) var4)))) (= var14 var12)) (= var3 var9)) (= var13 var11)) (= var1 var16)) (= var17 var10)) (= var8 var15)) (= var0 var4)) (= var7 var2)))) (inv_main38 var6 var14 var3 var13 var1 var17 var8 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Heap)) (or (not (and (inv_main41 var4 var10 var7 var9 var13 var8 var11 var0) (and (and (and (and (and (and (and (= var15 (write var4 var8 (O_node (node (next (getnode (read var4 var8))) var0 (data (getnode (read var4 var8))))))) (= var3 var10)) (= var1 var7)) (= var14 var9)) (= var2 var13)) (= var6 var8)) (= var12 var11)) (= var5 var0)))) (inv_main22 var15 var3 var1 (+ var14 (- 1)) var2 var5 var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main38 var4 var11 var7 var10 var14 var8 var12 var0) (and (= var9 nullAddr) (and (and (and (and (and (and (and (= var1 (write var4 var0 (O_node (node var8 (prev (getnode (read var4 var0))) (data (getnode (read var4 var0))))))) (= var15 var11)) (= var2 var7)) (= var3 var10)) (= var5 var14)) (= var9 var8)) (= var13 var12)) (= var6 var0))))) (inv_main22 var1 var15 var2 (+ var3 (- 1)) var5 var6 var13)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var6 var11 var9 var10 var13 var2 var3) (and (and (and (and (and (and (= var5 (write var6 var3 (O_node (node (next (getnode (read var6 var3))) (prev (getnode (read var6 var3))) var2)))) (= var8 var11)) (= var7 var9)) (= var1 var10)) (= var0 var13)) (= var12 var2)) (= var4 var3)))) (inv_main22 var5 var8 var7 var1 var0 var4 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (inv_main35 var8 var3 var0 var2 var7 var1 var5 var6 var4)) (inv_main36 (write var8 var4 (O_node (node (next (getnode (read var8 var4))) nullAddr (data (getnode (read var8 var4)))))) var3 var0 var2 var7 var1 var5 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main61 var4 var2 var1 var0 var3) (and (not (= nullAddr var0)) (not (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1))))))) (inv_main78 var4 var2 var1 var0 var3 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (inv_main32 var9 var4 var1 var3 var8 var2 var6 var7 var5 var0)) (inv_main32 var9 var4 var1 var3 var8 var2 var6 var7 var5 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 node) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main22 var7 var13 var10 var12 var15 var11 var14) (and (and (= nullAddr var16) (and (and (and (and (and (and (and (and (= var4 (newHeap (alloc var7 (O_node var6)))) (= var5 var13)) (= var2 var10)) (= var1 var12)) (= var0 var15)) (= var3 var11)) (= var9 var14)) (= var8 var15)) (= var16 (newAddr (alloc var7 (O_node var6)))))) (<= 0 (+ (+ var12 (- 1)) (- 1)))))) (inv_main32 var4 var5 var2 var1 var0 var3 var9 var8 var16 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main38 var5 var11 var8 var10 var14 var9 var12 var0) (and (not (= var7 nullAddr)) (and (and (and (and (and (and (and (= var4 (write var5 var0 (O_node (node var9 (prev (getnode (read var5 var0))) (data (getnode (read var5 var0))))))) (= var1 var11)) (= var13 var8)) (= var2 var10)) (= var15 var14)) (= var7 var9)) (= var3 var12)) (= var6 var0))))) (inv_main41 var4 var1 var13 var2 var15 var7 var3 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main12 var6 var4 var1 var3 var5 var0 var2) (not (is-O_node (read var6 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main18 var6 var4 var1 var3 var5 var0 var2) (not (is-O_node (read var6 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main19 var6 var4 var1 var3 var5 var0 var2) (not (is-O_node (read var6 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (not (and (inv_main29 var8 var3 var0 var2 var7 var1 var5 var6 var4) (not (is-O_node (read var8 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (not (and (inv_main35 var8 var3 var0 var2 var7 var1 var5 var6 var4) (not (is-O_node (read var8 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (not (and (inv_main36 var8 var3 var0 var2 var7 var1 var5 var6 var4) (not (is-O_node (read var8 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (not (and (inv_main38 var7 var4 var1 var3 var6 var2 var5 var0) (not (is-O_node (read var7 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (not (and (inv_main41 var7 var4 var1 var3 var6 var2 var5 var0) (not (is-O_node (read var7 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap)) (not (and (inv_main23 var6 var3 var0 var2 var5 var1 var4) (not (is-O_node (read var6 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap)) (not (and (inv_main44 var6 var3 var0 var2 var5 var1 var4) (not (is-O_node (read var6 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int)) (not (and (inv_main57 var7 var4 var2 var1 var5 var8 var0 var3 var6) (not (is-O_node (read var7 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int)) (not (and (inv_main56 var7 var4 var2 var1 var5 var8 var0 var3 var6) (not (is-O_node (read var7 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (not (and (inv_main71 var7 var2 var1 var0 var3 var4 var5 var6) (not (is-O_node (read var7 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (not (and (inv_main70 var7 var2 var1 var0 var3 var4 var5 var6) (not (is-O_node (read var7 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main78 var5 var3 var2 var1 var4 var0) (not (is-O_node (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main82 var6 var4 var2 var1 var5 var0 var3) (not (is-O_node (read var6 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (not (inv_main85 var4 var2 var1 var0 var3)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll2n_append_equal.i.smt2 b/heap-theory-benchmarks/array/dll2n_append_equal.i.smt2 new file mode 100644 index 00000000..a5722d9a --- /dev/null +++ b/heap-theory-benchmarks/array/dll2n_append_equal.i.smt2 @@ -0,0 +1,108 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr) (prev Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main15 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main24 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main40 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main46 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main47 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main53 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main58 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main60 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main73 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 node) (var11 Int) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main8 var9 var8 var3 var13 var11 var12) (and (and (not (= nullAddr var6)) (and (and (and (and (and (and (and (= var0 (newHeap (alloc var9 (O_node var10)))) (= var2 var8)) (= var5 var3)) (= var7 var12)) (= var1 3)) (= var4 var3)) (= var14 var3)) (= var6 (newAddr (alloc var9 (O_node var10)))))) (not (<= 0 (+ var13 (- 1))))))) (inv_main40 var0 var2 var5 var7 var1 var4 var14 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main18 var0 var7 var3 var6 var4 var5 var8 var1 var2)) (inv_main18 var0 var7 var3 var6 var4 var5 var8 var1 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 node) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap)) (or (not (and (inv_main8 var7 var5 var3 var13 var11 var12) (and (and (= nullAddr var1) (and (and (and (and (and (and (and (= var14 (newHeap (alloc var7 (O_node var2)))) (= var9 var5)) (= var8 var3)) (= var6 var13)) (= var10 var11)) (= var4 var12)) (= var0 var11)) (= var1 (newAddr (alloc var7 (O_node var2)))))) (<= 0 (+ var13 (- 1)))))) (inv_main18 var14 var9 var8 var6 var10 var4 var0 var1 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main58 var0 var5 var3 var2 var4 var1) (not (= var4 nullAddr)))) (inv_main60 var0 var5 var3 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var0 var6 var2 var5 var3 var4 var7 var1)) (inv_main21 (write var0 var1 (O_node (node (data (getnode (read var0 var1))) nullAddr (prev (getnode (read var0 var1)))))) var6 var2 var5 var3 var4 var7 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main60 var0 var5 var3 var2 var4 var1) (not (= var3 (data (getnode (read var0 var4))))))) (inv_main76 var0 var5 var3 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main58 var0 var5 var3 var2 var4 var1) (and (not (= var1 (+ 1 var5))) (= var4 nullAddr)))) (inv_main76 var0 var5 var3 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (or (not (inv_main53 var0 var5 var3 var2 var1 var6 var7 var4)) (inv_main56 (write var0 var4 (O_node (node (data (getnode (read var0 var4))) var7 (prev (getnode (read var0 var4)))))) var5 var3 var2 var1 var6 var7 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr)) (or (not (and (inv_main61 var0 var9 var5 var4 var6 var1) (and (and (and (and (and (and (= var2 var0) (= var10 var9)) (= var8 var5)) (= var12 var4)) (= var3 var6)) (= var7 var1)) (= var11 (next (getnode (read var0 var6))))))) (inv_main58 var2 var10 var8 var12 var11 (+ var7 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main56 var8 var5 var3 var10 var9 var11 var13 var4) (and (and (and (and (and (= var6 (write var8 var13 (O_node (node (data (getnode (read var8 var13))) (next (getnode (read var8 var13))) var4)))) (= var12 var5)) (= var1 var3)) (= var2 var10)) (= var7 var9)) (= var0 var11)))) (inv_main58 var6 var12 var1 var2 var2 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main47 var8 var4 var2 var10 var9 var14 var11 var7) (and (= nullAddr var15) (and (and (and (and (and (and (and (= var13 (write var8 var7 (O_node (node var11 (next (getnode (read var8 var7))) (prev (getnode (read var8 var7))))))) (= var12 var4)) (= var0 var2)) (= var15 var10)) (= var6 var9)) (= var3 var14)) (= var5 var11)) (= var1 var7))))) (inv_main58 var13 var12 var0 var1 var1 0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (or (not (and (inv_main52 var0 var5 var3 var2 var1 var6 var7 var4) (= (next (getnode (read var0 var4))) nullAddr))) (inv_main53 var0 var5 var3 var2 var1 var6 var7 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (or (not (inv_main40 var0 var5 var3 var2 var1 var6 var4 var7)) (inv_main46 (write var0 var7 (O_node (node (data (getnode (read var0 var7))) nullAddr (prev (getnode (read var0 var7)))))) var5 var3 var2 var1 var6 var4 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main21 var0 var6 var2 var5 var3 var4 var7 var1)) (inv_main22 (write var0 var1 (O_node (node (data (getnode (read var0 var1))) (next (getnode (read var0 var1))) nullAddr))) var6 var2 var5 var3 var4 var7 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (or (not (inv_main46 var0 var5 var3 var2 var1 var6 var4 var7)) (inv_main47 (write var0 var7 (O_node (node (data (getnode (read var0 var7))) (next (getnode (read var0 var7))) nullAddr))) var5 var3 var2 var1 var6 var4 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Int) (var16 Int) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Int) (var21 Int) (var22 Addr)) (or (not (and (inv_main73 var14 var7 var4 var18 var5 var15 var10) (and (not (= var13 nullAddr)) (and (and (and (and (and (and (and (and (= var17 var14) (= var2 var7)) (= var6 var4)) (= var22 var18)) (= var19 var5)) (= var21 var15)) (= var8 var10)) (= var12 (next (getnode (read var14 var10))))) (and (and (and (and (and (and (and (= var0 (write var17 var8 defObj)) (= var20 var2)) (= var9 var6)) (= var3 var22)) (= var1 var19)) (= var16 var21)) (= var11 var8)) (= var13 var12)))))) (inv_main73 var0 var20 var9 var3 var1 var16 var13)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main58 var0 var5 var3 var2 var4 var1) (and (not (= var2 nullAddr)) (and (= var1 (+ 1 var5)) (= var4 nullAddr))))) (inv_main73 var0 var5 var3 var2 var4 var1 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap)) (or (not (and (inv_main25 var7 var5 var2 var11 var9 var10 var4) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (= var13 (write var7 var4 (O_node (node (data (getnode (read var7 var4))) var10 (prev (getnode (read var7 var4))))))) (= var8 var5)) (= var3 var2)) (= var6 var11)) (= var0 var9)) (= var12 var10)) (= var1 var4))))) (inv_main28 var13 var8 var3 var6 var0 var12 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main60 var0 var5 var3 var2 var4 var1) (= var3 (data (getnode (read var0 var4)))))) (inv_main61 var0 var5 var3 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (or (not (inv_main43 var0 var6 var4 var3 var1 var7 var5 var8 var2)) (inv_main43 var0 var6 var4 var3 var1 var7 var5 var8 var2)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int)) (or (not (and (inv_main8 var7 var5 var3 var12 var10 var11) (and (and (= nullAddr var8) (and (and (and (and (and (and (and (= var9 (newHeap (alloc var7 (O_node var0)))) (= var14 var5)) (= var4 var3)) (= var13 var11)) (= var2 3)) (= var1 var3)) (= var6 var3)) (= var8 (newAddr (alloc var7 (O_node var0)))))) (not (<= 0 (+ var12 (- 1))))))) (inv_main43 var9 var14 var4 var13 var2 var1 var6 var8 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (or (not (and (inv_main52 var0 var5 var3 var2 var1 var6 var7 var4) (not (= (next (getnode (read var0 var4))) nullAddr)))) (inv_main54 var0 var5 var3 var2 var1 var6 var7 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 node) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int)) (or (not (and (inv_main8 var10 var8 var4 var14 var12 var13) (and (and (not (= nullAddr var7)) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var10 (O_node var6)))) (= var1 var8)) (= var9 var4)) (= var5 var14)) (= var0 var12)) (= var3 var13)) (= var2 var12)) (= var7 (newAddr (alloc var10 (O_node var6)))))) (<= 0 (+ var14 (- 1)))))) (inv_main15 var11 var1 var9 var5 var0 var3 var2 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap)) (or (not (and (inv_main22 var7 var5 var3 var11 var9 var10 var14 var1) (and (and (and (and (and (and (and (= var15 (write var7 var1 (O_node (node var14 (next (getnode (read var7 var1))) (prev (getnode (read var7 var1))))))) (= var8 var5)) (= var12 var3)) (= var6 var11)) (= var4 var9)) (= var2 var10)) (= var0 var14)) (= var13 var1)))) (inv_main24 var15 var8 var12 var6 var4 var2 var13)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Addr) (var13 Int)) (or (not (and (inv_main28 var9 var5 var2 var13 var11 var12 var3) (and (and (and (and (and (and (= var1 (write var9 var12 (O_node (node (data (getnode (read var9 var12))) (next (getnode (read var9 var12))) var3)))) (= var10 var5)) (= var4 var2)) (= var8 var13)) (= var6 var11)) (= var0 var12)) (= var7 var3)))) (inv_main8 var1 var10 var4 (+ var8 (- 1)) var6 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int)) (or (not (and (inv_main25 var8 var5 var2 var12 var10 var11 var4) (and (= var0 nullAddr) (and (and (and (and (and (and (= var3 (write var8 var4 (O_node (node (data (getnode (read var8 var4))) var11 (prev (getnode (read var8 var4))))))) (= var6 var5)) (= var9 var2)) (= var13 var12)) (= var7 var10)) (= var0 var11)) (= var1 var4))))) (inv_main8 var3 var6 var9 (+ var13 (- 1)) var7 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int)) (or (not (inv_main4 var0 var2 var1)) (inv_main8 var0 var2 var1 var2 var1 nullAddr)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main54 var9 var7 var3 var12 var10 var15 var16 var6) (and (and (and (and (and (and (and (and (= var0 var9) (= var2 var7)) (= var14 var3)) (= var8 var12)) (= var5 var10)) (= var4 var15)) (= var13 var16)) (= var11 var6)) (= var1 (next (getnode (read var9 var6))))))) (inv_main52 var0 var2 var14 var8 var5 var4 var13 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main47 var8 var4 var2 var10 var9 var14 var11 var7) (and (not (= nullAddr var15)) (and (and (and (and (and (and (and (= var13 (write var8 var7 (O_node (node var11 (next (getnode (read var8 var7))) (prev (getnode (read var8 var7))))))) (= var12 var4)) (= var0 var2)) (= var15 var10)) (= var6 var9)) (= var3 var14)) (= var5 var11)) (= var1 var7))))) (inv_main52 var13 var12 var0 var15 var6 var3 var1 var15)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main24 var0 var6 var1 var5 var3 var4 var2)) (inv_main25 (write var0 var2 (O_node (node var3 (next (getnode (read var0 var2))) (prev (getnode (read var0 var2)))))) var6 var1 var5 var3 var4 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main15 var0 var6 var2 var5 var3 var4 var7 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main21 var0 var6 var2 var5 var3 var4 var7 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main22 var0 var6 var2 var5 var3 var4 var7 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main24 var0 var6 var1 var5 var3 var4 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main25 var0 var6 var1 var5 var3 var4 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main28 var0 var6 var1 var5 var3 var4 var2) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main40 var0 var5 var3 var2 var1 var6 var4 var7) (not (is-O_node (read var0 var7))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main46 var0 var5 var3 var2 var1 var6 var4 var7) (not (is-O_node (read var0 var7))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main47 var0 var5 var3 var2 var1 var6 var4 var7) (not (is-O_node (read var0 var7))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main52 var0 var5 var3 var2 var1 var6 var7 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main54 var0 var5 var3 var2 var1 var6 var7 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main53 var0 var5 var3 var2 var1 var6 var7 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main56 var0 var5 var3 var2 var1 var6 var7 var4) (not (is-O_node (read var0 var7))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (not (and (inv_main60 var0 var5 var3 var2 var4 var1) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (not (and (inv_main61 var0 var5 var3 var2 var4 var1) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main73 var0 var5 var3 var2 var4 var1 var6) (not (is-O_node (read var0 var6))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (not (inv_main76 var0 var5 var3 var2 var4 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll2n_insert_equal.i.smt2 b/heap-theory-benchmarks/array/dll2n_insert_equal.i.smt2 new file mode 100644 index 00000000..b62d33fa --- /dev/null +++ b/heap-theory-benchmarks/array/dll2n_insert_equal.i.smt2 @@ -0,0 +1,115 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr) (prev Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main34 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Int Int Int Int Addr Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main40 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main45 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main53 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main60 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main63 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main81 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int)) (or (not (inv_main37 var5 var6 var1 var4 var8 var9 var3 var0 var7 var2)) (inv_main37 var5 var6 var1 var4 var8 var9 var3 var0 var7 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Heap) (var10 Int) (var11 node) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 Int) (var22 Heap) (var23 Int)) (or (not (and (inv_main8 var7 var8 var16 var6 var2 var13) (and (and (and (= nullAddr var1) (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var22 (O_node var11)))) (= var19 var17)) (= var14 var4)) (= var5 var3)) (= var12 var10)) (= var18 var15)) (= var21 var20)) (= var0 var15)) (= var1 (newAddr (alloc var22 (O_node var11)))))) (and (and (and (and (and (and (= var22 var7) (= var17 var8)) (= var4 var16)) (= var3 var13)) (= var10 3)) (= var15 var16)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var8 (* (- 2) var23)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var8 (* (- 2) var23)))) (- 1)))) (or (not (<= 0 (+ (+ var8 (* (- 2) var23)) (- 1)))) (<= 0 (+ var8 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var8 (* (- 2) var23))) (- 1)))) (<= 0 (+ (* (- 1) var8) (- 1))))) (= var20 var23)))) (not (<= 0 (+ var6 (- 1))))))) (inv_main37 var9 var19 var14 var5 var12 var18 var21 var0 var1 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 node) (var11 Addr) (var12 Int) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Int) (var23 Int)) (or (not (and (inv_main8 var8 var9 var13 var7 var5 var11) (and (and (and (not (= nullAddr var20)) (and (and (and (and (and (and (and (and (= var14 (newHeap (alloc var4 (O_node var10)))) (= var1 var3)) (= var17 var0)) (= var15 var21)) (= var6 var2)) (= var16 var19)) (= var22 var12)) (= var18 var19)) (= var20 (newAddr (alloc var4 (O_node var10)))))) (and (and (and (and (and (and (= var4 var8) (= var3 var9)) (= var0 var13)) (= var21 var11)) (= var2 3)) (= var19 var13)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var9 (* (- 2) var23)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var9 (* (- 2) var23)))) (- 1)))) (or (not (<= 0 (+ (+ var9 (* (- 2) var23)) (- 1)))) (<= 0 (+ var9 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var9 (* (- 2) var23))) (- 1)))) (<= 0 (+ (* (- 1) var9) (- 1))))) (= var12 var23)))) (not (<= 0 (+ var7 (- 1))))))) (inv_main34 var14 var1 var17 var15 var6 var16 var22 var18 var20)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main45 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (and (= var7 nullAddr) (not (<= 0 (+ var2 (- 1))))))) (inv_main52 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int)) (or (not (and (inv_main54 var4 var5 var11 var13 var15 var8 var3 var0 var17 var7) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (and (and (= var12 (write var4 var0 (O_node (node (data (getnode (read var4 var0))) var7 (prev (getnode (read var4 var0))))))) (= var14 var5)) (= var10 var11)) (= var1 var13)) (= var2 var15)) (= var19 var8)) (= var16 var3)) (= var18 var0)) (= var9 var17)) (= var6 var7))))) (inv_main56 var12 var14 var10 var1 var2 var19 var16 var18 var9 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap)) (or (not (and (inv_main19 var2 var3 var8 var1 var0 var7 var4) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (= var13 (write var2 var4 (O_node (node (data (getnode (read var2 var4))) (next (getnode (read var2 var4))) nullAddr)))) (= var11 var3)) (= var9 var8)) (= var12 var1)) (= var5 var0)) (= var6 var7)) (= var10 var4))))) (inv_main22 var13 var11 var9 var12 var5 var6 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (inv_main51 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8)) (inv_main53 (write var4 var7 (O_node (node (data (getnode (read var4 var7))) var0 (prev (getnode (read var4 var7)))))) var5 var1 var3 var6 var9 var2 var0 var7 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Heap)) (or (not (and (inv_main22 var4 var5 var11 var3 var1 var9 var8) (and (and (and (and (and (and (= var13 (write var4 var9 (O_node (node (data (getnode (read var4 var9))) (next (getnode (read var4 var9))) var8)))) (= var10 var5)) (= var0 var11)) (= var12 var3)) (= var2 var1)) (= var6 var9)) (= var7 var8)))) (inv_main8 var13 var10 var0 (+ var12 (- 1)) var2 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var5 var6 var12 var4 var0 var10 var7) (and (= var11 nullAddr) (and (and (and (and (and (and (= var9 (write var5 var7 (O_node (node (data (getnode (read var5 var7))) (next (getnode (read var5 var7))) nullAddr)))) (= var8 var6)) (= var13 var12)) (= var2 var4)) (= var3 var0)) (= var11 var10)) (= var1 var7))))) (inv_main8 var9 var8 var13 (+ var2 (- 1)) var3 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int)) (or (not (inv_main4 var1 var2 var0)) (inv_main8 var1 var2 var0 var2 var0 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int)) (or (not (and (inv_main52 var4 var5 var12 var13 var14 var8 var3 var0 var17 var7) (and (not (= var16 nullAddr)) (and (and (and (and (and (and (and (and (and (= var9 (write var4 var0 (O_node (node (data (getnode (read var4 var0))) var13 (prev (getnode (read var4 var0))))))) (= var15 var5)) (= var6 var12)) (= var16 var13)) (= var2 var14)) (= var19 var8)) (= var11 var3)) (= var10 var0)) (= var1 var17)) (= var18 var7))))) (inv_main60 var9 var15 var6 var16 var2 var19 var11 var10 var1 var18)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (inv_main65 var2 var3 var0 var1 var4 var5)) (inv_main66 var2 var3 var0 var1 var4 var5 (next (getnode (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr)) (or (not (and (inv_main48 var4 var5 var12 var14 var15 var11 var3 var0 var19 var10) (and (and (and (and (and (and (and (and (and (and (= var2 var4) (= var18 var5)) (= var9 var12)) (= var7 var14)) (= var6 var15)) (= var16 var11)) (= var1 var3)) (= var13 var0)) (= var8 var19)) (= var17 var10)) (= var20 (next (getnode (read var4 var10))))))) (inv_main45 var2 var18 var9 var7 var6 var16 (+ var1 (- 1)) var13 var8 var20)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Int) (var24 Int) (var25 Int) (var26 Addr)) (or (not (and (inv_main41 var6 var7 var15 var18 var21 var11 var5 var14 var20) (and (and (and (and (and (and (and (and (and (= var1 var0) (= var13 var2)) (= var24 var22)) (= var9 var4)) (= var12 var3)) (= var8 var23)) (= var17 var16)) (= var19 var26)) (= var10 nullAddr)) (and (and (and (and (and (and (and (and (= var0 (write var6 var20 (O_node (node var14 (next (getnode (read var6 var20))) (prev (getnode (read var6 var20))))))) (= var2 var7)) (= var22 var15)) (= var4 var18)) (= var3 var21)) (= var23 var11)) (= var16 var5)) (= var25 var14)) (= var26 var20))))) (inv_main45 var1 var13 var24 var9 var12 var8 var17 var19 var10 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main40 var4 var5 var1 var3 var7 var8 var2 var0 var6)) (inv_main41 (write var4 var6 (O_node (node (data (getnode (read var4 var6))) (next (getnode (read var4 var6))) nullAddr))) var5 var1 var3 var7 var8 var2 var0 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main34 var4 var5 var1 var3 var7 var8 var2 var0 var6)) (inv_main40 (write var4 var6 (O_node (node (data (getnode (read var4 var6))) nullAddr (prev (getnode (read var4 var6)))))) var5 var1 var3 var7 var8 var2 var0 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main63 var2 var3 var0 var1 var4 var5) (not (= var4 nullAddr)))) (inv_main65 var2 var3 var0 var1 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Heap) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Int) (var22 Addr)) (or (not (and (inv_main78 var6 var7 var15 var17 var8 var21 var20) (and (not (= var2 nullAddr)) (and (and (and (and (and (and (and (and (= var12 var6) (= var5 var7)) (= var16 var15)) (= var19 var17)) (= var22 var8)) (= var10 var21)) (= var0 var20)) (= var14 (next (getnode (read var6 var20))))) (and (and (and (and (and (and (and (= var13 (write var12 var0 defObj)) (= var3 var5)) (= var1 var16)) (= var4 var19)) (= var18 var22)) (= var11 var10)) (= var9 var0)) (= var2 var14)))))) (inv_main78 var13 var3 var1 var4 var18 var11 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main63 var2 var3 var0 var1 var4 var5) (and (not (= var1 nullAddr)) (and (= var5 (+ 1 var3)) (= var4 nullAddr))))) (inv_main78 var2 var3 var0 var1 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main66 var2 var3 var0 var1 var4 var5 var6) (not (= var0 (data (getnode (read var2 var4))))))) (inv_main81 var2 var3 var0 var1 var4 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main63 var2 var3 var0 var1 var4 var5) (and (not (= var5 (+ 1 var3))) (= var4 nullAddr)))) (inv_main81 var2 var3 var0 var1 var4 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr)) (or (not (inv_main15 var4 var5 var0 var3 var1 var7 var6 var2)) (inv_main15 var4 var5 var0 var3 var1 var7 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 node) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main8 var3 var4 var11 var2 var1 var7) (and (and (= nullAddr var5) (and (and (and (and (and (and (= var6 (newHeap (alloc var3 (O_node var10)))) (= var13 var4)) (= var9 var11)) (= var12 var2)) (= var8 var1)) (= var0 var7)) (= var5 (newAddr (alloc var3 (O_node var10)))))) (<= 0 (+ var2 (- 1)))))) (inv_main15 var6 var13 var9 var12 var8 var0 var5 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (inv_main18 var3 var4 var0 var2 var1 var6 var5)) (inv_main19 (write var3 var5 (O_node (node (data (getnode (read var3 var5))) var6 (prev (getnode (read var3 var5)))))) var4 var0 var2 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main66 var2 var3 var0 var1 var4 var5 var6) (= var0 (data (getnode (read var2 var4)))))) (inv_main63 var2 var3 var0 var1 var6 (+ var5 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main56 var3 var4 var10 var12 var13 var9 var2 var0 var14 var7) (and (and (and (and (and (and (= var11 (write var3 var7 (O_node (node (data (getnode (read var3 var7))) (next (getnode (read var3 var7))) var0)))) (= var6 var4)) (= var1 var10)) (= var5 var12)) (= var16 var13)) (= var8 var9)) (= var15 var2)))) (inv_main63 var11 var6 var1 var5 var5 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int)) (or (not (and (inv_main54 var5 var6 var15 var16 var17 var11 var4 var0 var18 var9) (and (= var8 nullAddr) (and (and (and (and (and (and (and (and (and (= var3 (write var5 var0 (O_node (node (data (getnode (read var5 var0))) var9 (prev (getnode (read var5 var0))))))) (= var19 var6)) (= var1 var15)) (= var7 var16)) (= var12 var17)) (= var10 var11)) (= var13 var4)) (= var14 var0)) (= var2 var18)) (= var8 var9))))) (inv_main63 var3 var19 var1 var7 var7 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int)) (or (not (and (inv_main60 var5 var6 var12 var13 var16 var10 var4 var1 var18 var8) (and (and (and (and (and (and (and (and (and (= var7 (write var5 var13 (O_node (node (data (getnode (read var5 var13))) (next (getnode (read var5 var13))) var1)))) (= var19 var6)) (= var14 var12)) (= var9 var13)) (= var11 var16)) (= var0 var10)) (= var15 var4)) (= var17 var1)) (= var3 var18)) (= var2 var8)))) (inv_main63 var7 var19 var14 var17 var17 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int) (var17 Heap) (var18 Addr) (var19 Int)) (or (not (and (inv_main52 var5 var6 var13 var15 var16 var12 var4 var2 var18 var11) (and (= var10 nullAddr) (and (and (and (and (and (and (and (and (and (= var17 (write var5 var2 (O_node (node (data (getnode (read var5 var2))) var15 (prev (getnode (read var5 var2))))))) (= var0 var6)) (= var19 var13)) (= var10 var15)) (= var7 var16)) (= var1 var12)) (= var9 var4)) (= var14 var2)) (= var8 var18)) (= var3 var11))))) (inv_main63 var17 var0 var19 var14 var14 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main45 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (<= 0 (+ var2 (- 1))))) (inv_main48 var4 var5 var1 var3 var6 var9 var2 var0 var8 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main45 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (and (not (= var7 nullAddr)) (not (<= 0 (+ var2 (- 1))))))) (inv_main51 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (inv_main53 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8)) (inv_main54 (write var4 var0 (O_node (node (data (getnode (read var4 var0))) (next (getnode (read var4 var0))) var7))) var5 var1 var3 var6 var9 var2 var0 var7 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 node) (var12 Int) (var13 Heap)) (or (not (and (inv_main8 var5 var6 var12 var4 var3 var10) (and (and (not (= nullAddr var2)) (and (and (and (and (and (and (= var13 (newHeap (alloc var5 (O_node var11)))) (= var0 var6)) (= var1 var12)) (= var9 var4)) (= var8 var3)) (= var7 var10)) (= var2 (newAddr (alloc var5 (O_node var11)))))) (<= 0 (+ var4 (- 1)))))) (inv_main12 var13 var0 var1 var9 var8 var7 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (inv_main12 var3 var4 var0 var2 var1 var6 var5)) (inv_main18 (write var3 var5 (O_node (node var1 (next (getnode (read var3 var5))) (prev (getnode (read var3 var5)))))) var4 var0 var2 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main12 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main18 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main19 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main22 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main34 var4 var5 var1 var3 var7 var8 var2 var0 var6) (not (is-O_node (read var4 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main40 var4 var5 var1 var3 var7 var8 var2 var0 var6) (not (is-O_node (read var4 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main41 var4 var5 var1 var3 var7 var8 var2 var0 var6) (not (is-O_node (read var4 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main48 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main51 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var7))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main53 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main54 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main56 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main52 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main60 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (not (and (inv_main65 var2 var3 var0 var1 var4 var5) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main66 var2 var3 var0 var1 var4 var5 var6) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main78 var2 var3 var0 var1 var5 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (not (inv_main81 var2 var3 var0 var1 var4 var5)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll2n_prepend_equal.i.smt2 b/heap-theory-benchmarks/array/dll2n_prepend_equal.i.smt2 new file mode 100644 index 00000000..ca0e1d25 --- /dev/null +++ b/heap-theory-benchmarks/array/dll2n_prepend_equal.i.smt2 @@ -0,0 +1,95 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr) (prev Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main34 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main40 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main46 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main64 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main41 var1 var7 var3 var14 var15 var9 var8 var12) (and (and (and (and (and (and (and (= var10 (write var1 var12 (O_node (node var8 (next (getnode (read var1 var12))) (prev (getnode (read var1 var12))))))) (= var11 var7)) (= var0 var3)) (= var2 var14)) (= var13 var15)) (= var6 var9)) (= var4 var8)) (= var5 var12)))) (inv_main43 var10 var11 var0 var2 var13 var6 var5)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int)) (or (not (and (inv_main43 var1 var5 var2 var12 var13 var6 var4) (and (not (= var7 nullAddr)) (and (and (and (and (and (and (= var0 (write var1 var4 (O_node (node (data (getnode (read var1 var4))) var12 (prev (getnode (read var1 var4))))))) (= var3 var5)) (= var9 var2)) (= var7 var12)) (= var11 var13)) (= var10 var6)) (= var8 var4))))) (inv_main46 var0 var3 var9 var7 var11 var10 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int) (var16 Int) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Int) (var22 Addr)) (or (not (and (inv_main64 var3 var12 var5 var19 var1 var2 var14) (and (not (= var20 nullAddr)) (and (and (and (and (and (and (and (and (= var17 var3) (= var16 var12)) (= var7 var5)) (= var22 var19)) (= var18 var1)) (= var11 var2)) (= var4 var14)) (= var6 (next (getnode (read var3 var14))))) (and (and (and (and (and (and (and (= var13 (write var17 var4 defObj)) (= var0 var16)) (= var15 var7)) (= var8 var22)) (= var10 var18)) (= var21 var11)) (= var9 var4)) (= var20 var6)))))) (inv_main64 var13 var0 var15 var8 var10 var21 var20)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main49 var2 var5 var3 var4 var0 var1) (and (not (= var4 nullAddr)) (and (= var1 (+ 1 var5)) (= var0 nullAddr))))) (inv_main64 var2 var5 var3 var4 var0 var1 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (or (not (inv_main12 var1 var6 var2 var4 var0 var3 var5)) (inv_main18 (write var1 var5 (O_node (node var0 (next (getnode (read var1 var5))) (prev (getnode (read var1 var5)))))) var6 var2 var4 var0 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (inv_main51 var2 var5 var3 var4 var0 var1)) (inv_main52 var2 var5 var3 var4 var0 var1 (next (getnode (read var2 var0))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (or (not (inv_main18 var1 var6 var2 var4 var0 var3 var5)) (inv_main19 (write var1 var5 (O_node (node (data (getnode (read var1 var5))) var3 (prev (getnode (read var1 var5)))))) var6 var2 var4 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (or (not (inv_main40 var2 var7 var3 var5 var6 var1 var0 var4)) (inv_main41 (write var2 var4 (O_node (node (data (getnode (read var2 var4))) (next (getnode (read var2 var4))) nullAddr))) var7 var3 var5 var6 var1 var0 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (and (inv_main19 var2 var10 var4 var7 var1 var6 var13) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (= var0 (write var2 var13 (O_node (node (data (getnode (read var2 var13))) (next (getnode (read var2 var13))) nullAddr)))) (= var5 var10)) (= var9 var4)) (= var8 var7)) (= var11 var1)) (= var12 var6)) (= var3 var13))))) (inv_main22 var0 var5 var9 var8 var11 var12 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (or (not (inv_main34 var2 var7 var3 var5 var6 var1 var0 var4)) (inv_main40 (write var2 var4 (O_node (node (data (getnode (read var2 var4))) nullAddr (prev (getnode (read var2 var4)))))) var7 var3 var5 var6 var1 var0 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (and (inv_main22 var5 var9 var6 var8 var2 var7 var13) (and (and (and (and (and (and (= var0 (write var5 var7 (O_node (node (data (getnode (read var5 var7))) (next (getnode (read var5 var7))) var13)))) (= var1 var9)) (= var11 var6)) (= var4 var8)) (= var3 var2)) (= var10 var7)) (= var12 var13)))) (inv_main8 var0 var1 var11 (+ var4 (- 1)) var3 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (and (inv_main19 var2 var8 var3 var7 var1 var6 var13) (and (= var0 nullAddr) (and (and (and (and (and (and (= var5 (write var2 var13 (O_node (node (data (getnode (read var2 var13))) (next (getnode (read var2 var13))) nullAddr)))) (= var9 var8)) (= var11 var3)) (= var4 var7)) (= var10 var1)) (= var0 var6)) (= var12 var13))))) (inv_main8 var5 var9 var11 (+ var4 (- 1)) var10 var12)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int)) (or (not (inv_main4 var0 var2 var1)) (inv_main8 var0 var2 var1 var2 var1 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 node)) (or (not (and (inv_main8 var3 var9 var5 var7 var2 var6) (and (and (not (= nullAddr var12)) (and (and (and (and (and (and (= var10 (newHeap (alloc var3 (O_node var13)))) (= var0 var9)) (= var8 var5)) (= var1 var7)) (= var11 var2)) (= var4 var6)) (= var12 (newAddr (alloc var3 (O_node var13)))))) (<= 0 (+ var7 (- 1)))))) (inv_main12 var10 var0 var8 var1 var11 var4 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main49 var2 var5 var3 var4 var0 var1) (not (= var0 nullAddr)))) (inv_main51 var2 var5 var3 var4 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 node) (var14 Heap)) (or (not (and (inv_main8 var3 var9 var4 var7 var1 var6) (and (and (not (= nullAddr var0)) (and (and (and (and (and (and (and (= var14 (newHeap (alloc var3 (O_node var13)))) (= var12 var9)) (= var2 var4)) (= var10 var6)) (= var11 3)) (= var5 var4)) (= var8 var4)) (= var0 (newAddr (alloc var3 (O_node var13)))))) (not (<= 0 (+ var7 (- 1))))))) (inv_main34 var14 var12 var2 var10 var11 var5 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main52 var3 var6 var4 var5 var1 var2 var0) (= var4 (data (getnode (read var3 var1)))))) (inv_main49 var3 var6 var4 var5 var0 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr)) (or (not (and (inv_main46 var2 var6 var3 var9 var10 var7 var5) (and (and (and (and (and (and (= var12 (write var2 var9 (O_node (node (data (getnode (read var2 var9))) (next (getnode (read var2 var9))) var5)))) (= var11 var6)) (= var4 var3)) (= var13 var9)) (= var8 var10)) (= var1 var7)) (= var0 var5)))) (inv_main49 var12 var11 var4 var0 var0 0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int)) (or (not (and (inv_main43 var0 var6 var1 var12 var13 var8 var2) (and (= var11 nullAddr) (and (and (and (and (and (and (= var4 (write var0 var2 (O_node (node (data (getnode (read var0 var2))) var12 (prev (getnode (read var0 var2))))))) (= var3 var6)) (= var5 var1)) (= var11 var12)) (= var9 var13)) (= var7 var8)) (= var10 var2))))) (inv_main49 var4 var3 var5 var10 var10 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main15 var2 var7 var3 var5 var0 var4 var6 var1)) (inv_main15 var2 var7 var3 var5 var0 var4 var6 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 node)) (or (not (and (inv_main8 var3 var11 var4 var8 var2 var7) (and (and (= nullAddr var6) (and (and (and (and (and (and (= var5 (newHeap (alloc var3 (O_node var13)))) (= var1 var11)) (= var10 var4)) (= var12 var8)) (= var0 var2)) (= var9 var7)) (= var6 (newAddr (alloc var3 (O_node var13)))))) (<= 0 (+ var8 (- 1)))))) (inv_main15 var5 var1 var10 var12 var0 var9 var6 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main52 var3 var6 var4 var5 var1 var2 var0) (not (= var4 (data (getnode (read var3 var1))))))) (inv_main67 var3 var6 var4 var5 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main49 var2 var5 var3 var4 var0 var1) (and (not (= var1 (+ 1 var5))) (= var0 nullAddr)))) (inv_main67 var2 var5 var3 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main37 var3 var8 var4 var6 var7 var1 var0 var5 var2)) (inv_main37 var3 var8 var4 var6 var7 var1 var0 var5 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 node)) (or (not (and (inv_main8 var2 var11 var3 var7 var1 var6) (and (and (= nullAddr var8) (and (and (and (and (and (and (and (= var4 (newHeap (alloc var2 (O_node var14)))) (= var5 var11)) (= var13 var3)) (= var12 var6)) (= var10 3)) (= var9 var3)) (= var0 var3)) (= var8 (newAddr (alloc var2 (O_node var14)))))) (not (<= 0 (+ var7 (- 1))))))) (inv_main37 var4 var5 var13 var12 var10 var9 var0 var8 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main12 var1 var6 var2 var4 var0 var3 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main18 var1 var6 var2 var4 var0 var3 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main19 var1 var6 var2 var4 var0 var3 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main22 var1 var6 var2 var4 var0 var3 var5) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main34 var2 var7 var3 var5 var6 var1 var0 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main40 var2 var7 var3 var5 var6 var1 var0 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main41 var2 var7 var3 var5 var6 var1 var0 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main43 var1 var6 var2 var4 var5 var0 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main46 var1 var6 var2 var4 var5 var0 var3) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (not (and (inv_main51 var2 var5 var3 var4 var0 var1) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main52 var3 var6 var4 var5 var1 var2 var0) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main64 var3 var6 var4 var5 var1 var2 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (not (inv_main67 var2 var5 var3 var4 var0 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll2n_remove_all.i.smt2 b/heap-theory-benchmarks/array/dll2n_remove_all.i.smt2 new file mode 100644 index 00000000..fb9b24f0 --- /dev/null +++ b/heap-theory-benchmarks/array/dll2n_remove_all.i.smt2 @@ -0,0 +1,72 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr) (prev Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main31 (Heap Int Int Addr Int Int) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main31 var6 var7 var0 var5 var9 var10) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (= var11 var6) (= var1 var7)) (= var2 var0)) (= var4 var5)) (= var8 var9)) (= var3 var10)) (= var12 (next (getnode (read var6 var5)))))))) (inv_main36 var11 var1 var2 var4 var8 var3 var12)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main19 var4 var5 var11 var3 var0 var8 var7) (and (not (= var10 nullAddr)) (and (and (and (and (and (and (= var1 (write var4 var7 (O_node (node (data (getnode (read var4 var7))) (next (getnode (read var4 var7))) nullAddr)))) (= var2 var5)) (= var6 var11)) (= var9 var3)) (= var12 var0)) (= var10 var8)) (= var13 var7))))) (inv_main22 var1 var2 var6 var9 var12 var10 var13)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main28 var2 var3 var0 var1 var4) (and (not (= nullAddr var1)) (not (<= 0 var4))))) (inv_main42 var2 var3 var0 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int)) (or (not (and (inv_main22 var4 var5 var11 var3 var1 var10 var8) (and (and (and (and (and (and (= var12 (write var4 var10 (O_node (node (data (getnode (read var4 var10))) (next (getnode (read var4 var10))) var8)))) (= var0 var5)) (= var2 var11)) (= var13 var3)) (= var9 var1)) (= var6 var10)) (= var7 var8)))) (inv_main8 var12 var0 var2 (+ var13 (- 1)) var9 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap)) (or (not (and (inv_main19 var2 var3 var11 var1 var0 var8 var4) (and (= var10 nullAddr) (and (and (and (and (and (and (= var13 (write var2 var4 (O_node (node (data (getnode (read var2 var4))) (next (getnode (read var2 var4))) nullAddr)))) (= var12 var3)) (= var9 var11)) (= var7 var1)) (= var5 var0)) (= var10 var8)) (= var6 var4))))) (inv_main8 var13 var12 var9 (+ var7 (- 1)) var5 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int)) (or (not (inv_main4 var1 var2 var0)) (inv_main8 var1 var2 var0 var2 var0 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr)) (or (not (inv_main15 var4 var5 var0 var3 var1 var7 var6 var2)) (inv_main15 var4 var5 var0 var3 var1 var7 var6 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 node) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main8 var5 var6 var10 var4 var1 var8) (and (and (= nullAddr var7) (and (and (and (and (and (and (= var11 (newHeap (alloc var5 (O_node var3)))) (= var0 var6)) (= var12 var10)) (= var9 var4)) (= var13 var1)) (= var2 var8)) (= var7 (newAddr (alloc var5 (O_node var3)))))) (<= 0 (+ var4 (- 1)))))) (inv_main15 var11 var0 var12 var9 var13 var2 var7 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (inv_main18 var3 var4 var0 var2 var1 var6 var5)) (inv_main19 (write var3 var5 (O_node (node (data (getnode (read var3 var5))) var6 (prev (getnode (read var3 var5)))))) var4 var0 var2 var1 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Heap) (var17 Int) (var18 Int) (var19 Addr) (var20 Int)) (or (not (and (inv_main36 var2 var3 var12 var15 var7 var18 var11) (and (and (and (and (and (and (and (= var16 (write var9 var0 defObj)) (= var1 var4)) (= var14 var10)) (= var19 var0)) (= var20 var13)) (= var17 var6)) (= var5 var8)) (and (and (and (and (and (and (= var9 (write var2 var11 (O_node (node (data (getnode (read var2 var11))) (next (getnode (read var2 var11))) nullAddr)))) (= var4 var3)) (= var10 var12)) (= var0 var15)) (= var13 var7)) (= var6 var18)) (= var8 var11))))) (inv_main28 var16 var1 var14 var5 (+ var20 (- 1)))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Int) (var18 Int) (var19 Addr)) (or (not (and (inv_main31 var2 var3 var9 var12 var4 var18) (and (and (and (and (and (and (and (= var15 (write var0 var13 defObj)) (= var7 var5)) (= var6 var1)) (= var10 var13)) (= var8 var17)) (= var11 var16)) (= var19 var14)) (and (= var14 nullAddr) (and (and (and (and (and (and (= var0 var2) (= var5 var3)) (= var1 var9)) (= var13 var12)) (= var17 var4)) (= var16 var18)) (= var14 (next (getnode (read var2 var12))))))))) (inv_main28 var15 var7 var6 var19 (+ var8 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main8 var3 var4 var0 var2 var1 var5) (not (<= 0 (+ var2 (- 1)))))) (inv_main28 var3 var4 var0 var5 (+ var4 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main28 var2 var3 var0 var1 var4) (<= 0 var4))) (inv_main31 var2 var3 var0 var1 var4 3)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main8 var4 var5 var10 var3 var2 var7) (and (and (not (= nullAddr var9)) (and (and (and (and (and (and (= var8 (newHeap (alloc var4 (O_node var0)))) (= var12 var5)) (= var1 var10)) (= var13 var3)) (= var11 var2)) (= var6 var7)) (= var9 (newAddr (alloc var4 (O_node var0)))))) (<= 0 (+ var3 (- 1)))))) (inv_main12 var8 var12 var1 var13 var11 var6 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (inv_main12 var3 var4 var0 var2 var1 var6 var5)) (inv_main18 (write var3 var5 (O_node (node var1 (next (getnode (read var3 var5))) (prev (getnode (read var3 var5)))))) var4 var0 var2 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main12 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main18 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main19 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main22 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main31 var2 var3 var0 var1 var4 var5) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main36 var3 var4 var1 var2 var5 var6 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (not (inv_main42 var2 var3 var0 var1 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll2n_remove_all_reverse.i.smt2 b/heap-theory-benchmarks/array/dll2n_remove_all_reverse.i.smt2 new file mode 100644 index 00000000..9d31e8ca --- /dev/null +++ b/heap-theory-benchmarks/array/dll2n_remove_all_reverse.i.smt2 @@ -0,0 +1,79 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr) (prev Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main31 (Heap Int Int Addr Int Int) Bool) +(declare-fun inv_main38 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main39 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main47 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main22 var8 var9 var1 var5 var4 var12 var11) (and (and (and (and (and (and (= var13 (write var8 var12 (O_node (node (data (getnode (read var8 var12))) (next (getnode (read var8 var12))) var11)))) (= var6 var9)) (= var2 var1)) (= var7 var5)) (= var0 var4)) (= var3 var12)) (= var10 var11)))) (inv_main8 var13 var6 var2 (+ var7 (- 1)) var0 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr)) (or (not (and (inv_main19 var6 var7 var2 var4 var3 var11 var10) (and (= var13 nullAddr) (and (and (and (and (and (and (= var12 (write var6 var10 (O_node (node (data (getnode (read var6 var10))) (next (getnode (read var6 var10))) nullAddr)))) (= var8 var7)) (= var9 var2)) (= var0 var4)) (= var1 var3)) (= var13 var11)) (= var5 var10))))) (inv_main8 var12 var8 var9 (+ var0 (- 1)) var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int)) (or (not (inv_main4 var0 var1 var2)) (inv_main8 var0 var1 var2 var1 var2 nullAddr)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var0 var1 var2 var6 var5 var4 var3)) (inv_main18 (write var0 var3 (O_node (node var5 (next (getnode (read var0 var3))) (prev (getnode (read var0 var3)))))) var1 var2 var6 var5 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr)) (or (not (and (inv_main28 var0 var1 var2 var4 var3) (and (not (= nullAddr var4)) (not (<= 0 var3))))) (inv_main47 var0 var1 var2 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main38 var0 var2 var4 var7 var6 var1 var5 var3) (= (next (getnode (read var0 var3))) nullAddr))) (inv_main39 var0 var2 var4 var7 var6 var1 var5 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr)) (or (not (and (inv_main28 var0 var1 var2 var4 var3) (<= 0 var3))) (inv_main31 var0 var1 var2 var4 var3 3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Heap)) (or (not (and (inv_main41 var7 var10 var3 var6 var15 var9 var14 var1) (and (and (and (and (and (and (and (and (= var16 var7) (= var8 var10)) (= var4 var3)) (= var12 var6)) (= var13 var15)) (= var0 var9)) (= var2 var14)) (= var5 var1)) (= var11 (next (getnode (read var7 var1))))))) (inv_main38 var16 var8 var4 var12 var13 var0 var2 var11)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr)) (or (not (and (inv_main31 var1 var4 var6 var11 var10 var2) (and (and (and (and (and (and (and (= var9 var1) (= var8 var4)) (= var5 var6)) (= var12 var11)) (= var3 var10)) (= var7 var2)) (= var0 nullAddr)) (not (= nullAddr (next (getnode (read var1 var11)))))))) (inv_main38 var9 var8 var5 var12 var3 var7 var0 var12)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main38 var0 var2 var4 var7 var6 var1 var5 var3) (not (= (next (getnode (read var0 var3))) nullAddr)))) (inv_main41 var0 var2 var4 var7 var6 var1 var3 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Int) (var17 Addr) (var18 Int) (var19 Addr) (var20 Int) (var21 Int)) (or (not (and (inv_main39 var11 var14 var2 var6 var20 var12 var19 var1) (and (and (and (and (and (and (and (and (= var15 (write var11 var19 (O_node (node (data (getnode (read var11 var19))) nullAddr (prev (getnode (read var11 var19))))))) (= var21 var14)) (= var18 var2)) (= var17 var6)) (= var10 var20)) (= var9 var12)) (= var4 var19)) (= var13 var1)) (and (and (and (and (and (= var8 (write var15 var13 defObj)) (= var3 var21)) (= var0 var18)) (= var7 var17)) (= var16 var10)) (= var5 var9))))) (inv_main28 var8 var3 var0 var7 (+ var16 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr)) (or (not (and (inv_main31 var7 var10 var3 var5 var14 var9) (and (and (= nullAddr (next (getnode (read var7 var5)))) (and (and (and (and (and (= var6 (write var7 var5 defObj)) (= var2 var10)) (= var16 var3)) (= var17 var5)) (= var13 var14)) (= var0 var9))) (and (and (and (and (and (= var1 var6) (= var4 var2)) (= var15 var16)) (= var11 nullAddr)) (= var12 var13)) (= var8 var0))))) (inv_main28 var1 var4 var15 var11 (+ var12 (- 1)))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (or (not (and (inv_main8 var0 var1 var2 var5 var4 var3) (not (<= 0 (+ var5 (- 1)))))) (inv_main28 var0 var1 var2 var3 (+ var1 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main19 var4 var6 var0 var2 var1 var11 var8) (and (not (= var13 nullAddr)) (and (and (and (and (and (and (= var10 (write var4 var8 (O_node (node (data (getnode (read var4 var8))) (next (getnode (read var4 var8))) nullAddr)))) (= var7 var6)) (= var5 var0)) (= var12 var2)) (= var9 var1)) (= var13 var11)) (= var3 var8))))) (inv_main22 var10 var7 var5 var12 var9 var13 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main18 var0 var1 var2 var6 var5 var4 var3)) (inv_main19 (write var0 var3 (O_node (node (data (getnode (read var0 var3))) var4 (prev (getnode (read var0 var3)))))) var1 var2 var6 var5 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 node) (var11 Heap) (var12 Int) (var13 Addr)) (or (not (and (inv_main8 var11 var12 var2 var5 var4 var13) (and (and (not (= nullAddr var0)) (and (and (and (and (and (and (= var9 (newHeap (alloc var11 (O_node var10)))) (= var8 var12)) (= var6 var2)) (= var7 var5)) (= var1 var4)) (= var3 var13)) (= var0 (newAddr (alloc var11 (O_node var10)))))) (<= 0 (+ var5 (- 1)))))) (inv_main12 var9 var8 var6 var7 var1 var3 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (or (not (inv_main15 var0 var1 var3 var7 var6 var5 var4 var2)) (inv_main15 var0 var1 var3 var7 var6 var5 var4 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 node) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Int)) (or (not (and (inv_main8 var6 var7 var0 var2 var1 var11) (and (and (= nullAddr var9) (and (and (and (and (and (and (= var12 (newHeap (alloc var6 (O_node var3)))) (= var4 var7)) (= var5 var0)) (= var10 var2)) (= var13 var1)) (= var8 var11)) (= var9 (newAddr (alloc var6 (O_node var3)))))) (<= 0 (+ var2 (- 1)))))) (inv_main15 var12 var4 var5 var10 var13 var8 var9 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var0 var1 var2 var6 var5 var4 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var0 var1 var2 var6 var5 var4 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main19 var0 var1 var2 var6 var5 var4 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main22 var0 var1 var2 var6 var5 var4 var3) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr)) (not (and (inv_main31 var0 var2 var3 var5 var4 var1) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main38 var0 var2 var4 var7 var6 var1 var5 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main41 var0 var2 var4 var7 var6 var1 var5 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main39 var0 var2 var4 var7 var6 var1 var5 var3) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr)) (not (inv_main47 var0 var1 var2 var4 var3)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll2n_update_all_reverse.i.smt2 b/heap-theory-benchmarks/array/dll2n_update_all_reverse.i.smt2 new file mode 100644 index 00000000..792cd0fa --- /dev/null +++ b/heap-theory-benchmarks/array/dll2n_update_all_reverse.i.smt2 @@ -0,0 +1,88 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr) (prev Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main35 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main40 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main57 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main60 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main28 var1 var0 var4 var3 var2) (not (<= 0 var2)))) (inv_main40 var1 var0 var4 var3 (+ var0 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main49 var3 var8 var13 var6 var11 var1 var12 var14) (and (= var10 var0) (and (and (and (and (and (and (= var2 var3) (= var5 var8)) (= var7 var13)) (= var9 var6)) (= var4 var11)) (= var10 var1)) (= var0 (data (getnode (read var3 var12)))))))) (inv_main40 var2 var5 var7 var9 (+ var4 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var1 var0 var5 var6 var2 var4 var3)) (inv_main18 (write var1 var3 (O_node (node var2 (next (getnode (read var1 var3))) (prev (getnode (read var1 var3)))))) var0 var5 var6 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int)) (or (not (and (inv_main8 var3 var9 var13 var6 var4 var5) (and (and (not (= nullAddr var8)) (and (and (and (and (and (and (= var11 (newHeap (alloc var3 (O_node var1)))) (= var2 var9)) (= var7 var13)) (= var10 var6)) (= var0 var4)) (= var12 var5)) (= var8 (newAddr (alloc var3 (O_node var1)))))) (<= 0 (+ var6 (- 1)))))) (inv_main12 var11 var2 var7 var10 var0 var12 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Heap) (var19 Heap)) (or (not (and (inv_main57 var3 var13 var17 var7 var15 var4) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (= var18 var3) (= var10 var13)) (= var2 var17)) (= var16 var7)) (= var14 var15)) (= var11 var4)) (= var0 (next (getnode (read var3 var4))))) (and (and (and (and (and (and (= var19 (write var18 var11 defObj)) (= var9 var10)) (= var5 var2)) (= var1 var16)) (= var8 var14)) (= var6 var11)) (= var12 var0)))))) (inv_main57 var19 var9 var5 var1 var8 var12)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main40 var1 var0 var4 var3 var2) (and (not (= var3 nullAddr)) (not (<= 0 (* (- 1) var2)))))) (inv_main57 var1 var0 var4 var3 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main18 var1 var0 var5 var6 var2 var4 var3)) (inv_main19 (write var1 var3 (O_node (node (data (getnode (read var1 var3))) var4 (prev (getnode (read var1 var3)))))) var0 var5 var6 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var1 var0 var5 var7 var2 var4 var3 var6)) (inv_main15 var1 var0 var5 var7 var2 var4 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 node) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main8 var3 var11 var13 var7 var4 var5) (and (and (= nullAddr var8) (and (and (and (and (and (and (= var0 (newHeap (alloc var3 (O_node var10)))) (= var2 var11)) (= var9 var13)) (= var12 var7)) (= var6 var4)) (= var1 var5)) (= var8 (newAddr (alloc var3 (O_node var10)))))) (<= 0 (+ var7 (- 1)))))) (inv_main15 var0 var2 var9 var12 var6 var1 var8 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main50 var3 var9 var15 var6 var12 var1 var14 var16) (and (not (<= 0 (+ (+ var4 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (= var8 var3) (= var10 var9)) (= var0 var15)) (= var2 var6)) (= var13 var12)) (= var7 var1)) (= var11 var14)) (= var4 var16)) (= var5 (next (getnode (read var3 var14)))))))) (inv_main49 var8 var10 var0 var2 var13 var7 var5 (+ var4 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main40 var1 var0 var4 var3 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 (* (- 1) var2))))) (inv_main49 var1 var0 var4 var3 var2 (+ var2 var0) var3 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main36 var0 var14 var18 var3 var16 var13 var5 var1 var11) (and (not (<= 0 (+ (+ var2 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (and (= var7 var0) (= var10 var14)) (= var9 var18)) (= var17 var3)) (= var15 var16)) (= var12 var13)) (= var8 var5)) (= var4 var1)) (= var2 var11)) (= var6 (next (getnode (read var0 var5)))))))) (inv_main35 var7 var10 var9 var17 var15 var12 var6 var4 (+ var2 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main28 var1 var0 var4 var3 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 var2)))) (inv_main35 var1 var0 var4 var3 var2 (+ var2 var0) var3 (+ var2 var0) var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var1 var11 var13 var7 var2 var4 var3) (and (not (= var8 nullAddr)) (and (and (and (and (and (and (= var6 (write var1 var3 (O_node (node (data (getnode (read var1 var3))) (next (getnode (read var1 var3))) nullAddr)))) (= var10 var11)) (= var5 var13)) (= var9 var7)) (= var12 var2)) (= var8 var4)) (= var0 var3))))) (inv_main22 var6 var10 var5 var9 var12 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main22 var2 var9 var13 var7 var3 var6 var5) (and (and (and (and (and (and (= var1 (write var2 var6 (O_node (node (data (getnode (read var2 var6))) (next (getnode (read var2 var6))) var5)))) (= var4 var9)) (= var12 var13)) (= var10 var7)) (= var11 var3)) (= var0 var6)) (= var8 var5)))) (inv_main8 var1 var4 var12 (+ var10 (- 1)) var11 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var2 var9 var12 var8 var3 var6 var5) (and (= var4 nullAddr) (and (and (and (and (and (and (= var0 (write var2 var5 (O_node (node (data (getnode (read var2 var5))) (next (getnode (read var2 var5))) nullAddr)))) (= var13 var9)) (= var10 var12)) (= var11 var8)) (= var7 var3)) (= var4 var6)) (= var1 var5))))) (inv_main8 var0 var13 var10 (+ var11 (- 1)) var7 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int)) (or (not (inv_main4 var1 var0 var2)) (inv_main8 var1 var0 var2 var0 var2 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int)) (or (not (and (inv_main49 var2 var9 var12 var4 var10 var1 var11 var14) (and (not (= var7 var8)) (and (and (and (and (and (and (= var13 var2) (= var0 var9)) (= var3 var12)) (= var6 var4)) (= var5 var10)) (= var7 var1)) (= var8 (data (getnode (read var2 var11)))))))) (inv_main60 var13 var0 var3 var6 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Int) (var16 Int) (var17 Addr)) (or (not (and (inv_main35 var0 var8 var15 var2 var13 var7 var4 var1 var6) (and (and (and (and (and (and (and (and (= var14 (write var0 var4 (O_node (node var1 (next (getnode (read var0 var4))) (prev (getnode (read var0 var4))))))) (= var11 var8)) (= var9 var15)) (= var5 var2)) (= var16 var13)) (= var10 var7)) (= var17 var4)) (= var3 var1)) (= var12 var6)))) (inv_main28 var14 var11 var9 var5 (+ var16 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (or (not (and (inv_main8 var1 var0 var4 var5 var2 var3) (not (<= 0 (+ var5 (- 1)))))) (inv_main28 var1 var0 var4 var3 (+ var0 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main50 var3 var9 var15 var6 var12 var1 var14 var16) (and (<= 0 (+ (+ var4 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (= var8 var3) (= var10 var9)) (= var0 var15)) (= var2 var6)) (= var13 var12)) (= var7 var1)) (= var11 var14)) (= var4 var16)) (= var5 (next (getnode (read var3 var14)))))))) (inv_main50 var8 var10 var0 var2 var13 var7 var5 (+ var4 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main40 var1 var0 var4 var3 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 (* (- 1) var2))))) (inv_main50 var1 var0 var4 var3 var2 (+ var2 var0) var3 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main36 var0 var14 var18 var3 var16 var13 var5 var1 var11) (and (<= 0 (+ (+ var2 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (and (= var7 var0) (= var10 var14)) (= var9 var18)) (= var17 var3)) (= var15 var16)) (= var12 var13)) (= var8 var5)) (= var4 var1)) (= var2 var11)) (= var6 (next (getnode (read var0 var5)))))))) (inv_main36 var7 var10 var9 var17 var15 var12 var6 var4 (+ var2 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main28 var1 var0 var4 var3 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 var2)))) (inv_main36 var1 var0 var4 var3 var2 (+ var2 var0) var3 (+ var2 var0) var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var1 var0 var5 var6 var2 var4 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var1 var0 var5 var6 var2 var4 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main19 var1 var0 var5 var6 var2 var4 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main22 var1 var0 var5 var6 var2 var4 var3) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main36 var3 var2 var7 var6 var5 var1 var8 var4 var0) (not (is-O_node (read var3 var8))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main35 var3 var2 var7 var6 var5 var1 var8 var4 var0) (not (is-O_node (read var3 var8))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main50 var2 var1 var6 var5 var3 var0 var4 var7) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main49 var2 var1 var6 var5 var3 var0 var4 var7) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (not (and (inv_main57 var1 var0 var5 var4 var3 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (not (inv_main60 var1 var0 var4 var3 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll_circular_traversal-1.i.smt2 b/heap-theory-benchmarks/array/dll_circular_traversal-1.i.smt2 new file mode 100644 index 00000000..4c1255f3 --- /dev/null +++ b/heap-theory-benchmarks/array/dll_circular_traversal-1.i.smt2 @@ -0,0 +1,93 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr) (prev Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Addr Int) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main16 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main9 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 5 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main29 var4 var5 var13 var0 var12 var10 var8 var7) (and (and (and (and (and (and (and (= var1 (write var4 var8 (O_node (node (data (getnode (read var4 var8))) (next (getnode (read var4 var8))) var7)))) (= var14 var5)) (= var15 var13)) (= var11 var0)) (= var2 var12)) (= var3 var10)) (= var9 var8)) (= var6 var7)))) (inv_main18 var1 var14 var15 (+ var11 (- 1)) var2 var3 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr)) (or (not (and (inv_main16 var5 var6 var3 var1 var2 var11) (and (and (and (and (and (= var10 (write var5 var11 (O_node (node var2 (next (getnode (read var5 var11))) (prev (getnode (read var5 var11))))))) (= var0 var6)) (= var8 var3)) (= var9 var1)) (= var7 var2)) (= var4 var11)))) (inv_main18 var10 var0 var8 var9 var7 var4 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap)) (or (not (and (inv_main42 var6 var7 var2 var5 var1 var0) (and (not (= var4 var10)) (and (and (and (and (and (and (= var12 var6) (= var9 var7)) (= var8 var2)) (= var10 var5)) (= var11 var1)) (= var3 var0)) (= var4 (next (getnode (read var6 var1)))))))) (inv_main36 var12 var9 var8 var10 var4 (+ var3 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main32 var3 var4 var9 var0 var8 var7 var5) (and (and (and (and (and (and (= var6 (write var3 var5 (O_node (node (data (getnode (read var3 var5))) (next (getnode (read var3 var5))) var7)))) (= var12 var4)) (= var10 var9)) (= var1 var0)) (= var2 var8)) (= var13 var7)) (= var11 var5)))) (inv_main36 var6 var12 var10 var11 var11 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (inv_main9 var3 var4 var2 var0 var1 var5)) (inv_main15 (write var3 var5 (O_node (node (data (getnode (read var3 var5))) var5 (prev (getnode (read var3 var5)))))) var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (inv_main39 var4 var5 var2 var3 var1 var0)) (inv_main42 (write var4 var1 (O_node (node var0 (next (getnode (read var4 var1))) (prev (getnode (read var4 var1)))))) var5 var2 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main22 var3 var4 var2 var0 var1 var7 var6 var5)) (inv_main28 (write var3 var5 (O_node (node (data (getnode (read var3 var5))) var6 (prev (getnode (read var3 var5)))))) var4 var2 var0 var1 var7 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (inv_main15 var3 var4 var2 var0 var1 var5)) (inv_main16 (write var3 var5 (O_node (node (data (getnode (read var3 var5))) (next (getnode (read var3 var5))) var5))) var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (and (inv_main50 var4 var5 var2 var3 var1 var0) (= var0 (data (getnode (read var4 var1)))))) (inv_main51 var4 var5 var2 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (or (not (inv_main12 var3 var4 var2 var0 var1 var6 var5)) (inv_main12 var3 var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 node)) (or (not (and (inv_main4 var4 var5 var2) (and (= nullAddr var3) (and (and (and (and (and (= var6 (newHeap (alloc var4 (O_node var9)))) (= var0 var5)) (= var1 var2)) (= var7 var5)) (= var8 var2)) (= var3 (newAddr (alloc var4 (O_node var9)))))))) (inv_main12 var6 var0 var1 var7 var8 var3 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main28 var3 var4 var2 var0 var1 var7 var6 var5)) (inv_main29 (write var3 var5 (O_node (node var1 (next (getnode (read var3 var5))) (prev (getnode (read var3 var5)))))) var4 var2 var0 var1 var7 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (inv_main19 var3 var4 var2 var0 var1 var6 var5)) (inv_main32 (write var3 var6 (O_node (node (data (getnode (read var3 var6))) var5 (prev (getnode (read var3 var6)))))) var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (and (inv_main36 var4 var5 var2 var3 var1 var0) (= var2 (data (getnode (read var4 var1)))))) (inv_main39 var4 var5 var2 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 node) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main18 var2 var3 var8 var0 var7 var5 var4) (and (and (not (= nullAddr var6)) (and (and (and (and (and (and (and (= var10 (newHeap (alloc var2 (O_node var1)))) (= var14 var3)) (= var13 var8)) (= var9 var0)) (= var15 var7)) (= var12 var5)) (= var11 var4)) (= var6 (newAddr (alloc var2 (O_node var1)))))) (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main22 var10 var14 var13 var9 var15 var12 var11 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap)) (or (not (and (inv_main42 var6 var7 var2 var5 var1 var0) (and (= var4 var10) (and (and (and (and (and (and (= var12 var6) (= var9 var7)) (= var8 var2)) (= var10 var5)) (= var11 var1)) (= var3 var0)) (= var4 (next (getnode (read var6 var1)))))))) (inv_main37 var12 var9 var8 var10 var4 (+ var3 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (and (inv_main18 var3 var4 var2 var0 var1 var6 var5) (not (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main19 var3 var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (inv_main25 var3 var4 var2 var0 var1 var8 var6 var5 var7)) (inv_main25 var3 var4 var2 var0 var1 var8 var6 var5 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 node) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main18 var1 var2 var11 var0 var10 var7 var4) (and (and (= nullAddr var12) (and (and (and (and (and (and (and (= var8 (newHeap (alloc var1 (O_node var9)))) (= var5 var2)) (= var13 var11)) (= var15 var0)) (= var3 var10)) (= var6 var7)) (= var14 var4)) (= var12 (newAddr (alloc var1 (O_node var9)))))) (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main25 var8 var5 var13 var15 var3 var6 var14 var12 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 node) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main4 var4 var5 var2) (and (not (= nullAddr var7)) (and (and (and (and (and (= var3 (newHeap (alloc var4 (O_node var6)))) (= var1 var5)) (= var8 var2)) (= var0 var5)) (= var9 var2)) (= var7 (newAddr (alloc var4 (O_node var6)))))))) (inv_main9 var3 var1 var8 var0 var9 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Heap) (var18 Heap)) (or (not (and (inv_main37 var3 var4 var12 var2 var10 var9) (and (and (and (and (and (and (and (= var18 var3) (= var15 var4)) (= var7 var12)) (= var5 var2)) (= var13 var10)) (= var1 var9)) (= var8 (prev (getnode (read var3 var10))))) (and (and (and (and (and (= var17 var18) (= var11 var15)) (= var6 var7)) (= var0 nullAddr)) (= var16 var8)) (= var14 var1))))) (inv_main50 var17 var11 var6 var0 var16 (+ var14 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Int) (var19 Int)) (or (not (and (inv_main51 var3 var4 var12 var2 var11 var10) (and (not (= var1 nullAddr)) (and (and (and (and (and (and (and (= var5 var3) (= var18 var4)) (= var17 var12)) (= var7 var2)) (= var8 var11)) (= var14 var10)) (= var6 (prev (getnode (read var3 var11))))) (and (and (and (and (and (and (= var13 (write var5 var8 defObj)) (= var15 var18)) (= var9 var17)) (= var0 var7)) (= var16 var8)) (= var19 var14)) (= var1 var6)))))) (inv_main50 var13 var15 var9 var0 var1 (+ var19 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main9 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main15 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main16 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main22 var3 var4 var2 var0 var1 var7 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main28 var3 var4 var2 var0 var1 var7 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main29 var3 var4 var2 var0 var1 var7 var6 var5) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main19 var3 var4 var2 var0 var1 var6 var5) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main32 var3 var4 var2 var0 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main36 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main39 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main42 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main37 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main50 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main51 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var4 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll_circular_traversal-2.i.smt2 b/heap-theory-benchmarks/array/dll_circular_traversal-2.i.smt2 new file mode 100644 index 00000000..96255291 --- /dev/null +++ b/heap-theory-benchmarks/array/dll_circular_traversal-2.i.smt2 @@ -0,0 +1,100 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr) (prev Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Addr Int) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main16 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main39 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main45 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main57 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main9 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 5 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr)) (or (not (and (inv_main18 var5 var3 var4 var2 var0 var1 var6) (not (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main19 var5 var3 var4 var2 var0 var1 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Heap)) (or (not (and (inv_main42 var12 var1 var2 var4 var0 var10) (and (not (= var3 var8)) (and (and (and (and (and (and (= var11 var12) (= var7 var1)) (= var6 var2)) (= var8 var4)) (= var5 var0)) (= var9 var10)) (= var3 (next (getnode (read var12 var10)))))))) (inv_main36 var11 var7 var6 var8 (+ var5 1) var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap)) (or (not (and (inv_main32 var13 var8 var3 var7 var0 var2 var6) (and (and (and (and (and (and (= var5 (write var13 var6 (O_node (node (data (getnode (read var13 var6))) (next (getnode (read var13 var6))) var2)))) (= var11 var8)) (= var9 var3)) (= var1 var7)) (= var4 var0)) (= var12 var2)) (= var10 var6)))) (inv_main36 var5 var11 var9 var10 1 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (or (not (inv_main15 var5 var3 var4 var2 var0 var1)) (inv_main16 (write var5 var1 (O_node (node (data (getnode (read var5 var1))) (next (getnode (read var5 var1))) var1))) var3 var4 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main36 var5 var1 var2 var3 var0 var4) (not (= var2 (data (getnode (read var5 var4))))))) (inv_main57 var5 var1 var2 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main51 var5 var1 var2 var3 var0 var4) (not (= var0 (data (getnode (read var5 var4))))))) (inv_main57 var5 var1 var2 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Heap)) (or (not (and (inv_main42 var12 var1 var2 var4 var0 var10) (and (= var3 var8) (and (and (and (and (and (and (= var11 var12) (= var7 var1)) (= var6 var2)) (= var8 var4)) (= var5 var0)) (= var9 var10)) (= var3 (next (getnode (read var12 var10)))))))) (inv_main37 var11 var7 var6 var8 (+ var5 1) var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main36 var5 var1 var2 var3 var0 var4) (= var2 (data (getnode (read var5 var4)))))) (inv_main39 var5 var1 var2 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (inv_main28 var6 var3 var4 var2 var0 var1 var7 var5)) (inv_main29 (write var6 var5 (O_node (node var0 (next (getnode (read var6 var5))) (prev (getnode (read var6 var5)))))) var3 var4 var2 var0 var1 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main51 var5 var1 var2 var3 var0 var4) (= var0 (data (getnode (read var5 var4)))))) (inv_main52 var5 var1 var2 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (inv_main25 var7 var3 var5 var2 var0 var1 var8 var6 var4)) (inv_main25 var7 var3 var5 var2 var0 var1 var8 var6 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 node) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap)) (or (not (and (inv_main18 var15 var11 var2 var10 var0 var1 var5) (and (and (= nullAddr var9) (and (and (and (and (and (and (and (= var7 (newHeap (alloc var15 (O_node var8)))) (= var4 var11)) (= var12 var2)) (= var14 var10)) (= var3 var0)) (= var6 var1)) (= var13 var5)) (= var9 (newAddr (alloc var15 (O_node var8)))))) (<= 0 (+ (+ var10 (- 1)) (- 1)))))) (inv_main25 var7 var4 var12 var14 var3 var6 var13 var9 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr)) (or (not (inv_main19 var5 var3 var4 var2 var0 var1 var6)) (inv_main32 (write var5 var1 (O_node (node (data (getnode (read var5 var1))) var6 (prev (getnode (read var5 var1)))))) var3 var4 var2 var0 var1 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (or (not (inv_main12 var6 var3 var4 var2 var0 var1 var5)) (inv_main12 var6 var3 var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 node) (var8 Int) (var9 Heap)) (or (not (and (inv_main4 var9 var1 var3) (and (= nullAddr var6) (and (and (and (and (and (= var0 (newHeap (alloc var9 (O_node var7)))) (= var2 var1)) (= var5 var3)) (= var4 var1)) (= var8 var3)) (= var6 (newAddr (alloc var9 (O_node var7)))))))) (inv_main12 var0 var2 var5 var4 var8 var6 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap)) (or (not (and (inv_main29 var15 var11 var4 var10 var0 var1 var7 var13) (and (and (and (and (and (and (and (= var2 (write var15 var7 (O_node (node (data (getnode (read var15 var7))) (next (getnode (read var15 var7))) var13)))) (= var12 var11)) (= var14 var4)) (= var9 var10)) (= var3 var0)) (= var5 var1)) (= var8 var7)) (= var6 var13)))) (inv_main18 var2 var12 var14 (+ var9 (- 1)) var3 var5 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Heap)) (or (not (and (inv_main16 var11 var5 var6 var4 var1 var3) (and (and (and (and (and (= var10 (write var11 var3 (O_node (node var1 (next (getnode (read var11 var3))) (prev (getnode (read var11 var3))))))) (= var0 var5)) (= var8 var6)) (= var9 var4)) (= var7 var1)) (= var2 var3)))) (inv_main18 var10 var0 var8 var9 var7 var2 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Heap)) (or (not (and (inv_main37 var10 var2 var4 var6 var1 var9) (and (and (and (and (and (and (= var12 var10) (= var8 var2)) (= var11 var4)) (= var7 var6)) (= var0 var1)) (= var3 var9)) (= var5 (prev (getnode (read var10 var9))))))) (inv_main45 var12 var8 var11 var7 var0 var5)))) +(assert (forall ((var0 Int) (var1 node) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main18 var13 var7 var3 var6 var0 var2 var4) (and (and (not (= nullAddr var5)) (and (and (and (and (and (and (and (= var9 (newHeap (alloc var13 (O_node var1)))) (= var14 var7)) (= var12 var3)) (= var8 var6)) (= var15 var0)) (= var11 var2)) (= var10 var4)) (= var5 (newAddr (alloc var13 (O_node var1)))))) (<= 0 (+ (+ var6 (- 1)) (- 1)))))) (inv_main22 var9 var14 var12 var8 var15 var11 var10 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (or (not (inv_main9 var5 var3 var4 var2 var0 var1)) (inv_main15 (write var5 var1 (O_node (node (data (getnode (read var5 var1))) var1 (prev (getnode (read var5 var1)))))) var3 var4 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (inv_main22 var6 var3 var4 var2 var0 var1 var7 var5)) (inv_main28 (write var6 var5 (O_node (node (data (getnode (read var6 var5))) var7 (prev (getnode (read var6 var5)))))) var3 var4 var2 var0 var1 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (inv_main39 var5 var1 var2 var3 var0 var4)) (inv_main42 (write var5 var4 (O_node (node var0 (next (getnode (read var5 var4))) (prev (getnode (read var5 var4)))))) var1 var2 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 node) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Heap)) (or (not (and (inv_main4 var8 var4 var6) (and (not (= nullAddr var3)) (and (and (and (and (and (= var9 (newHeap (alloc var8 (O_node var2)))) (= var0 var4)) (= var7 var6)) (= var5 var4)) (= var1 var6)) (= var3 (newAddr (alloc var8 (O_node var2)))))))) (inv_main9 var9 var0 var7 var5 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Heap) (var17 Int)) (or (not (and (inv_main45 var16 var10 var3 var11 var8 var13) (and (and (and (and (and (and (= var15 (write var16 var11 (O_node (node (data (getnode (read var16 var11))) (next (getnode (read var16 var11))) nullAddr)))) (= var9 var10)) (= var7 var3)) (= var12 var11)) (= var2 var8)) (= var14 var13)) (and (and (and (and (and (= var0 var15) (= var17 var9)) (= var6 var7)) (= var4 nullAddr)) (= var1 var2)) (= var5 var14))))) (inv_main51 var0 var17 var6 var4 (+ var1 (- 1)) var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int) (var18 Int) (var19 Addr)) (or (not (and (inv_main52 var16 var9 var2 var12 var8 var15) (and (not (= var19 nullAddr)) (and (and (and (and (and (and (and (= var3 var16) (= var18 var9)) (= var17 var2)) (= var5 var12)) (= var11 var8)) (= var6 var15)) (= var4 (prev (getnode (read var16 var15))))) (and (and (and (and (and (and (= var10 (write var3 var6 defObj)) (= var13 var18)) (= var7 var17)) (= var0 var5)) (= var1 var11)) (= var14 var6)) (= var19 var4)))))) (inv_main51 var10 var13 var7 var0 (+ var1 (- 1)) var19)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main9 var5 var3 var4 var2 var0 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main15 var5 var3 var4 var2 var0 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main16 var5 var3 var4 var2 var0 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (not (and (inv_main22 var6 var3 var4 var2 var0 var1 var7 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (not (and (inv_main28 var6 var3 var4 var2 var0 var1 var7 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (not (and (inv_main29 var6 var3 var4 var2 var0 var1 var7 var5) (not (is-O_node (read var6 var7))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr)) (not (and (inv_main19 var5 var3 var4 var2 var0 var1 var6) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr)) (not (and (inv_main32 var5 var3 var4 var2 var0 var1 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main36 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main39 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main42 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main37 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main45 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main51 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main52 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (inv_main57 var5 var1 var2 var3 var0 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll_nondet_free_order-2.i.smt2 b/heap-theory-benchmarks/array/dll_nondet_free_order-2.i.smt2 new file mode 100644 index 00000000..e7a65bd0 --- /dev/null +++ b/heap-theory-benchmarks/array/dll_nondet_free_order-2.i.smt2 @@ -0,0 +1,81 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (prev Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main11 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main14 (Heap Int Int Addr) Bool) +(declare-fun inv_main16 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main26 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr) Bool) +(declare-fun inv_main36 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 node) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int)) (or (not (and (inv_main16 var4 var8 var3 var1 var2) (and (and (not (= nullAddr var7)) (and (and (and (and (and (= var5 (newHeap (alloc var4 (O_node var6)))) (= var0 var8)) (= var11 var3)) (= var9 var1)) (= var10 var2)) (= var7 (newAddr (alloc var4 (O_node var6)))))) (<= 0 (+ (+ var3 (- 1)) (- 1)))))) (inv_main20 var5 var0 var11 var9 var10 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (inv_main33 var0 var2 var1 var3)) (inv_main36 var0 var2 var1 var3 (prev (getnode (read var0 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int)) (or (not (inv_main17 var3 var4 var2 var0 var1)) (inv_main29 (write var3 var0 (O_node (node var1 (prev (getnode (read var3 var0)))))) var4 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int) (var18 Heap) (var19 Addr) (var20 Heap) (var21 Int) (var22 Heap) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Int) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Int) (var31 Addr)) (or (not (and (inv_main36 var16 var3 var19 var4 var13) (and (and (and (and (not (= var5 0)) (and (and (not (= var17 0)) (and (and (and (and (and (= var2 var16) (= var0 var3)) (= var9 var19)) (= var14 var4)) (= var23 var13)) (= var1 (next (getnode (read var16 var4)))))) (and (and (and (and (and (= var22 (write var2 var14 defObj)) (= var26 var0)) (= var25 var9)) (= var12 var14)) (= var10 var23)) (= var27 var1)))) (and (and (and (and (and (= var20 (write var22 var27 defObj)) (= var21 var26)) (= var31 var25)) (= var15 var12)) (= var24 var10)) (= var6 var27))) (and (and (and (= var18 (write var20 var24 defObj)) (= var11 var21)) (= var8 var31)) (= var28 var15))) (and (and (= var7 var18) (= var30 var11)) (= var29 nullAddr))))) (inv_main0 var7 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Heap) (var26 Addr) (var27 Addr) (var28 Int) (var29 Addr) (var30 Addr) (var31 Addr)) (or (not (and (inv_main36 var19 var7 var22 var9 var16) (and (and (and (and (= var10 0) (and (and (not (= var21 0)) (and (and (and (and (and (= var5 var19) (= var2 var7)) (= var13 var22)) (= var17 var9)) (= var26 var16)) (= var3 (next (getnode (read var19 var9)))))) (and (and (and (and (and (= var25 (write var5 var17 defObj)) (= var28 var2)) (= var27 var13)) (= var15 var17)) (= var14 var26)) (= var29 var3)))) (and (and (and (and (and (= var4 (write var25 var14 defObj)) (= var20 var28)) (= var24 var27)) (= var18 var15)) (= var8 var14)) (= var23 var29))) (and (and (and (= var12 (write var4 var23 defObj)) (= var0 var20)) (= var30 var24)) (= var11 var18))) (and (and (= var6 var12) (= var1 var0)) (= var31 nullAddr))))) (inv_main0 var6 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Heap) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Int) (var21 Heap) (var22 Heap) (var23 Heap) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Int) (var30 Addr) (var31 Addr) (var32 Int)) (or (not (and (inv_main36 var23 var8 var24 var9 var18) (and (and (and (and (not (= var20 0)) (and (and (not (= var2 0)) (and (= var7 0) (and (and (and (and (and (= var6 var23) (= var3 var8)) (= var13 var24)) (= var19 var9)) (= var25 var18)) (= var4 (next (getnode (read var23 var9))))))) (and (and (and (and (and (= var17 (write var6 var4 defObj)) (= var14 var3)) (= var28 var13)) (= var11 var19)) (= var31 var25)) (= var30 var4)))) (and (and (and (and (and (= var15 (write var17 var11 defObj)) (= var29 var14)) (= var0 var28)) (= var5 var11)) (= var27 var31)) (= var16 var30))) (and (and (and (= var21 (write var15 var27 defObj)) (= var1 var29)) (= var26 var0)) (= var10 var5))) (and (and (= var22 var21) (= var32 var1)) (= var12 nullAddr))))) (inv_main0 var22 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int) (var21 Heap) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Heap) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Addr) (var31 Addr) (var32 Addr)) (or (not (and (inv_main36 var25 var11 var27 var13 var22) (and (and (and (and (= var14 0) (and (and (not (= var2 0)) (and (= var10 0) (and (and (and (and (and (= var6 var25) (= var3 var11)) (= var19 var27)) (= var23 var13)) (= var28 var22)) (= var4 (next (getnode (read var25 var13))))))) (and (and (and (and (and (= var21 (write var6 var4 defObj)) (= var20 var3)) (= var29 var19)) (= var17 var23)) (= var32 var28)) (= var31 var4)))) (and (and (and (and (and (= var12 (write var21 var32 defObj)) (= var9 var20)) (= var30 var29)) (= var8 var17)) (= var26 var32)) (= var18 var31))) (and (and (and (= var16 (write var12 var8 defObj)) (= var0 var9)) (= var24 var30)) (= var7 var8))) (and (and (= var5 var16) (= var15 var0)) (= var1 nullAddr))))) (inv_main0 var5 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Heap) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Heap) (var26 Int)) (or (not (and (inv_main36 var3 var10 var9 var11 var23) (and (and (and (= var15 0) (and (and (= var18 0) (and (= var8 0) (and (and (and (and (and (= var4 var3) (= var1 var10)) (= var17 var9)) (= var24 var11)) (= var14 var23)) (= var2 (next (getnode (read var3 var11))))))) (and (and (and (and (and (= var7 (write var4 var14 defObj)) (= var26 var1)) (= var22 var17)) (= var13 var24)) (= var6 var14)) (= var12 var2)))) (and (and (and (= var19 (write var7 var13 defObj)) (= var16 var26)) (= var21 var22)) (= var20 var13))) (and (and (= var25 var19) (= var0 var16)) (= var5 nullAddr))))) (inv_main0 var25 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int) (var21 Int) (var22 Heap) (var23 Int) (var24 Addr) (var25 Heap) (var26 Int) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Addr) (var31 Heap) (var32 Addr)) (or (not (and (inv_main36 var22 var6 var24 var8 var17) (and (and (and (and (not (= var23 0)) (and (and (= var15 0) (and (= var4 0) (and (and (and (and (and (= var2 var22) (= var0 var6)) (= var14 var24)) (= var18 var8)) (= var29 var17)) (= var1 (next (getnode (read var22 var8))))))) (and (and (and (and (and (= var5 (write var2 var29 defObj)) (= var21 var0)) (= var16 var14)) (= var11 var18)) (= var3 var29)) (= var12 var1)))) (and (and (and (and (and (= var25 (write var5 var11 defObj)) (= var20 var21)) (= var19 var16)) (= var27 var11)) (= var30 var3)) (= var28 var12))) (and (and (and (= var31 (write var25 var28 defObj)) (= var26 var20)) (= var7 var19)) (= var10 var27))) (and (and (= var9 var31) (= var13 var26)) (= var32 nullAddr))))) (inv_main0 var9 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (or (not (inv_main23 var3 var4 var2 var0 var1 var6 var5)) (inv_main23 var3 var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr) (var11 node)) (or (not (and (inv_main16 var7 var9 var5 var1 var2) (and (and (= nullAddr var4) (and (and (and (and (and (= var6 (newHeap (alloc var7 (O_node var11)))) (= var8 var9)) (= var0 var5)) (= var10 var1)) (= var3 var2)) (= var4 (newAddr (alloc var7 (O_node var11)))))) (<= 0 (+ (+ var5 (- 1)) (- 1)))))) (inv_main23 var6 var8 var0 var10 var3 var4 1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 node) (var4 Int) (var5 Int) (var6 Addr)) (or (not (and (inv_main3 var1 var5) (and (not (= nullAddr var6)) (and (and (and (= var0 (newHeap (alloc var1 (O_node var3)))) (= var4 var5)) (= var2 var5)) (= var6 (newAddr (alloc var1 (O_node var3)))))))) (inv_main8 var0 var4 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (inv_main20 var3 var4 var2 var0 var1 var5)) (inv_main26 (write var3 var5 (O_node (node var1 (prev (getnode (read var3 var5)))))) var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int)) (or (not (and (inv_main16 var3 var4 var2 var0 var1) (not (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main17 var3 var4 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Heap) (var8 Int) (var9 Addr)) (or (not (and (inv_main29 var6 var8 var5 var1 var2) (and (and (and (and (= var7 (write var6 var2 (O_node (node (next (getnode (read var6 var2))) var1)))) (= var4 var8)) (= var3 var5)) (= var0 var1)) (= var9 var2)))) (inv_main33 var7 var4 var9 var9)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (inv_main11 var2 var3 var1 var0 var4)) (inv_main11 var2 var3 var1 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 node)) (or (not (and (inv_main3 var1 var3) (and (= nullAddr var0) (and (and (and (= var4 (newHeap (alloc var1 (O_node var6)))) (= var5 var3)) (= var2 var3)) (= var0 (newAddr (alloc var1 (O_node var6)))))))) (inv_main11 var4 var5 var2 var0 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr)) (or (not (and (inv_main26 var3 var7 var2 var0 var1 var11) (and (and (and (and (and (= var4 (write var3 var1 (O_node (node (next (getnode (read var3 var1))) var11)))) (= var5 var7)) (= var9 var2)) (= var8 var0)) (= var6 var1)) (= var10 var11)))) (inv_main16 var4 var5 (+ var9 (- 1)) var8 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Heap)) (or (not (and (inv_main14 var4 var5 var2 var0) (and (and (and (= var7 (write var4 var0 (O_node (node (next (getnode (read var4 var0))) var0)))) (= var3 var5)) (= var6 var2)) (= var1 var0)))) (inv_main16 var7 var3 var6 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int)) (or (not (inv_main8 var2 var3 var1 var0)) (inv_main14 (write var2 var0 (O_node (node var0 (prev (getnode (read var2 var0)))))) var3 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int)) (not (and (inv_main8 var2 var3 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int)) (not (and (inv_main14 var2 var3 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main20 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main26 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int)) (not (and (inv_main17 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int)) (not (and (inv_main29 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main33 var0 var2 var1 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main36 var0 var2 var1 var4 var3) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main0 var0 var2) (not (= (read var0 var1) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/dll_nullified-2.i.smt2 b/heap-theory-benchmarks/array/dll_nullified-2.i.smt2 new file mode 100644 index 00000000..3baef709 --- /dev/null +++ b/heap-theory-benchmarks/array/dll_nullified-2.i.smt2 @@ -0,0 +1,102 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data_0 Int) (next Addr) (data_1 Int) (prev Addr) (data_2 Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main14 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main17 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main26 (Heap Int Addr) Bool) +(declare-fun inv_main28 (Heap Int Addr) Bool) +(declare-fun inv_main29 (Heap Int Addr) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main32 (Heap Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Addr Int) Bool) +(declare-fun inv_main39 (Heap Int Addr) Bool) +(declare-fun inv_main40 (Heap Int Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Int Addr Addr Int) Bool) +(declare-fun inv_main50 (Heap Int Addr) Bool) +(declare-fun inv_main7 (Heap Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (or (not (and (inv_main26 var0 var2 var1) (and (not (= var1 nullAddr)) (= (next (getnode (read var0 var1))) nullAddr)))) (inv_main39 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int)) (or (not (and (inv_main46 var2 var13 var4 var0 var8) (and (not (= var9 nullAddr)) (and (and (= var5 0) (and (= var8 0) (and (and (and (and (= var12 var2) (= var11 var13)) (= var10 var4)) (= var6 var0)) (or (and (not (= 0 (data_2 (getnode (read var2 var4))))) (= var5 1)) (and (= 0 (data_2 (getnode (read var2 var4)))) (= var5 0)))))) (and (and (and (= var7 (write var12 var10 defObj)) (= var1 var11)) (= var3 var10)) (= var9 var6)))))) (inv_main39 var7 var1 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (or (not (inv_main19 var0 var3 var4 var1 var2)) (inv_main20 (write var0 var2 (O_node (node (data_0 (getnode (read var0 var2))) var1 (data_1 (getnode (read var0 var2))) (prev (getnode (read var0 var2))) (data_2 (getnode (read var0 var2)))))) var3 var4 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main46 var2 var4 var3 var0 var1) (not (= var1 0)))) (inv_main50 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr)) (or (not (and (inv_main46 var3 var7 var6 var0 var1) (and (not (= var8 0)) (and (= var1 0) (and (and (and (and (= var5 var3) (= var4 var7)) (= var2 var6)) (= var9 var0)) (or (and (not (= 0 (data_2 (getnode (read var3 var6))))) (= var8 1)) (and (= 0 (data_2 (getnode (read var3 var6)))) (= var8 0)))))))) (inv_main50 var5 var4 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main34 var1 var3 var2 var0) (not (= var0 0)))) (inv_main50 var1 var3 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main34 var2 var7 var6 var0) (and (not (= var5 0)) (and (= var0 0) (and (and (and (= var4 var2) (= var3 var7)) (= var1 var6)) (or (and (not (= 0 (data_2 (getnode (read var2 var6))))) (= var5 1)) (and (= 0 (data_2 (getnode (read var2 var6)))) (= var5 0)))))))) (inv_main50 var4 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (or (not (inv_main11 var0 var3 var4 var1 var2)) (inv_main17 (write var0 var2 (O_node (node 0 (next (getnode (read var0 var2))) (data_1 (getnode (read var0 var2))) (prev (getnode (read var0 var2))) (data_2 (getnode (read var0 var2)))))) var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (or (not (inv_main39 var0 var2 var1)) (inv_main40 var0 var2 var1 (prev (getnode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (or (not (inv_main17 var0 var3 var4 var1 var2)) (inv_main18 (write var0 var2 (O_node (node (data_0 (getnode (read var0 var2))) (next (getnode (read var0 var2))) 0 (prev (getnode (read var0 var2))) (data_2 (getnode (read var0 var2)))))) var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (or (not (inv_main18 var0 var3 var4 var1 var2)) (inv_main19 (write var0 var2 (O_node (node (data_0 (getnode (read var0 var2))) (next (getnode (read var0 var2))) (data_1 (getnode (read var0 var2))) (prev (getnode (read var0 var2))) 0))) var3 var4 var1 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main34 var2 var7 var6 var0) (and (= var5 0) (and (= var0 0) (and (and (and (= var4 var2) (= var3 var7)) (= var1 var6)) (or (and (not (= 0 (data_2 (getnode (read var2 var6))))) (= var5 1)) (and (= 0 (data_2 (getnode (read var2 var6)))) (= var5 0)))))))) (inv_main29 var4 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (or (not (and (inv_main20 var1 var8 var9 var2 var6) (and (not (= var3 nullAddr)) (and (and (and (and (= var5 (write var1 var6 (O_node (node (data_0 (getnode (read var1 var6))) (next (getnode (read var1 var6))) (data_1 (getnode (read var1 var6))) nullAddr (data_2 (getnode (read var1 var6))))))) (= var4 var8)) (= var7 var9)) (= var3 var2)) (= var0 var6))))) (inv_main23 var5 var4 var7 var3 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (inv_main29 var0 var4 var3) (and (and (and (= var6 var0) (= var2 var4)) (= var1 var3)) (= var5 (next (getnode (read var0 var3))))))) (inv_main26 var6 var2 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int)) (or (not (and (inv_main7 var0 var2 var3 var1) (not (<= 0 (+ var3 (- 1)))))) (inv_main26 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int)) (or (not (and (inv_main32 var0 var3 var2 var1) (not (= var1 0)))) (inv_main34 var0 var3 var2 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main32 var0 var7 var6 var4) (and (= var4 0) (and (and (and (= var3 var0) (= var5 var7)) (= var2 var6)) (or (and (not (= 0 (data_1 (getnode (read var0 var6))))) (= var1 1)) (and (= 0 (data_1 (getnode (read var0 var6)))) (= var1 0))))))) (inv_main34 var3 var5 var2 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (and (inv_main23 var2 var7 var9 var3 var5) (and (and (and (and (= var4 (write var2 var3 (O_node (node (data_0 (getnode (read var2 var3))) (next (getnode (read var2 var3))) (data_1 (getnode (read var2 var3))) var5 (data_2 (getnode (read var2 var3))))))) (= var0 var7)) (= var6 var9)) (= var1 var3)) (= var8 var5)))) (inv_main7 var4 var0 (+ var6 (- 1)) var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (or (not (and (inv_main20 var4 var8 var9 var5 var6) (and (= var0 nullAddr) (and (and (and (and (= var1 (write var4 var6 (O_node (node (data_0 (getnode (read var4 var6))) (next (getnode (read var4 var6))) (data_1 (getnode (read var4 var6))) nullAddr (data_2 (getnode (read var4 var6))))))) (= var3 var8)) (= var7 var9)) (= var0 var5)) (= var2 var6))))) (inv_main7 var1 var3 (+ var7 (- 1)) var2)))) +(assert (forall ((var0 Heap) (var1 Int)) (or (not (inv_main3 var0 var1)) (inv_main7 var0 var1 var1 nullAddr)))) +(assert (forall ((var0 node) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (or (not (and (inv_main7 var3 var8 var9 var4) (and (and (not (= nullAddr var2)) (and (and (and (and (= var5 (newHeap (alloc var3 (O_node var0)))) (= var7 var8)) (= var1 var9)) (= var6 var4)) (= var2 (newAddr (alloc var3 (O_node var0)))))) (<= 0 (+ var9 (- 1)))))) (inv_main11 var5 var7 var1 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (inv_main40 var1 var3 var2 var0)) (and (or (not (not (= 0 (data_0 (getnode (read var1 var2)))))) (inv_main44 var1 var3 var2 var0 1)) (or (not (= 0 (data_0 (getnode (read var1 var2))))) (inv_main44 var1 var3 var2 var0 0)))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (or (not (inv_main14 var0 var4 var5 var1 var3 var2)) (inv_main14 var0 var4 var5 var1 var3 var2)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Int)) (or (not (and (inv_main7 var4 var7 var9 var5) (and (and (= nullAddr var3) (and (and (and (and (= var8 (newHeap (alloc var4 (O_node var0)))) (= var6 var7)) (= var2 var9)) (= var1 var5)) (= var3 (newAddr (alloc var4 (O_node var0)))))) (<= 0 (+ var9 (- 1)))))) (inv_main14 var8 var6 var2 var1 var3 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (or (not (inv_main28 var0 var2 var1)) (and (or (not (not (= 0 (data_0 (getnode (read var0 var1)))))) (inv_main32 var0 var2 var1 1)) (or (not (= 0 (data_0 (getnode (read var0 var1))))) (inv_main32 var0 var2 var1 0)))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (or (not (and (inv_main26 var0 var2 var1) (not (= (next (getnode (read var0 var1))) nullAddr)))) (inv_main28 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main44 var2 var4 var3 var0 var1) (not (= var1 0)))) (inv_main46 var2 var4 var3 var0 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (and (inv_main44 var5 var8 var7 var0 var3) (and (= var3 0) (and (and (and (and (= var4 var5) (= var6 var8)) (= var9 var7)) (= var2 var0)) (or (and (not (= 0 (data_1 (getnode (read var5 var7))))) (= var1 1)) (and (= 0 (data_1 (getnode (read var5 var7)))) (= var1 0))))))) (inv_main46 var4 var6 var9 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main11 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main17 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main18 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main19 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main20 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main23 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main26 var0 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main28 var0 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int)) (not (and (inv_main32 var0 var3 var2 var1) (and (= var1 0) (not (is-O_node (read var0 var2)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main34 var1 var3 var2 var0) (and (= var0 0) (not (is-O_node (read var1 var2)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main29 var0 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main39 var0 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main40 var1 var3 var2 var0) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int)) (not (and (inv_main44 var2 var4 var3 var0 var1) (and (= var1 0) (not (is-O_node (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int)) (not (and (inv_main46 var2 var4 var3 var0 var1) (and (= var1 0) (not (is-O_node (read var2 var3)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (inv_main50 var0 var2 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/hash_fun.i.smt2 b/heap-theory-benchmarks/array/hash_fun.i.smt2 new file mode 100644 index 00000000..e7c0e4d6 --- /dev/null +++ b/heap-theory-benchmarks/array/hash_fun.i.smt2 @@ -0,0 +1,66 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (hash Int) (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main23 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main25 (Heap Addr Int) Bool) +(declare-fun inv_main26 (Heap Addr Int) Bool) +(declare-fun inv_main27 (Heap Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Int Int) Bool) +(declare-fun inv_main5 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap)) (or (not (and (inv_main29 var3 var0 var2 var1) (not (<= 0 (+ var1 (* (- 1) var2)))))) (inv_main27 var3 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Heap)) (or (not (and (inv_main29 var6 var1 var5 var3) (and (and (= var2 0) (and (<= 0 (+ var3 (* (- 1) var5))) (and (and (and (= var10 var6) (= var8 var1)) (= var9 var5)) (= var0 (hash (getnode (read var6 var1))))))) (and (and (and (= var11 var10) (= var7 var8)) (= var4 var9)) (or (and (<= 0 (+ (+ (+ var9 100) (* (- 1) var0)) (- 1))) (= var2 1)) (and (not (<= 0 (+ (+ (+ var9 100) (* (- 1) var0)) (- 1)))) (= var2 0))))))) (inv_main27 var11 var7 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr)) (or (not (and (inv_main26 var4 var0 var3) (and (not (= var2 nullAddr)) (and (and (and (= var1 var4) (= var6 var0)) (= var5 var3)) (= var2 (next (getnode (read var4 var0)))))))) (inv_main25 var1 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int)) (or (not (and (inv_main5 var2 var0 var1) (and (not (= var0 nullAddr)) (= var3 0)))) (inv_main25 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (or (not (inv_main25 var2 var0 var1)) (inv_main29 var2 var0 var1 (hash (getnode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (or (not (inv_main27 var2 var0 var1)) (inv_main26 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr)) (or (not (and (inv_main29 var7 var1 var6 var3) (and (and (not (= var4 0)) (and (<= 0 (+ var3 (* (- 1) var6))) (and (and (and (= var10 var7) (= var8 var1)) (= var9 var6)) (= var2 (hash (getnode (read var7 var1))))))) (and (and (and (= var5 var10) (= var11 var8)) (= var0 var9)) (or (and (<= 0 (+ (+ (+ var9 100) (* (- 1) var2)) (- 1))) (= var4 1)) (and (not (<= 0 (+ (+ (+ var9 100) (* (- 1) var2)) (- 1)))) (= var4 0))))))) (inv_main26 var5 var11 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (and (inv_main23 var9 var6 var8 var2 var10 var11 var13) (and (and (and (and (and (and (= var4 (write var9 var13 (O_node (node var11 (next (getnode (read var9 var13))))))) (= var12 var6)) (= var1 var8)) (= var5 var2)) (= var7 var10)) (= var3 var11)) (= var0 var13)))) (inv_main5 var4 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap)) (or (not (and (inv_main5 var3 var0 var2) (and (or (not (<= 0 var2)) (not (<= 0 (+ 1000000 (* (- 1) var2))))) (not (= var1 0))))) (inv_main5 var3 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main5 var4 var1 var3) (and (or (not (<= 0 (+ (+ var0 (* (- 1) var3)) (- 1)))) (not (<= 0 (+ (+ (+ var3 100) (* (- 1) var0)) (- 1))))) (and (and (<= 0 var3) (<= 0 (+ 1000000 (* (- 1) var3)))) (not (= var2 0)))))) (inv_main5 var4 var1 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap)) (or (not (and (inv_main2 var1) (and (= var3 var1) (= var2 nullAddr)))) (inv_main5 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 node) (var2 Int) (var3 Int) (var4 Heap) (var5 Int)) (or (not (and (inv_main5 var4 var0 var3) (and (and (<= 0 (+ (+ var5 (* (- 1) var3)) (- 1))) (<= 0 (+ (+ (+ var3 100) (* (- 1) var5)) (- 1)))) (and (and (<= 0 var3) (<= 0 (+ 1000000 (* (- 1) var3)))) (not (= var2 0)))))) (inv_main22 (newHeap (alloc var4 (O_node var1))) var0 var3 var5 1 var5 (newAddr (alloc var4 (O_node var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (or (not (inv_main22 var3 var0 var2 var1 var4 var5 var6)) (inv_main23 (write var3 var6 (O_node (node (hash (getnode (read var3 var6))) var0))) var0 var2 var1 var4 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main22 var3 var0 var2 var1 var4 var5 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main23 var3 var0 var2 var1 var4 var5 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (not (and (inv_main25 var2 var0 var1) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap)) (not (and (inv_main29 var3 var0 var2 var1) (and (<= 0 (+ var1 (* (- 1) var2))) (not (is-O_node (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (not (inv_main27 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (not (and (inv_main26 var2 var0 var1) (not (is-O_node (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/length_test03-1.i.smt2 b/heap-theory-benchmarks/array/length_test03-1.i.smt2 new file mode 100644 index 00000000..daaa4efb --- /dev/null +++ b/heap-theory-benchmarks/array/length_test03-1.i.smt2 @@ -0,0 +1,157 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node_t 0) (list_t 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node_t (getnode_t node_t)) (O_list_t (getlist_t list_t)) (defObj)) + ((node_t (data Int) (prev Addr) (next Addr))) + ((list_t (first Addr) (last Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main17 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main25 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Int Int Int) Bool) +(declare-fun inv_main37 (Heap Addr Addr Int Int Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Int Int Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int Int Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main61 (Heap Addr Addr Int Int Int Addr) Bool) +(declare-fun inv_main63 (Heap Addr Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main68 (Heap Addr Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main73 (Heap Addr Addr Int Int Int Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main18 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main22 var5 var0 var1 var2 var6 var4 var7 var3 (first (getlist_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main57 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main59 (write var3 var8 (O_node_t (node_t (data (getnode_t (read var3 var8))) (prev (getnode_t (read var3 var8))) nullAddr))) var0 var1 var2 var7 var5 var6 var4 var9 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 node_t) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (or (not (and (inv_main37 var4 var0 var1 var3 var7 var6) (<= 0 (+ (+ 5 (* (- 1) var6)) (- 1))))) (inv_main45 (newHeap (alloc var4 (O_node_t var2))) var0 var1 var3 var7 var6 var5 var1 var5 (newAddr (alloc var4 (O_node_t var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr)) (or (not (and (inv_main61 var9 var6 var7 var0 var12 var3 var4) (and (= var1 nullAddr) (and (and (and (and (and (and (and (= var2 var9) (= var14 var6)) (= var13 var7)) (= var11 var0)) (= var10 var12)) (= var8 var3)) (= var1 var4)) (= var5 (next (getnode_t (read var9 var4)))))))) (inv_main63 var2 var14 var13 var11 var10 var8 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Heap) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Int)) (or (not (and (inv_main64 var16 var9 var10 var2 var22 var3 var8 var15) (and (= var1 nullAddr) (and (and (and (and (and (and (and (and (and (= var17 var16) (= var14 var9)) (= var20 var10)) (= var19 var2)) (= var13 var22)) (= var6 var3)) (= var4 var8)) (= var21 var15)) (= var7 (next (getnode_t (read var16 var8))))) (and (and (and (and (and (and (and (= var12 (write var17 var4 defObj)) (= var11 var14)) (= var23 var20)) (= var18 var19)) (= var5 var13)) (= var24 var6)) (= var0 var4)) (= var1 var7)))))) (inv_main63 var12 var11 var23 var18 var5 var24 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main59 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main60 (write var3 (last (getlist_t (read var3 var4))) (O_node_t (node_t (data (getnode_t (read var3 (last (getlist_t (read var3 var4)))))) (prev (getnode_t (read var3 (last (getlist_t (read var3 var4)))))) var8))) var0 var1 var2 var7 var5 var6 var4 var9 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main53 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main54 (write var3 var4 (O_list_t (list_t (first (getlist_t (read var3 var4))) var8))) var0 var1 var2 var7 var5 var6 var4 var9 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main47 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main58 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8 (last (getlist_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_list_t (list_t nullAddr (last (getlist_t (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main31 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main32 (write var5 (last (getlist_t (read var5 var4))) (O_node_t (node_t (data (getnode_t (read var5 (last (getlist_t (read var5 var4)))))) (prev (getnode_t (read var5 (last (getlist_t (read var5 var4)))))) var3))) var0 var1 var2 var6 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int)) (or (not (and (inv_main50 var3 var0 var1 var2 var8 var5 var6 var4 var10 var9 var7) (not (= var7 nullAddr)))) (inv_main47 var3 var0 var1 var2 var8 var5 var6 var4 var10 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Int) (var25 Addr) (var26 Int) (var27 Int) (var28 Int) (var29 Addr) (var30 Int) (var31 Addr) (var32 Int)) (or (not (and (inv_main50 var7 var21 var6 var1 var30 var13 var15 var29 var32 var31 var3) (and (and (= var28 0) (and (= var3 nullAddr) (and (and (and (and (and (and (and (and (and (and (= var2 var7) (= var18 var21)) (= var23 var6)) (= var22 var1)) (= var9 var30)) (= var8 var13)) (= var26 var15)) (= var5 var29)) (= var4 var32)) (= var14 var31)) (= var20 (last (getlist_t (read var7 var29))))))) (and (and (and (and (and (and (and (and (and (and (= var10 var2) (= var17 var18)) (= var25 var23)) (= var16 var22)) (= var24 var9)) (= var27 var8)) (= var19 var26)) (= var12 var5)) (= var0 var4)) (= var11 var14)) (or (and (= var20 nullAddr) (= var28 1)) (and (not (= var20 nullAddr)) (= var28 0))))))) (inv_main47 var10 var17 var25 var16 var24 var27 var19 var12 var0 var11)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main63 var12 var8 var9 var3 var16 var5 var6 var11) (and (and (and (and (and (and (and (and (= var10 var12) (= var7 var8)) (= var15 var9)) (= var0 var3)) (= var1 var16)) (= var13 var5)) (= var14 var6)) (= var4 var11)) (= var2 (last (getlist_t (read var12 var9))))))) (inv_main68 var10 var7 var15 var0 var1 var13 var2 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int)) (or (not (and (inv_main61 var10 var6 var7 var3 var14 var4 var5) (and (not (= var13 nullAddr)) (and (and (and (and (and (and (and (= var1 var10) (= var9 var6)) (= var12 var7)) (= var0 var3)) (= var2 var14)) (= var11 var4)) (= var13 var5)) (= var8 (next (getnode_t (read var10 var5)))))))) (inv_main64 var1 var9 var12 var0 var2 var11 var13 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Heap) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Int)) (or (not (and (inv_main64 var16 var9 var10 var2 var22 var3 var8 var15) (and (not (= var1 nullAddr)) (and (and (and (and (and (and (and (and (and (= var17 var16) (= var14 var9)) (= var20 var10)) (= var19 var2)) (= var13 var22)) (= var6 var3)) (= var4 var8)) (= var21 var15)) (= var7 (next (getnode_t (read var16 var8))))) (and (and (and (and (and (and (and (= var12 (write var17 var4 defObj)) (= var11 var14)) (= var23 var20)) (= var18 var19)) (= var5 var13)) (= var24 var6)) (= var0 var4)) (= var1 var7)))))) (inv_main64 var12 var11 var23 var18 var5 var24 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main6 var2 var0 var1)) (inv_main7 (write var2 var1 (O_list_t (list_t nullAddr (last (getlist_t (read var2 var1)))))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main46 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main50 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8 (first (getlist_t (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Heap) (var21 Int) (var22 Addr) (var23 Int) (var24 Addr) (var25 Addr) (var26 Addr)) (or (not (and (inv_main22 var19 var17 var18 var5 var23 var7 var14 var6 var22) (and (and (not (= var8 0)) (and (= var22 nullAddr) (and (and (and (and (and (and (and (and (= var16 var19) (= var3 var17)) (= var24 var18)) (= var21 var5)) (= var0 var23)) (= var25 var7)) (= var13 var14)) (= var10 var6)) (= var2 (last (getlist_t (read var19 var7))))))) (and (and (and (and (and (and (and (and (= var20 var16) (= var12 var3)) (= var1 var24)) (= var9 var21)) (= var15 var0)) (= var26 var25)) (= var4 var13)) (= var11 var10)) (or (and (= var2 nullAddr) (= var8 1)) (and (not (= var2 nullAddr)) (= var8 0))))))) (inv_main20 var20 var12 var1 var9 var15 var26 var4 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main17 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main18 (write var5 var3 (O_node_t (node_t var7 (prev (getnode_t (read var5 var3))) (next (getnode_t (read var5 var3)))))) var0 var1 var2 var6 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int)) (or (not (inv_main58 var3 var0 var1 var2 var8 var5 var7 var4 var10 var9 var6)) (inv_main57 (write var3 var9 (O_node_t (node_t (data (getnode_t (read var3 var9))) var6 (next (getnode_t (read var3 var9)))))) var0 var1 var2 var8 var5 var7 var4 var10 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main48 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main53 (write var3 var4 (O_list_t (list_t var8 (last (getlist_t (read var3 var4)))))) var0 var1 var2 var7 var5 var6 var4 var9 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 node_t) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Heap) (var17 Int) (var18 Int)) (or (not (and (inv_main27 var16 var12 var13 var2 var17 var5 var9 var4) (and (not (= var1 0)) (and (and (and (and (and (and (and (= var7 (write var16 var4 (O_node_t (node_t (data (getnode_t (read var16 var4))) (prev (getnode_t (read var16 var4))) nullAddr)))) (= var6 var12)) (= var15 var13)) (= var8 var2)) (= var10 var17)) (= var0 var5)) (= var14 var9)) (= var11 var4))))) (inv_main17 (newHeap (alloc var7 (O_node_t var3))) var6 var15 var8 var18 var6 var18 (newAddr (alloc var7 (O_node_t var3))))))) +(assert (forall ((var0 node_t) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int) (var16 Addr) (var17 Heap)) (or (not (and (inv_main32 var13 var11 var12 var2 var15 var5 var7 var4) (and (not (= var8 0)) (and (and (and (and (and (and (= var17 (write var13 var5 (O_list_t (list_t (first (getlist_t (read var13 var5))) var4)))) (= var16 var11)) (= var9 var12)) (= var1 var2)) (= var14 var15)) (= var10 var5)) (= var6 var7))))) (inv_main17 (newHeap (alloc var17 (O_node_t var0))) var16 var9 var1 var3 var16 var3 (newAddr (alloc var17 (O_node_t var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 node_t) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main7 var4 var1 var2) (and (and (= var8 (write var4 var2 (O_list_t (list_t (first (getlist_t (read var4 var2))) nullAddr)))) (= var6 var1)) (= var3 var2)))) (inv_main17 (newHeap (alloc var8 (O_node_t var5))) var6 var3 var0 var7 var6 var7 (newAddr (alloc var8 (O_node_t var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main68 var11 var6 var7 var2 var13 var4 var5 var10) (and (and (and (and (and (and (and (and (= var9 var11) (= var15 var6)) (= var14 var7)) (= var3 var2)) (= var0 var13)) (= var8 var4)) (= var12 var5)) (= var1 var10)) (= var16 (prev (getnode_t (read var11 var5))))))) (inv_main73 var9 var15 var14 var3 var0 0 var12 var1 var16)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Heap) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Int)) (or (not (and (inv_main73 var12 var23 var9 var2 var27 var19 var21 var11 var18) (and (<= 0 (+ (+ 5 (* (- 1) (+ var4 1))) (- 1))) (and (and (and (and (and (and (and (and (and (and (= var22 var12) (= var17 var23)) (= var20 var9)) (= var8 var2)) (= var13 var27)) (= var5 var19)) (= var25 var21)) (= var16 var11)) (= var24 var18)) (= var14 (prev (getnode_t (read var12 var21))))) (and (and (and (and (and (and (and (and (= var3 (write var22 var25 defObj)) (= var7 var17)) (= var0 var20)) (= var15 var8)) (= var1 var13)) (= var4 var5)) (= var26 var25)) (= var10 var16)) (= var6 var14)))))) (inv_main73 var3 var7 var0 var15 var1 (+ var4 1) var6 var10 var6)))) +(assert (forall ((var0 Heap) (var1 list_t)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_list_t var1))) (newAddr (alloc var0 (O_list_t var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main30 var6 var0 var1 var3 var7 var5 var8 var4 var2)) (inv_main29 (write var6 var4 (O_node_t (node_t (data (getnode_t (read var6 var4))) var2 (next (getnode_t (read var6 var4)))))) var0 var1 var3 var7 var5 var8 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main29 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main31 (write var5 var3 (O_node_t (node_t (data (getnode_t (read var5 var3))) (prev (getnode_t (read var5 var3))) nullAddr))) var0 var1 var2 var6 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main19 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main30 var5 var0 var1 var2 var6 var4 var7 var3 (last (getlist_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main25 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main26 (write var5 var4 (O_list_t (list_t (first (getlist_t (read var5 var4))) var3))) var0 var1 var2 var6 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main37 var3 var0 var1 var2 var5 var4) (not (<= 0 (+ (+ 5 (* (- 1) var4)) (- 1)))))) (inv_main36 var3 var0 var1 var2 var5 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Int) (var16 Heap) (var17 Int) (var18 Addr) (var19 Int)) (or (not (and (inv_main55 var13 var11 var12 var1 var17 var5 var6 var14 var19 var18) (and (and (and (and (and (and (and (and (and (= var16 (write var13 var18 (O_node_t (node_t (data (getnode_t (read var13 var18))) (prev (getnode_t (read var13 var18))) nullAddr)))) (= var9 var11)) (= var3 var12)) (= var2 var1)) (= var15 var17)) (= var0 var5)) (= var4 var6)) (= var8 var14)) (= var7 var19)) (= var10 var18)))) (inv_main37 var16 var9 var3 var2 var15 (+ var0 1))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main60 var14 var11 var12 var4 var16 var6 var7 var15 var18 var17) (and (and (and (and (and (and (and (and (= var8 (write var14 var15 (O_list_t (list_t (first (getlist_t (read var14 var15))) var17)))) (= var3 var11)) (= var2 var12)) (= var13 var4)) (= var10 var16)) (= var9 var6)) (= var0 var7)) (= var1 var15)) (= var5 var18)))) (inv_main37 var8 var3 var2 var13 var10 (+ var9 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Heap) (var16 Int)) (or (not (and (inv_main27 var15 var11 var12 var2 var16 var4 var8 var3) (and (= var1 0) (and (and (and (and (and (and (and (= var6 (write var15 var3 (O_node_t (node_t (data (getnode_t (read var15 var3))) (prev (getnode_t (read var15 var3))) nullAddr)))) (= var5 var11)) (= var14 var12)) (= var7 var2)) (= var9 var16)) (= var0 var4)) (= var13 var8)) (= var10 var3))))) (inv_main37 var6 var5 var14 var7 5 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Heap)) (or (not (and (inv_main32 var11 var9 var10 var1 var13 var3 var6 var2) (and (= var4 0) (and (and (and (and (and (and (= var15 (write var11 var3 (O_list_t (list_t (first (getlist_t (read var11 var3))) var2)))) (= var14 var9)) (= var7 var10)) (= var0 var1)) (= var12 var13)) (= var8 var3)) (= var5 var6))))) (inv_main37 var15 var14 var7 var0 5 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main54 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main55 (write var3 var8 (O_node_t (node_t (data (getnode_t (read var3 var8))) nullAddr (next (getnode_t (read var3 var8)))))) var0 var1 var2 var7 var5 var6 var4 var9 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main26 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main27 (write var5 var3 (O_node_t (node_t (data (getnode_t (read var5 var3))) nullAddr (next (getnode_t (read var5 var3)))))) var0 var1 var2 var6 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int)) (or (not (and (inv_main22 var5 var0 var1 var2 var7 var4 var8 var3 var6) (not (= var6 nullAddr)))) (inv_main19 var5 var0 var1 var2 var7 var4 var8 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Heap)) (or (not (and (inv_main22 var17 var15 var16 var4 var21 var7 var11 var6 var20) (and (and (= var10 0) (and (= var20 nullAddr) (and (and (and (and (and (and (and (and (= var13 var17) (= var3 var15)) (= var23 var16)) (= var18 var4)) (= var0 var21)) (= var25 var7)) (= var9 var11)) (= var8 var6)) (= var1 (last (getlist_t (read var17 var7))))))) (and (and (and (and (and (and (and (and (= var26 var13) (= var12 var3)) (= var24 var23)) (= var5 var18)) (= var22 var0)) (= var19 var25)) (= var2 var9)) (= var14 var8)) (or (and (= var1 nullAddr) (= var10 1)) (and (not (= var1 nullAddr)) (= var10 0))))))) (inv_main19 var26 var12 var24 var5 var22 var19 var2 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main20 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main25 (write var5 var4 (O_list_t (list_t var3 (last (getlist_t (read var5 var4)))))) var0 var1 var2 var6 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main45 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main46 (write var3 var8 (O_node_t (node_t var9 (prev (getnode_t (read var3 var8))) (next (getnode_t (read var3 var8)))))) var0 var1 var2 var7 var5 var6 var4 var9 var8)))) +(assert (forall ((var0 Addr) (var1 list_t) (var2 Heap) (var3 Heap) (var4 Addr)) (or (not (and (inv_main4 var2 var0) (and (= var3 (write var2 var0 (O_list_t (list_t (first (getlist_t (read var2 var0))) nullAddr)))) (= var4 var0)))) (inv_main6 (newHeap (alloc var3 (O_list_t var1))) var4 (newAddr (alloc var3 (O_list_t var1))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Int) (var27 Addr) (var28 Int) (var29 Addr) (var30 Int) (var31 Addr) (var32 Int)) (or (not (and (inv_main50 var11 var25 var9 var0 var30 var19 var21 var29 var32 var31 var4) (and (and (not (= var15 0)) (and (= var4 nullAddr) (and (and (and (and (and (and (and (and (and (and (= var2 var11) (= var23 var25)) (= var27 var9)) (= var26 var0)) (= var14 var30)) (= var12 var19)) (= var28 var21)) (= var6 var29)) (= var5 var32)) (= var20 var31)) (= var24 (last (getlist_t (read var11 var29))))))) (and (and (and (and (and (and (and (and (and (and (= var3 var2) (= var16 var23)) (= var13 var27)) (= var7 var26)) (= var1 var14)) (= var8 var12)) (= var17 var28)) (= var10 var6)) (= var18 var5)) (= var22 var20)) (or (and (= var24 nullAddr) (= var15 1)) (and (not (= var24 nullAddr)) (= var15 0))))))) (inv_main48 var3 var16 var13 var7 var1 var8 var17 var10 var18 var22)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int)) (or (not (inv_main36 var3 var0 var1 var2 var5 var4)) (inv_main61 var3 var0 var1 var2 var5 var4 (first (getlist_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_list_t (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_list_t (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main6 var2 var0 var1) (not (is-O_list_t (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main7 var2 var0 var1) (not (is-O_list_t (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main17 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_node_t (read var5 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main18 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_list_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main22 var5 var0 var1 var2 var7 var4 var8 var3 var6) (and (= var6 nullAddr) (not (is-O_list_t (read var5 var4)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main20 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_list_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main25 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_list_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main26 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_node_t (read var5 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main27 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_node_t (read var5 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main19 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_list_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (not (and (inv_main30 var6 var0 var1 var3 var7 var5 var8 var4 var2) (not (is-O_node_t (read var6 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main29 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_node_t (read var5 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main31 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_list_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main31 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_node_t (read var5 (last (getlist_t (read var5 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main32 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_list_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main45 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_node_t (read var3 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main46 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int)) (not (and (inv_main50 var3 var0 var1 var2 var8 var5 var6 var4 var10 var9 var7) (and (= var7 nullAddr) (not (is-O_list_t (read var3 var4)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main48 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main53 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main54 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_node_t (read var3 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main55 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_node_t (read var3 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main47 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int)) (not (and (inv_main58 var3 var0 var1 var2 var8 var5 var7 var4 var10 var9 var6) (not (is-O_node_t (read var3 var9))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main57 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_node_t (read var3 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main59 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main59 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_node_t (read var3 (last (getlist_t (read var3 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main60 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int)) (not (and (inv_main36 var3 var0 var1 var2 var5 var4) (not (is-O_list_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main61 var4 var1 var2 var3 var6 var5 var0) (not (is-O_node_t (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main64 var5 var1 var2 var3 var7 var6 var0 var4) (not (is-O_node_t (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main63 var5 var1 var2 var3 var7 var6 var0 var4) (not (is-O_list_t (read var5 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main68 var5 var1 var2 var3 var7 var6 var0 var4) (not (is-O_node_t (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main73 var5 var1 var2 var3 var8 var7 var0 var4 var6) (not (is-O_node_t (read var5 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/list-1.i.smt2 b/heap-theory-benchmarks/array/list-1.i.smt2 new file mode 100644 index 00000000..d47c2cab --- /dev/null +++ b/heap-theory-benchmarks/array/list-1.i.smt2 @@ -0,0 +1,98 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main24 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main41 var5 var4 var1 var3) (and (= var6 1) (and (and (and (and (= var0 var5) (= var8 var4)) (= var2 var1)) (= var7 var3)) (= var6 (h (getnode (read var5 var3)))))))) (inv_main43 var0 var8 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main12 var3 var2 var0 var1) (= var4 0))) (inv_main26 var3 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main38 var7 var6 var3 var5) (and (and (and (and (= var4 var7) (= var1 var6)) (= var0 var3)) (= var8 var5)) (= var2 (n (getnode (read var7 var5))))))) (inv_main12 var4 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (and (inv_main24 var6 var5 var2 var4) (and (= var8 0) (and (and (and (and (= var1 var6) (= var3 var5)) (= var7 var2)) (= var0 var4)) (= var9 (n (getnode (read var6 var4)))))))) (inv_main12 var1 var3 var7 var9)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 node)) (or (not (and (inv_main2 var3) (and (= var0 0) (and (not (= var4 nullAddr)) (and (= var2 (newHeap (alloc var3 (O_node var5)))) (= var4 (newAddr (alloc var3 (O_node var5))))))))) (inv_main12 var2 var4 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main42 var5 var4 var1 var3) (and (= var2 2) (and (and (and (and (= var8 var5) (= var6 var4)) (= var7 var1)) (= var0 var3)) (= var2 (h (getnode (read var5 var3)))))))) (inv_main47 var8 var6 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Int)) (or (not (and (inv_main41 var6 var5 var2 var4) (and (not (= var8 1)) (and (and (and (and (= var7 var6) (= var0 var5)) (= var1 var2)) (= var3 var4)) (= var8 (h (getnode (read var6 var4)))))))) (inv_main42 var7 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main47 var7 var6 var3 var5) (and (and (and (and (= var4 var7) (= var1 var6)) (= var2 var3)) (= var0 var5)) (= var8 (n (getnode (read var7 var5))))))) (inv_main42 var4 var1 var2 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main46 var6 var5 var2 var4) (and (not (= var0 3)) (and (and (and (and (= var1 var6) (= var3 var5)) (= var7 var2)) (= var8 var4)) (= var0 (h (getnode (read var6 var4)))))))) (inv_main51 var1 var3 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int)) (or (not (inv_main7 var1 var0 var2)) (inv_main7 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 node) (var3 Addr)) (or (not (and (inv_main2 var0) (and (= var3 nullAddr) (and (= var1 (newHeap (alloc var0 (O_node var2)))) (= var3 (newAddr (alloc var0 (O_node var2)))))))) (inv_main7 var1 var3 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 node) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main13 var7 var6 var0 var1) (and (not (= var9 nullAddr)) (and (and (and (and (and (= var5 (newHeap (alloc var3 (O_node var2)))) (= var11 var12)) (= var10 var8)) (= var4 var13)) (= var9 (newAddr (alloc var3 (O_node var2))))) (and (and (and (= var3 (write var7 var1 (O_node (node 1 (n (getnode (read var7 var1))))))) (= var12 var6)) (= var8 var0)) (= var13 var1)))))) (inv_main18 var5 var11 var9 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main24 var7 var6 var3 var5) (and (not (= var2 0)) (and (and (and (and (= var1 var7) (= var4 var6)) (= var8 var3)) (= var0 var5)) (= var9 (n (getnode (read var7 var5)))))))) (inv_main13 var1 var4 var8 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 node)) (or (not (and (inv_main2 var2) (and (not (= var0 0)) (and (not (= var4 nullAddr)) (and (= var1 (newHeap (alloc var2 (O_node var5)))) (= var4 (newAddr (alloc var2 (O_node var5))))))))) (inv_main13 var1 var4 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main12 var4 var3 var0 var2) (not (= var1 0)))) (inv_main27 var4 var3 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (inv_main21 var4 var3 var1 var2 var0)) (inv_main21 var4 var3 var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 node) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main13 var7 var6 var0 var1) (and (= var9 nullAddr) (and (and (and (and (and (= var5 (newHeap (alloc var3 (O_node var2)))) (= var11 var12)) (= var10 var8)) (= var4 var13)) (= var9 (newAddr (alloc var3 (O_node var2))))) (and (and (and (= var3 (write var7 var1 (O_node (node 1 (n (getnode (read var7 var1))))))) (= var12 var6)) (= var8 var0)) (= var13 var1)))))) (inv_main21 var5 var11 var9 var4 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main42 var4 var3 var0 var2) (and (not (= var5 2)) (and (and (and (and (= var1 var4) (= var7 var3)) (= var6 var0)) (= var8 var2)) (= var5 (h (getnode (read var4 var2)))))))) (inv_main46 var1 var7 var6 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main43 var5 var4 var2 var3) (and (and (and (and (= var7 var5) (= var1 var4)) (= var6 var2)) (= var0 var3)) (= var8 (n (getnode (read var5 var3))))))) (inv_main41 var7 var1 var6 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main26 var3 var2 var0 var1) (and (and (and (= var7 (write var3 var1 (O_node (node 3 (n (getnode (read var3 var1))))))) (= var5 var2)) (= var6 var0)) (= var4 var1)))) (inv_main41 var7 var5 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (inv_main35 var3 var2 var0 var1 var4)) (inv_main35 var3 var2 var0 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 node) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr)) (or (not (and (inv_main27 var11 var10 var1 var3) (and (= var13 nullAddr) (and (and (and (and (and (= var0 (newHeap (alloc var6 (O_node var9)))) (= var2 var5)) (= var7 var12)) (= var8 var4)) (= var13 (newAddr (alloc var6 (O_node var9))))) (and (and (and (= var6 (write var11 var3 (O_node (node 2 (n (getnode (read var11 var3))))))) (= var5 var10)) (= var12 var1)) (= var4 var3)))))) (inv_main35 var0 var2 var13 var8 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main32 var3 var2 var0 var1)) (inv_main38 (write var3 var1 (O_node (node (h (getnode (read var3 var1))) var0))) var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main18 var3 var2 var0 var1)) (inv_main24 (write var3 var1 (O_node (node (h (getnode (read var3 var1))) var0))) var2 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main46 var5 var4 var1 var3) (and (= var8 3) (and (and (and (and (= var0 var5) (= var7 var4)) (= var6 var1)) (= var2 var3)) (= var8 (h (getnode (read var5 var3)))))))) (inv_main0 var0 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 node) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr)) (or (not (and (inv_main27 var11 var10 var1 var3) (and (not (= var13 nullAddr)) (and (and (and (and (and (= var0 (newHeap (alloc var6 (O_node var9)))) (= var2 var5)) (= var7 var12)) (= var8 var4)) (= var13 (newAddr (alloc var6 (O_node var9))))) (and (and (and (= var6 (write var11 var3 (O_node (node 2 (n (getnode (read var11 var3))))))) (= var5 var10)) (= var12 var1)) (= var4 var3)))))) (inv_main32 var0 var2 var13 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main13 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main18 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main24 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main27 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main32 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main38 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main26 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main41 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main43 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main42 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main47 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main46 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main51 var3 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr)) (not (and (inv_main0 var1 var0) (not (= (read var1 var2) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/list-2.i.smt2 b/heap-theory-benchmarks/array/list-2.i.smt2 new file mode 100644 index 00000000..01954a4a --- /dev/null +++ b/heap-theory-benchmarks/array/list-2.i.smt2 @@ -0,0 +1,95 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main24 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main42 var8 var5 var2 var1) (and (= var0 1) (and (and (and (and (= var6 var8) (= var3 var5)) (= var4 var2)) (= var7 var1)) (= var0 (h (getnode (read var8 var1)))))))) (inv_main47 var6 var3 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 node) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main27 var6 var2 var8 var7) (and (not (= var11 nullAddr)) (and (and (and (and (and (= var13 (newHeap (alloc var10 (O_node var5)))) (= var4 var0)) (= var3 var1)) (= var9 var12)) (= var11 (newAddr (alloc var10 (O_node var5))))) (and (and (and (= var10 (write var6 var7 (O_node (node 2 (n (getnode (read var6 var7))))))) (= var0 var2)) (= var1 var8)) (= var12 var7)))))) (inv_main32 var13 var4 var11 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Heap)) (or (not (and (inv_main42 var8 var4 var1 var0) (and (not (= var3 1)) (and (and (and (and (= var7 var8) (= var5 var4)) (= var6 var1)) (= var2 var0)) (= var3 (h (getnode (read var8 var0)))))))) (inv_main46 var7 var5 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main21 var4 var2 var1 var0 var3)) (inv_main21 var4 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 node) (var12 Addr) (var13 Addr)) (or (not (and (inv_main13 var5 var3 var9 var8) (and (= var0 nullAddr) (and (and (and (and (and (= var2 (newHeap (alloc var1 (O_node var11)))) (= var6 var10)) (= var7 var13)) (= var4 var12)) (= var0 (newAddr (alloc var1 (O_node var11))))) (and (and (and (= var1 (write var5 var8 (O_node (node 1 (n (getnode (read var5 var8))))))) (= var10 var3)) (= var13 var9)) (= var12 var8)))))) (inv_main21 var2 var6 var0 var4 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (or (not (inv_main7 var2 var1 var0)) (inv_main7 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 node) (var3 Heap)) (or (not (and (inv_main2 var3) (and (= var0 nullAddr) (and (= var1 (newHeap (alloc var3 (O_node var2)))) (= var0 (newAddr (alloc var3 (O_node var2)))))))) (inv_main7 var1 var0 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main12 var3 var2 var1 var0) (not (= var4 0)))) (inv_main27 var3 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main18 var3 var2 var1 var0)) (inv_main24 (write var3 var0 (O_node (node (h (getnode (read var3 var0))) var1))) var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main41 var8 var6 var1 var0) (and (= var7 2) (and (and (and (and (= var5 var8) (= var3 var6)) (= var2 var1)) (= var4 var0)) (= var7 (h (getnode (read var8 var0)))))))) (inv_main43 var5 var3 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main43 var8 var5 var2 var1) (and (and (and (and (= var6 var8) (= var0 var5)) (= var3 var2)) (= var7 var1)) (= var4 (n (getnode (read var8 var1))))))) (inv_main41 var6 var0 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap)) (or (not (and (inv_main26 var7 var4 var1 var0) (and (and (and (= var5 (write var7 var0 (O_node (node 3 (n (getnode (read var7 var0))))))) (= var6 var4)) (= var3 var1)) (= var2 var0)))) (inv_main41 var5 var6 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main41 var7 var4 var1 var0) (and (not (= var5 2)) (and (and (and (and (= var2 var7) (= var8 var4)) (= var3 var1)) (= var6 var0)) (= var5 (h (getnode (read var7 var0)))))))) (inv_main42 var2 var8 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main47 var8 var4 var1 var0) (and (and (and (and (= var2 var8) (= var6 var4)) (= var5 var1)) (= var3 var0)) (= var7 (n (getnode (read var8 var0))))))) (inv_main42 var2 var6 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main32 var3 var2 var1 var0)) (inv_main38 (write var3 var0 (O_node (node (h (getnode (read var3 var0))) var1))) var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main38 var8 var5 var2 var1) (and (and (and (and (= var3 var8) (= var6 var5)) (= var7 var2)) (= var0 var1)) (= var4 (n (getnode (read var8 var1))))))) (inv_main12 var3 var6 var7 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main24 var8 var6 var1 var0) (and (= var9 0) (and (and (and (and (= var4 var8) (= var3 var6)) (= var2 var1)) (= var7 var0)) (= var5 (n (getnode (read var8 var0)))))))) (inv_main12 var4 var3 var2 var5)))) +(assert (forall ((var0 Int) (var1 node) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (and (inv_main2 var3) (and (= var0 0) (and (not (= var5 nullAddr)) (and (= var2 (newHeap (alloc var3 (O_node var1)))) (= var5 (newAddr (alloc var3 (O_node var1))))))))) (inv_main12 var2 var5 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap)) (or (not (and (inv_main24 var9 var6 var1 var0) (and (not (= var7 0)) (and (and (and (and (= var4 var9) (= var3 var6)) (= var2 var1)) (= var8 var0)) (= var5 (n (getnode (read var9 var0)))))))) (inv_main13 var4 var3 var2 var5)))) +(assert (forall ((var0 node) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main2 var3) (and (not (= var4 0)) (and (not (= var5 nullAddr)) (and (= var1 (newHeap (alloc var3 (O_node var0)))) (= var5 (newAddr (alloc var3 (O_node var0))))))))) (inv_main13 var1 var5 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main12 var4 var2 var1 var0) (= var3 0))) (inv_main26 var4 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main35 var4 var2 var1 var0 var3)) (inv_main35 var4 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 node) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main27 var6 var2 var8 var7) (and (= var11 nullAddr) (and (and (and (and (and (= var13 (newHeap (alloc var10 (O_node var5)))) (= var4 var0)) (= var3 var1)) (= var9 var12)) (= var11 (newAddr (alloc var10 (O_node var5))))) (and (and (and (= var10 (write var6 var7 (O_node (node 2 (n (getnode (read var6 var7))))))) (= var0 var2)) (= var1 var8)) (= var12 var7)))))) (inv_main35 var13 var4 var11 var9 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 node) (var12 Addr) (var13 Addr)) (or (not (and (inv_main13 var5 var3 var9 var8) (and (not (= var0 nullAddr)) (and (and (and (and (and (= var2 (newHeap (alloc var1 (O_node var11)))) (= var6 var10)) (= var7 var13)) (= var4 var12)) (= var0 (newAddr (alloc var1 (O_node var11))))) (and (and (and (= var1 (write var5 var8 (O_node (node 1 (n (getnode (read var5 var8))))))) (= var10 var3)) (= var13 var9)) (= var12 var8)))))) (inv_main18 var2 var6 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main46 var8 var6 var2 var1) (and (not (= var0 3)) (and (and (and (and (= var5 var8) (= var3 var6)) (= var4 var2)) (= var7 var1)) (= var0 (h (getnode (read var8 var1)))))))) (inv_main51 var5 var3 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main13 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main18 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main24 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main27 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main32 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main38 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main26 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main41 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main43 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main42 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main47 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main46 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main51 var3 var2 var1 var0)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/list-ext.i.smt2 b/heap-theory-benchmarks/array/list-ext.i.smt2 new file mode 100644 index 00000000..1a8d8151 --- /dev/null +++ b/heap-theory-benchmarks/array/list-ext.i.smt2 @@ -0,0 +1,108 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main13 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main14 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main30 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main68 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 0 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main50 var7 var9 var1 var3 var12 var8) (and (= var10 1) (and (and (and (and (and (and (= var11 var7) (= var6 var9)) (= var2 var1)) (= var5 var3)) (= var0 var12)) (= var4 var8)) (= var10 (h (getnode (read var7 var8)))))))) (inv_main54 var11 (+ var6 1) var2 var5 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main50 var8 var10 var0 var2 var12 var9) (and (not (= var7 1)) (and (and (and (and (and (and (= var11 var8) (= var6 var10)) (= var5 var0)) (= var4 var2)) (= var3 var12)) (= var1 var9)) (= var7 (h (getnode (read var8 var9)))))))) (inv_main51 var11 var6 var5 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main59 var6 var8 var0 var3 var11 var7) (and (and (and (and (and (and (= var9 var6) (= var12 var8)) (= var4 var0)) (= var2 var3)) (= var10 var11)) (= var5 var7)) (= var1 (n (getnode (read var6 var7))))))) (inv_main51 var9 var12 var4 var2 var10 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Heap) (var15 node) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr)) (or (not (and (inv_main34 var8 var10 var11 var6 var19 var9) (and (not (= var5 nullAddr)) (and (and (and (and (and (and (and (= var16 (newHeap (alloc var14 (O_node var15)))) (= var0 var12)) (= var2 var18)) (= var13 var17)) (= var3 var7)) (= var4 var1)) (= var5 (newAddr (alloc var14 (O_node var15))))) (and (and (and (and (and (= var14 (write var8 var9 (O_node (node 2 (n (getnode (read var8 var9))))))) (= var12 var10)) (= var18 var11)) (= var17 var6)) (= var7 var19)) (= var1 var9)))))) (inv_main38 var16 var0 var2 var13 var5 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (inv_main25 var3 var5 var0 var1 var6 var4 var2)) (inv_main25 var3 var5 var0 var1 var6 var4 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 node) (var10 Int) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr)) (or (not (and (inv_main18 var4 var6 var12 var2 var19 var5) (and (= var3 nullAddr) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var13 (O_node var9)))) (= var10 var17)) (= var0 var16)) (= var1 var14)) (= var18 var8)) (= var15 var7)) (= var3 (newAddr (alloc var13 (O_node var9))))) (and (and (and (and (and (= var13 (write var4 var5 (O_node (node 1 (n (getnode (read var4 var5))))))) (= var17 var6)) (= var16 var12)) (= var14 var2)) (= var8 var19)) (= var7 var5)))))) (inv_main25 var11 var10 var0 var1 var3 var15 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main51 var4 var6 var0 var2 var10 var5) (and (= var9 2) (and (and (and (and (and (and (= var3 var4) (= var12 var6)) (= var8 var0)) (= var7 var2)) (= var11 var10)) (= var1 var5)) (= var9 (h (getnode (read var4 var5)))))))) (inv_main59 var3 var12 (+ var8 1) var7 var11 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr)) (or (not (and (inv_main28 var6 var8 var1 var5 var11 var7) (and (and (and (and (and (and (= var9 var6) (= var0 var8)) (= var10 var1)) (= var12 var5)) (= var2 var11)) (= var4 var7)) (= var3 (n (getnode (read var6 var7))))))) (inv_main13 var9 var0 var10 var12 var2 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 node) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main4 var6 var7 var2) (and (not (= var8 nullAddr)) (and (and (and (= var3 (newHeap (alloc var6 (O_node var4)))) (= var0 var7)) (= var5 var2)) (= var8 (newAddr (alloc var6 (O_node var4)))))))) (inv_main13 var3 var0 var5 var8 var1 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int)) (or (not (and (inv_main56 var5 var7 var2 var3 var10 var6) (and (or (not (= var0 3)) (<= 0 (+ (+ 20 (* (- 1) (+ var9 var12))) (- 1)))) (and (and (and (and (and (and (= var11 var5) (= var9 var7)) (= var12 var2)) (= var1 var3)) (= var4 var10)) (= var8 var6)) (= var0 (h (getnode (read var5 var6)))))))) (inv_main62 var11 var9 var12 var1 var4 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main38 var2 var4 var0 var1 var5 var3)) (inv_main44 (write var2 var3 (O_node (node (h (getnode (read var2 var3))) var5))) var4 var0 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main22 var2 var4 var0 var1 var5 var3)) (inv_main28 (write var2 var3 (O_node (node (h (getnode (read var2 var3))) var5))) var4 var0 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr)) (or (not (and (inv_main51 var8 var10 var1 var5 var11 var9) (and (not (= var7 2)) (and (and (and (and (and (and (= var4 var8) (= var6 var10)) (= var0 var1)) (= var2 var5)) (= var3 var11)) (= var12 var9)) (= var7 (h (getnode (read var8 var9)))))))) (inv_main56 var4 var6 var0 var2 var3 var12)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (inv_main41 var3 var5 var0 var1 var6 var4 var2)) (inv_main41 var3 var5 var0 var1 var6 var4 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Heap) (var15 node) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr)) (or (not (and (inv_main34 var8 var10 var11 var6 var19 var9) (and (= var5 nullAddr) (and (and (and (and (and (and (and (= var16 (newHeap (alloc var14 (O_node var15)))) (= var0 var12)) (= var2 var18)) (= var13 var17)) (= var3 var7)) (= var4 var1)) (= var5 (newAddr (alloc var14 (O_node var15))))) (and (and (and (and (and (= var14 (write var8 var9 (O_node (node 2 (n (getnode (read var8 var9))))))) (= var12 var10)) (= var18 var11)) (= var17 var6)) (= var7 var19)) (= var1 var9)))))) (inv_main41 var16 var0 var2 var13 var5 var4 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main30 var2 var4 var0 var1 var5 var3)) (inv_main46 (write var2 var3 (O_node (node 3 (n (getnode (read var2 var3)))))) var4 var0 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (inv_main9 var2 var3 var0 var1 var4)) (inv_main9 var2 var3 var0 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 node) (var3 Heap) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr)) (or (not (and (inv_main4 var4 var5 var1) (and (= var7 nullAddr) (and (and (and (= var3 (newHeap (alloc var4 (O_node var2)))) (= var0 var5)) (= var6 var1)) (= var7 (newAddr (alloc var4 (O_node var2)))))))) (inv_main9 var3 var0 var6 var7 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 node) (var10 Int) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr)) (or (not (and (inv_main18 var4 var6 var12 var2 var19 var5) (and (not (= var3 nullAddr)) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var13 (O_node var9)))) (= var10 var17)) (= var0 var16)) (= var1 var14)) (= var18 var8)) (= var15 var7)) (= var3 (newAddr (alloc var13 (O_node var9))))) (and (and (and (and (and (= var13 (write var4 var5 (O_node (node 1 (n (getnode (read var4 var5))))))) (= var17 var6)) (= var16 var12)) (= var14 var2)) (= var8 var19)) (= var7 var5)))))) (inv_main22 var11 var10 var0 var1 var3 var15)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main14 var3 var5 var0 var2 var6 var4) (and (not (= var1 0)) (<= 0 (+ (+ 10 (* (- 1) var0)) (- 1)))))) (inv_main34 var3 var5 (+ var0 1) var2 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main13 var3 var5 var1 var2 var6 var4) (and (not (= var0 0)) (<= 0 (+ (+ 10 (* (- 1) var5)) (- 1)))))) (inv_main18 var3 (+ var5 1) var1 var2 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap)) (or (not (and (inv_main54 var6 var8 var1 var4 var10 var7) (and (and (and (and (and (and (= var12 var6) (= var9 var8)) (= var11 var1)) (= var5 var4)) (= var0 var10)) (= var2 var7)) (= var3 (n (getnode (read var6 var7))))))) (inv_main50 var12 var9 var11 var5 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap)) (or (not (and (inv_main46 var5 var7 var2 var3 var10 var6) (and (and (and (and (and (= var11 (write var5 var6 (O_node (node (h (getnode (read var5 var6))) 0)))) (= var9 var7)) (= var1 var2)) (= var4 var3)) (= var8 var10)) (= var0 var6)))) (inv_main50 var11 0 0 var4 var8 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main66 var5 var7 var2 var3 var12 var6) (and (not (= var8 nullAddr)) (and (and (and (and (and (and (= var1 var5) (= var9 var7)) (= var4 var2)) (= var0 var3)) (= var11 var12)) (= var10 var6)) (= var8 (n (getnode (read var5 var6)))))))) (inv_main68 var1 var9 var4 var0 var11 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (and (inv_main14 var2 var4 var0 var1 var5 var3) (not (<= 0 (+ (+ 10 (* (- 1) var0)) (- 1)))))) (inv_main30 var2 var4 var0 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main14 var3 var5 var1 var2 var6 var4) (and (= var0 0) (<= 0 (+ (+ 10 (* (- 1) var1)) (- 1)))))) (inv_main30 var3 var5 var1 var2 var6 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr)) (or (not (and (inv_main56 var8 var10 var2 var4 var12 var9) (and (and (= var0 3) (not (<= 0 (+ (+ 20 (* (- 1) (+ var7 var6))) (- 1))))) (and (and (and (and (and (and (= var5 var8) (= var7 var10)) (= var6 var2)) (= var3 var4)) (= var11 var12)) (= var1 var9)) (= var0 (h (getnode (read var8 var9)))))))) (inv_main66 var5 var7 var6 var3 var11 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main68 var5 var7 var12 var3 var18 var6) (and (and (and (and (and (and (and (= var14 var5) (= var16 var7)) (= var11 var12)) (= var0 var3)) (= var1 var18)) (= var9 var6)) (= var15 (n (getnode (read var5 var6))))) (and (and (and (and (and (= var2 (write var14 var9 defObj)) (= var4 var16)) (= var8 var11)) (= var13 var0)) (= var17 var15)) (= var10 var9))))) (inv_main66 var2 var4 var8 var13 var17 var17)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main44 var6 var8 var1 var2 var11 var7) (and (and (and (and (and (and (= var9 var6) (= var5 var8)) (= var3 var1)) (= var0 var2)) (= var10 var11)) (= var12 var7)) (= var4 (n (getnode (read var6 var7))))))) (inv_main14 var9 var5 var3 var0 var10 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (and (inv_main13 var2 var4 var0 var1 var5 var3) (not (<= 0 (+ (+ 10 (* (- 1) var4)) (- 1)))))) (inv_main14 var2 var4 var0 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main13 var3 var5 var0 var2 var6 var4) (and (= var1 0) (<= 0 (+ (+ 10 (* (- 1) var5)) (- 1)))))) (inv_main14 var3 var5 var0 var2 var6 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main18 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main22 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main28 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main34 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main38 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main44 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main30 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main46 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main50 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main54 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main51 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main59 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main56 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (inv_main62 var2 var4 var0 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main66 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main68 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/list-ext_1.i.smt2 b/heap-theory-benchmarks/array/list-ext_1.i.smt2 new file mode 100644 index 00000000..a3449b74 --- /dev/null +++ b/heap-theory-benchmarks/array/list-ext_1.i.smt2 @@ -0,0 +1,108 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main13 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main14 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main30 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main68 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 0 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main51 var5 var8 var0 var1 var2 var7) (and (not (= var4 2)) (and (and (and (and (and (and (= var3 var5) (= var6 var8)) (= var12 var0)) (= var10 var1)) (= var9 var2)) (= var11 var7)) (= var4 (h (getnode (read var5 var7)))))))) (inv_main56 var3 var6 var12 var10 var9 var11)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main25 var3 var6 var0 var1 var2 var4 var5)) (inv_main25 var3 var6 var0 var1 var2 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 node) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Addr)) (or (not (and (inv_main18 var15 var8 var2 var13 var5 var7) (and (= var9 nullAddr) (and (and (and (and (and (and (and (= var18 (newHeap (alloc var4 (O_node var6)))) (= var11 var14)) (= var1 var12)) (= var17 var10)) (= var16 var0)) (= var3 var19)) (= var9 (newAddr (alloc var4 (O_node var6))))) (and (and (and (and (and (= var4 (write var15 var7 (O_node (node 1 (n (getnode (read var15 var7))))))) (= var14 var8)) (= var12 var2)) (= var10 var13)) (= var0 var5)) (= var19 var7)))))) (inv_main25 var18 var11 var1 var17 var9 var3 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Int)) (or (not (and (inv_main54 var4 var12 var0 var1 var2 var9) (and (and (and (and (and (and (= var10 var4) (= var11 var12)) (= var8 var0)) (= var7 var1)) (= var6 var2)) (= var3 var9)) (= var5 (n (getnode (read var4 var9))))))) (inv_main50 var10 var11 var8 var7 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Addr)) (or (not (and (inv_main46 var5 var9 var0 var2 var3 var7) (and (and (and (and (and (= var8 (write var5 var7 (O_node (node (h (getnode (read var5 var7))) 0)))) (= var1 var9)) (= var4 var0)) (= var11 var2)) (= var10 var3)) (= var6 var7)))) (inv_main50 var8 0 0 var11 var10 var11)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int)) (or (not (and (inv_main51 var5 var10 var1 var2 var3 var8) (and (= var4 2) (and (and (and (and (and (and (= var7 var5) (= var12 var10)) (= var9 var1)) (= var11 var2)) (= var6 var3)) (= var0 var8)) (= var4 (h (getnode (read var5 var8)))))))) (inv_main59 var7 var12 (+ var9 1) var11 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap)) (or (not (and (inv_main50 var6 var11 var1 var2 var3 var9) (and (not (= var5 1)) (and (and (and (and (and (and (= var12 var6) (= var10 var11)) (= var8 var1)) (= var4 var2)) (= var7 var3)) (= var0 var9)) (= var5 (h (getnode (read var6 var9)))))))) (inv_main51 var12 var10 var8 var4 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main59 var7 var10 var1 var3 var4 var9) (and (and (and (and (and (and (= var11 var7) (= var6 var10)) (= var8 var1)) (= var0 var3)) (= var2 var4)) (= var12 var9)) (= var5 (n (getnode (read var7 var9))))))) (inv_main51 var11 var6 var8 var0 var2 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main50 var4 var11 var0 var2 var3 var9) (and (= var8 1) (and (and (and (and (and (and (= var5 var4) (= var10 var11)) (= var7 var0)) (= var6 var2)) (= var1 var3)) (= var12 var9)) (= var8 (h (getnode (read var4 var9)))))))) (inv_main54 var5 (+ var10 1) var7 var6 var1 var12)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main66 var6 var11 var1 var4 var5 var10) (and (not (= var3 nullAddr)) (and (and (and (and (and (and (= var0 var6) (= var8 var11)) (= var9 var1)) (= var7 var4)) (= var2 var5)) (= var12 var10)) (= var3 (n (getnode (read var6 var10)))))))) (inv_main68 var0 var8 var9 var7 var2 var12)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int)) (or (not (and (inv_main14 var4 var6 var0 var1 var2 var5) (and (not (= var3 0)) (<= 0 (+ (+ 10 (* (- 1) var0)) (- 1)))))) (inv_main34 var4 var6 (+ var0 1) var1 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int)) (or (not (and (inv_main56 var6 var10 var2 var3 var4 var8) (and (and (= var9 3) (not (<= 0 (+ (+ (+ var12 var11) (- 20)) (- 1))))) (and (and (and (and (and (and (= var7 var6) (= var12 var10)) (= var11 var2)) (= var0 var3)) (= var1 var4)) (= var5 var8)) (= var9 (h (getnode (read var6 var8)))))))) (inv_main66 var7 var12 var11 var0 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Heap) (var18 Int)) (or (not (and (inv_main68 var16 var11 var1 var14 var3 var7) (and (and (and (and (and (and (and (= var8 var16) (= var0 var11)) (= var10 var1)) (= var15 var14)) (= var5 var3)) (= var2 var7)) (= var9 (n (getnode (read var16 var7))))) (and (and (and (and (and (= var17 (write var8 var2 defObj)) (= var4 var0)) (= var18 var10)) (= var13 var15)) (= var6 var9)) (= var12 var2))))) (inv_main66 var17 var4 var18 var13 var6 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main44 var7 var11 var0 var3 var4 var8) (and (and (and (and (and (and (= var5 var7) (= var9 var11)) (= var6 var0)) (= var12 var3)) (= var1 var4)) (= var2 var8)) (= var10 (n (getnode (read var7 var8))))))) (inv_main14 var5 var9 var6 var12 var1 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (and (inv_main13 var3 var5 var0 var1 var2 var4) (not (<= 0 (+ (+ 10 (* (- 1) var5)) (- 1)))))) (inv_main14 var3 var5 var0 var1 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main13 var3 var6 var0 var1 var2 var5) (and (= var4 0) (<= 0 (+ (+ 10 (* (- 1) var6)) (- 1)))))) (inv_main14 var3 var6 var0 var1 var2 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (inv_main9 var2 var3 var0 var1 var4)) (inv_main9 var2 var3 var0 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 node) (var5 Heap) (var6 Int) (var7 Int)) (or (not (and (inv_main4 var3 var6 var0) (and (= var2 nullAddr) (and (and (and (= var5 (newHeap (alloc var3 (O_node var4)))) (= var7 var6)) (= var1 var0)) (= var2 (newAddr (alloc var3 (O_node var4)))))))) (inv_main9 var5 var7 var1 var2 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (inv_main38 var3 var5 var0 var1 var2 var4)) (inv_main44 (write var3 var4 (O_node (node (h (getnode (read var3 var4))) var2))) var5 var0 var1 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (inv_main41 var3 var6 var0 var1 var2 var5 var4)) (inv_main41 var3 var6 var0 var1 var2 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 node) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Heap) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr)) (or (not (and (inv_main34 var15 var8 var1 var12 var3 var6) (and (= var10 nullAddr) (and (and (and (and (and (and (and (= var16 (newHeap (alloc var14 (O_node var5)))) (= var13 var11)) (= var9 var18)) (= var7 var0)) (= var4 var2)) (= var19 var17)) (= var10 (newAddr (alloc var14 (O_node var5))))) (and (and (and (and (and (= var14 (write var15 var6 (O_node (node 2 (n (getnode (read var15 var6))))))) (= var11 var8)) (= var18 var1)) (= var0 var12)) (= var2 var3)) (= var17 var6)))))) (inv_main41 var16 var13 var9 var7 var10 var19 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (inv_main22 var3 var5 var0 var1 var2 var4)) (inv_main28 (write var3 var4 (O_node (node (h (getnode (read var3 var4))) var2))) var5 var0 var1 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 node) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Addr)) (or (not (and (inv_main18 var15 var8 var2 var13 var5 var7) (and (not (= var9 nullAddr)) (and (and (and (and (and (and (and (= var18 (newHeap (alloc var4 (O_node var6)))) (= var11 var14)) (= var1 var12)) (= var17 var10)) (= var16 var0)) (= var3 var19)) (= var9 (newAddr (alloc var4 (O_node var6))))) (and (and (and (and (and (= var4 (write var15 var7 (O_node (node 1 (n (getnode (read var15 var7))))))) (= var14 var8)) (= var12 var2)) (= var10 var13)) (= var0 var5)) (= var19 var7)))))) (inv_main22 var18 var11 var1 var17 var9 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap)) (or (not (and (inv_main28 var6 var10 var0 var3 var4 var8) (and (and (and (and (and (and (= var12 var6) (= var2 var10)) (= var1 var0)) (= var9 var3)) (= var7 var4)) (= var11 var8)) (= var5 (n (getnode (read var6 var8))))))) (inv_main13 var12 var2 var1 var9 var7 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 node) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main4 var1 var7 var0) (and (not (= var4 nullAddr)) (and (and (and (= var8 (newHeap (alloc var1 (O_node var3)))) (= var6 var7)) (= var2 var0)) (= var4 (newAddr (alloc var1 (O_node var3)))))))) (inv_main13 var8 var6 var2 var4 var5 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int)) (or (not (and (inv_main56 var5 var10 var0 var1 var2 var8) (and (or (not (= var3 3)) (<= 0 (+ (+ (+ var9 var12) (- 20)) (- 1)))) (and (and (and (and (and (and (= var7 var5) (= var9 var10)) (= var12 var0)) (= var6 var1)) (= var4 var2)) (= var11 var8)) (= var3 (h (getnode (read var5 var8)))))))) (inv_main62 var7 var9 var12 var6 var4 var11)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (and (inv_main14 var3 var5 var0 var1 var2 var4) (not (<= 0 (+ (+ 10 (* (- 1) var0)) (- 1)))))) (inv_main30 var3 var5 var0 var1 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main14 var3 var6 var0 var1 var2 var5) (and (= var4 0) (<= 0 (+ (+ 10 (* (- 1) var0)) (- 1)))))) (inv_main30 var3 var6 var0 var1 var2 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (inv_main30 var3 var5 var0 var1 var2 var4)) (inv_main46 (write var3 var4 (O_node (node 3 (n (getnode (read var3 var4)))))) var5 var0 var1 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 node) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Heap) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr)) (or (not (and (inv_main34 var15 var8 var1 var12 var3 var6) (and (not (= var10 nullAddr)) (and (and (and (and (and (and (and (= var16 (newHeap (alloc var14 (O_node var5)))) (= var13 var11)) (= var9 var18)) (= var7 var0)) (= var4 var2)) (= var19 var17)) (= var10 (newAddr (alloc var14 (O_node var5))))) (and (and (and (and (and (= var14 (write var15 var6 (O_node (node 2 (n (getnode (read var15 var6))))))) (= var11 var8)) (= var18 var1)) (= var0 var12)) (= var2 var3)) (= var17 var6)))))) (inv_main38 var16 var13 var9 var7 var10 var19)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int)) (or (not (and (inv_main13 var3 var6 var0 var1 var2 var4) (and (not (= var5 0)) (<= 0 (+ (+ 10 (* (- 1) var6)) (- 1)))))) (inv_main18 var3 (+ var6 1) var0 var1 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main18 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main22 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main28 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main34 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main38 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main44 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main30 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main46 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main50 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main54 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main51 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main59 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main56 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (inv_main62 var3 var5 var0 var1 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main66 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main68 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/list-ext_flag_1.i.smt2 b/heap-theory-benchmarks/array/list-ext_flag_1.i.smt2 new file mode 100644 index 00000000..d5e8d66a --- /dev/null +++ b/heap-theory-benchmarks/array/list-ext_flag_1.i.smt2 @@ -0,0 +1,108 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (flag Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main13 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main19 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main20 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main3 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main37 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main9 (Heap Addr Addr Addr Int) Bool) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (= var3 emptyHeap)) (inv_main3 var3 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main56 var0 var5 var4 var3 var8) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var7 var0) (= var10 var5)) (= var2 var4)) (= var9 var3)) (= var1 var8)) (= var6 (n (getnode (read var0 var5)))))))) (inv_main58 var7 var10 var2 var9 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var1 var6 var5 var4 var9) (and (= var7 1) (and (and (and (and (and (= var10 var1) (= var0 var6)) (= var8 var5)) (= var2 var4)) (= var3 var9)) (= var7 (h (getnode (read var1 var6)))))))) (inv_main41 var10 var0 var8 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int)) (or (not (and (inv_main43 var1 var7 var5 var4 var10) (and (= var3 2) (and (and (and (and (and (= var9 var1) (= var8 var7)) (= var2 var5)) (= var6 var4)) (= var0 var10)) (= var3 (h (getnode (read var1 var7)))))))) (inv_main41 var9 var8 var2 var6 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (or (not (inv_main29 var0 var4 var2 var1 var5 var3)) (inv_main29 var0 var4 var2 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 node) (var14 Addr) (var15 Addr) (var16 Heap)) (or (not (and (inv_main22 var2 var14 var12 var11 var7) (and (and (= var1 nullAddr) (and (and (and (and (and (= var5 (newHeap (alloc var16 (O_node var13)))) (= var9 var10)) (= var4 var15)) (= var6 var8)) (= var3 var0)) (= var1 (newAddr (alloc var16 (O_node var13)))))) (and (and (and (and (= var16 (write var2 var14 (O_node (node 1 (flag (getnode (read var2 var14))) (n (getnode (read var2 var14))))))) (= var10 var14)) (= var15 var12)) (= var8 var11)) (= var0 var7))))) (inv_main29 var5 var9 var4 var1 var3 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 node) (var15 Addr) (var16 Int)) (or (not (and (inv_main23 var1 var13 var12 var11 var6) (and (and (= var7 nullAddr) (and (and (and (and (and (= var10 (newHeap (alloc var9 (O_node var14)))) (= var5 var8)) (= var4 var15)) (= var3 var0)) (= var16 var2)) (= var7 (newAddr (alloc var9 (O_node var14)))))) (and (and (and (and (= var9 (write var1 var13 (O_node (node 2 (flag (getnode (read var1 var13))) (n (getnode (read var1 var13))))))) (= var8 var13)) (= var15 var12)) (= var0 var11)) (= var2 var6))))) (inv_main29 var10 var5 var4 var7 var16 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int)) (or (not (inv_main20 var0 var3 var2 var1 var5)) (inv_main19 (write var0 var3 (O_node (node (h (getnode (read var0 var3))) var4 (n (getnode (read var0 var3)))))) var3 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main39 var0 var3 var2 var1 var4) (not (= (flag (getnode (read var0 var3))) 0)))) (inv_main42 var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main37 var1 var5 var4 var3 var9) (and (= var7 3) (and (and (and (and (and (= var2 var1) (= var10 var5)) (= var8 var4)) (= var6 var3)) (= var0 var9)) (= var7 (h (getnode (read var1 var5)))))))) (inv_main38 var2 var10 var8 var6 var0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main38 var1 var6 var5 var4 var8) (and (and (= var9 3) (not (<= 0 (+ (+ var10 (- 20)) (- 1))))) (and (and (and (and (and (= var0 var1) (= var3 var6)) (= var2 var5)) (= var7 var4)) (= var10 var8)) (= var9 (h (getnode (read var1 var6)))))))) (inv_main56 var0 var2 var2 var7 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr)) (or (not (and (inv_main58 var1 var12 var11 var10 var6) (and (and (and (and (and (and (= var7 var1) (= var4 var12)) (= var3 var11)) (= var5 var10)) (= var2 var6)) (= var15 (n (getnode (read var1 var12))))) (and (and (and (and (= var9 (write var7 var4 defObj)) (= var13 var4)) (= var0 var3)) (= var8 var15)) (= var14 var2))))) (inv_main56 var9 var8 var0 var8 var14)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main19 var0 var3 var2 var1 var4) (= (flag (getnode (read var0 var3))) 0))) (inv_main23 var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 node)) (or (not (and (inv_main22 var3 var14 var12 var11 var6) (and (and (not (= var8 nullAddr)) (and (and (and (and (and (= var4 (newHeap (alloc var0 (O_node var16)))) (= var2 var1)) (= var9 var5)) (= var15 var13)) (= var7 var10)) (= var8 (newAddr (alloc var0 (O_node var16)))))) (and (and (and (and (= var0 (write var3 var14 (O_node (node 1 (flag (getnode (read var3 var14))) (n (getnode (read var3 var14))))))) (= var1 var14)) (= var5 var12)) (= var13 var11)) (= var10 var6))))) (inv_main26 var4 var2 var9 var8 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int) (var7 node) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main23 var1 var11 var10 var9 var6) (and (and (not (= var15 nullAddr)) (and (and (and (and (and (= var3 (newHeap (alloc var5 (O_node var7)))) (= var12 var0)) (= var8 var13)) (= var4 var2)) (= var14 var16)) (= var15 (newAddr (alloc var5 (O_node var7)))))) (and (and (and (and (= var5 (write var1 var11 (O_node (node 2 (flag (getnode (read var1 var11))) (n (getnode (read var1 var11))))))) (= var0 var11)) (= var13 var10)) (= var2 var9)) (= var16 var6))))) (inv_main26 var3 var12 var8 var15 var14)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main9 var0 var3 var2 var1 var4)) (inv_main9 var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 node) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main3 var2 var7 var5 var4) (and (= var0 nullAddr) (and (and (and (and (= var9 (newHeap (alloc var2 (O_node var6)))) (= var8 var7)) (= var3 var5)) (= var1 var4)) (= var0 (newAddr (alloc var2 (O_node var6)))))))) (inv_main9 var9 var8 var0 var1 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main34 var0 var4 var3 var2 var9) (and (and (and (and (= var6 (write var0 var4 (O_node (node (h (getnode (read var0 var4))) (flag (getnode (read var0 var4))) 0)))) (= var8 var4)) (= var7 var3)) (= var5 var2)) (= var1 var9)))) (inv_main37 var6 var7 var7 var5 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main41 var0 var5 var3 var2 var10) (and (and (and (and (and (= var8 var0) (= var1 var5)) (= var7 var3)) (= var6 var2)) (= var4 var10)) (= var9 (n (getnode (read var0 var5))))))) (inv_main37 var8 var9 var7 var6 (+ var4 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main26 var0 var3 var2 var1 var4)) (inv_main32 (write var0 var3 (O_node (node (h (getnode (read var0 var3))) (flag (getnode (read var0 var3))) var1))) var3 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var0 var7 var6 var5 var9) (and (not (= var4 1)) (and (and (and (and (and (= var10 var0) (= var1 var7)) (= var2 var6)) (= var3 var5)) (= var8 var9)) (= var4 (h (getnode (read var0 var7)))))))) (inv_main64 var10 var1 var2 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int)) (or (not (and (inv_main43 var1 var5 var3 var2 var8) (and (not (= var10 2)) (and (and (and (and (and (= var7 var1) (= var4 var5)) (= var0 var3)) (= var9 var2)) (= var6 var8)) (= var10 (h (getnode (read var1 var5)))))))) (inv_main64 var7 var4 var0 var9 var6)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int)) (or (not (and (inv_main38 var0 var4 var3 var2 var8) (and (or (not (= var5 3)) (<= 0 (+ (+ var10 (- 20)) (- 1)))) (and (and (and (and (and (= var1 var0) (= var6 var4)) (= var9 var3)) (= var7 var2)) (= var10 var8)) (= var5 (h (getnode (read var0 var4)))))))) (inv_main64 var1 var6 var9 var7 var10)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main39 var0 var3 var2 var1 var4) (= (flag (getnode (read var0 var3))) 0))) (inv_main43 var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr)) (or (not (and (inv_main37 var1 var6 var4 var3 var9) (and (not (= var5 3)) (and (and (and (and (and (= var7 var1) (= var10 var6)) (= var2 var4)) (= var0 var3)) (= var8 var9)) (= var5 (h (getnode (read var1 var6)))))))) (inv_main39 var7 var10 var2 var0 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main13 var0 var3 var2 var1 var4) (not (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1)))))) (inv_main14 var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main13 var1 var4 var3 var2 var5) (and (= var0 0) (<= 0 (+ (+ 20 (* (- 1) var5)) (- 1)))))) (inv_main14 var1 var4 var3 var2 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main19 var0 var3 var2 var1 var4) (not (= (flag (getnode (read var0 var3))) 0)))) (inv_main22 var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int)) (or (not (and (inv_main32 var1 var8 var7 var6 var10) (and (and (and (and (and (= var2 var1) (= var5 var8)) (= var9 var7)) (= var0 var6)) (= var3 var10)) (= var4 (n (getnode (read var1 var8))))))) (inv_main13 var2 var4 var9 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 node) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main3 var2 var7 var5 var4) (and (not (= var0 nullAddr)) (and (and (and (and (= var9 (newHeap (alloc var2 (O_node var6)))) (= var8 var7)) (= var3 var5)) (= var1 var4)) (= var0 (newAddr (alloc var2 (O_node var6)))))))) (inv_main13 var9 var0 var0 var1 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int)) (or (not (and (inv_main13 var0 var3 var2 var1 var5) (and (not (= var4 0)) (<= 0 (+ (+ 20 (* (- 1) var5)) (- 1)))))) (inv_main20 var0 var3 var2 var1 (+ var5 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main14 var0 var3 var2 var1 var4)) (inv_main34 (write var0 var3 (O_node (node 3 (flag (getnode (read var0 var3))) (n (getnode (read var0 var3)))))) var3 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main20 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main19 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main22 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main23 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main26 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main32 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main14 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main34 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main37 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main39 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main42 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main43 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main41 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main38 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main56 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main58 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (inv_main64 var0 var3 var2 var1 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/list_and_tree_cnstr-1.i.smt2 b/heap-theory-benchmarks/array/list_and_tree_cnstr-1.i.smt2 new file mode 100644 index 00000000..20f4f2f1 --- /dev/null +++ b/heap-theory-benchmarks/array/list_and_tree_cnstr-1.i.smt2 @@ -0,0 +1,184 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0) (TreeNode 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (O_TreeNode (getTreeNode TreeNode)) (defObj)) + ((node (h Int) (n Addr))) + ((TreeNode (left Addr) (right Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main102 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main103 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main107 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(declare-fun inv_main63 (Heap Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main68 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main69 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main74 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main77 (Heap Addr Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main80 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main82 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main88 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main91 (Heap Addr Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main94 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main97 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main98 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main99 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main46 var2 var0 var3 var4 var1) (not (= var1 nullAddr)))) (inv_main49 var2 var0 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main46 var3 var1 var7 var8 var2) (and (not (= var4 0)) (and (= var2 nullAddr) (and (and (and (and (= var9 var3) (= var5 var1)) (= var6 var7)) (= var0 var8)) (= var4 (right (getTreeNode (read var3 var7))))))))) (inv_main49 var9 var5 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr)) (or (not (and (inv_main98 var12 var11 var2 var7 var6 var5 var10) (and (not (= var13 1)) (and (and (and (and (and (and (and (= var4 var12) (= var9 var11)) (= var0 var2)) (= var14 var7)) (= var1 var6)) (= var3 var5)) (= var8 var10)) (= var13 (h (getnode (read var12 var10)))))))) (inv_main102 var4 var9 var0 var14 var1 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr)) (or (not (and (inv_main98 var10 var9 var2 var6 var5 var4 var7) (and (= var8 1) (and (and (and (and (and (and (and (= var13 var10) (= var12 var9)) (= var3 var2)) (= var0 var6)) (= var11 var5)) (= var1 var4)) (= var14 var7)) (= var8 (h (getnode (read var10 var7)))))))) (inv_main103 var13 var12 var3 var0 var11 var1 var14)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main4 var1 var0 var2)) (inv_main5 (write var1 var0 (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var1 var0)))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (inv_main91 var1 var0 var2 var5 var4 var3 var7 var6)) (inv_main91 var1 var0 var2 var5 var4 var3 var7 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 node) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr)) (or (not (and (inv_main83 var18 var17 var6 var10 var9 var8 var15) (and (= var11 nullAddr) (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var2 (O_node var5)))) (= var4 var3)) (= var19 var13)) (= var12 var7)) (= var0 var22)) (= var20 var14)) (= var16 var21)) (= var11 (newAddr (alloc var2 (O_node var5))))) (and (and (and (and (and (and (= var2 (write var18 var15 (O_node (node 2 (n (getnode (read var18 var15))))))) (= var3 var17)) (= var13 var6)) (= var7 var10)) (= var22 var9)) (= var14 var8)) (= var21 var15)))))) (inv_main91 var1 var4 var19 var12 var0 var11 var16 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 node) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr)) (or (not (and (inv_main83 var18 var17 var6 var10 var9 var8 var15) (and (not (= var11 nullAddr)) (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var2 (O_node var5)))) (= var4 var3)) (= var19 var13)) (= var12 var7)) (= var0 var22)) (= var20 var14)) (= var16 var21)) (= var11 (newAddr (alloc var2 (O_node var5))))) (and (and (and (and (and (and (= var2 (write var18 var15 (O_node (node 2 (n (getnode (read var18 var15))))))) (= var3 var17)) (= var13 var6)) (= var7 var10)) (= var22 var9)) (= var14 var8)) (= var21 var15)))))) (inv_main88 var1 var4 var19 var12 var0 var11 var16)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Heap)) (or (not (and (inv_main94 var12 var10 var3 var6 var5 var4 var8) (and (and (and (and (and (and (and (= var14 var12) (= var9 var10)) (= var0 var3)) (= var13 var6)) (= var7 var5)) (= var2 var4)) (= var11 var8)) (= var1 (n (getnode (read var12 var8))))))) (inv_main68 var14 var9 var0 var13 var7 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main80 var11 var10 var2 var5 var4 var3 var8) (and (= var12 0) (and (and (and (and (and (and (and (= var9 var11) (= var1 var10)) (= var14 var2)) (= var13 var5)) (= var0 var4)) (= var15 var3)) (= var6 var8)) (= var7 (n (getnode (read var11 var8)))))))) (inv_main68 var9 var1 var14 var13 var0 var15 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 node) (var9 Addr) (var10 Heap) (var11 Addr)) (or (not (and (inv_main39 var4 var2 var6 var9) (and (and (= var1 0) (and (not (= var5 nullAddr)) (and (and (and (and (= var10 (newHeap (alloc var4 (O_node var8)))) (= var3 var2)) (= var11 var6)) (= var7 var9)) (= var5 (newAddr (alloc var4 (O_node var8))))))) (= var2 nullAddr)))) (inv_main68 var10 var3 var11 var7 var5 var0 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main68 var2 var1 var3 var6 var5 var4 var7) (not (= var0 0)))) (inv_main83 var2 var1 var3 var6 var5 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main35 var1 var0 var2)) (inv_main37 (write var1 (right (getTreeNode (read var1 var2))) (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var1 (right (getTreeNode (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main74 var1 var0 var2 var5 var4 var3 var6)) (inv_main80 (write var1 var6 (O_node (node (h (getnode (read var1 var6))) var3))) var0 var2 var5 var4 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main29 var1 var0 var2)) (inv_main21 (write var1 (left (getTreeNode (read var1 var2))) (O_TreeNode (TreeNode (left (getTreeNode (read var1 (left (getTreeNode (read var1 var2)))))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main11 var1 var0 var4) (and (= var3 0) (and (and (and (= var5 var1) (= var2 var0)) (= var6 var4)) (or (and (= (left (getTreeNode (read var1 var4))) nullAddr) (= var3 1)) (and (not (= (left (getTreeNode (read var1 var4))) nullAddr)) (= var3 0))))))) (inv_main21 var5 var2 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main11 var3 var1 var4) (and (= var5 0) (and (not (= var7 0)) (and (and (and (= var0 var3) (= var6 var1)) (= var2 var4)) (or (and (= (left (getTreeNode (read var3 var4))) nullAddr) (= var7 1)) (and (not (= (left (getTreeNode (read var3 var4))) nullAddr)) (= var7 0)))))))) (inv_main21 var0 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 node) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Heap)) (or (not (and (inv_main69 var16 var15 var3 var6 var5 var4 var12) (and (not (= var9 nullAddr)) (and (and (and (and (and (and (and (and (= var22 (newHeap (alloc var10 (O_node var8)))) (= var7 var11)) (= var19 var0)) (= var1 var2)) (= var18 var17)) (= var14 var20)) (= var13 var21)) (= var9 (newAddr (alloc var10 (O_node var8))))) (and (and (and (and (and (and (= var10 (write var16 var12 (O_node (node 1 (n (getnode (read var16 var12))))))) (= var11 var15)) (= var0 var3)) (= var2 var6)) (= var17 var5)) (= var20 var4)) (= var21 var12)))))) (inv_main74 var22 var7 var19 var1 var18 var9 var13)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main50 var3 var2 var4 var6) (and (and (and (and (= var8 var3) (= var5 var2)) (= var1 var4)) (= var7 var6)) (= var0 (left (getTreeNode (read var3 var4))))))) (inv_main43 var8 var5 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main51 var2 var0 var4 var6) (and (and (and (and (= var1 var2) (= var5 var0)) (= var3 var4)) (= var7 var6)) (= var8 (right (getTreeNode (read var2 var4))))))) (inv_main43 var1 var5 var8 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main39 var1 var0 var4 var6) (and (not (= var0 nullAddr)) (and (and (and (= var2 var1) (= var3 var0)) (= var5 var4)) (= var7 nullAddr))))) (inv_main43 var2 var3 var3 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main63 var1 var0 var3 var5 var4 var2)) (inv_main63 var1 var0 var3 var5 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 node) (var9 Heap)) (or (not (and (inv_main39 var3 var2 var5 var6) (and (and (= var0 nullAddr) (and (and (and (and (= var9 (newHeap (alloc var3 (O_node var8)))) (= var7 var2)) (= var1 var5)) (= var4 var6)) (= var0 (newAddr (alloc var3 (O_node var8)))))) (= var2 nullAddr)))) (inv_main63 var9 var7 var1 var4 var0 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (inv_main77 var1 var0 var2 var5 var4 var3 var7 var6)) (inv_main77 var1 var0 var2 var5 var4 var3 var7 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 node) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Heap)) (or (not (and (inv_main69 var16 var15 var3 var6 var5 var4 var12) (and (= var9 nullAddr) (and (and (and (and (and (and (and (and (= var22 (newHeap (alloc var10 (O_node var8)))) (= var7 var11)) (= var19 var0)) (= var1 var2)) (= var18 var17)) (= var14 var20)) (= var13 var21)) (= var9 (newAddr (alloc var10 (O_node var8))))) (and (and (and (and (and (and (= var10 (write var16 var12 (O_node (node 1 (n (getnode (read var16 var12))))))) (= var11 var15)) (= var0 var3)) (= var2 var6)) (= var17 var5)) (= var20 var4)) (= var21 var12)))))) (inv_main77 var22 var7 var19 var1 var18 var9 var13 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main27 var1 var0 var2)) (inv_main29 (write var1 (left (getTreeNode (read var1 var2))) (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var1 (left (getTreeNode (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main55 var1 var0 var2 var3) (= var2 (left (getTreeNode (read var1 var3)))))) (inv_main57 var1 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main55 var1 var0 var2 var3) (not (= var2 (left (getTreeNode (read var1 var3))))))) (inv_main58 var1 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main88 var1 var0 var2 var5 var4 var3 var6)) (inv_main94 (write var1 var6 (O_node (node (h (getnode (read var1 var6))) var3))) var0 var2 var5 var4 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main13 var3 var1 var6 var4) (and (= var7 0) (and (not (= var2 0)) (and (not (= var4 nullAddr)) (and (and (and (= var0 var3) (= var5 var1)) (= var8 var6)) (= var2 (right (getTreeNode (read var3 var6)))))))))) (inv_main17 var0 var5 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main80 var12 var11 var2 var5 var4 var3 var9) (and (not (= var7 0)) (and (and (and (and (and (and (and (= var10 var12) (= var1 var11)) (= var14 var2)) (= var13 var5)) (= var0 var4)) (= var15 var3)) (= var6 var9)) (= var8 (n (getnode (read var12 var9)))))))) (inv_main69 var10 var1 var14 var13 var0 var15 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 node) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main39 var4 var2 var6 var10) (and (and (not (= var1 0)) (and (not (= var0 nullAddr)) (and (and (and (and (= var8 (newHeap (alloc var4 (O_node var5)))) (= var9 var2)) (= var3 var6)) (= var7 var10)) (= var0 (newAddr (alloc var4 (O_node var5))))))) (= var2 nullAddr)))) (inv_main69 var8 var9 var3 var7 var0 var11 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 TreeNode) (var7 Int) (var8 Int)) (or (not (and (inv_main11 var3 var1 var4) (and (not (= var7 0)) (and (not (= var8 0)) (and (and (and (= var0 var3) (= var5 var1)) (= var2 var4)) (or (and (= (left (getTreeNode (read var3 var4))) nullAddr) (= var8 1)) (and (not (= (left (getTreeNode (read var3 var4))) nullAddr)) (= var8 0)))))))) (inv_main28 (newHeap (alloc var0 (O_TreeNode var6))) var5 var2 (newAddr (alloc var0 (O_TreeNode var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main10 var1 var0 var2)) (inv_main13 var1 var0 var2 (left (getTreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main36 var1 var0 var2 var3)) (inv_main35 (write var1 var2 (O_TreeNode (TreeNode (left (getTreeNode (read var1 var2))) var3))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main43 var1 var0 var2 var3)) (inv_main46 var1 var0 var2 var3 (left (getTreeNode (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main68 var2 var1 var3 var6 var5 var4 var7) (= var0 0))) (inv_main82 var2 var1 var3 var6 var5 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr)) (or (not (and (inv_main102 var10 var9 var1 var5 var4 var3 var7) (and (not (= var6 3)) (and (and (and (and (and (and (and (= var12 var10) (= var8 var9)) (= var13 var1)) (= var14 var5)) (= var11 var4)) (= var0 var3)) (= var2 var7)) (= var6 (h (getnode (read var10 var7)))))))) (inv_main107 var12 var8 var13 var14 var11 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap)) (or (not (and (inv_main99 var10 var9 var4 var7 var6 var5 var8) (and (and (and (and (and (and (and (= var14 var10) (= var0 var9)) (= var1 var4)) (= var12 var7)) (= var3 var6)) (= var2 var5)) (= var11 var8)) (= var13 (n (getnode (read var10 var8))))))) (inv_main97 var14 var0 var1 var12 var3 var2 var13)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr)) (or (not (and (inv_main82 var9 var8 var1 var4 var3 var2 var6) (and (and (and (and (and (and (= var12 (write var9 var6 (O_node (node 3 (n (getnode (read var9 var6))))))) (= var0 var8)) (= var7 var1)) (= var5 var4)) (= var13 var3)) (= var11 var2)) (= var10 var6)))) (inv_main97 var12 var0 var7 var5 var13 var11 var13)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Int)) (or (not (and (inv_main97 var11 var10 var2 var6 var5 var4 var7) (and (= var14 2) (and (and (and (and (and (and (and (= var9 var11) (= var8 var10)) (= var0 var2)) (= var1 var6)) (= var3 var5)) (= var13 var4)) (= var12 var7)) (= var14 (h (getnode (read var11 var7)))))))) (inv_main99 var9 var8 var0 var1 var3 var13 var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main13 var1 var0 var3 var2) (= var2 nullAddr))) (inv_main11 var1 var0 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main13 var3 var1 var6 var4) (and (= var2 0) (and (not (= var4 nullAddr)) (and (and (and (= var0 var3) (= var5 var1)) (= var7 var6)) (= var2 (right (getTreeNode (read var3 var6))))))))) (inv_main11 var0 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main57 var3 var1 var4 var5) (and (and (and (= var6 (write var3 var5 (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var3 var5))))))) (= var2 var1)) (= var7 var4)) (= var0 var5)))) (inv_main39 (write var6 var7 defObj) var2 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main58 var3 var2 var5 var7) (and (and (and (= var1 (write var3 var7 (O_TreeNode (TreeNode (left (getTreeNode (read var3 var7))) nullAddr)))) (= var6 var2)) (= var4 var5)) (= var0 var7)))) (inv_main39 (write var1 var4 defObj) var6 var4 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main46 var9 var7 var4 var5 var8) (and (and (= var6 nullAddr) (and (= var1 0) (and (= var8 nullAddr) (and (and (and (and (= var13 var9) (= var2 var7)) (= var3 var4)) (= var6 var5)) (= var1 (right (getTreeNode (read var9 var4)))))))) (and (and (and (= var0 var13) (= var12 nullAddr)) (= var11 var3)) (= var10 var6))))) (inv_main39 (write var0 var11 defObj) var12 var11 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr)) (or (not (and (inv_main6 var1 var0 var3) (and (= var6 0) (and (and (= var5 var1) (= var7 var0)) (= var2 nullAddr))))) (inv_main39 var5 var7 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main16 var2 var1 var4) (and (and (and (= var6 var2) (= var5 var1)) (= var3 var4)) (= var0 (left (getTreeNode (read var2 var4))))))) (inv_main10 var6 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main17 var2 var1 var4) (and (and (and (= var5 var2) (= var3 var1)) (= var0 var4)) (= var6 (right (getTreeNode (read var2 var4))))))) (inv_main10 var5 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main6 var1 var0 var2) (not (= var3 0)))) (inv_main10 var1 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main28 var1 var0 var2 var3)) (inv_main27 (write var1 var2 (O_TreeNode (TreeNode var3 (right (getTreeNode (read var1 var2)))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main49 var1 var0 var2 var3) (= (left (getTreeNode (read var1 var2))) nullAddr))) (inv_main51 var1 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main46 var3 var1 var7 var8 var2) (and (not (= var0 nullAddr)) (and (= var4 0) (and (= var2 nullAddr) (and (and (and (and (= var9 var3) (= var5 var1)) (= var6 var7)) (= var0 var8)) (= var4 (right (getTreeNode (read var3 var7)))))))))) (inv_main55 var9 var5 var6 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main13 var3 var1 var6 var4) (and (not (= var7 0)) (and (not (= var2 0)) (and (not (= var4 nullAddr)) (and (and (and (= var0 var3) (= var5 var1)) (= var8 var6)) (= var2 (right (getTreeNode (read var3 var6)))))))))) (inv_main16 var0 var5 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 TreeNode)) (or (not (and (inv_main21 var2 var1 var3) (and (not (= var0 0)) (and (not (= var5 0)) (and (and (and (= var4 var2) (= var6 var1)) (= var7 var3)) (or (and (= (right (getTreeNode (read var2 var3))) nullAddr) (= var5 1)) (and (not (= (right (getTreeNode (read var2 var3))) nullAddr)) (= var5 0)))))))) (inv_main36 (newHeap (alloc var4 (O_TreeNode var8))) var6 var7 (newAddr (alloc var4 (O_TreeNode var8))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TreeNode)) (or (not (inv_main3 var0)) (inv_main4 (newHeap (alloc var0 (O_TreeNode var2))) (newAddr (alloc var0 (O_TreeNode var2))) var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main5 var1 var0 var2)) (inv_main6 (write var1 var0 (O_TreeNode (TreeNode (left (getTreeNode (read var1 var0))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main37 var1 var0 var2)) (inv_main6 (write var1 (right (getTreeNode (read var1 var2))) (O_TreeNode (TreeNode (left (getTreeNode (read var1 (right (getTreeNode (read var1 var2)))))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main21 var3 var1 var4) (and (= var2 0) (and (and (and (= var0 var3) (= var6 var1)) (= var5 var4)) (or (and (= (right (getTreeNode (read var3 var4))) nullAddr) (= var2 1)) (and (not (= (right (getTreeNode (read var3 var4))) nullAddr)) (= var2 0))))))) (inv_main6 var0 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr)) (or (not (and (inv_main21 var2 var1 var3) (and (= var0 0) (and (not (= var5 0)) (and (and (and (= var4 var2) (= var6 var1)) (= var7 var3)) (or (and (= (right (getTreeNode (read var2 var3))) nullAddr) (= var5 1)) (and (not (= (right (getTreeNode (read var2 var3))) nullAddr)) (= var5 0)))))))) (inv_main6 var4 var6 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main49 var1 var0 var2 var3) (not (= (left (getTreeNode (read var1 var2))) nullAddr)))) (inv_main50 var1 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr)) (or (not (and (inv_main97 var10 var9 var0 var3 var2 var1 var7) (and (not (= var8 2)) (and (and (and (and (and (and (and (= var13 var10) (= var12 var9)) (= var5 var0)) (= var4 var3)) (= var6 var2)) (= var14 var1)) (= var11 var7)) (= var8 (h (getnode (read var10 var7)))))))) (inv_main98 var13 var12 var5 var4 var6 var14 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr)) (or (not (and (inv_main103 var10 var9 var2 var6 var5 var4 var8) (and (and (and (and (and (and (and (= var13 var10) (= var7 var9)) (= var0 var2)) (= var1 var6)) (= var14 var5)) (= var12 var4)) (= var11 var8)) (= var3 (n (getnode (read var10 var8))))))) (inv_main98 var13 var7 var0 var1 var14 var12 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main4 var1 var0 var2) (not (is-O_TreeNode (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main5 var1 var0 var2) (not (is-O_TreeNode (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main10 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main13 var1 var0 var3 var2) (and (not (= var2 nullAddr)) (not (is-O_TreeNode (read var1 var3)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main16 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main17 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main11 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main28 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main27 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main27 var1 var0 var2) (not (is-O_TreeNode (read var1 (left (getTreeNode (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main29 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main29 var1 var0 var2) (not (is-O_TreeNode (read var1 (left (getTreeNode (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main21 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main36 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main35 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main35 var1 var0 var2) (not (is-O_TreeNode (read var1 (right (getTreeNode (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main37 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main37 var1 var0 var2) (not (is-O_TreeNode (read var1 (right (getTreeNode (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main43 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main46 var2 var0 var3 var4 var1) (and (= var1 nullAddr) (not (is-O_TreeNode (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main49 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main50 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main51 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main55 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main57 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main58 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main69 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main74 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main80 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main83 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main88 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main94 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main82 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main97 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main99 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main98 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main103 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main102 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (inv_main107 var1 var0 var2 var5 var4 var3 var6)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/list_flag-1.i.smt2 b/heap-theory-benchmarks/array/list_flag-1.i.smt2 new file mode 100644 index 00000000..4eeeb361 --- /dev/null +++ b/heap-theory-benchmarks/array/list_flag-1.i.smt2 @@ -0,0 +1,87 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Int Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Int Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main39 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Int Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Heap)) (or (not (and (inv_main35 var10 var5 var3 var2 var6) (and (= var0 1) (and (and (and (and (and (= var7 var10) (= var8 var5)) (= var1 var3)) (= var4 var2)) (= var9 var6)) (= var0 (h (getnode (read var10 var3)))))))) (inv_main39 var7 var8 var1 var4 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap)) (or (not (and (inv_main14 var5 var2 var1 var0 var3) (and (not (= var2 0)) (not (= var4 0))))) (inv_main19 var5 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (inv_main26 var5 var3 var1 var0 var4 var2)) (inv_main26 var5 var3 var1 var0 var4 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 node) (var16 Int)) (or (not (and (inv_main19 var4 var11 var10 var9 var12) (and (and (= var1 nullAddr) (and (and (and (and (and (= var2 (newHeap (alloc var7 (O_node var15)))) (= var16 var0)) (= var13 var8)) (= var6 var3)) (= var14 var5)) (= var1 (newAddr (alloc var7 (O_node var15)))))) (and (and (and (and (= var7 (write var4 var10 (O_node (node 1 (n (getnode (read var4 var10))))))) (= var0 var11)) (= var8 var10)) (= var3 var9)) (= var5 var12))))) (inv_main26 var2 var16 var13 var6 var1 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 node) (var6 Int) (var7 Heap) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main20 var7 var14 var13 var12 var15) (and (and (= var4 nullAddr) (and (and (and (and (and (= var3 (newHeap (alloc var8 (O_node var5)))) (= var1 var6)) (= var16 var10)) (= var0 var11)) (= var9 var2)) (= var4 (newAddr (alloc var8 (O_node var5)))))) (and (and (and (and (= var8 (write var7 var13 (O_node (node 2 (n (getnode (read var7 var13))))))) (= var6 var14)) (= var10 var13)) (= var11 var12)) (= var2 var15))))) (inv_main26 var3 var1 var16 var0 var4 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 node) (var16 Addr)) (or (not (and (inv_main19 var4 var12 var10 var9 var13) (and (and (not (= var11 nullAddr)) (and (and (and (and (and (= var5 (newHeap (alloc var6 (O_node var15)))) (= var8 var0)) (= var3 var1)) (= var7 var16)) (= var2 var14)) (= var11 (newAddr (alloc var6 (O_node var15)))))) (and (and (and (and (= var6 (write var4 var10 (O_node (node 1 (n (getnode (read var4 var10))))))) (= var0 var12)) (= var1 var10)) (= var16 var9)) (= var14 var13))))) (inv_main23 var5 var8 var3 var7 var11)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main20 var4 var9 var8 var7 var10) (and (and (not (= var15 nullAddr)) (and (and (and (and (and (= var12 (newHeap (alloc var6 (O_node var0)))) (= var3 var5)) (= var11 var1)) (= var2 var14)) (= var16 var13)) (= var15 (newAddr (alloc var6 (O_node var0)))))) (and (and (and (and (= var6 (write var4 var8 (O_node (node 2 (n (getnode (read var4 var8))))))) (= var5 var9)) (= var1 var8)) (= var14 var7)) (= var13 var10))))) (inv_main23 var12 var3 var11 var2 var15)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (inv_main11 var5 var3 var2 var1 var4 var0)) (inv_main11 var5 var3 var2 var1 var4 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 node) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap)) (or (not (and (inv_main2 var11) (and (= var7 nullAddr) (and (and (and (and (and (= var0 (newHeap (alloc var11 (O_node var5)))) (= var2 var6)) (= var8 var1)) (= var9 var4)) (= var3 var10)) (= var7 (newAddr (alloc var11 (O_node var5)))))))) (inv_main11 var0 var2 var8 var7 var3 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main29 var10 var6 var5 var4 var7) (and (and (and (and (and (= var1 var10) (= var3 var6)) (= var2 var5)) (= var9 var4)) (= var0 var7)) (= var8 (n (getnode (read var10 var5))))))) (inv_main14 var1 var3 var8 var9 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 node) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int)) (or (not (and (inv_main2 var10) (and (not (= var0 nullAddr)) (and (and (and (and (and (= var5 (newHeap (alloc var10 (O_node var6)))) (= var4 var8)) (= var1 var11)) (= var9 var3)) (= var2 var7)) (= var0 (newAddr (alloc var10 (O_node var6)))))))) (inv_main14 var5 var4 var0 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main33 var10 var6 var5 var4 var7) (and (not (= var8 3)) (and (and (and (and (and (= var3 var10) (= var9 var6)) (= var0 var5)) (= var1 var4)) (= var2 var7)) (= var8 (h (getnode (read var10 var5)))))))) (inv_main42 var3 var9 var0 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main34 var9 var6 var5 var4 var7) (and (not (= var3 2)) (and (and (and (and (and (= var0 var9) (= var2 var6)) (= var8 var5)) (= var1 var4)) (= var10 var7)) (= var3 (h (getnode (read var9 var5)))))))) (inv_main33 var0 var2 var8 var1 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Heap)) (or (not (and (inv_main35 var10 var6 var4 var3 var7) (and (not (= var2 1)) (and (and (and (and (and (= var9 var10) (= var5 var6)) (= var8 var4)) (= var0 var3)) (= var1 var7)) (= var2 (h (getnode (read var10 var4)))))))) (inv_main33 var9 var5 var8 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Heap)) (or (not (and (inv_main34 var10 var6 var5 var4 var7) (and (= var1 2) (and (and (and (and (and (= var8 var10) (= var9 var6)) (= var3 var5)) (= var0 var4)) (= var2 var7)) (= var1 (h (getnode (read var10 var5)))))))) (inv_main36 var8 var9 var3 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap)) (or (not (and (inv_main14 var5 var2 var1 var0 var3) (and (= var2 0) (not (= var4 0))))) (inv_main20 var5 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main39 var10 var5 var3 var2 var6) (and (and (and (and (and (= var8 var10) (= var7 var5)) (= var0 var3)) (= var4 var2)) (= var1 var6)) (= var9 (n (getnode (read var10 var3))))))) (inv_main35 var8 var7 var9 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Heap)) (or (not (and (inv_main15 var9 var6 var4 var3 var7) (and (= var5 0) (and (and (and (and (= var8 (write var9 var4 (O_node (node 3 (n (getnode (read var9 var4))))))) (= var5 var6)) (= var2 var4)) (= var1 var3)) (= var0 var7))))) (inv_main35 var8 var5 var1 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap)) (or (not (and (inv_main36 var10 var5 var3 var2 var6) (and (and (and (and (and (= var9 var10) (= var8 var5)) (= var4 var3)) (= var0 var2)) (= var1 var6)) (= var7 (n (getnode (read var10 var3))))))) (inv_main34 var9 var8 var7 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Heap)) (or (not (and (inv_main15 var9 var6 var4 var3 var7) (and (not (= var5 0)) (and (and (and (and (= var8 (write var9 var4 (O_node (node 3 (n (getnode (read var9 var4))))))) (= var5 var6)) (= var2 var4)) (= var1 var3)) (= var0 var7))))) (inv_main34 var8 var5 var1 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (or (not (inv_main23 var4 var2 var1 var0 var3)) (inv_main29 (write var4 var1 (O_node (node (h (getnode (read var4 var1))) var3))) var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap)) (or (not (and (inv_main14 var5 var2 var1 var0 var3) (= var4 0))) (inv_main15 var5 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main19 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main20 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main23 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main29 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main15 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main34 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main36 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main35 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main39 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main33 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (inv_main42 var4 var2 var1 var0 var3)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/list_flag-2.i.smt2 b/heap-theory-benchmarks/array/list_flag-2.i.smt2 new file mode 100644 index 00000000..d2698129 --- /dev/null +++ b/heap-theory-benchmarks/array/list_flag-2.i.smt2 @@ -0,0 +1,87 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Int Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Int Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main39 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Int Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main23 var1 var4 var3 var0 var2)) (inv_main29 (write var1 var3 (O_node (node (h (getnode (read var1 var3))) var2))) var4 var3 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int)) (or (not (and (inv_main35 var3 var8 var7 var2 var6) (and (= var4 2) (and (and (and (and (and (= var0 var3) (= var10 var8)) (= var5 var7)) (= var9 var2)) (= var1 var6)) (= var4 (h (getnode (read var3 var7)))))))) (inv_main39 var0 var10 var5 var9 var1)))) +(assert (forall ((var0 Int) (var1 node) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Addr)) (or (not (and (inv_main19 var3 var12 var6 var11 var5) (and (and (not (= var13 nullAddr)) (and (and (and (and (and (= var10 (newHeap (alloc var14 (O_node var1)))) (= var0 var9)) (= var2 var7)) (= var16 var4)) (= var8 var15)) (= var13 (newAddr (alloc var14 (O_node var1)))))) (and (and (and (and (= var14 (write var3 var6 (O_node (node 1 (n (getnode (read var3 var6))))))) (= var9 var12)) (= var7 var6)) (= var4 var11)) (= var15 var5))))) (inv_main23 var10 var0 var2 var16 var13)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 node) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main20 var3 var13 var5 var12 var4) (and (and (not (= var14 nullAddr)) (and (and (and (and (and (= var10 (newHeap (alloc var0 (O_node var7)))) (= var9 var16)) (= var2 var8)) (= var15 var6)) (= var11 var1)) (= var14 (newAddr (alloc var0 (O_node var7)))))) (and (and (and (and (= var0 (write var3 var5 (O_node (node 2 (n (getnode (read var3 var5))))))) (= var16 var13)) (= var8 var5)) (= var6 var12)) (= var1 var4))))) (inv_main23 var10 var9 var2 var15 var14)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main14 var1 var5 var4 var0 var3) (= var2 0))) (inv_main15 var1 var5 var4 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr)) (or (not (and (inv_main29 var3 var8 var7 var1 var6) (and (and (and (and (and (= var2 var3) (= var9 var8)) (= var5 var7)) (= var4 var1)) (= var0 var6)) (= var10 (n (getnode (read var3 var7))))))) (inv_main14 var2 var9 var10 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 node) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main2 var5) (and (not (= var0 nullAddr)) (and (and (and (and (and (= var4 (newHeap (alloc var5 (O_node var3)))) (= var8 var2)) (= var11 var9)) (= var10 var7)) (= var6 var1)) (= var0 (newAddr (alloc var5 (O_node var3)))))))) (inv_main14 var4 var8 var0 var0 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main39 var4 var9 var8 var3 var7) (and (and (and (and (and (= var2 var4) (= var6 var9)) (= var5 var8)) (= var0 var3)) (= var1 var7)) (= var10 (n (getnode (read var4 var8))))))) (inv_main35 var2 var6 var10 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main15 var1 var4 var3 var0 var2) (and (= var9 0) (and (and (and (and (= var6 (write var1 var3 (O_node (node 3 (n (getnode (read var1 var3))))))) (= var9 var4)) (= var5 var3)) (= var7 var0)) (= var8 var2))))) (inv_main35 var6 var9 var7 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (or (not (and (inv_main34 var3 var7 var6 var1 var5) (and (not (= var2 1)) (and (and (and (and (and (= var4 var3) (= var10 var7)) (= var9 var6)) (= var8 var1)) (= var0 var5)) (= var2 (h (getnode (read var3 var6)))))))) (inv_main33 var4 var10 var9 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main35 var1 var7 var6 var0 var5) (and (not (= var4 2)) (and (and (and (and (and (= var3 var1) (= var9 var7)) (= var8 var6)) (= var10 var0)) (= var2 var5)) (= var4 (h (getnode (read var1 var6)))))))) (inv_main33 var3 var9 var8 var10 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main11 var1 var5 var4 var0 var3 var2)) (inv_main11 var1 var5 var4 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 node) (var11 Int)) (or (not (and (inv_main2 var1) (and (= var7 nullAddr) (and (and (and (and (and (= var6 (newHeap (alloc var1 (O_node var10)))) (= var5 var8)) (= var0 var2)) (= var4 var11)) (= var3 var9)) (= var7 (newAddr (alloc var1 (O_node var10)))))))) (inv_main11 var6 var5 var0 var7 var3 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int)) (or (not (and (inv_main34 var5 var8 var7 var2 var6) (and (= var10 1) (and (and (and (and (and (= var3 var5) (= var1 var8)) (= var4 var7)) (= var9 var2)) (= var0 var6)) (= var10 (h (getnode (read var5 var7)))))))) (inv_main36 var3 var1 var4 var9 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main36 var2 var7 var6 var0 var5) (and (and (and (and (and (= var4 var2) (= var8 var7)) (= var10 var6)) (= var1 var0)) (= var3 var5)) (= var9 (n (getnode (read var2 var6))))))) (inv_main34 var4 var8 var9 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main15 var1 var4 var3 var0 var2) (and (not (= var9 0)) (and (and (and (and (= var6 (write var1 var3 (O_node (node 3 (n (getnode (read var1 var3))))))) (= var9 var4)) (= var5 var3)) (= var7 var0)) (= var8 var2))))) (inv_main34 var6 var9 var7 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main14 var1 var5 var4 var0 var3) (and (= var5 0) (not (= var2 0))))) (inv_main20 var1 var5 var4 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main33 var3 var7 var6 var2 var5) (and (not (= var4 3)) (and (and (and (and (and (= var8 var3) (= var10 var7)) (= var1 var6)) (= var0 var2)) (= var9 var5)) (= var4 (h (getnode (read var3 var6)))))))) (inv_main42 var8 var10 var1 var0 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main14 var1 var5 var4 var0 var3) (and (not (= var5 0)) (not (= var2 0))))) (inv_main19 var1 var5 var4 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int)) (or (not (inv_main26 var1 var4 var3 var0 var2 var5)) (inv_main26 var1 var4 var3 var0 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 node) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Heap)) (or (not (and (inv_main19 var1 var14 var3 var10 var2) (and (and (= var7 nullAddr) (and (and (and (and (and (= var8 (newHeap (alloc var16 (O_node var11)))) (= var0 var15)) (= var9 var6)) (= var4 var12)) (= var13 var5)) (= var7 (newAddr (alloc var16 (O_node var11)))))) (and (and (and (and (= var16 (write var1 var3 (O_node (node 1 (n (getnode (read var1 var3))))))) (= var15 var14)) (= var6 var3)) (= var12 var10)) (= var5 var2))))) (inv_main26 var8 var0 var9 var4 var7 1)))) +(assert (forall ((var0 node) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main20 var1 var13 var4 var12 var3) (and (and (= var2 nullAddr) (and (and (and (and (and (= var8 (newHeap (alloc var6 (O_node var0)))) (= var7 var9)) (= var10 var15)) (= var11 var5)) (= var16 var14)) (= var2 (newAddr (alloc var6 (O_node var0)))))) (and (and (and (and (= var6 (write var1 var4 (O_node (node 2 (n (getnode (read var1 var4))))))) (= var9 var13)) (= var15 var4)) (= var5 var12)) (= var14 var3))))) (inv_main26 var8 var7 var10 var11 var2 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main19 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main20 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main23 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main29 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main15 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main34 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main36 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main35 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main39 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main33 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (inv_main42 var1 var4 var3 var0 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/list_search-1.i.smt2 b/heap-theory-benchmarks/array/list_search-1.i.smt2 new file mode 100644 index 00000000..4a1d26fa --- /dev/null +++ b/heap-theory-benchmarks/array/list_search-1.i.smt2 @@ -0,0 +1,108 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (list 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_list (getlist list)) (defObj)) + ((list (key Int) (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main13 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main17 (Heap Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main23 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main27 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main31 (Heap Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main37 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main42 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main45 (Heap Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main51 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main55 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main59 (Heap Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main61 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main65 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main68 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main73 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Addr Addr Addr Int) Bool) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (= var1 emptyHeap) (= var3 var0))) (inv_main4 var1 var3 var5 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr)) (or (not (and (inv_main65 var4 var3 var5 var2 var0 var6 var1) (= var6 nullAddr))) (inv_main61 var4 var3 var5 var2 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Heap)) (or (not (and (inv_main65 var5 var17 var19 var18 var1 var9 var2) (and (and (= var15 0) (and (not (= var9 nullAddr)) (and (and (and (and (and (and (and (= var22 var5) (= var20 var17)) (= var13 var19)) (= var6 var18)) (= var14 var1)) (= var3 var9)) (= var16 var2)) (= var8 (key (getlist (read var5 var9))))))) (and (and (and (and (and (and (and (= var4 var22) (= var21 var20)) (= var0 var13)) (= var7 var6)) (= var12 var14)) (= var10 var3)) (= var11 var16)) (or (and (not (= var8 var16)) (= var15 1)) (and (= var8 var16) (= var15 0))))))) (inv_main61 var4 var21 var0 var7 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 list) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Heap)) (or (not (and (inv_main41 var6 var15 var17 var16 var3 var19 var7) (and (and (and (and (and (and (and (and (= var22 (newHeap (alloc var10 (O_list var12)))) (= var9 var20)) (= var18 var5)) (= var21 var8)) (= var11 var14)) (= var13 var8)) (= var2 3)) (= var0 (newAddr (alloc var10 (O_list var12))))) (and (and (and (and (and (and (= var10 (write var6 var19 (O_list (list (key (getlist (read var6 var19))) nullAddr)))) (= var1 var15)) (= var5 var17)) (= var8 var16)) (= var14 var3)) (= var20 var19)) (= var4 var7))))) (inv_main51 var22 var9 var18 var21 var11 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 list) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Addr) (var23 Heap)) (or (not (and (inv_main45 var5 var15 var17 var16 var3 var21 var6 var4) (and (and (and (and (and (and (and (and (= var23 (newHeap (alloc var9 (O_list var14)))) (= var18 var11)) (= var2 var8)) (= var0 var22)) (= var1 var12)) (= var19 var22)) (= var13 3)) (= var7 (newAddr (alloc var9 (O_list var14))))) (and (and (and (and (and (and (= var9 (write var5 var21 (O_list (list (key (getlist (read var5 var21))) var4)))) (= var10 var15)) (= var8 var17)) (= var22 var16)) (= var12 var3)) (= var11 var21)) (= var20 var6))))) (inv_main51 var23 var18 var2 var0 var1 var7 var13)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main37 var2 var6 var9 var7 var0 var11 var3) (and (= var8 nullAddr) (and (and (and (and (and (and (= var1 (write var2 var11 (O_list (list var3 (next (getlist (read var2 var11))))))) (= var8 var6)) (= var10 var9)) (= var4 var7)) (= var12 var0)) (= var13 var11)) (= var5 var3))))) (inv_main41 var1 var8 var10 var4 var12 var13 var5)))) +(assert (forall ((var0 list) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Int)) (or (not (and (inv_main27 var7 var17 var20 var18 var4 var21 var9) (and (and (and (and (and (and (and (and (= var16 (newHeap (alloc var11 (O_list var0)))) (= var19 var10)) (= var14 var22)) (= var5 var3)) (= var13 var6)) (= var1 var3)) (= var15 1)) (= var8 (newAddr (alloc var11 (O_list var0))))) (and (and (and (and (and (and (= var11 (write var7 var21 (O_list (list (key (getlist (read var7 var21))) nullAddr)))) (= var12 var17)) (= var22 var20)) (= var3 var18)) (= var6 var4)) (= var10 var21)) (= var2 var9))))) (inv_main37 var16 var19 var14 var5 var13 var8 var15)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 list) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Heap) (var22 Addr) (var23 Addr)) (or (not (and (inv_main31 var5 var16 var19 var17 var4 var22 var8 var13) (and (and (and (and (and (and (and (and (= var21 (newHeap (alloc var11 (O_list var10)))) (= var12 var20)) (= var0 var1)) (= var6 var23)) (= var14 var2)) (= var9 var23)) (= var7 1)) (= var15 (newAddr (alloc var11 (O_list var10))))) (and (and (and (and (and (and (= var11 (write var5 var22 (O_list (list (key (getlist (read var5 var22))) var13)))) (= var3 var16)) (= var1 var19)) (= var23 var17)) (= var2 var4)) (= var20 var22)) (= var18 var8))))) (inv_main37 var21 var12 var0 var6 var14 var15 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main23 var3 var7 var9 var8 var2 var11 var5) (and (not (= var13 nullAddr)) (and (and (and (and (and (and (= var6 (write var3 var11 (O_list (list var5 (next (getlist (read var3 var11))))))) (= var13 var7)) (= var12 var9)) (= var4 var8)) (= var0 var2)) (= var10 var11)) (= var1 var5))))) (inv_main28 var6 var13 var12 var4 var0 var10 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main51 var6 var10 var12 var11 var5 var1 var8) (and (not (= var0 nullAddr)) (and (and (and (and (and (and (= var3 (write var6 var1 (O_list (list var8 (next (getlist (read var6 var1))))))) (= var0 var10)) (= var4 var12)) (= var13 var11)) (= var9 var5)) (= var2 var1)) (= var7 var8))))) (inv_main56 var3 var0 var4 var13 var9 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 list)) (or (not (and (inv_main4 var3 var8 var10 var9 var1) (and (and (and (and (and (and (and (= var7 (newHeap (alloc var3 (O_list var13)))) (= var12 var8)) (= var11 var10)) (= var4 var9)) (= var2 var1)) (= var0 var9)) (= var6 2)) (= var5 (newAddr (alloc var3 (O_list var13))))))) (inv_main9 var7 var12 var11 var4 var2 var5 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main14 var3 var8 var11 var9 var2 var13 var12) (and (and (and (and (and (and (= var6 (write var3 var13 (O_list (list var12 (next (getlist (read var3 var13))))))) (= var5 var8)) (= var0 var11)) (= var1 var9)) (= var4 var2)) (= var10 var13)) (= var7 var12)))) (inv_main17 var6 var5 var0 var1 var4 var10 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr)) (or (not (and (inv_main68 var2 var9 var11 var10 var0 var3 var1) (and (and (and (and (and (and (and (= var6 var2) (= var14 var9)) (= var13 var11)) (= var5 var10)) (= var8 var0)) (= var12 var3)) (= var7 var1)) (= var4 (next (getlist (read var2 var3))))))) (inv_main65 var6 var14 var13 var5 var8 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main55 var4 var10 var12 var11 var3 var0 var5) (and (and (and (and (and (and (= var7 (write var4 var0 (O_list (list (key (getlist (read var4 var0))) nullAddr)))) (= var6 var10)) (= var8 var12)) (= var1 var11)) (= var9 var3)) (= var13 var0)) (= var2 var5)))) (inv_main65 var7 var13 var8 var1 var9 var13 2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap)) (or (not (and (inv_main59 var4 var9 var11 var10 var3 var0 var5 var6) (and (and (and (and (and (and (= var14 (write var4 var0 (O_list (list (key (getlist (read var4 var0))) var6)))) (= var8 var9)) (= var1 var11)) (= var2 var10)) (= var12 var3)) (= var7 var0)) (= var13 var5)))) (inv_main65 var14 var7 var1 var2 var12 var7 2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (and (inv_main37 var4 var9 var11 var10 var2 var12 var5) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (= var0 (write var4 var12 (O_list (list var5 (next (getlist (read var4 var12))))))) (= var6 var9)) (= var8 var11)) (= var1 var10)) (= var7 var2)) (= var13 var12)) (= var3 var5))))) (inv_main42 var0 var6 var8 var1 var7 var13 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main56 var4 var10 var12 var11 var3 var0 var6) (and (and (and (and (and (and (= var9 (write var4 var0 (O_list (list var6 (next (getlist (read var4 var0))))))) (= var1 var10)) (= var2 var12)) (= var7 var11)) (= var5 var3)) (= var13 var0)) (= var8 var6)))) (inv_main59 var9 var1 var2 var7 var5 var13 var8 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int)) (or (not (and (inv_main42 var3 var7 var9 var8 var1 var10 var4) (and (and (and (and (and (and (= var0 (write var3 var10 (O_list (list var4 (next (getlist (read var3 var10))))))) (= var12 var7)) (= var2 var9)) (= var5 var8)) (= var11 var1)) (= var6 var10)) (= var13 var4)))) (inv_main45 var0 var12 var2 var5 var11 var6 var13 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Heap)) (or (not (and (inv_main65 var5 var15 var17 var16 var2 var9 var3) (and (and (not (= var6 0)) (and (not (= var9 nullAddr)) (and (and (and (and (and (and (and (= var22 var5) (= var19 var15)) (= var12 var17)) (= var7 var16)) (= var13 var2)) (= var4 var9)) (= var14 var3)) (= var8 (key (getlist (read var5 var9))))))) (and (and (and (and (and (and (and (= var11 var22) (= var0 var19)) (= var1 var12)) (= var21 var7)) (= var18 var13)) (= var20 var4)) (= var10 var14)) (or (and (not (= var8 var14)) (= var6 1)) (and (= var8 var14) (= var6 0))))))) (inv_main68 var11 var0 var1 var21 var18 var20 var10)))) +(assert (forall ((var0 Addr) (var1 list) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Int) (var21 Heap) (var22 Addr)) (or (not (and (inv_main13 var4 var14 var16 var15 var2 var22 var19) (and (and (and (and (and (and (and (and (= var5 (newHeap (alloc var21 (O_list var1)))) (= var9 var3)) (= var8 var20)) (= var12 var17)) (= var10 var0)) (= var6 var17)) (= var18 5)) (= var13 (newAddr (alloc var21 (O_list var1))))) (and (and (and (and (and (and (= var21 (write var4 var22 (O_list (list (key (getlist (read var4 var22))) nullAddr)))) (= var11 var14)) (= var20 var16)) (= var17 var15)) (= var0 var2)) (= var3 var22)) (= var7 var19))))) (inv_main23 var5 var9 var8 var12 var10 var13 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 list) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Heap) (var23 Addr)) (or (not (and (inv_main17 var6 var15 var17 var16 var4 var23 var21 var0) (and (and (and (and (and (and (and (and (= var7 (newHeap (alloc var22 (O_list var3)))) (= var1 var19)) (= var10 var14)) (= var2 var20)) (= var12 var8)) (= var11 var20)) (= var18 5)) (= var5 (newAddr (alloc var22 (O_list var3))))) (and (and (and (and (and (and (= var22 (write var6 var23 (O_list (list (key (getlist (read var6 var23))) var0)))) (= var9 var15)) (= var14 var17)) (= var20 var16)) (= var8 var4)) (= var19 var23)) (= var13 var21))))) (inv_main23 var7 var1 var10 var2 var12 var5 var18)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main28 var3 var8 var10 var9 var2 var11 var5) (and (and (and (and (and (and (= var13 (write var3 var11 (O_list (list var5 (next (getlist (read var3 var11))))))) (= var7 var8)) (= var4 var10)) (= var6 var9)) (= var0 var2)) (= var12 var11)) (= var1 var5)))) (inv_main31 var13 var7 var4 var6 var0 var12 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main9 var4 var8 var11 var9 var3 var13 var12) (and (not (= var0 nullAddr)) (and (and (and (and (and (and (= var6 (write var4 var13 (O_list (list var12 (next (getlist (read var4 var13))))))) (= var0 var8)) (= var10 var11)) (= var5 var9)) (= var2 var3)) (= var1 var13)) (= var7 var12))))) (inv_main14 var6 var0 var10 var5 var2 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr)) (or (not (and (inv_main23 var5 var7 var9 var8 var2 var13 var6) (and (= var0 nullAddr) (and (and (and (and (and (and (= var12 (write var5 var13 (O_list (list var6 (next (getlist (read var5 var13))))))) (= var0 var7)) (= var1 var9)) (= var10 var8)) (= var4 var2)) (= var3 var13)) (= var11 var6))))) (inv_main27 var12 var0 var1 var10 var4 var3 var11)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main9 var2 var7 var9 var8 var1 var13 var12) (and (= var4 nullAddr) (and (and (and (and (and (and (= var5 (write var2 var13 (O_list (list var12 (next (getlist (read var2 var13))))))) (= var4 var7)) (= var0 var9)) (= var3 var8)) (= var11 var1)) (= var6 var13)) (= var10 var12))))) (inv_main13 var5 var4 var0 var3 var11 var6 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main61 var3 var2 var4 var1 var0) (not (= var2 nullAddr)))) (inv_main73 var3 var2 var4 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main73 var4 var12 var15 var13 var2) (and (not (= var8 nullAddr)) (and (and (and (and (and (and (= var10 var4) (= var0 var12)) (= var14 var15)) (= var1 var13)) (= var6 var2)) (= var5 (next (getlist (read var4 var12))))) (and (and (and (and (and (= var11 (write var10 var0 defObj)) (= var9 var0)) (= var3 var14)) (= var7 var1)) (= var16 var6)) (= var8 var5)))))) (inv_main73 var11 var8 var3 var7 var16)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main51 var3 var9 var11 var10 var2 var0 var4) (and (= var8 nullAddr) (and (and (and (and (and (and (= var1 (write var3 var0 (O_list (list var4 (next (getlist (read var3 var0))))))) (= var8 var9)) (= var12 var11)) (= var13 var10)) (= var5 var2)) (= var7 var0)) (= var6 var4))))) (inv_main55 var1 var8 var12 var13 var5 var7 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main9 var3 var2 var4 var1 var0 var6 var5) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main13 var3 var2 var4 var1 var0 var6 var5) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main14 var3 var2 var4 var1 var0 var6 var5) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main17 var4 var3 var5 var2 var1 var7 var6 var0) (not (is-O_list (read var4 var7))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main23 var3 var2 var4 var1 var0 var6 var5) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main27 var3 var2 var4 var1 var0 var6 var5) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main28 var3 var2 var4 var1 var0 var6 var5) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main31 var4 var3 var5 var2 var1 var7 var6 var0) (not (is-O_list (read var4 var7))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main37 var3 var2 var5 var1 var0 var6 var4) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main41 var3 var2 var5 var1 var0 var6 var4) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main42 var3 var2 var5 var1 var0 var6 var4) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main45 var4 var3 var6 var2 var0 var7 var5 var1) (not (is-O_list (read var4 var7))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main51 var4 var3 var5 var2 var1 var0 var6) (not (is-O_list (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main55 var4 var3 var5 var2 var1 var0 var6) (not (is-O_list (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main56 var4 var3 var5 var2 var1 var0 var6) (not (is-O_list (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main59 var5 var4 var6 var3 var2 var1 var7 var0) (not (is-O_list (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr)) (not (and (inv_main65 var4 var3 var5 var2 var0 var6 var1) (and (not (= var6 nullAddr)) (not (is-O_list (read var4 var6)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr)) (not (and (inv_main68 var4 var3 var5 var2 var0 var6 var1) (not (is-O_list (read var4 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (not (and (inv_main61 var3 var2 var4 var1 var0) (not (is-O_list (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (not (and (inv_main61 var3 var2 var4 var1 var0) (not (= (key (getlist (read var3 var0))) 1)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (not (and (inv_main73 var3 var2 var4 var1 var0) (not (is-O_list (read var3 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/list_search-2.i.smt2 b/heap-theory-benchmarks/array/list_search-2.i.smt2 new file mode 100644 index 00000000..63a630c3 --- /dev/null +++ b/heap-theory-benchmarks/array/list_search-2.i.smt2 @@ -0,0 +1,134 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (list 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_list (getlist list)) (defObj)) + ((list (key Int) (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main100 (Heap Int Addr Int Addr Addr) Bool) +(declare-fun inv_main13 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main27 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main30 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main32 (Heap Int Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main41 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main42 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Int Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main5 (Heap Int Addr Int Addr Addr) Bool) +(declare-fun inv_main55 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main58 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main60 (Heap Int Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main62 (Heap Int Addr Int Addr Addr) Bool) +(declare-fun inv_main65 (Heap Int Addr Int Addr Addr) Bool) +(declare-fun inv_main67 (Heap Int Addr Int Addr Addr) Bool) +(declare-fun inv_main71 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main74 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main86 (Heap Int Addr Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main87 (Heap Int Addr Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main88 (Heap Int Addr Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main90 (Heap Int Addr Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main95 (Heap Int Addr Int Addr Addr Addr Addr Addr) Bool) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (and (= var2 emptyHeap) (= var5 0)) (= var4 var0))) (inv_main5 var2 var5 var4 var3 0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 list) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Int)) (or (not (and (inv_main30 var15 var18 var6 var3 var21 var1 var23 var20) (and (and (= var5 nullAddr) (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var7 (O_list var2)))) (= var25 var4)) (= var5 var16)) (= var24 var8)) (= var22 var10)) (= var13 var0)) (= var19 var10)) (= var17 1)) (= var9 (newAddr (alloc var7 (O_list var2)))))) (and (and (and (and (and (and (and (= var7 (write var15 var23 (O_list (list (key (getlist (read var15 var23))) nullAddr)))) (= var4 var18)) (= var14 var6)) (= var8 var3)) (= var10 var21)) (= var0 var1)) (= var16 var23)) (= var12 var20))))) (inv_main41 var11 var25 var5 var24 var22 var13 var9 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 list) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Heap) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Int) (var26 Addr)) (or (not (and (inv_main32 var14 var18 var9 var5 var22 var1 var23 var21 var15) (and (and (= var20 nullAddr) (and (and (and (and (and (and (and (and (= var8 (newHeap (alloc var16 (O_list var6)))) (= var25 var17)) (= var20 var24)) (= var13 var19)) (= var4 var12)) (= var11 var26)) (= var3 var12)) (= var10 1)) (= var7 (newAddr (alloc var16 (O_list var6)))))) (and (and (and (and (and (and (and (= var16 (write var14 var23 (O_list (list (key (getlist (read var14 var23))) var15)))) (= var17 var18)) (= var2 var9)) (= var19 var5)) (= var12 var22)) (= var26 var1)) (= var24 var23)) (= var0 var21))))) (inv_main41 var8 var25 var20 var13 var4 var11 var7 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Int) (var24 Int) (var25 list)) (or (not (and (inv_main16 var14 var19 var7 var5 var22 var1 var16 var8) (and (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var4 (O_list var25)))) (= var24 var2)) (= var12 var10)) (= var0 var13)) (= var21 var6)) (= var15 var3)) (= var9 var6)) (= var23 5)) (= var18 (newAddr (alloc var4 (O_list var25)))))) (and (and (and (and (and (and (and (= var4 (write var14 var16 (O_list (list (key (getlist (read var14 var16))) nullAddr)))) (= var2 var19)) (= var17 var7)) (= var13 var5)) (= var6 var22)) (= var3 var1)) (= var10 var16)) (= var20 var8))))) (inv_main28 var11 var24 var12 var0 var21 var15 var18 var23)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 list) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Int) (var26 Heap)) (or (not (and (inv_main18 var16 var19 var7 var2 var23 var1 var18 var9 var14) (and (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (and (= var26 (newHeap (alloc var3 (O_list var4)))) (= var24 var6)) (= var12 var0)) (= var8 var20)) (= var21 var17)) (= var11 var15)) (= var13 var17)) (= var5 5)) (= var22 (newAddr (alloc var3 (O_list var4)))))) (and (and (and (and (and (and (and (= var3 (write var16 var18 (O_list (list (key (getlist (read var16 var18))) var14)))) (= var6 var19)) (= var10 var7)) (= var20 var2)) (= var17 var23)) (= var15 var1)) (= var0 var18)) (= var25 var9))))) (inv_main28 var26 var24 var12 var8 var21 var11 var22 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 list) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int) (var23 Heap) (var24 Addr) (var25 Addr)) (or (not (and (inv_main44 var13 var16 var6 var4 var20 var0 var11 var9) (and (and (= var24 nullAddr) (and (and (and (and (and (and (and (and (= var23 (newHeap (alloc var2 (O_list var8)))) (= var5 var15)) (= var24 var19)) (= var22 var1)) (= var12 var3)) (= var7 var18)) (= var10 var3)) (= var17 3)) (= var25 (newAddr (alloc var2 (O_list var8)))))) (and (and (and (and (and (and (and (= var2 (write var13 var11 (O_list (list (key (getlist (read var13 var11))) nullAddr)))) (= var15 var16)) (= var21 var6)) (= var1 var4)) (= var3 var20)) (= var18 var0)) (= var19 var11)) (= var14 var9))))) (inv_main55 var23 var5 var24 var22 var12 var7 var25 var17)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 list) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Int) (var24 Addr) (var25 Addr) (var26 Int)) (or (not (and (inv_main46 var12 var18 var4 var2 var21 var0 var10 var7 var3) (and (and (= var22 nullAddr) (and (and (and (and (and (and (and (and (= var16 (newHeap (alloc var6 (O_list var11)))) (= var17 var26)) (= var22 var25)) (= var19 var23)) (= var15 var20)) (= var8 var14)) (= var13 var20)) (= var1 3)) (= var24 (newAddr (alloc var6 (O_list var11)))))) (and (and (and (and (and (and (and (= var6 (write var12 var10 (O_list (list (key (getlist (read var12 var10))) var3)))) (= var26 var18)) (= var5 var4)) (= var23 var2)) (= var20 var21)) (= var14 var0)) (= var25 var10)) (= var9 var7))))) (inv_main55 var16 var17 var22 var19 var15 var8 var24 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (or (not (inv_main27 var1 var3 var4 var2 var6 var0 var7 var5)) (inv_main30 (write var1 var7 (O_list (list var5 (next (getlist (read var1 var7)))))) var3 var4 var2 var6 var0 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap)) (or (not (and (inv_main87 var11 var13 var6 var5 var14 var0 var7 var4) (and (= var3 var10) (and (and (and (and (and (and (and (and (= var16 var11) (= var2 var13)) (= var8 var6)) (= var9 var5)) (= var12 var14)) (= var15 var0)) (= var10 var7)) (= var1 var4)) (= var3 (next (getlist (read var11 var4)))))))) (inv_main86 var16 var2 var8 var9 var12 var15 var10 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main88 var12 var13 var7 var5 var14 var2 var8 var4) (and (and (and (and (and (and (and (and (= var0 var12) (= var9 var13)) (= var15 var7)) (= var1 var5)) (= var10 var14)) (= var16 var2)) (= var6 var8)) (= var3 var4)) (= var11 (next (getlist (read var12 var8))))))) (inv_main86 var0 var9 var11 var1 var10 var16 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (inv_main55 var1 var4 var5 var3 var7 var0 var2 var6)) (inv_main58 (write var1 var2 (O_list (list var6 (next (getlist (read var1 var2)))))) var4 var5 var3 var7 var0 var2 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 list) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr)) (or (not (and (inv_main5 var12 var13 var6 var5 var15 var2) (and (not (= var9 nullAddr)) (and (and (and (and (and (and (and (and (= var8 (newHeap (alloc var12 (O_list var11)))) (= var7 var13)) (= var9 var6)) (= var1 var5)) (= var4 var15)) (= var3 var2)) (= var14 var15)) (= var0 2)) (= var10 (newAddr (alloc var12 (O_list var11)))))))) (inv_main14 var8 var7 var9 var1 var4 var3 var10 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Heap) (var21 Addr) (var22 Addr) (var23 Int) (var24 Addr) (var25 Addr)) (or (not (and (inv_main71 var14 var19 var4 var2 var21 var1 var6 var11) (and (and (not (= var16 0)) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (and (= var20 var14) (= var18 var19)) (= var9 var4)) (= var7 var2)) (= var10 var21)) (= var24 var1)) (= var17 var6)) (= var13 var11)) (= var23 (key (getlist (read var14 var6))))))) (and (and (and (and (and (and (and (and (= var3 var20) (= var8 var18)) (= var22 var9)) (= var12 var7)) (= var25 var10)) (= var5 var24)) (= var15 var17)) (= var0 var13)) (or (and (not (= var23 var13)) (= var16 1)) (and (= var23 var13) (= var16 0))))))) (inv_main74 var3 var8 var22 var12 var25 var5 var15 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main74 var9 var11 var6 var3 var12 var1 var7 var8) (and (and (and (and (and (and (and (and (= var0 var9) (= var2 var11)) (= var13 var6)) (= var5 var3)) (= var4 var12)) (= var14 var1)) (= var15 var7)) (= var16 var8)) (= var10 (next (getlist (read var9 var7))))))) (inv_main71 var0 var2 var13 var5 var4 var14 var10 var16)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main62 var1 var3 var4 var2 var5 var0) (= var5 nullAddr))) (inv_main71 var1 var3 var4 var2 var5 var0 var4 2)))) +(assert (forall ((var0 Addr) (var1 list) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Heap)) (or (not (and (inv_main30 var17 var19 var9 var5 var22 var2 var23 var21) (and (and (not (= var10 nullAddr)) (and (and (and (and (and (and (and (and (= var25 (newHeap (alloc var11 (O_list var1)))) (= var15 var8)) (= var10 var18)) (= var3 var12)) (= var20 var14)) (= var4 var0)) (= var24 var14)) (= var6 1)) (= var7 (newAddr (alloc var11 (O_list var1)))))) (and (and (and (and (and (and (and (= var11 (write var17 var23 (O_list (list (key (getlist (read var17 var23))) nullAddr)))) (= var8 var19)) (= var16 var9)) (= var12 var5)) (= var14 var22)) (= var0 var2)) (= var18 var23)) (= var13 var21))))) (inv_main42 var25 var15 var10 var3 var20 var4 var7 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Heap) (var14 Int) (var15 list) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr)) (or (not (and (inv_main32 var11 var16 var4 var3 var20 var1 var23 var19 var12) (and (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var13 (O_list var15)))) (= var5 var14)) (= var6 var24)) (= var21 var18)) (= var10 var7)) (= var8 var26)) (= var22 var7)) (= var17 1)) (= var25 (newAddr (alloc var13 (O_list var15)))))) (and (and (and (and (and (and (and (= var13 (write var11 var23 (O_list (list (key (getlist (read var11 var23))) var12)))) (= var14 var16)) (= var2 var4)) (= var18 var3)) (= var7 var20)) (= var26 var1)) (= var24 var23)) (= var0 var19))))) (inv_main42 var9 var5 var6 var21 var10 var8 var25 var17)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main62 var1 var3 var4 var2 var5 var0) (not (= var5 nullAddr)))) (inv_main65 var1 var3 var4 var2 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main87 var12 var13 var6 var5 var14 var0 var7 var4) (and (not (= var1 var8)) (and (and (and (and (and (and (and (and (= var9 var12) (= var2 var13)) (= var15 var6)) (= var3 var5)) (= var16 var14)) (= var11 var0)) (= var8 var7)) (= var10 var4)) (= var1 (next (getlist (read var12 var4)))))))) (inv_main90 var9 var2 var15 var3 var16 var11 var8 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int)) (or (not (and (inv_main28 var8 var9 var5 var4 var13 var0 var14 var12) (and (and (and (and (and (and (and (= var7 (write var8 var14 (O_list (list var12 (next (getlist (read var8 var14))))))) (= var11 var9)) (= var1 var5)) (= var15 var4)) (= var2 var13)) (= var3 var0)) (= var10 var14)) (= var6 var12)))) (inv_main32 var7 var11 var1 var15 var2 var3 var10 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Heap) (var18 Int) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 list)) (or (not (and (inv_main44 var17 var20 var8 var6 var23 var2 var15 var12) (and (and (not (= var13 nullAddr)) (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var4 (O_list var25)))) (= var16 var19)) (= var13 var22)) (= var7 var3)) (= var11 var5)) (= var14 var21)) (= var1 var5)) (= var10 3)) (= var0 (newAddr (alloc var4 (O_list var25)))))) (and (and (and (and (and (and (and (= var4 (write var17 var15 (O_list (list (key (getlist (read var17 var15))) nullAddr)))) (= var19 var20)) (= var24 var8)) (= var3 var6)) (= var5 var23)) (= var21 var2)) (= var22 var15)) (= var18 var12))))) (inv_main56 var9 var16 var13 var7 var11 var14 var0 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Heap) (var11 list) (var12 Int) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Addr) (var26 Int)) (or (not (and (inv_main46 var15 var18 var6 var4 var21 var0 var14 var9 var5) (and (and (not (= var13 nullAddr)) (and (and (and (and (and (and (and (and (= var10 (newHeap (alloc var8 (O_list var11)))) (= var1 var26)) (= var13 var25)) (= var16 var24)) (= var22 var20)) (= var23 var17)) (= var3 var20)) (= var19 3)) (= var2 (newAddr (alloc var8 (O_list var11)))))) (and (and (and (and (and (and (and (= var8 (write var15 var14 (O_list (list (key (getlist (read var15 var14))) var5)))) (= var26 var18)) (= var7 var6)) (= var24 var4)) (= var20 var21)) (= var17 var0)) (= var25 var14)) (= var12 var9))))) (inv_main56 var10 var1 var13 var16 var22 var23 var2 var19)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main71 var1 var3 var4 var2 var5 var0 var6 var7) (= var6 nullAddr))) (inv_main67 var1 var3 var4 var2 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int) (var20 Int) (var21 Heap) (var22 Addr) (var23 Int) (var24 Int) (var25 Addr)) (or (not (and (inv_main71 var15 var19 var4 var3 var22 var1 var5 var12) (and (and (= var23 0) (and (not (= var5 nullAddr)) (and (and (and (and (and (and (and (and (= var21 var15) (= var18 var19)) (= var10 var4)) (= var6 var3)) (= var11 var22)) (= var25 var1)) (= var17 var5)) (= var14 var12)) (= var24 (key (getlist (read var15 var5))))))) (and (and (and (and (and (and (and (and (= var7 var21) (= var13 var18)) (= var8 var10)) (= var9 var6)) (= var0 var11)) (= var2 var25)) (= var16 var17)) (= var20 var14)) (or (and (not (= var24 var14)) (= var23 1)) (and (= var24 var14) (= var23 0))))))) (inv_main67 var7 var13 var8 var9 var0 var16)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Heap) (var16 Addr) (var17 list) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Int) (var24 Int) (var25 Int)) (or (not (and (inv_main16 var15 var19 var7 var4 var22 var0 var16 var8) (and (and (= var14 nullAddr) (and (and (and (and (and (and (and (and (= var12 (newHeap (alloc var3 (O_list var17)))) (= var24 var1)) (= var14 var11)) (= var23 var13)) (= var5 var6)) (= var10 var2)) (= var9 var6)) (= var25 5)) (= var21 (newAddr (alloc var3 (O_list var17)))))) (and (and (and (and (and (and (and (= var3 (write var15 var16 (O_list (list (key (getlist (read var15 var16))) nullAddr)))) (= var1 var19)) (= var18 var7)) (= var13 var4)) (= var6 var22)) (= var2 var0)) (= var11 var16)) (= var20 var8))))) (inv_main27 var12 var24 var14 var23 var5 var10 var21 var25)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 list) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Int) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Int) (var26 Int)) (or (not (and (inv_main18 var17 var20 var8 var4 var24 var1 var19 var10 var14) (and (and (= var6 nullAddr) (and (and (and (and (and (and (and (and (= var13 (newHeap (alloc var5 (O_list var2)))) (= var9 var7)) (= var6 var0)) (= var26 var21)) (= var23 var18)) (= var22 var16)) (= var12 var18)) (= var3 5)) (= var15 (newAddr (alloc var5 (O_list var2)))))) (and (and (and (and (and (and (and (= var5 (write var17 var19 (O_list (list (key (getlist (read var17 var19))) var14)))) (= var7 var20)) (= var11 var8)) (= var21 var4)) (= var18 var24)) (= var16 var1)) (= var0 var19)) (= var25 var10))))) (inv_main27 var13 var9 var6 var26 var23 var22 var15 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int)) (or (not (and (inv_main100 var3 var7 var8 var4 var9 var2) (and (not (= var5 nullAddr)) (and (and (and (and (and (and (= var1 var3) (= var12 var7)) (= var6 var8)) (= var10 var4)) (= var11 var9)) (= var0 var2)) (= var5 (next (getlist (read var3 var9)))))))) (inv_main100 var1 var12 var6 var10 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr)) (or (not (and (inv_main95 var17 var20 var5 var4 var21 var0 var6 var3 var10) (and (not (= var16 nullAddr)) (and (and (and (and (and (and (and (and (= var9 (write var17 var3 (O_list (list (key (getlist (read var17 var3))) var10)))) (= var13 var20)) (= var23 var5)) (= var2 var4)) (= var11 var21)) (= var8 var0)) (= var24 var6)) (= var18 var3)) (and (and (and (and (and (and (and (= var15 (write var9 var24 defObj)) (= var14 var13)) (= var16 var23)) (= var19 var2)) (= var22 var11)) (= var1 var8)) (= var12 var24)) (= var7 var18)))))) (inv_main100 var15 var14 var16 var19 var16 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (inv_main41 var2 var4 var5 var3 var6 var0 var1 var7)) (inv_main44 (write var2 var1 (O_list (list var7 (next (getlist (read var2 var1)))))) var4 var5 var3 var6 var0 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap)) (or (not (and (inv_main90 var7 var9 var4 var2 var12 var0 var5 var1) (and (and (and (and (and (and (and (and (= var16 var7) (= var13 var9)) (= var3 var4)) (= var10 var2)) (= var11 var12)) (= var6 var0)) (= var14 var5)) (= var8 var1)) (= var15 (next (getlist (read var7 var1))))))) (inv_main87 var16 var13 var3 var10 var11 var6 var14 var15)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main67 var1 var3 var4 var2 var5 var0) (not (= var4 var0)))) (inv_main87 var1 var3 var4 var2 var5 var0 var0 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 list) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr)) (or (not (and (inv_main5 var12 var13 var6 var5 var15 var2) (and (= var9 nullAddr) (and (and (and (and (and (and (and (and (= var8 (newHeap (alloc var12 (O_list var11)))) (= var7 var13)) (= var9 var6)) (= var1 var5)) (= var4 var15)) (= var3 var2)) (= var14 var15)) (= var0 2)) (= var10 (newAddr (alloc var12 (O_list var11)))))))) (inv_main13 var8 var7 var9 var1 var4 var3 var10 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main42 var9 var12 var3 var2 var14 var0 var7 var4) (and (and (and (and (and (and (and (= var6 (write var9 var7 (O_list (list var4 (next (getlist (read var9 var7))))))) (= var5 var12)) (= var15 var3)) (= var8 var2)) (= var13 var14)) (= var10 var0)) (= var1 var7)) (= var11 var4)))) (inv_main46 var6 var5 var15 var8 var13 var10 var1 var11 var15)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr)) (or (not (and (inv_main14 var7 var10 var3 var2 var11 var0 var8 var4) (and (and (and (and (and (and (and (= var14 (write var7 var8 (O_list (list var4 (next (getlist (read var7 var8))))))) (= var1 var10)) (= var6 var3)) (= var5 var2)) (= var15 var11)) (= var12 var0)) (= var9 var8)) (= var13 var4)))) (inv_main18 var14 var1 var6 var5 var15 var12 var9 var13 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main67 var1 var3 var4 var2 var5 var0) (= var4 var0))) (inv_main88 var1 var3 var4 var2 var5 var0 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main86 var1 var4 var5 var3 var7 var0 var6 var2)) (inv_main95 var1 var4 var5 var3 var7 var0 var6 var2 (next (getlist (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (inv_main13 var1 var4 var5 var3 var7 var0 var2 var6)) (inv_main16 (write var1 var2 (O_list (list var6 (next (getlist (read var1 var2)))))) var4 var5 var3 var7 var0 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main65 var1 var5 var6 var2 var7 var0) (and (and (and (and (and (and (= var11 var1) (= var8 var5)) (= var12 var6)) (= var9 var2)) (= var4 var7)) (= var3 var0)) (= var10 (next (getlist (read var1 var7))))))) (inv_main62 var11 var8 var12 var9 var10 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int)) (or (not (and (inv_main58 var8 var10 var4 var3 var13 var0 var9 var12) (and (and (and (and (and (and (and (= var1 (write var8 var9 (O_list (list (key (getlist (read var8 var9))) nullAddr)))) (= var15 var10)) (= var7 var4)) (= var6 var3)) (= var2 var13)) (= var11 var0)) (= var14 var9)) (= var5 var12)))) (inv_main62 var1 var15 var14 var6 var14 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main60 var12 var14 var8 var6 var16 var2 var13 var15 var9) (and (and (and (and (and (and (and (= var5 (write var12 var13 (O_list (list (key (getlist (read var12 var13))) var9)))) (= var10 var14)) (= var1 var8)) (= var7 var6)) (= var0 var16)) (= var11 var2)) (= var4 var13)) (= var3 var15)))) (inv_main62 var5 var10 var4 var7 var4 var11)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr)) (or (not (and (inv_main56 var9 var12 var5 var3 var15 var1 var10 var14) (and (and (and (and (and (and (and (= var0 (write var9 var10 (O_list (list var14 (next (getlist (read var9 var10))))))) (= var13 var12)) (= var2 var5)) (= var7 var3)) (= var6 var15)) (= var11 var1)) (= var8 var10)) (= var4 var14)))) (inv_main60 var0 var13 var2 var7 var6 var11 var8 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main13 var1 var4 var5 var3 var7 var0 var2 var6) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main16 var1 var4 var5 var3 var7 var0 var2 var6) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main14 var1 var4 var5 var3 var7 var0 var2 var6) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main18 var2 var5 var6 var4 var8 var1 var3 var7 var0) (not (is-O_list (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main27 var1 var3 var4 var2 var6 var0 var7 var5) (not (is-O_list (read var1 var7))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main30 var1 var3 var4 var2 var6 var0 var7 var5) (not (is-O_list (read var1 var7))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main28 var1 var3 var4 var2 var6 var0 var7 var5) (not (is-O_list (read var1 var7))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main32 var1 var4 var5 var3 var7 var0 var8 var6 var2) (not (is-O_list (read var1 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main41 var2 var4 var5 var3 var6 var0 var1 var7) (not (is-O_list (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main44 var2 var4 var5 var3 var6 var0 var1 var7) (not (is-O_list (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main42 var2 var4 var5 var3 var6 var0 var1 var7) (not (is-O_list (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (not (and (inv_main46 var2 var5 var6 var3 var7 var0 var1 var8 var4) (not (is-O_list (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main55 var1 var4 var5 var3 var7 var0 var2 var6) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main58 var1 var4 var5 var3 var7 var0 var2 var6) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main56 var1 var4 var5 var3 var7 var0 var2 var6) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main60 var1 var4 var5 var3 var8 var0 var2 var6 var7) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main65 var1 var3 var4 var2 var5 var0) (not (is-O_list (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main71 var1 var3 var4 var2 var5 var0 var6 var7) (and (not (= var6 nullAddr)) (not (is-O_list (read var1 var6)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main74 var1 var3 var4 var2 var5 var0 var6 var7) (not (is-O_list (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main67 var1 var3 var4 var2 var5 var0) (not (is-O_list (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main67 var1 var3 var4 var2 var5 var0) (not (= (key (getlist (read var1 var0))) 2)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main87 var1 var4 var5 var3 var7 var0 var6 var2) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main90 var1 var4 var5 var3 var7 var0 var6 var2) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main88 var1 var4 var5 var3 var7 var0 var6 var2) (not (is-O_list (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main86 var1 var4 var5 var3 var7 var0 var6 var2) (not (is-O_list (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main95 var1 var4 var5 var3 var7 var0 var6 var2 var8) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main100 var1 var3 var4 var2 var5 var0) (not (is-O_list (read var1 var5))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/lockfree-3.1.i.smt2 b/heap-theory-benchmarks/array/lockfree-3.1.i.smt2 new file mode 100644 index 00000000..4086d4ff --- /dev/null +++ b/heap-theory-benchmarks/array/lockfree-3.1.i.smt2 @@ -0,0 +1,93 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (cell 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_cell (getcell cell)) (defObj)) + ((cell (data Int) (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main0 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main20 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Int Int Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Int Int Addr Addr Addr Addr Addr Int Int) Bool) +(declare-fun inv_main51 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main60 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main64 (Heap Addr Int Int Addr Addr Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main69 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(assert (forall ((var0 Addr) (var1 Addr)) (inv_main2 emptyHeap var0 1 1 nullAddr nullAddr var1 nullAddr nullAddr))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main60 var8 var11 var12 var17 var3 var10 var14 var13 var2 var5) (and (and (and (and (and (and (and (and (and (and (= var15 var8) (= var9 var11)) (= var0 var12)) (= var1 var17)) (= var20 var3)) (= var16 var10)) (= var18 var14)) (= var7 var13)) (= var6 var2)) (= var19 var5)) (= var4 (data (getcell (read var8 var13))))))) (inv_main64 var15 var9 var0 var1 var20 var16 var18 var7 var6 var4 var18)))) +(assert (forall ((var0 cell) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Int)) (or (not (and (inv_main16 var10 var12 var14 var18 var5 var11 var16 var15 var4 var9) (and (and (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var10 (O_cell var0)))) (= var19 var12)) (= var17 (+ var9 1))) (= var20 var18)) (= var3 var5)) (= var13 var11)) (= var2 var16)) (= var1 var15)) (= var7 var4)) (= var8 (newAddr (alloc var10 (O_cell var0))))) (= var9 1)))) (inv_main18 var6 var19 var17 var20 var3 var8 var2 var1 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap)) (or (not (and (inv_main9 var11 var2 var5 var8 var4 var1 var7 var6 var3 var10) (and (= var9 0) (not (= var10 0))))) (inv_main42 var11 var2 var5 var8 var4 var1 var7 var6 var3 var0 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (= var8 2))) (inv_main22 var9 var1 (+ var8 1) var7 var3 var0 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (= var8 5))) (inv_main60 var10 var1 var4 (+ var8 1) var3 var0 var7 var6 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (= var8 1))) (inv_main2 var10 var1 var4 (+ var8 1) var3 var0 var7 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main51 var8 var12 var14 var19 var1 var11 var16 var15 var0 var4) (and (and (and (and (and (and (and (and (and (and (= var17 var8) (= var3 var12)) (= var13 var14)) (= var6 var19)) (= var20 var1)) (= var18 var11)) (= var9 var16)) (= var5 var15)) (= var7 var0)) (= var2 var4)) (= var10 (next (getcell (read var8 var15))))))) (inv_main2 var17 var3 var13 var6 var20 var18 var9 var5 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int)) (or (not (and (inv_main64 var7 var11 var13 var20 var3 var10 var17 var15 var2 var4 var8) (and (and (and (and (and (and (and (and (and (= var9 (write var7 var15 (O_cell (cell (data (getcell (read var7 var15))) var8)))) (= var0 var11)) (= var1 var13)) (= var5 var20)) (= var16 var3)) (= var12 var10)) (= var6 var17)) (= var19 var15)) (= var18 var2)) (= var14 var4)))) (inv_main2 var9 var0 var1 1 var16 var12 var19 var19 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (and (= var6 nullAddr) (= var8 2)))) (inv_main2 var10 var1 var4 1 var3 var0 var7 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (and (not (= var6 nullAddr)) (= var8 2)))) (inv_main2 var10 var1 var4 (+ var8 1) var3 var0 var7 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (and (= var1 var6) (= var8 4)))) (inv_main2 var10 var2 var4 (+ var8 1) var3 var0 var7 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (and (not (= var1 var6)) (= var8 4)))) (inv_main2 var10 var1 var4 1 var3 var0 var7 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Int)) (or (not (and (inv_main20 var9 var11 var12 var15 var4 var10 var14 var13 var3) (and (and (and (and (and (and (and (and (= var8 (write var9 var10 (O_cell (cell (data (getcell (read var9 var10))) nullAddr)))) (= var0 var11)) (= var6 var12)) (= var17 var15)) (= var5 var4)) (= var1 var10)) (= var16 var14)) (= var2 var13)) (= var7 var3)))) (inv_main2 var8 var0 var6 var17 var5 var1 var16 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Int)) (or (not (and (inv_main22 var6 var9 var11 var16 var2 var8 var14 var13 var1) (and (and (and (and (and (and (and (and (= var15 (write var6 var8 (O_cell (cell 4 (next (getcell (read var6 var8))))))) (= var5 var9)) (= var17 var11)) (= var3 var16)) (= var12 var2)) (= var0 var8)) (= var10 var14)) (= var4 var13)) (= var7 var1)))) (inv_main2 var15 var5 var17 var3 var12 var0 var10 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (= var8 3))) (inv_main2 var9 var1 (+ var8 1) var7 var1 var0 var6 var5 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main29 var7 var10 var12 var18 var3 var9 var14 var13 var2 var17) (and (and (and (and (and (and (and (and (= var5 (write var7 var9 (O_cell (cell (data (getcell (read var7 var9))) var17)))) (= var6 var10)) (= var0 var12)) (= var1 var18)) (= var11 var3)) (= var15 var9)) (= var16 var14)) (= var4 var13)) (= var8 var2)))) (inv_main2 var5 var6 var0 var1 var11 var15 var16 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (= var8 6))) (inv_main2 var9 var1 1 var7 var3 var0 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (and (= var1 var3) (= var8 5)))) (inv_main2 var9 var0 (+ var8 1) var7 var3 var0 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (and (not (= var1 var3)) (= var8 5)))) (inv_main2 var9 var1 3 var7 var3 var0 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main9 var10 var1 var4 var8 var3 var0 var6 var5 var2 var9) (and (not (= var7 0)) (not (= var9 0))))) (inv_main16 var10 var1 var4 var8 var3 var0 var6 var5 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (inv_main18 var8 var1 var4 var7 var3 var0 var6 var5 var2)) (inv_main20 (write var8 var0 (O_cell (cell 0 (next (getcell (read var8 var0)))))) var1 var4 var7 var3 var0 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Int) (var30 Int) (var31 Addr) (var32 Addr) (var33 Addr) (var34 Addr) (var35 Heap) (var36 Addr) (var37 Int) (var38 Addr) (var39 Addr) (var40 Heap) (var41 Addr) (var42 Addr) (var43 Heap) (var44 Addr) (var45 Int) (var46 Int) (var47 Int) (var48 Addr) (var49 Addr) (var50 Int) (var51 Addr) (var52 Int) (var53 Addr) (var54 Addr)) (or (not (and (inv_main9 var43 var20 var50 var30 var6 var19 var26 var24 var5 var15) (and (and (and (and (and (and (= var26 nullAddr) (and (and (and (and (and (and (and (and (= var2 var43) (= var53 nullAddr)) (= var1 var50)) (= var4 var30)) (= var17 var6)) (= var48 var19)) (= var42 var26)) (= var51 var24)) (= var13 var5))) (and (and (and (and (and (and (and (and (= var40 var2) (= var36 var53)) (= var16 var1)) (= var11 var4)) (= var49 nullAddr)) (= var18 var48)) (= var22 var42)) (= var32 var51)) (= var3 var13))) (and (and (and (and (and (and (and (and (= var35 var40) (= var8 var36)) (= var46 var16)) (= var29 var11)) (= var0 var49)) (= var28 nullAddr)) (= var25 var22)) (= var33 var32)) (= var12 var3))) (and (and (and (and (and (and (and (and (= var7 var35) (= var27 var8)) (= var52 var46)) (= var47 var29)) (= var31 var0)) (= var34 var28)) (= var44 var25)) (= var39 nullAddr)) (= var14 var12))) (and (and (and (and (and (and (and (and (= var10 var7) (= var21 var27)) (= var37 var52)) (= var45 var47)) (= var23 var31)) (= var38 var34)) (= var54 var44)) (= var9 var39)) (= var41 nullAddr))) (= var15 0)))) (and (or (not (not (= var54 nullAddr))) (inv_main0 var10 var21 var37 var45 var23 var38 var54 var9 var41 1)) (or (not (= var54 nullAddr)) (inv_main0 var10 var21 var37 var45 var23 var38 var54 var9 var41 0)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Addr) (var26 Addr) (var27 Int) (var28 Addr) (var29 Heap) (var30 Int) (var31 Addr) (var32 Addr) (var33 Int) (var34 Int) (var35 Int) (var36 Addr) (var37 Addr) (var38 Heap) (var39 Addr) (var40 Addr) (var41 Addr) (var42 Addr) (var43 Addr) (var44 Addr) (var45 Heap) (var46 Addr) (var47 Addr) (var48 Int) (var49 Addr) (var50 Int) (var51 Addr) (var52 Addr) (var53 Addr) (var54 Addr) (var55 Addr) (var56 Int) (var57 Addr) (var58 Int) (var59 Addr) (var60 Heap) (var61 Addr) (var62 Addr) (var63 Addr) (var64 Addr) (var65 Addr) (var66 Addr) (var67 Addr) (var68 Int) (var69 Int) (var70 Addr) (var71 Addr) (var72 Int) (var73 Addr)) (or (not (and (inv_main69 var29 var10 var35 var56 var4 var9 var53 var52 var43) (and (and (and (and (and (and (= var0 nullAddr) (and (and (and (and (and (and (and (and (= var38 var5) (= var44 nullAddr)) (= var12 var50)) (= var48 var72)) (= var14 var71)) (= var3 var6)) (= var55 var0)) (= var42 var39)) (= var22 var21))) (and (and (and (and (and (and (and (and (= var16 var38) (= var25 var44)) (= var58 var12)) (= var33 var48)) (= var70 nullAddr)) (= var65 var3)) (= var32 var55)) (= var66 var42)) (= var20 var22))) (and (and (and (and (and (and (and (and (= var45 var16) (= var51 var25)) (= var68 var58)) (= var24 var33)) (= var18 var70)) (= var26 nullAddr)) (= var67 var32)) (= var23 var66)) (= var57 var20))) (and (and (and (and (and (and (and (and (= var60 var45) (= var61 var51)) (= var13 var68)) (= var69 var24)) (= var62 var18)) (= var49 var26)) (= var28 var67)) (= var19 nullAddr)) (= var15 var57))) (and (and (and (and (and (and (and (and (= var1 var60) (= var64 var61)) (= var27 var13)) (= var11 var69)) (= var46 var62)) (= var31 var49)) (= var63 var28)) (= var7 var19)) (= var36 nullAddr))) (and (and (and (and (and (and (and (and (and (and (= var8 var29) (= var40 var10)) (= var34 var35)) (= var30 var56)) (= var37 var4)) (= var41 var9)) (= var47 var53)) (= var59 var52)) (= var17 var43)) (= var2 (next (getcell (read var29 var53))))) (and (and (and (and (and (and (and (and (and (= var5 (write var8 var47 defObj)) (= var54 var40)) (= var50 var34)) (= var72 var30)) (= var71 var37)) (= var6 var41)) (= var73 var47)) (= var39 var59)) (= var21 var17)) (= var0 var2)))))) (and (or (not (not (= var63 nullAddr))) (inv_main0 var1 var64 var27 var11 var46 var31 var63 var7 var36 1)) (or (not (= var63 nullAddr)) (inv_main0 var1 var64 var27 var11 var46 var31 var63 var7 var36 0)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main9 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (and (not (= var6 nullAddr)) (= var8 0)))) (inv_main69 var9 var1 var4 var7 var3 var0 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int) (var21 Int) (var22 Int) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Int) (var28 Addr)) (or (not (and (inv_main69 var19 var10 var22 var16 var4 var9 var13 var12 var3) (and (not (= var1 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var7 var19) (= var25 var10)) (= var21 var22)) (= var20 var16)) (= var24 var4)) (= var0 var9)) (= var8 var13)) (= var17 var12)) (= var14 var3)) (= var5 (next (getcell (read var19 var13))))) (and (and (and (and (and (and (and (and (and (= var2 (write var7 var8 defObj)) (= var15 var25)) (= var11 var21)) (= var27 var20)) (= var26 var24)) (= var6 var0)) (= var28 var8)) (= var23 var17)) (= var18 var14)) (= var1 var5)))))) (inv_main69 var2 var15 var11 var27 var26 var6 var1 var23 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (= var8 4))) (inv_main29 var9 var1 (+ var8 1) var7 var3 var0 var6 var5 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (= var8 3))) (inv_main51 var10 var1 var4 (+ var8 1) var3 var0 var7 var6 var2 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main2 var6 var10 var11 var16 var4 var9 var13 var12 var3) (and (not (= var0 0)) (and (and (and (and (and (and (and (and (and (= var5 var6) (= var14 var10)) (= var2 var11)) (= var18 var16)) (= var8 var4)) (= var7 var9)) (= var1 var13)) (= var17 var12)) (= var15 var3)) (or (and (not (= 1 var11)) (= var0 1)) (and (= 1 var11) (= var0 0))))))) (inv_main9 var5 var14 var2 var18 var8 var7 var1 var17 var15 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Heap) (var25 Addr) (var26 Addr) (var27 Int) (var28 Heap)) (or (not (and (inv_main2 var24 var11 var27 var16 var3 var10 var14 var13 var2) (and (not (= var17 0)) (and (and (= var15 0) (and (and (and (and (and (and (and (and (and (= var1 var24) (= var4 var11)) (= var8 var27)) (= var7 var16)) (= var25 var3)) (= var26 var10)) (= var19 var14)) (= var22 var13)) (= var9 var2)) (or (and (not (= 1 var27)) (= var15 1)) (and (= 1 var27) (= var15 0))))) (and (and (and (and (and (and (and (and (and (= var28 var1) (= var6 var4)) (= var21 var8)) (= var0 var7)) (= var23 var25)) (= var12 var26)) (= var5 var19)) (= var18 var22)) (= var20 var9)) (or (and (not (= 1 var7)) (= var17 1)) (and (= 1 var7) (= var17 0)))))))) (inv_main9 var28 var6 var21 var0 var23 var12 var5 var18 var20 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Addr) (var25 Heap) (var26 Addr) (var27 Addr) (var28 Int) (var29 Heap)) (or (not (and (inv_main2 var25 var12 var28 var17 var3 var11 var15 var14 var2) (and (= var18 0) (and (and (= var16 0) (and (and (and (and (and (and (and (and (and (= var1 var25) (= var4 var12)) (= var8 var28)) (= var7 var17)) (= var26 var3)) (= var27 var11)) (= var20 var15)) (= var23 var14)) (= var9 var2)) (or (and (not (= 1 var28)) (= var16 1)) (and (= 1 var28) (= var16 0))))) (and (and (and (and (and (and (and (and (and (= var29 var1) (= var6 var4)) (= var22 var8)) (= var0 var7)) (= var24 var26)) (= var13 var27)) (= var5 var20)) (= var19 var23)) (= var21 var9)) (or (and (not (= 1 var7)) (= var18 1)) (and (= 1 var7) (= var18 0)))))))) (inv_main9 var29 var6 var22 var0 var24 var13 var5 var19 var21 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (not (and (inv_main18 var8 var1 var4 var7 var3 var0 var6 var5 var2) (not (is-O_cell (read var8 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (not (and (inv_main20 var8 var1 var4 var7 var3 var0 var6 var5 var2) (not (is-O_cell (read var8 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (not (and (inv_main22 var8 var1 var4 var7 var3 var0 var6 var5 var2) (not (is-O_cell (read var8 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap)) (not (and (inv_main29 var9 var1 var4 var8 var3 var0 var6 var5 var2 var7) (not (is-O_cell (read var9 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (and (and (and (and (and (not (= var8 1)) (not (= var8 2))) (not (= var8 3))) (not (= var8 4))) (not (= var8 5))) (not (= var8 6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap)) (not (and (inv_main51 var9 var1 var4 var8 var3 var0 var7 var6 var2 var5) (not (is-O_cell (read var9 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap)) (not (and (inv_main60 var9 var1 var4 var8 var3 var0 var7 var6 var2 var5) (not (is-O_cell (read var9 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr)) (not (and (inv_main64 var9 var1 var4 var8 var3 var0 var7 var6 var2 var5 var10) (not (is-O_cell (read var9 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (and (and (and (and (not (= var8 1)) (not (= var8 2))) (not (= var8 3))) (not (= var8 4))) (not (= var8 5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (not (and (inv_main69 var8 var1 var4 var7 var3 var0 var6 var5 var2) (not (is-O_cell (read var8 var6))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap)) (not (and (inv_main0 var10 var2 var5 var9 var4 var1 var8 var6 var3 var0) (not (= (read var10 var7) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/lockfree-3.2.i.smt2 b/heap-theory-benchmarks/array/lockfree-3.2.i.smt2 new file mode 100644 index 00000000..f86bc5a5 --- /dev/null +++ b/heap-theory-benchmarks/array/lockfree-3.2.i.smt2 @@ -0,0 +1,93 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (cell 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_cell (getcell cell)) (defObj)) + ((cell (data Int) (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main0 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main20 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Int Int Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Int Int Addr Addr Addr Addr Addr Int Int) Bool) +(declare-fun inv_main51 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main60 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main64 (Heap Addr Int Int Addr Addr Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main69 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(assert (forall ((var0 Addr) (var1 Addr)) (inv_main2 emptyHeap var1 1 1 nullAddr nullAddr var0 nullAddr nullAddr))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main9 var7 var4 var5 var11 var8 var6 var3 var1 var0 var10) (and (= var9 0) (not (= var10 0))))) (inv_main42 var7 var4 var5 var11 var8 var6 var3 var1 var0 var2 var11)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr)) (or (not (and (inv_main60 var6 var4 var12 var19 var14 var13 var3 var11 var0 var10) (and (and (and (and (and (and (and (and (and (and (= var15 var6) (= var9 var4)) (= var1 var12)) (= var2 var19)) (= var20 var14)) (= var16 var13)) (= var17 var3)) (= var8 var11)) (= var7 var0)) (= var18 var10)) (= var5 (data (getcell (read var6 var11))))))) (inv_main64 var15 var9 var1 var2 var20 var16 var17 var8 var7 var5 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (= var0 1))) (inv_main2 var8 var5 var6 (+ var0 1) var9 var7 var4 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main51 var5 var2 var14 var19 var16 var15 var1 var12 var0 var11) (and (and (and (and (and (and (and (and (and (and (= var17 var5) (= var4 var2)) (= var13 var14)) (= var7 var19)) (= var20 var16)) (= var18 var15)) (= var9 var1)) (= var6 var12)) (= var8 var0)) (= var3 var11)) (= var10 (next (getcell (read var5 var12))))))) (inv_main2 var17 var4 var13 var7 var20 var18 var9 var6 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int)) (or (not (and (inv_main64 var5 var4 var15 var20 var17 var16 var3 var13 var0 var12 var11) (and (and (and (and (and (and (and (and (and (= var19 (write var5 var13 (O_cell (cell (data (getcell (read var5 var13))) var11)))) (= var10 var4)) (= var7 var15)) (= var1 var20)) (= var9 var17)) (= var14 var16)) (= var18 var3)) (= var8 var13)) (= var2 var0)) (= var6 var12)))) (inv_main2 var19 var10 var7 1 var9 var14 var8 var8 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (= var3 nullAddr) (= var0 2)))) (inv_main2 var8 var5 var6 1 var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (not (= var3 nullAddr)) (= var0 2)))) (inv_main2 var8 var5 var6 (+ var0 1) var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (= var5 var3) (= var0 4)))) (inv_main2 var8 var1 var6 (+ var0 1) var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (not (= var5 var3)) (= var0 4)))) (inv_main2 var8 var5 var6 1 var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int)) (or (not (and (inv_main20 var6 var5 var12 var17 var14 var13 var4 var10 var0) (and (and (and (and (and (and (and (and (= var16 (write var6 var13 (O_cell (cell (data (getcell (read var6 var13))) nullAddr)))) (= var3 var5)) (= var7 var12)) (= var8 var17)) (= var11 var14)) (= var15 var13)) (= var9 var4)) (= var2 var10)) (= var1 var0)))) (inv_main2 var16 var3 var7 var8 var11 var15 var9 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int)) (or (not (and (inv_main22 var4 var2 var8 var17 var11 var9 var1 var6 var0) (and (and (and (and (and (and (and (and (= var16 (write var4 var9 (O_cell (cell 4 (next (getcell (read var4 var9))))))) (= var13 var2)) (= var3 var8)) (= var10 var17)) (= var12 var11)) (= var5 var9)) (= var14 var1)) (= var15 var6)) (= var7 var0)))) (inv_main2 var16 var13 var3 var10 var12 var5 var14 var15 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 3))) (inv_main2 var6 var3 (+ var8 1) var9 var3 var5 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr)) (or (not (and (inv_main29 var7 var5 var13 var17 var15 var14 var4 var12 var1 var9) (and (and (and (and (and (and (and (and (= var0 (write var7 var14 (O_cell (cell (data (getcell (read var7 var14))) var9)))) (= var8 var5)) (= var11 var13)) (= var2 var17)) (= var10 var15)) (= var18 var14)) (= var6 var4)) (= var3 var12)) (= var16 var1)))) (inv_main2 var0 var8 var11 var2 var10 var18 var6 var3 var16)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 6))) (inv_main2 var6 var3 1 var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (= var3 var7) (= var8 5)))) (inv_main2 var6 var5 (+ var8 1) var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (not (= var3 var7)) (= var8 5)))) (inv_main2 var6 var3 3 var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (= var0 3))) (inv_main51 var8 var5 var6 (+ var0 1) var9 var7 var4 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Int) (var27 Addr) (var28 Int) (var29 Addr) (var30 Addr) (var31 Addr) (var32 Addr) (var33 Addr) (var34 Addr) (var35 Addr) (var36 Int) (var37 Heap) (var38 Addr) (var39 Addr) (var40 Addr) (var41 Heap) (var42 Addr) (var43 Addr) (var44 Addr) (var45 Int) (var46 Heap) (var47 Int) (var48 Int) (var49 Addr) (var50 Int) (var51 Addr) (var52 Addr) (var53 Addr) (var54 Int)) (or (not (and (inv_main9 var9 var8 var20 var54 var23 var21 var7 var43 var0 var36) (and (and (and (and (and (and (= var7 nullAddr) (and (and (and (and (and (and (and (and (= var2 var9) (= var53 nullAddr)) (= var17 var20)) (= var47 var54)) (= var27 var23)) (= var22 var21)) (= var42 var7)) (= var15 var43)) (= var49 var0))) (and (and (and (and (and (and (and (and (= var46 var2) (= var30 var53)) (= var48 var17)) (= var26 var47)) (= var33 nullAddr)) (= var29 var22)) (= var32 var42)) (= var24 var15)) (= var25 var49))) (and (and (and (and (and (and (and (and (= var41 var46) (= var44 var30)) (= var13 var48)) (= var6 var26)) (= var31 var33)) (= var14 nullAddr)) (= var4 var32)) (= var16 var24)) (= var19 var25))) (and (and (and (and (and (and (and (and (= var5 var41) (= var35 var44)) (= var50 var13)) (= var18 var6)) (= var3 var31)) (= var38 var14)) (= var39 var4)) (= var34 nullAddr)) (= var51 var19))) (and (and (and (and (and (and (and (and (= var37 var5) (= var12 var35)) (= var45 var50)) (= var28 var18)) (= var52 var3)) (= var11 var38)) (= var40 var39)) (= var1 var34)) (= var10 nullAddr))) (= var36 0)))) (and (or (not (not (= var40 nullAddr))) (inv_main0 var37 var12 var45 var28 var52 var11 var40 var1 var10 1)) (or (not (= var40 nullAddr)) (inv_main0 var37 var12 var45 var28 var52 var11 var40 var1 var10 0)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Heap) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Int) (var23 Heap) (var24 Int) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Int) (var31 Addr) (var32 Addr) (var33 Int) (var34 Addr) (var35 Addr) (var36 Addr) (var37 Addr) (var38 Int) (var39 Addr) (var40 Addr) (var41 Addr) (var42 Heap) (var43 Addr) (var44 Addr) (var45 Addr) (var46 Int) (var47 Addr) (var48 Int) (var49 Heap) (var50 Int) (var51 Heap) (var52 Addr) (var53 Addr) (var54 Addr) (var55 Int) (var56 Addr) (var57 Addr) (var58 Addr) (var59 Heap) (var60 Addr) (var61 Addr) (var62 Addr) (var63 Heap) (var64 Addr) (var65 Addr) (var66 Addr) (var67 Addr) (var68 Addr) (var69 Addr) (var70 Addr) (var71 Addr) (var72 Int) (var73 Int)) (or (not (and (inv_main69 var5 var4 var16 var73 var56 var54 var45 var69 var41) (and (and (and (and (and (and (= var58 nullAddr) (and (and (and (and (and (and (and (and (= var59 var51) (= var7 nullAddr)) (= var38 var19)) (= var55 var6)) (= var68 var35)) (= var14 var15)) (= var71 var58)) (= var13 var57)) (= var18 var32))) (and (and (and (and (and (and (and (and (= var42 var59) (= var53 var7)) (= var50 var38)) (= var24 var55)) (= var28 nullAddr)) (= var64 var14)) (= var9 var71)) (= var61 var13)) (= var25 var18))) (and (and (and (and (and (and (and (and (= var63 var42) (= var3 var53)) (= var30 var50)) (= var20 var24)) (= var47 var28)) (= var21 nullAddr)) (= var65 var9)) (= var11 var61)) (= var29 var25))) (and (and (and (and (and (and (and (and (= var49 var63) (= var40 var3)) (= var46 var30)) (= var48 var20)) (= var37 var47)) (= var44 var21)) (= var34 var65)) (= var27 nullAddr)) (= var67 var29))) (and (and (and (and (and (and (and (and (= var23 var49) (= var2 var40)) (= var72 var46)) (= var22 var48)) (= var43 var37)) (= var8 var44)) (= var26 var34)) (= var31 var27)) (= var60 nullAddr))) (and (and (and (and (and (and (and (and (and (and (= var17 var5) (= var12 var4)) (= var0 var16)) (= var33 var73)) (= var10 var56)) (= var62 var54)) (= var36 var45)) (= var1 var69)) (= var70 var41)) (= var52 (next (getcell (read var5 var45))))) (and (and (and (and (and (and (and (and (and (= var51 (write var17 var36 defObj)) (= var39 var12)) (= var19 var0)) (= var6 var33)) (= var35 var10)) (= var15 var62)) (= var66 var36)) (= var57 var1)) (= var32 var70)) (= var58 var52)))))) (and (or (not (not (= var26 nullAddr))) (inv_main0 var23 var2 var72 var22 var43 var8 var26 var31 var60 1)) (or (not (= var26 nullAddr)) (inv_main0 var23 var2 var72 var22 var43 var8 var26 var31 var60 0)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main2 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (= var3 nullAddr)))) (inv_main9 var6 var3 var4 var8 var7 var5 var2 var1 var0 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int)) (or (not (and (inv_main2 var5 var3 var14 var18 var16 var15 var2 var13 var0) (and (not (= var17 0)) (and (= var3 nullAddr) (and (and (and (and (and (and (and (and (and (= var1 var5) (= var6 var3)) (= var9 var14)) (= var8 var18)) (= var11 var16)) (= var12 var15)) (= var4 var2)) (= var7 var13)) (= var10 var0)) (or (and (not (= 1 var18)) (= var17 1)) (and (= 1 var18) (= var17 0)))))))) (inv_main9 var1 var6 var9 var8 var11 var12 var4 var7 var10 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int)) (or (not (and (inv_main2 var5 var3 var15 var19 var17 var16 var2 var14 var0) (and (= var18 0) (and (= var3 nullAddr) (and (and (and (and (and (and (and (and (and (= var1 var5) (= var6 var3)) (= var10 var15)) (= var9 var19)) (= var12 var17)) (= var13 var16)) (= var4 var2)) (= var8 var14)) (= var11 var0)) (or (and (not (= 1 var19)) (= var18 1)) (and (= 1 var19) (= var18 0)))))))) (inv_main9 var1 var6 var10 var9 var12 var13 var4 var8 var11 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main9 var6 var3 var4 var10 var7 var5 var2 var1 var0 var8) (and (not (= var9 0)) (not (= var8 0))))) (inv_main16 var6 var3 var4 var10 var7 var5 var2 var1 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 cell) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main16 var7 var5 var12 var19 var14 var13 var4 var9 var1 var15) (and (and (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var7 (O_cell var3)))) (= var0 var5)) (= var17 (+ var15 1))) (= var11 var19)) (= var2 var14)) (= var20 var13)) (= var10 var4)) (= var8 var9)) (= var18 var1)) (= var16 (newAddr (alloc var7 (O_cell var3))))) (= var15 1)))) (inv_main18 var6 var0 var17 var11 var2 var16 var10 var8 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 4))) (inv_main29 var6 var3 (+ var8 1) var9 var7 var5 var2 var1 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main9 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (not (= var2 nullAddr)) (= var8 0)))) (inv_main69 var6 var3 var4 var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Int) (var27 Addr) (var28 Int)) (or (not (and (inv_main69 var6 var5 var14 var28 var16 var15 var4 var22 var1) (and (not (= var18 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var13 var6) (= var10 var5)) (= var2 var14)) (= var26 var28)) (= var8 var16)) (= var20 var15)) (= var27 var4)) (= var3 var22)) (= var23 var1)) (= var11 (next (getcell (read var6 var4))))) (and (and (and (and (and (and (and (and (and (= var9 (write var13 var27 defObj)) (= var0 var10)) (= var19 var2)) (= var7 var26)) (= var25 var8)) (= var12 var20)) (= var21 var27)) (= var17 var3)) (= var24 var23)) (= var18 var11)))))) (inv_main69 var9 var0 var19 var7 var25 var12 var18 var17 var24)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (= var0 5))) (inv_main60 var8 var5 var6 (+ var0 1) var9 var7 var4 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 2))) (inv_main22 var6 var3 (+ var8 1) var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (inv_main18 var6 var3 var4 var8 var7 var5 var2 var1 var0)) (inv_main20 (write var6 var5 (O_cell (cell 0 (next (getcell (read var6 var5)))))) var3 var4 var8 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main18 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main20 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main22 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main29 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (and (and (and (and (not (= var8 1)) (not (= var8 2))) (not (= var8 3))) (not (= var8 4))) (not (= var8 5))) (not (= var8 6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int)) (not (and (inv_main51 var7 var4 var5 var9 var8 var6 var3 var2 var0 var1) (not (is-O_cell (read var7 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int)) (not (and (inv_main60 var7 var4 var5 var9 var8 var6 var3 var2 var0 var1) (not (is-O_cell (read var7 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (not (and (inv_main64 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (not (is-O_cell (read var8 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (and (and (and (not (= var0 1)) (not (= var0 2))) (not (= var0 3))) (not (= var0 4))) (not (= var0 5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main69 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (not (and (inv_main0 var8 var4 var6 var10 var9 var7 var3 var2 var0 var1) (not (= (read var8 var5) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/lockfree-3.3.i.smt2 b/heap-theory-benchmarks/array/lockfree-3.3.i.smt2 new file mode 100644 index 00000000..e1745929 --- /dev/null +++ b/heap-theory-benchmarks/array/lockfree-3.3.i.smt2 @@ -0,0 +1,93 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (cell 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_cell (getcell cell)) (defObj)) + ((cell (data Int) (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main0 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main20 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Int Int Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Int Int Addr Addr Addr Addr Addr Int Int) Bool) +(declare-fun inv_main51 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main60 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main64 (Heap Addr Int Int Addr Addr Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main69 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(assert (forall ((var0 Addr) (var1 Addr)) (inv_main2 emptyHeap var1 1 1 nullAddr nullAddr var0 nullAddr nullAddr))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main9 var7 var4 var5 var11 var8 var6 var3 var1 var0 var10) (and (= var9 0) (not (= var10 0))))) (inv_main42 var7 var4 var5 var11 var8 var6 var3 var1 var0 var2 var11)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr)) (or (not (and (inv_main60 var6 var4 var12 var19 var14 var13 var3 var11 var0 var10) (and (and (and (and (and (and (and (and (and (and (= var15 var6) (= var9 var4)) (= var1 var12)) (= var2 var19)) (= var20 var14)) (= var16 var13)) (= var17 var3)) (= var8 var11)) (= var7 var0)) (= var18 var10)) (= var5 (data (getcell (read var6 var11))))))) (inv_main64 var15 var9 var1 var2 var20 var16 var17 var8 var7 var5 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (= var0 1))) (inv_main2 var8 var5 var6 (+ var0 1) var9 var7 var4 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main51 var5 var2 var14 var19 var16 var15 var1 var12 var0 var11) (and (and (and (and (and (and (and (and (and (and (= var17 var5) (= var4 var2)) (= var13 var14)) (= var7 var19)) (= var20 var16)) (= var18 var15)) (= var9 var1)) (= var6 var12)) (= var8 var0)) (= var3 var11)) (= var10 (next (getcell (read var5 var12))))))) (inv_main2 var17 var4 var13 var7 var20 var18 var9 var6 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int)) (or (not (and (inv_main64 var5 var4 var15 var20 var17 var16 var3 var13 var0 var12 var11) (and (and (and (and (and (and (and (and (and (= var19 (write var5 var13 (O_cell (cell (data (getcell (read var5 var13))) var11)))) (= var10 var4)) (= var7 var15)) (= var1 var20)) (= var9 var17)) (= var14 var16)) (= var18 var3)) (= var8 var13)) (= var2 var0)) (= var6 var12)))) (inv_main2 var19 var10 var7 1 var9 var14 var8 var8 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (= var3 nullAddr) (= var0 2)))) (inv_main2 var8 var5 var6 1 var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (not (= var3 nullAddr)) (= var0 2)))) (inv_main2 var8 var5 var6 (+ var0 1) var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (= var5 var3) (= var0 4)))) (inv_main2 var8 var1 var6 (+ var0 1) var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (not (= var5 var3)) (= var0 4)))) (inv_main2 var8 var5 var6 1 var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int)) (or (not (and (inv_main20 var6 var5 var12 var17 var14 var13 var4 var10 var0) (and (and (and (and (and (and (and (and (= var16 (write var6 var13 (O_cell (cell (data (getcell (read var6 var13))) nullAddr)))) (= var3 var5)) (= var7 var12)) (= var8 var17)) (= var11 var14)) (= var15 var13)) (= var9 var4)) (= var2 var10)) (= var1 var0)))) (inv_main2 var16 var3 var7 var8 var11 var15 var9 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int)) (or (not (and (inv_main22 var4 var2 var8 var17 var11 var9 var1 var6 var0) (and (and (and (and (and (and (and (and (= var16 (write var4 var9 (O_cell (cell 4 (next (getcell (read var4 var9))))))) (= var13 var2)) (= var3 var8)) (= var10 var17)) (= var12 var11)) (= var5 var9)) (= var14 var1)) (= var15 var6)) (= var7 var0)))) (inv_main2 var16 var13 var3 var10 var12 var5 var14 var15 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 3))) (inv_main2 var6 var3 (+ var8 1) var9 var3 var5 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr)) (or (not (and (inv_main29 var7 var5 var13 var17 var15 var14 var4 var12 var1 var9) (and (and (and (and (and (and (and (and (= var0 (write var7 var14 (O_cell (cell (data (getcell (read var7 var14))) var9)))) (= var8 var5)) (= var11 var13)) (= var2 var17)) (= var10 var15)) (= var18 var14)) (= var6 var4)) (= var3 var12)) (= var16 var1)))) (inv_main2 var0 var8 var11 var2 var10 var18 var6 var3 var16)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 6))) (inv_main2 var6 var3 1 var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (= var3 var7) (= var8 5)))) (inv_main2 var6 var5 (+ var8 1) var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (not (= var3 var7)) (= var8 5)))) (inv_main2 var6 var3 3 var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (= var0 3))) (inv_main51 var8 var5 var6 (+ var0 1) var9 var7 var4 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Int) (var27 Addr) (var28 Int) (var29 Addr) (var30 Addr) (var31 Addr) (var32 Addr) (var33 Addr) (var34 Addr) (var35 Addr) (var36 Int) (var37 Heap) (var38 Addr) (var39 Addr) (var40 Addr) (var41 Heap) (var42 Addr) (var43 Addr) (var44 Addr) (var45 Int) (var46 Heap) (var47 Int) (var48 Int) (var49 Addr) (var50 Int) (var51 Addr) (var52 Addr) (var53 Addr) (var54 Int)) (or (not (and (inv_main9 var9 var8 var20 var54 var23 var21 var7 var43 var0 var36) (and (and (and (and (and (and (= var7 nullAddr) (and (and (and (and (and (and (and (and (= var2 var9) (= var53 nullAddr)) (= var17 var20)) (= var47 var54)) (= var27 var23)) (= var22 var21)) (= var42 var7)) (= var15 var43)) (= var49 var0))) (and (and (and (and (and (and (and (and (= var46 var2) (= var30 var53)) (= var48 var17)) (= var26 var47)) (= var33 nullAddr)) (= var29 var22)) (= var32 var42)) (= var24 var15)) (= var25 var49))) (and (and (and (and (and (and (and (and (= var41 var46) (= var44 var30)) (= var13 var48)) (= var6 var26)) (= var31 var33)) (= var14 nullAddr)) (= var4 var32)) (= var16 var24)) (= var19 var25))) (and (and (and (and (and (and (and (and (= var5 var41) (= var35 var44)) (= var50 var13)) (= var18 var6)) (= var3 var31)) (= var38 var14)) (= var39 var4)) (= var34 nullAddr)) (= var51 var19))) (and (and (and (and (and (and (and (and (= var37 var5) (= var12 var35)) (= var45 var50)) (= var28 var18)) (= var52 var3)) (= var11 var38)) (= var40 var39)) (= var1 var34)) (= var10 nullAddr))) (= var36 0)))) (and (or (not (not (= var40 nullAddr))) (inv_main0 var37 var12 var45 var28 var52 var11 var40 var1 var10 1)) (or (not (= var40 nullAddr)) (inv_main0 var37 var12 var45 var28 var52 var11 var40 var1 var10 0)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Heap) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Int) (var23 Heap) (var24 Int) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Int) (var31 Addr) (var32 Addr) (var33 Int) (var34 Addr) (var35 Addr) (var36 Addr) (var37 Addr) (var38 Int) (var39 Addr) (var40 Addr) (var41 Addr) (var42 Heap) (var43 Addr) (var44 Addr) (var45 Addr) (var46 Int) (var47 Addr) (var48 Int) (var49 Heap) (var50 Int) (var51 Heap) (var52 Addr) (var53 Addr) (var54 Addr) (var55 Int) (var56 Addr) (var57 Addr) (var58 Addr) (var59 Heap) (var60 Addr) (var61 Addr) (var62 Addr) (var63 Heap) (var64 Addr) (var65 Addr) (var66 Addr) (var67 Addr) (var68 Addr) (var69 Addr) (var70 Addr) (var71 Addr) (var72 Int) (var73 Int)) (or (not (and (inv_main69 var5 var4 var16 var73 var56 var54 var45 var69 var41) (and (and (and (and (and (and (= var58 nullAddr) (and (and (and (and (and (and (and (and (= var59 var51) (= var7 nullAddr)) (= var38 var19)) (= var55 var6)) (= var68 var35)) (= var14 var15)) (= var71 var58)) (= var13 var57)) (= var18 var32))) (and (and (and (and (and (and (and (and (= var42 var59) (= var53 var7)) (= var50 var38)) (= var24 var55)) (= var28 nullAddr)) (= var64 var14)) (= var9 var71)) (= var61 var13)) (= var25 var18))) (and (and (and (and (and (and (and (and (= var63 var42) (= var3 var53)) (= var30 var50)) (= var20 var24)) (= var47 var28)) (= var21 nullAddr)) (= var65 var9)) (= var11 var61)) (= var29 var25))) (and (and (and (and (and (and (and (and (= var49 var63) (= var40 var3)) (= var46 var30)) (= var48 var20)) (= var37 var47)) (= var44 var21)) (= var34 var65)) (= var27 nullAddr)) (= var67 var29))) (and (and (and (and (and (and (and (and (= var23 var49) (= var2 var40)) (= var72 var46)) (= var22 var48)) (= var43 var37)) (= var8 var44)) (= var26 var34)) (= var31 var27)) (= var60 nullAddr))) (and (and (and (and (and (and (and (and (and (and (= var17 var5) (= var12 var4)) (= var0 var16)) (= var33 var73)) (= var10 var56)) (= var62 var54)) (= var36 var45)) (= var1 var69)) (= var70 var41)) (= var52 (next (getcell (read var5 var45))))) (and (and (and (and (and (and (and (and (and (= var51 (write var17 var36 defObj)) (= var39 var12)) (= var19 var0)) (= var6 var33)) (= var35 var10)) (= var15 var62)) (= var66 var36)) (= var57 var1)) (= var32 var70)) (= var58 var52)))))) (and (or (not (not (= var26 nullAddr))) (inv_main0 var23 var2 var72 var22 var43 var8 var26 var31 var60 1)) (or (not (= var26 nullAddr)) (inv_main0 var23 var2 var72 var22 var43 var8 var26 var31 var60 0)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main2 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (= var3 nullAddr)))) (inv_main9 var6 var3 var4 var8 var7 var5 var2 var1 var0 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int)) (or (not (and (inv_main2 var5 var3 var14 var18 var16 var15 var2 var13 var0) (and (not (= var17 0)) (and (= var3 nullAddr) (and (and (and (and (and (and (and (and (and (= var1 var5) (= var6 var3)) (= var9 var14)) (= var8 var18)) (= var11 var16)) (= var12 var15)) (= var4 var2)) (= var7 var13)) (= var10 var0)) (or (and (not (= 1 var14)) (= var17 1)) (and (= 1 var14) (= var17 0)))))))) (inv_main9 var1 var6 var9 var8 var11 var12 var4 var7 var10 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int)) (or (not (and (inv_main2 var5 var3 var15 var19 var17 var16 var2 var14 var0) (and (= var18 0) (and (= var3 nullAddr) (and (and (and (and (and (and (and (and (and (= var1 var5) (= var6 var3)) (= var10 var15)) (= var9 var19)) (= var12 var17)) (= var13 var16)) (= var4 var2)) (= var8 var14)) (= var11 var0)) (or (and (not (= 1 var15)) (= var18 1)) (and (= 1 var15) (= var18 0)))))))) (inv_main9 var1 var6 var10 var9 var12 var13 var4 var8 var11 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main9 var6 var3 var4 var10 var7 var5 var2 var1 var0 var8) (and (not (= var9 0)) (not (= var8 0))))) (inv_main16 var6 var3 var4 var10 var7 var5 var2 var1 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 cell) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main16 var7 var5 var12 var19 var14 var13 var4 var9 var1 var15) (and (and (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var7 (O_cell var3)))) (= var0 var5)) (= var17 (+ var15 1))) (= var11 var19)) (= var2 var14)) (= var20 var13)) (= var10 var4)) (= var8 var9)) (= var18 var1)) (= var16 (newAddr (alloc var7 (O_cell var3))))) (= var15 1)))) (inv_main18 var6 var0 var17 var11 var2 var16 var10 var8 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 4))) (inv_main29 var6 var3 (+ var8 1) var9 var7 var5 var2 var1 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main9 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (not (= var2 nullAddr)) (= var8 0)))) (inv_main69 var6 var3 var4 var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Int) (var27 Addr) (var28 Int)) (or (not (and (inv_main69 var6 var5 var14 var28 var16 var15 var4 var22 var1) (and (not (= var18 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var13 var6) (= var10 var5)) (= var2 var14)) (= var26 var28)) (= var8 var16)) (= var20 var15)) (= var27 var4)) (= var3 var22)) (= var23 var1)) (= var11 (next (getcell (read var6 var4))))) (and (and (and (and (and (and (and (and (and (= var9 (write var13 var27 defObj)) (= var0 var10)) (= var19 var2)) (= var7 var26)) (= var25 var8)) (= var12 var20)) (= var21 var27)) (= var17 var3)) (= var24 var23)) (= var18 var11)))))) (inv_main69 var9 var0 var19 var7 var25 var12 var18 var17 var24)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (= var0 5))) (inv_main60 var8 var5 var6 (+ var0 1) var9 var7 var4 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 2))) (inv_main22 var6 var3 (+ var8 1) var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (inv_main18 var6 var3 var4 var8 var7 var5 var2 var1 var0)) (inv_main20 (write var6 var5 (O_cell (cell 0 (next (getcell (read var6 var5)))))) var3 var4 var8 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main18 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main20 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main22 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main29 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (and (and (and (and (not (= var8 1)) (not (= var8 2))) (not (= var8 3))) (not (= var8 4))) (not (= var8 5))) (not (= var8 6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int)) (not (and (inv_main51 var7 var4 var5 var9 var8 var6 var3 var2 var0 var1) (not (is-O_cell (read var7 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int)) (not (and (inv_main60 var7 var4 var5 var9 var8 var6 var3 var2 var0 var1) (not (is-O_cell (read var7 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (not (and (inv_main64 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (not (is-O_cell (read var8 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (and (and (and (not (= var0 1)) (not (= var0 2))) (not (= var0 3))) (not (= var0 4))) (not (= var0 5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main69 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (not (and (inv_main0 var8 var4 var6 var10 var9 var7 var3 var2 var0 var1) (not (= (read var8 var5) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/min_max.i.smt2 b/heap-theory-benchmarks/array/min_max.i.smt2 new file mode 100644 index 00000000..7b3a172e --- /dev/null +++ b/heap-theory-benchmarks/array/min_max.i.smt2 @@ -0,0 +1,81 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (val Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main11 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main14 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main22 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main23 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main26 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main27 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main4 (Heap Addr Int Int) Bool) +(declare-fun inv_main9 (Heap Addr Int Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Addr)) (or (not (and (inv_main26 var8 var0 var6 var3 var5) (and (not (= var10 nullAddr)) (and (and (and (and (and (= var9 var8) (= var2 var0)) (= var4 var6)) (= var1 var3)) (= var7 var5)) (= var10 (next (getnode (read var8 var5)))))))) (inv_main21 var9 var2 var4 var1 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int)) (or (not (and (inv_main4 var3 var0 var2 var1) (and (not (= var0 nullAddr)) (= var4 0)))) (inv_main21 var3 var0 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap)) (or (not (and (inv_main21 var9 var0 var8 var5 var7) (and (<= 0 (+ (+ var1 (* (- 1) var2)) (- 1))) (and (and (and (and (and (= var10 var9) (= var3 var0)) (= var1 var8)) (= var4 var5)) (= var6 var7)) (= var2 (val (getnode (read var9 var7)))))))) (inv_main23 var10 var3 var1 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main13 var4 var0 var3 var1 var2) (<= 0 (+ (+ (val (getnode (read var4 var2))) (* (- 1) var1)) (- 1))))) (inv_main17 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr)) (or (not (and (inv_main9 var8 var1 var7 var2 var4) (and (and (and (and (= var5 (write var8 var4 (O_node (node var1 (val (getnode (read var8 var4))))))) (= var9 var1)) (= var0 var7)) (= var3 var2)) (= var6 var4)))) (inv_main11 var5 var6 var0 var3 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr)) (or (not (and (inv_main14 var8 var2 var7 var4 var6) (and (and (and (and (and (= var1 var8) (= var3 var2)) (= var0 var7)) (= var5 var4)) (= var10 var6)) (= var9 (val (getnode (read var8 var6))))))) (inv_main13 var1 var3 var9 var5 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main11 var4 var0 var3 var1 var2) (not (<= 0 (+ (+ var3 (* (- 1) (val (getnode (read var4 var2))))) (- 1)))))) (inv_main13 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 node) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main4 var8 var0 var6 var1) (and (and (and (and (and (= var5 (newHeap (alloc var8 (O_node var7)))) (= var3 var0)) (= var10 var6)) (= var4 var1)) (= var9 (newAddr (alloc var8 (O_node var7))))) (not (= var2 0))))) (inv_main10 var5 var3 var10 var4 var9)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int)) (or (not (and (inv_main22 var9 var1 var8 var4 var6) (and (<= 0 (+ (+ var10 (* (- 1) var7)) (- 1))) (and (and (and (and (and (= var3 var9) (= var2 var1)) (= var0 var8)) (= var7 var4)) (= var5 var6)) (= var10 (val (getnode (read var9 var6)))))))) (inv_main27 var3 var2 var0 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main11 var4 var0 var3 var1 var2) (<= 0 (+ (+ var3 (* (- 1) (val (getnode (read var4 var2))))) (- 1))))) (inv_main14 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap)) (or (not (inv_main10 var5 var0 var4 var2 var3)) (inv_main9 (write var5 var3 (O_node (node (next (getnode (read var5 var3))) var1))) var0 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Heap)) (or (not (and (inv_main17 var9 var0 var7 var3 var4) (and (and (and (and (and (= var10 var9) (= var8 var0)) (= var6 var7)) (= var2 var3)) (= var1 var4)) (= var5 (val (getnode (read var9 var4))))))) (inv_main4 var10 var8 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main13 var4 var0 var3 var1 var2) (not (<= 0 (+ (+ (val (getnode (read var4 var2))) (* (- 1) var1)) (- 1)))))) (inv_main4 var4 var0 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (and (inv_main2 var2) (and (= var0 var2) (= var1 nullAddr)))) (inv_main4 var0 var1 2147483647 (- 2147483647))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main23 var4 var0 var3 var1 var2)) (inv_main22 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr)) (or (not (and (inv_main21 var9 var2 var8 var5 var6) (and (not (<= 0 (+ (+ var4 (* (- 1) var7)) (- 1)))) (and (and (and (and (and (= var1 var9) (= var0 var2)) (= var4 var8)) (= var3 var5)) (= var10 var6)) (= var7 (val (getnode (read var9 var6)))))))) (inv_main22 var1 var0 var4 var3 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main27 var4 var0 var3 var1 var2)) (inv_main26 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int)) (or (not (and (inv_main22 var9 var1 var8 var4 var6) (and (not (<= 0 (+ (+ var10 (* (- 1) var0)) (- 1)))) (and (and (and (and (and (= var2 var9) (= var7 var1)) (= var5 var8)) (= var0 var4)) (= var3 var6)) (= var10 (val (getnode (read var9 var6)))))))) (inv_main26 var2 var7 var5 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main10 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main9 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main11 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main14 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main13 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main17 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main21 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main23 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main22 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main27 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main26 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/quick_sort_split.i.smt2 b/heap-theory-benchmarks/array/quick_sort_split.i.smt2 new file mode 100644 index 00000000..462b5dba --- /dev/null +++ b/heap-theory-benchmarks/array/quick_sort_split.i.smt2 @@ -0,0 +1,98 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (expected_list Int) (value Int) (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main17 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main18 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main24 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main25 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main26 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (or (not (inv_main24 var3 var2 var1 var5 var4 var0 var6)) (inv_main25 (write var3 var6 (O_node (node (expected_list (getnode (read var3 var6))) (value (getnode (read var3 var6))) var2))) var2 var1 var5 var4 var0 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main32 var1 var0 var3 var2 var4) (and (not (= var2 nullAddr)) (= var3 nullAddr)))) (inv_main47 var1 var0 var3 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main48 var4 var2 var7 var6 var8) (and (not (= var1 nullAddr)) (and (and (and (and (and (= var10 var4) (= var9 var2)) (= var0 var7)) (= var5 var6)) (= var3 var8)) (= var1 (next (getnode (read var4 var6)))))))) (inv_main47 var10 var9 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main33 var4 var1 var9 var8 var10) (and (<= 0 var3) (and (and (and (and (and (= var7 var4) (= var6 var1)) (= var2 var9)) (= var5 var8)) (= var0 var10)) (= var3 (value (getnode (read var4 var10)))))))) (inv_main36 var7 var6 var2 var5 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main33 var1 var0 var9 var8 var10) (and (not (<= 0 var2)) (and (and (and (and (and (= var6 var1) (= var7 var0)) (= var5 var9)) (= var4 var8)) (= var3 var10)) (= var2 (value (getnode (read var1 var10)))))))) (inv_main36 var6 var7 var5 var4 var3 var5)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Addr) (var4 Heap)) (or (not (and (inv_main6 var4 var3) (and (not (<= 0 (+ (* (- 1) var2) (- 1)))) (not (= var0 0))))) (inv_main24 (newHeap (alloc var4 (O_node var1))) var3 var2 1 var2 1 (newAddr (alloc var4 (O_node var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main43 var1 var0 var3 var2 var4)) (inv_main42 var1 var0 var3 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main41 var4 var2 var7 var6 var8) (and (= var9 (- 1)) (and (and (and (and (and (= var0 var4) (= var3 var2)) (= var1 var7)) (= var5 var6)) (= var10 var8)) (= var9 (expected_list (getnode (read var4 var7)))))))) (inv_main42 var0 var3 var1 var5 var10)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main37 var1 var8 var12 var11 var13 var6 var7) (and (not (= var10 nullAddr)) (and (and (and (and (and (and (= var0 (write var1 var13 (O_node (node (expected_list (getnode (read var1 var13))) (value (getnode (read var1 var13))) var6)))) (= var2 var8)) (= var3 var12)) (= var5 var11)) (= var4 var13)) (= var9 var6)) (= var10 var7))))) (inv_main33 var0 var2 var3 var5 var10)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main6 var6 var5) (and (and (and (not (= var7 nullAddr)) (and (and (and (= var1 var0) (= var7 var8)) (= var4 var9)) (= var3 nullAddr))) (and (and (= var0 var6) (= var8 var5)) (= var9 nullAddr))) (= var2 0)))) (inv_main33 var1 var7 var4 var3 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var5 var4 var2 var13 var12 var11 var9) (and (and (and (and (and (and (= var1 (write var5 var9 (O_node (node var11 (value (getnode (read var5 var9))) (next (getnode (read var5 var9))))))) (= var7 var4)) (= var6 var2)) (= var0 var13)) (= var8 var12)) (= var10 var11)) (= var3 var9)))) (inv_main6 var1 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main26 var5 var4 var3 var12 var11 var0 var7) (and (and (and (and (and (and (= var10 (write var5 var7 (O_node (node var0 (value (getnode (read var5 var7))) (next (getnode (read var5 var7))))))) (= var2 var4)) (= var1 var3)) (= var9 var12)) (= var13 var11)) (= var8 var0)) (= var6 var7)))) (inv_main6 var10 var6)))) +(assert (forall ((var0 Heap)) (or (not (inv_main2 var0)) (inv_main6 var0 nullAddr)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main47 var4 var3 var8 var7 var9) (and (not (= var6 1)) (and (and (and (and (and (= var0 var4) (= var1 var3)) (= var2 var8)) (= var10 var7)) (= var5 var9)) (= var6 (expected_list (getnode (read var4 var7)))))))) (inv_main49 var0 var1 var2 var10 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main32 var1 var0 var3 var2 var4) (not (= var3 nullAddr)))) (inv_main41 var1 var0 var3 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 node)) (or (not (and (inv_main6 var2 var1) (and (<= 0 (+ (* (- 1) var3) (- 1))) (not (= var0 0))))) (inv_main17 (newHeap (alloc var2 (O_node var4))) var1 var3 1 var3 (- 1) (newAddr (alloc var2 (O_node var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main41 var2 var0 var7 var6 var8) (and (not (= var3 (- 1))) (and (and (and (and (and (= var1 var2) (= var4 var0)) (= var10 var7)) (= var5 var6)) (= var9 var8)) (= var3 (expected_list (getnode (read var2 var7)))))))) (inv_main43 var1 var4 var10 var5 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main36 var2 var1 var4 var3 var5 var0)) (inv_main37 var2 var1 var4 var3 var5 var0 (next (getnode (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main49 var1 var0 var3 var2 var4)) (inv_main48 var1 var0 var3 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main47 var3 var1 var7 var6 var8) (and (= var5 1) (and (and (and (and (and (= var10 var3) (= var4 var1)) (= var2 var7)) (= var9 var6)) (= var0 var8)) (= var5 (expected_list (getnode (read var3 var6)))))))) (inv_main48 var10 var4 var2 var9 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main18 var3 var2 var1 var6 var5 var4 var0)) (inv_main19 (write var3 var0 (O_node (node (expected_list (getnode (read var3 var0))) var5 (next (getnode (read var3 var0)))))) var2 var1 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main17 var3 var2 var1 var6 var5 var4 var0)) (inv_main18 (write var3 var0 (O_node (node (expected_list (getnode (read var3 var0))) (value (getnode (read var3 var0))) var2))) var2 var1 var6 var5 var4 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (or (not (inv_main25 var3 var2 var1 var5 var4 var0 var6)) (inv_main26 (write var3 var6 (O_node (node (expected_list (getnode (read var3 var6))) var4 (next (getnode (read var3 var6)))))) var2 var1 var5 var4 var0 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main42 var3 var1 var6 var5 var7) (and (and (and (and (and (= var8 var3) (= var10 var1)) (= var4 var6)) (= var9 var5)) (= var0 var7)) (= var2 (next (getnode (read var3 var6))))))) (inv_main32 var8 var10 var2 var9 var0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main37 var1 var8 var12 var11 var13 var6 var7) (and (= var10 nullAddr) (and (and (and (and (and (and (= var0 (write var1 var13 (O_node (node (expected_list (getnode (read var1 var13))) (value (getnode (read var1 var13))) var6)))) (= var2 var8)) (= var3 var12)) (= var5 var11)) (= var4 var13)) (= var9 var6)) (= var10 var7))))) (inv_main32 var0 var2 var3 var5 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main6 var4 var3) (and (and (and (= var2 nullAddr) (and (and (and (= var7 var6) (= var2 var8)) (= var9 var5)) (= var1 nullAddr))) (and (and (= var6 var4) (= var8 var3)) (= var5 nullAddr))) (= var0 0)))) (inv_main32 var7 var2 var9 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main17 var3 var2 var1 var6 var5 var4 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main18 var3 var2 var1 var6 var5 var4 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main19 var3 var2 var1 var6 var5 var4 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main24 var3 var2 var1 var5 var4 var0 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main25 var3 var2 var1 var5 var4 var0 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main26 var3 var2 var1 var5 var4 var0 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main33 var1 var0 var3 var2 var4) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main36 var2 var1 var4 var3 var5 var0) (not (is-O_node (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main37 var3 var2 var5 var4 var6 var0 var1) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main41 var1 var0 var3 var2 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (inv_main43 var1 var0 var3 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main42 var1 var0 var3 var2 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main47 var1 var0 var3 var2 var4) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (inv_main49 var1 var0 var3 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main48 var1 var0 var3 var2 var4) (not (is-O_node (read var1 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/simple-2.i.smt2 b/heap-theory-benchmarks/array/simple-2.i.smt2 new file mode 100644 index 00000000..860b00a0 --- /dev/null +++ b/heap-theory-benchmarks/array/simple-2.i.smt2 @@ -0,0 +1,77 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main24 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main12 var3 var2 var0 var1)) (inv_main26 (write var3 var1 (O_node (node 1 (n (getnode (read var3 var1)))))) var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main24 var6 var5 var2 var4) (and (= var3 0) (and (and (and (and (= var7 var6) (= var9 var5)) (= var0 var2)) (= var1 var4)) (= var8 (n (getnode (read var6 var4)))))))) (inv_main12 var7 var9 var0 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 node)) (or (not (and (inv_main2 var2) (and (= var3 0) (and (not (= var0 nullAddr)) (and (= var4 (newHeap (alloc var2 (O_node var5)))) (= var0 (newAddr (alloc var2 (O_node var5))))))))) (inv_main12 var4 var0 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int)) (or (not (inv_main7 var1 var0 var2)) (inv_main7 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 node)) (or (not (and (inv_main2 var1) (and (= var2 nullAddr) (and (= var0 (newHeap (alloc var1 (O_node var3)))) (= var2 (newAddr (alloc var1 (O_node var3)))))))) (inv_main7 var0 var2 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (inv_main30 var5 var4 var1 var3) (and (= var8 1) (and (and (and (and (= var7 var5) (= var2 var4)) (= var6 var1)) (= var0 var3)) (= var8 (h (getnode (read var5 var3)))))))) (inv_main31 var7 var2 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 node) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Heap) (var13 Addr)) (or (not (and (inv_main13 var11 var10 var3 var5) (and (not (= var4 nullAddr)) (and (and (and (and (and (= var12 (newHeap (alloc var6 (O_node var7)))) (= var13 var9)) (= var1 var0)) (= var8 var2)) (= var4 (newAddr (alloc var6 (O_node var7))))) (and (and (and (= var6 (write var11 var5 (O_node (node 1 (n (getnode (read var11 var5))))))) (= var9 var10)) (= var0 var3)) (= var2 var5)))))) (inv_main18 var12 var13 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main24 var6 var5 var3 var4) (and (not (= var2 0)) (and (and (and (and (= var7 var6) (= var9 var5)) (= var0 var3)) (= var1 var4)) (= var8 (n (getnode (read var6 var4)))))))) (inv_main13 var7 var9 var0 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 node)) (or (not (and (inv_main2 var1) (and (not (= var3 0)) (and (not (= var0 nullAddr)) (and (= var4 (newHeap (alloc var1 (O_node var5)))) (= var0 (newAddr (alloc var1 (O_node var5))))))))) (inv_main13 var4 var0 var2 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (inv_main21 var4 var3 var1 var2 var0)) (inv_main21 var4 var3 var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 node) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Heap) (var13 Addr)) (or (not (and (inv_main13 var11 var10 var3 var5) (and (= var4 nullAddr) (and (and (and (and (and (= var12 (newHeap (alloc var6 (O_node var7)))) (= var13 var9)) (= var1 var0)) (= var8 var2)) (= var4 (newAddr (alloc var6 (O_node var7))))) (and (and (and (= var6 (write var11 var5 (O_node (node 1 (n (getnode (read var11 var5))))))) (= var9 var10)) (= var0 var3)) (= var2 var5)))))) (inv_main21 var12 var13 var4 var8 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main18 var3 var2 var0 var1)) (inv_main24 (write var3 var1 (O_node (node (h (getnode (read var3 var1))) var0))) var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main31 var3 var2 var0 var1) (and (= var5 nullAddr) (and (and (and (and (= var8 var3) (= var7 var2)) (= var4 var0)) (= var6 var1)) (= var5 (n (getnode (read var3 var1)))))))) (inv_main0 var8 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main26 var4 var3 var0 var2) (and (= var1 nullAddr) (and (and (and (= var7 (write var4 var2 (O_node (node (h (getnode (read var4 var2))) 0)))) (= var1 var3)) (= var6 var0)) (= var5 var2))))) (inv_main0 var7 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main31 var3 var2 var0 var1) (and (not (= var5 nullAddr)) (and (and (and (and (= var8 var3) (= var7 var2)) (= var4 var0)) (= var6 var1)) (= var5 (n (getnode (read var3 var1)))))))) (inv_main30 var8 var7 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main26 var4 var3 var0 var2) (and (not (= var1 nullAddr)) (and (and (and (= var7 (write var4 var2 (O_node (node (h (getnode (read var4 var2))) 0)))) (= var1 var3)) (= var6 var0)) (= var5 var2))))) (inv_main30 var7 var1 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main30 var7 var6 var3 var5) (and (not (= var4 1)) (and (and (and (and (= var2 var7) (= var1 var6)) (= var8 var3)) (= var0 var5)) (= var4 (h (getnode (read var7 var5)))))))) (inv_main32 var2 var1 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main13 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main18 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main24 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main12 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main26 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main30 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main32 var3 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main31 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (not (and (inv_main0 var2 var1) (not (= (read var2 var0) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/simple-ext.i.smt2 b/heap-theory-benchmarks/array/simple-ext.i.smt2 new file mode 100644 index 00000000..7d78c171 --- /dev/null +++ b/heap-theory-benchmarks/array/simple-ext.i.smt2 @@ -0,0 +1,80 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main35 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main13 var3 var4 var2 var0 var1)) (inv_main29 (write var3 var0 (O_node (node var1 (n (getnode (read var3 var0)))))) var4 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main12 var3 var4 var2 var0 var1) (not (<= 0 (+ (+ 30 (* (- 1) var1)) (- 1)))))) (inv_main13 var3 var4 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main12 var4 var5 var3 var0 var1) (and (= var2 0) (<= 0 (+ (+ 30 (* (- 1) var1)) (- 1)))))) (inv_main13 var4 var5 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main20 var3 var4 var2 var0 var1)) (inv_main26 (write var3 var0 (O_node (node (h (getnode (read var3 var0))) var2))) var4 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (inv_main23 var3 var5 var2 var0 var1 var4)) (inv_main23 var3 var5 var2 var0 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 node) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int)) (or (not (and (inv_main14 var1 var3 var0 var10 var11) (and (= var13 nullAddr) (and (and (and (and (and (and (= var2 (newHeap (alloc var15 (O_node var9)))) (= var8 var14)) (= var5 var7)) (= var12 var6)) (= var16 var4)) (= var13 (newAddr (alloc var15 (O_node var9))))) (and (and (and (and (= var15 (write var1 var10 (O_node (node var11 (n (getnode (read var1 var10))))))) (= var14 var3)) (= var7 var0)) (= var6 var10)) (= var4 var11)))))) (inv_main23 var2 var8 var13 var12 var16 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main26 var7 var9 var5 var0 var1) (and (and (and (and (and (= var2 var7) (= var6 var9)) (= var10 var5)) (= var8 var0)) (= var4 var1)) (= var3 (n (getnode (read var7 var0))))))) (inv_main12 var2 var6 var10 var3 (+ var4 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 node) (var3 Heap) (var4 Addr)) (or (not (and (inv_main2 var3) (and (not (= var4 nullAddr)) (and (= var0 (newHeap (alloc var3 (O_node var2)))) (= var4 (newAddr (alloc var3 (O_node var2)))))))) (inv_main12 var0 var4 var1 var4 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap)) (or (not (and (inv_main34 var6 var7 var5 var1 var2) (and (not (= var4 1)) (and (and (and (and (and (= var10 var6) (= var0 var7)) (= var3 var5)) (= var8 var1)) (= var9 var2)) (= var4 (h (getnode (read var6 var1)))))))) (inv_main36 var10 var0 var3 var8 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 node) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int)) (or (not (and (inv_main14 var1 var3 var0 var10 var11) (and (not (= var13 nullAddr)) (and (and (and (and (and (and (= var2 (newHeap (alloc var15 (O_node var9)))) (= var8 var14)) (= var5 var7)) (= var12 var6)) (= var16 var4)) (= var13 (newAddr (alloc var15 (O_node var9))))) (and (and (and (and (= var15 (write var1 var10 (O_node (node var11 (n (getnode (read var1 var10))))))) (= var14 var3)) (= var7 var0)) (= var6 var10)) (= var4 var11)))))) (inv_main20 var2 var8 var13 var12 var16)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main29 var6 var7 var5 var0 var1) (and (not (= var2 nullAddr)) (and (and (and (and (= var9 (write var6 var0 (O_node (node (h (getnode (read var6 var0))) 0)))) (= var2 var7)) (= var3 var5)) (= var8 var0)) (= var4 var1))))) (inv_main34 var9 var2 var3 var2 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main35 var5 var6 var4 var0 var1) (and (not (= var9 nullAddr)) (and (and (and (and (and (= var2 var5) (= var10 var6)) (= var3 var4)) (= var7 var0)) (= var8 var1)) (= var9 (n (getnode (read var5 var0)))))))) (inv_main34 var2 var10 var3 var9 (+ var8 1))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr)) (or (not (and (inv_main34 var8 var10 var6 var0 var2) (and (= var9 1) (and (and (and (and (and (= var1 var8) (= var7 var10)) (= var4 var6)) (= var3 var0)) (= var5 var2)) (= var9 (h (getnode (read var8 var0)))))))) (inv_main35 var1 var7 var4 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr)) (or (not (inv_main7 var1 var2 var0)) (inv_main7 var1 var2 var0)))) +(assert (forall ((var0 node) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main2 var2) (and (= var3 nullAddr) (and (= var1 (newHeap (alloc var2 (O_node var0)))) (= var3 (newAddr (alloc var2 (O_node var0)))))))) (inv_main7 var1 var3 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main12 var4 var5 var3 var0 var1) (and (not (= var2 0)) (<= 0 (+ (+ 30 (* (- 1) var1)) (- 1)))))) (inv_main14 var4 var5 var3 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main44 var2 var4 var1 var6 var8) (and (not (= var3 nullAddr)) (and (and (and (and (and (and (= var0 var2) (= var11 var4)) (= var15 var1)) (= var9 var6)) (= var5 var8)) (= var10 (n (getnode (read var2 var6))))) (and (and (and (and (and (= var12 (write var0 var9 defObj)) (= var16 var11)) (= var7 var15)) (= var14 var9)) (= var13 var5)) (= var3 var10)))))) (inv_main44 var12 var16 var7 var3 var13)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main29 var6 var7 var5 var0 var1) (and (not (= var2 nullAddr)) (and (= var2 nullAddr) (and (and (and (and (= var9 (write var6 var0 (O_node (node (h (getnode (read var6 var0))) 0)))) (= var2 var7)) (= var3 var5)) (= var8 var0)) (= var4 var1)))))) (inv_main44 var9 var2 var3 var2 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main35 var5 var6 var4 var0 var1) (and (not (= var10 nullAddr)) (and (= var9 nullAddr) (and (and (and (and (and (= var2 var5) (= var10 var6)) (= var3 var4)) (= var7 var0)) (= var8 var1)) (= var9 (n (getnode (read var5 var0))))))))) (inv_main44 var2 var10 var3 var10 (+ var8 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main14 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main20 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main26 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main13 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main29 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main34 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (inv_main36 var3 var4 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main35 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main44 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/simple-ext_1.i.smt2 b/heap-theory-benchmarks/array/simple-ext_1.i.smt2 new file mode 100644 index 00000000..af3d512b --- /dev/null +++ b/heap-theory-benchmarks/array/simple-ext_1.i.smt2 @@ -0,0 +1,80 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main35 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Heap)) (or (not (and (inv_main44 var15 var12 var0 var11 var13) (and (not (= var4 nullAddr)) (and (and (and (and (and (and (= var14 var15) (= var3 var12)) (= var2 var0)) (= var5 var11)) (= var10 var13)) (= var9 (n (getnode (read var15 var11))))) (and (and (and (and (= var8 (write var14 var5 defObj)) (= var1 var3)) (= var4 var9)) (= var7 var5)) (= var6 var10)))))) (inv_main44 var8 var1 var4 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Heap)) (or (not (and (inv_main29 var9 var5 var0 var4 var6) (and (not (= var3 nullAddr)) (and (= var3 nullAddr) (and (and (and (and (= var7 (write var9 var4 (O_node (node (h (getnode (read var9 var4))) 0)))) (= var3 var5)) (= var1 var0)) (= var8 var4)) (= var2 var6)))))) (inv_main44 var7 var3 var1 var3 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main35 var10 var5 var1 var4 var6) (and (not (= var7 nullAddr)) (and (= var0 nullAddr) (and (and (and (and (and (= var3 var10) (= var7 var5)) (= var9 var1)) (= var8 var4)) (= var2 var6)) (= var0 (n (getnode (read var10 var4))))))))) (inv_main44 var3 var7 var9 var7 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main13 var4 var2 var0 var1 var3)) (inv_main29 (write var4 var1 (O_node (node var3 (n (getnode (read var4 var1)))))) var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main12 var4 var2 var0 var1 var3) (not (<= 0 (+ (+ 30 (* (- 1) var3)) (- 1)))))) (inv_main13 var4 var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap)) (or (not (and (inv_main12 var5 var3 var0 var2 var4) (and (= var1 0) (<= 0 (+ (+ 30 (* (- 1) var4)) (- 1)))))) (inv_main13 var5 var3 var0 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (or (not (inv_main7 var2 var1 var0)) (inv_main7 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 node) (var3 Heap)) (or (not (and (inv_main2 var3) (and (= var0 nullAddr) (and (= var1 (newHeap (alloc var3 (O_node var2)))) (= var0 (newAddr (alloc var3 (O_node var2)))))))) (inv_main7 var1 var0 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap)) (or (not (and (inv_main34 var10 var6 var0 var5 var7) (and (= var3 var9) (and (and (and (and (and (= var4 var10) (= var2 var6)) (= var1 var0)) (= var8 var5)) (= var9 var7)) (= var3 (h (getnode (read var10 var5)))))))) (inv_main35 var4 var2 var1 var8 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (or (not (and (inv_main12 var5 var2 var0 var1 var3) (and (not (= var4 0)) (<= 0 (+ (+ 30 (* (- 1) var3)) (- 1)))))) (inv_main14 var5 var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main20 var4 var2 var0 var1 var3)) (inv_main26 (write var4 var1 (O_node (node (h (getnode (read var4 var1))) var0))) var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main26 var8 var4 var1 var3 var5) (and (and (and (and (and (= var2 var8) (= var6 var4)) (= var0 var1)) (= var9 var3)) (= var10 var5)) (= var7 (n (getnode (read var8 var3))))))) (inv_main12 var2 var6 var0 var7 (+ var10 1))))) +(assert (forall ((var0 Addr) (var1 node) (var2 Addr) (var3 Heap) (var4 Heap)) (or (not (and (inv_main2 var4) (and (not (= var2 nullAddr)) (and (= var3 (newHeap (alloc var4 (O_node var1)))) (= var2 (newAddr (alloc var4 (O_node var1)))))))) (inv_main12 var3 var2 var0 var2 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 node) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Heap) (var16 Addr)) (or (not (and (inv_main14 var15 var9 var0 var8 var10) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (= var11 (newHeap (alloc var13 (O_node var5)))) (= var16 var1)) (= var14 var2)) (= var3 var7)) (= var12 var4)) (= var6 (newAddr (alloc var13 (O_node var5))))) (and (and (and (and (= var13 (write var15 var8 (O_node (node var10 (n (getnode (read var15 var8))))))) (= var1 var9)) (= var2 var0)) (= var7 var8)) (= var4 var10)))))) (inv_main20 var11 var16 var6 var3 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Heap)) (or (not (and (inv_main29 var9 var5 var0 var4 var6) (and (not (= var3 nullAddr)) (and (and (and (and (= var7 (write var9 var4 (O_node (node (h (getnode (read var9 var4))) 0)))) (= var3 var5)) (= var1 var0)) (= var8 var4)) (= var2 var6))))) (inv_main34 var7 var3 var1 var3 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main35 var10 var5 var1 var4 var6) (and (not (= var0 nullAddr)) (and (and (and (and (and (= var3 var10) (= var7 var5)) (= var9 var1)) (= var8 var4)) (= var2 var6)) (= var0 (n (getnode (read var10 var4)))))))) (inv_main34 var3 var7 var9 var0 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int)) (or (not (and (inv_main34 var9 var2 var0 var1 var3) (and (not (= var10 var4)) (and (and (and (and (and (= var6 var9) (= var7 var2)) (= var8 var0)) (= var5 var1)) (= var4 var3)) (= var10 (h (getnode (read var9 var1)))))))) (inv_main36 var6 var7 var8 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int)) (or (not (inv_main23 var4 var2 var0 var1 var3 var5)) (inv_main23 var4 var2 var0 var1 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 node) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Heap) (var16 Addr)) (or (not (and (inv_main14 var15 var9 var0 var8 var10) (and (= var6 nullAddr) (and (and (and (and (and (and (= var11 (newHeap (alloc var13 (O_node var5)))) (= var16 var1)) (= var14 var2)) (= var3 var7)) (= var12 var4)) (= var6 (newAddr (alloc var13 (O_node var5))))) (and (and (and (and (= var13 (write var15 var8 (O_node (node var10 (n (getnode (read var15 var8))))))) (= var1 var9)) (= var2 var0)) (= var7 var8)) (= var4 var10)))))) (inv_main23 var11 var16 var6 var3 var12 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main14 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main20 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main26 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main13 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main29 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main34 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main36 var4 var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main35 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main44 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/simple_and_skiplist_2lvl-1.i.smt2 b/heap-theory-benchmarks/array/simple_and_skiplist_2lvl-1.i.smt2 new file mode 100644 index 00000000..07b9a91b --- /dev/null +++ b/heap-theory-benchmarks/array/simple_and_skiplist_2lvl-1.i.smt2 @@ -0,0 +1,165 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (sl_item 0) (sl 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_sl_item (getsl_item sl_item)) (O_sl (getsl sl)) (O_node (getnode node)) (defObj)) + ((sl_item (n1 Addr) (n2 Addr))) + ((sl (head Addr) (tail Addr))) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main25 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main63 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main69 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(declare-fun inv_main71 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main77 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main79 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main80 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main82 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main85 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main91 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main93 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main94 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main97 (Heap Addr Addr Addr Addr Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Addr)) (or (not (and (inv_main72 var19 var0 var7 var14 var18 var6 var5 var2 var8 var10) (and (not (= var13 0)) (and (not (= var11 0)) (and (and (and (and (and (and (and (and (and (= var12 var19) (= var9 var0)) (= var17 var7)) (= var20 var14)) (= var1 var18)) (= var15 var6)) (= var4 var5)) (= var3 var2)) (= var16 var8)) (or (and (not (= var10 (n2 (getsl_item (read var19 var2))))) (= var11 1)) (and (= var10 (n2 (getsl_item (read var19 var2)))) (= var11 0)))))))) (inv_main71 var12 var9 var17 var20 var1 var15 var4 var3 var16)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 node) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main14 var13 var0 var3 var11) (and (not (= var4 nullAddr)) (and (and (and (and (and (= var2 (newHeap (alloc var1 (O_node var10)))) (= var8 var7)) (= var12 var6)) (= var5 var9)) (= var4 (newAddr (alloc var1 (O_node var10))))) (and (and (and (= var1 (write var13 var11 (O_node (node 1 (n (getnode (read var13 var11))))))) (= var7 var0)) (= var6 var3)) (= var9 var11)))))) (inv_main19 var2 var8 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (inv_main48 var5 var0 var4 var2 var1 var3)) (inv_main46 (write var5 (head (getsl (read var5 var1))) (O_sl_item (sl_item (n1 (getsl_item (read var5 (head (getsl (read var5 var1)))))) var3))) var0 var4 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (inv_main69 var8 var0 var5 var2 var7 var4 var3 var1 var6)) (inv_main72 var8 var0 var5 var2 var7 var4 var3 var1 var6 (n1 (getsl_item (read var8 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (inv_main44 var4 var0 var3 var2 var1)) (inv_main47 var4 var0 var3 var2 var1 (tail (getsl (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 sl_item) (var3 Addr) (var4 Addr) (var5 Addr) (var6 sl) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Heap)) (or (not (and (inv_main32 var15 var0 var4 var12) (and (and (and (and (and (and (= var9 (newHeap (alloc var14 (O_sl var6)))) (= var3 var1)) (= var11 var7)) (= var13 var5)) (= var8 (newAddr (alloc var14 (O_sl var6))))) (= var5 nullAddr)) (and (and (and (and (= var14 var15) (= var1 var0)) (= var7 var4)) (= var10 var12)) (= var5 (n (getnode (read var15 var12)))))))) (inv_main43 (newHeap (alloc var9 (O_sl_item var2))) var3 var11 var13 var8 (newAddr (alloc var9 (O_sl_item var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 sl) (var3 Addr) (var4 Addr) (var5 Addr) (var6 sl_item) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Heap) (var14 Addr)) (or (not (and (inv_main27 var13 var0 var8 var11) (and (and (and (and (and (and (= var10 (newHeap (alloc var12 (O_sl var2)))) (= var3 var9)) (= var1 var14)) (= var7 var9)) (= var4 (newAddr (alloc var12 (O_sl var2))))) (= var9 nullAddr)) (and (and (and (= var12 (write var13 var11 (O_node (node (h (getnode (read var13 var11))) 0)))) (= var9 var0)) (= var14 var8)) (= var5 var11))))) (inv_main43 (newHeap (alloc var10 (O_sl_item var6))) var3 var1 var7 var4 (newAddr (alloc var10 (O_sl_item var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main79 var18 var0 var4 var13 var16 var3 var2 var1 var6) (and (not (= var9 0)) (and (and (and (and (and (and (and (and (= var10 (write var18 var2 (O_sl_item (sl_item var6 (n2 (getsl_item (read var18 var2))))))) (= var8 var0)) (= var17 var4)) (= var14 var13)) (= var11 var16)) (= var15 var3)) (= var5 var2)) (= var7 var1)) (= var12 var6))))) (inv_main82 var10 var8 var17 var14 var11 var15 var5 var7 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main91 var6 var0 var3 var2 var4 var5 var1) (not (= (head (getsl (read var6 var5))) nullAddr)))) (inv_main93 var6 var0 var3 var2 var4 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (inv_main82 var8 var0 var5 var2 var7 var4 var3 var1 var6)) (inv_main86 var8 var0 var5 var2 var7 var4 var3 var1 var6 (n2 (getsl_item (read var8 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 sl_item) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Heap) (var30 Addr)) (or (not (and (inv_main72 var15 var16 var20 var26 var14 var19 var5 var2 var22 var24) (and (and (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var29 (O_sl_item var9)))) (= var0 var28)) (= var21 var4)) (= var25 var1)) (= var18 var27)) (= var13 var17)) (= var23 var30)) (= var7 var10)) (= var11 var3)) (= var12 (newAddr (alloc var29 (O_sl_item var9))))) (and (= var8 0) (and (and (and (and (and (and (and (and (and (= var29 var15) (= var28 var16)) (= var4 var20)) (= var1 var26)) (= var27 var14)) (= var17 var19)) (= var30 var5)) (= var10 var2)) (= var3 var22)) (or (and (not (= var24 (n2 (getsl_item (read var15 var2))))) (= var8 1)) (and (= var24 (n2 (getsl_item (read var15 var2)))) (= var8 0)))))))) (inv_main77 var6 var0 var21 var25 var18 var13 var23 var7 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 sl_item) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Heap) (var28 Addr) (var29 Addr) (var30 Addr) (var31 Addr)) (or (not (and (inv_main72 var17 var18 var23 var28 var15 var22 var8 var4 var24 var26) (and (and (and (and (and (and (and (and (and (and (= var3 (newHeap (alloc var27 (O_sl_item var9)))) (= var10 var25)) (= var19 var29)) (= var21 var0)) (= var16 var20)) (= var14 var12)) (= var31 var6)) (= var7 var5)) (= var2 var13)) (= var30 (newAddr (alloc var27 (O_sl_item var9))))) (and (= var1 0) (and (not (= var11 0)) (and (and (and (and (and (and (and (and (and (= var27 var17) (= var25 var18)) (= var29 var23)) (= var0 var28)) (= var20 var15)) (= var12 var22)) (= var6 var8)) (= var5 var4)) (= var13 var24)) (or (and (not (= var26 (n2 (getsl_item (read var17 var4))))) (= var11 1)) (and (= var26 (n2 (getsl_item (read var17 var4)))) (= var11 0))))))))) (inv_main77 var3 var10 var19 var21 var16 var14 var31 var7 var30)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Heap) (var20 Addr)) (or (not (and (inv_main64 var19 var0 var7 var14 var17 var6 var5 var3 var8 var20) (and (not (= var18 0)) (and (not (= var11 0)) (and (and (and (and (and (and (and (and (and (= var1 var19) (= var10 var0)) (= var12 var7)) (= var9 var14)) (= var2 var17)) (= var4 var6)) (= var16 var5)) (= var13 var3)) (= var15 var8)) (or (and (not (= var20 (tail (getsl (read var19 var6))))) (= var11 1)) (and (= var20 (tail (getsl (read var19 var6)))) (= var11 0)))))))) (inv_main63 var1 var10 var12 var9 var2 var4 var16 var13 var15)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main31 var8 var0 var7 var4) (and (not (= var2 2)) (and (and (and (and (= var3 var8) (= var1 var0)) (= var6 var7)) (= var5 var4)) (= var2 (h (getnode (read var8 var4)))))))) (inv_main33 var3 var1 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main71 var18 var0 var9 var14 var16 var8 var7 var5 var10) (and (and (and (and (and (and (and (and (and (= var1 var18) (= var17 var0)) (= var4 var9)) (= var6 var14)) (= var11 var16)) (= var13 var8)) (= var3 var7)) (= var12 var5)) (= var2 var10)) (= var15 (n1 (getsl_item (read var18 var7))))))) (inv_main69 var1 var17 var4 var6 var11 var13 var15 var12 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr)) (or (not (and (inv_main64 var17 var0 var8 var15 var16 var7 var6 var5 var9 var19) (and (= var1 0) (and (and (and (and (and (and (and (and (and (= var2 var17) (= var14 var0)) (= var10 var8)) (= var4 var15)) (= var3 var16)) (= var13 var7)) (= var12 var6)) (= var11 var5)) (= var18 var9)) (or (and (not (= var19 (tail (getsl (read var17 var7))))) (= var1 1)) (and (= var19 (tail (getsl (read var17 var7)))) (= var1 0))))))) (inv_main69 var2 var14 var10 var4 var3 var13 var11 var11 var18)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Addr)) (or (not (and (inv_main64 var19 var0 var8 var15 var18 var6 var5 var3 var9 var20) (and (= var7 0) (and (not (= var12 0)) (and (and (and (and (and (and (and (and (and (= var1 var19) (= var11 var0)) (= var13 var8)) (= var10 var15)) (= var2 var18)) (= var4 var6)) (= var17 var5)) (= var14 var3)) (= var16 var9)) (or (and (not (= var20 (tail (getsl (read var19 var6))))) (= var12 1)) (and (= var20 (tail (getsl (read var19 var6)))) (= var12 0)))))))) (inv_main69 var1 var11 var13 var10 var2 var4 var14 var14 var16)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (inv_main45 var5 var0 var4 var3 var1 var2)) (inv_main44 (write var5 var1 (O_sl (sl (head (getsl (read var5 var1))) var2))) var0 var4 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (inv_main80 var9 var0 var6 var2 var8 var4 var3 var1 var7 var5)) (inv_main79 (write var9 var7 (O_sl_item (sl_item var5 (n2 (getsl_item (read var9 var7)))))) var0 var6 var2 var8 var4 var3 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (inv_main60 var8 var0 var5 var2 var7 var4 var3 var1 var6)) (inv_main64 var8 var0 var5 var2 var7 var4 var3 var1 var6 (n2 (getsl_item (read var8 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main32 var8 var0 var4 var3) (and (not (= var5 nullAddr)) (and (and (and (and (= var6 var8) (= var1 var0)) (= var7 var4)) (= var2 var3)) (= var5 (n (getnode (read var8 var3)))))))) (inv_main31 var6 var1 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main27 var6 var0 var4 var2) (and (not (= var5 nullAddr)) (and (and (and (= var3 (write var6 var2 (O_node (node (h (getnode (read var6 var2))) 0)))) (= var5 var0)) (= var7 var4)) (= var1 var2))))) (inv_main31 var3 var5 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main22 var4 var0 var2 var1 var3)) (inv_main22 var4 var0 var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 node) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main14 var13 var0 var3 var11) (and (= var4 nullAddr) (and (and (and (and (and (= var2 (newHeap (alloc var1 (O_node var10)))) (= var8 var7)) (= var12 var6)) (= var5 var9)) (= var4 (newAddr (alloc var1 (O_node var10))))) (and (and (and (= var1 (write var13 var11 (O_node (node 1 (n (getnode (read var13 var11))))))) (= var7 var0)) (= var6 var3)) (= var9 var11)))))) (inv_main22 var2 var8 var4 var5 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap)) (or (not (and (inv_main97 var14 var0 var4 var9 var12 var13 var7 var10) (and (and (and (and (and (and (= var1 (write var14 var13 (O_sl (sl var10 (tail (getsl (read var14 var13))))))) (= var8 var0)) (= var6 var4)) (= var11 var9)) (= var3 var12)) (= var5 var13)) (= var2 var7)))) (inv_main91 (write var1 var2 defObj) var8 var6 var11 var3 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main51 var6 var0 var4 var2 var5) (= var1 0))) (inv_main91 var6 var0 var4 var2 var5 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (inv_main47 var5 var0 var3 var2 var1 var4)) (inv_main48 (write var5 (head (getsl (read var5 var1))) (O_sl_item (sl_item var4 (n2 (getsl_item (read var5 (head (getsl (read var5 var1))))))))) var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Heap)) (or (not (and (inv_main59 var17 var0 var8 var12 var15 var6 var5 var2 var9) (and (and (and (and (and (and (and (and (and (= var18 var17) (= var13 var0)) (= var14 var8)) (= var10 var12)) (= var4 var15)) (= var3 var6)) (= var16 var5)) (= var11 var2)) (= var7 var9)) (= var1 (head (getsl (read var17 var6))))))) (inv_main60 var18 var13 var14 var10 var4 var3 var16 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main63 var18 var0 var5 var13 var17 var4 var3 var1 var7) (and (and (and (and (and (and (and (and (and (= var2 var18) (= var12 var0)) (= var10 var5)) (= var15 var13)) (= var14 var17)) (= var11 var4)) (= var8 var3)) (= var16 var1)) (= var9 var7)) (= var6 (n2 (getsl_item (read var18 var1))))))) (inv_main60 var2 var12 var10 var15 var14 var11 var8 var6 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main51 var8 var0 var6 var5 var7) (not (= var4 0)))) (inv_main59 var8 var0 var6 var5 var7 var7 var1 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (inv_main94 var6 var0 var3 var2 var4 var5 var1)) (inv_main97 var6 var0 var3 var2 var4 var5 var1 (n1 (getsl_item (read var6 (head (getsl (read var6 var5)))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Heap)) (or (not (and (inv_main11 var8 var0 var6 var3) (and (= var1 0) (and (and (and (= var7 (write var8 var0 (O_node (node 2 (n (getnode (read var8 var0))))))) (= var5 var0)) (= var2 var6)) (= var4 var3))))) (inv_main13 var7 var5 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main25 var8 var0 var5 var4) (and (= var9 0) (and (and (and (and (= var6 var8) (= var3 var0)) (= var7 var5)) (= var1 var4)) (= var2 (n (getnode (read var8 var4)))))))) (inv_main13 var6 var3 var7 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main13 var3 var0 var2 var1)) (inv_main27 (write var3 var1 (O_node (node 2 (n (getnode (read var3 var1)))))) var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main19 var3 var0 var2 var1)) (inv_main25 (write var3 var1 (O_node (node (h (getnode (read var3 var1))) var2))) var0 var2 var1)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap)) (or (not (and (inv_main2 var3) (and (not (= var1 nullAddr)) (and (= var4 (newHeap (alloc var3 (O_node var0)))) (= var1 (newAddr (alloc var3 (O_node var0)))))))) (inv_main11 var4 var1 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (inv_main46 var4 var0 var3 var2 var1)) (inv_main50 (write var4 (tail (getsl (read var4 var1))) (O_sl_item (sl_item nullAddr (n2 (getsl_item (read var4 (tail (getsl (read var4 var1))))))))) var0 var3 var2 var1 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main31 var8 var0 var3 var2) (and (= var7 2) (and (and (and (and (= var5 var8) (= var1 var0)) (= var4 var3)) (= var6 var2)) (= var7 (h (getnode (read var8 var2)))))))) (inv_main32 var5 var1 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (inv_main86 var9 var0 var6 var2 var8 var4 var3 var1 var7 var5)) (inv_main85 (write var9 var7 (O_sl_item (sl_item (n1 (getsl_item (read var9 var7))) var5))) var0 var6 var2 var8 var4 var3 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (inv_main77 var8 var0 var5 var2 var7 var4 var3 var1 var6)) (inv_main80 var8 var0 var5 var2 var7 var4 var3 var1 var6 (n1 (getsl_item (read var8 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main50 var10 var0 var9 var8 var1 var3) (and (and (and (and (= var6 (write var10 (tail (getsl (read var10 var1))) (O_sl_item (sl_item (n1 (getsl_item (read var10 (tail (getsl (read var10 var1)))))) var3)))) (= var2 var0)) (= var5 var9)) (= var7 var8)) (= var4 var1)))) (inv_main51 var6 var2 var5 var7 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap)) (or (not (and (inv_main85 var14 var0 var5 var11 var13 var4 var3 var2 var6) (and (and (and (and (and (= var8 (write var14 var2 (O_sl_item (sl_item (n1 (getsl_item (read var14 var2))) var6)))) (= var12 var0)) (= var9 var5)) (= var1 var11)) (= var10 var13)) (= var7 var4)))) (inv_main51 var8 var12 var9 var1 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main79 var18 var0 var4 var13 var16 var3 var2 var1 var6) (and (= var9 0) (and (and (and (and (and (and (and (and (= var10 (write var18 var2 (O_sl_item (sl_item var6 (n2 (getsl_item (read var18 var2))))))) (= var8 var0)) (= var17 var4)) (= var14 var13)) (= var11 var16)) (= var15 var3)) (= var5 var2)) (= var7 var1)) (= var12 var6))))) (inv_main51 var10 var8 var17 var14 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 sl_item) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Heap)) (or (not (and (inv_main43 var11 var0 var7 var5 var1 var4) (and (and (and (and (= var10 (write var11 var1 (O_sl (sl var4 (tail (getsl (read var11 var1))))))) (= var3 var0)) (= var2 var7)) (= var8 var5)) (= var9 var1)))) (inv_main45 (newHeap (alloc var10 (O_sl_item var6))) var3 var2 var8 var9 (newAddr (alloc var10 (O_sl_item var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap)) (or (not (and (inv_main93 var14 var0 var5 var9 var11 var13 var8) (and (and (and (and (and (and (and (= var3 var14) (= var4 var0)) (= var7 var5)) (= var2 var9)) (= var6 var11)) (= var10 var13)) (= var12 var8)) (= var1 (head (getsl (read var14 var13))))))) (inv_main94 var3 var4 var7 var2 var6 var10 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (or (not (inv_main7 var2 var0 var1)) (inv_main7 var2 var0 var1)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Heap) (var3 Heap)) (or (not (and (inv_main2 var3) (and (= var1 nullAddr) (and (= var2 (newHeap (alloc var3 (O_node var0)))) (= var1 (newAddr (alloc var3 (O_node var0)))))))) (inv_main7 var2 var1 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main11 var8 var0 var4 var2) (and (not (= var6 0)) (and (and (and (= var5 (write var8 var0 (O_node (node 2 (n (getnode (read var8 var0))))))) (= var1 var0)) (= var3 var4)) (= var7 var2))))) (inv_main14 var5 var1 var3 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Heap)) (or (not (and (inv_main25 var9 var0 var6 var5) (and (not (= var3 0)) (and (and (and (and (= var7 var9) (= var4 var0)) (= var8 var6)) (= var1 var5)) (= var2 (n (getnode (read var9 var5)))))))) (inv_main14 var7 var4 var8 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main11 var3 var0 var2 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main14 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main19 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main25 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main13 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main27 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main31 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main33 var3 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main32 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main43 var5 var0 var4 var3 var1 var2) (not (is-O_sl (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main45 var5 var0 var4 var3 var1 var2) (not (is-O_sl (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main44 var4 var0 var3 var2 var1) (not (is-O_sl (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main47 var5 var0 var3 var2 var1 var4) (not (is-O_sl (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main47 var5 var0 var3 var2 var1 var4) (not (is-O_sl_item (read var5 (head (getsl (read var5 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main48 var5 var0 var4 var2 var1 var3) (not (is-O_sl (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main48 var5 var0 var4 var2 var1 var3) (not (is-O_sl_item (read var5 (head (getsl (read var5 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main46 var4 var0 var3 var2 var1) (not (is-O_sl (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main46 var4 var0 var3 var2 var1) (not (is-O_sl_item (read var4 (tail (getsl (read var4 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main50 var5 var0 var4 var3 var1 var2) (not (is-O_sl (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main50 var5 var0 var4 var3 var1 var2) (not (is-O_sl_item (read var5 (tail (getsl (read var5 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main59 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl (read var8 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main60 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr)) (not (and (inv_main64 var8 var0 var5 var2 var7 var4 var3 var1 var6 var9) (not (is-O_sl (read var8 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main63 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main69 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (not (and (inv_main72 var9 var0 var6 var3 var8 var5 var4 var2 var7 var1) (not (is-O_sl_item (read var9 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main71 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main77 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (not (and (inv_main80 var9 var0 var6 var2 var8 var4 var3 var1 var7 var5) (not (is-O_sl_item (read var9 var7))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main79 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main82 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (not (and (inv_main86 var9 var0 var6 var2 var8 var4 var3 var1 var7 var5) (not (is-O_sl_item (read var9 var7))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main85 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (not (and (inv_main91 var6 var0 var3 var2 var4 var5 var1) (not (is-O_sl (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (not (and (inv_main93 var6 var0 var3 var2 var4 var5 var1) (not (is-O_sl (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (not (and (inv_main94 var6 var0 var3 var2 var4 var5 var1) (not (is-O_sl (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (not (and (inv_main94 var6 var0 var3 var2 var4 var5 var1) (not (is-O_sl_item (read var6 (head (getsl (read var6 var5)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap)) (not (and (inv_main97 var7 var0 var4 var2 var5 var6 var1 var3) (not (is-O_sl (read var7 var6))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/simple_and_skiplist_2lvl-2.i.smt2 b/heap-theory-benchmarks/array/simple_and_skiplist_2lvl-2.i.smt2 new file mode 100644 index 00000000..46dea02a --- /dev/null +++ b/heap-theory-benchmarks/array/simple_and_skiplist_2lvl-2.i.smt2 @@ -0,0 +1,162 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0) (sl_item 0) (sl 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (O_sl_item (getsl_item sl_item)) (O_sl (getsl sl)) (defObj)) + ((node (h Int) (n Addr))) + ((sl_item (n1 Addr) (n2 Addr))) + ((sl (head Addr) (tail Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main24 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main62 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main63 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main68 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(declare-fun inv_main70 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main79 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main81 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main84 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main85 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main90 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main92 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main93 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Addr Addr Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 node) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main13 var4 var2 var8 var1) (and (not (= var13 nullAddr)) (and (and (and (and (and (= var10 (newHeap (alloc var3 (O_node var0)))) (= var6 var12)) (= var11 var7)) (= var5 var9)) (= var13 (newAddr (alloc var3 (O_node var0))))) (and (and (and (= var3 (write var4 var1 (O_node (node 1 (n (getnode (read var4 var1))))))) (= var12 var2)) (= var7 var8)) (= var9 var1)))))) (inv_main18 var10 var6 var13 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main43 var2 var1 var4 var0 var3)) (inv_main46 var2 var1 var4 var0 var3 (tail (getsl (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr)) (or (not (and (inv_main92 var6 var3 var10 var0 var11 var7 var1) (and (and (and (and (and (and (and (= var13 var6) (= var9 var3)) (= var8 var10)) (= var14 var0)) (= var4 var11)) (= var5 var7)) (= var2 var1)) (= var12 (head (getsl (read var6 var7))))))) (inv_main93 var13 var9 var8 var14 var4 var5 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main68 var2 var1 var6 var0 var7 var3 var8 var4 var5)) (inv_main71 var2 var1 var6 var0 var7 var3 var8 var4 var5 (n1 (getsl_item (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main96 var6 var5 var10 var1 var11 var8 var2 var7) (and (and (and (and (and (and (= var9 (write var6 var8 (O_sl (sl var7 (tail (getsl (read var6 var8))))))) (= var0 var5)) (= var14 var10)) (= var3 var1)) (= var4 var11)) (= var12 var8)) (= var13 var2)))) (inv_main90 (write var9 var13 defObj) var0 var14 var3 var4 var12 var13)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main50 var4 var2 var5 var1 var6) (= var3 0))) (inv_main90 var4 var2 var5 var1 var6 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main50 var6 var2 var7 var0 var8) (not (= var1 0)))) (inv_main58 var6 var2 var7 var0 var8 var8 var5 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 sl) (var10 Addr) (var11 sl_item) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap)) (or (not (and (inv_main31 var3 var1 var7 var0) (and (and (and (and (and (and (= var15 (newHeap (alloc var2 (O_sl var9)))) (= var14 var5)) (= var10 var13)) (= var4 var6)) (= var8 (newAddr (alloc var2 (O_sl var9))))) (= var6 nullAddr)) (and (and (and (and (= var2 var3) (= var5 var1)) (= var13 var7)) (= var12 var0)) (= var6 (n (getnode (read var3 var0)))))))) (inv_main42 (newHeap (alloc var15 (O_sl_item var11))) var14 var10 var4 var8 (newAddr (alloc var15 (O_sl_item var11))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 sl) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 sl_item) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main26 var3 var2 var5 var0) (and (and (and (and (and (and (= var1 (newHeap (alloc var7 (O_sl var6)))) (= var14 var9)) (= var12 var10)) (= var8 var9)) (= var4 (newAddr (alloc var7 (O_sl var6))))) (= var9 nullAddr)) (and (and (and (= var7 (write var3 var0 (O_node (node (h (getnode (read var3 var0))) 0)))) (= var9 var2)) (= var10 var5)) (= var13 var0))))) (inv_main42 (newHeap (alloc var1 (O_sl_item var11))) var14 var12 var8 var4 (newAddr (alloc var1 (O_sl_item var11))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 sl_item) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main42 var5 var3 var10 var1 var8 var9) (and (and (and (and (= var0 (write var5 var8 (O_sl (sl var9 (tail (getsl (read var5 var8))))))) (= var7 var3)) (= var2 var10)) (= var11 var1)) (= var6 var8)))) (inv_main44 (newHeap (alloc var0 (O_sl_item var4))) var7 var2 var11 var6 (newAddr (alloc var0 (O_sl_item var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main30 var4 var2 var8 var0) (and (= var7 1) (and (and (and (and (= var1 var4) (= var6 var2)) (= var5 var8)) (= var3 var0)) (= var7 (h (getnode (read var4 var0)))))))) (inv_main31 var1 var6 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main81 var2 var1 var6 var0 var7 var3 var8 var4 var5)) (inv_main85 var2 var1 var6 var0 var7 var3 var8 var4 var5 (n2 (getsl_item (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (inv_main79 var3 var1 var7 var0 var8 var4 var9 var5 var6 var2)) (inv_main78 (write var3 var6 (O_sl_item (sl_item var2 (n2 (getsl_item (read var3 var6)))))) var1 var7 var0 var8 var4 var9 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main12 var2 var1 var3 var0)) (inv_main26 (write var2 var0 (O_node (node 1 (n (getnode (read var2 var0)))))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main24 var5 var3 var8 var0) (and (= var6 0) (and (and (and (and (= var9 var5) (= var4 var3)) (= var1 var8)) (= var7 var0)) (= var2 (n (getnode (read var5 var0)))))))) (inv_main12 var9 var4 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 node) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (and (inv_main2 var3) (and (= var5 0) (and (not (= var4 nullAddr)) (and (= var1 (newHeap (alloc var3 (O_node var2)))) (= var4 (newAddr (alloc var3 (O_node var2))))))))) (inv_main12 var1 var4 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main59 var2 var1 var6 var0 var7 var3 var8 var4 var5)) (inv_main63 var2 var1 var6 var0 var7 var3 var8 var4 var5 (n2 (getsl_item (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main45 var2 var1 var4 var0 var3)) (inv_main49 (write var2 (tail (getsl (read var2 var3))) (O_sl_item (sl_item nullAddr (n2 (getsl_item (read var2 (tail (getsl (read var2 var3))))))))) var1 var4 var0 var3 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (inv_main21 var2 var1 var4 var0 var3)) (inv_main21 var2 var1 var4 var0 var3)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main13 var4 var2 var8 var1) (and (= var13 nullAddr) (and (and (and (and (and (= var10 (newHeap (alloc var3 (O_node var0)))) (= var6 var12)) (= var11 var7)) (= var5 var9)) (= var13 (newAddr (alloc var3 (O_node var0))))) (and (and (and (= var3 (write var4 var1 (O_node (node 1 (n (getnode (read var4 var1))))))) (= var12 var2)) (= var7 var8)) (= var9 var1)))))) (inv_main21 var10 var6 var13 var5 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main44 var3 var1 var5 var0 var4 var2)) (inv_main43 (write var3 var4 (O_sl (sl (head (getsl (read var3 var4))) var2))) var1 var5 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main47 var2 var1 var5 var0 var4 var3)) (inv_main45 (write var2 (head (getsl (read var2 var4))) (O_sl_item (sl_item (n1 (getsl_item (read var2 (head (getsl (read var2 var4)))))) var3))) var1 var5 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (inv_main85 var2 var1 var7 var0 var8 var3 var9 var4 var5 var6)) (inv_main84 (write var2 var5 (O_sl_item (sl_item (n1 (getsl_item (read var2 var5))) var6))) var1 var7 var0 var8 var3 var9 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main78 var4 var2 var7 var0 var8 var12 var9 var5 var13) (and (not (= var16 0)) (and (and (and (and (and (and (and (and (= var3 (write var4 var9 (O_sl_item (sl_item var13 (n2 (getsl_item (read var4 var9))))))) (= var17 var2)) (= var15 var7)) (= var1 var0)) (= var10 var8)) (= var6 var12)) (= var18 var9)) (= var14 var5)) (= var11 var13))))) (inv_main81 var3 var17 var15 var1 var10 var6 var18 var14 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main30 var6 var3 var8 var1) (and (not (= var5 1)) (and (and (and (and (= var4 var6) (= var7 var3)) (= var2 var8)) (= var0 var1)) (= var5 (h (getnode (read var6 var1)))))))) (inv_main32 var4 var7 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main58 var5 var4 var8 var0 var9 var14 var11 var7 var16) (and (and (and (and (and (and (and (and (and (= var13 var5) (= var12 var4)) (= var2 var8)) (= var3 var0)) (= var18 var9)) (= var15 var14)) (= var17 var11)) (= var1 var7)) (= var6 var16)) (= var10 (head (getsl (read var5 var14))))))) (inv_main59 var13 var12 var2 var3 var18 var15 var17 var10 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main62 var4 var3 var7 var2 var8 var15 var9 var6 var18) (and (and (and (and (and (and (and (and (and (= var11 var4) (= var10 var3)) (= var0 var7)) (= var1 var2)) (= var5 var8)) (= var14 var15)) (= var12 var9)) (= var13 var6)) (= var17 var18)) (= var16 (n2 (getsl_item (read var4 var6))))))) (inv_main59 var11 var10 var0 var1 var5 var14 var12 var16 var17)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main18 var2 var1 var3 var0)) (inv_main24 (write var2 var0 (O_node (node (h (getnode (read var2 var0))) var3))) var1 var3 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main63 var7 var4 var13 var2 var14 var17 var15 var8 var18 var1) (and (not (= var5 0)) (and (not (= var6 0)) (and (and (and (and (and (and (and (and (and (= var0 var7) (= var19 var4)) (= var12 var13)) (= var9 var2)) (= var20 var14)) (= var11 var17)) (= var16 var15)) (= var10 var8)) (= var3 var18)) (or (and (not (= var1 (tail (getsl (read var7 var17))))) (= var6 1)) (and (= var1 (tail (getsl (read var7 var17)))) (= var6 0)))))))) (inv_main62 var0 var19 var12 var9 var20 var11 var16 var10 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main76 var2 var1 var6 var0 var7 var3 var8 var4 var5)) (inv_main79 var2 var1 var6 var0 var7 var3 var8 var4 var5 (n1 (getsl_item (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main90 var3 var2 var5 var0 var6 var4 var1) (not (= (head (getsl (read var3 var4))) nullAddr)))) (inv_main92 var3 var2 var5 var0 var6 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main70 var5 var3 var10 var0 var11 var15 var12 var7 var16) (and (and (and (and (and (and (and (and (and (= var18 var5) (= var13 var3)) (= var6 var10)) (= var9 var0)) (= var1 var11)) (= var17 var15)) (= var14 var12)) (= var4 var7)) (= var8 var16)) (= var2 (n1 (getsl_item (read var5 var12))))))) (inv_main68 var18 var13 var6 var9 var1 var17 var2 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Heap)) (or (not (and (inv_main63 var6 var5 var9 var2 var10 var16 var11 var7 var18 var1) (and (= var13 0) (and (and (and (and (and (and (and (and (and (= var19 var6) (= var14 var5)) (= var17 var9)) (= var12 var2)) (= var0 var10)) (= var15 var16)) (= var8 var11)) (= var4 var7)) (= var3 var18)) (or (and (not (= var1 (tail (getsl (read var6 var16))))) (= var13 1)) (and (= var1 (tail (getsl (read var6 var16)))) (= var13 0))))))) (inv_main68 var19 var14 var17 var12 var0 var15 var4 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main63 var6 var4 var13 var2 var14 var17 var15 var7 var18 var1) (and (= var12 0) (and (not (= var5 0)) (and (and (and (and (and (and (and (and (and (= var0 var6) (= var19 var4)) (= var11 var13)) (= var8 var2)) (= var20 var14)) (= var10 var17)) (= var16 var15)) (= var9 var7)) (= var3 var18)) (or (and (not (= var1 (tail (getsl (read var6 var17))))) (= var5 1)) (and (= var1 (tail (getsl (read var6 var17)))) (= var5 0)))))))) (inv_main68 var0 var19 var11 var8 var20 var10 var9 var9 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 sl_item) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Heap) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Addr)) (or (not (and (inv_main71 var5 var20 var24 var17 var9 var15 var11 var21 var26 var25) (and (and (and (and (and (and (and (and (and (and (= var22 (newHeap (alloc var4 (O_sl_item var8)))) (= var10 var3)) (= var19 var16)) (= var0 var13)) (= var28 var30)) (= var14 var29)) (= var23 var6)) (= var12 var2)) (= var7 var27)) (= var1 (newAddr (alloc var4 (O_sl_item var8))))) (and (= var18 0) (and (and (and (and (and (and (and (and (and (= var4 var5) (= var3 var20)) (= var16 var24)) (= var13 var17)) (= var30 var9)) (= var29 var15)) (= var6 var11)) (= var2 var21)) (= var27 var26)) (or (and (not (= var25 (n2 (getsl_item (read var5 var21))))) (= var18 1)) (and (= var25 (n2 (getsl_item (read var5 var21)))) (= var18 0)))))))) (inv_main76 var22 var10 var19 var0 var28 var14 var23 var12 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 sl_item) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Heap) (var22 Addr) (var23 Int) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Addr) (var31 Addr)) (or (not (and (inv_main71 var4 var17 var22 var15 var9 var12 var11 var18 var28 var26) (and (and (and (and (and (and (and (and (and (and (= var2 (newHeap (alloc var21 (O_sl_item var5)))) (= var7 var6)) (= var14 var8)) (= var10 var30)) (= var20 var27)) (= var19 var25)) (= var31 var29)) (= var1 var0)) (= var3 var16)) (= var24 (newAddr (alloc var21 (O_sl_item var5))))) (and (= var23 0) (and (not (= var13 0)) (and (and (and (and (and (and (and (and (and (= var21 var4) (= var6 var17)) (= var8 var22)) (= var30 var15)) (= var27 var9)) (= var25 var12)) (= var29 var11)) (= var0 var18)) (= var16 var28)) (or (and (not (= var26 (n2 (getsl_item (read var4 var18))))) (= var13 1)) (and (= var26 (n2 (getsl_item (read var4 var18)))) (= var13 0))))))))) (inv_main76 var2 var7 var14 var10 var20 var19 var31 var1 var24)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main31 var3 var1 var8 var0) (and (not (= var7 nullAddr)) (and (and (and (and (= var2 var3) (= var4 var1)) (= var6 var8)) (= var5 var0)) (= var7 (n (getnode (read var3 var0)))))))) (inv_main30 var2 var4 var6 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr)) (or (not (and (inv_main26 var5 var2 var7 var1) (and (not (= var3 nullAddr)) (and (and (and (= var0 (write var5 var1 (O_node (node (h (getnode (read var5 var1))) 0)))) (= var3 var2)) (= var4 var7)) (= var6 var1))))) (inv_main30 var0 var3 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main46 var2 var1 var4 var0 var3 var5)) (inv_main47 (write var2 (head (getsl (read var2 var3))) (O_sl_item (sl_item var5 (n2 (getsl_item (read var2 (head (getsl (read var2 var3))))))))) var1 var4 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (or (not (inv_main7 var2 var1 var0)) (inv_main7 var2 var1 var0)))) +(assert (forall ((var0 node) (var1 Heap) (var2 Addr) (var3 Heap)) (or (not (and (inv_main2 var1) (and (= var2 nullAddr) (and (= var3 (newHeap (alloc var1 (O_node var0)))) (= var2 (newAddr (alloc var1 (O_node var0)))))))) (inv_main7 var3 var2 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main49 var6 var4 var9 var0 var7 var3) (and (and (and (and (= var2 (write var6 (tail (getsl (read var6 var7))) (O_sl_item (sl_item (n1 (getsl_item (read var6 (tail (getsl (read var6 var7)))))) var3)))) (= var1 var4)) (= var8 var9)) (= var10 var0)) (= var5 var7)))) (inv_main50 var2 var1 var8 var10 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap)) (or (not (and (inv_main84 var2 var1 var5 var0 var6 var10 var8 var3 var13) (and (and (and (and (and (= var14 (write var2 var3 (O_sl_item (sl_item (n1 (getsl_item (read var2 var3))) var13)))) (= var7 var1)) (= var4 var5)) (= var12 var0)) (= var9 var6)) (= var11 var10)))) (inv_main50 var14 var7 var4 var12 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main78 var4 var2 var8 var0 var9 var13 var10 var5 var14) (and (= var6 0) (and (and (and (and (and (and (and (and (= var3 (write var4 var10 (O_sl_item (sl_item var14 (n2 (getsl_item (read var4 var10))))))) (= var17 var2)) (= var16 var8)) (= var1 var0)) (= var11 var9)) (= var7 var13)) (= var18 var10)) (= var15 var5)) (= var12 var14))))) (inv_main50 var3 var17 var16 var1 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr)) (or (not (and (inv_main71 var4 var3 var9 var1 var10 var15 var11 var5 var17 var13) (and (not (= var18 0)) (and (not (= var16 0)) (and (and (and (and (and (and (and (and (and (= var8 var4) (= var6 var3)) (= var7 var9)) (= var20 var1)) (= var14 var10)) (= var12 var15)) (= var19 var11)) (= var0 var5)) (= var2 var17)) (or (and (not (= var13 (n2 (getsl_item (read var4 var5))))) (= var16 1)) (and (= var13 (n2 (getsl_item (read var4 var5)))) (= var16 0)))))))) (inv_main70 var8 var6 var7 var20 var14 var12 var19 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main24 var6 var4 var8 var0) (and (not (= var3 0)) (and (and (and (and (= var9 var6) (= var5 var4)) (= var1 var8)) (= var7 var0)) (= var2 (n (getnode (read var6 var0)))))))) (inv_main13 var9 var5 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 node) (var3 Int) (var4 Heap) (var5 Addr)) (or (not (and (inv_main2 var4) (and (not (= var3 0)) (and (not (= var5 nullAddr)) (and (= var1 (newHeap (alloc var4 (O_node var2)))) (= var5 (newAddr (alloc var4 (O_node var2))))))))) (inv_main13 var1 var5 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main93 var3 var2 var5 var0 var6 var4 var1)) (inv_main96 var3 var2 var5 var0 var6 var4 var1 (n1 (getsl_item (read var3 (head (getsl (read var3 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main13 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main18 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main24 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main12 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main30 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main32 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main31 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main42 var2 var1 var5 var0 var3 var4) (not (is-O_sl (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main44 var3 var1 var5 var0 var4 var2) (not (is-O_sl (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main43 var2 var1 var4 var0 var3) (not (is-O_sl (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main46 var2 var1 var4 var0 var3 var5) (not (is-O_sl (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main46 var2 var1 var4 var0 var3 var5) (not (is-O_sl_item (read var2 (head (getsl (read var2 var3)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main47 var2 var1 var5 var0 var4 var3) (not (is-O_sl (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main47 var2 var1 var5 var0 var4 var3) (not (is-O_sl_item (read var2 (head (getsl (read var2 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main45 var2 var1 var4 var0 var3) (not (is-O_sl (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main45 var2 var1 var4 var0 var3) (not (is-O_sl_item (read var2 (tail (getsl (read var2 var3)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main49 var3 var2 var5 var0 var4 var1) (not (is-O_sl (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main49 var3 var2 var5 var0 var4 var1) (not (is-O_sl_item (read var3 (tail (getsl (read var3 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main58 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main59 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main63 var3 var2 var7 var1 var8 var4 var9 var5 var6 var0) (not (is-O_sl (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main62 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main68 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main71 var3 var2 var7 var0 var8 var4 var9 var5 var6 var1) (not (is-O_sl_item (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main70 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main76 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main79 var3 var1 var7 var0 var8 var4 var9 var5 var6 var2) (not (is-O_sl_item (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main78 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main81 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main85 var2 var1 var7 var0 var8 var3 var9 var4 var5 var6) (not (is-O_sl_item (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main84 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main90 var3 var2 var5 var0 var6 var4 var1) (not (is-O_sl (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main92 var3 var2 var5 var0 var6 var4 var1) (not (is-O_sl (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main93 var3 var2 var5 var0 var6 var4 var1) (not (is-O_sl (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main93 var3 var2 var5 var0 var6 var4 var1) (not (is-O_sl_item (read var3 (head (getsl (read var3 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main96 var3 var2 var6 var0 var7 var5 var1 var4) (not (is-O_sl (read var3 var5))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/simple_built_from_end.i.smt2 b/heap-theory-benchmarks/array/simple_built_from_end.i.smt2 new file mode 100644 index 00000000..e7417e07 --- /dev/null +++ b/heap-theory-benchmarks/array/simple_built_from_end.i.smt2 @@ -0,0 +1,60 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr) Bool) +(declare-fun inv_main20 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr Addr) Bool) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (= var1 emptyHeap)) (inv_main4 var1 var0 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main19 var4 var2 var1) (and (not (= var6 nullAddr)) (and (and (and (= var0 var4) (= var3 var2)) (= var5 var1)) (= var6 (n (getnode (read var4 var1)))))))) (inv_main18 var0 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main4 var3 var1 var0) (and (not (= var0 nullAddr)) (= var2 0)))) (inv_main18 var3 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main18 var6 var4 var3) (and (= var2 1) (and (and (and (= var1 var6) (= var5 var4)) (= var0 var3)) (= var2 (h (getnode (read var6 var3)))))))) (inv_main19 var1 var5 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main18 var6 var4 var3) (and (not (= var0 1)) (and (and (and (= var1 var6) (= var2 var4)) (= var5 var3)) (= var0 (h (getnode (read var6 var3)))))))) (inv_main20 var1 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main10 var2 var1 var0)) (inv_main16 (write var2 var1 (O_node (node 1 (n (getnode (read var2 var1)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (inv_main13 var2 var1 var0 var3)) (inv_main13 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 node) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main4 var7 var2 var1) (and (= var6 nullAddr) (and (and (and (and (= var3 (newHeap (alloc var7 (O_node var5)))) (= var8 var2)) (= var0 var1)) (= var6 (newAddr (alloc var7 (O_node var5))))) (not (= var4 0)))))) (inv_main13 var3 var6 var0 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap)) (or (not (and (inv_main16 var5 var2 var1) (and (and (= var3 (write var5 var2 (O_node (node (h (getnode (read var5 var2))) var1)))) (= var4 var2)) (= var0 var1)))) (inv_main4 var3 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 node) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main4 var7 var2 var1) (and (not (= var6 nullAddr)) (and (and (and (and (= var3 (newHeap (alloc var7 (O_node var5)))) (= var8 var2)) (= var0 var1)) (= var6 (newAddr (alloc var7 (O_node var5))))) (not (= var4 0)))))) (inv_main10 var3 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main10 var2 var1 var0) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main16 var2 var1 var0) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main18 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main20 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main19 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/simple_search_value-1.i.smt2 b/heap-theory-benchmarks/array/simple_search_value-1.i.smt2 new file mode 100644 index 00000000..9e0d0497 --- /dev/null +++ b/heap-theory-benchmarks/array/simple_search_value-1.i.smt2 @@ -0,0 +1,81 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main35 (Heap Addr Addr Addr Int Int Int) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr Int Int Int) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr Int Int Int) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Int Int Int) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main13 var1 var0 var2 var3 var4)) (inv_main29 (write var1 var3 (O_node (node var4 (n (getnode (read var1 var3)))))) var0 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main20 var1 var0 var2 var3 var4)) (inv_main26 (write var1 var3 (O_node (node (h (getnode (read var1 var3))) var2))) var0 var2 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main12 var2 var1 var3 var4 var5) (and (= var0 0) (not (<= 0 (+ (+ 10 (* (- 1) var5)) (- 1))))))) (inv_main13 var2 var1 var3 var4 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int)) (or (not (and (inv_main26 var2 var1 var5 var6 var9) (and (and (and (and (and (= var0 var2) (= var8 var1)) (= var4 var5)) (= var7 var6)) (= var10 var9)) (= var3 (n (getnode (read var2 var6))))))) (inv_main12 var0 var8 var4 var3 (+ var10 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 node) (var3 Addr) (var4 Heap)) (or (not (and (inv_main2 var0) (and (not (= var3 nullAddr)) (and (= var4 (newHeap (alloc var0 (O_node var2)))) (= var3 (newAddr (alloc var0 (O_node var2)))))))) (inv_main12 var4 var3 var1 var3 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (or (not (inv_main7 var2 var1 var0)) (inv_main7 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 node) (var2 Heap) (var3 Addr)) (or (not (and (inv_main2 var0) (and (= var3 nullAddr) (and (= var2 (newHeap (alloc var0 (O_node var1)))) (= var3 (newAddr (alloc var0 (O_node var1)))))))) (inv_main7 var2 var3 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int)) (or (not (and (inv_main40 var1 var0 var3 var4 var6 var14 var7) (and (not (= var10 nullAddr)) (and (and (and (and (and (and (and (= var12 var1) (= var5 var0)) (= var9 var3)) (= var11 var4)) (= var13 var6)) (= var8 var14)) (= var2 var7)) (= var10 (n (getnode (read var1 var4)))))))) (inv_main35 var12 var5 var9 var10 var13 var8 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr)) (or (not (and (inv_main29 var2 var1 var5 var6 var8) (and (not (= var4 nullAddr)) (and (and (and (and (= var7 (write var2 var6 (O_node (node (h (getnode (read var2 var6))) 0)))) (= var4 var1)) (= var3 var5)) (= var9 var6)) (= var0 var8))))) (inv_main35 var7 var4 var3 var4 var0 0 0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int)) (or (not (and (inv_main40 var1 var0 var3 var4 var6 var14 var7) (and (and (or (= var2 0) (= var8 0)) (= var10 nullAddr)) (and (and (and (and (and (and (and (= var12 var1) (= var5 var0)) (= var9 var3)) (= var11 var4)) (= var13 var6)) (= var8 var14)) (= var2 var7)) (= var10 (n (getnode (read var1 var4)))))))) (inv_main46 var12 var5 var9 var10 var13 var8 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr)) (or (not (and (inv_main29 var2 var1 var5 var6 var8) (and (= var4 nullAddr) (and (and (and (and (= var7 (write var2 var6 (O_node (node (h (getnode (read var2 var6))) 0)))) (= var4 var1)) (= var3 var5)) (= var9 var6)) (= var0 var8))))) (inv_main46 var7 var4 var3 var4 var0 0 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int)) (or (not (and (inv_main36 var4 var0 var8 var9 var10 var14 var11) (and (= var2 6) (and (and (and (and (and (and (and (= var5 var4) (= var12 var0)) (= var6 var8)) (= var13 var9)) (= var1 var10)) (= var3 var14)) (= var7 var11)) (= var2 (h (getnode (read var4 var9)))))))) (inv_main40 var5 var12 var6 var13 var1 var3 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main36 var2 var1 var4 var5 var8 var14 var9) (and (not (= var13 6)) (and (and (and (and (and (and (and (= var10 var2) (= var12 var1)) (= var7 var4)) (= var6 var5)) (= var3 var8)) (= var0 var14)) (= var11 var9)) (= var13 (h (getnode (read var2 var5)))))))) (inv_main40 var10 var12 var7 var6 var3 var0 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int)) (or (not (and (inv_main35 var3 var1 var6 var7 var8 var14 var9) (and (= var5 2) (and (and (and (and (and (and (and (= var12 var3) (= var10 var1)) (= var0 var6)) (= var13 var7)) (= var11 var8)) (= var2 var14)) (= var4 var9)) (= var5 (h (getnode (read var3 var7)))))))) (inv_main36 var12 var10 var0 var13 var11 1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int)) (or (not (and (inv_main35 var1 var0 var2 var3 var7 var14 var8) (and (not (= var9 2)) (and (and (and (and (and (and (and (= var13 var1) (= var4 var0)) (= var11 var2)) (= var6 var3)) (= var5 var7)) (= var10 var14)) (= var12 var8)) (= var9 (h (getnode (read var1 var3)))))))) (inv_main36 var13 var4 var11 var6 var5 var10 var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main12 var1 var0 var2 var3 var4) (<= 0 (+ (+ 10 (* (- 1) var4)) (- 1))))) (inv_main14 var1 var0 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main12 var1 var0 var3 var4 var5) (and (not (= var2 0)) (not (<= 0 (+ (+ 10 (* (- 1) var5)) (- 1))))))) (inv_main14 var1 var0 var3 var4 var5)))) +(assert (forall ((var0 Addr) (var1 node) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main14 var5 var3 var7 var8 var12) (and (not (= var2 nullAddr)) (and (and (and (and (and (and (= var11 (newHeap (alloc var10 (O_node var1)))) (= var16 var6)) (= var15 var13)) (= var14 var0)) (= var4 var9)) (= var2 (newAddr (alloc var10 (O_node var1))))) (and (and (and (and (= var10 (write var5 var8 (O_node (node var12 (n (getnode (read var5 var8))))))) (= var6 var3)) (= var13 var7)) (= var0 var8)) (= var9 var12)))))) (inv_main20 var11 var16 var2 var14 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main23 var1 var0 var3 var4 var5 var2)) (inv_main23 var1 var0 var3 var4 var5 var2)))) +(assert (forall ((var0 Addr) (var1 node) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main14 var5 var3 var7 var8 var12) (and (= var2 nullAddr) (and (and (and (and (and (and (= var11 (newHeap (alloc var10 (O_node var1)))) (= var16 var6)) (= var15 var13)) (= var14 var0)) (= var4 var9)) (= var2 (newAddr (alloc var10 (O_node var1))))) (and (and (and (and (= var10 (write var5 var8 (O_node (node var12 (n (getnode (read var5 var8))))))) (= var6 var3)) (= var13 var7)) (= var0 var8)) (= var9 var12)))))) (inv_main23 var11 var16 var2 var14 var4 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main14 var1 var0 var2 var3 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main20 var1 var0 var2 var3 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main26 var1 var0 var2 var3 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main13 var1 var0 var2 var3 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main29 var1 var0 var2 var3 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main35 var1 var0 var2 var3 var4 var6 var5) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main36 var1 var0 var2 var3 var4 var6 var5) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main40 var1 var0 var2 var3 var4 var6 var5) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (inv_main46 var1 var0 var2 var3 var4 var6 var5)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-01-2.i.smt2 b/heap-theory-benchmarks/array/sll-01-2.i.smt2 new file mode 100644 index 00000000..d41fb062 --- /dev/null +++ b/heap-theory-benchmarks/array/sll-01-2.i.smt2 @@ -0,0 +1,178 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (inner Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr) Bool) +(declare-fun inv_main103 (Heap Addr Addr) Bool) +(declare-fun inv_main106 (Heap Addr Addr) Bool) +(declare-fun inv_main109 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr) Bool) +(declare-fun inv_main111 (Heap Addr Addr) Bool) +(declare-fun inv_main114 (Heap Addr Addr) Bool) +(declare-fun inv_main116 (Heap Addr Addr) Bool) +(declare-fun inv_main121 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr) Bool) +(declare-fun inv_main19 (Heap Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr) Bool) +(declare-fun inv_main69 (Heap Addr Addr Int) Bool) +(declare-fun inv_main7 (Heap Addr) Bool) +(declare-fun inv_main70 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main81 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main93 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main98 (Heap Addr Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main109 var1 var0 var2) (= nullAddr (inner (getTSLL (read var1 var2)))))) (inv_main114 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main106 var5 var3 var8) (and (not (= nullAddr var1)) (and (and (and (and (= var4 var5) (= var9 var3)) (= var7 var8)) (= var2 (next (getTSLL (read var5 var3))))) (and (and (= var0 (write var4 var9 defObj)) (= var6 var9)) (= var1 var2)))))) (inv_main103 var0 var1 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main96 var5 var2 var10 var0 var1) (and (not (= nullAddr var7)) (and (= nullAddr var8) (and (and (and (and (and (= var6 var5) (= var7 var2)) (= var4 var10)) (= var3 var0)) (= var9 var1)) (= var8 (next (getTSLL (read var5 var10))))))))) (inv_main103 var6 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main26 var4 var3 var5) (and (not (= nullAddr var2)) (and (= nullAddr var2) (and (not (= nullAddr var2)) (and (= var1 0) (and (and (= var6 var4) (= var2 var3)) (= var0 nullAddr)))))))) (inv_main103 var6 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main109 var1 var0 var2) (not (= nullAddr (inner (getTSLL (read var1 var2))))))) (inv_main116 var1 var0 var2)))) +(assert (forall ((var0 TSLL) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Heap)) (or (not (and (inv_main3 var3 var1) (and (= var4 0) (and (not (= var2 nullAddr)) (and (= var5 (write var3 var1 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var3 var1))))))) (= var2 var1)))))) (inv_main15 (newHeap (alloc var5 (O_TSLL var0))) var2 (newAddr (alloc var5 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main45 var1 var0 var2)) (inv_main56 var1 var0 var2 (inner (getTSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main26 var4 var3 var5) (and (= nullAddr var2) (and (= var1 0) (and (and (= var6 var4) (= var2 var3)) (= var0 nullAddr)))))) (inv_main64 var6 var2 var2)))) +(assert (forall ((var0 TSLL) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main26 var2 var1 var3) (not (= var4 0)))) (inv_main31 (newHeap (alloc var2 (O_TSLL var0))) var1 var3 (newAddr (alloc var2 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main86 var6 var4 var8 var1 var3) (and (= var7 1) (and (and (and (and (and (= var5 var6) (= var10 var4)) (= var9 var8)) (= var7 var1)) (= var2 var3)) (= var0 (inner (getTSLL (read var6 var3)))))))) (inv_main93 var5 var10 var9 var7 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var2 var4 var0 var1) (and (<= 0 (+ 1 (* (- 1) var0))) (= nullAddr var1)))) (inv_main96 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var2 var4 var0 var1) (and (= nullAddr var1) (and (= var0 0) (not (= nullAddr var1)))))) (inv_main78 var3 var2 var4 1 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var2 var4 var0 var1) (and (= nullAddr var1) (and (not (= var0 0)) (not (= nullAddr var1)))))) (inv_main78 var3 var2 var4 2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main49 var1 var0 var2)) (inv_main51 (write var1 (inner (getTSLL (read var1 var2))) (O_TSLL (TSLL nullAddr (inner (getTSLL (read var1 (inner (getTSLL (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main103 var1 var0 var4) (and (not (= nullAddr var6)) (and (not (= nullAddr var6)) (and (and (and (= var3 var1) (= var5 var0)) (= var2 var4)) (= var6 (inner (getTSLL (read var1 var0))))))))) (inv_main109 var3 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main10 var1 var0)) (inv_main21 var1 var0 (inner (getTSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main15 var2 var0 var1)) (inv_main14 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) var1))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main50 var1 var0 var2 var3)) (inv_main49 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) var3))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main56 var1 var0 var3 var2) (not (= var2 nullAddr)))) (inv_main26 var1 var0 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main56 var5 var2 var8 var7) (and (and (not (= var6 0)) (and (= var7 nullAddr) (and (and (and (= var0 var5) (= var1 var2)) (= var3 var8)) (= var10 (inner (getTSLL (read var5 var8))))))) (and (and (and (= var4 var0) (= var9 var1)) (= var11 var3)) (or (and (= var10 nullAddr) (= var6 1)) (and (not (= var10 nullAddr)) (= var6 0))))))) (inv_main26 var4 var9 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main21 var2 var1 var0) (not (= var0 nullAddr)))) (inv_main26 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (inv_main21 var4 var2 var0) (and (and (not (= var8 0)) (and (= var0 nullAddr) (and (and (= var7 var4) (= var6 var2)) (= var1 (inner (getTSLL (read var4 var2))))))) (and (and (= var5 var7) (= var3 var6)) (or (and (= var1 nullAddr) (= var8 1)) (and (not (= var1 nullAddr)) (= var8 0))))))) (inv_main26 var5 var3 var3)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main30 var3 var0 var5) (and (and (and (= var2 var3) (= var6 var0)) (= var4 var5)) (= var1 (next (getTSLL (read var3 var5))))))) (inv_main32 var2 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main3 var1 var0) (and (= var3 nullAddr) (and (= var2 (write var1 var0 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var1 var0))))))) (= var3 var0))))) (inv_main7 var2 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var2 var4 var0 var1) (and (not (= nullAddr var1)) (and (= var0 0) (not (= nullAddr var1)))))) (inv_main76 var3 var2 var4 1 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var2 var4 var0 var1) (and (not (= nullAddr var1)) (and (not (= var0 0)) (not (= nullAddr var1)))))) (inv_main76 var3 var2 var4 2 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap)) (or (not (and (inv_main3 var3 var1) (and (not (= var0 0)) (and (not (= var2 nullAddr)) (and (= var4 (write var3 var1 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var3 var1))))))) (= var2 var1)))))) (inv_main11 var4 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var2 var4 var0 var1) (and (not (<= 0 (+ 1 (* (- 1) var0)))) (= nullAddr var1)))) (inv_main98 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main103 var1 var0 var4) (and (= nullAddr var6) (and (and (and (= var3 var1) (= var5 var0)) (= var2 var4)) (= var6 (inner (getTSLL (read var1 var0)))))))) (inv_main106 var3 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main114 var4 var3 var5) (and (= nullAddr (next (getTSLL (read var4 var5)))) (and (and (= var2 (write var4 var5 defObj)) (= var1 var3)) (= var0 var5))))) (inv_main106 var2 var1 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main14 var1 var0)) (inv_main16 (write var1 (inner (getTSLL (read var1 var0))) (O_TSLL (TSLL nullAddr (inner (getTSLL (read var1 (inner (getTSLL (read var1 var0))))))))) var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main81 var3 var2 var4 var0 var1) (= nullAddr (next (getTSLL (read var3 var1)))))) (inv_main86 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main114 var1 var0 var2) (not (= nullAddr (next (getTSLL (read var1 var2))))))) (inv_main121 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main32 var2 var1 var4) (and (= nullAddr var3) (and (and (= var5 (write var2 var4 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var2 var4))))))) (= var0 var1)) (= var3 var4))))) (inv_main37 var5 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main11 var1 var0)) (inv_main10 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) nullAddr))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main16 var1 var0)) (inv_main10 (write var1 (inner (getTSLL (read var1 var0))) (O_TSLL (TSLL (next (getTSLL (read var1 (inner (getTSLL (read var1 var0)))))) nullAddr))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main46 var1 var0 var2)) (inv_main45 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main51 var1 var0 var2)) (inv_main45 (write var1 (inner (getTSLL (read var1 var2))) (O_TSLL (TSLL (next (getTSLL (read var1 (inner (getTSLL (read var1 var2)))))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main21 var4 var2 var0) (and (and (= var7 0) (and (= var0 nullAddr) (and (and (= var8 var4) (= var6 var2)) (= var1 (inner (getTSLL (read var4 var2))))))) (and (and (= var5 var8) (= var3 var6)) (or (and (= var1 nullAddr) (= var7 1)) (and (not (= var1 nullAddr)) (= var7 0))))))) (inv_main19 var5 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main32 var3 var1 var5) (and (not (= var0 0)) (and (not (= var4 nullAddr)) (and (not (= nullAddr var4)) (and (and (= var6 (write var3 var5 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var3 var5))))))) (= var2 var1)) (= var4 var5))))))) (inv_main46 var6 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main76 var3 var2 var4 var0 var1) (= nullAddr (inner (getTSLL (read var3 var1)))))) (inv_main81 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main32 var2 var0 var4) (and (= var3 nullAddr) (and (not (= nullAddr var3)) (and (and (= var5 (write var2 var4 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var2 var4))))))) (= var1 var0)) (= var3 var4)))))) (inv_main42 var5 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main103 var1 var0 var4) (and (= nullAddr var6) (and (not (= nullAddr var6)) (and (and (and (= var3 var1) (= var5 var0)) (= var2 var4)) (= var6 (inner (getTSLL (read var1 var0))))))))) (inv_main111 var3 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main31 var1 var0 var3 var2)) (inv_main30 (write var1 var3 (O_TSLL (TSLL var2 (inner (getTSLL (read var1 var3)))))) var0 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main81 var3 var2 var4 var0 var1) (not (= nullAddr (next (getTSLL (read var3 var1))))))) (inv_main88 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main69 var2 var1 var3 var0)) (inv_main70 var2 var1 var3 var0 (inner (getTSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main93 var6 var3 var9 var1 var2) (and (and (and (and (and (= var4 var6) (= var7 var3)) (= var0 var9)) (= var5 var1)) (= var10 var2)) (= var8 (inner (getTSLL (read var6 var2))))))) (inv_main70 var4 var7 var0 var5 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main86 var6 var4 var8 var1 var3) (and (not (= var7 1)) (and (and (and (and (and (= var5 var6) (= var10 var4)) (= var9 var8)) (= var7 var1)) (= var2 var3)) (= var0 (inner (getTSLL (read var6 var3)))))))) (inv_main70 var5 var10 var9 var7 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main96 var5 var2 var10 var0 var1) (and (not (= nullAddr var8)) (and (and (and (and (and (= var7 var5) (= var6 var2)) (= var4 var10)) (= var3 var0)) (= var9 var1)) (= var8 (next (getTSLL (read var5 var10)))))))) (inv_main69 var7 var6 var8 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main26 var4 var3 var5) (and (not (= nullAddr var2)) (and (not (= nullAddr var2)) (and (= var1 0) (and (and (= var6 var4) (= var2 var3)) (= var0 nullAddr))))))) (inv_main69 var6 var2 var2 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 TSLL) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main32 var3 var1 var6) (and (= var0 0) (and (not (= var5 nullAddr)) (and (not (= nullAddr var5)) (and (and (= var7 (write var3 var6 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var3 var6))))))) (= var2 var1)) (= var5 var6))))))) (inv_main50 (newHeap (alloc var7 (O_TSLL var4))) var2 var5 (newAddr (alloc var7 (O_TSLL var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main76 var3 var2 var4 var0 var1) (not (= nullAddr (inner (getTSLL (read var3 var1))))))) (inv_main83 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr)) (or (not (and (inv_main56 var5 var3 var7 var6) (and (and (= var1 0) (and (= var6 nullAddr) (and (and (and (= var0 var5) (= var2 var3)) (= var4 var7)) (= var10 (inner (getTSLL (read var5 var7))))))) (and (and (and (= var9 var0) (= var8 var2)) (= var11 var4)) (or (and (= var10 nullAddr) (= var1 1)) (and (not (= var10 nullAddr)) (= var1 0))))))) (inv_main54 var9 var8 var11)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (inv_main7 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main11 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main15 var2 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main14 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main14 var1 var0) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main16 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main16 var1 var0) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main10 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main21 var2 var1 var0) (and (= var0 nullAddr) (not (is-O_TSLL (read var2 var1)))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (inv_main19 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main31 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main30 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main32 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main37 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main42 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main46 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main50 var1 var0 var2 var3) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main49 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main49 var1 var0 var2) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main51 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main51 var1 var0 var2) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main45 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main56 var1 var0 var3 var2) (and (= var2 nullAddr) (not (is-O_TSLL (read var1 var3)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main54 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main64 var1 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main69 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (inv_main78 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main76 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (inv_main83 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main81 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (inv_main88 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main86 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main93 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (inv_main98 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main96 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main103 var1 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main111 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main109 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main116 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main114 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main121 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main106 var1 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-circular-1.i.smt2 b/heap-theory-benchmarks/array/sll-circular-1.i.smt2 new file mode 100644 index 00000000..27070b53 --- /dev/null +++ b/heap-theory-benchmarks/array/sll-circular-1.i.smt2 @@ -0,0 +1,107 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main26 (Heap Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Int) Bool) +(declare-fun inv_main37 (Heap Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int) Bool) +(declare-fun inv_main42 (Heap Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main50 (Heap Addr Addr Int) Bool) +(declare-fun inv_main55 (Heap Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main38 var2 var1 var3 var0)) (inv_main44 var2 var1 var3 var0 (data (getTSLL (read var2 (next (getTSLL (read var2 var3)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main13 var3 var2 var4 var0) (and (= var6 0) (and (and (and (= var8 (write var3 var4 (O_TSLL (TSLL var2 (data (getTSLL (read var3 var4))))))) (= var1 var2)) (= var5 var4)) (= var7 var0))))) (inv_main16 var8 var1 var5 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main13 var3 var2 var4 var0) (and (= var7 1) (and (not (= var6 0)) (and (and (and (= var8 (write var3 var4 (O_TSLL (TSLL var2 (data (getTSLL (read var3 var4))))))) (= var1 var2)) (= var5 var4)) (= var7 var0)))))) (inv_main16 var8 var1 var5 2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main13 var3 var2 var4 var0) (and (= var7 2) (and (not (= var7 1)) (and (not (= var6 0)) (and (and (and (= var8 (write var3 var4 (O_TSLL (TSLL var2 (data (getTSLL (read var3 var4))))))) (= var1 var2)) (= var5 var4)) (= var7 var0))))))) (inv_main16 var8 var1 var5 3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main50 var3 var2 var4 var0) (and (not (= var6 0)) (and (and (and (and (= var5 var3) (= var8 var2)) (= var1 var4)) (= var7 var0)) (= var6 (data (getTSLL (read var3 var4)))))))) (inv_main55 var5 var1 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main32 var3 var2 var6 var1) (and (= var4 0) (and (and (and (and (= var8 var3) (= var5 var2)) (= var0 var6)) (= var7 var1)) (= var4 (data (getTSLL (read var3 var6)))))))) (inv_main37 var8 var5 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main32 var3 var2 var5 var1) (and (not (= var7 0)) (and (and (and (and (= var6 var3) (= var8 var2)) (= var0 var5)) (= var4 var1)) (= var7 (data (getTSLL (read var3 var5)))))))) (inv_main38 var6 var8 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL var0 (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main40 var3 var2 var5 var1) (and (and (and (and (= var4 var3) (= var8 var2)) (= var0 var5)) (= var6 var1)) (= var7 (next (getTSLL (read var3 var5))))))) (inv_main32 var4 var8 var7 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main29 var3 var2 var6 var0) (and (not (= nullAddr var8)) (and (and (and (and (= var1 var3) (= var7 var2)) (= var5 var6)) (= var4 var0)) (= var8 (next (getTSLL (read var3 var2)))))))) (inv_main32 var1 var7 var8 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main16 var3 var2 var4 var0) (and (= nullAddr var5) (and (and (and (= var1 (write var3 var4 (O_TSLL (TSLL (next (getTSLL (read var3 var4))) var0)))) (= var6 var2)) (= var5 var4)) (= var7 var0))))) (inv_main26 var1 var6 var5 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main37 var2 var1 var5 var0) (and (and (and (and (= var3 var2) (= var6 var1)) (= var4 var5)) (= var8 var0)) (= var7 (next (getTSLL (read var2 var1))))))) (inv_main50 var3 var6 var7 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main55 var3 var2 var4 var0) (and (and (and (and (= var7 var3) (= var8 var2)) (= var1 var4)) (= var5 var0)) (= var6 (next (getTSLL (read var3 var4))))))) (inv_main50 (write var7 var8 defObj) var8 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main12 var3 var2 var4 var0 var1)) (inv_main11 (write var3 var4 (O_TSLL (TSLL var1 (data (getTSLL (read var3 var4)))))) var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 TSLL) (var8 Addr) (var9 Heap)) (or (not (and (inv_main16 var2 var1 var5 var0) (and (not (= var4 0)) (and (not (= nullAddr var3)) (and (and (and (= var9 (write var2 var5 (O_TSLL (TSLL (next (getTSLL (read var2 var5))) var0)))) (= var8 var1)) (= var3 var5)) (= var6 var0)))))) (inv_main12 (newHeap (alloc var9 (O_TSLL var7))) var8 var3 var6 (newAddr (alloc var9 (O_TSLL var7))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 TSLL) (var4 Int) (var5 Addr)) (or (not (and (inv_main4 var1 var0) (and (not (= var4 0)) (and (= var2 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) 0)))) (= var5 var0))))) (inv_main12 (newHeap (alloc var2 (O_TSLL var3))) var5 var5 1 (newAddr (alloc var2 (O_TSLL var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main11 var3 var2 var5 var1) (and (and (and (and (= var6 var3) (= var8 var2)) (= var4 var5)) (= var7 var1)) (= var0 (next (getTSLL (read var3 var5))))))) (inv_main13 var6 var8 var0 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main45 var2 var1 var7 var0 var6) (and (= var9 0) (and (and (and (and (= var3 var2) (= var5 var1)) (= var8 var7)) (= var4 var0)) (or (and (<= 0 (+ (data (getTSLL (read var2 (next (getTSLL (read var2 var7)))))) (* (- 1) var6))) (= var9 1)) (and (not (<= 0 (+ (data (getTSLL (read var2 (next (getTSLL (read var2 var7)))))) (* (- 1) var6)))) (= var9 0))))))) (inv_main42 var3 var5 var8 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main44 var2 var1 var3 var0 var4) (not (= var4 0)))) (inv_main45 var2 var1 var3 var0 (data (getTSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main44 var2 var1 var3 var0 var4) (= var4 0))) (inv_main40 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main45 var2 var1 var7 var0 var6) (and (not (= var9 0)) (and (and (and (and (= var3 var2) (= var5 var1)) (= var8 var7)) (= var4 var0)) (or (and (<= 0 (+ (data (getTSLL (read var2 (next (getTSLL (read var2 var7)))))) (* (- 1) var6))) (= var9 1)) (and (not (<= 0 (+ (data (getTSLL (read var2 (next (getTSLL (read var2 var7)))))) (* (- 1) var6)))) (= var9 0))))))) (inv_main40 var3 var5 var8 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main13 var3 var2 var4 var0) (and (not (= var7 2)) (and (not (= var7 1)) (and (not (= var6 0)) (and (and (and (= var8 (write var3 var4 (O_TSLL (TSLL var2 (data (getTSLL (read var3 var4))))))) (= var1 var2)) (= var5 var4)) (= var7 var0))))))) (inv_main8 var8 var1 var5 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main16 var2 var1 var4 var0) (and (= var5 0) (and (not (= nullAddr var3)) (and (and (and (= var8 (write var2 var4 (O_TSLL (TSLL (next (getTSLL (read var2 var4))) var0)))) (= var7 var1)) (= var3 var4)) (= var6 var0)))))) (inv_main8 var8 var7 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap)) (or (not (and (inv_main4 var2 var1) (and (= var3 0) (and (= var4 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 0)))) (= var0 var1))))) (inv_main8 var4 var0 var0 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main29 var3 var2 var6 var0) (and (= nullAddr var8) (and (and (and (and (= var1 var3) (= var7 var2)) (= var5 var6)) (= var4 var0)) (= var8 (next (getTSLL (read var3 var2)))))))) (inv_main34 var1 var7 var8 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main8 var2 var1 var3 var0)) (inv_main29 (write var2 var3 (O_TSLL (TSLL (next (getTSLL (read var2 var3))) var0))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main12 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main11 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main13 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main16 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main26 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main8 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main29 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main34 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main32 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main38 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main38 var2 var1 var3 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var3)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int)) (not (and (inv_main44 var2 var1 var3 var0 var4) (and (not (= var4 0)) (not (is-O_TSLL (read var2 var3)))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main45 var2 var1 var4 var0 var3) (not (is-O_TSLL (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main45 var2 var1 var4 var0 var3) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var4)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main42 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main40 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main37 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main50 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main55 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-circular-2.i.smt2 b/heap-theory-benchmarks/array/sll-circular-2.i.smt2 new file mode 100644 index 00000000..40a09e2b --- /dev/null +++ b/heap-theory-benchmarks/array/sll-circular-2.i.smt2 @@ -0,0 +1,107 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main26 (Heap Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Int) Bool) +(declare-fun inv_main37 (Heap Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int) Bool) +(declare-fun inv_main42 (Heap Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main50 (Heap Addr Addr Int) Bool) +(declare-fun inv_main55 (Heap Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main50 var3 var1 var8 var7) (and (not (= var2 0)) (and (and (and (and (= var6 var3) (= var4 var1)) (= var5 var8)) (= var0 var7)) (= var2 (data (getTSLL (read var3 var8)))))))) (inv_main55 var6 var5 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (or (not (inv_main8 var1 var0 var3 var2)) (inv_main29 (write var1 var3 (O_TSLL (TSLL (next (getTSLL (read var1 var3))) var2))) var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL var0 (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main13 var3 var1 var8 var6) (and (= var5 0) (and (and (and (= var7 (write var3 var8 (O_TSLL (TSLL var1 (data (getTSLL (read var3 var8))))))) (= var4 var1)) (= var2 var8)) (= var0 var6))))) (inv_main16 var7 var4 var2 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main13 var3 var1 var7 var5) (and (= var0 1) (and (not (= var8 0)) (and (and (and (= var6 (write var3 var7 (O_TSLL (TSLL var1 (data (getTSLL (read var3 var7))))))) (= var4 var1)) (= var2 var7)) (= var0 var5)))))) (inv_main16 var6 var4 var2 2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main13 var3 var1 var7 var5) (and (= var0 2) (and (not (= var0 1)) (and (not (= var8 0)) (and (and (and (= var6 (write var3 var7 (O_TSLL (TSLL var1 (data (getTSLL (read var3 var7))))))) (= var4 var1)) (= var2 var7)) (= var0 var5))))))) (inv_main16 var6 var4 var2 3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main29 var4 var1 var7 var6) (and (= nullAddr var5) (and (and (and (and (= var2 var4) (= var3 var1)) (= var0 var7)) (= var8 var6)) (= var5 (next (getTSLL (read var4 var1)))))))) (inv_main34 var2 var3 var5 var8)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (inv_main12 var2 var0 var4 var3 var1)) (inv_main11 (write var2 var4 (O_TSLL (TSLL var1 (data (getTSLL (read var2 var4)))))) var0 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr)) (or (not (and (inv_main45 var3 var0 var6 var4 var8) (and (not (= var5 0)) (and (and (and (and (= var1 var3) (= var9 var0)) (= var2 var6)) (= var7 var4)) (or (and (<= 0 (+ (+ var8 (* (- 1) (data (getTSLL (read var3 (next (getTSLL (read var3 var6)))))))) (- 1))) (= var5 1)) (and (not (<= 0 (+ (+ var8 (* (- 1) (data (getTSLL (read var3 (next (getTSLL (read var3 var6)))))))) (- 1)))) (= var5 0))))))) (inv_main40 var1 var9 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main44 var2 var0 var4 var3 var1) (not (= var1 0)))) (inv_main45 var2 var0 var4 var3 (data (getTSLL (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main16 var2 var0 var5 var4) (and (= nullAddr var3) (and (and (and (= var7 (write var2 var5 (O_TSLL (TSLL (next (getTSLL (read var2 var5))) var4)))) (= var6 var0)) (= var3 var5)) (= var1 var4))))) (inv_main26 var7 var6 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main44 var2 var0 var4 var3 var1) (= var1 0))) (inv_main42 var2 var0 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr)) (or (not (and (inv_main45 var3 var0 var6 var4 var8) (and (= var5 0) (and (and (and (and (= var1 var3) (= var9 var0)) (= var2 var6)) (= var7 var4)) (or (and (<= 0 (+ (+ var8 (* (- 1) (data (getTSLL (read var3 (next (getTSLL (read var3 var6)))))))) (- 1))) (= var5 1)) (and (not (<= 0 (+ (+ var8 (* (- 1) (data (getTSLL (read var3 (next (getTSLL (read var3 var6)))))))) (- 1)))) (= var5 0))))))) (inv_main42 var1 var9 var2 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main32 var4 var1 var7 var5) (and (not (= var0 0)) (and (and (and (and (= var2 var4) (= var6 var1)) (= var8 var7)) (= var3 var5)) (= var0 (data (getTSLL (read var4 var7)))))))) (inv_main38 var2 var6 var8 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 TSLL) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (and (inv_main16 var3 var1 var8 var7) (and (not (= var9 0)) (and (not (= nullAddr var2)) (and (and (and (= var4 (write var3 var8 (O_TSLL (TSLL (next (getTSLL (read var3 var8))) var7)))) (= var0 var1)) (= var2 var8)) (= var6 var7)))))) (inv_main12 (newHeap (alloc var4 (O_TSLL var5))) var0 var2 var6 (newAddr (alloc var4 (O_TSLL var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 TSLL) (var4 Heap) (var5 Addr)) (or (not (and (inv_main4 var2 var0) (and (not (= var1 0)) (and (= var4 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) 0)))) (= var5 var0))))) (inv_main12 (newHeap (alloc var4 (O_TSLL var3))) var5 var5 1 (newAddr (alloc var4 (O_TSLL var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main37 var3 var1 var7 var5) (and (and (and (and (= var6 var3) (= var2 var1)) (= var0 var7)) (= var8 var5)) (= var4 (next (getTSLL (read var3 var1))))))) (inv_main50 var6 var2 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main55 var5 var2 var7 var6) (and (and (and (and (= var4 var5) (= var1 var2)) (= var0 var7)) (= var8 var6)) (= var3 (next (getTSLL (read var5 var7))))))) (inv_main50 (write var4 var1 defObj) var1 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (or (not (inv_main38 var1 var0 var3 var2)) (inv_main44 var1 var0 var3 var2 (data (getTSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main13 var3 var1 var7 var5) (and (not (= var0 2)) (and (not (= var0 1)) (and (not (= var8 0)) (and (and (and (= var6 (write var3 var7 (O_TSLL (TSLL var1 (data (getTSLL (read var3 var7))))))) (= var4 var1)) (= var2 var7)) (= var0 var5))))))) (inv_main8 var6 var4 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main16 var3 var1 var7 var6) (and (= var8 0) (and (not (= nullAddr var2)) (and (and (and (= var4 (write var3 var7 (O_TSLL (TSLL (next (getTSLL (read var3 var7))) var6)))) (= var0 var1)) (= var2 var7)) (= var5 var6)))))) (inv_main8 var4 var0 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main4 var2 var0) (and (= var4 0) (and (= var1 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) 0)))) (= var3 var0))))) (inv_main8 var1 var3 var3 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main32 var5 var1 var8 var7) (and (= var6 0) (and (and (and (and (= var4 var5) (= var2 var1)) (= var0 var8)) (= var3 var7)) (= var6 (data (getTSLL (read var5 var8)))))))) (inv_main37 var4 var2 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main40 var4 var1 var8 var6) (and (and (and (and (= var5 var4) (= var0 var1)) (= var7 var8)) (= var3 var6)) (= var2 (next (getTSLL (read var4 var8))))))) (inv_main32 var5 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main29 var4 var1 var7 var6) (and (not (= nullAddr var5)) (and (and (and (and (= var2 var4) (= var3 var1)) (= var0 var7)) (= var8 var6)) (= var5 (next (getTSLL (read var4 var1)))))))) (inv_main32 var2 var3 var5 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main11 var5 var1 var7 var6) (and (and (and (and (= var8 var5) (= var0 var1)) (= var4 var7)) (= var3 var6)) (= var2 (next (getTSLL (read var5 var7))))))) (inv_main13 var8 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main12 var2 var0 var4 var3 var1) (not (is-O_TSLL (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main11 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main13 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main16 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (inv_main26 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main8 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main29 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (inv_main34 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main32 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main38 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main38 var1 var0 var3 var2) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main44 var2 var0 var4 var3 var1) (and (not (= var1 0)) (not (is-O_TSLL (read var2 var4)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (not (and (inv_main45 var1 var0 var3 var2 var4) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (not (and (inv_main45 var1 var0 var3 var2 var4) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (inv_main42 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main40 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main37 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main50 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main55 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-optional-1.i.smt2 b/heap-theory-benchmarks/array/sll-optional-1.i.smt2 new file mode 100644 index 00000000..06782fe2 --- /dev/null +++ b/heap-theory-benchmarks/array/sll-optional-1.i.smt2 @@ -0,0 +1,138 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (opt Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr) Bool) +(declare-fun inv_main13 (Heap Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Addr Addr Int) Bool) +(declare-fun inv_main48 (Heap Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main30 var0 var2 var1)) (inv_main17 (write var0 (opt (getTSLL (read var0 var1))) (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 (opt (getTSLL (read var0 var1)))))) (data (getTSLL (read var0 (opt (getTSLL (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main35 var0 var2 var1)) (inv_main17 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) var1 (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main36 var0 var2 var1)) (inv_main17 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) var1 (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main10 var0 var1) (and (= var2 (write var0 (opt (getTSLL (read var0 var1))) (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 (opt (getTSLL (read var0 var1)))))) (data (getTSLL (read var0 (opt (getTSLL (read var0 var1)))))))))) (= var3 var1)))) (inv_main17 var2 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main15 var0 var2) (and (= var1 (write var0 var2 (O_TSLL (TSLL (next (getTSLL (read var0 var2))) var2 (data (getTSLL (read var0 var2))))))) (= var3 var2)))) (inv_main17 var1 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main16 var0 var3) (and (= var1 (write var0 var3 (O_TSLL (TSLL (next (getTSLL (read var0 var3))) var3 (data (getTSLL (read var0 var3))))))) (= var2 var3)))) (inv_main17 var1 var2 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (and (inv_main23 var0 var5 var1) (and (not (= var4 0)) (and (and (= var3 (write var0 var1 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var1))) (data (getTSLL (read var0 var1))))))) (= var2 var5)) (= var6 var1))))) (inv_main26 var3 var2 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main40 var0 var5 var1) (and (not (= var4 nullAddr)) (and (= var6 nullAddr) (and (and (and (= var3 var0) (= var4 var5)) (= var2 var1)) (= var6 (next (getTSLL (read var0 var1))))))))) (inv_main56 var3 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main17 var0 var3 var1) (and (not (= var3 nullAddr)) (and (= var3 nullAddr) (= var2 0))))) (inv_main56 var0 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main60 var0 var6 var1) (and (and (not (= var3 nullAddr)) (and (and (= var5 (write var0 (opt (getTSLL (read var0 var6))) defObj)) (= var7 var6)) (= var4 var1))) (and (and (= var8 (write var5 var7 defObj)) (= var2 var7)) (= var3 var4))))) (inv_main56 var8 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr)) (or (not (and (inv_main57 var0 var5 var1) (and (and (not (= var9 nullAddr)) (and (not (= var7 2)) (and (and (and (= var2 var0) (= var6 var5)) (= var4 var1)) (= var7 (data (getTSLL (read var0 var5))))))) (and (and (= var3 (write var2 var6 defObj)) (= var8 var6)) (= var9 var4))))) (inv_main56 var3 var9 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main39 var0 var2 var1)) (inv_main44 var0 var2 var1 (data (getTSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main13 var0 var1)) (inv_main16 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 0))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 TSLL) (var5 Addr) (var6 Heap)) (or (not (and (inv_main26 var0 var5 var1) (and (and (= var6 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 2)))) (= var2 var5)) (= var3 var1)))) (inv_main31 (newHeap (alloc var6 (O_TSLL var4))) var2 var3 (newAddr (alloc var6 (O_TSLL var4))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 TSLL)) (or (not (and (inv_main6 var0 var3) (and (= var1 (write var0 var3 (O_TSLL (TSLL (next (getTSLL (read var0 var3))) (opt (getTSLL (read var0 var3))) 2)))) (= var2 var3)))) (inv_main11 (newHeap (alloc var1 (O_TSLL var4))) var2 (newAddr (alloc var1 (O_TSLL var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main11 var0 var2 var1)) (inv_main10 (write var0 var2 (O_TSLL (TSLL (next (getTSLL (read var0 var2))) var1 (data (getTSLL (read var0 var2)))))) var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main21 var0 var2 var1) (and (and (and (= var6 var0) (= var5 var2)) (= var4 var1)) (= var3 (next (getTSLL (read var0 var1))))))) (inv_main23 var6 var5 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main22 var0 var3 var1 var2)) (inv_main21 (write var0 var1 (O_TSLL (TSLL var2 (opt (getTSLL (read var0 var1))) (data (getTSLL (read var0 var1)))))) var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main32 var0 var2 var1)) (inv_main35 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 1))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main12 var0 var1)) (inv_main15 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 1))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main40 var0 var5 var1) (and (not (= var6 nullAddr)) (and (and (and (= var3 var0) (= var4 var5)) (= var2 var1)) (= var6 (next (getTSLL (read var0 var1)))))))) (inv_main39 var3 var4 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main17 var0 var3 var1) (and (not (= var3 nullAddr)) (= var2 0)))) (inv_main39 var0 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Heap) (var11 Int)) (or (not (and (inv_main48 var0 var8 var2 var4) (and (and (= var11 0) (and (= var4 0) (and (and (and (= var9 var0) (= var7 var8)) (= var1 var2)) (= var3 (opt (getTSLL (read var0 var2))))))) (and (and (and (= var10 var9) (= var6 var7)) (= var5 var1)) (or (and (= var3 var1) (= var11 1)) (and (not (= var3 var1)) (= var11 0))))))) (inv_main42 var10 var6 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main33 var0 var2 var1)) (inv_main36 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 0))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main56 var0 var5 var2) (and (and (and (= var3 var0) (= var6 var5)) (= var4 var2)) (= var1 (next (getTSLL (read var0 var2))))))) (inv_main57 var3 var6 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main31 var0 var3 var1 var2)) (inv_main30 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) var2 (data (getTSLL (read var0 var1)))))) var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main46 var0 var3 var1 var2) (= var2 0))) (inv_main48 var0 var3 var1 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main46 var0 var5 var1 var3) (and (not (= var3 0)) (and (and (and (= var2 var0) (= var7 var5)) (= var4 var1)) (= var6 (next (getTSLL (read var0 (opt (getTSLL (read var0 var1))))))))))) (and (or (not (= var6 nullAddr)) (inv_main48 var2 var7 var4 1)) (or (not (not (= var6 nullAddr))) (inv_main48 var2 var7 var4 0)))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main3 var0 var4) (and (not (= var1 0)) (and (= var2 (write var0 var4 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var4))) (data (getTSLL (read var0 var4))))))) (= var3 var4))))) (inv_main6 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main3 var0 var4) (and (not (= var5 0)) (and (= var1 0) (and (= var2 (write var0 var4 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var4))) (data (getTSLL (read var0 var4))))))) (= var3 var4)))))) (inv_main12 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main48 var0 var3 var1 var2) (not (= var2 0)))) (inv_main40 var0 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Heap) (var11 Addr)) (or (not (and (inv_main48 var0 var7 var2 var4) (and (and (not (= var9 0)) (and (= var4 0) (and (and (and (= var8 var0) (= var6 var7)) (= var1 var2)) (= var3 (opt (getTSLL (read var0 var2))))))) (and (and (and (= var10 var8) (= var5 var6)) (= var11 var1)) (or (and (= var3 var1) (= var9 1)) (and (not (= var3 var1)) (= var9 0))))))) (inv_main40 var10 var5 var11)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main3 var0 var5) (and (= var4 0) (and (= var1 0) (and (= var3 (write var0 var5 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var5))) (data (getTSLL (read var0 var5))))))) (= var2 var5)))))) (inv_main13 var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main57 var0 var6 var1) (and (= var3 2) (and (and (and (= var4 var0) (= var5 var6)) (= var2 var1)) (= var3 (data (getTSLL (read var0 var6)))))))) (inv_main60 var4 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main44 var0 var3 var1 var2) (not (= var2 2)))) (inv_main46 var0 var3 var1 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main44 var0 var7 var1 var6) (and (= var6 2) (and (and (and (= var3 var0) (= var2 var7)) (= var4 var1)) (= var5 (opt (getTSLL (read var0 var1)))))))) (and (or (not (not (= var5 var4))) (inv_main46 var3 var2 var4 1)) (or (not (= var5 var4)) (inv_main46 var3 var2 var4 0)))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TSLL) (var3 Addr) (var4 Int)) (or (not (and (inv_main17 var0 var3 var1) (not (= var4 0)))) (inv_main22 (newHeap (alloc var0 (O_TSLL var2))) var3 var1 (newAddr (alloc var0 (O_TSLL var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main23 var0 var5 var1) (and (= var3 0) (and (= var7 0) (and (and (= var4 (write var0 var1 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var1))) (data (getTSLL (read var0 var1))))))) (= var2 var5)) (= var6 var1)))))) (inv_main33 var4 var2 var6)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main23 var0 var5 var2) (and (not (= var1 0)) (and (= var7 0) (and (and (= var4 (write var0 var2 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var2))) (data (getTSLL (read var0 var2))))))) (= var3 var5)) (= var6 var2)))))) (inv_main32 var4 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main6 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main11 var0 var2 var1) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main10 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main10 var0 var1) (not (is-O_TSLL (read var0 (opt (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main12 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main15 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main13 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main16 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main22 var0 var3 var1 var2) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main21 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main23 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main26 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main31 var0 var3 var1 var2) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main30 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main30 var0 var2 var1) (not (is-O_TSLL (read var0 (opt (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main32 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main35 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main33 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main36 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main39 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main44 var0 var3 var1 var2) (and (= var2 2) (not (is-O_TSLL (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main46 var0 var3 var1 var2) (and (not (= var2 0)) (not (is-O_TSLL (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main46 var0 var3 var1 var2) (and (not (= var2 0)) (not (is-O_TSLL (read var0 (opt (getTSLL (read var0 var1))))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main48 var0 var3 var1 var2) (and (= var2 0) (not (is-O_TSLL (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main42 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main40 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main56 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main57 var0 var2 var1) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main60 var0 var2 var1) (not (is-O_TSLL (read var0 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-optional-2.i.smt2 b/heap-theory-benchmarks/array/sll-optional-2.i.smt2 new file mode 100644 index 00000000..8be05cb1 --- /dev/null +++ b/heap-theory-benchmarks/array/sll-optional-2.i.smt2 @@ -0,0 +1,129 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (opt Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr) Bool) +(declare-fun inv_main13 (Heap Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr Int) Bool) +(declare-fun inv_main52 (Heap Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int)) (or (not (and (inv_main44 var4 var7 var1 var11) (and (and (not (= var10 0)) (and (= var11 2) (and (and (and (= var0 var4) (= var3 var7)) (= var8 var1)) (= var9 (opt (getTSLL (read var4 var1))))))) (and (and (and (= var6 var0) (= var2 var3)) (= var5 var8)) (or (and (= var9 var8) (= var10 1)) (and (not (= var9 var8)) (= var10 0))))))) (inv_main40 var6 var2 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 TSLL) (var4 Addr)) (or (not (and (inv_main17 var2 var4 var1) (not (= var0 0)))) (inv_main22 (newHeap (alloc var2 (O_TSLL var3))) var4 var1 (newAddr (alloc var2 (O_TSLL var3))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main12 var0 var1)) (inv_main15 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 1))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main3 var0 var2) (and (not (= var4 0)) (and (= var5 0) (and (= var3 (write var0 var2 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var2))) (data (getTSLL (read var0 var2))))))) (= var1 var2)))))) (inv_main12 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main31 var1 var3 var0 var2)) (inv_main30 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) var2 (data (getTSLL (read var1 var0)))))) var3 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main23 var3 var4 var1) (and (= var6 0) (and (= var2 0) (and (and (= var0 (write var3 var1 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var3 var1))) (data (getTSLL (read var3 var1))))))) (= var5 var4)) (= var7 var1)))))) (inv_main33 var0 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (inv_main53 var1 var3 var0) (and (= var4 2) (and (and (and (= var6 var1) (= var2 var3)) (= var5 var0)) (= var4 (data (getTSLL (read var1 var3)))))))) (inv_main56 var6 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main52 var4 var5 var0) (and (and (and (= var2 var4) (= var3 var5)) (= var1 var0)) (= var6 (next (getTSLL (read var4 var0))))))) (inv_main53 var2 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main40 var3 var6 var1) (and (not (= var5 nullAddr)) (and (and (and (= var4 var3) (= var0 var6)) (= var2 var1)) (= var5 (next (getTSLL (read var3 var1)))))))) (inv_main39 var4 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (or (not (and (inv_main17 var2 var3 var0) (and (not (= var3 nullAddr)) (= var1 0)))) (inv_main39 var2 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (and (inv_main3 var0 var3) (and (= var1 0) (and (= var5 0) (and (= var4 (write var0 var3 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var3))) (data (getTSLL (read var0 var3))))))) (= var2 var3)))))) (inv_main13 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main33 var1 var2 var0)) (inv_main36 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (opt (getTSLL (read var1 var0))) 0))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main22 var2 var3 var1 var0)) (inv_main21 (write var2 var1 (O_TSLL (TSLL var0 (opt (getTSLL (read var2 var1))) (data (getTSLL (read var2 var1)))))) var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main32 var1 var2 var0)) (inv_main35 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (opt (getTSLL (read var1 var0))) 1))) var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main11 var0 var2 var1)) (inv_main10 (write var0 var2 (O_TSLL (TSLL (next (getTSLL (read var0 var2))) var1 (data (getTSLL (read var0 var2)))))) var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main23 var4 var5 var2) (and (not (= var1 0)) (and (= var3 0) (and (and (= var0 (write var4 var2 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var4 var2))) (data (getTSLL (read var4 var2))))))) (= var6 var5)) (= var7 var2)))))) (inv_main32 var0 var6 var7)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main13 var0 var1)) (inv_main16 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 0))) var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main21 var3 var5 var2) (and (and (and (= var1 var3) (= var4 var5)) (= var0 var2)) (= var6 (next (getTSLL (read var3 var2))))))) (inv_main23 var1 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main40 var3 var6 var1) (and (not (= var0 nullAddr)) (and (= var5 nullAddr) (and (and (and (= var4 var3) (= var0 var6)) (= var2 var1)) (= var5 (next (getTSLL (read var3 var1))))))))) (inv_main52 var4 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (or (not (and (inv_main17 var2 var3 var0) (and (not (= var3 nullAddr)) (and (= var3 nullAddr) (= var1 0))))) (inv_main52 var2 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main56 var3 var7 var1) (and (and (not (= var0 nullAddr)) (and (and (= var2 (write var3 (opt (getTSLL (read var3 var7))) defObj)) (= var5 var7)) (= var8 var1))) (and (and (= var6 (write var2 var5 defObj)) (= var4 var5)) (= var0 var8))))) (inv_main52 var6 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Addr)) (or (not (and (inv_main53 var3 var5 var1) (and (and (not (= var9 nullAddr)) (and (not (= var4 2)) (and (and (and (= var8 var3) (= var0 var5)) (= var2 var1)) (= var4 (data (getTSLL (read var3 var5))))))) (and (and (= var7 (write var8 var0 defObj)) (= var6 var0)) (= var9 var2))))) (inv_main52 var7 var9 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main3 var1 var3) (and (not (= var0 0)) (and (= var4 (write var1 var3 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var1 var3))) (data (getTSLL (read var1 var3))))))) (= var2 var3))))) (inv_main6 var4 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main23 var3 var4 var1) (and (not (= var2 0)) (and (and (= var0 (write var3 var1 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var3 var1))) (data (getTSLL (read var3 var1))))))) (= var5 var4)) (= var6 var1))))) (inv_main26 var0 var5 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 TSLL)) (or (not (and (inv_main6 var0 var1) (and (= var2 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 2)))) (= var3 var1)))) (inv_main11 (newHeap (alloc var2 (O_TSLL var4))) var3 (newAddr (alloc var2 (O_TSLL var4))))))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main44 var1 var2 var0 var3) (not (= var3 2)))) (inv_main42 var1 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int)) (or (not (and (inv_main44 var3 var5 var1 var11) (and (and (= var4 0) (and (= var11 2) (and (and (and (= var0 var3) (= var2 var5)) (= var7 var1)) (= var10 (opt (getTSLL (read var3 var1))))))) (and (and (and (= var8 var0) (= var6 var2)) (= var9 var7)) (or (and (= var10 var7) (= var4 1)) (and (not (= var10 var7)) (= var4 0))))))) (inv_main42 var8 var6 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 TSLL) (var6 Addr)) (or (not (and (inv_main26 var1 var4 var0) (and (and (= var2 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (opt (getTSLL (read var1 var0))) 2)))) (= var3 var4)) (= var6 var0)))) (inv_main31 (newHeap (alloc var2 (O_TSLL var5))) var3 var6 (newAddr (alloc var2 (O_TSLL var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main30 var1 var2 var0)) (inv_main17 (write var1 (opt (getTSLL (read var1 var0))) (O_TSLL (TSLL nullAddr (opt (getTSLL (read var1 (opt (getTSLL (read var1 var0)))))) (data (getTSLL (read var1 (opt (getTSLL (read var1 var0))))))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main35 var1 var2 var0)) (inv_main17 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) var0 (data (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main36 var1 var2 var0)) (inv_main17 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) var0 (data (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main10 var0 var1) (and (= var2 (write var0 (opt (getTSLL (read var0 var1))) (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 (opt (getTSLL (read var0 var1)))))) (data (getTSLL (read var0 (opt (getTSLL (read var0 var1)))))))))) (= var3 var1)))) (inv_main17 var2 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main15 var0 var3) (and (= var2 (write var0 var3 (O_TSLL (TSLL (next (getTSLL (read var0 var3))) var3 (data (getTSLL (read var0 var3))))))) (= var1 var3)))) (inv_main17 var2 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main16 var0 var1) (and (= var2 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) var1 (data (getTSLL (read var0 var1))))))) (= var3 var1)))) (inv_main17 var2 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main39 var1 var2 var0)) (inv_main44 var1 var2 var0 (data (getTSLL (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main6 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main11 var0 var2 var1) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main10 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main10 var0 var1) (not (is-O_TSLL (read var0 (opt (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main12 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main15 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main13 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main16 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main22 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main21 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main23 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main26 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main31 var1 var3 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main30 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main30 var1 var2 var0) (not (is-O_TSLL (read var1 (opt (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main32 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main35 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main33 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main36 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main39 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main44 var1 var2 var0 var3) (and (= var3 2) (not (is-O_TSLL (read var1 var0)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main42 var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main40 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main52 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main53 var1 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main56 var1 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-queue-1.i.smt2 b/heap-theory-benchmarks/array/sll-queue-1.i.smt2 new file mode 100644 index 00000000..aebad9a2 --- /dev/null +++ b/heap-theory-benchmarks/array/sll-queue-1.i.smt2 @@ -0,0 +1,167 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main103 (Heap Addr Addr Int) Bool) +(declare-fun inv_main106 (Heap Addr Addr Int) Bool) +(declare-fun inv_main109 (Heap Addr Addr Int) Bool) +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main111 (Heap Addr Addr Int) Bool) +(declare-fun inv_main119 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Addr Int) Bool) +(declare-fun inv_main17 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int) Bool) +(declare-fun inv_main23 (Heap Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Int) Bool) +(declare-fun inv_main37 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int) Bool) +(declare-fun inv_main43 (Heap Addr Addr Int) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int) Bool) +(declare-fun inv_main49 (Heap Addr Addr Int) Bool) +(declare-fun inv_main53 (Heap Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Addr Addr Int) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int) Bool) +(declare-fun inv_main61 (Heap Addr Addr Int) Bool) +(declare-fun inv_main63 (Heap Addr Addr Int) Bool) +(declare-fun inv_main68 (Heap Addr Addr Int) Bool) +(declare-fun inv_main7 (Heap Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Addr Addr Int) Bool) +(declare-fun inv_main75 (Heap Addr Addr Int) Bool) +(declare-fun inv_main77 (Heap Addr Addr Int) Bool) +(declare-fun inv_main80 (Heap Addr Addr Int) Bool) +(declare-fun inv_main82 (Heap Addr Addr Int) Bool) +(declare-fun inv_main86 (Heap Addr Addr Int) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int) Bool) +(declare-fun inv_main92 (Heap Addr Addr Int) Bool) +(declare-fun inv_main94 (Heap Addr Addr Int) Bool) +(declare-fun inv_main99 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main61 var1 var5 var4 var0) (and (= var7 nullAddr) (and (and (and (and (= var3 var1) (= var2 var5)) (= var6 var4)) (= var8 var0)) (= var7 (next (getTSLL (read var1 (next (getTSLL (read var1 var5))))))))))) (inv_main68 var3 var2 var6 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (and (= var3 nullAddr) (and (= var0 1) (and (not (= var3 nullAddr)) (= var4 0)))))) (inv_main45 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap)) (or (not (and (inv_main17 var1 var5 var4 var0) (and (and (and (= var7 (write var1 var4 (O_TSLL (TSLL (next (getTSLL (read var1 var4))) 1)))) (= var2 var5)) (= var3 var4)) (= var6 var0)))) (inv_main16 var7 var2 var3 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main20 var3 var5 var4 var0) (and (and (and (= var1 (write var3 var4 (O_TSLL (TSLL (next (getTSLL (read var3 var4))) 2)))) (= var6 var5)) (= var7 var4)) (= var2 var0)))) (inv_main16 var1 var6 var7 2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main13 var3 var5 var4 var0) (and (not (<= 0 (+ var7 (- 2)))) (and (not (= var7 1)) (and (not (= var7 0)) (and (and (and (= var6 (write var3 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var3 var4))))))) (= var1 var5)) (= var2 var4)) (= var7 var0))))))) (inv_main16 var6 var1 var2 var7)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main23 var3 var5 var4 var2) (and (and (and (= var0 (write var3 var4 (O_TSLL (TSLL (next (getTSLL (read var3 var4))) 3)))) (= var6 var5)) (= var7 var4)) (= var1 var2)))) (inv_main16 var0 var6 var7 3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main80 var3 var5 var4 var0) (and (= var7 nullAddr) (and (and (and (and (= var1 var3) (= var2 var5)) (= var8 var4)) (= var6 var0)) (= var7 (next (getTSLL (read var3 (next (getTSLL (read var3 var5))))))))))) (inv_main88 var1 var2 var8 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main56 var1 var5 var4 var0) (and (not (= var6 nullAddr)) (and (and (and (and (= var7 var1) (= var8 var5)) (= var3 var4)) (= var2 var0)) (= var6 (next (getTSLL (read var1 var5)))))))) (inv_main61 var7 var8 var3 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main53 var1 var3 var2 var0) (and (not (= var3 nullAddr)) (= var0 3)))) (inv_main75 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int)) (or (not (and (inv_main106 var9 var6 var5 var1) (and (and (= var3 0) (and (not (= var1 0)) (and (and (and (and (= var7 var9) (= var2 var6)) (= var4 var5)) (= var13 var1)) (= var11 (data (getTSLL (read var9 var5))))))) (and (and (and (and (= var10 var7) (= var8 var2)) (= var12 var4)) (= var0 var13)) (or (and (<= 0 (+ var11 (- 1))) (= var3 1)) (and (not (<= 0 (+ var11 (- 1)))) (= var3 0))))))) (inv_main111 var10 var8 var12 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main92 var4 var6 var5 var1) (and (not (= var0 3)) (and (and (and (and (= var7 var4) (= var3 var6)) (= var8 var5)) (= var2 var1)) (= var0 (data (getTSLL (read var4 (next (getTSLL (read var4 (next (getTSLL (read var4 (next (getTSLL (read var4 var6))))))))))))))))) (inv_main99 var7 var3 var8 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main40 var1 var3 var2 var0) (not (= var0 2)))) (inv_main53 var1 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main61 var4 var6 var5 var1) (and (not (= var2 nullAddr)) (and (and (and (and (= var8 var4) (= var7 var6)) (= var0 var5)) (= var3 var1)) (= var2 (next (getTSLL (read var4 (next (getTSLL (read var4 var6))))))))))) (inv_main53 var8 var7 var0 var3)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main40 var1 var3 var2 var0) (and (not (= var3 nullAddr)) (= var0 2)))) (inv_main56 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (and (= var3 nullAddr) (= var4 0)))) (inv_main37 var1 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main72 var3 var5 var4 var1) (and (and (and (and (= var8 var3) (= var6 var5)) (= var2 var4)) (= var7 var1)) (= var0 (next (getTSLL (read var3 var5))))))) (inv_main103 var8 var6 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main109 var3 var6 var5 var1) (and (and (and (and (= var7 var3) (= var2 var6)) (= var8 var5)) (= var4 var1)) (= var0 (next (getTSLL (read var3 var5))))))) (inv_main103 var7 var2 var0 var4)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main103 var1 var3 var2 var0) (and (not (= var4 0)) (not (= var2 nullAddr))))) (inv_main106 var1 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main86 var2 var5 var4 var1) (and (not (= var7 nullAddr)) (and (and (and (and (= var3 var2) (= var8 var5)) (= var0 var4)) (= var6 var1)) (= var7 (next (getTSLL (read var2 (next (getTSLL (read var2 (next (getTSLL (read var2 var5)))))))))))))) (inv_main92 var3 var8 var0 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr)) (or (not (and (inv_main13 var2 var4 var3 var0) (and (= var6 0) (and (and (and (= var5 (write var2 var3 (O_TSLL (TSLL nullAddr (data (getTSLL (read var2 var3))))))) (= var7 var4)) (= var1 var3)) (= var6 var0))))) (inv_main17 var5 var7 var1 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main80 var2 var6 var5 var0) (and (not (= var1 nullAddr)) (and (and (and (and (= var8 var2) (= var4 var6)) (= var3 var5)) (= var7 var0)) (= var1 (next (getTSLL (read var2 (next (getTSLL (read var2 var6))))))))))) (inv_main86 var8 var4 var3 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main75 var1 var3 var2 var0) (and (= var7 nullAddr) (and (and (and (and (= var4 var1) (= var8 var3)) (= var6 var2)) (= var5 var0)) (= var7 (next (getTSLL (read var1 var3)))))))) (inv_main82 var4 var8 var6 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main16 var1 var3 var2 var0) (and (= var2 nullAddr) (not (= var3 nullAddr))))) (inv_main32 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main13 var3 var5 var4 var0) (and (<= 0 (+ var7 (- 2))) (and (not (= var7 1)) (and (not (= var7 0)) (and (and (and (= var6 (write var3 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var3 var4))))))) (= var1 var5)) (= var2 var4)) (= var7 var0))))))) (inv_main23 var6 var1 var2 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main13 var3 var5 var4 var0) (and (= var7 1) (and (not (= var7 0)) (and (and (and (= var6 (write var3 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var3 var4))))))) (= var1 var5)) (= var2 var4)) (= var7 var0)))))) (inv_main20 var6 var1 var2 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main53 var1 var3 var2 var0) (and (= var3 nullAddr) (= var0 3)))) (inv_main77 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main53 var1 var3 var2 var0) (not (= var0 3)))) (inv_main72 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main92 var3 var5 var4 var1) (and (= var8 3) (and (and (and (and (= var2 var3) (= var7 var5)) (= var6 var4)) (= var0 var1)) (= var8 (data (getTSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 var5))))))))))))))))) (inv_main72 var2 var7 var6 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main12 var2 var4 var3 var0 var1)) (inv_main11 (write var2 var3 (O_TSLL (TSLL var1 (data (getTSLL (read var2 var3)))))) var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 TSLL) (var5 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (not (= var5 0)))) (inv_main12 (newHeap (alloc var1 (O_TSLL var4))) var3 var2 var0 (newAddr (alloc var1 (O_TSLL var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main86 var3 var5 var4 var2) (and (= var1 nullAddr) (and (and (and (and (= var6 var3) (= var8 var5)) (= var7 var4)) (= var0 var2)) (= var1 (next (getTSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 var5)))))))))))))) (inv_main94 var6 var8 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main11 var4 var7 var6 var1) (and (and (and (and (= var8 var4) (= var0 var7)) (= var2 var6)) (= var5 var1)) (= var3 (next (getTSLL (read var4 var6))))))) (inv_main13 var8 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (and (not (= var3 nullAddr)) (and (= var0 1) (and (not (= var3 nullAddr)) (= var4 0)))))) (inv_main43 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main43 var2 var6 var5 var0) (and (= var4 nullAddr) (and (and (and (and (= var1 var2) (= var3 var6)) (= var8 var5)) (= var7 var0)) (= var4 (next (getTSLL (read var2 var6)))))))) (inv_main49 var1 var3 var8 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main106 var1 var3 var2 var0) (= var0 0))) (inv_main109 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main106 var9 var6 var5 var0) (and (and (not (= var8 0)) (and (not (= var0 0)) (and (and (and (and (= var7 var9) (= var1 var6)) (= var4 var5)) (= var13 var0)) (= var10 (data (getTSLL (read var9 var5))))))) (and (and (and (and (= var11 var7) (= var3 var1)) (= var2 var4)) (= var12 var13)) (or (and (<= 0 (+ var10 (- 1))) (= var8 1)) (and (not (<= 0 (+ var10 (- 1)))) (= var8 0))))))) (inv_main109 var11 var3 var2 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main75 var3 var7 var6 var1) (and (not (= var0 nullAddr)) (and (and (and (and (= var4 var3) (= var8 var7)) (= var2 var6)) (= var5 var1)) (= var0 (next (getTSLL (read var3 var7)))))))) (inv_main80 var4 var8 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (and (not (= var0 1)) (and (not (= var3 nullAddr)) (= var4 0))))) (inv_main40 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main43 var2 var4 var3 var0) (and (not (= var6 nullAddr)) (and (and (and (and (= var1 var2) (= var7 var4)) (= var5 var3)) (= var8 var0)) (= var6 (next (getTSLL (read var2 var4)))))))) (inv_main40 var1 var7 var5 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main16 var1 var3 var2 var0) (= var3 nullAddr))) (inv_main28 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main40 var1 var3 var2 var0) (and (= var3 nullAddr) (= var0 2)))) (inv_main58 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main16 var1 var3 var2 var0) (and (not (= var2 nullAddr)) (not (= var3 nullAddr))))) (inv_main7 var1 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main4 var1 var3) (and (= var2 (write var1 var3 (O_TSLL (TSLL (next (getTSLL (read var1 var3))) 0)))) (= var0 var3)))) (inv_main7 var2 var0 var0 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main103 var1 var3 var2 var0) (and (not (= var3 nullAddr)) (= var2 nullAddr)))) (inv_main119 var1 var3 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main103 var1 var3 var2 var0) (and (not (= var3 nullAddr)) (and (= var4 0) (not (= var2 nullAddr)))))) (inv_main119 var1 var3 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int)) (or (not (and (inv_main119 var7 var9 var8 var1) (and (and (not (= var6 nullAddr)) (and (and (and (and (= var4 var7) (= var0 var9)) (= var5 var8)) (= var3 var1)) (= var2 (next (getTSLL (read var7 var9)))))) (and (and (and (= var11 (write var4 var5 defObj)) (= var6 var2)) (= var10 var5)) (= var12 var3))))) (inv_main119 var11 var6 var6 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main56 var2 var7 var6 var1) (and (= var4 nullAddr) (and (and (and (and (= var8 var2) (= var3 var7)) (= var5 var6)) (= var0 var1)) (= var4 (next (getTSLL (read var2 var7)))))))) (inv_main63 var8 var3 var5 var0)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main12 var2 var4 var3 var0 var1) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main11 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main13 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main17 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main20 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main23 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main28 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main32 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main37 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main45 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main43 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main49 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main58 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main56 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main63 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main61 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main61 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main68 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main77 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main75 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main82 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main80 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main80 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main88 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main86 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main86 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main86 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 (next (getTSLL (read var1 var3))))))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main94 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main92 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main92 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main92 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 (next (getTSLL (read var1 var3))))))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main92 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 (next (getTSLL (read var1 (next (getTSLL (read var1 var3)))))))))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main99 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main72 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main106 var1 var3 var2 var0) (and (not (= var0 0)) (not (is-O_TSLL (read var1 var2)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main111 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main109 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main119 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-queue-2.i.smt2 b/heap-theory-benchmarks/array/sll-queue-2.i.smt2 new file mode 100644 index 00000000..c0f51138 --- /dev/null +++ b/heap-theory-benchmarks/array/sll-queue-2.i.smt2 @@ -0,0 +1,167 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main103 (Heap Addr Addr Int) Bool) +(declare-fun inv_main106 (Heap Addr Addr Int) Bool) +(declare-fun inv_main109 (Heap Addr Addr Int) Bool) +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main111 (Heap Addr Addr Int) Bool) +(declare-fun inv_main119 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Addr Int) Bool) +(declare-fun inv_main17 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int) Bool) +(declare-fun inv_main23 (Heap Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Int) Bool) +(declare-fun inv_main37 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int) Bool) +(declare-fun inv_main43 (Heap Addr Addr Int) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int) Bool) +(declare-fun inv_main49 (Heap Addr Addr Int) Bool) +(declare-fun inv_main53 (Heap Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Addr Addr Int) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int) Bool) +(declare-fun inv_main61 (Heap Addr Addr Int) Bool) +(declare-fun inv_main63 (Heap Addr Addr Int) Bool) +(declare-fun inv_main68 (Heap Addr Addr Int) Bool) +(declare-fun inv_main7 (Heap Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Addr Addr Int) Bool) +(declare-fun inv_main75 (Heap Addr Addr Int) Bool) +(declare-fun inv_main77 (Heap Addr Addr Int) Bool) +(declare-fun inv_main80 (Heap Addr Addr Int) Bool) +(declare-fun inv_main82 (Heap Addr Addr Int) Bool) +(declare-fun inv_main86 (Heap Addr Addr Int) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int) Bool) +(declare-fun inv_main92 (Heap Addr Addr Int) Bool) +(declare-fun inv_main94 (Heap Addr Addr Int) Bool) +(declare-fun inv_main99 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Heap)) (or (not (and (inv_main106 var7 var4 var2 var12) (and (and (= var6 0) (and (not (= var12 0)) (and (and (and (and (= var13 var7) (= var9 var4)) (= var11 var2)) (= var8 var12)) (= var1 (data (getTSLL (read var7 var2))))))) (and (and (and (and (= var0 var13) (= var3 var9)) (= var10 var11)) (= var5 var8)) (or (and (<= 0 (+ var1 (- 1))) (= var6 1)) (and (not (<= 0 (+ var1 (- 1)))) (= var6 0))))))) (inv_main111 var0 var3 var10 var5)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Heap) (var7 Addr)) (or (not (and (inv_main13 var6 var3 var0 var4) (and (= var2 0) (and (and (and (= var5 (write var6 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var6 var0))))))) (= var7 var3)) (= var1 var0)) (= var2 var4))))) (inv_main17 var5 var7 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main53 var3 var1 var0 var2) (not (= var2 3)))) (inv_main72 var3 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main92 var8 var3 var2 var5) (and (not (= var1 3)) (and (and (and (and (= var0 var8) (= var7 var3)) (= var6 var2)) (= var4 var5)) (= var1 (data (getTSLL (read var8 (next (getTSLL (read var8 (next (getTSLL (read var8 (next (getTSLL (read var8 var3))))))))))))))))) (inv_main72 var0 var7 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main40 var3 var1 var0 var2) (and (= var1 nullAddr) (= var2 2)))) (inv_main58 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (or (not (and (inv_main17 var7 var2 var0 var4) (and (and (and (= var3 (write var7 var0 (O_TSLL (TSLL (next (getTSLL (read var7 var0))) 1)))) (= var1 var2)) (= var5 var0)) (= var6 var4)))) (inv_main16 var3 var1 var5 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int)) (or (not (and (inv_main20 var6 var2 var1 var5) (and (and (and (= var3 (write var6 var1 (O_TSLL (TSLL (next (getTSLL (read var6 var1))) 2)))) (= var0 var2)) (= var4 var1)) (= var7 var5)))) (inv_main16 var3 var0 var4 2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Heap)) (or (not (and (inv_main13 var6 var1 var0 var5) (and (not (<= 0 (+ var3 (- 2)))) (and (not (= var3 1)) (and (not (= var3 0)) (and (and (and (= var7 (write var6 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var6 var0))))))) (= var4 var1)) (= var2 var0)) (= var3 var5))))))) (inv_main16 var7 var4 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr)) (or (not (and (inv_main23 var6 var2 var1 var5) (and (and (and (= var0 (write var6 var1 (O_TSLL (TSLL (next (getTSLL (read var6 var1))) 3)))) (= var4 var2)) (= var7 var1)) (= var3 var5)))) (inv_main16 var0 var4 var7 3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main56 var8 var2 var1 var6) (and (= var4 nullAddr) (and (and (and (and (= var0 var8) (= var3 var2)) (= var5 var1)) (= var7 var6)) (= var4 (next (getTSLL (read var8 var2)))))))) (inv_main63 var0 var3 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main103 var3 var1 var0 var2) (and (not (= var1 nullAddr)) (= var0 nullAddr)))) (inv_main119 var3 var1 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main103 var4 var1 var0 var2) (and (not (= var1 nullAddr)) (and (= var3 0) (not (= var0 nullAddr)))))) (inv_main119 var4 var1 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr)) (or (not (and (inv_main119 var10 var4 var2 var7) (and (and (not (= var11 nullAddr)) (and (and (and (and (= var3 var10) (= var5 var4)) (= var0 var2)) (= var1 var7)) (= var12 (next (getTSLL (read var10 var4)))))) (and (and (and (= var8 (write var3 var0 defObj)) (= var11 var12)) (= var6 var0)) (= var9 var1))))) (inv_main119 var8 var11 var11 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Heap)) (or (not (and (inv_main13 var6 var1 var0 var5) (and (= var3 1) (and (not (= var3 0)) (and (and (and (= var7 (write var6 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var6 var0))))))) (= var4 var1)) (= var2 var0)) (= var3 var5)))))) (inv_main20 var7 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main86 var8 var2 var0 var6) (and (not (= var7 nullAddr)) (and (and (and (and (= var4 var8) (= var5 var2)) (= var3 var0)) (= var1 var6)) (= var7 (next (getTSLL (read var8 (next (getTSLL (read var8 (next (getTSLL (read var8 var2)))))))))))))) (inv_main92 var4 var5 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main40 var3 var1 var0 var2) (not (= var2 2)))) (inv_main53 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main61 var6 var1 var0 var5) (and (not (= var7 nullAddr)) (and (and (and (and (= var3 var6) (= var2 var1)) (= var4 var0)) (= var8 var5)) (= var7 (next (getTSLL (read var6 (next (getTSLL (read var6 var1))))))))))) (inv_main53 var3 var2 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main12 var4 var1 var0 var3 var2)) (inv_main11 (write var4 var0 (O_TSLL (TSLL var2 (data (getTSLL (read var4 var0)))))) var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main106 var3 var1 var0 var2) (= var2 0))) (inv_main109 var3 var1 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr)) (or (not (and (inv_main106 var4 var2 var1 var10) (and (and (not (= var3 0)) (and (not (= var10 0)) (and (and (and (and (= var11 var4) (= var7 var2)) (= var8 var1)) (= var5 var10)) (= var0 (data (getTSLL (read var4 var1))))))) (and (and (and (and (= var9 var11) (= var6 var7)) (= var13 var8)) (= var12 var5)) (or (and (<= 0 (+ var0 (- 1))) (= var3 1)) (and (not (<= 0 (+ var0 (- 1)))) (= var3 0))))))) (inv_main109 var9 var6 var13 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main61 var6 var2 var1 var5) (and (= var0 nullAddr) (and (and (and (and (= var8 var6) (= var4 var2)) (= var7 var1)) (= var3 var5)) (= var0 (next (getTSLL (read var6 (next (getTSLL (read var6 var2))))))))))) (inv_main68 var8 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main92 var8 var4 var1 var6) (and (= var5 3) (and (and (and (and (= var3 var8) (= var0 var4)) (= var2 var1)) (= var7 var6)) (= var5 (data (getTSLL (read var8 (next (getTSLL (read var8 (next (getTSLL (read var8 (next (getTSLL (read var8 var4))))))))))))))))) (inv_main99 var3 var0 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Heap)) (or (not (and (inv_main86 var7 var3 var2 var5) (and (= var0 nullAddr) (and (and (and (and (= var8 var7) (= var1 var3)) (= var4 var2)) (= var6 var5)) (= var0 (next (getTSLL (read var7 (next (getTSLL (read var7 (next (getTSLL (read var7 var3)))))))))))))) (inv_main94 var8 var1 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main16 var3 var1 var0 var2) (= var1 nullAddr))) (inv_main28 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main56 var8 var1 var0 var7) (and (not (= var6 nullAddr)) (and (and (and (and (= var4 var8) (= var5 var1)) (= var3 var0)) (= var2 var7)) (= var6 (next (getTSLL (read var8 var1)))))))) (inv_main61 var4 var5 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main103 var4 var2 var0 var3) (and (not (= var1 0)) (not (= var0 nullAddr))))) (inv_main106 var4 var2 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main40 var3 var1 var0 var2) (and (not (= var1 nullAddr)) (= var2 2)))) (inv_main56 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int)) (or (not (and (inv_main43 var7 var2 var0 var6) (and (= var5 nullAddr) (and (and (and (and (= var4 var7) (= var3 var2)) (= var1 var0)) (= var8 var6)) (= var5 (next (getTSLL (read var7 var2)))))))) (inv_main49 var4 var3 var1 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Heap)) (or (not (and (inv_main13 var6 var1 var0 var5) (and (<= 0 (+ var3 (- 2))) (and (not (= var3 1)) (and (not (= var3 0)) (and (and (and (= var7 (write var6 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var6 var0))))))) (= var4 var1)) (= var2 var0)) (= var3 var5))))))) (inv_main23 var7 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main53 var3 var1 var0 var2) (and (not (= var1 nullAddr)) (= var2 3)))) (inv_main75 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main75 var6 var1 var0 var4) (and (= var2 nullAddr) (and (and (and (and (= var5 var6) (= var8 var1)) (= var3 var0)) (= var7 var4)) (= var2 (next (getTSLL (read var6 var1)))))))) (inv_main82 var5 var8 var3 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var1 var0 var2) (and (not (= var1 nullAddr)) (and (= var2 1) (and (not (= var1 nullAddr)) (= var3 0)))))) (inv_main43 var4 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Heap)) (or (not (and (inv_main72 var8 var2 var0 var5) (and (and (and (and (= var7 var8) (= var3 var2)) (= var4 var0)) (= var1 var5)) (= var6 (next (getTSLL (read var8 var2))))))) (inv_main103 var7 var3 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main109 var8 var3 var0 var6) (and (and (and (and (= var5 var8) (= var7 var3)) (= var4 var0)) (= var2 var6)) (= var1 (next (getTSLL (read var8 var0))))))) (inv_main103 var5 var7 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var1 var0 var2) (and (not (= var2 1)) (and (not (= var1 nullAddr)) (= var3 0))))) (inv_main40 var4 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Heap)) (or (not (and (inv_main43 var7 var1 var0 var5) (and (not (= var3 nullAddr)) (and (and (and (and (= var8 var7) (= var6 var1)) (= var4 var0)) (= var2 var5)) (= var3 (next (getTSLL (read var7 var1)))))))) (inv_main40 var8 var6 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 TSLL) (var4 Int) (var5 Heap)) (or (not (and (inv_main7 var5 var2 var0 var4) (not (= var1 0)))) (inv_main12 (newHeap (alloc var5 (O_TSLL var3))) var2 var0 var4 (newAddr (alloc var5 (O_TSLL var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var1 var0 var2) (and (= var1 nullAddr) (and (= var2 1) (and (not (= var1 nullAddr)) (= var3 0)))))) (inv_main45 var4 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main75 var7 var3 var1 var6) (and (not (= var8 nullAddr)) (and (and (and (and (= var5 var7) (= var0 var3)) (= var2 var1)) (= var4 var6)) (= var8 (next (getTSLL (read var7 var3)))))))) (inv_main80 var5 var0 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main16 var3 var1 var0 var2) (and (not (= var0 nullAddr)) (not (= var1 nullAddr))))) (inv_main7 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap)) (or (not (and (inv_main4 var3 var0) (and (= var1 (write var3 var0 (O_TSLL (TSLL (next (getTSLL (read var3 var0))) 0)))) (= var2 var0)))) (inv_main7 var1 var2 var2 0)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main53 var3 var1 var0 var2) (and (= var1 nullAddr) (= var2 3)))) (inv_main77 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var1 var0 var2) (and (= var1 nullAddr) (= var3 0)))) (inv_main37 var4 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main16 var3 var1 var0 var2) (and (= var0 nullAddr) (not (= var1 nullAddr))))) (inv_main32 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (inv_main80 var7 var1 var0 var4) (and (not (= var6 nullAddr)) (and (and (and (and (= var5 var7) (= var2 var1)) (= var3 var0)) (= var8 var4)) (= var6 (next (getTSLL (read var7 (next (getTSLL (read var7 var1))))))))))) (inv_main86 var5 var2 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main11 var7 var2 var0 var6) (and (and (and (and (= var3 var7) (= var5 var2)) (= var4 var0)) (= var1 var6)) (= var8 (next (getTSLL (read var7 var0))))))) (inv_main13 var3 var5 var8 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main80 var7 var1 var0 var5) (and (= var2 nullAddr) (and (and (and (and (= var4 var7) (= var6 var1)) (= var8 var0)) (= var3 var5)) (= var2 (next (getTSLL (read var7 (next (getTSLL (read var7 var1))))))))))) (inv_main88 var4 var6 var8 var3)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main12 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main11 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main13 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main17 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main20 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main23 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main28 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main32 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main37 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main45 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main43 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main49 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main58 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main56 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main63 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main61 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main61 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main68 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main77 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main75 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main82 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main80 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main80 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main88 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main86 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main86 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main86 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 var1))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main94 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main92 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main92 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main92 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 var1))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main92 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 var1)))))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main99 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main72 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main106 var3 var1 var0 var2) (and (not (= var2 0)) (not (is-O_TSLL (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main111 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main109 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main119 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-rb-cnstr_1-2.i.smt2 b/heap-theory-benchmarks/array/sll-rb-cnstr_1-2.i.smt2 new file mode 100644 index 00000000..753eaf25 --- /dev/null +++ b/heap-theory-benchmarks/array/sll-rb-cnstr_1-2.i.smt2 @@ -0,0 +1,121 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (colour Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (inv_main6 var5 var0 var1) (and (not (= nullAddr var4)) (and (= var6 0) (and (and (= var3 var5) (= var4 var0)) (= var2 nullAddr)))))) (inv_main26 var3 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main52 var5 var0 var1) (and (and (and (= var4 var5) (= var2 var0)) (= var6 var1)) (= var3 (next (getTSLL (read var5 var0))))))) (inv_main56 (write var4 var2 defObj) var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main38 var2 var0 var1) (= (next (getTSLL (read var2 var1))) nullAddr))) (inv_main46 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main26 var2 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main33 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main51 var2 var0 var1) (= 0 (colour (getTSLL (read var2 var0)))))) (inv_main52 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main44 var3 var0 var1) (and (not (= nullAddr var6)) (and (and (and (= var5 var3) (= var4 var0)) (= var2 var1)) (= var6 (next (getTSLL (read var3 var1)))))))) (inv_main37 var5 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main26 var2 var0 var1) (and (not (= nullAddr var1)) (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main37 var2 var0 var1)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main38 var2 var0 var1) (not (= (next (getTSLL (read var2 var1))) nullAddr)))) (inv_main44 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main19 var4 var0 var1) (and (and (and (= var5 var4) (= var6 var0)) (= var3 var1)) (= var2 (next (getTSLL (read var4 var1))))))) (inv_main21 var5 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 TSLL) (var6 Addr)) (or (not (and (inv_main16 var4 var0 var1) (and (and (= var2 (write var4 var1 (O_TSLL (TSLL (next (getTSLL (read var4 var1))) 0)))) (= var6 var0)) (= var3 var1)))) (inv_main20 (newHeap (alloc var2 (O_TSLL var5))) var6 var3 (newAddr (alloc var2 (O_TSLL var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main11 var2 var0 var1 var3)) (inv_main10 (write var2 var1 (O_TSLL (TSLL var3 (colour (getTSLL (read var2 var1)))))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main37 var2 var0 var1) (= 0 (colour (getTSLL (read var2 var1)))))) (inv_main39 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main51 var2 var0 var1) (not (= 0 (colour (getTSLL (read var2 var0))))))) (inv_main53 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap)) (or (not (and (inv_main41 var6 var0 var1) (and (and (and (= var5 var6) (= var2 var0)) (= var4 var1)) (= var3 (next (getTSLL (read var6 var1))))))) (inv_main38 var5 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main37 var2 var0 var1) (not (= 0 (colour (getTSLL (read var2 var1))))))) (inv_main38 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main20 var3 var0 var1 var2)) (inv_main19 (write var3 var1 (O_TSLL (TSLL var2 (colour (getTSLL (read var3 var1)))))) var0 var1)))) +(assert (forall ((var0 TSLL) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main6 var3 var1 var2) (not (= var4 0)))) (inv_main11 (newHeap (alloc var3 (O_TSLL var0))) var1 var2 (newAddr (alloc var3 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main39 var4 var1 var2) (and (and (and (= var6 var4) (= var0 var1)) (= var3 var2)) (= var5 (next (getTSLL (read var4 var2))))))) (inv_main41 var6 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap) (var9 Heap)) (or (not (and (inv_main56 var8 var1 var2) (and (and (not (= nullAddr var0)) (and (and (and (= var9 var8) (= var7 var1)) (= var5 var2)) (= var3 (next (getTSLL (read var8 var2)))))) (and (and (= var6 (write var9 var5 defObj)) (= var0 var3)) (= var4 var5))))) (inv_main51 var6 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main53 var6 var0 var2) (and (not (= nullAddr var5)) (and (and (and (and (= var9 var6) (= var3 var0)) (= var7 var2)) (= var1 (next (getTSLL (read var6 var0))))) (and (and (= var4 (write var9 var3 defObj)) (= var8 var3)) (= var5 var1)))))) (inv_main51 var4 var5 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main44 var3 var0 var1) (and (not (= nullAddr var5)) (and (= nullAddr var6) (and (and (and (= var4 var3) (= var5 var0)) (= var2 var1)) (= var6 (next (getTSLL (read var3 var1))))))))) (inv_main51 var4 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main26 var2 var0 var1) (and (not (= nullAddr var0)) (and (= nullAddr var1) (= 1 (colour (getTSLL (read var2 var1)))))))) (inv_main51 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main21 var2 var0 var1)) (inv_main23 (write var2 var1 (O_TSLL (TSLL nullAddr (colour (getTSLL (read var2 var1)))))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (colour (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main10 var5 var0 var1) (and (and (and (= var2 var5) (= var4 var0)) (= var3 var1)) (= var6 (next (getTSLL (read var5 var1))))))) (inv_main12 var2 var4 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main12 var4 var1 var2) (and (= var0 0) (and (and (= var6 (write var4 var2 (O_TSLL (TSLL nullAddr (colour (getTSLL (read var4 var2))))))) (= var5 var1)) (= var3 var2))))) (inv_main16 var6 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (inv_main6 var5 var0 var1) (and (= nullAddr var4) (and (= var6 0) (and (and (= var3 var5) (= var4 var0)) (= var2 nullAddr)))))) (inv_main28 var3 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main12 var4 var0 var1) (and (not (= var3 0)) (and (and (= var6 (write var4 var1 (O_TSLL (TSLL nullAddr (colour (getTSLL (read var4 var1))))))) (= var5 var0)) (= var2 var1))))) (inv_main15 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main15 var2 var0 var1)) (inv_main6 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 1))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main23 var2 var0 var1)) (inv_main6 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 1))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main4 var1 var0) (and (= var2 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) 1)))) (= var3 var0)))) (inv_main6 var2 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main11 var2 var0 var1 var3) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main10 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main12 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main15 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main16 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main20 var3 var0 var1 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main19 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main21 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main23 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main28 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main26 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main33 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main39 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main41 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main38 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main46 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main44 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main51 var2 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main52 var2 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main56 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main53 var2 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-rb-sentinel-1.i.smt2 b/heap-theory-benchmarks/array/sll-rb-sentinel-1.i.smt2 new file mode 100644 index 00000000..b5e4da45 --- /dev/null +++ b/heap-theory-benchmarks/array/sll-rb-sentinel-1.i.smt2 @@ -0,0 +1,127 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (colour Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(declare-fun inv_main62 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main42 var5 var4 var6 var2) (and (= var1 var8) (and (and (and (and (= var7 var5) (= var1 var4)) (= var3 var6)) (= var0 var2)) (= var8 (next (getTSLL (read var5 var2)))))))) (inv_main48 var7 var1 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main29 var2 var1 var3 var0) (not (= 1 (colour (getTSLL (read var2 var0))))))) (inv_main36 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main46 var2 var1 var3 var0) (not (= 1 (colour (getTSLL (read var2 var0))))))) (inv_main52 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main13 var7 var6 var8 var4) (and (and (and (and (= var3 var7) (= var1 var6)) (= var0 var8)) (= var2 var4)) (= var5 (next (getTSLL (read var7 var4))))))) (inv_main15 var3 var1 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main40 var2 var1 var3 var0) (not (= 0 (colour (getTSLL (read var2 var0))))))) (inv_main41 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main46 var2 var1 var3 var0) (= 1 (colour (getTSLL (read var2 var0)))))) (inv_main41 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main41 var4 var3 var8 var2) (and (not (= var5 var0)) (and (and (and (and (= var7 var4) (= var5 var3)) (= var6 var8)) (= var1 var2)) (= var0 (next (getTSLL (read var4 var2)))))))) (inv_main40 var7 var5 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main29 var2 var1 var3 var0) (and (not (= var1 var0)) (= 1 (colour (getTSLL (read var2 var0))))))) (inv_main40 var2 var1 var3 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 TSLL) (var4 Addr)) (or (not (and (inv_main4 var2 var1) (and (= var0 (write var2 var1 (O_TSLL (TSLL nullAddr (colour (getTSLL (read var2 var1))))))) (= var4 var1)))) (inv_main6 (newHeap (alloc var0 (O_TSLL var3))) var4 (newAddr (alloc var0 (O_TSLL var3))))))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main6 var1 var0 var2)) (inv_main7 (write var1 var2 (O_TSLL (TSLL var0 (colour (getTSLL (read var1 var2)))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main18 var2 var1 var3 var0)) (inv_main9 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) 1))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main26 var2 var1 var3 var0)) (inv_main9 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) 1))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr)) (or (not (and (inv_main7 var3 var2 var5) (and (and (= var4 (write var3 var5 (O_TSLL (TSLL (next (getTSLL (read var3 var5))) 1)))) (= var0 var2)) (= var1 var5)))) (inv_main9 var4 var0 var1 var1)))) +(assert (forall ((var0 Addr) (var1 TSLL) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main9 var3 var2 var5 var0) (not (= var4 0)))) (inv_main14 (newHeap (alloc var3 (O_TSLL var1))) var2 var5 var0 (newAddr (alloc var3 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main57 var2 var1 var3 var0) (not (= 0 (colour (getTSLL (read var2 var3))))))) (inv_main59 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main14 var3 var2 var4 var0 var1)) (inv_main13 (write var3 var0 (O_TSLL (TSLL var1 (colour (getTSLL (read var3 var0)))))) var2 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main22 var5 var4 var8 var2) (and (and (and (and (= var6 var5) (= var0 var4)) (= var1 var8)) (= var7 var2)) (= var3 (next (getTSLL (read var5 var2))))))) (inv_main24 var6 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main9 var2 var1 var4 var0) (and (= var1 var4) (= var3 0)))) (inv_main31 var2 var1 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main9 var2 var1 var4 var0) (and (not (= var1 var4)) (= var3 0)))) (inv_main29 var2 var1 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main24 var2 var1 var3 var0)) (inv_main26 (write var2 var0 (O_TSLL (TSLL var1 (colour (getTSLL (read var2 var0)))))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main62 var7 var6 var8 var3) (and (and (not (= var10 var12)) (and (and (and (and (= var5 var7) (= var1 var6)) (= var0 var8)) (= var9 var3)) (= var4 (next (getTSLL (read var7 var3)))))) (and (and (and (= var11 (write var5 var9 defObj)) (= var10 var1)) (= var12 var4)) (= var2 var9))))) (inv_main57 var11 var10 var12 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main59 var8 var7 var11 var4) (and (not (= var10 var6)) (and (and (and (and (and (= var1 var8) (= var5 var7)) (= var9 var11)) (= var0 var4)) (= var12 (next (getTSLL (read var8 var11))))) (and (and (and (= var3 (write var1 var9 defObj)) (= var10 var5)) (= var2 var9)) (= var6 var12)))))) (inv_main57 var3 var10 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main41 var4 var3 var8 var2) (and (not (= var5 var6)) (and (= var5 var0) (and (and (and (and (= var7 var4) (= var5 var3)) (= var6 var8)) (= var1 var2)) (= var0 (next (getTSLL (read var4 var2))))))))) (inv_main57 var7 var5 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main29 var2 var1 var3 var0) (and (not (= var1 var3)) (and (= var1 var0) (= 1 (colour (getTSLL (read var2 var0)))))))) (inv_main57 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main15 var3 var2 var6 var0) (and (= var1 0) (and (and (and (= var4 (write var3 var0 (O_TSLL (TSLL var2 (colour (getTSLL (read var3 var0))))))) (= var8 var2)) (= var7 var6)) (= var5 var0))))) (inv_main19 var4 var8 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main57 var2 var1 var3 var0) (= 0 (colour (getTSLL (read var2 var3)))))) (inv_main58 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main42 var5 var4 var6 var2) (and (not (= var1 var8)) (and (and (and (and (= var7 var5) (= var1 var4)) (= var3 var6)) (= var0 var2)) (= var8 (next (getTSLL (read var5 var2)))))))) (inv_main46 var7 var1 var3 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main15 var3 var2 var6 var1) (and (not (= var0 0)) (and (and (and (= var4 (write var3 var1 (O_TSLL (TSLL var2 (colour (getTSLL (read var3 var1))))))) (= var8 var2)) (= var7 var6)) (= var5 var1))))) (inv_main18 var4 var8 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main40 var2 var1 var3 var0) (= 0 (colour (getTSLL (read var2 var0)))))) (inv_main42 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main58 var4 var3 var7 var0) (and (and (and (and (= var1 var4) (= var6 var3)) (= var5 var7)) (= var2 var0)) (= var8 (next (getTSLL (read var4 var7))))))) (inv_main62 (write var1 var5 defObj) var6 var5 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TSLL) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main19 var4 var3 var7 var1) (and (and (and (= var0 (write var4 var1 (O_TSLL (TSLL (next (getTSLL (read var4 var1))) 0)))) (= var6 var3)) (= var8 var7)) (= var5 var1)))) (inv_main23 (newHeap (alloc var0 (O_TSLL var2))) var6 var8 var5 (newAddr (alloc var0 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) 1))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main23 var2 var1 var3 var0 var4)) (inv_main22 (write var2 var0 (O_TSLL (TSLL var4 (colour (getTSLL (read var2 var0)))))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main6 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main7 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main14 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main13 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main18 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main19 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main23 var2 var1 var3 var0 var4) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main22 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main24 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main31 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main29 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main36 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main40 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main42 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main48 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main46 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main52 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main41 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main57 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main58 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main62 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main59 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-rb-sentinel-2.i.smt2 b/heap-theory-benchmarks/array/sll-rb-sentinel-2.i.smt2 new file mode 100644 index 00000000..a80b8ef6 --- /dev/null +++ b/heap-theory-benchmarks/array/sll-rb-sentinel-2.i.smt2 @@ -0,0 +1,127 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (colour Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(declare-fun inv_main62 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main40 var2 var0 var3 var1) (= 0 (colour (getTSLL (read var2 var1)))))) (inv_main42 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main29 var2 var0 var3 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main36 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) 1))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main57 var2 var0 var3 var1) (= 0 (colour (getTSLL (read var2 var3)))))) (inv_main58 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main58 var5 var0 var7 var2) (and (and (and (and (= var8 var5) (= var6 var0)) (= var4 var7)) (= var3 var2)) (= var1 (next (getTSLL (read var5 var7))))))) (inv_main62 (write var8 var4 defObj) var6 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main15 var5 var1 var7 var2) (and (not (= var4 0)) (and (and (and (= var8 (write var5 var2 (O_TSLL (TSLL var1 (colour (getTSLL (read var5 var2))))))) (= var3 var1)) (= var6 var7)) (= var0 var2))))) (inv_main18 var8 var3 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main6 var1 var0 var2)) (inv_main7 (write var1 var2 (O_TSLL (TSLL var0 (colour (getTSLL (read var1 var2)))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (inv_main15 var4 var1 var6 var2) (and (= var8 0) (and (and (and (= var7 (write var4 var2 (O_TSLL (TSLL var1 (colour (getTSLL (read var4 var2))))))) (= var3 var1)) (= var5 var6)) (= var0 var2))))) (inv_main19 var7 var3 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main42 var3 var1 var6 var2) (and (= var0 var5) (and (and (and (and (= var8 var3) (= var0 var1)) (= var7 var6)) (= var4 var2)) (= var5 (next (getTSLL (read var3 var2)))))))) (inv_main48 var8 var0 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main24 var2 var0 var3 var1)) (inv_main26 (write var2 var1 (O_TSLL (TSLL var0 (colour (getTSLL (read var2 var1)))))) var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main57 var2 var0 var3 var1) (not (= 0 (colour (getTSLL (read var2 var3))))))) (inv_main59 var2 var0 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main9 var3 var1 var4 var2) (and (= var1 var4) (= var0 0)))) (inv_main31 var3 var1 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main46 var2 var0 var3 var1) (= 1 (colour (getTSLL (read var2 var1)))))) (inv_main52 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 TSLL) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main19 var3 var0 var7 var1) (and (and (and (= var8 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) 0)))) (= var6 var0)) (= var5 var7)) (= var2 var1)))) (inv_main23 (newHeap (alloc var8 (O_TSLL var4))) var6 var5 var2 (newAddr (alloc var8 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main22 var3 var0 var6 var1) (and (and (and (and (= var4 var3) (= var7 var0)) (= var8 var6)) (= var5 var1)) (= var2 (next (getTSLL (read var3 var1))))))) (inv_main24 var4 var7 var8 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main40 var2 var0 var3 var1) (not (= 0 (colour (getTSLL (read var2 var1))))))) (inv_main41 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main46 var2 var0 var3 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main41 var2 var0 var3 var1)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main23 var3 var0 var4 var1 var2)) (inv_main22 (write var3 var1 (O_TSLL (TSLL var2 (colour (getTSLL (read var3 var1)))))) var0 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 TSLL) (var5 Int)) (or (not (and (inv_main9 var2 var0 var3 var1) (not (= var5 0)))) (inv_main14 (newHeap (alloc var2 (O_TSLL var4))) var0 var3 var1 (newAddr (alloc var2 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 TSLL) (var3 Heap) (var4 Addr)) (or (not (and (inv_main4 var1 var0) (and (= var3 (write var1 var0 (O_TSLL (TSLL nullAddr (colour (getTSLL (read var1 var0))))))) (= var4 var0)))) (inv_main6 (newHeap (alloc var3 (O_TSLL var2))) var4 (newAddr (alloc var3 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main14 var2 var0 var3 var1 var4)) (inv_main13 (write var2 var1 (O_TSLL (TSLL var4 (colour (getTSLL (read var2 var1)))))) var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main42 var3 var1 var6 var2) (and (not (= var0 var5)) (and (and (and (and (= var8 var3) (= var0 var1)) (= var7 var6)) (= var4 var2)) (= var5 (next (getTSLL (read var3 var2)))))))) (inv_main46 var8 var0 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main13 var5 var1 var7 var2) (and (and (and (and (= var6 var5) (= var8 var1)) (= var3 var7)) (= var0 var2)) (= var4 (next (getTSLL (read var5 var2))))))) (inv_main15 var6 var8 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main9 var3 var1 var4 var2) (and (not (= var1 var4)) (= var0 0)))) (inv_main29 var3 var1 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main62 var7 var1 var10 var2) (and (and (not (= var12 var4)) (and (and (and (and (= var11 var7) (= var0 var1)) (= var9 var10)) (= var6 var2)) (= var3 (next (getTSLL (read var7 var2)))))) (and (and (and (= var5 (write var11 var6 defObj)) (= var12 var0)) (= var4 var3)) (= var8 var6))))) (inv_main57 var5 var12 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main59 var5 var0 var7 var3) (and (not (= var8 var12)) (and (and (and (and (and (= var11 var5) (= var2 var0)) (= var1 var7)) (= var6 var3)) (= var10 (next (getTSLL (read var5 var7))))) (and (and (and (= var4 (write var11 var1 defObj)) (= var8 var2)) (= var9 var1)) (= var12 var10)))))) (inv_main57 var4 var8 var12 var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main41 var5 var0 var6 var2) (and (not (= var3 var4)) (and (= var3 var8) (and (and (and (and (= var1 var5) (= var3 var0)) (= var4 var6)) (= var7 var2)) (= var8 (next (getTSLL (read var5 var2))))))))) (inv_main57 var1 var3 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main29 var2 var0 var3 var1) (and (not (= var0 var3)) (and (= var0 var1) (= 1 (colour (getTSLL (read var2 var1)))))))) (inv_main57 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main18 var2 var0 var3 var1)) (inv_main9 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 1))) var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main26 var2 var0 var3 var1)) (inv_main9 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 1))) var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main7 var2 var0 var3) (and (and (= var1 (write var2 var3 (O_TSLL (TSLL (next (getTSLL (read var2 var3))) 1)))) (= var4 var0)) (= var5 var3)))) (inv_main9 var1 var4 var5 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main41 var5 var0 var6 var2) (and (not (= var3 var8)) (and (and (and (and (= var1 var5) (= var3 var0)) (= var4 var6)) (= var7 var2)) (= var8 (next (getTSLL (read var5 var2)))))))) (inv_main40 var1 var3 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main29 var2 var0 var3 var1) (and (not (= var0 var1)) (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main40 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main6 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main7 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main14 var2 var0 var3 var1 var4) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main13 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main18 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main19 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main23 var3 var0 var4 var1 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main22 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main24 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main31 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main29 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main36 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main40 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main42 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main48 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main46 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main52 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main41 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main57 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main58 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main62 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main59 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-reverse_simple.i.smt2 b/heap-theory-benchmarks/array/sll-reverse_simple.i.smt2 new file mode 100644 index 00000000..aabf0be5 --- /dev/null +++ b/heap-theory-benchmarks/array/sll-reverse_simple.i.smt2 @@ -0,0 +1,136 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main61 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main65 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main73 (Heap Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main64 var5 var10 var9 var4 var11 var7) (and (and (and (and (and (and (= var8 var5) (= var1 var10)) (= var0 var9)) (= var12 var4)) (= var2 var11)) (= var6 var7)) (= var3 (next (getTSLL (read var5 var9))))))) (inv_main50 var8 var1 var3 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main46 var5 var7 var6 var4 var3) (and (= var2 nullAddr) (and (and (and (and (= var9 (write var5 var6 (O_TSLL (TSLL var4 (data (getTSLL (read var5 var6))))))) (= var1 var7)) (= var0 var6)) (= var8 var4)) (= var2 var3))))) (inv_main50 var9 var0 var0 var0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main41 var1 var7 var6) (and (and (= var9 nullAddr) (and (and (and (= var0 var5) (= var9 var2)) (= var3 var8)) (= var4 nullAddr))) (and (and (= var5 (write var1 var6 (O_TSLL (TSLL (next (getTSLL (read var1 var6))) 2)))) (= var2 var7)) (= var8 var6))))) (inv_main50 var0 var4 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main35 var5 var7 var6) (and (and (= var9 nullAddr) (and (and (and (= var0 var8) (= var9 var4)) (= var3 var2)) (= var1 nullAddr))) (and (and (= var8 (write var5 (next (getTSLL (read var5 var6))) (O_TSLL (TSLL (next (getTSLL (read var5 (next (getTSLL (read var5 var6)))))) 2)))) (= var4 var7)) (= var2 var6))))) (inv_main50 var0 var1 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main15 var0 var4 var3) (and (= var5 nullAddr) (and (not (= var6 0)) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var4)) (= var5 var3)) (= var7 (next (getTSLL (read var0 var3)))))))))) (inv_main23 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main15 var0 var4 var3) (and (not (= var5 nullAddr)) (and (not (= var6 0)) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var4)) (= var5 var3)) (= var7 (next (getTSLL (read var0 var3)))))))))) (inv_main21 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int)) (or (not (and (inv_main65 var3 var8 var7 var2 var9 var5) (and (and (and (and (and (and (= var0 var3) (= var4 var8)) (= var6 var7)) (= var11 var2)) (= var10 var9)) (= var12 var5)) (= var1 (next (getTSLL (read var3 var7))))))) (inv_main64 var0 var4 var1 var11 var10 var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main59 var3 var8 var7 var2 var11 var4) (and (not (= var9 2)) (and (and (and (and (and (and (= var1 var3) (= var6 var8)) (= var12 var7)) (= var0 var2)) (= var10 var11)) (= var5 var4)) (= var9 (data (getTSLL (read var3 var7)))))))) (inv_main64 var1 var6 var12 var0 var10 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main27 var0 var2 var1)) (inv_main32 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) 1))) var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main15 var1 var3 var2) (and (= var4 nullAddr) (and (= var0 nullAddr) (and (and (and (= var5 var1) (= var6 var3)) (= var4 var2)) (= var0 (next (getTSLL (read var1 var2))))))))) (inv_main29 var5 var6 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main15 var0 var4 var3) (and (= var5 nullAddr) (and (= var6 0) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var4)) (= var5 var3)) (= var7 (next (getTSLL (read var0 var3)))))))))) (inv_main29 var2 var1 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main56 var5 var8 var7 var4 var10 var6) (and (or (not (= var2 2)) (= var1 1)) (and (and (and (and (and (and (= var11 var5) (= var9 var8)) (= var12 var7)) (= var3 var4)) (= var2 var10)) (= var0 var6)) (= var1 (data (getTSLL (read var5 (next (getTSLL (read var5 var7))))))))))) (inv_main59 var11 var9 var12 var3 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main52 var1 var3 var2 var0) (and (and (not (= var5 2)) (not (= var5 2))) (and (and (and (and (= var7 var1) (= var4 var3)) (= var8 var2)) (= var6 var0)) (= var5 (data (getTSLL (read var1 var2)))))))) (inv_main59 var7 var4 var8 var6 var5 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int)) (or (not (and (inv_main59 var3 var7 var6 var2 var8 var4) (and (= var12 2) (and (and (and (and (and (and (= var11 var3) (= var9 var7)) (= var0 var6)) (= var1 var2)) (= var5 var8)) (= var10 var4)) (= var12 (data (getTSLL (read var3 var6)))))))) (inv_main65 var11 var9 var0 var1 var5 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main52 var3 var6 var5 var2) (and (= var1 2) (and (and (and (and (= var4 var3) (= var8 var6)) (= var0 var5)) (= var7 var2)) (= var1 (data (getTSLL (read var3 var5)))))))) (inv_main56 var4 var8 var0 var7 var1 0)))) +(assert (forall ((var0 TSLL) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main14 var1 var5 var4) (and (not (= var2 0)) (and (and (= var7 (write var1 var4 (O_TSLL (TSLL (next (getTSLL (read var1 var4))) 0)))) (= var3 var5)) (= var6 var4))))) (inv_main11 (newHeap (alloc var7 (O_TSLL var0))) var3 var6 (newAddr (alloc var7 (O_TSLL var0))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 TSLL) (var5 Heap)) (or (not (and (inv_main4 var1 var2) (and (not (= var0 0)) (and (= var5 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) 0)))) (= var3 var2))))) (inv_main11 (newHeap (alloc var5 (O_TSLL var4))) var3 var3 (newAddr (alloc var5 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main50 var1 var3 var2 var0) (and (not (= var3 nullAddr)) (= var2 nullAddr)))) (inv_main73 var1 var3 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main73 var3 var8 var7 var2) (and (and (not (= var1 nullAddr)) (and (and (and (and (= var4 var3) (= var6 var8)) (= var10 var7)) (= var5 var2)) (= var0 (next (getTSLL (read var3 var7)))))) (and (and (and (= var11 (write var4 var6 defObj)) (= var12 var6)) (= var1 var0)) (= var9 var5))))) (inv_main73 var11 var1 var1 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main45 var1 var3 var2 var0)) (inv_main46 var1 var3 var2 var0 (next (getTSLL (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main10 var0 var4 var3) (and (and (and (= var6 var0) (= var5 var4)) (= var2 var3)) (= var1 (next (getTSLL (read var0 var3))))))) (inv_main12 var6 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main46 var5 var7 var6 var4 var3) (and (not (= var2 nullAddr)) (and (and (and (and (= var9 (write var5 var6 (O_TSLL (TSLL var4 (data (getTSLL (read var5 var6))))))) (= var1 var7)) (= var0 var6)) (= var8 var4)) (= var2 var3))))) (inv_main45 var9 var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main41 var5 var7 var6) (and (and (not (= var3 nullAddr)) (and (and (and (= var8 var4) (= var3 var2)) (= var0 var9)) (= var1 nullAddr))) (and (and (= var4 (write var5 var6 (O_TSLL (TSLL (next (getTSLL (read var5 var6))) 2)))) (= var2 var7)) (= var9 var6))))) (inv_main45 var8 var3 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Addr)) (or (not (and (inv_main35 var1 var4 var3) (and (and (not (= var5 nullAddr)) (and (and (and (= var8 var7) (= var5 var2)) (= var6 var0)) (= var9 nullAddr))) (and (and (= var7 (write var1 (next (getTSLL (read var1 var3))) (O_TSLL (TSLL (next (getTSLL (read var1 (next (getTSLL (read var1 var3)))))) 2)))) (= var2 var4)) (= var0 var3))))) (inv_main45 var8 var5 var5 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main39 var0 var2 var1)) (inv_main41 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main37 var2 var4 var3) (and (and (and (= var0 var2) (= var1 var4)) (= var5 var3)) (= var6 (next (getTSLL (read var2 var3))))))) (inv_main39 var0 var1 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 TSLL) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main32 var0 var3 var2) (and (= var1 nullAddr) (and (and (and (= var6 var0) (= var5 var3)) (= var7 var2)) (= var1 (next (getTSLL (read var0 var2)))))))) (inv_main38 (newHeap (alloc var6 (O_TSLL var4))) var5 var7 (newAddr (alloc var6 (O_TSLL var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main12 var0 var2 var1)) (inv_main14 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main11 var1 var3 var2 var0)) (inv_main10 (write var1 var2 (O_TSLL (TSLL var0 (data (getTSLL (read var1 var2)))))) var3 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main56 var5 var8 var7 var4 var10 var6) (and (and (= var2 2) (not (= var1 1))) (and (and (and (and (and (and (= var11 var5) (= var9 var8)) (= var12 var7)) (= var3 var4)) (= var2 var10)) (= var0 var6)) (= var1 (data (getTSLL (read var5 (next (getTSLL (read var5 var7))))))))))) (inv_main61 var11 var9 var12 var3 var2 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main52 var2 var6 var5 var1) (and (and (= var0 2) (not (= var0 2))) (and (and (and (and (= var3 var2) (= var8 var6)) (= var7 var5)) (= var4 var1)) (= var0 (data (getTSLL (read var2 var5)))))))) (inv_main61 var3 var8 var7 var4 var0 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main32 var2 var5 var4) (and (not (= var0 nullAddr)) (and (and (and (= var6 var2) (= var1 var5)) (= var3 var4)) (= var0 (next (getTSLL (read var2 var4)))))))) (inv_main35 var6 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main21 var2 var4 var3) (and (and (and (= var1 var2) (= var0 var4)) (= var6 var3)) (= var5 (next (getTSLL (read var2 var3))))))) (inv_main15 var1 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main14 var2 var5 var4) (and (= var3 0) (and (and (= var6 (write var2 var4 (O_TSLL (TSLL (next (getTSLL (read var2 var4))) 0)))) (= var1 var5)) (= var0 var4))))) (inv_main15 var6 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main4 var1 var2) (and (= var4 0) (and (= var3 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) 0)))) (= var0 var2))))) (inv_main15 var3 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main15 var1 var3 var2) (and (not (= var4 nullAddr)) (and (= var0 nullAddr) (and (and (and (= var5 var1) (= var6 var3)) (= var4 var2)) (= var0 (next (getTSLL (read var1 var2))))))))) (inv_main27 var5 var6 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main15 var0 var4 var3) (and (not (= var5 nullAddr)) (and (= var6 0) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var4)) (= var5 var3)) (= var7 (next (getTSLL (read var0 var3)))))))))) (inv_main27 var2 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main50 var1 var3 var2 var0) (not (= var2 nullAddr)))) (inv_main52 var1 var3 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main38 var0 var2 var1 var3)) (inv_main37 (write var0 var1 (O_TSLL (TSLL var3 (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main11 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main10 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main12 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main14 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main15 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main23 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main21 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main29 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main27 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main32 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main38 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main37 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main39 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main41 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main35 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main35 var0 var2 var1) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main45 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main46 var2 var4 var3 var1 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main52 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main56 var1 var4 var3 var0 var5 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main56 var1 var4 var3 var0 var5 var2) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (inv_main61 var1 var4 var3 var0 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main59 var1 var4 var3 var0 var5 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main65 var1 var4 var3 var0 var5 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main64 var1 var4 var3 var0 var5 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main73 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-simple-white-blue-1.i.smt2 b/heap-theory-benchmarks/array/sll-simple-white-blue-1.i.smt2 new file mode 100644 index 00000000..7459868a --- /dev/null +++ b/heap-theory-benchmarks/array/sll-simple-white-blue-1.i.smt2 @@ -0,0 +1,118 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main43 var0 var5 var4) (and (= var6 1) (and (and (and (= var1 var0) (= var2 var5)) (= var3 var4)) (= var6 (data (getTSLL (read var0 var4)))))))) (inv_main49 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main35 var0 var4 var2) (and (not (= var3 1)) (and (and (and (= var1 var0) (= var6 var4)) (= var5 var2)) (= var3 (data (getTSLL (read var0 var2)))))))) (inv_main37 var1 var6 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main53 var0 var2 var1) (not (= var1 nullAddr)))) (inv_main56 var0 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main43 var0 var4 var2) (and (not (= var1 1)) (and (and (and (= var5 var0) (= var6 var4)) (= var3 var2)) (= var1 (data (getTSLL (read var0 var2)))))))) (inv_main44 var5 var6 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 TSLL) (var4 Int)) (or (not (and (inv_main6 var0 var2 var1) (not (= var4 0)))) (inv_main11 (newHeap (alloc var0 (O_TSLL var3))) var2 var1 (newAddr (alloc var0 (O_TSLL var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main26 var1 var6 var5) (and (and (and (= var3 var1) (= var0 var6)) (= var2 var5)) (= var4 (next (getTSLL (read var1 var5))))))) (inv_main23 var3 var0 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr)) (or (not (and (inv_main6 var0 var4 var2) (and (= var3 0) (= var1 0)))) (inv_main23 var0 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main35 var1 var5 var4) (and (= var6 1) (and (and (and (= var0 var1) (= var2 var5)) (= var3 var4)) (= var6 (data (getTSLL (read var1 var4)))))))) (inv_main36 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main10 var1 var6 var4) (and (and (and (= var2 var1) (= var3 var6)) (= var0 var4)) (= var5 (next (getTSLL (read var1 var4))))))) (inv_main12 var2 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main14 var0 var2 var1)) (inv_main6 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main4 var0 var3) (and (= var1 (write var0 var3 (O_TSLL (TSLL (next (getTSLL (read var0 var3))) 0)))) (= var2 var3)))) (inv_main6 var1 var2 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main19 var0 var2 var1)) (inv_main21 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) 1))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 TSLL) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (and (inv_main6 var0 var6 var3) (and (and (and (and (= var4 (newHeap (alloc var0 (O_TSLL var5)))) (= var2 var6)) (= var9 var3)) (= var7 (newAddr (alloc var0 (O_TSLL var5))))) (and (not (= var8 0)) (= var1 0))))) (inv_main19 var4 var2 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main37 var0 var4 var2) (and (and (and (= var5 var0) (= var1 var4)) (= var6 var2)) (= var3 (next (getTSLL (read var0 var2))))))) (inv_main35 var5 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main34 var0 var5 var2 var6) (and (and (= var3 (write var0 var2 (O_TSLL (TSLL var6 (data (getTSLL (read var0 var2))))))) (= var4 var5)) (= var1 var2)))) (inv_main35 var3 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main21 var1 var5 var3) (and (and (= var0 (write var1 var3 (O_TSLL (TSLL var5 (data (getTSLL (read var1 var3))))))) (= var4 var5)) (= var2 var3)))) (inv_main35 var0 var2 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 TSLL) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main24 var0 var6 var4) (and (and (and (= var1 var0) (= var5 var6)) (= var2 var4)) (= var7 (next (getTSLL (read var0 var4))))))) (inv_main33 (newHeap (alloc var1 (O_TSLL var3))) var5 var2 var7 (newAddr (alloc var1 (O_TSLL var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main53 var0 var2 var1) (= var1 nullAddr))) (inv_main0 var0 0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main36 var0 var6 var2) (and (not (= var3 nullAddr)) (and (and (and (= var1 var0) (= var5 var6)) (= var4 var2)) (= var3 (next (getTSLL (read var0 var2)))))))) (inv_main43 var1 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main44 var1 var5 var4) (and (not (= var6 nullAddr)) (and (and (and (= var2 var1) (= var3 var5)) (= var0 var4)) (= var6 (next (getTSLL (read var1 var4)))))))) (inv_main43 var2 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main23 var0 var3 var1) (and (= var2 0) (not (= (next (getTSLL (read var0 var1))) nullAddr))))) (inv_main26 var0 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main23 var0 var2 var1) (= (next (getTSLL (read var0 var1))) nullAddr))) (inv_main24 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main23 var0 var2 var1) (and (not (= var3 0)) (not (= (next (getTSLL (read var0 var1))) nullAddr))))) (inv_main24 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main12 var0 var2 var1)) (inv_main14 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) 0))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main56 var0 var5 var3) (and (and (and (= var1 var0) (= var2 var5)) (= var6 var3)) (= var4 (next (getTSLL (read var0 var3))))))) (inv_main53 (write var1 var2 defObj) var2 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main36 var0 var6 var2) (and (= var3 nullAddr) (and (and (and (= var1 var0) (= var5 var6)) (= var4 var2)) (= var3 (next (getTSLL (read var0 var2)))))))) (inv_main53 var1 var5 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main44 var1 var5 var4) (and (= var6 nullAddr) (and (and (and (= var2 var1) (= var3 var5)) (= var0 var4)) (= var6 (next (getTSLL (read var1 var4)))))))) (inv_main53 var2 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main11 var0 var2 var1 var3)) (inv_main10 (write var0 var1 (O_TSLL (TSLL var3 (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main32 var0 var2 var1 var3)) (inv_main34 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) 1))) var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main33 var0 var3 var1 var4 var2)) (inv_main32 (write var0 var1 (O_TSLL (TSLL var2 (data (getTSLL (read var0 var1)))))) var3 var1 var4)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main11 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main10 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main12 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main14 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main19 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main21 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main23 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main26 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main24 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main33 var0 var3 var1 var4 var2) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main32 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main34 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main35 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main37 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main36 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main43 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main49 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main44 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main56 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr)) (not (and (inv_main0 var0 var1) (not (= (read var0 var2) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-simple-white-blue-2.i.smt2 b/heap-theory-benchmarks/array/sll-simple-white-blue-2.i.smt2 new file mode 100644 index 00000000..18f24259 --- /dev/null +++ b/heap-theory-benchmarks/array/sll-simple-white-blue-2.i.smt2 @@ -0,0 +1,115 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main26 var4 var1 var3) (and (and (and (= var2 var4) (= var5 var1)) (= var0 var3)) (= var6 (next (getTSLL (read var4 var3))))))) (inv_main23 var2 var5 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main6 var3 var1 var2) (and (= var0 0) (= var4 0)))) (inv_main23 var3 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main12 var2 var0 var1)) (inv_main14 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 0))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main23 var2 var0 var1) (= (next (getTSLL (read var2 var1))) nullAddr))) (inv_main24 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (and (inv_main23 var2 var0 var1) (and (not (= var3 0)) (not (= (next (getTSLL (read var2 var1))) nullAddr))))) (inv_main24 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main35 var4 var0 var3) (and (= var2 1) (and (and (and (= var5 var4) (= var1 var0)) (= var6 var3)) (= var2 (data (getTSLL (read var4 var3)))))))) (inv_main36 var5 var1 var6)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main14 var2 var0 var1)) (inv_main6 (write var2 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var2 var1)))))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main4 var2 var0) (and (= var1 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) 0)))) (= var3 var0)))) (inv_main6 var1 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main11 var3 var0 var2 var1)) (inv_main10 (write var3 var2 (O_TSLL (TSLL var1 (data (getTSLL (read var3 var2)))))) var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 TSLL) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main6 var5 var1 var3) (and (and (and (and (= var0 (newHeap (alloc var5 (O_TSLL var6)))) (= var7 var1)) (= var4 var3)) (= var2 (newAddr (alloc var5 (O_TSLL var6))))) (and (not (= var8 0)) (= var9 0))))) (inv_main19 var0 var7 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main32 var3 var1 var2 var0)) (inv_main34 (write var3 (next (getTSLL (read var3 var2))) (O_TSLL (TSLL (next (getTSLL (read var3 (next (getTSLL (read var3 var2)))))) 1))) var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main37 var3 var1 var2) (and (and (and (= var6 var3) (= var5 var1)) (= var0 var2)) (= var4 (next (getTSLL (read var3 var2))))))) (inv_main35 var6 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main34 var5 var2 var4 var1) (and (and (= var3 (write var5 (next (getTSLL (read var5 var4))) (O_TSLL (TSLL var1 (data (getTSLL (read var5 (next (getTSLL (read var5 var4)))))))))) (= var6 var2)) (= var0 var4)))) (inv_main35 var3 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main21 var2 var0 var1) (and (and (= var4 (write var2 var1 (O_TSLL (TSLL var0 (data (getTSLL (read var2 var1))))))) (= var5 var0)) (= var3 var1)))) (inv_main35 var4 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 TSLL) (var7 Addr)) (or (not (and (inv_main24 var5 var1 var4) (and (and (and (= var2 var5) (= var7 var1)) (= var3 var4)) (= var0 (next (getTSLL (read var5 var4))))))) (inv_main33 (newHeap (alloc var2 (O_TSLL var6))) var7 var3 var0 (newAddr (alloc var2 (O_TSLL var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Heap)) (or (not (and (inv_main56 var4 var1 var2) (and (and (not (= var7 nullAddr)) (and (and (and (= var9 var4) (= var5 var1)) (= var0 var2)) (= var3 (next (getTSLL (read var4 var2)))))) (and (and (= var8 (write var9 var5 defObj)) (= var6 var5)) (= var7 var3))))) (inv_main56 var8 var7 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main36 var4 var0 var2) (and (not (= var3 nullAddr)) (and (= var5 nullAddr) (and (and (and (= var1 var4) (= var3 var0)) (= var6 var2)) (= var5 (next (getTSLL (read var4 var2))))))))) (inv_main56 var1 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main44 var4 var0 var3) (and (not (= var2 nullAddr)) (and (= var6 nullAddr) (and (and (and (= var1 var4) (= var2 var0)) (= var5 var3)) (= var6 (next (getTSLL (read var4 var3))))))))) (inv_main56 var1 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (and (inv_main23 var2 var0 var1) (and (= var3 0) (not (= (next (getTSLL (read var2 var1))) nullAddr))))) (inv_main26 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main43 var4 var1 var3) (and (not (= var0 1)) (and (and (and (= var2 var4) (= var5 var1)) (= var6 var3)) (= var0 (data (getTSLL (read var4 var3)))))))) (inv_main49 var2 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main36 var4 var0 var2) (and (not (= var5 nullAddr)) (and (and (and (= var1 var4) (= var3 var0)) (= var6 var2)) (= var5 (next (getTSLL (read var4 var2)))))))) (inv_main43 var1 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main44 var4 var0 var3) (and (not (= var6 nullAddr)) (and (and (and (= var2 var4) (= var1 var0)) (= var5 var3)) (= var6 (next (getTSLL (read var4 var3)))))))) (inv_main43 var2 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 TSLL) (var4 Int)) (or (not (and (inv_main6 var2 var0 var1) (not (= var4 0)))) (inv_main11 (newHeap (alloc var2 (O_TSLL var3))) var0 var1 (newAddr (alloc var2 (O_TSLL var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (inv_main33 var4 var1 var2 var0 var3)) (inv_main32 (write var4 var2 (O_TSLL (TSLL var3 (data (getTSLL (read var4 var2)))))) var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Heap)) (or (not (and (inv_main35 var6 var1 var4) (and (not (= var3 1)) (and (and (and (= var5 var6) (= var2 var1)) (= var0 var4)) (= var3 (data (getTSLL (read var6 var4)))))))) (inv_main37 var5 var2 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main43 var3 var1 var2) (and (= var0 1) (and (and (and (= var6 var3) (= var4 var1)) (= var5 var2)) (= var0 (data (getTSLL (read var3 var2)))))))) (inv_main44 var6 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main10 var4 var1 var3) (and (and (and (= var6 var4) (= var0 var1)) (= var2 var3)) (= var5 (next (getTSLL (read var4 var3))))))) (inv_main12 var6 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main19 var2 var0 var1)) (inv_main21 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 1))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main11 var3 var0 var2 var1) (not (is-O_TSLL (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main10 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main12 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main14 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main19 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main21 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main23 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main26 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main24 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main33 var4 var1 var2 var0 var3) (not (is-O_TSLL (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main32 var3 var1 var2 var0) (not (is-O_TSLL (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main32 var3 var1 var2 var0) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main34 var3 var1 var2 var0) (not (is-O_TSLL (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main34 var3 var1 var2 var0) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main35 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main36 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main43 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main49 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main44 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main56 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-sorted-1.i.smt2 b/heap-theory-benchmarks/array/sll-sorted-1.i.smt2 new file mode 100644 index 00000000..a7786dee --- /dev/null +++ b/heap-theory-benchmarks/array/sll-sorted-1.i.smt2 @@ -0,0 +1,159 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int) Bool) +(declare-fun inv_main21 (Heap Addr Addr Int) Bool) +(declare-fun inv_main25 (Heap Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Int) Bool) +(declare-fun inv_main31 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int) Bool) +(declare-fun inv_main43 (Heap Addr Addr Int) Bool) +(declare-fun inv_main47 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main62 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main66 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr Int) Bool) +(declare-fun inv_main70 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main72 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main77 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main82 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main95 (Heap Addr Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap)) (or (not (and (inv_main49 var10 var2 var1 var8 var6) (and (not (= var7 nullAddr)) (and (and (and (and (and (= var5 var10) (= var9 var2)) (= var0 var1)) (= var3 var8)) (= var4 var6)) (= var7 (next (getTSLL (read var10 var1)))))))) (inv_main52 var5 var9 var0 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr)) (or (not (and (inv_main31 var3 var1 var0 var2 var4) (= var4 nullAddr))) (inv_main29 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Heap) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr)) (or (not (and (inv_main31 var9 var5 var1 var13 var10) (and (and (= var6 0) (and (not (= var10 nullAddr)) (and (and (and (and (= var11 var9) (= var0 var5)) (= var12 var1)) (= var8 var13)) (= var4 (data (getTSLL (read var9 (next (getTSLL (read var9 var1)))))))))) (and (and (and (and (= var7 var11) (= var2 var0)) (= var14 var12)) (= var3 var8)) (or (and (= var4 0) (= var6 1)) (and (not (= var4 0)) (= var6 0))))))) (inv_main29 var7 var2 var14 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main40 var6 var2 var0 var5) (and (= var1 1) (and (and (and (and (= var3 var6) (= var8 var2)) (= var7 var0)) (= var4 var5)) (= var1 (data (getTSLL (read var6 var0)))))))) (inv_main29 var3 var8 var7 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main52 var4 var1 var0 var3 var2)) (inv_main55 var4 var1 var0 var3 var2 (next (getTSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main47 var4 var1 var0 var3 var2)) (inv_main48 (write var4 var2 (O_TSLL (TSLL (next (getTSLL (read var4 var2))) 1))) var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main86 var8 var2 var0 var6 var4) (and (and (and (and (and (= var1 var8) (= var3 var2)) (= var10 var0)) (= var5 var6)) (= var7 var4)) (= var9 (next (getTSLL (read var8 var0))))))) (inv_main58 var1 var3 var9 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main57 var4 var1 var0 var3 var2) (= var0 nullAddr))) (inv_main58 var4 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main57 var12 var3 var1 var16 var6) (and (and (= var10 0) (and (not (= var1 nullAddr)) (and (and (and (and (and (= var2 var12) (= var15 var3)) (= var4 var1)) (= var8 var16)) (= var5 var6)) (= var13 (data (getTSLL (read var12 var1))))))) (and (and (and (and (and (= var11 var2) (= var7 var15)) (= var0 var4)) (= var9 var8)) (= var14 var5)) (or (and (not (= var13 1)) (= var10 1)) (and (= var13 1) (= var10 0))))))) (inv_main58 var11 var7 var0 var9 var14)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main40 var8 var2 var0 var7) (and (not (= var6 1)) (and (and (and (and (= var1 var8) (= var5 var2)) (= var4 var0)) (= var3 var7)) (= var6 (data (getTSLL (read var8 var0)))))))) (inv_main43 var1 var5 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int)) (or (not (and (inv_main30 var7 var4 var1 var6) (and (and (and (and (= var3 var7) (= var5 var4)) (= var0 var1)) (= var8 var6)) (= var2 (next (getTSLL (read var7 var1))))))) (inv_main28 var3 var5 var2 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var1 var0 var3) (and (not (= nullAddr var1)) (and (= var2 0) (not (= var3 0)))))) (inv_main28 var4 var1 var1 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main78 var8 var1 var0 var6 var4) (and (= var7 1) (and (and (and (and (and (= var3 var8) (= var2 var1)) (= var5 var0)) (= var10 var6)) (= var9 var4)) (= var7 (data (getTSLL (read var8 var0)))))))) (inv_main82 var3 var2 var5 var10 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (inv_main28 var3 var1 var0 var2)) (inv_main31 var3 var1 var0 var2 (next (getTSLL (read var3 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main78 var8 var2 var1 var7 var5) (and (not (= var3 1)) (and (not (= var0 1)) (and (and (and (and (and (= var10 var8) (= var4 var2)) (= var9 var1)) (= var3 var7)) (= var6 var5)) (= var0 (data (getTSLL (read var8 var1))))))))) (inv_main88 var10 var4 var9 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main58 var4 var1 var0 var3 var2) (not (= var0 nullAddr)))) (inv_main77 var4 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Heap) (var8 Addr)) (or (not (and (inv_main36 var7 var2 var1 var4) (and (and (and (and (= var6 var7) (= var3 var2)) (= var0 var1)) (= var5 var4)) (= var8 (next (getTSLL (read var7 var1))))))) (inv_main40 var6 var3 var8 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main48 var4 var1 var0 var3 var2)) (inv_main49 (write var4 var2 (O_TSLL (TSLL nullAddr (data (getTSLL (read var4 var2)))))) var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var1 var0 var3) (and (= nullAddr var1) (and (= var2 0) (not (= var3 0)))))) (inv_main25 var4 var1 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main58 var4 var1 var0 var3 var2) (and (not (= var1 nullAddr)) (= var0 nullAddr)))) (inv_main95 var4 var1 var1 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr)) (or (not (and (inv_main95 var7 var1 var0 var12 var4) (and (and (not (= var9 nullAddr)) (and (and (and (and (and (= var5 var7) (= var3 var1)) (= var8 var0)) (= var2 var12)) (= var6 var4)) (= var15 (next (getTSLL (read var7 var0)))))) (and (and (and (and (= var11 (write var5 var3 defObj)) (= var10 var3)) (= var9 var15)) (= var13 var2)) (= var14 var6))))) (inv_main95 var11 var9 var9 var13 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap)) (or (not (inv_main55 var5 var1 var0 var4 var3 var2)) (inv_main54 (write var5 var3 (O_TSLL (TSLL var2 (data (getTSLL (read var5 var3)))))) var1 var0 var4 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main78 var8 var2 var1 var7 var5) (and (= var3 1) (and (not (= var0 1)) (and (and (and (and (and (= var10 var8) (= var4 var2)) (= var9 var1)) (= var3 var7)) (= var6 var5)) (= var0 (data (getTSLL (read var8 var1))))))))) (inv_main86 var10 var4 var9 var3 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main62 var10 var2 var1 var9 var6) (and (not (= var0 0)) (and (= var8 0) (and (and (and (and (and (= var7 var10) (= var3 var2)) (= var5 var1)) (= var0 var9)) (= var4 var6)) (= var8 (data (getTSLL (read var10 var1))))))))) (inv_main72 var7 var3 var5 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main62 var8 var2 var0 var6 var4) (and (not (= var7 0)) (and (and (and (and (and (= var3 var8) (= var1 var2)) (= var9 var0)) (= var5 var6)) (= var10 var4)) (= var7 (data (getTSLL (read var8 var0)))))))) (inv_main66 var3 var1 var9 var5 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main59 var10 var3 var0 var7 var5) (and (and (and (and (and (= var1 var10) (= var9 var3)) (= var2 var0)) (= var6 var7)) (= var8 var5)) (= var4 (data (getTSLL (read var10 var0))))))) (inv_main62 var1 var9 var2 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Addr)) (or (not (and (inv_main31 var7 var3 var1 var12 var8) (and (and (not (= var5 0)) (and (not (= var8 nullAddr)) (and (and (and (and (= var9 var7) (= var0 var3)) (= var11 var1)) (= var6 var12)) (= var2 (data (getTSLL (read var7 (next (getTSLL (read var7 var1)))))))))) (and (and (and (and (= var13 var9) (= var4 var0)) (= var14 var11)) (= var10 var6)) (or (and (= var2 0) (= var5 1)) (and (not (= var2 0)) (= var5 0))))))) (inv_main30 var13 var4 var14 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap)) (or (not (and (inv_main49 var10 var2 var0 var8 var4) (and (= var3 nullAddr) (and (and (and (and (and (= var9 var10) (= var1 var2)) (= var7 var0)) (= var5 var8)) (= var6 var4)) (= var3 (next (getTSLL (read var10 var0)))))))) (inv_main51 var9 var1 var7 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main13 var7 var1 var0 var3) (and (= var6 0) (and (= var2 0) (and (and (and (= var4 (write var7 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var7 var0))))))) (= var8 var1)) (= var5 var0)) (= var6 var3)))))) (inv_main21 var4 var8 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap)) (or (not (and (inv_main70 var10 var1 var0 var8 var5) (and (and (and (and (and (= var9 var10) (= var7 var1)) (= var2 var0)) (= var6 var8)) (= var3 var5)) (= var4 (next (getTSLL (read var10 var0))))))) (inv_main57 var9 var7 var4 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Addr)) (or (not (and (inv_main51 var8 var2 var0 var5 var4) (and (and (and (and (= var7 (write var8 var0 (O_TSLL (TSLL var4 (data (getTSLL (read var8 var0))))))) (= var3 var2)) (= var9 var0)) (= var1 var5)) (= var6 var4)))) (inv_main57 var7 var3 var3 0 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr)) (or (not (and (inv_main54 var8 var2 var0 var7 var5) (and (and (and (and (= var1 (write var8 var0 (O_TSLL (TSLL var5 (data (getTSLL (read var8 var0))))))) (= var9 var2)) (= var3 var0)) (= var4 var7)) (= var6 var5)))) (inv_main57 var1 var9 var9 0 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr)) (or (not (and (inv_main77 var8 var2 var1 var7 var3) (and (and (and (and (and (= var5 var8) (= var10 var2)) (= var6 var1)) (= var0 var7)) (= var4 var3)) (= var9 (data (getTSLL (read var8 var1))))))) (inv_main78 var5 var10 var6 var9 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 TSLL) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main29 var8 var1 var0 var5) (and (= var9 nullAddr) (and (and (and (and (= var3 var8) (= var2 var1)) (= var7 var0)) (= var6 var5)) (= var9 (next (getTSLL (read var8 var0)))))))) (inv_main47 (newHeap (alloc var3 (O_TSLL var4))) var2 var7 var6 (newAddr (alloc var3 (O_TSLL var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 TSLL) (var10 Heap)) (or (not (and (inv_main29 var10 var2 var1 var8) (and (= var6 0) (and (not (= var7 nullAddr)) (and (and (and (and (= var0 var10) (= var5 var2)) (= var4 var1)) (= var3 var8)) (= var7 (next (getTSLL (read var10 var1))))))))) (inv_main47 (newHeap (alloc var0 (O_TSLL var9))) var5 var4 var3 (newAddr (alloc var0 (O_TSLL var9))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main57 var9 var4 var1 var14 var7) (and (and (not (= var16 0)) (and (not (= var1 nullAddr)) (and (and (and (and (and (= var3 var9) (= var12 var4)) (= var5 var1)) (= var8 var14)) (= var6 var7)) (= var10 (data (getTSLL (read var9 var1))))))) (and (and (and (and (and (= var11 var3) (= var2 var12)) (= var15 var5)) (= var13 var8)) (= var0 var6)) (or (and (not (= var10 1)) (= var16 1)) (and (= var10 1) (= var16 0))))))) (inv_main59 var11 var2 var15 var13 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap)) (or (not (and (inv_main29 var9 var2 var1 var8) (and (not (= var3 0)) (and (not (= var7 nullAddr)) (and (and (and (and (= var0 var9) (= var6 var2)) (= var5 var1)) (= var4 var8)) (= var7 (next (getTSLL (read var9 var1))))))))) (inv_main36 var0 var6 var5 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main13 var7 var2 var1 var3) (and (not (= var0 0)) (and (and (and (= var4 (write var7 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var7 var1))))))) (= var8 var2)) (= var5 var1)) (= var6 var3))))) (inv_main20 var4 var8 var5 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main13 var7 var1 var0 var3) (and (not (= var6 0)) (and (= var2 0) (and (and (and (= var4 (write var7 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var7 var0))))))) (= var8 var1)) (= var5 var0)) (= var6 var3)))))) (inv_main20 var4 var8 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main12 var4 var2 var0 var3 var1)) (inv_main11 (write var4 var0 (O_TSLL (TSLL var1 (data (getTSLL (read var4 var0)))))) var2 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (inv_main20 var3 var1 var0 var2)) (inv_main7 (write var3 var0 (O_TSLL (TSLL (next (getTSLL (read var3 var0))) 1))) var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (inv_main21 var3 var1 var0 var2)) (inv_main7 (write var3 var0 (O_TSLL (TSLL (next (getTSLL (read var3 var0))) 0))) var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap)) (or (not (and (inv_main4 var3 var2) (and (= var1 (write var3 var2 (O_TSLL (TSLL (next (getTSLL (read var3 var2))) 0)))) (= var0 var2)))) (inv_main7 var1 var0 var0 0)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main11 var8 var2 var0 var6) (and (and (and (and (= var1 var8) (= var4 var2)) (= var5 var0)) (= var3 var6)) (= var7 (next (getTSLL (read var8 var0))))))) (inv_main13 var1 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 TSLL) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int)) (or (not (and (inv_main7 var4 var2 var0 var3) (or (not (= var5 0)) (= var3 0)))) (inv_main12 (newHeap (alloc var4 (O_TSLL var1))) var2 var0 var3 (newAddr (alloc var4 (O_TSLL var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main62 var10 var2 var1 var9 var6) (and (= var0 0) (and (= var8 0) (and (and (and (and (and (= var7 var10) (= var3 var2)) (= var5 var1)) (= var0 var9)) (= var4 var6)) (= var8 (data (getTSLL (read var10 var1))))))))) (inv_main70 var7 var3 var5 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main12 var4 var2 var0 var3 var1) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main11 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main13 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main20 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main21 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main25 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main28 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr)) (not (and (inv_main31 var3 var1 var0 var2 var4) (and (not (= var4 nullAddr)) (not (is-O_TSLL (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr)) (not (and (inv_main31 var3 var1 var0 var2 var4) (and (not (= var4 nullAddr)) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var0))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main30 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main29 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main36 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main40 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main43 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main47 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main48 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main49 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main51 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main52 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap)) (not (and (inv_main55 var5 var1 var0 var4 var3 var2) (not (is-O_TSLL (read var5 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main54 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main57 var4 var1 var0 var3 var2) (and (not (= var0 nullAddr)) (not (is-O_TSLL (read var4 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main59 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main62 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main66 var4 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main72 var4 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main70 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main77 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main78 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main82 var4 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main88 var4 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main86 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main95 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll-sorted-2.i.smt2 b/heap-theory-benchmarks/array/sll-sorted-2.i.smt2 new file mode 100644 index 00000000..bfb3f46b --- /dev/null +++ b/heap-theory-benchmarks/array/sll-sorted-2.i.smt2 @@ -0,0 +1,165 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TSLL 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TSLL (getTSLL TSLL)) (defObj)) + ((TSLL (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main101 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int) Bool) +(declare-fun inv_main21 (Heap Addr Addr Int) Bool) +(declare-fun inv_main25 (Heap Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Int) Bool) +(declare-fun inv_main31 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr Int) Bool) +(declare-fun inv_main36 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Addr Addr Int) Bool) +(declare-fun inv_main49 (Heap Addr Addr Int) Bool) +(declare-fun inv_main53 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main61 (Heap Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main63 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main65 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main68 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main84 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main92 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main94 (Heap Addr Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main53 var1 var3 var2 var0 var4)) (inv_main54 (write var1 var4 (O_TSLL (TSLL (next (getTSLL (read var1 var4))) 1))) var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main55 var3 var6 var5 var0 var9) (and (not (= var8 nullAddr)) (and (and (and (and (and (= var4 var3) (= var7 var6)) (= var10 var5)) (= var2 var0)) (= var1 var9)) (= var8 (next (getTSLL (read var3 var5)))))))) (inv_main58 var4 var7 var10 var2 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 TSLL) (var5 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (or (not (= var5 0)) (= var0 0)))) (inv_main12 (newHeap (alloc var1 (O_TSLL var4))) var3 var2 var0 (newAddr (alloc var1 (O_TSLL var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main46 var3 var6 var5 var0) (and (not (= var2 1)) (and (and (and (and (= var4 var3) (= var8 var6)) (= var1 var5)) (= var7 var0)) (= var2 (data (getTSLL (read var3 var5)))))))) (inv_main49 var4 var8 var1 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main58 var1 var3 var2 var0 var4)) (inv_main61 var1 var3 var2 var0 var4 (next (getTSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main42 var4 var6 var5 var0) (and (and (and (and (= var1 var4) (= var7 var6)) (= var2 var5)) (= var8 var0)) (= var3 (next (getTSLL (read var4 var5))))))) (inv_main46 var1 var7 var3 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main28 var1 var3 var2 var0)) (inv_main31 var1 var3 var2 var0 (next (getTSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main12 var1 var4 var3 var0 var2)) (inv_main11 (write var1 var3 (O_TSLL (TSLL var2 (data (getTSLL (read var1 var3)))))) var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main65 var2 var5 var4 var0 var9) (and (and (and (and (and (= var8 var2) (= var7 var5)) (= var3 var4)) (= var6 var0)) (= var10 var9)) (= var1 (data (getTSLL (read var2 var4))))))) (inv_main68 var8 var7 var3 var1 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main11 var3 var6 var5 var1) (and (and (and (and (= var7 var3) (= var2 var6)) (= var8 var5)) (= var4 var1)) (= var0 (next (getTSLL (read var3 var5))))))) (inv_main13 var7 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main13 var3 var5 var4 var1) (and (not (= var7 0)) (and (and (and (= var2 (write var3 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var3 var4))))))) (= var6 var5)) (= var8 var4)) (= var0 var1))))) (inv_main20 var2 var6 var8 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main13 var3 var5 var4 var1) (and (not (= var0 0)) (and (= var8 0) (and (and (and (= var2 (write var3 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var3 var4))))))) (= var6 var5)) (= var7 var4)) (= var0 var1)))))) (inv_main20 var2 var6 var7 var0)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main34 var2 var5 var4 var1) (and (and (and (and (= var8 var2) (= var7 var5)) (= var6 var4)) (= var0 var1)) (= var3 (next (getTSLL (read var2 var4))))))) (inv_main28 var8 var7 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (and (not (= nullAddr var3)) (and (= var4 0) (not (= var0 0)))))) (inv_main28 var1 var3 var3 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main92 var2 var6 var5 var0 var9) (and (and (and (and (and (= var7 var2) (= var10 var6)) (= var1 var5)) (= var3 var0)) (= var8 var9)) (= var4 (next (getTSLL (read var2 var5))))))) (inv_main64 var7 var10 var4 var3 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main63 var1 var3 var2 var0 var4) (= var2 nullAddr))) (inv_main64 var1 var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Heap) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main63 var13 var7 var6 var0 var10) (and (and (= var15 0) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var4 var13) (= var11 var7)) (= var1 var6)) (= var8 var0)) (= var3 var10)) (= var14 (data (getTSLL (read var13 var6))))))) (and (and (and (and (and (= var12 var4) (= var9 var11)) (= var2 var1)) (= var5 var8)) (= var16 var3)) (or (and (not (= var14 1)) (= var15 1)) (and (= var14 1) (= var15 0))))))) (inv_main64 var12 var9 var2 var5 var16)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main68 var2 var6 var5 var1 var9) (and (not (= var0 0)) (and (and (and (and (and (= var10 var2) (= var8 var6)) (= var7 var5)) (= var3 var1)) (= var4 var9)) (= var0 (data (getTSLL (read var2 var5)))))))) (inv_main72 var10 var8 var7 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main55 var2 var7 var6 var0 var10) (and (= var5 nullAddr) (and (and (and (and (and (= var8 var2) (= var1 var7)) (= var3 var6)) (= var4 var0)) (= var9 var10)) (= var5 (next (getTSLL (read var2 var6)))))))) (inv_main57 var8 var1 var3 var4 var9)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr)) (or (not (and (inv_main31 var11 var7 var6 var0 var12) (and (and (not (= var5 0)) (and (not (= var12 nullAddr)) (and (and (and (and (= var3 var11) (= var2 var7)) (= var10 var6)) (= var9 var0)) (= var8 (data (getTSLL (read var11 (next (getTSLL (read var11 var6)))))))))) (and (and (and (and (= var1 var3) (= var4 var2)) (= var14 var10)) (= var13 var9)) (or (and (= var8 0) (= var5 1)) (and (not (= var8 0)) (= var5 0))))))) (inv_main30 var1 var4 var14 var13)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main84 var4 var7 var6 var1 var9) (and (= var3 1) (and (= var8 1) (and (and (and (and (and (= var5 var4) (= var0 var7)) (= var2 var6)) (= var3 var1)) (= var10 var9)) (= var8 (data (getTSLL (read var4 var6))))))))) (inv_main92 var5 var0 var2 var3 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 TSLL) (var8 Int) (var9 Addr)) (or (not (and (inv_main29 var2 var4 var3 var0) (and (= var5 nullAddr) (and (and (and (and (= var6 var2) (= var1 var4)) (= var9 var3)) (= var8 var0)) (= var5 (next (getTSLL (read var2 var3)))))))) (inv_main53 (newHeap (alloc var6 (O_TSLL var7))) var1 var9 var8 (newAddr (alloc var6 (O_TSLL var7))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 TSLL) (var10 Addr)) (or (not (and (inv_main29 var6 var8 var7 var1) (and (= var2 0) (and (not (= var5 nullAddr)) (and (and (and (and (= var0 var6) (= var3 var8)) (= var10 var7)) (= var4 var1)) (= var5 (next (getTSLL (read var6 var7))))))))) (inv_main53 (newHeap (alloc var0 (O_TSLL var9))) var3 var10 var4 (newAddr (alloc var0 (O_TSLL var9))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int)) (or (not (and (inv_main83 var4 var6 var5 var1 var9) (and (and (and (and (and (= var7 var4) (= var0 var6)) (= var3 var5)) (= var10 var1)) (= var8 var9)) (= var2 (data (getTSLL (read var4 var5))))))) (inv_main84 var7 var0 var3 var2 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main61 var1 var3 var2 var0 var5 var4)) (inv_main60 (write var1 var5 (O_TSLL (TSLL var4 (data (getTSLL (read var1 var5)))))) var3 var2 var0 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (and (= nullAddr var3) (and (= var4 0) (not (= var0 0)))))) (inv_main25 var1 var3 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main76 var1 var5 var4 var0 var8) (and (and (and (and (and (= var3 var1) (= var2 var5)) (= var10 var4)) (= var9 var0)) (= var7 var8)) (= var6 (next (getTSLL (read var1 var4))))))) (inv_main63 var3 var2 var6 var9 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main57 var4 var6 var5 var2 var8) (and (and (and (and (= var3 (write var4 var5 (O_TSLL (TSLL var8 (data (getTSLL (read var4 var5))))))) (= var0 var6)) (= var9 var5)) (= var1 var2)) (= var7 var8)))) (inv_main63 var3 var0 var0 0 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr)) (or (not (and (inv_main60 var2 var5 var4 var0 var8) (and (and (and (and (= var6 (write var2 var4 (O_TSLL (TSLL var8 (data (getTSLL (read var2 var4))))))) (= var9 var5)) (= var1 var4)) (= var7 var0)) (= var3 var8)))) (inv_main63 var6 var9 var9 0 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main29 var6 var8 var7 var2) (and (not (= var1 0)) (and (not (= var5 nullAddr)) (and (and (and (and (= var0 var6) (= var3 var8)) (= var9 var7)) (= var4 var2)) (= var5 (next (getTSLL (read var6 var7))))))))) (inv_main42 var0 var3 var9 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main68 var1 var6 var5 var0 var10) (and (= var7 0) (and (= var4 0) (and (and (and (and (and (= var2 var1) (= var8 var6)) (= var9 var5)) (= var7 var0)) (= var3 var10)) (= var4 (data (getTSLL (read var1 var5))))))))) (inv_main76 var2 var8 var9 var7 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main30 var3 var8 var7 var2) (and (not (= var4 0)) (and (and (and (and (= var0 var3) (= var1 var8)) (= var6 var7)) (= var5 var2)) (= var4 (data (getTSLL (read var3 var7)))))))) (inv_main36 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main84 var2 var5 var4 var0 var8) (and (not (= var1 1)) (and (and (and (and (and (= var9 var2) (= var7 var5)) (= var10 var4)) (= var3 var0)) (= var6 var8)) (= var1 (data (getTSLL (read var2 var4)))))))) (inv_main88 var9 var7 var10 var3 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (and (inv_main30 var1 var4 var3 var0) (and (= var7 0) (and (and (and (and (= var6 var1) (= var5 var4)) (= var2 var3)) (= var8 var0)) (= var7 (data (getTSLL (read var1 var3)))))))) (inv_main34 var6 var5 var2 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main13 var3 var5 var4 var1) (and (= var0 0) (and (= var8 0) (and (and (and (= var2 (write var3 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var3 var4))))))) (= var6 var5)) (= var7 var4)) (= var0 var1)))))) (inv_main21 var2 var6 var7 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main54 var1 var3 var2 var0 var4)) (inv_main55 (write var1 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var1 var4)))))) var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main31 var1 var4 var3 var0 var2) (= var2 nullAddr))) (inv_main29 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main31 var9 var4 var3 var0 var11) (and (and (= var14 0) (and (not (= var11 nullAddr)) (and (and (and (and (= var2 var9) (= var1 var4)) (= var8 var3)) (= var7 var0)) (= var5 (data (getTSLL (read var9 (next (getTSLL (read var9 var3)))))))))) (and (and (and (and (= var10 var2) (= var12 var1)) (= var6 var8)) (= var13 var7)) (or (and (= var5 0) (= var14 1)) (and (not (= var5 0)) (= var14 0))))))) (inv_main29 var10 var12 var6 var13)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main46 var2 var4 var3 var0) (and (= var8 1) (and (and (and (and (= var5 var2) (= var7 var4)) (= var1 var3)) (= var6 var0)) (= var8 (data (getTSLL (read var2 var3)))))))) (inv_main29 var5 var7 var1 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Int) (var16 Addr)) (or (not (and (inv_main63 var14 var7 var6 var2 var12) (and (and (not (= var10 0)) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var5 var14) (= var13 var7)) (= var3 var6)) (= var9 var2)) (= var4 var12)) (= var15 (data (getTSLL (read var14 var6))))))) (and (and (and (and (and (= var0 var5) (= var16 var13)) (= var11 var3)) (= var8 var9)) (= var1 var4)) (or (and (not (= var15 1)) (= var10 1)) (and (= var15 1) (= var10 0))))))) (inv_main65 var0 var16 var11 var8 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main64 var1 var3 var2 var0 var4) (and (not (= var3 nullAddr)) (= var2 nullAddr)))) (inv_main101 var1 var3 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main101 var13 var4 var3 var0 var8) (and (and (not (= var7 nullAddr)) (and (and (and (and (and (= var5 var13) (= var10 var4)) (= var2 var3)) (= var11 var0)) (= var12 var8)) (= var6 (next (getTSLL (read var13 var3)))))) (and (and (and (and (= var1 (write var5 var10 defObj)) (= var15 var10)) (= var7 var6)) (= var14 var11)) (= var9 var12))))) (inv_main101 var1 var7 var7 var14 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main64 var1 var3 var2 var0 var4) (not (= var2 nullAddr)))) (inv_main83 var1 var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main68 var1 var6 var5 var0 var10) (and (not (= var7 0)) (and (= var4 0) (and (and (and (and (and (= var2 var1) (= var8 var6)) (= var9 var5)) (= var7 var0)) (= var3 var10)) (= var4 (data (getTSLL (read var1 var5))))))))) (inv_main78 var2 var8 var9 var7 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main20 var1 var3 var2 var0)) (inv_main7 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) 1))) var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main21 var1 var3 var2 var0)) (inv_main7 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) 0))) var3 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main4 var0 var1) (and (= var2 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) 0)))) (= var3 var1)))) (inv_main7 var2 var3 var3 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main84 var4 var7 var6 var1 var9) (and (not (= var3 1)) (and (= var8 1) (and (and (and (and (and (= var5 var4) (= var0 var7)) (= var2 var6)) (= var3 var1)) (= var10 var9)) (= var8 (data (getTSLL (read var4 var6))))))))) (inv_main94 var5 var0 var2 var3 var10)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main12 var1 var4 var3 var0 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main11 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main13 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main20 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main21 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main25 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main28 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main31 var1 var4 var3 var0 var2) (and (not (= var2 nullAddr)) (not (is-O_TSLL (read var1 var3)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main31 var1 var4 var3 var0 var2) (and (not (= var2 nullAddr)) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3))))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main30 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main36 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main34 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main29 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main42 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main46 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main49 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main53 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main54 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main55 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main57 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main58 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main61 var1 var3 var2 var0 var5 var4) (not (is-O_TSLL (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main60 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main63 var1 var3 var2 var0 var4) (and (not (= var2 nullAddr)) (not (is-O_TSLL (read var1 var2)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main65 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main68 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (inv_main72 var1 var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (inv_main78 var1 var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main76 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main83 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main84 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (inv_main88 var1 var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (inv_main94 var1 var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main92 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main101 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2c_append_equal.i.smt2 b/heap-theory-benchmarks/array/sll2c_append_equal.i.smt2 new file mode 100644 index 00000000..fe274cff --- /dev/null +++ b/heap-theory-benchmarks/array/sll2c_append_equal.i.smt2 @@ -0,0 +1,111 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main58 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main63 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main68 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main83 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main87 (Heap Int Int Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main90 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr)) (or (not (and (inv_main4 var4 var3 var0) (and (not (= nullAddr var10)) (and (and (and (and (and (and (= var8 (newHeap (alloc var4 (O_node var1)))) (= var7 var3)) (= var5 var0)) (= var6 var3)) (= var9 var0)) (= var2 var0)) (= var10 (newAddr (alloc var4 (O_node var1)))))))) (inv_main12 var8 var7 var5 var6 var9 var2 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr)) (or (not (and (inv_main34 var11 var10 var0 var16 var12 var17 var5 var3 var15) (and (and (and (and (and (and (and (and (= var7 (write var11 var15 (O_node (node (next (getnode (read var11 var15))) var3)))) (= var9 var10)) (= var2 var0)) (= var6 var16)) (= var8 var12)) (= var14 var17)) (= var4 var5)) (= var1 var3)) (= var13 var15)))) (inv_main36 var7 var9 var2 var6 var8 var14 var4 var13)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr)) (or (not (and (inv_main83 var12 var8 var0 var11 var14 var10 var3) (and (not (= var2 var6)) (and (and (and (and (and (and (and (= var9 var12) (= var7 var8)) (= var4 var0)) (= var1 var11)) (= var5 var14)) (= var13 var10)) (= var6 var3)) (= var2 (next (getnode (read var12 var3)))))))) (inv_main87 var9 var7 var4 var1 var5 var13 var6 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr)) (or (not (and (inv_main87 var17 var11 var0 var13 var23 var12 var2 var4) (and (not (= var25 var21)) (and (and (and (and (and (and (and (and (and (= var10 var17) (= var1 var11)) (= var5 var0)) (= var18 var13)) (= var16 var23)) (= var20 var12)) (= var19 var2)) (= var24 var4)) (= var15 (next (getnode (read var17 var4))))) (and (and (and (and (and (and (and (and (= var7 (write var10 var24 defObj)) (= var6 var1)) (= var8 var5)) (= var22 var18)) (= var14 var16)) (= var9 var20)) (= var21 var19)) (= var3 var24)) (= var25 var15)))))) (inv_main87 var7 var6 var8 var22 var14 var9 var21 var25)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Heap)) (or (not (and (inv_main63 var14 var10 var0 var12 var7 var6 var13 var4) (and (and (and (and (and (and (and (and (= var16 var14) (= var9 var10)) (= var1 var0)) (= var15 var12)) (= var5 var7)) (= var3 var6)) (= var2 var13)) (= var8 var4)) (= var11 (next (getnode (read var14 var4))))))) (inv_main61 var16 var9 var1 var15 var5 var3 var2 var11)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main55 var13 var10 var1 var11 var9 var8 var3 var4) (and (not (= nullAddr var2)) (and (and (and (and (and (and (and (= var6 (write var13 var4 (O_node (node (next (getnode (read var13 var4))) var3)))) (= var7 var10)) (= var0 var1)) (= var2 var11)) (= var12 var9)) (= var14 var8)) (= var5 var3)) (= var15 var4))))) (inv_main61 var6 var7 var0 var2 var12 var14 var15 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main21 var2 var1 var0 var5 var3 var6 var4) (not (<= 0 (+ (+ var5 (- 1)) (- 1)))))) (inv_main22 var2 var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var2 var1 var0 var5 var3 var6 var4)) (inv_main18 (write var2 var4 (O_node (node nullAddr (data (getnode (read var2 var4)))))) var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)) (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 node) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main21 var9 var8 var0 var14 var10 var15 var5) (and (and (= nullAddr var12) (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var9 (O_node var7)))) (= var2 var8)) (= var6 var0)) (= var4 var14)) (= var16 var10)) (= var1 var15)) (= var3 var5)) (= var13 var10)) (= var12 (newAddr (alloc var9 (O_node var7)))))) (<= 0 (+ (+ var14 (- 1)) (- 1)))))) (inv_main31 var11 var2 var6 var4 var16 var1 var3 var13 var12 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Addr)) (or (not (and (inv_main61 var14 var10 var0 var12 var9 var8 var13 var3) (and (= var15 var11) (and (and (and (and (and (and (and (and (= var5 var14) (= var1 var10)) (= var7 var0)) (= var11 var12)) (= var6 var9)) (= var2 var8)) (= var4 var13)) (= var16 var3)) (= var15 (next (getnode (read var14 var3)))))))) (inv_main62 var5 var1 var7 var11 var6 var2 var4 var16)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main52 var6 var2 var1 var3 var0 var8 var4 var5 var7)) (inv_main52 var6 var2 var1 var3 var0 var8 var4 var5 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 node) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int) (var16 Int) (var17 Int) (var18 Heap) (var19 Int) (var20 Addr) (var21 Heap) (var22 Int)) (or (not (and (inv_main22 var14 var10 var1 var19 var15 var20 var6) (and (and (= nullAddr var7) (and (and (and (and (and (and (and (= var21 (newHeap (alloc var18 (O_node var3)))) (= var16 var11)) (= var22 var17)) (= var5 var12)) (= var4 3)) (= var9 var17)) (= var0 var17)) (= var7 (newAddr (alloc var18 (O_node var3)))))) (and (and (and (and (and (and (= var18 (write var14 var6 (O_node (node var20 (data (getnode (read var14 var6))))))) (= var11 var10)) (= var17 var1)) (= var2 var19)) (= var13 var15)) (= var12 var20)) (= var8 var6))))) (inv_main52 var21 var16 var22 var5 var4 var9 var0 var7 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 node) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int) (var16 Int) (var17 Int) (var18 Heap) (var19 Heap) (var20 Int) (var21 Addr) (var22 Addr)) (or (not (and (inv_main22 var14 var9 var0 var20 var15 var21 var4) (and (and (not (= nullAddr var12)) (and (and (and (and (and (and (and (= var19 (newHeap (alloc var18 (O_node var2)))) (= var6 var10)) (= var5 var17)) (= var22 var11)) (= var16 3)) (= var3 var17)) (= var8 var17)) (= var12 (newAddr (alloc var18 (O_node var2)))))) (and (and (and (and (and (and (= var18 (write var14 var4 (O_node (node var21 (data (getnode (read var14 var4))))))) (= var10 var9)) (= var17 var0)) (= var1 var20)) (= var13 var15)) (= var11 var21)) (= var7 var4))))) (inv_main49 var19 var6 var5 var22 var16 var3 var8 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (inv_main49 var6 var2 var1 var3 var0 var7 var4 var5)) (inv_main55 (write var6 var5 (O_node (node nullAddr (data (getnode (read var6 var5)))))) var2 var1 var3 var0 var7 var4 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main68 var4 var1 var0 var3 var5 var2) (= var0 (data (getnode (read var4 var5)))))) (inv_main71 var4 var1 var0 var3 var5 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main68 var4 var1 var0 var3 var5 var2) (not (= var0 (data (getnode (read var4 var5))))))) (inv_main90 var4 var1 var0 var3 var5 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int)) (or (not (and (inv_main71 var7 var2 var1 var5 var9 var4) (and (not (= (+ var3 1) (+ 1 var12))) (and (= var8 var6) (and (and (and (and (and (and (= var11 var7) (= var12 var2)) (= var0 var1)) (= var6 var5)) (= var10 var9)) (= var3 var4)) (= var8 (next (getnode (read var7 var9))))))))) (inv_main90 var11 var12 var0 var6 var8 (+ var3 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr)) (or (not (and (inv_main36 var10 var8 var1 var14 var11 var15 var5 var4) (and (and (and (and (and (and (and (= var7 (write var10 var4 (O_node (node var15 (data (getnode (read var10 var4))))))) (= var12 var8)) (= var13 var1)) (= var9 var14)) (= var0 var11)) (= var2 var15)) (= var6 var5)) (= var3 var4)))) (inv_main21 var7 var12 var13 (+ var9 (- 1)) var0 var3 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var10 var9 var0 var12 var11 var6 var4) (and (and (and (and (and (and (= var7 (write var10 var4 (O_node (node (next (getnode (read var10 var4))) var6)))) (= var5 var9)) (= var13 var0)) (= var2 var12)) (= var3 var11)) (= var1 var6)) (= var8 var4)))) (inv_main21 var7 var5 var13 var2 var3 var8 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 node) (var10 Int) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main21 var12 var10 var0 var15 var13 var16 var8) (and (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (and (= var2 (newHeap (alloc var12 (O_node var9)))) (= var4 var10)) (= var7 var0)) (= var6 var15)) (= var3 var13)) (= var5 var16)) (= var1 var8)) (= var14 var13)) (= var11 (newAddr (alloc var12 (O_node var9)))))) (<= 0 (+ (+ var15 (- 1)) (- 1)))))) (inv_main28 var2 var4 var7 var6 var3 var5 var1 var14 var11)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap)) (or (not (and (inv_main71 var7 var2 var1 var5 var9 var4) (and (not (= var8 var6)) (and (and (and (and (and (and (= var12 var7) (= var11 var2)) (= var0 var1)) (= var6 var5)) (= var10 var9)) (= var3 var4)) (= var8 (next (getnode (read var7 var9)))))))) (inv_main68 var12 var11 var0 var6 var8 (+ var3 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int)) (or (not (and (inv_main66 var11 var8 var0 var9 var6 var5 var10 var3) (and (and (and (and (and (= var7 (write var11 var10 (O_node (node var9 (data (getnode (read var11 var10))))))) (= var1 var8)) (= var13 var0)) (= var12 var9)) (= var4 var6)) (= var2 var5)))) (inv_main68 var7 var1 var13 var12 var12 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Heap)) (or (not (and (inv_main58 var11 var7 var0 var9 var6 var5 var10) (and (and (and (and (and (and (= var13 (write var11 var10 (O_node (node var10 (data (getnode (read var11 var10))))))) (= var4 var7)) (= var12 var0)) (= var8 var9)) (= var3 var6)) (= var2 var5)) (= var1 var10)))) (inv_main68 var13 var4 var12 var1 var1 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (or (not (inv_main62 var5 var2 var1 var3 var0 var7 var4 var6)) (inv_main66 (write var5 var6 (O_node (node var4 (data (getnode (read var5 var6)))))) var2 var1 var3 var0 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6)) (inv_main34 (write var2 var6 (O_node (node nullAddr (data (getnode (read var2 var6)))))) var1 var0 var7 var3 var8 var5 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)) (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 node) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var5 var2 var0) (and (= nullAddr var3) (and (and (and (and (and (and (= var1 (newHeap (alloc var5 (O_node var7)))) (= var10 var2)) (= var4 var0)) (= var9 var2)) (= var6 var0)) (= var8 var0)) (= var3 (newAddr (alloc var5 (O_node var7)))))))) (inv_main15 var1 var10 var4 var9 var6 var8 var3 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main55 var13 var10 var1 var11 var9 var8 var3 var4) (and (= nullAddr var2) (and (and (and (and (and (and (and (= var6 (write var13 var4 (O_node (node (next (getnode (read var13 var4))) var3)))) (= var7 var10)) (= var0 var1)) (= var2 var11)) (= var12 var9)) (= var14 var8)) (= var5 var3)) (= var15 var4))))) (inv_main58 var6 var7 var0 var2 var12 var14 var15)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int)) (or (not (and (inv_main71 var7 var2 var1 var5 var9 var4) (and (not (= nullAddr var6)) (and (= (+ var3 1) (+ 1 var12)) (and (= var8 var6) (and (and (and (and (and (and (= var11 var7) (= var12 var2)) (= var0 var1)) (= var6 var5)) (= var10 var9)) (= var3 var4)) (= var8 (next (getnode (read var7 var9)))))))))) (inv_main83 var11 var12 var0 var6 var8 (+ var3 1) var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr)) (or (not (and (inv_main61 var12 var9 var1 var10 var6 var5 var11 var3) (and (not (= var4 var2)) (and (and (and (and (and (and (and (and (= var15 var12) (= var8 var9)) (= var7 var1)) (= var2 var10)) (= var14 var6)) (= var13 var5)) (= var0 var11)) (= var16 var3)) (= var4 (next (getnode (read var12 var3)))))))) (inv_main63 var15 var8 var7 var2 var14 var13 var0 var16)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main34 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main36 var2 var1 var0 var6 var3 var7 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main22 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main49 var6 var2 var1 var3 var0 var7 var4 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main55 var6 var2 var1 var3 var0 var7 var4 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (not (and (inv_main58 var5 var2 var1 var3 var0 var6 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main61 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main63 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main62 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main66 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main68 var4 var1 var0 var3 var5 var2) (not (is-O_node (read var4 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main71 var4 var1 var0 var3 var5 var2) (not (is-O_node (read var4 var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr)) (not (and (inv_main83 var5 var2 var0 var4 var6 var3 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (not (and (inv_main87 var6 var2 var0 var5 var7 var4 var1 var3) (not (is-O_node (read var6 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (not (inv_main90 var4 var1 var0 var3 var5 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2c_insert_equal.i.smt2 b/heap-theory-benchmarks/array/sll2c_insert_equal.i.smt2 new file mode 100644 index 00000000..520df27d --- /dev/null +++ b/heap-theory-benchmarks/array/sll2c_insert_equal.i.smt2 @@ -0,0 +1,117 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Int Int Addr Int) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main69 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main70 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main73 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main88 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main92 (Heap Int Int Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main95 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 node) (var9 Heap) (var10 Int)) (or (not (and (inv_main4 var3 var2 var0) (and (not (= nullAddr var5)) (and (and (and (and (and (and (= var9 (newHeap (alloc var3 (O_node var8)))) (= var6 var2)) (= var10 var0)) (= var1 var2)) (= var4 var0)) (= var7 var0)) (= var5 (newAddr (alloc var3 (O_node var8)))))))) (inv_main12 var9 var6 var10 var1 var4 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr)) (or (not (and (inv_main34 var10 var8 var1 var16 var11 var17 var6 var5 var15) (and (and (and (and (and (and (and (and (= var14 (write var10 var15 (O_node (node (next (getnode (read var10 var15))) var5)))) (= var9 var8)) (= var7 var1)) (= var13 var16)) (= var0 var11)) (= var2 var17)) (= var12 var6)) (= var4 var5)) (= var3 var15)))) (inv_main36 var14 var9 var7 var13 var0 var2 var12 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int)) (or (not (inv_main52 var7 var3 var0 var5 var4 var1 var2 var6 var8 var9)) (inv_main52 var7 var3 var0 var5 var4 var1 var2 var6 var8 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 node) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Heap) (var20 Addr) (var21 Int) (var22 Addr) (var23 Int) (var24 Heap) (var25 Int) (var26 Addr) (var27 Heap) (var28 Int) (var29 Int) (var30 Addr) (var31 Int)) (or (not (and (inv_main22 var27 var23 var0 var11 var28 var30 var5) (and (and (and (= nullAddr var22) (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var19 (O_node var12)))) (= var18 var16)) (= var2 var17)) (= var15 var26)) (= var14 var21)) (= var13 var10)) (= var3 var8)) (= var4 var10)) (= var22 (newAddr (alloc var19 (O_node var12)))))) (and (and (and (and (and (and (= var19 var24) (= var16 var6)) (= var17 var25)) (= var26 var7)) (= var21 3)) (= var10 var25)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var6 (* (- 2) var31)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var6 (* (- 2) var31)))) (- 1)))) (or (not (<= 0 (+ (+ var6 (* (- 2) var31)) (- 1)))) (<= 0 (+ var6 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var6 (* (- 2) var31))) (- 1)))) (<= 0 (+ (* (- 1) var6) (- 1))))) (= var8 var31)))) (and (and (and (and (and (and (= var24 (write var27 var5 (O_node (node var30 (data (getnode (read var27 var5))))))) (= var6 var23)) (= var25 var0)) (= var29 var11)) (= var9 var28)) (= var7 var30)) (= var20 var5))))) (inv_main52 var1 var18 var2 var15 var14 var13 var3 var4 var22 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main21 var2 var1 var0 var5 var3 var6 var4) (not (<= 0 (+ (+ var5 (- 1)) (- 1)))))) (inv_main22 var2 var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var2 var1 var0 var5 var3 var6 var4)) (inv_main18 (write var2 var4 (O_node (node nullAddr (data (getnode (read var2 var4)))))) var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (and (inv_main73 var5 var1 var0 var2 var4 var3) (= var0 (data (getnode (read var5 var4)))))) (inv_main76 var5 var1 var0 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)) (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 node) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main21 var11 var9 var0 var15 var12 var16 var6) (and (and (= nullAddr var5) (and (and (and (and (and (and (and (and (= var4 (newHeap (alloc var11 (O_node var7)))) (= var10 var9)) (= var1 var0)) (= var13 var15)) (= var8 var12)) (= var14 var16)) (= var2 var6)) (= var3 var12)) (= var5 (newAddr (alloc var11 (O_node var7)))))) (<= 0 (+ (+ var15 (- 1)) (- 1)))))) (inv_main31 var4 var10 var1 var13 var8 var14 var2 var3 var5 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main88 var11 var8 var0 var9 var5 var4 var7) (and (not (= var13 var3)) (and (and (and (and (and (and (and (= var10 var11) (= var6 var8)) (= var2 var0)) (= var14 var9)) (= var12 var5)) (= var1 var4)) (= var3 var7)) (= var13 (next (getnode (read var11 var7)))))))) (inv_main92 var10 var6 var2 var14 var12 var1 var3 var13)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int) (var21 Int) (var22 Int) (var23 Addr) (var24 Heap) (var25 Addr)) (or (not (and (inv_main92 var19 var16 var1 var17 var5 var4 var13 var15) (and (not (= var11 var9)) (and (and (and (and (and (and (and (and (and (= var24 var19) (= var2 var16)) (= var22 var1)) (= var3 var17)) (= var10 var5)) (= var21 var4)) (= var12 var13)) (= var6 var15)) (= var23 (next (getnode (read var19 var15))))) (and (and (and (and (and (and (and (and (= var7 (write var24 var6 defObj)) (= var20 var2)) (= var0 var22)) (= var18 var3)) (= var8 var10)) (= var14 var21)) (= var9 var12)) (= var25 var6)) (= var11 var23)))))) (inv_main92 var7 var20 var0 var18 var8 var14 var9 var11)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main59 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (and (not (= var7 nullAddr)) (not (<= 0 (+ var2 (- 1))))))) (inv_main65 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main59 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (and (= var5 nullAddr) (and (= var7 nullAddr) (not (<= 0 (+ var2 (- 1)))))))) (inv_main70 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main59 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (and (not (= var5 nullAddr)) (and (= var7 nullAddr) (not (<= 0 (+ var2 (- 1)))))))) (inv_main69 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (inv_main65 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8)) (inv_main67 (write var6 var7 (O_node (node var9 (data (getnode (read var6 var7)))))) var3 var0 var5 var4 var1 var2 var9 var7 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main76 var7 var2 var0 var3 var6 var5) (and (not (= nullAddr var12)) (and (= (+ var10 1) (+ 1 var11)) (and (= var9 var12) (and (and (and (and (and (and (= var1 var7) (= var11 var2)) (= var8 var0)) (= var12 var3)) (= var4 var6)) (= var10 var5)) (= var9 (next (getnode (read var7 var6)))))))))) (inv_main88 var1 var11 var8 var12 var9 (+ var10 1) var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (inv_main69 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8)) (inv_main71 (write var6 var9 (O_node (node var5 (data (getnode (read var6 var9)))))) var3 var0 var5 var4 var1 var2 var9 var7 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main59 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (<= 0 (+ var2 (- 1))))) (inv_main62 var6 var3 var0 var5 var4 var1 var2 var9 var8 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Int)) (or (not (and (inv_main62 var15 var13 var0 var14 var3 var1 var2 var12 var10 var17) (and (and (and (and (and (and (and (and (and (and (= var4 var15) (= var6 var13)) (= var20 var0)) (= var16 var14)) (= var18 var3)) (= var11 var1)) (= var8 var2)) (= var7 var12)) (= var19 var10)) (= var9 var17)) (= var5 (next (getnode (read var15 var17))))))) (inv_main59 var4 var6 var20 var16 var18 var11 (+ var8 (- 1)) var7 var19 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Heap) (var23 Int) (var24 Int) (var25 Heap) (var26 Int)) (or (not (and (inv_main55 var17 var12 var1 var14 var5 var2 var3 var15 var18) (and (and (and (and (and (and (and (and (and (= var22 var25) (= var11 var10)) (= var24 var4)) (= var9 var6)) (= var0 var26)) (= var16 var23)) (= var13 var7)) (= var8 var19)) (= var21 nullAddr)) (and (and (and (and (and (and (and (and (= var25 (write var17 var18 (O_node (node (next (getnode (read var17 var18))) var15)))) (= var10 var12)) (= var4 var1)) (= var6 var14)) (= var26 var5)) (= var23 var2)) (= var7 var3)) (= var20 var15)) (= var19 var18))))) (inv_main59 var22 var11 var24 var9 var0 var16 var13 var8 var21 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (and (inv_main73 var5 var1 var0 var2 var4 var3) (not (= var0 (data (getnode (read var5 var4))))))) (inv_main95 var5 var1 var0 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main76 var7 var2 var0 var3 var6 var5) (and (not (= (+ var10 1) (+ 1 var11))) (and (= var9 var12) (and (and (and (and (and (and (= var1 var7) (= var11 var2)) (= var8 var0)) (= var12 var3)) (= var4 var6)) (= var10 var5)) (= var9 (next (getnode (read var7 var6))))))))) (inv_main95 var1 var11 var8 var12 var9 (+ var10 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr)) (or (not (and (inv_main36 var10 var7 var0 var13 var11 var14 var3 var2) (and (and (and (and (and (and (and (= var9 (write var10 var2 (O_node (node var14 (data (getnode (read var10 var2))))))) (= var12 var7)) (= var1 var0)) (= var4 var13)) (= var8 var11)) (= var15 var14)) (= var5 var3)) (= var6 var2)))) (inv_main21 var9 var12 var1 (+ var4 (- 1)) var8 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Heap) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var10 var8 var0 var13 var11 var6 var5) (and (and (and (and (and (and (= var9 (write var10 var5 (O_node (node (next (getnode (read var10 var5))) var6)))) (= var12 var8)) (= var3 var0)) (= var7 var13)) (= var4 var11)) (= var1 var6)) (= var2 var5)))) (inv_main21 var9 var12 var3 var7 var4 var2 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 node) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 Heap) (var22 Heap) (var23 Int) (var24 Addr) (var25 Heap) (var26 Int) (var27 Heap) (var28 Int) (var29 Int) (var30 Addr) (var31 Int)) (or (not (and (inv_main22 var25 var20 var0 var6 var26 var30 var1) (and (and (and (not (= nullAddr var14)) (and (and (and (and (and (and (and (and (= var22 (newHeap (alloc var27 (O_node var7)))) (= var10 var28)) (= var5 var19)) (= var8 var24)) (= var9 var12)) (= var11 var15)) (= var18 var17)) (= var13 var15)) (= var14 (newAddr (alloc var27 (O_node var7)))))) (and (and (and (and (and (and (= var27 var21) (= var28 var2)) (= var19 var23)) (= var24 var3)) (= var12 3)) (= var15 var23)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var2 (* (- 2) var31)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var2 (* (- 2) var31)))) (- 1)))) (or (not (<= 0 (+ (+ var2 (* (- 2) var31)) (- 1)))) (<= 0 (+ var2 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var2 (* (- 2) var31))) (- 1)))) (<= 0 (+ (* (- 1) var2) (- 1))))) (= var17 var31)))) (and (and (and (and (and (and (= var21 (write var25 var1 (O_node (node var30 (data (getnode (read var25 var1))))))) (= var2 var20)) (= var23 var0)) (= var29 var6)) (= var4 var26)) (= var3 var30)) (= var16 var1))))) (inv_main49 var22 var10 var5 var8 var9 var11 var18 var13 var14)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main76 var7 var2 var0 var3 var6 var5) (and (not (= var9 var12)) (and (and (and (and (and (and (= var1 var7) (= var11 var2)) (= var8 var0)) (= var12 var3)) (= var4 var6)) (= var10 var5)) (= var9 (next (getnode (read var7 var6)))))))) (inv_main73 var1 var11 var8 var12 var9 (+ var10 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main67 var13 var11 var1 var12 var4 var2 var3 var9 var7 var15) (and (and (and (and (and (and (= var6 (write var13 var9 (O_node (node var15 (data (getnode (read var13 var9))))))) (= var0 var11)) (= var16 var1)) (= var14 var12)) (= var8 var4)) (= var5 var2)) (= var10 var3)))) (inv_main73 var6 var0 var16 var14 var14 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr) (var14 Heap) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr)) (or (not (and (inv_main71 var14 var12 var1 var13 var5 var2 var3 var9 var6 var16) (and (and (and (and (and (and (and (and (and (= var11 (write var14 var13 (O_node (node var9 (data (getnode (read var14 var13))))))) (= var10 var12)) (= var4 var1)) (= var8 var13)) (= var15 var5)) (= var0 var2)) (= var18 var3)) (= var17 var9)) (= var7 var6)) (= var19 var16)))) (inv_main73 var11 var10 var4 var17 var17 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Heap) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int)) (or (not (and (inv_main70 var15 var12 var1 var14 var5 var2 var3 var10 var7 var18) (and (and (and (and (and (and (and (and (and (= var9 (write var15 var10 (O_node (node var10 (data (getnode (read var15 var10))))))) (= var13 var12)) (= var8 var1)) (= var17 var14)) (= var6 var5)) (= var19 var2)) (= var16 var3)) (= var4 var10)) (= var11 var7)) (= var0 var18)))) (inv_main73 var9 var13 var8 var4 var4 0)))) +(assert (forall ((var0 node) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main21 var12 var8 var1 var15 var13 var16 var6) (and (and (not (= nullAddr var2)) (and (and (and (and (and (and (and (and (= var3 (newHeap (alloc var12 (O_node var0)))) (= var7 var8)) (= var4 var1)) (= var11 var15)) (= var10 var13)) (= var14 var16)) (= var5 var6)) (= var9 var13)) (= var2 (newAddr (alloc var12 (O_node var0)))))) (<= 0 (+ (+ var15 (- 1)) (- 1)))))) (inv_main28 var3 var7 var4 var11 var10 var14 var5 var9 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6)) (inv_main34 (write var2 var6 (O_node (node nullAddr (data (getnode (read var2 var6)))))) var1 var0 var7 var3 var8 var5 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)) (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 node) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var3 var1 var0) (and (= nullAddr var7) (and (and (and (and (and (and (= var5 (newHeap (alloc var3 (O_node var8)))) (= var4 var1)) (= var10 var0)) (= var9 var1)) (= var2 var0)) (= var6 var0)) (= var7 (newAddr (alloc var3 (O_node var8)))))))) (inv_main15 var5 var4 var10 var9 var2 var6 var7 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (inv_main49 var7 var3 var0 var5 var4 var1 var2 var6 var8)) (inv_main55 (write var7 var8 (O_node (node nullAddr (data (getnode (read var7 var8)))))) var3 var0 var5 var4 var1 var2 var6 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main34 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main36 var2 var1 var0 var6 var3 var7 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main22 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (not (and (inv_main49 var7 var3 var0 var5 var4 var1 var2 var6 var8) (not (is-O_node (read var7 var8))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (not (and (inv_main55 var7 var3 var0 var5 var4 var1 var2 var6 var8) (not (is-O_node (read var7 var8))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main62 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (not (is-O_node (read var6 var8))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main65 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (not (is-O_node (read var6 var7))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main67 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (not (is-O_node (read var6 var9))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main69 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (not (is-O_node (read var6 var9))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main71 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main70 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (not (is-O_node (read var6 var9))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main73 var5 var1 var0 var2 var4 var3) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main76 var5 var1 var0 var2 var4 var3) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr)) (not (and (inv_main88 var5 var1 var0 var2 var4 var3 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (not (and (inv_main92 var6 var2 var1 var3 var5 var4 var7 var0) (not (is-O_node (read var6 var0))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (not (inv_main95 var5 var1 var0 var2 var4 var3)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2c_insert_unequal.i.smt2 b/heap-theory-benchmarks/array/sll2c_insert_unequal.i.smt2 new file mode 100644 index 00000000..8c12e1dc --- /dev/null +++ b/heap-theory-benchmarks/array/sll2c_insert_unequal.i.smt2 @@ -0,0 +1,132 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main103 (Heap Int Int Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main107 (Heap Int Int Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main110 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Int Int Int Int Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Int Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main57 (Heap Int Int Addr Int Int Int Int Int Int Addr) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main64 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main69 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main73 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main75 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main78 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main83 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main88 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main91 (Heap Int Int Addr Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 node) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr)) (or (not (and (inv_main4 var4 var1 var0) (and (not (= nullAddr var10)) (and (and (and (and (and (and (= var9 (newHeap (alloc var4 (O_node var6)))) (= var8 var1)) (= var2 var0)) (= var5 var1)) (= var3 var0)) (= var7 var0)) (= var10 (newAddr (alloc var4 (O_node var6)))))))) (inv_main12 var9 var8 var2 var5 var3 var7 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr)) (or (not (and (inv_main34 var12 var10 var0 var16 var13 var17 var6 var4 var15) (and (and (and (and (and (and (and (and (= var8 (write var12 var15 (O_node (node (next (getnode (read var12 var15))) var4)))) (= var9 var10)) (= var11 var0)) (= var14 var16)) (= var3 var13)) (= var7 var17)) (= var5 var6)) (= var1 var4)) (= var2 var15)))) (inv_main36 var8 var9 var11 var14 var3 var7 var5 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int)) (or (not (and (inv_main78 var11 var7 var1 var8 var16 var5 var10 var2) (and (and (not (= var3 var15)) (not (= (+ var9 1) var0))) (and (and (and (and (and (and (and (and (= var14 var11) (= var13 var7)) (= var6 var1)) (= var15 var8)) (= var4 var16)) (= var0 var5)) (= var12 var10)) (= var9 var2)) (= var3 (next (getnode (read var11 var10)))))))) (inv_main75 var14 var13 var6 var15 var4 var0 var3 (+ var9 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Heap) (var15 Heap) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int) (var20 Int)) (or (not (and (inv_main69 var14 var12 var0 var13 var20 var4 var16 var19 var10 var18 var17 var6) (and (and (and (and (and (and (and (and (= var15 (write var14 var18 (O_node (node var6 (data (getnode (read var14 var18))))))) (= var11 var12)) (= var9 var0)) (= var3 var13)) (= var7 var20)) (= var2 var4)) (= var5 var16)) (= var1 var19)) (= var8 var10)))) (inv_main75 var15 var11 var9 var3 var7 var2 var3 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Int)) (or (not (and (inv_main73 var14 var9 var1 var11 var23 var3 var18 var22 var6 var20 var19 var4) (and (and (and (and (and (and (and (and (and (and (and (= var2 (write var14 var11 (O_node (node var20 (data (getnode (read var14 var11))))))) (= var10 var9)) (= var8 var1)) (= var17 var11)) (= var0 var23)) (= var21 var3)) (= var5 var18)) (= var15 var22)) (= var13 var6)) (= var7 var20)) (= var16 var19)) (= var12 var4)))) (inv_main75 var2 var10 var8 var7 var0 var21 var7 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int) (var23 Int)) (or (not (and (inv_main72 var15 var12 var1 var13 var23 var3 var18 var22 var8 var21 var20 var6) (and (and (and (and (and (and (and (and (and (and (and (= var9 (write var15 var21 (O_node (node var21 (data (getnode (read var15 var21))))))) (= var7 var12)) (= var10 var1)) (= var16 var13)) (= var14 var23)) (= var11 var3)) (= var17 var18)) (= var0 var22)) (= var2 var8)) (= var19 var21)) (= var5 var20)) (= var4 var6)))) (inv_main75 var9 var7 var10 var19 var14 var11 var19 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main83 var10 var6 var0 var7 var16 var4 var9 var1) (and (and (and (and (and (and (and (and (= var2 var10) (= var3 var6)) (= var11 var0)) (= var13 var7)) (= var8 var16)) (= var5 var4)) (= var12 var9)) (= var14 var1)) (= var15 (next (getnode (read var10 var9))))))) (inv_main88 var2 var3 var11 var13 var8 var5 var15 (+ var14 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main91 var11 var8 var0 var9 var16 var4 var10 var1) (and (not (= var14 var7)) (and (and (and (and (and (and (and (and (= var13 var11) (= var12 var8)) (= var5 var0)) (= var7 var9)) (= var2 var16)) (= var15 var4)) (= var3 var10)) (= var6 var1)) (= var14 (next (getnode (read var11 var10)))))))) (inv_main88 var13 var12 var5 var7 var2 var15 var14 (+ var6 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (or (not (inv_main54 var5 var2 var1 var3 var11 var4 var8 var10 var9 var0 var6 var7)) (inv_main54 var5 var2 var1 var3 var11 var4 var8 var10 var9 var0 var6 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 node) (var16 Addr) (var17 Int) (var18 Heap) (var19 Int) (var20 Int) (var21 Addr) (var22 Int) (var23 Heap) (var24 Int) (var25 Int) (var26 Heap) (var27 Int) (var28 Int) (var29 Addr) (var30 Int) (var31 Addr) (var32 Int)) (or (not (and (inv_main22 var26 var22 var0 var8 var27 var29 var4) (and (and (and (= nullAddr var31) (and (and (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var18 (O_node var15)))) (= var17 var10)) (= var24 var30)) (= var16 var2)) (= var13 var9)) (= var20 var1)) (= var3 3)) (= var19 var9)) (= var12 var1)) (= var5 var9)) (= var31 (newAddr (alloc var18 (O_node var15)))))) (and (and (and (and (and (= var18 var23) (= var10 var14)) (= var30 var28)) (= var2 var21)) (= var9 5)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var14 (* (- 2) var32)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var14 (* (- 2) var32)))) (- 1)))) (or (not (<= 0 (+ (+ var14 (* (- 2) var32)) (- 1)))) (<= 0 (+ var14 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var14 (* (- 2) var32))) (- 1)))) (<= 0 (+ (* (- 1) var14) (- 1))))) (= var1 var32)))) (and (and (and (and (and (and (= var23 (write var26 var4 (O_node (node var29 (data (getnode (read var26 var4))))))) (= var14 var22)) (= var28 var0)) (= var25 var8)) (= var6 var27)) (= var21 var29)) (= var7 var4))))) (inv_main54 var11 var17 var24 var16 var13 var20 var3 var19 var12 var5 var31 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main21 var2 var1 var0 var5 var3 var6 var4) (not (<= 0 (+ (+ var5 (- 1)) (- 1)))))) (inv_main22 var2 var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (or (not (and (inv_main61 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (and (= var2 nullAddr) (and (= var7 nullAddr) (not (<= 0 (+ var8 (- 1)))))))) (inv_main72 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var2 var1 var0 var5 var3 var6 var4)) (inv_main18 (write var2 var4 (O_node (node nullAddr (data (getnode (read var2 var4)))))) var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int)) (or (not (and (inv_main78 var11 var7 var1 var8 var16 var5 var10 var2) (and (or (= var3 var15) (= (+ var9 1) var0)) (and (and (and (and (and (and (and (and (= var14 var11) (= var13 var7)) (= var6 var1)) (= var15 var8)) (= var4 var16)) (= var0 var5)) (= var12 var10)) (= var9 var2)) (= var3 (next (getnode (read var11 var10)))))))) (inv_main76 var14 var13 var6 var15 var4 var0 var3 (+ var9 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)) (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 node) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main21 var11 var10 var0 var14 var12 var15 var8) (and (and (= nullAddr var16) (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var11 (O_node var7)))) (= var13 var10)) (= var9 var0)) (= var1 var14)) (= var2 var12)) (= var4 var15)) (= var3 var8)) (= var5 var12)) (= var16 (newAddr (alloc var11 (O_node var7)))))) (<= 0 (+ (+ var14 (- 1)) (- 1)))))) (inv_main31 var6 var13 var9 var1 var2 var4 var3 var5 var16 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (or (not (inv_main67 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)) (inv_main69 (write var4 var7 (O_node (node var9 (data (getnode (read var4 var7)))))) var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (or (not (and (inv_main61 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (and (not (= var2 nullAddr)) (and (= var7 nullAddr) (not (<= 0 (+ var8 (- 1)))))))) (inv_main71 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main75 var6 var2 var0 var3 var7 var4 var5 var1) (not (= var0 (data (getnode (read var6 var5))))))) (inv_main110 var6 var2 var0 var3 var7 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main76 var6 var2 var0 var3 var7 var4 var5 var1) (not (= var7 (data (getnode (read var6 var5))))))) (inv_main110 var6 var2 var0 var3 var7 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main88 var6 var2 var0 var3 var7 var4 var5 var1) (not (= var0 (data (getnode (read var6 var5))))))) (inv_main110 var6 var2 var0 var3 var7 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main91 var11 var8 var0 var9 var16 var4 var10 var1) (and (not (= (+ var6 1) (+ 1 var12))) (and (= var14 var7) (and (and (and (and (and (and (and (and (= var13 var11) (= var12 var8)) (= var5 var0)) (= var7 var9)) (= var2 var16)) (= var15 var4)) (= var3 var10)) (= var6 var1)) (= var14 (next (getnode (read var11 var10))))))))) (inv_main110 var13 var12 var5 var7 var2 var15 var14 (+ var6 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Heap) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Addr) (var23 Int) (var24 Int)) (or (not (and (inv_main64 var15 var13 var1 var14 var24 var5 var17 var23 var10 var22 var20 var6) (and (and (and (and (and (and (and (and (and (and (and (and (= var4 var15) (= var19 var13)) (= var12 var1)) (= var11 var14)) (= var3 var24)) (= var18 var5)) (= var16 var17)) (= var0 var23)) (= var21 var10)) (= var9 var22)) (= var7 var20)) (= var8 var6)) (= var2 (next (getnode (read var15 var6))))))) (inv_main61 var4 var19 var12 var11 var3 var18 var16 var0 (+ var21 (- 1)) var9 var7 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 Int) (var22 Int) (var23 Int) (var24 Int) (var25 Int) (var26 Heap) (var27 Int) (var28 Heap) (var29 Heap) (var30 Addr) (var31 Int) (var32 Int)) (or (not (and (inv_main57 var26 var24 var1 var9 var32 var4 var16 var31 var8 var0 var11) (and (and (and (and (and (and (and (and (and (and (and (= var28 var29) (= var5 var27)) (= var6 var21)) (= var2 var13)) (= var25 var14)) (= var20 var23)) (= var18 var15)) (= var3 var17)) (= var19 var10)) (= var12 var30)) (= var7 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var29 (write var26 var11 (O_node (node (next (getnode (read var26 var11))) var0)))) (= var27 var24)) (= var21 var1)) (= var13 var9)) (= var14 var32)) (= var23 var4)) (= var15 var16)) (= var17 var31)) (= var10 var8)) (= var22 var0)) (= var30 var11))))) (inv_main61 var28 var5 var6 var2 var25 var20 var18 var3 var19 var12 var7 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap) (var14 Heap) (var15 Int) (var16 Int) (var17 Int) (var18 node) (var19 Int) (var20 Int) (var21 Int) (var22 Int) (var23 Addr) (var24 Int) (var25 Heap) (var26 Int) (var27 Int) (var28 Heap) (var29 Int) (var30 Int) (var31 Addr) (var32 Int)) (or (not (and (inv_main22 var28 var24 var0 var11 var29 var31 var2) (and (and (and (not (= nullAddr var5)) (and (and (and (and (and (and (and (and (and (and (= var14 (newHeap (alloc var13 (O_node var18)))) (= var3 var20)) (= var16 var15)) (= var10 var9)) (= var1 var7)) (= var22 var4)) (= var19 3)) (= var27 var7)) (= var6 var4)) (= var21 var7)) (= var5 (newAddr (alloc var13 (O_node var18)))))) (and (and (and (and (and (= var13 var25) (= var20 var17)) (= var15 var30)) (= var9 var23)) (= var7 5)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var17 (* (- 2) var32)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var17 (* (- 2) var32)))) (- 1)))) (or (not (<= 0 (+ (+ var17 (* (- 2) var32)) (- 1)))) (<= 0 (+ var17 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var17 (* (- 2) var32))) (- 1)))) (<= 0 (+ (* (- 1) var17) (- 1))))) (= var4 var32)))) (and (and (and (and (and (and (= var25 (write var28 var2 (O_node (node var31 (data (getnode (read var28 var2))))))) (= var17 var24)) (= var30 var0)) (= var26 var11)) (= var8 var29)) (= var23 var31)) (= var12 var2))))) (inv_main51 var14 var3 var16 var10 var1 var22 var19 var27 var6 var21 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main75 var6 var2 var0 var3 var7 var4 var5 var1) (= var0 (data (getnode (read var6 var5)))))) (inv_main78 var6 var2 var0 var3 var7 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (or (not (and (inv_main61 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (<= 0 (+ var8 (- 1))))) (inv_main64 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var5 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr)) (or (not (and (inv_main36 var9 var8 var0 var13 var10 var14 var7 var6) (and (and (and (and (and (and (and (= var1 (write var9 var6 (O_node (node var14 (data (getnode (read var9 var6))))))) (= var3 var8)) (= var12 var0)) (= var11 var13)) (= var5 var10)) (= var15 var14)) (= var2 var7)) (= var4 var6)))) (inv_main21 var1 var3 var12 (+ var11 (- 1)) var5 var4 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var9 var7 var0 var12 var10 var5 var3) (and (and (and (and (and (and (= var6 (write var9 var3 (O_node (node (next (getnode (read var9 var3))) var5)))) (= var1 var7)) (= var8 var0)) (= var4 var12)) (= var2 var10)) (= var13 var5)) (= var11 var3)))) (inv_main21 var6 var1 var8 var4 var2 var11 var11)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main91 var11 var8 var0 var9 var16 var4 var10 var1) (and (not (= nullAddr var7)) (and (= (+ var6 1) (+ 1 var12)) (and (= var14 var7) (and (and (and (and (and (and (and (and (= var13 var11) (= var12 var8)) (= var5 var0)) (= var7 var9)) (= var2 var16)) (= var15 var4)) (= var3 var10)) (= var6 var1)) (= var14 (next (getnode (read var11 var10)))))))))) (inv_main103 var13 var12 var5 var7 var2 var15 var14 (+ var6 1) var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main88 var6 var2 var0 var3 var7 var4 var5 var1) (= var0 (data (getnode (read var6 var5)))))) (inv_main91 var6 var2 var0 var3 var7 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (or (not (inv_main71 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)) (inv_main73 (write var4 var9 (O_node (node var2 (data (getnode (read var4 var9)))))) var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (or (not (inv_main51 var5 var2 var1 var3 var10 var4 var7 var9 var8 var0 var6)) (inv_main57 (write var5 var6 (O_node (node nullAddr (data (getnode (read var5 var6)))))) var2 var1 var3 var10 var4 var7 var9 var8 var0 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 node) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main21 var11 var10 var0 var14 var12 var15 var7) (and (and (not (= nullAddr var4)) (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var11 (O_node var6)))) (= var16 var10)) (= var13 var0)) (= var2 var14)) (= var8 var12)) (= var5 var15)) (= var3 var7)) (= var1 var12)) (= var4 (newAddr (alloc var11 (O_node var6)))))) (<= 0 (+ (+ var14 (- 1)) (- 1)))))) (inv_main28 var9 var16 var13 var2 var8 var5 var3 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6)) (inv_main34 (write var2 var6 (O_node (node nullAddr (data (getnode (read var2 var6)))))) var1 var0 var7 var3 var8 var5 var4 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main103 var14 var8 var0 var11 var18 var3 var13 var2 var10) (and (not (= var1 var12)) (and (and (and (and (and (and (and (and (and (= var6 var14) (= var4 var8)) (= var17 var0)) (= var7 var11)) (= var5 var18)) (= var16 var3)) (= var9 var13)) (= var15 var2)) (= var12 var10)) (= var1 (next (getnode (read var14 var10)))))))) (inv_main107 var6 var4 var17 var7 var5 var16 var9 var15 var12 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Int) (var26 Int) (var27 Heap) (var28 Heap) (var29 Heap) (var30 Int) (var31 Int)) (or (not (and (inv_main107 var28 var25 var1 var11 var31 var4 var13 var2 var10 var5) (and (not (= var16 var3)) (and (and (and (and (and (and (and (and (and (and (and (= var29 var28) (= var14 var25)) (= var30 var1)) (= var12 var11)) (= var6 var31)) (= var8 var4)) (= var7 var13)) (= var24 var2)) (= var0 var10)) (= var21 var5)) (= var20 (next (getnode (read var28 var5))))) (and (and (and (and (and (and (and (and (and (and (= var27 (write var29 var21 defObj)) (= var15 var14)) (= var17 var30)) (= var22 var12)) (= var26 var6)) (= var9 var8)) (= var19 var7)) (= var18 var24)) (= var3 var0)) (= var23 var21)) (= var16 var20)))))) (inv_main107 var27 var15 var17 var22 var26 var9 var19 var18 var3 var16)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)) (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Heap) (var7 Int) (var8 Addr) (var9 node) (var10 Int)) (or (not (and (inv_main4 var5 var2 var1) (and (= nullAddr var8) (and (and (and (and (and (and (= var6 (newHeap (alloc var5 (O_node var9)))) (= var4 var2)) (= var7 var1)) (= var0 var2)) (= var10 var1)) (= var3 var1)) (= var8 (newAddr (alloc var5 (O_node var9)))))))) (inv_main15 var6 var4 var7 var0 var10 var3 var8 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (or (not (and (inv_main61 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (and (not (= var7 nullAddr)) (not (<= 0 (+ var8 (- 1))))))) (inv_main67 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main76 var6 var2 var0 var3 var7 var4 var5 var1) (= var7 (data (getnode (read var6 var5)))))) (inv_main83 var6 var2 var0 var3 var7 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main34 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main36 var2 var1 var0 var6 var3 var7 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main22 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main51 var5 var2 var1 var3 var10 var4 var7 var9 var8 var0 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main57 var5 var2 var1 var3 var10 var4 var7 var9 var8 var0 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (not (and (inv_main64 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (not (is-O_node (read var4 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (not (and (inv_main67 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (not (is-O_node (read var4 var7))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (not (and (inv_main69 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (not (is-O_node (read var4 var9))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (not (and (inv_main71 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (not (is-O_node (read var4 var9))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (not (and (inv_main73 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (not (and (inv_main72 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (not (is-O_node (read var4 var9))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main75 var6 var2 var0 var3 var7 var4 var5 var1) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main78 var6 var2 var0 var3 var7 var4 var5 var1) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main76 var6 var2 var0 var3 var7 var4 var5 var1) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main83 var6 var2 var0 var3 var7 var4 var5 var1) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main88 var6 var2 var0 var3 var7 var4 var5 var1) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main91 var6 var2 var0 var3 var7 var4 var5 var1) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int)) (not (and (inv_main103 var7 var2 var0 var4 var8 var5 var6 var1 var3) (not (is-O_node (read var7 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int)) (not (and (inv_main107 var7 var2 var0 var4 var9 var5 var6 var1 var3 var8) (not (is-O_node (read var7 var8))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (inv_main110 var6 var2 var0 var3 var7 var4 var5 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2c_prepend_equal.i.smt2 b/heap-theory-benchmarks/array/sll2c_prepend_equal.i.smt2 new file mode 100644 index 00000000..16f8a8d4 --- /dev/null +++ b/heap-theory-benchmarks/array/sll2c_prepend_equal.i.smt2 @@ -0,0 +1,111 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main60 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main63 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main69 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main84 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Int Int Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main91 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 node)) (or (not (and (inv_main4 var7 var3 var1) (and (not (= nullAddr var9)) (and (and (and (and (and (and (= var2 (newHeap (alloc var7 (O_node var10)))) (= var6 var3)) (= var5 var1)) (= var8 var3)) (= var4 var1)) (= var0 var1)) (= var9 (newAddr (alloc var7 (O_node var10)))))))) (inv_main12 var2 var6 var5 var8 var4 var0 var9)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr)) (or (not (and (inv_main34 var10 var9 var0 var16 var11 var17 var5 var3 var15) (and (and (and (and (and (and (and (and (= var8 (write var10 var15 (O_node (node (next (getnode (read var10 var15))) var3)))) (= var2 var9)) (= var6 var0)) (= var7 var16)) (= var13 var11)) (= var4 var17)) (= var12 var5)) (= var14 var3)) (= var1 var15)))) (inv_main36 var8 var2 var6 var7 var13 var4 var12 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int)) (or (not (and (inv_main63 var15 var11 var0 var13 var8 var7 var14 var4) (and (and (and (and (and (and (and (and (= var10 var15) (= var1 var11)) (= var16 var0)) (= var5 var13)) (= var2 var8)) (= var3 var7)) (= var12 var14)) (= var6 var4)) (= var9 (next (getnode (read var15 var4))))))) (inv_main61 var10 var1 var16 var5 var2 var3 var12 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main55 var13 var9 var1 var11 var8 var7 var3 var4) (and (not (= nullAddr var12)) (and (and (and (and (and (and (and (= var6 (write var13 var4 (O_node (node (next (getnode (read var13 var4))) var3)))) (= var0 var9)) (= var2 var1)) (= var12 var11)) (= var14 var8)) (= var15 var7)) (= var10 var3)) (= var5 var4))))) (inv_main61 var6 var0 var2 var12 var14 var15 var5 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main21 var2 var1 var0 var5 var3 var6 var4) (not (<= 0 (+ (+ var5 (- 1)) (- 1)))))) (inv_main22 var2 var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var2 var1 var0 var5 var3 var6 var4)) (inv_main18 (write var2 var4 (O_node (node nullAddr (data (getnode (read var2 var4)))))) var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)) (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 node) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main21 var12 var10 var0 var15 var13 var16 var8) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (and (= var7 (newHeap (alloc var12 (O_node var6)))) (= var4 var10)) (= var9 var0)) (= var3 var15)) (= var11 var13)) (= var2 var16)) (= var1 var8)) (= var5 var13)) (= var14 (newAddr (alloc var12 (O_node var6)))))) (<= 0 (+ (+ var15 (- 1)) (- 1)))))) (inv_main31 var7 var4 var9 var3 var11 var2 var1 var5 var14 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (and (inv_main69 var4 var1 var0 var2 var3 var5) (= var0 (data (getnode (read var4 var3)))))) (inv_main72 var4 var1 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Int)) (or (not (and (inv_main62 var14 var11 var0 var12 var9 var8 var13 var5) (and (and (and (and (and (and (and (= var10 (write var14 var13 (O_node (node var12 (data (getnode (read var14 var13))))))) (= var3 var11)) (= var1 var0)) (= var6 var12)) (= var15 var9)) (= var7 var8)) (= var4 var13)) (= var2 var5)))) (inv_main67 var10 var3 var1 var4 var15 var7 var4 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main61 var13 var9 var0 var11 var8 var7 var12 var3) (and (= var15 var6) (and (and (and (and (and (and (and (and (= var1 var13) (= var5 var9)) (= var10 var0)) (= var6 var11)) (= var2 var8)) (= var4 var7)) (= var16 var12)) (= var14 var3)) (= var15 (next (getnode (read var13 var3)))))))) (inv_main62 var1 var5 var10 var6 var2 var4 var16 var14)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main52 var6 var2 var1 var3 var0 var8 var4 var5 var7)) (inv_main52 var6 var2 var1 var3 var0 var8 var4 var5 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 node) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Heap) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Heap) (var22 Int)) (or (not (and (inv_main22 var13 var9 var0 var19 var14 var20 var5) (and (and (= nullAddr var7) (and (and (and (and (and (and (and (= var21 (newHeap (alloc var12 (O_node var6)))) (= var18 var1)) (= var15 var2)) (= var4 var16)) (= var11 3)) (= var3 var2)) (= var22 var2)) (= var7 (newAddr (alloc var12 (O_node var6)))))) (and (and (and (and (and (and (= var12 (write var13 var5 (O_node (node var20 (data (getnode (read var13 var5))))))) (= var1 var9)) (= var2 var0)) (= var10 var19)) (= var17 var14)) (= var16 var20)) (= var8 var5))))) (inv_main52 var21 var18 var15 var4 var11 var3 var22 var7 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Heap) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 node) (var20 Int) (var21 Addr) (var22 Heap)) (or (not (and (inv_main22 var12 var7 var0 var20 var13 var21 var3) (and (and (not (= nullAddr var18)) (and (and (and (and (and (and (and (= var22 (newHeap (alloc var11 (O_node var19)))) (= var10 var1)) (= var14 var2)) (= var16 var15)) (= var6 3)) (= var4 var2)) (= var8 var2)) (= var18 (newAddr (alloc var11 (O_node var19)))))) (and (and (and (and (and (and (= var11 (write var12 var3 (O_node (node var21 (data (getnode (read var12 var3))))))) (= var1 var7)) (= var2 var0)) (= var9 var20)) (= var17 var13)) (= var15 var21)) (= var5 var3))))) (inv_main49 var22 var10 var14 var16 var6 var4 var8 var18)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main55 var13 var9 var1 var11 var8 var7 var3 var4) (and (= nullAddr var12) (and (and (and (and (and (and (and (= var6 (write var13 var4 (O_node (node (next (getnode (read var13 var4))) var3)))) (= var0 var9)) (= var2 var1)) (= var12 var11)) (= var14 var8)) (= var15 var7)) (= var10 var3)) (= var5 var4))))) (inv_main60 var6 var0 var2 var5 var14 var15 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (inv_main49 var6 var2 var1 var3 var0 var7 var4 var5)) (inv_main55 (write var6 var5 (O_node (node nullAddr (data (getnode (read var6 var5)))))) var2 var1 var3 var0 var7 var4 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main72 var8 var3 var1 var5 var7 var9) (and (not (= var12 var4)) (and (and (and (and (and (and (= var0 var8) (= var6 var3)) (= var11 var1)) (= var4 var5)) (= var2 var7)) (= var10 var9)) (= var12 (next (getnode (read var8 var7)))))))) (inv_main69 var0 var6 var11 var4 var12 (+ var10 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int)) (or (not (and (inv_main60 var6 var2 var1 var3 var0 var12 var5) (and (and (and (and (and (= var11 (write var6 var5 (O_node (node var5 (data (getnode (read var6 var5))))))) (= var8 var2)) (= var10 var1)) (= var4 var3)) (= var7 var0)) (= var9 var12)))) (inv_main69 var11 var8 var10 var4 var4 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main67 var13 var10 var0 var11 var9 var8 var12 var5) (and (and (and (and (and (= var7 (write var13 var5 (O_node (node var12 (data (getnode (read var13 var5))))))) (= var3 var10)) (= var6 var0)) (= var2 var11)) (= var4 var9)) (= var1 var8)))) (inv_main69 var7 var3 var6 var2 var2 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Heap) (var13 Int) (var14 Int) (var15 Addr)) (or (not (and (inv_main36 var10 var8 var1 var14 var11 var15 var6 var5) (and (and (and (and (and (and (and (= var12 (write var10 var5 (O_node (node var15 (data (getnode (read var10 var5))))))) (= var13 var8)) (= var9 var1)) (= var0 var14)) (= var3 var11)) (= var4 var15)) (= var2 var6)) (= var7 var5)))) (inv_main21 var12 var13 var9 (+ var0 (- 1)) var3 var7 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var8 var7 var0 var12 var9 var6 var4) (and (and (and (and (and (and (= var1 (write var8 var4 (O_node (node (next (getnode (read var8 var4))) var6)))) (= var13 var7)) (= var2 var0)) (= var3 var12)) (= var10 var9)) (= var11 var6)) (= var5 var4)))) (inv_main21 var1 var13 var2 var3 var10 var5 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr)) (or (not (and (inv_main84 var12 var9 var1 var10 var11 var4 var2) (and (not (= var14 var7)) (and (and (and (and (and (and (and (= var8 var12) (= var0 var9)) (= var3 var1)) (= var6 var10)) (= var5 var11)) (= var13 var4)) (= var7 var2)) (= var14 (next (getnode (read var12 var2)))))))) (inv_main88 var8 var0 var3 var6 var5 var13 var7 var14)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Addr) (var24 Addr) (var25 Addr)) (or (not (and (inv_main88 var16 var10 var1 var11 var13 var4 var2 var23) (and (not (= var3 var25)) (and (and (and (and (and (and (and (and (and (= var0 var16) (= var5 var10)) (= var17 var1)) (= var15 var11)) (= var19 var13)) (= var18 var4)) (= var14 var2)) (= var24 var23)) (= var7 (next (getnode (read var16 var23))))) (and (and (and (and (and (and (and (and (= var6 (write var0 var24 defObj)) (= var8 var5)) (= var22 var17)) (= var12 var15)) (= var9 var19)) (= var21 var18)) (= var25 var14)) (= var20 var24)) (= var3 var7)))))) (inv_main88 var6 var8 var22 var12 var9 var21 var25 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 node) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main21 var10 var6 var0 var14 var11 var15 var4) (and (and (not (= nullAddr var1)) (and (and (and (and (and (and (and (and (= var13 (newHeap (alloc var10 (O_node var3)))) (= var12 var6)) (= var2 var0)) (= var9 var14)) (= var7 var11)) (= var5 var15)) (= var8 var4)) (= var16 var11)) (= var1 (newAddr (alloc var10 (O_node var3)))))) (<= 0 (+ (+ var14 (- 1)) (- 1)))))) (inv_main28 var13 var12 var2 var9 var7 var5 var8 var16 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6)) (inv_main34 (write var2 var6 (O_node (node nullAddr (data (getnode (read var2 var6)))))) var1 var0 var7 var3 var8 var5 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)) (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 node) (var8 Int) (var9 Heap) (var10 Int)) (or (not (and (inv_main4 var4 var3 var0) (and (= nullAddr var1) (and (and (and (and (and (and (= var9 (newHeap (alloc var4 (O_node var7)))) (= var2 var3)) (= var8 var0)) (= var6 var3)) (= var5 var0)) (= var10 var0)) (= var1 (newAddr (alloc var4 (O_node var7)))))))) (inv_main15 var9 var2 var8 var6 var5 var10 var1 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (and (inv_main69 var4 var1 var0 var2 var3 var5) (not (= var0 (data (getnode (read var4 var3))))))) (inv_main91 var4 var1 var0 var2 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main72 var8 var3 var1 var5 var7 var9) (and (not (= (+ var11 1) (+ 1 var6))) (and (= var12 var4) (and (and (and (and (and (and (= var0 var8) (= var6 var3)) (= var10 var1)) (= var4 var5)) (= var2 var7)) (= var11 var9)) (= var12 (next (getnode (read var8 var7))))))))) (inv_main91 var0 var6 var10 var4 var12 (+ var11 1))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main72 var8 var3 var1 var5 var7 var9) (and (not (= nullAddr var4)) (and (= (+ var11 1) (+ 1 var6)) (and (= var12 var4) (and (and (and (and (and (and (= var0 var8) (= var6 var3)) (= var10 var1)) (= var4 var5)) (= var2 var7)) (= var11 var9)) (= var12 (next (getnode (read var8 var7)))))))))) (inv_main84 var0 var6 var10 var4 var12 (+ var11 1) var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main61 var13 var10 var1 var11 var7 var6 var12 var3) (and (not (= var4 var15)) (and (and (and (and (and (and (and (and (= var9 var13) (= var8 var10)) (= var2 var1)) (= var15 var11)) (= var14 var7)) (= var0 var6)) (= var16 var12)) (= var5 var3)) (= var4 (next (getnode (read var13 var3)))))))) (inv_main63 var9 var8 var2 var15 var14 var0 var16 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main34 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main36 var2 var1 var0 var6 var3 var7 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main22 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main49 var6 var2 var1 var3 var0 var7 var4 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main55 var6 var2 var1 var3 var0 var7 var4 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (not (and (inv_main60 var5 var2 var1 var3 var0 var6 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main61 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main63 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main62 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main67 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main69 var4 var1 var0 var2 var3 var5) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main72 var4 var1 var0 var2 var3 var5) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (not (and (inv_main84 var5 var2 var0 var3 var4 var6 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr)) (not (and (inv_main88 var5 var2 var0 var3 var4 var6 var1 var7) (not (is-O_node (read var5 var7))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (not (inv_main91 var4 var1 var0 var2 var3 var5)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2c_remove_all.i.smt2 b/heap-theory-benchmarks/array/sll2c_remove_all.i.smt2 new file mode 100644 index 00000000..6dcd2eba --- /dev/null +++ b/heap-theory-benchmarks/array/sll2c_remove_all.i.smt2 @@ -0,0 +1,87 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main45 (Heap Int Int Addr Int Int) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main53 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 node)) (or (not (and (inv_main4 var4 var1 var0) (and (not (= nullAddr var8)) (and (and (and (and (and (and (= var5 (newHeap (alloc var4 (O_node var10)))) (= var3 var1)) (= var7 var0)) (= var6 var1)) (= var2 var0)) (= var9 var0)) (= var8 (newAddr (alloc var4 (O_node var10)))))))) (inv_main12 var5 var3 var7 var6 var2 var9 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr)) (or (not (and (inv_main34 var6 var5 var0 var14 var7 var15 var2 var1 var13) (and (and (and (and (and (and (and (and (= var12 (write var6 var13 (O_node (node (next (getnode (read var6 var13))) var1)))) (= var10 var5)) (= var8 var0)) (= var4 var14)) (= var16 var7)) (= var9 var15)) (= var17 var2)) (= var11 var1)) (= var3 var13)))) (inv_main36 var12 var10 var8 var4 var16 var9 var17 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main41 var3 var1 var0 var2 var4) (<= 0 (+ (+ var1 (* (- 1) var4)) (- 1))))) (inv_main45 var3 var1 var0 var2 var4 3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main21 var2 var1 var0 var5 var3 var6 var4) (not (<= 0 (+ (+ var5 (- 1)) (- 1)))))) (inv_main22 var2 var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var2 var1 var0 var5 var3 var6 var4)) (inv_main18 (write var2 var4 (O_node (node nullAddr (data (getnode (read var2 var4)))))) var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)) (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 node) (var16 Addr)) (or (not (and (inv_main21 var10 var8 var0 var13 var11 var14 var6) (and (and (= nullAddr var4) (and (and (and (and (and (and (and (and (= var5 (newHeap (alloc var10 (O_node var15)))) (= var7 var8)) (= var2 var0)) (= var12 var13)) (= var3 var11)) (= var1 var14)) (= var16 var6)) (= var9 var11)) (= var4 (newAddr (alloc var10 (O_node var15)))))) (<= 0 (+ (+ var13 (- 1)) (- 1)))))) (inv_main31 var5 var7 var2 var12 var3 var1 var16 var9 var4 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main52 var12 var8 var0 var9 var16 var4 var10 var15) (and (= var1 var14) (and (and (and (and (and (and (and (and (= var2 var12) (= var11 var8)) (= var5 var0)) (= var14 var9)) (= var13 var16)) (= var6 var4)) (= var3 var10)) (= var7 var15)) (= var1 (next (getnode (read var12 var15)))))))) (inv_main53 var2 var11 var5 var14 var13 var6 var3 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Int)) (or (not (and (inv_main53 var16 var12 var1 var14 var23 var7 var15 var22) (and (and (and (and (and (and (and (and (= var4 (write var16 var22 (O_node (node var15 (data (getnode (read var16 var22))))))) (= var20 var12)) (= var17 var1)) (= var6 var14)) (= var19 var23)) (= var11 var7)) (= var2 var15)) (= var18 var22)) (and (and (and (and (and (and (and (= var8 (write var4 var6 defObj)) (= var5 var20)) (= var3 var17)) (= var0 var6)) (= var10 var19)) (= var9 var11)) (= var13 var2)) (= var21 var18))))) (inv_main41 var8 var5 var3 var13 (+ var10 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Heap) (var18 Int) (var19 Heap) (var20 Int) (var21 Heap) (var22 Int) (var23 Int) (var24 Addr) (var25 Int)) (or (not (and (inv_main45 var19 var15 var1 var16 var25 var6) (and (and (and (= var24 var12) (and (and (and (and (and (and (= var17 var19) (= var0 var15)) (= var5 var1)) (= var12 var16)) (= var2 var25)) (= var9 var6)) (= var24 (next (getnode (read var19 var16)))))) (and (and (and (and (and (and (= var21 (write var17 var12 defObj)) (= var8 var0)) (= var20 var5)) (= var11 var12)) (= var23 var2)) (= var18 var9)) (= var14 var24))) (and (and (and (and (and (= var7 var21) (= var13 var8)) (= var22 var20)) (= var3 nullAddr)) (= var10 var23)) (= var4 var18))))) (inv_main41 var7 var13 var22 var3 (+ var10 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main22 var5 var4 var0 var12 var6 var13 var2) (and (and (and (and (and (and (= var9 (write var5 var2 (O_node (node var13 (data (getnode (read var5 var2))))))) (= var1 var4)) (= var7 var0)) (= var3 var12)) (= var10 var6)) (= var8 var13)) (= var11 var2)))) (inv_main41 var9 var1 var7 var8 0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main36 var11 var9 var1 var13 var12 var14 var5 var4) (and (and (and (and (and (and (and (= var0 (write var11 var4 (O_node (node var14 (data (getnode (read var11 var4))))))) (= var15 var9)) (= var8 var1)) (= var3 var13)) (= var2 var12)) (= var7 var14)) (= var10 var5)) (= var6 var4)))) (inv_main21 var0 var15 var8 (+ var3 (- 1)) var2 var6 var10)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var8 var6 var0 var12 var9 var5 var4) (and (and (and (and (and (and (= var1 (write var8 var4 (O_node (node (next (getnode (read var8 var4))) var5)))) (= var10 var6)) (= var3 var0)) (= var2 var12)) (= var11 var9)) (= var13 var5)) (= var7 var4)))) (inv_main21 var1 var10 var3 var2 var11 var7 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main54 var12 var6 var0 var9 var16 var1 var10 var15) (and (and (and (and (and (and (and (and (= var8 var12) (= var2 var6)) (= var5 var0)) (= var14 var9)) (= var13 var16)) (= var4 var1)) (= var11 var10)) (= var7 var15)) (= var3 (next (getnode (read var12 var15))))))) (inv_main52 var8 var2 var5 var14 var13 var4 var11 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int)) (or (not (and (inv_main45 var5 var2 var0 var3 var12 var7) (and (not (= var11 var4)) (and (and (and (and (and (and (= var6 var5) (= var1 var2)) (= var9 var0)) (= var4 var3)) (= var10 var12)) (= var8 var7)) (= var11 (next (getnode (read var5 var3)))))))) (inv_main52 var6 var1 var9 var4 var10 var8 var11 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 node) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main21 var10 var8 var0 var13 var11 var14 var5) (and (and (not (= nullAddr var15)) (and (and (and (and (and (and (and (and (= var3 (newHeap (alloc var10 (O_node var6)))) (= var12 var8)) (= var9 var0)) (= var4 var13)) (= var2 var11)) (= var1 var14)) (= var7 var5)) (= var16 var11)) (= var15 (newAddr (alloc var10 (O_node var6)))))) (<= 0 (+ (+ var13 (- 1)) (- 1)))))) (inv_main28 var3 var12 var9 var4 var2 var1 var7 var16 var15)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6)) (inv_main34 (write var2 var6 (O_node (node nullAddr (data (getnode (read var2 var6)))))) var1 var0 var7 var3 var8 var5 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)) (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 node) (var10 Int)) (or (not (and (inv_main4 var5 var3 var0) (and (= nullAddr var7) (and (and (and (and (and (and (= var4 (newHeap (alloc var5 (O_node var9)))) (= var1 var3)) (= var2 var0)) (= var10 var3)) (= var8 var0)) (= var6 var0)) (= var7 (newAddr (alloc var5 (O_node var9)))))))) (inv_main15 var4 var1 var2 var10 var8 var6 var7 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main52 var11 var7 var0 var8 var16 var5 var9 var15) (and (not (= var13 var2)) (and (and (and (and (and (and (and (and (= var10 var11) (= var12 var7)) (= var1 var0)) (= var2 var8)) (= var14 var16)) (= var6 var5)) (= var4 var9)) (= var3 var15)) (= var13 (next (getnode (read var11 var15)))))))) (inv_main54 var10 var12 var1 var2 var14 var6 var4 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main41 var3 var1 var0 var2 var4) (and (not (= nullAddr var2)) (not (<= 0 (+ (+ var1 (* (- 1) var4)) (- 1))))))) (inv_main62 var3 var1 var0 var2 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main34 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main36 var2 var1 var0 var6 var3 var7 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main22 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int)) (not (and (inv_main45 var3 var1 var0 var2 var5 var4) (not (is-O_node (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main52 var4 var1 var0 var2 var7 var5 var3 var6) (not (is-O_node (read var4 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main54 var4 var1 var0 var2 var7 var5 var3 var6) (not (is-O_node (read var4 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main53 var4 var1 var0 var2 var7 var5 var3 var6) (not (is-O_node (read var4 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int)) (not (inv_main62 var3 var1 var0 var2 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2c_remove_all_reverse.i.smt2 b/heap-theory-benchmarks/array/sll2c_remove_all_reverse.i.smt2 new file mode 100644 index 00000000..86a9bd72 --- /dev/null +++ b/heap-theory-benchmarks/array/sll2c_remove_all_reverse.i.smt2 @@ -0,0 +1,91 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main57 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int)) (or (not (inv_main31 var7 var1 var9 var3 var4 var8 var0 var2 var6 var5)) (inv_main31 var7 var1 var9 var3 var4 var8 var0 var2 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 node) (var15 Int) (var16 Int)) (or (not (and (inv_main21 var11 var1 var15 var3 var4 var6 var8) (and (and (= nullAddr var10) (and (and (and (and (and (and (and (and (= var5 (newHeap (alloc var11 (O_node var14)))) (= var0 var1)) (= var12 var15)) (= var9 var3)) (= var13 var4)) (= var7 var6)) (= var2 var8)) (= var16 var4)) (= var10 (newAddr (alloc var11 (O_node var14)))))) (<= 0 (+ (+ var3 (- 1)) (- 1)))))) (inv_main31 var5 var0 var12 var9 var13 var7 var2 var16 var10 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr)) (or (not (and (inv_main62 var7 var0 var9 var10 var6 var4 var13 var3) (and (and (and (and (and (= var12 (write var7 var3 (O_node (node var10 (data (getnode (read var7 var3))))))) (= var2 var0)) (= var11 var9)) (= var8 var10)) (= var1 var6)) (= var5 var4)))) (inv_main43 var12 var2 var11 var8 (+ var1 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Heap) (var16 Heap) (var17 Heap) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 Heap) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr)) (or (not (and (inv_main49 var23 var1 var9 var10 var19 var13 var27) (and (and (and (= var24 var25) (and (= var26 var25) (and (and (and (and (and (and (and (= var17 var23) (= var2 var1)) (= var4 var9)) (= var25 var10)) (= var22 var19)) (= var18 var13)) (= var24 var27)) (= var26 (next (getnode (read var23 var27))))))) (and (and (and (and (and (and (= var16 (write var17 var25 defObj)) (= var0 var2)) (= var12 var4)) (= var7 var25)) (= var21 var22)) (= var5 var18)) (= var14 var24))) (and (and (and (and (and (= var15 var16) (= var11 var0)) (= var6 var12)) (= var20 nullAddr)) (= var8 var21)) (= var3 var5))))) (inv_main43 var15 var11 var6 var20 (+ var8 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main22 var11 var0 var13 var2 var3 var5 var9) (and (and (and (and (and (and (= var4 (write var11 var9 (O_node (node var5 (data (getnode (read var11 var9))))))) (= var12 var0)) (= var1 var13)) (= var6 var2)) (= var8 var3)) (= var10 var5)) (= var7 var9)))) (inv_main43 var4 var12 var1 var10 0)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var5 var0 var8) (and (not (= nullAddr var4)) (and (and (and (and (and (and (= var6 (newHeap (alloc var5 (O_node var1)))) (= var10 var0)) (= var9 var8)) (= var7 var0)) (= var2 var8)) (= var3 var8)) (= var4 (newAddr (alloc var5 (O_node var1)))))))) (inv_main12 var6 var10 var9 var7 var2 var3 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main43 var2 var0 var3 var4 var1) (and (not (= nullAddr var4)) (not (<= 0 (+ (+ var0 (* (- 1) var1)) (- 1))))))) (inv_main66 var2 var0 var3 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int)) (or (not (and (inv_main21 var4 var1 var6 var2 var3 var5 var0) (not (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main22 var4 var1 var6 var2 var3 var5 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main59 var10 var0 var12 var14 var9 var6 var16 var4) (and (and (and (and (and (and (and (and (= var11 var10) (= var13 var0)) (= var8 var12)) (= var3 var14)) (= var2 var9)) (= var15 var6)) (= var1 var16)) (= var7 var4)) (= var5 (next (getnode (read var10 var4))))))) (inv_main57 var11 var13 var8 var3 var2 var15 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main49 var9 var1 var11 var13 var7 var2 var14) (and (not (= var10 var12)) (and (= var0 var12) (and (and (and (and (and (and (and (= var4 var9) (= var3 var1)) (= var5 var11)) (= var12 var13)) (= var8 var7)) (= var6 var2)) (= var10 var14)) (= var0 (next (getnode (read var9 var14))))))))) (inv_main57 var4 var3 var5 var12 var8 var6 var10 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 node) (var15 Addr) (var16 Addr)) (or (not (and (inv_main21 var11 var0 var13 var2 var3 var7 var10) (and (and (not (= nullAddr var6)) (and (and (and (and (and (and (and (and (= var4 (newHeap (alloc var11 (O_node var14)))) (= var12 var0)) (= var5 var13)) (= var8 var2)) (= var9 var3)) (= var15 var7)) (= var16 var10)) (= var1 var3)) (= var6 (newAddr (alloc var11 (O_node var14)))))) (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main28 var4 var12 var5 var8 var9 var15 var16 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (inv_main28 var6 var1 var8 var3 var4 var7 var0 var2 var5)) (inv_main34 (write var6 var5 (O_node (node nullAddr (data (getnode (read var6 var5)))))) var1 var8 var3 var4 var7 var0 var2 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var3 var0 var5 var1 var2 var6 var4)) (inv_main18 (write var3 var4 (O_node (node nullAddr (data (getnode (read var3 var4)))))) var0 var5 var1 var2 var6 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main57 var11 var0 var13 var14 var8 var4 var16 var3) (and (= var15 var1) (and (and (and (and (and (and (and (and (= var6 var11) (= var10 var0)) (= var5 var13)) (= var9 var14)) (= var12 var8)) (= var7 var4)) (= var1 var16)) (= var2 var3)) (= var15 (next (getnode (read var11 var3)))))))) (inv_main62 (write var6 var1 defObj) var10 var5 var9 var12 var7 var1 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main51 var7 var0 var10 var11 var5 var4 var14) (and (and (and (and (and (and (and (= var1 var7) (= var8 var0)) (= var3 var10)) (= var2 var11)) (= var9 var5)) (= var6 var4)) (= var12 var14)) (= var13 (next (getnode (read var7 var14))))))) (inv_main49 var1 var8 var3 var2 var9 var6 var13)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main43 var2 var0 var3 var4 var1) (<= 0 (+ (+ var0 (* (- 1) var1)) (- 1))))) (inv_main49 var2 var0 var3 var4 var1 3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main57 var11 var0 var12 var13 var9 var5 var16 var2) (and (not (= var14 var7)) (and (and (and (and (and (and (and (and (= var6 var11) (= var3 var0)) (= var8 var12)) (= var1 var13)) (= var10 var9)) (= var4 var5)) (= var7 var16)) (= var15 var2)) (= var14 (next (getnode (read var11 var2)))))))) (inv_main59 var6 var3 var8 var1 var10 var4 var7 var15)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Addr)) (or (not (and (inv_main34 var13 var0 var16 var1 var2 var7 var9 var10 var12) (and (and (and (and (and (and (and (and (= var8 (write var13 var12 (O_node (node (next (getnode (read var13 var12))) var10)))) (= var5 var0)) (= var4 var16)) (= var14 var1)) (= var3 var2)) (= var11 var7)) (= var6 var9)) (= var15 var10)) (= var17 var12)))) (inv_main36 var8 var5 var4 var14 var3 var11 var6 var17)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var3 var0 var6 var1 var2 var7 var4 var5)) (inv_main15 var3 var0 var6 var1 var2 var7 var4 var5)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main4 var5 var0 var6) (and (= nullAddr var9) (and (and (and (and (and (and (= var8 (newHeap (alloc var5 (O_node var1)))) (= var4 var0)) (= var7 var6)) (= var10 var0)) (= var2 var6)) (= var3 var6)) (= var9 (newAddr (alloc var5 (O_node var1)))))))) (inv_main15 var8 var4 var7 var10 var2 var3 var9 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main36 var13 var0 var15 var3 var4 var6 var10 var8) (and (and (and (and (and (and (and (= var1 (write var13 var8 (O_node (node var6 (data (getnode (read var13 var8))))))) (= var14 var0)) (= var7 var15)) (= var2 var3)) (= var5 var4)) (= var9 var6)) (= var11 var10)) (= var12 var8)))) (inv_main21 var1 var14 var7 (+ var2 (- 1)) var5 var12 var11)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var8 var0 var12 var2 var3 var6 var9) (and (and (and (and (and (and (= var11 (write var8 var9 (O_node (node (next (getnode (read var8 var9))) var6)))) (= var7 var0)) (= var1 var12)) (= var4 var2)) (= var13 var3)) (= var5 var6)) (= var10 var9)))) (inv_main21 var11 var7 var1 var4 var13 var10 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Heap) (var14 Addr)) (or (not (and (inv_main49 var7 var0 var11 var12 var4 var3 var14) (and (not (= var6 var8)) (and (and (and (and (and (and (and (= var13 var7) (= var1 var0)) (= var2 var11)) (= var8 var12)) (= var5 var4)) (= var10 var3)) (= var9 var14)) (= var6 (next (getnode (read var7 var14)))))))) (inv_main51 var13 var1 var2 var8 var5 var10 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var3 var0 var5 var1 var2 var6 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var3 var0 var5 var1 var2 var6 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main28 var6 var1 var8 var3 var4 var7 var0 var2 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main34 var6 var1 var8 var3 var4 var7 var0 var2 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main36 var4 var1 var6 var2 var3 var5 var0 var7) (not (is-O_node (read var4 var7))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int)) (not (and (inv_main22 var4 var1 var6 var2 var3 var5 var0) (not (is-O_node (read var4 var0))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main49 var2 var0 var4 var5 var1 var3 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main51 var2 var0 var4 var5 var1 var3 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main57 var2 var0 var5 var6 var1 var4 var7 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main59 var2 var0 var5 var6 var1 var4 var7 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main62 var2 var0 var5 var6 var1 var4 var7 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr)) (not (inv_main66 var2 var0 var3 var4 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2c_update_all.i.smt2 b/heap-theory-benchmarks/array/sll2c_update_all.i.smt2 new file mode 100644 index 00000000..d8bc5537 --- /dev/null +++ b/heap-theory-benchmarks/array/sll2c_update_all.i.smt2 @@ -0,0 +1,99 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main64 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main79 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main34 var3 var4 var16 var0 var15 var9 var8 var12 var7) (and (and (and (and (and (and (and (and (= var13 (write var3 var7 (O_node (node (next (getnode (read var3 var7))) var12)))) (= var5 var4)) (= var2 var16)) (= var17 var0)) (= var1 var15)) (= var6 var9)) (= var11 var8)) (= var14 var12)) (= var10 var7)))) (inv_main36 var13 var5 var2 var17 var1 var6 var11 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main65 var3 var4 var11 var12 var6 var13 var2 var8) (and (not (<= 0 (+ (+ var7 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (= var10 var3) (= var9 var4)) (= var1 var11)) (= var15 var12)) (= var14 var6)) (= var0 var13)) (= var5 var2)) (= var7 var8)) (= var16 (next (getnode (read var3 var2)))))))) (inv_main64 var10 var9 var1 var15 var14 var0 var16 (+ var7 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main55 var2 var3 var0 var1 var4) (and (not (<= 0 (+ var4 (- 1)))) (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main64 var2 var3 var0 var1 var4 (+ var4 var3) var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (and (inv_main21 var3 var4 var2 var0 var1 var6 var5) (not (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main22 var3 var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr)) (or (not (and (inv_main72 var5 var6 var2 var4 var9 var8) (and (not (= var3 var7)) (and (and (and (and (and (and (= var10 var5) (= var1 var6)) (= var0 var2)) (= var12 var4)) (= var11 var9)) (= var7 var8)) (= var3 (next (getnode (read var5 var8)))))))) (inv_main76 var10 var1 var0 var12 var11 var7 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int) (var21 Int) (var22 Heap)) (or (not (and (inv_main76 var4 var5 var12 var14 var9 var17 var16) (and (not (= var2 var19)) (and (and (and (and (and (and (and (and (= var15 var4) (= var21 var5)) (= var20 var12)) (= var8 var14)) (= var1 var9)) (= var18 var17)) (= var13 var16)) (= var3 (next (getnode (read var4 var16))))) (and (and (and (and (and (and (and (= var22 (write var15 var13 defObj)) (= var11 var21)) (= var7 var20)) (= var10 var8)) (= var0 var1)) (= var19 var18)) (= var6 var13)) (= var2 var3)))))) (inv_main76 var22 var11 var7 var10 var0 var19 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int)) (or (not (and (inv_main51 var6 var7 var13 var15 var11 var17 var3 var2 var1) (and (not (<= 0 (+ (+ var14 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (and (= var0 var6) (= var5 var7)) (= var18 var13)) (= var12 var15)) (= var9 var11)) (= var8 var17)) (= var10 var3)) (= var4 var2)) (= var14 var1)) (= var16 (next (getnode (read var6 var3)))))))) (inv_main50 var0 var5 var18 var12 var9 var8 var16 var4 (+ var14 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main43 var2 var3 var0 var1 var4) (and (not (<= 0 (+ var4 (- 1)))) (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main50 var2 var3 var0 var1 var4 (+ var4 var3) var1 (+ var4 var3) var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main55 var2 var3 var0 var1 var4) (and (not (= nullAddr var1)) (not (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1))))))) (inv_main72 var2 var3 var0 var1 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int)) (or (not (and (inv_main51 var6 var7 var13 var15 var11 var17 var3 var2 var1) (and (<= 0 (+ (+ var14 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (and (= var0 var6) (= var5 var7)) (= var18 var13)) (= var12 var15)) (= var9 var11)) (= var8 var17)) (= var10 var3)) (= var4 var2)) (= var14 var1)) (= var16 (next (getnode (read var6 var3)))))))) (inv_main51 var0 var5 var18 var12 var9 var8 var16 var4 (+ var14 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main43 var2 var3 var0 var1 var4) (and (<= 0 (+ var4 (- 1))) (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main51 var2 var3 var0 var1 var4 (+ var4 var3) var1 (+ var4 var3) var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 node)) (or (not (and (inv_main4 var6 var7 var2) (and (not (= nullAddr var8)) (and (and (and (and (and (and (= var1 (newHeap (alloc var6 (O_node var10)))) (= var0 var7)) (= var4 var2)) (= var9 var7)) (= var5 var2)) (= var3 var2)) (= var8 (newAddr (alloc var6 (O_node var10)))))))) (inv_main12 var1 var0 var4 var9 var5 var3 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var4 var5 var2 var0 var1 var6 var3 var7)) (inv_main15 var4 var5 var2 var0 var1 var6 var3 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 node) (var7 Heap) (var8 Int) (var9 Addr) (var10 Heap)) (or (not (and (inv_main4 var7 var8 var2) (and (= nullAddr var9) (and (and (and (and (and (and (= var10 (newHeap (alloc var7 (O_node var6)))) (= var4 var8)) (= var3 var2)) (= var0 var8)) (= var5 var2)) (= var1 var2)) (= var9 (newAddr (alloc var7 (O_node var6)))))))) (inv_main15 var10 var4 var3 var0 var5 var1 var9 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main50 var5 var6 var12 var13 var8 var16 var3 var1 var0) (and (and (and (and (and (and (and (and (= var11 (write var5 var3 (O_node (node (next (getnode (read var5 var3))) var1)))) (= var4 var6)) (= var9 var12)) (= var10 var13)) (= var15 var8)) (= var7 var16)) (= var14 var3)) (= var2 var1)) (= var17 var0)))) (inv_main43 var11 var4 var9 var10 (+ var15 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Heap)) (or (not (and (inv_main22 var4 var5 var12 var1 var11 var8 var6) (and (and (and (and (and (and (= var13 (write var4 var6 (O_node (node var8 (data (getnode (read var4 var6))))))) (= var7 var5)) (= var10 var12)) (= var2 var1)) (= var0 var11)) (= var9 var8)) (= var3 var6)))) (inv_main43 var13 var7 var10 var9 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap)) (or (not (and (inv_main64 var4 var5 var11 var12 var7 var13 var3 var9) (and (not (= var1 var2)) (and (and (and (and (and (and (= var14 var4) (= var8 var5)) (= var0 var11)) (= var6 var12)) (= var10 var7)) (= var1 var13)) (= var2 (data (getnode (read var4 var3)))))))) (inv_main79 var14 var8 var0 var6 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 node) (var15 Addr) (var16 Addr)) (or (not (and (inv_main21 var3 var4 var12 var1 var11 var8 var5) (and (and (not (= nullAddr var10)) (and (and (and (and (and (and (and (and (= var2 (newHeap (alloc var3 (O_node var14)))) (= var13 var4)) (= var7 var12)) (= var6 var1)) (= var0 var11)) (= var16 var8)) (= var15 var5)) (= var9 var11)) (= var10 (newAddr (alloc var3 (O_node var14)))))) (<= 0 (+ (+ var1 (- 1)) (- 1)))))) (inv_main28 var2 var13 var7 var6 var0 var16 var15 var9 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main65 var3 var4 var11 var12 var6 var13 var2 var8) (and (<= 0 (+ (+ var7 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (= var10 var3) (= var9 var4)) (= var1 var11)) (= var15 var12)) (= var14 var6)) (= var0 var13)) (= var5 var2)) (= var7 var8)) (= var16 (next (getnode (read var3 var2)))))))) (inv_main65 var10 var9 var1 var15 var14 var0 var16 (+ var7 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main55 var2 var3 var0 var1 var4) (and (<= 0 (+ var4 (- 1))) (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main65 var2 var3 var0 var1 var4 (+ var4 var3) var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (inv_main12 var4 var5 var2 var0 var1 var6 var3)) (inv_main18 (write var4 var3 (O_node (node nullAddr (data (getnode (read var4 var3)))))) var5 var2 var0 var1 var6 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main43 var2 var3 var0 var1 var4) (not (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main55 var2 var3 var0 var1 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main64 var2 var3 var9 var10 var5 var11 var0 var8) (and (= var1 var12) (and (and (and (and (and (and (= var6 var2) (= var4 var3)) (= var14 var9)) (= var7 var10)) (= var13 var5)) (= var1 var11)) (= var12 (data (getnode (read var2 var0)))))))) (inv_main55 var6 var4 var14 var7 (+ var13 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Int)) (or (not (and (inv_main36 var5 var6 var11 var1 var10 var8 var7 var14) (and (and (and (and (and (and (and (= var12 (write var5 var14 (O_node (node var8 (data (getnode (read var5 var14))))))) (= var9 var6)) (= var15 var11)) (= var0 var1)) (= var2 var10)) (= var4 var8)) (= var3 var7)) (= var13 var14)))) (inv_main21 var12 var9 var15 (+ var0 (- 1)) var2 var13 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var4 var5 var10 var1 var9 var12 var3) (and (and (and (and (and (and (= var11 (write var4 var3 (O_node (node (next (getnode (read var4 var3))) var12)))) (= var0 var5)) (= var6 var10)) (= var8 var1)) (= var2 var9)) (= var13 var12)) (= var7 var3)))) (inv_main21 var11 var0 var6 var8 var2 var7 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (inv_main28 var3 var4 var2 var0 var1 var7 var6 var8 var5)) (inv_main34 (write var3 var5 (O_node (node nullAddr (data (getnode (read var3 var5)))))) var4 var2 var0 var1 var7 var6 var8 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main31 var3 var4 var2 var0 var1 var8 var6 var9 var5 var7)) (inv_main31 var3 var4 var2 var0 var1 var8 var6 var9 var5 var7)))) +(assert (forall ((var0 Int) (var1 node) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main21 var4 var5 var12 var0 var11 var8 var7) (and (and (= nullAddr var2) (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var4 (O_node var1)))) (= var9 var5)) (= var14 var12)) (= var15 var0)) (= var16 var11)) (= var13 var8)) (= var10 var7)) (= var3 var11)) (= var2 (newAddr (alloc var4 (O_node var1)))))) (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main31 var6 var9 var14 var15 var16 var13 var10 var3 var2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main12 var4 var5 var2 var0 var1 var6 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main18 var4 var5 var2 var0 var1 var6 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (not (and (inv_main28 var3 var4 var2 var0 var1 var7 var6 var8 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (not (and (inv_main34 var3 var4 var2 var0 var1 var7 var6 var8 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main36 var3 var4 var2 var0 var1 var7 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main22 var3 var4 var2 var0 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main51 var5 var6 var2 var4 var8 var7 var3 var1 var0) (not (is-O_node (read var5 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main50 var5 var6 var2 var4 var8 var7 var3 var1 var0) (not (is-O_node (read var5 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main65 var4 var5 var0 var3 var6 var2 var1 var7) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main64 var4 var5 var0 var3 var6 var2 var1 var7) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (not (and (inv_main72 var2 var3 var0 var1 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main76 var2 var3 var0 var1 var6 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (not (inv_main79 var2 var3 var0 var1 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2c_update_all_reverse.i.smt2 b/heap-theory-benchmarks/array/sll2c_update_all_reverse.i.smt2 new file mode 100644 index 00000000..6566e480 --- /dev/null +++ b/heap-theory-benchmarks/array/sll2c_update_all_reverse.i.smt2 @@ -0,0 +1,99 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main64 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main79 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main43 var4 var3 var0 var1 var2) (not (<= 0 (+ (+ var2 1) (- 1)))))) (inv_main55 var4 var3 var0 var1 (+ var3 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Int)) (or (not (and (inv_main64 var5 var11 var7 var8 var0 var1 var2 var13) (and (= var10 var6) (and (and (and (and (and (and (= var12 var5) (= var9 var11)) (= var14 var7)) (= var4 var8)) (= var3 var0)) (= var10 var1)) (= var6 (data (getnode (read var5 var2)))))))) (inv_main55 var12 var9 var14 var4 (+ var3 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (inv_main28 var7 var4 var1 var3 var6 var0 var8 var2 var5)) (inv_main34 (write var7 var5 (O_node (node nullAddr (data (getnode (read var7 var5)))))) var4 var1 var3 var6 var0 var8 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main51 var5 var14 var10 var12 var2 var18 var0 var13 var15) (and (not (<= 0 (+ (+ var16 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (and (= var8 var5) (= var3 var14)) (= var9 var10)) (= var1 var12)) (= var11 var2)) (= var4 var18)) (= var7 var0)) (= var17 var13)) (= var16 var15)) (= var6 (next (getnode (read var5 var0)))))))) (inv_main50 var8 var3 var9 var1 var11 var4 var6 var17 (+ var16 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main43 var4 var3 var0 var1 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 (+ (+ var2 1) (- 1)))))) (inv_main50 var4 var3 var0 var1 var2 (+ var2 var3) var1 (+ var2 var3) var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap)) (or (not (inv_main15 var7 var4 var1 var3 var6 var0 var2 var5)) (inv_main15 var7 var4 var1 var3 var6 var0 var2 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 node) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Int)) (or (not (and (inv_main4 var9 var5 var1) (and (= nullAddr var8) (and (and (and (and (and (and (= var7 (newHeap (alloc var9 (O_node var4)))) (= var0 var5)) (= var6 var1)) (= var2 var5)) (= var3 var1)) (= var10 var1)) (= var8 (newAddr (alloc var9 (O_node var4)))))))) (inv_main15 var7 var0 var6 var2 var3 var10 var8 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr)) (or (not (inv_main31 var8 var4 var1 var3 var7 var0 var9 var2 var5 var6)) (inv_main31 var8 var4 var1 var3 var7 var0 var9 var2 var5 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 node) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main21 var5 var12 var9 var11 var15 var1 var16) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var5 (O_node var10)))) (= var4 var12)) (= var2 var9)) (= var0 var11)) (= var8 var15)) (= var13 var1)) (= var7 var16)) (= var3 var15)) (= var14 (newAddr (alloc var5 (O_node var10)))))) (<= 0 (+ (+ var11 (- 1)) (- 1)))))) (inv_main31 var6 var4 var2 var0 var8 var13 var7 var3 var14 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (or (not (inv_main12 var6 var4 var1 var3 var5 var0 var2)) (inv_main18 (write var6 var2 (O_node (node nullAddr (data (getnode (read var6 var2)))))) var4 var1 var3 var5 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int)) (or (not (and (inv_main50 var5 var12 var8 var10 var3 var17 var1 var11 var14) (and (and (and (and (and (and (and (and (= var15 (write var5 var1 (O_node (node (next (getnode (read var5 var1))) var11)))) (= var13 var12)) (= var0 var8)) (= var16 var10)) (= var7 var3)) (= var4 var17)) (= var2 var1)) (= var6 var11)) (= var9 var14)))) (inv_main43 var15 var13 var0 var16 (+ var7 (- 1)))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main22 var5 var9 var7 var8 var10 var1 var13) (and (and (and (and (and (and (= var0 (write var5 var13 (O_node (node var1 (data (getnode (read var5 var13))))))) (= var2 var9)) (= var4 var7)) (= var12 var8)) (= var6 var10)) (= var3 var1)) (= var11 var13)))) (inv_main43 var0 var2 var4 var3 (+ var2 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main72 var9 var8 var2 var4 var7 var1) (and (not (= var12 var3)) (and (and (and (and (and (and (= var11 var9) (= var10 var8)) (= var5 var2)) (= var6 var4)) (= var0 var7)) (= var3 var1)) (= var12 (next (getnode (read var9 var1)))))))) (inv_main76 var11 var10 var5 var6 var0 var3 var12)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int)) (or (not (and (inv_main76 var8 var16 var12 var14 var6 var1 var15) (and (not (= var18 var17)) (and (and (and (and (and (and (and (and (= var0 var8) (= var4 var16)) (= var7 var12)) (= var9 var14)) (= var13 var6)) (= var20 var1)) (= var21 var15)) (= var10 (next (getnode (read var8 var15))))) (and (and (and (and (and (and (and (= var3 (write var0 var21 defObj)) (= var2 var4)) (= var22 var7)) (= var19 var9)) (= var5 var13)) (= var17 var20)) (= var11 var21)) (= var18 var10)))))) (inv_main76 var3 var2 var22 var19 var5 var17 var18)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main36 var5 var11 var8 var10 var13 var0 var14 var9) (and (and (and (and (and (and (and (= var4 (write var5 var9 (O_node (node var0 (data (getnode (read var5 var9))))))) (= var1 var11)) (= var12 var8)) (= var2 var10)) (= var15 var13)) (= var6 var0)) (= var3 var14)) (= var7 var9)))) (inv_main21 var4 var1 var12 (+ var2 (- 1)) var15 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var4 var10 var6 var8 var12 var1 var2) (and (and (and (and (and (and (= var11 (write var4 var2 (O_node (node (next (getnode (read var4 var2))) var1)))) (= var5 var10)) (= var13 var6)) (= var3 var8)) (= var9 var12)) (= var7 var1)) (= var0 var2)))) (inv_main21 var11 var5 var13 var3 var9 var0 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main65 var6 var12 var9 var10 var2 var4 var5 var15) (and (<= 0 (+ (+ var0 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (= var7 var6) (= var1 var12)) (= var3 var9)) (= var16 var10)) (= var11 var2)) (= var14 var4)) (= var13 var5)) (= var0 var15)) (= var8 (next (getnode (read var6 var5)))))))) (inv_main65 var7 var1 var3 var16 var11 var14 var8 (+ var0 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main55 var4 var3 var0 var1 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 (+ (+ var2 1) (- 1)))))) (inv_main65 var4 var3 var0 var1 var2 (+ var2 var3) var1 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int) (var9 node) (var10 Int)) (or (not (and (inv_main4 var7 var3 var1) (and (not (= nullAddr var6)) (and (and (and (and (and (and (= var5 (newHeap (alloc var7 (O_node var9)))) (= var8 var3)) (= var2 var1)) (= var4 var3)) (= var10 var1)) (= var0 var1)) (= var6 (newAddr (alloc var7 (O_node var9)))))))) (inv_main12 var5 var8 var2 var4 var10 var0 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main51 var5 var14 var10 var12 var2 var18 var0 var13 var15) (and (<= 0 (+ (+ var16 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (and (= var8 var5) (= var3 var14)) (= var9 var10)) (= var1 var12)) (= var11 var2)) (= var4 var18)) (= var7 var0)) (= var17 var13)) (= var16 var15)) (= var6 (next (getnode (read var5 var0)))))))) (inv_main51 var8 var3 var9 var1 var11 var4 var6 var17 (+ var16 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main43 var4 var3 var0 var1 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 (+ (+ var2 1) (- 1)))))) (inv_main51 var4 var3 var0 var1 var2 (+ var2 var3) var1 (+ var2 var3) var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main65 var6 var12 var9 var10 var2 var4 var5 var15) (and (not (<= 0 (+ (+ var0 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (= var7 var6) (= var1 var12)) (= var3 var9)) (= var16 var10)) (= var11 var2)) (= var14 var4)) (= var13 var5)) (= var0 var15)) (= var8 (next (getnode (read var6 var5)))))))) (inv_main64 var7 var1 var3 var16 var11 var14 var8 (+ var0 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main55 var4 var3 var0 var1 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 (+ (+ var2 1) (- 1)))))) (inv_main64 var4 var3 var0 var1 var2 (+ var2 var3) var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main64 var5 var10 var8 var9 var2 var3 var4 var11) (and (not (= var6 var14)) (and (and (and (and (and (and (= var1 var5) (= var13 var10)) (= var12 var8)) (= var0 var9)) (= var7 var2)) (= var6 var3)) (= var14 (data (getnode (read var5 var4)))))))) (inv_main79 var1 var13 var12 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 node) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main21 var7 var13 var11 var12 var15 var2 var16) (and (and (not (= nullAddr var0)) (and (and (and (and (and (and (and (and (= var3 (newHeap (alloc var7 (O_node var8)))) (= var9 var13)) (= var14 var11)) (= var6 var12)) (= var1 var15)) (= var4 var2)) (= var5 var16)) (= var10 var15)) (= var0 (newAddr (alloc var7 (O_node var8)))))) (<= 0 (+ (+ var12 (- 1)) (- 1)))))) (inv_main28 var3 var9 var14 var6 var1 var4 var5 var10 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr)) (or (not (and (inv_main21 var5 var3 var1 var2 var4 var0 var6) (not (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main22 var5 var3 var1 var2 var4 var0 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main55 var4 var3 var0 var1 var2) (and (not (= nullAddr var1)) (not (<= 0 (+ (+ var2 1) (- 1))))))) (inv_main72 var4 var3 var0 var1 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr)) (or (not (and (inv_main34 var4 var11 var8 var10 var15 var0 var17 var9 var14) (and (and (and (and (and (and (and (and (= var5 (write var4 var14 (O_node (node (next (getnode (read var4 var14))) var9)))) (= var13 var11)) (= var3 var8)) (= var12 var10)) (= var2 var15)) (= var16 var0)) (= var7 var17)) (= var1 var9)) (= var6 var14)))) (inv_main36 var5 var13 var3 var12 var2 var16 var7 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main12 var6 var4 var1 var3 var5 var0 var2) (not (is-O_node (read var6 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main18 var6 var4 var1 var3 var5 var0 var2) (not (is-O_node (read var6 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (not (and (inv_main28 var7 var4 var1 var3 var6 var0 var8 var2 var5) (not (is-O_node (read var7 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (not (and (inv_main34 var7 var4 var1 var3 var6 var0 var8 var2 var5) (not (is-O_node (read var7 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr)) (not (and (inv_main36 var6 var4 var1 var3 var5 var0 var7 var2) (not (is-O_node (read var6 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr)) (not (and (inv_main22 var5 var3 var1 var2 var4 var0 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int)) (not (and (inv_main51 var7 var5 var1 var2 var4 var8 var0 var3 var6) (not (is-O_node (read var7 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int)) (not (and (inv_main50 var7 var5 var1 var2 var4 var8 var0 var3 var6) (not (is-O_node (read var7 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (not (and (inv_main65 var7 var3 var0 var1 var2 var4 var5 var6) (not (is-O_node (read var7 var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (not (and (inv_main64 var7 var3 var0 var1 var2 var4 var5 var6) (not (is-O_node (read var7 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main72 var5 var4 var1 var2 var3 var0) (not (is-O_node (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main76 var6 var5 var1 var2 var4 var0 var3) (not (is-O_node (read var6 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (not (inv_main79 var4 var3 var0 var1 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2n_append_unequal.i.smt2 b/heap-theory-benchmarks/array/sll2n_append_unequal.i.smt2 new file mode 100644 index 00000000..4ab2f20a --- /dev/null +++ b/heap-theory-benchmarks/array/sll2n_append_unequal.i.smt2 @@ -0,0 +1,102 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main40 (Heap Int Int Addr Int Int Int Int Addr Int) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main48 (Heap Int Int Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main53 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main57 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main58 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Addr Int Addr) Bool) +(declare-fun inv_main74 (Heap Int Int Addr Int Addr Int Addr) Bool) +(declare-fun inv_main77 (Heap Int Int Addr Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 node) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int)) (or (not (and (inv_main10 var3 var10 var13 var0 var4 var12) (and (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (and (= var14 (newHeap (alloc var3 (O_node var1)))) (= var9 var10)) (= var15 var13)) (= var2 var12)) (= var8 5)) (= var5 3)) (= var6 5)) (= var7 5)) (= var11 (newAddr (alloc var3 (O_node var1)))))) (not (<= 0 (+ var0 (- 1))))))) (inv_main37 var14 var9 var15 var2 var8 var5 var6 var7 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Int) (var21 Addr) (var22 Int) (var23 Addr) (var24 Int) (var25 Int)) (or (not (and (inv_main74 var4 var12 var20 var13 var19 var7 var6 var17) (and (not (= var21 nullAddr)) (and (and (and (and (and (and (and (and (and (= var14 var4) (= var24 var12)) (= var22 var20)) (= var0 var13)) (= var25 var19)) (= var11 var7)) (= var8 var6)) (= var3 var17)) (= var1 (next (getnode (read var4 var17))))) (and (and (and (and (and (and (and (and (= var10 (write var14 var3 defObj)) (= var16 var24)) (= var9 var22)) (= var2 var0)) (= var5 var25)) (= var23 var11)) (= var18 var8)) (= var15 var3)) (= var21 var1)))))) (inv_main74 var10 var16 var9 var2 var5 var23 var18 var21)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main53 var1 var6 var5 var0 var4 var3 var2) (and (and (not (= var0 nullAddr)) (= var2 (+ 1 var6))) (= (next (getnode (read var1 var3))) nullAddr)))) (inv_main74 var1 var6 var5 var0 var4 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main57 var1 var6 var5 var0 var4 var3 var2) (and (and (not (= var0 nullAddr)) (= (+ var2 1) (+ 1 var6))) (= var4 (data (getnode (read var1 var3))))))) (inv_main74 var1 var6 var5 var0 var4 var3 (+ var2 1) var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main23 var2 var7 var12 var1 var3 var10 var15 var11) (and (and (and (and (and (and (and (= var6 (write var2 var11 (O_node (node var15 (next (getnode (read var2 var11))))))) (= var4 var7)) (= var5 var12)) (= var14 var1)) (= var9 var3)) (= var8 var10)) (= var0 var15)) (= var13 var11)))) (inv_main25 var6 var4 var5 var14 var9 var8 var13)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main59 var1 var7 var5 var0 var4 var3 var2 var6) (not (= var5 (data (getnode (read var1 var3))))))) (inv_main77 var1 var7 var5 var0 var4 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main57 var1 var6 var5 var0 var4 var3 var2) (not (= var4 (data (getnode (read var1 var3))))))) (inv_main77 var1 var6 var5 var0 var4 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main53 var1 var6 var5 var0 var4 var3 var2) (and (not (= var2 (+ 1 var6))) (= (next (getnode (read var1 var3))) nullAddr)))) (inv_main77 var1 var6 var5 var0 var4 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main57 var1 var6 var5 var0 var4 var3 var2) (and (not (= (+ var2 1) (+ 1 var6))) (= var4 (data (getnode (read var1 var3))))))) (inv_main77 var1 var6 var5 var0 var4 var3 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (and (inv_main48 var2 var8 var5 var0 var4 var1 var7 var6 var3) (not (= (next (getnode (read var2 var3))) nullAddr)))) (inv_main50 var2 var8 var5 var0 var4 var1 var7 var6 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main20 var1 var8 var4 var0 var5 var2 var7 var3 var6)) (inv_main20 var1 var8 var4 var0 var5 var2 var7 var3 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 node) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Heap)) (or (not (and (inv_main10 var2 var8 var12 var0 var3 var11) (and (and (= nullAddr var5) (and (and (and (and (and (and (and (= var14 (newHeap (alloc var2 (O_node var9)))) (= var4 var8)) (= var1 var12)) (= var7 var0)) (= var6 var3)) (= var10 var11)) (= var13 var3)) (= var5 (newAddr (alloc var2 (O_node var9)))))) (<= 0 (+ var0 (- 1)))))) (inv_main20 var14 var4 var1 var7 var6 var10 var13 var5 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (or (not (inv_main37 var2 var7 var5 var0 var4 var1 var6 var3 var8)) (inv_main43 (write var2 var8 (O_node (node (data (getnode (read var2 var8))) nullAddr))) var7 var5 var0 var4 var1 var6 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main55 var1 var6 var5 var0 var4 var3 var2) (= (next (getnode (read var1 var3))) nullAddr))) (inv_main57 var1 var6 var5 var0 var4 var3 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 node) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main10 var6 var9 var13 var0 var7 var11) (and (and (not (= nullAddr var3)) (and (and (and (and (and (and (and (= var8 (newHeap (alloc var6 (O_node var2)))) (= var4 var9)) (= var12 var13)) (= var14 var0)) (= var10 var7)) (= var1 var11)) (= var5 var7)) (= var3 (newAddr (alloc var6 (O_node var2)))))) (<= 0 (+ var0 (- 1)))))) (inv_main17 var8 var4 var12 var14 var10 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr) (var18 Heap)) (or (not (and (inv_main50 var1 var4 var13 var6 var12 var9 var16 var15 var11) (and (and (and (and (and (and (and (and (and (= var18 var1) (= var14 var4)) (= var7 var13)) (= var2 var6)) (= var8 var12)) (= var0 var9)) (= var10 var16)) (= var3 var15)) (= var17 var11)) (= var5 (next (getnode (read var1 var11))))))) (inv_main48 var18 var14 var7 var2 var8 var0 var10 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr)) (or (not (and (inv_main43 var2 var5 var15 var6 var14 var10 var16 var13 var7) (and (not (= nullAddr var12)) (and (and (and (and (and (and (and (and (= var1 (write var2 var7 (O_node (node var13 (next (getnode (read var2 var7))))))) (= var4 var5)) (= var8 var15)) (= var12 var6)) (= var3 var14)) (= var11 var10)) (= var0 var16)) (= var9 var13)) (= var17 var7))))) (inv_main48 var1 var4 var8 var12 var3 var11 var0 var17 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr)) (or (not (inv_main40 var3 var8 var6 var0 var5 var1 var7 var4 var9 var2)) (inv_main40 var3 var8 var6 var0 var5 var1 var7 var4 var9 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 node) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Heap)) (or (not (and (inv_main10 var3 var7 var13 var1 var6 var12) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (and (= var15 (newHeap (alloc var3 (O_node var2)))) (= var10 var7)) (= var8 var13)) (= var5 var12)) (= var4 5)) (= var0 3)) (= var11 5)) (= var9 5)) (= var14 (newAddr (alloc var3 (O_node var2)))))) (not (<= 0 (+ var1 (- 1))))))) (inv_main40 var15 var10 var8 var5 var4 var0 var11 var9 var14 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main55 var1 var6 var5 var0 var4 var3 var2) (not (= (next (getnode (read var1 var3))) nullAddr)))) (inv_main58 var1 var6 var5 var0 var4 var3 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main17 var1 var7 var4 var0 var5 var2 var6 var3)) (inv_main23 (write var1 var3 (O_node (node (data (getnode (read var1 var3))) nullAddr))) var7 var4 var0 var5 var2 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main58 var1 var6 var5 var0 var4 var3 var2)) (inv_main59 var1 var6 var5 var0 var4 var3 var2 (next (getnode (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap)) (or (not (and (inv_main25 var2 var6 var11 var1 var4 var10 var12) (and (and (and (and (and (and (= var13 (write var2 var12 (O_node (node (data (getnode (read var2 var12))) var10)))) (= var3 var6)) (= var9 var11)) (= var0 var1)) (= var8 var4)) (= var7 var10)) (= var5 var12)))) (inv_main10 var13 var3 var9 (+ var0 (- 1)) var8 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int)) (or (not (and (inv_main4 var3 var8 var4) (and (and (and (and (and (= var6 var3) (= var5 var8)) (= var0 var4)) (= var2 var8)) (= var7 var4)) (= var1 nullAddr)))) (inv_main10 var6 var5 var0 var2 var7 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (and (inv_main48 var2 var8 var5 var0 var4 var1 var7 var6 var3) (= (next (getnode (read var2 var3))) nullAddr))) (inv_main49 var2 var8 var5 var0 var4 var1 var7 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main53 var1 var6 var5 var0 var4 var3 var2) (not (= (next (getnode (read var1 var3))) nullAddr)))) (inv_main55 var1 var6 var5 var0 var4 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main59 var1 var7 var5 var0 var4 var3 var2 var6) (= var5 (data (getnode (read var1 var3)))))) (inv_main55 var1 var7 var5 var0 var4 var6 (+ var2 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main49 var1 var4 var10 var6 var9 var7 var12 var11 var8) (and (and (and (and (and (and (= var3 (write var1 var8 (O_node (node (data (getnode (read var1 var8))) var11)))) (= var2 var4)) (= var15 var10)) (= var5 var6)) (= var14 var9)) (= var0 var7)) (= var13 var12)))) (inv_main53 var3 var2 var15 var5 var14 var5 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr)) (or (not (and (inv_main43 var2 var5 var15 var6 var14 var10 var16 var13 var7) (and (= nullAddr var12) (and (and (and (and (and (and (and (and (= var1 (write var2 var7 (O_node (node var13 (next (getnode (read var2 var7))))))) (= var4 var5)) (= var8 var15)) (= var12 var6)) (= var3 var14)) (= var11 var10)) (= var0 var16)) (= var9 var13)) (= var17 var7))))) (inv_main53 var1 var4 var8 var17 var3 var17 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main17 var1 var7 var4 var0 var5 var2 var6 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main23 var1 var7 var4 var0 var5 var2 var6 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main25 var1 var6 var3 var0 var4 var2 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (not (and (inv_main37 var2 var7 var5 var0 var4 var1 var6 var3 var8) (not (is-O_node (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (not (and (inv_main43 var2 var7 var5 var0 var4 var1 var6 var3 var8) (not (is-O_node (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main48 var2 var8 var5 var0 var4 var1 var7 var6 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main50 var2 var8 var5 var0 var4 var1 var7 var6 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main49 var2 var8 var5 var0 var4 var1 var7 var6 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main53 var1 var6 var5 var0 var4 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main55 var1 var6 var5 var0 var4 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main58 var1 var6 var5 var0 var4 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main59 var1 var7 var5 var0 var4 var3 var2 var6) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main57 var1 var6 var5 var0 var4 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main74 var2 var7 var6 var0 var5 var4 var3 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (inv_main77 var1 var6 var5 var0 var4 var3 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2n_insert_unequal.i.smt2 b/heap-theory-benchmarks/array/sll2n_insert_unequal.i.smt2 new file mode 100644 index 00000000..a695ff4a --- /dev/null +++ b/heap-theory-benchmarks/array/sll2n_insert_unequal.i.smt2 @@ -0,0 +1,110 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Addr Int Int Int Int Int Int Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Int Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main44 (Heap Int Int Addr Int Int Int Int Int Int Addr) Bool) +(declare-fun inv_main48 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main60 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main73 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main74 (Heap Int Int Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main86 (Heap Int Int Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main89 (Heap Int Int Addr Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main23 var4 var6 var12 var1 var5 var10 var15 var11) (and (and (and (and (and (and (and (= var2 (write var4 var11 (O_node (node var15 (next (getnode (read var4 var11))))))) (= var3 var6)) (= var13 var12)) (= var8 var1)) (= var14 var5)) (= var7 var10)) (= var9 var15)) (= var0 var11)))) (inv_main25 var2 var3 var13 var8 var14 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int)) (or (not (inv_main38 var4 var10 var7 var0 var6 var8 var5 var3 var2 var1 var9)) (inv_main44 (write var4 var9 (O_node (node (data (getnode (read var4 var9))) nullAddr))) var10 var7 var0 var6 var8 var5 var3 var2 var1 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main20 var1 var8 var4 var0 var5 var2 var7 var3 var6)) (inv_main20 var1 var8 var4 var0 var5 var2 var7 var3 var6)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr)) (or (not (and (inv_main10 var4 var8 var13 var1 var7 var12) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (= var3 (newHeap (alloc var4 (O_node var0)))) (= var5 var8)) (= var11 var13)) (= var2 var1)) (= var10 var7)) (= var9 var12)) (= var6 var7)) (= var14 (newAddr (alloc var4 (O_node var0)))))) (<= 0 (+ var1 (- 1)))))) (inv_main20 var3 var5 var11 var2 var10 var9 var6 var14 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main59 var2 var7 var4 var0 var3 var5 var6 var1) (= var3 (data (getnode (read var2 var6)))))) (inv_main66 var2 var7 var4 var0 var3 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main61 var2 var8 var4 var0 var3 var5 var6 var1 var7) (and (or (= var7 nullAddr) (= (+ var1 1) var5)) (= var4 (data (getnode (read var2 var6))))))) (inv_main59 var2 var8 var4 var0 var3 var5 var7 (+ var1 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Int)) (or (not (and (inv_main54 var6 var11 var19 var12 var18 var9 var8 var3 var15 var17 var14 var7) (and (or (= var2 nullAddr) (= 0 var16)) (and (and (and (and (and (and (and (and (= var4 (write var6 var17 (O_node (node (data (getnode (read var6 var17))) var7)))) (= var5 var11)) (= var13 var19)) (= var2 var12)) (= var10 var18)) (= var16 var9)) (= var0 var8)) (= var20 var3)) (= var1 var15))))) (inv_main59 var4 var5 var13 var2 var10 var16 var2 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 node) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap)) (or (not (and (inv_main10 var2 var5 var13 var1 var3 var12) (and (and (not (= nullAddr var10)) (and (and (and (and (and (and (and (= var14 (newHeap (alloc var2 (O_node var8)))) (= var6 var5)) (= var4 var13)) (= var11 var1)) (= var7 var3)) (= var0 var12)) (= var9 var3)) (= var10 (newAddr (alloc var2 (O_node var8)))))) (<= 0 (+ var1 (- 1)))))) (inv_main17 var14 var6 var4 var11 var7 var0 var9 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Heap) (var22 Int) (var23 Addr) (var24 Addr) (var25 Int) (var26 Addr) (var27 Int) (var28 Int)) (or (not (and (inv_main86 var3 var7 var28 var24 var27 var4 var20 var16 var10) (and (not (= var1 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var11 var3) (= var8 var7)) (= var6 var28)) (= var23 var24)) (= var0 var27)) (= var18 var4)) (= var26 var20)) (= var12 var16)) (= var5 var10)) (= var14 (next (getnode (read var3 var10))))) (and (and (and (and (and (and (and (and (and (= var21 (write var11 var5 defObj)) (= var25 var8)) (= var9 var6)) (= var17 var23)) (= var15 var0)) (= var2 var18)) (= var13 var26)) (= var22 var12)) (= var19 var5)) (= var1 var14)))))) (inv_main86 var21 var25 var9 var17 var15 var2 var13 var22 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main71 var2 var7 var4 var0 var3 var5 var6 var1) (and (not (= var0 nullAddr)) (and (= var1 (+ 1 var7)) (= var6 nullAddr))))) (inv_main86 var2 var7 var4 var0 var3 var5 var6 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int)) (or (not (inv_main41 var5 var11 var8 var0 var7 var9 var6 var3 var2 var1 var10 var4)) (inv_main41 var5 var11 var8 var0 var7 var9 var6 var3 var2 var1 var10 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Int) (var8 node) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Heap) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 Addr) (var24 Int)) (or (not (and (inv_main10 var4 var9 var18 var0 var7 var15) (and (and (and (= nullAddr var11) (and (and (and (and (and (and (and (and (and (and (= var17 (newHeap (alloc var6 (O_node var8)))) (= var22 var2)) (= var12 var16)) (= var23 var20)) (= var14 var13)) (= var21 var3)) (= var19 3)) (= var1 var13)) (= var5 var3)) (= var10 var13)) (= var11 (newAddr (alloc var6 (O_node var8)))))) (and (and (and (and (and (= var6 var4) (= var2 var9)) (= var16 var18)) (= var20 var15)) (= var13 5)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var9 (* (- 2) var24)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var9 (* (- 2) var24)))) (- 1)))) (or (not (<= 0 (+ (+ var9 (* (- 2) var24)) (- 1)))) (<= 0 (+ var9 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var9 (* (- 2) var24))) (- 1)))) (<= 0 (+ (* (- 1) var9) (- 1))))) (= var3 var24)))) (not (<= 0 (+ var0 (- 1))))))) (inv_main41 var17 var22 var12 var23 var14 var21 var19 var1 var5 var10 var11 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main61 var2 var8 var4 var0 var3 var5 var6 var1 var7) (and (and (not (= var7 nullAddr)) (not (= (+ var1 1) var5))) (= var4 (data (getnode (read var2 var6))))))) (inv_main60 var2 var8 var4 var0 var3 var5 var7 (+ var1 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Int)) (or (not (and (inv_main54 var6 var11 var19 var12 var18 var9 var8 var3 var15 var17 var14 var7) (and (and (not (= var2 nullAddr)) (not (= 0 var16))) (and (and (and (and (and (and (and (and (= var4 (write var6 var17 (O_node (node (data (getnode (read var6 var17))) var7)))) (= var5 var11)) (= var13 var19)) (= var2 var12)) (= var10 var18)) (= var16 var9)) (= var0 var8)) (= var20 var3)) (= var1 var15))))) (inv_main60 var4 var5 var13 var2 var10 var16 var2 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 Heap) (var24 Int)) (or (not (and (inv_main51 var4 var12 var22 var16 var21 var9 var7 var1 var19 var20 var18 var6) (and (and (and (and (and (and (and (and (and (and (and (and (= var23 var4) (= var14 var12)) (= var5 var22)) (= var2 var16)) (= var24 var21)) (= var0 var9)) (= var8 var7)) (= var13 var1)) (= var11 var19)) (= var15 var20)) (= var17 var18)) (= var10 var6)) (= var3 (next (getnode (read var4 var6))))))) (inv_main48 var23 var14 var5 var2 var24 var0 var8 var13 (+ var11 (- 1)) var15 var17 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Heap) (var19 Int) (var20 Int) (var21 Int) (var22 Heap) (var23 Int) (var24 Int) (var25 Addr) (var26 Int) (var27 Int) (var28 Int) (var29 Int) (var30 Addr) (var31 Int) (var32 Int)) (or (not (and (inv_main44 var4 var10 var29 var25 var28 var7 var6 var2 var11 var1 var16) (and (and (and (and (and (and (and (and (and (and (and (= var22 var18) (= var24 var5)) (= var19 var27)) (= var0 var12)) (= var13 var15)) (= var20 var14)) (= var32 var26)) (= var21 var23)) (= var17 var8)) (= var30 var9)) (= var3 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var18 (write var4 var16 (O_node (node var1 (next (getnode (read var4 var16))))))) (= var5 var10)) (= var27 var29)) (= var12 var25)) (= var15 var28)) (= var14 var7)) (= var26 var6)) (= var23 var2)) (= var8 var11)) (= var31 var1)) (= var9 var16))))) (inv_main48 var22 var24 var19 var0 var13 var20 var32 var21 var17 var30 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main48 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4) (and (not (= var1 nullAddr)) (not (<= 0 (+ var2 (- 1))))))) (inv_main55 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main61 var2 var8 var4 var0 var3 var5 var6 var1 var7) (not (= var4 (data (getnode (read var2 var6))))))) (inv_main89 var2 var8 var4 var0 var3 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main74 var2 var8 var4 var0 var3 var5 var6 var1 var7) (not (= var4 (data (getnode (read var2 var6))))))) (inv_main89 var2 var8 var4 var0 var3 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main59 var2 var7 var4 var0 var3 var5 var6 var1) (not (= var3 (data (getnode (read var2 var6))))))) (inv_main89 var2 var7 var4 var0 var3 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main71 var2 var7 var4 var0 var3 var5 var6 var1) (and (not (= var1 (+ 1 var7))) (= var6 nullAddr)))) (inv_main89 var2 var7 var4 var0 var3 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main73 var2 var7 var4 var0 var3 var5 var6 var1)) (inv_main74 var2 var7 var4 var0 var3 var5 var6 var1 (next (getnode (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main17 var1 var7 var4 var0 var5 var2 var6 var3)) (inv_main23 (write var1 var3 (O_node (node (data (getnode (read var1 var3))) nullAddr))) var7 var4 var0 var5 var2 var6 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 node) (var24 Int)) (or (not (and (inv_main10 var10 var14 var19 var1 var12 var17) (and (and (and (not (= nullAddr var6)) (and (and (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var5 (O_node var23)))) (= var22 var0)) (= var13 var2)) (= var20 var4)) (= var16 var7)) (= var15 var11)) (= var21 3)) (= var8 var7)) (= var3 var11)) (= var18 var7)) (= var6 (newAddr (alloc var5 (O_node var23)))))) (and (and (and (and (and (= var5 var10) (= var0 var14)) (= var2 var19)) (= var4 var17)) (= var7 5)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var14 (* (- 2) var24)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var14 (* (- 2) var24)))) (- 1)))) (or (not (<= 0 (+ (+ var14 (* (- 2) var24)) (- 1)))) (<= 0 (+ var14 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var14 (* (- 2) var24))) (- 1)))) (<= 0 (+ (* (- 1) var14) (- 1))))) (= var11 var24)))) (not (<= 0 (+ var1 (- 1))))))) (inv_main38 var9 var22 var13 var20 var16 var15 var21 var8 var3 var18 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main74 var2 var8 var4 var0 var3 var5 var6 var1 var7) (= var4 (data (getnode (read var2 var6)))))) (inv_main71 var2 var8 var4 var0 var3 var5 var7 (+ var1 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main66 var5 var10 var15 var11 var14 var6 var7 var0) (and (and (and (and (and (and (and (and (= var1 var5) (= var13 var10)) (= var9 var15)) (= var16 var11)) (= var3 var14)) (= var8 var6)) (= var4 var7)) (= var2 var0)) (= var12 (next (getnode (read var5 var7))))))) (inv_main71 var1 var13 var9 var16 var3 var8 var12 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main60 var2 var7 var4 var0 var3 var5 var6 var1)) (inv_main61 var2 var7 var4 var0 var3 var5 var6 var1 (next (getnode (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main71 var2 var7 var4 var0 var3 var5 var6 var1) (not (= var6 nullAddr)))) (inv_main73 var2 var7 var4 var0 var3 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main48 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4) (<= 0 (+ var2 (- 1))))) (inv_main51 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (or (not (inv_main55 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4)) (inv_main54 (write var5 var1 (O_node (node (data (getnode (read var5 var1))) var6))) var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main48 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4) (and (= var1 nullAddr) (not (<= 0 (+ var2 (- 1))))))) (inv_main54 var5 var11 var9 var6 var8 var10 var7 var3 var2 var6 var1 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr)) (or (not (and (inv_main25 var4 var8 var11 var0 var6 var10 var13) (and (and (and (and (and (and (= var12 (write var4 var13 (O_node (node (data (getnode (read var4 var13))) var10)))) (= var3 var8)) (= var9 var11)) (= var5 var0)) (= var2 var6)) (= var7 var10)) (= var1 var13)))) (inv_main10 var12 var3 var9 (+ var5 (- 1)) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (and (inv_main4 var1 var7 var2) (and (and (and (and (and (= var0 var1) (= var3 var7)) (= var5 var2)) (= var8 var7)) (= var6 var2)) (= var4 nullAddr)))) (inv_main10 var0 var3 var5 var8 var6 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main17 var1 var7 var4 var0 var5 var2 var6 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main23 var1 var7 var4 var0 var5 var2 var6 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main25 var1 var6 var3 var0 var4 var2 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int)) (not (and (inv_main38 var4 var10 var7 var0 var6 var8 var5 var3 var2 var1 var9) (not (is-O_node (read var4 var9))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int)) (not (and (inv_main44 var4 var10 var7 var0 var6 var8 var5 var3 var2 var1 var9) (not (is-O_node (read var4 var9))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (not (and (inv_main51 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (not (and (inv_main55 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (not (and (inv_main54 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main60 var2 var7 var4 var0 var3 var5 var6 var1) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (not (and (inv_main61 var2 var8 var4 var0 var3 var5 var6 var1 var7) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main59 var2 var7 var4 var0 var3 var5 var6 var1) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main66 var2 var7 var4 var0 var3 var5 var6 var1) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main73 var2 var7 var4 var0 var3 var5 var6 var1) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (not (and (inv_main74 var2 var8 var4 var0 var3 var5 var6 var1 var7) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int)) (not (and (inv_main86 var3 var8 var5 var0 var4 var6 var7 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (inv_main89 var2 var7 var4 var0 var3 var5 var6 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2n_prepend_equal.i.smt2 b/heap-theory-benchmarks/array/sll2n_prepend_equal.i.smt2 new file mode 100644 index 00000000..922e485c --- /dev/null +++ b/heap-theory-benchmarks/array/sll2n_prepend_equal.i.smt2 @@ -0,0 +1,84 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main39 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main44 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main47 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int) (var11 node) (var12 Int) (var13 Heap) (var14 Int)) (or (not (and (inv_main10 var9 var4 var7 var6 var14 var3) (and (and (not (= nullAddr var8)) (and (and (and (and (and (and (and (= var13 (newHeap (alloc var9 (O_node var11)))) (= var2 var4)) (= var10 var7)) (= var0 var6)) (= var12 var14)) (= var5 var3)) (= var1 var14)) (= var8 (newAddr (alloc var9 (O_node var11)))))) (<= 0 (+ var6 (- 1)))))) (inv_main17 var13 var2 var10 var0 var12 var5 var1 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (or (not (inv_main49 var5 var3 var4 var1 var2 var0)) (inv_main50 var5 var3 var4 var1 var2 var0 (next (getnode (read var5 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int)) (or (not (inv_main39 var7 var4 var5 var0 var2 var6 var8 var1 var3)) (inv_main39 var7 var4 var5 var0 var2 var6 var8 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 node) (var14 Int)) (or (not (and (inv_main10 var9 var4 var7 var6 var14 var3) (and (and (= nullAddr var8) (and (and (and (and (and (and (and (= var0 (newHeap (alloc var9 (O_node var13)))) (= var1 var4)) (= var5 var7)) (= var2 var3)) (= var12 3)) (= var11 var7)) (= var10 var7)) (= var8 (newAddr (alloc var9 (O_node var13)))))) (not (<= 0 (+ var6 (- 1))))))) (inv_main39 var0 var1 var5 var2 var12 var11 var10 var8 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap)) (or (not (inv_main17 var7 var1 var5 var4 var6 var0 var3 var2)) (inv_main23 (write var7 var2 (O_node (node (data (getnode (read var7 var2))) nullAddr))) var1 var5 var4 var6 var0 var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main42 var9 var3 var7 var12 var14 var8 var15 var13) (and (and (and (and (and (and (and (= var0 (write var9 var13 (O_node (node var15 (next (getnode (read var9 var13))))))) (= var2 var3)) (= var6 var7)) (= var5 var12)) (= var10 var14)) (= var11 var8)) (= var4 var15)) (= var1 var13)))) (inv_main44 var0 var2 var6 var5 var10 var11 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main23 var9 var4 var7 var6 var15 var3 var5 var13) (and (and (and (and (and (and (and (= var10 (write var9 var13 (O_node (node var5 (next (getnode (read var9 var13))))))) (= var1 var4)) (= var11 var7)) (= var0 var6)) (= var12 var15)) (= var2 var3)) (= var14 var5)) (= var8 var13)))) (inv_main25 var10 var1 var11 var0 var12 var2 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Int) (var21 Addr) (var22 Addr)) (or (not (and (inv_main62 var9 var6 var8 var15 var19 var14 var13) (and (not (= var5 nullAddr)) (and (and (and (and (and (and (and (and (= var10 var9) (= var4 var6)) (= var17 var8)) (= var3 var15)) (= var21 var19)) (= var12 var14)) (= var16 var13)) (= var11 (next (getnode (read var9 var13))))) (and (and (and (and (and (and (and (= var2 (write var10 var16 defObj)) (= var20 var4)) (= var18 var17)) (= var0 var3)) (= var22 var21)) (= var7 var12)) (= var1 var16)) (= var5 var11)))))) (inv_main62 var2 var20 var18 var0 var22 var7 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (or (not (and (inv_main47 var5 var3 var4 var1 var2 var0) (and (not (= var1 nullAddr)) (and (= var0 (+ 1 var3)) (= var2 nullAddr))))) (inv_main62 var5 var3 var4 var1 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 node) (var14 Int)) (or (not (and (inv_main10 var7 var2 var6 var5 var14 var0) (and (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (= var3 (newHeap (alloc var7 (O_node var13)))) (= var10 var2)) (= var12 var6)) (= var8 var0)) (= var1 3)) (= var4 var6)) (= var9 var6)) (= var11 (newAddr (alloc var7 (O_node var13)))))) (not (<= 0 (+ var5 (- 1))))))) (inv_main36 var3 var10 var12 var8 var1 var4 var9 var11)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (or (not (and (inv_main47 var5 var3 var4 var1 var2 var0) (not (= var2 nullAddr)))) (inv_main49 var5 var3 var4 var1 var2 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap)) (or (not (and (inv_main50 var6 var4 var5 var1 var3 var0 var2) (not (= var5 (data (getnode (read var6 var3))))))) (inv_main65 var6 var4 var5 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (or (not (and (inv_main47 var5 var3 var4 var1 var2 var0) (and (not (= var0 (+ 1 var3))) (= var2 nullAddr)))) (inv_main65 var5 var3 var4 var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int)) (or (not (inv_main36 var6 var3 var4 var0 var2 var5 var7 var1)) (inv_main42 (write var6 var1 (O_node (node (data (getnode (read var6 var1))) nullAddr))) var3 var4 var0 var2 var5 var7 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap)) (or (not (inv_main20 var8 var2 var6 var5 var7 var1 var4 var3 var0)) (inv_main20 var8 var2 var6 var5 var7 var1 var4 var3 var0)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr)) (or (not (and (inv_main10 var10 var6 var9 var8 var13 var4) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var10 (O_node var0)))) (= var3 var6)) (= var2 var9)) (= var1 var8)) (= var7 var13)) (= var5 var4)) (= var12 var13)) (= var14 (newAddr (alloc var10 (O_node var0)))))) (<= 0 (+ var8 (- 1)))))) (inv_main20 var11 var3 var2 var1 var7 var5 var12 var14 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap)) (or (not (and (inv_main50 var6 var4 var5 var1 var3 var0 var2) (= var5 (data (getnode (read var6 var3)))))) (inv_main47 var6 var4 var5 var1 var2 (+ var0 1))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main44 var8 var3 var6 var10 var11 var7 var1) (and (and (and (and (and (and (= var4 (write var8 var1 (O_node (node (data (getnode (read var8 var1))) var10)))) (= var9 var3)) (= var12 var6)) (= var13 var10)) (= var0 var11)) (= var2 var7)) (= var5 var1)))) (inv_main47 var4 var9 var12 var5 var5 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int)) (or (not (and (inv_main25 var7 var4 var6 var5 var13 var2 var3) (and (and (and (and (and (and (= var12 (write var7 var3 (O_node (node (data (getnode (read var7 var3))) var2)))) (= var9 var4)) (= var8 var6)) (= var11 var5)) (= var0 var13)) (= var10 var2)) (= var1 var3)))) (inv_main10 var12 var9 var8 (+ var11 (- 1)) var0 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int)) (or (not (and (inv_main4 var7 var4 var6) (and (and (and (and (and (= var1 var7) (= var0 var4)) (= var8 var6)) (= var3 var4)) (= var2 var6)) (= var5 nullAddr)))) (inv_main10 var1 var0 var8 var3 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap)) (not (and (inv_main17 var7 var1 var5 var4 var6 var0 var3 var2) (not (is-O_node (read var7 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap)) (not (and (inv_main23 var7 var1 var5 var4 var6 var0 var3 var2) (not (is-O_node (read var7 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main25 var6 var2 var4 var3 var5 var0 var1) (not (is-O_node (read var6 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int)) (not (and (inv_main36 var6 var3 var4 var0 var2 var5 var7 var1) (not (is-O_node (read var6 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int)) (not (and (inv_main42 var6 var3 var4 var0 var2 var5 var7 var1) (not (is-O_node (read var6 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main44 var6 var3 var4 var1 var2 var5 var0) (not (is-O_node (read var6 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main49 var5 var3 var4 var1 var2 var0) (not (is-O_node (read var5 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main50 var6 var4 var5 var1 var3 var0 var2) (not (is-O_node (read var6 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main62 var6 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var6 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (not (inv_main65 var5 var3 var4 var1 var2 var0)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2n_remove_all_reverse.i.smt2 b/heap-theory-benchmarks/array/sll2n_remove_all_reverse.i.smt2 new file mode 100644 index 00000000..6a872d4d --- /dev/null +++ b/heap-theory-benchmarks/array/sll2n_remove_all_reverse.i.smt2 @@ -0,0 +1,75 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main30 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main33 (Heap Int Int Addr Int Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main40 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var2 var4 var3 var0 var1) (and (not (= nullAddr var0)) (not (<= 0 var1))))) (inv_main49 var2 var4 var3 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main23 var2 var5 var11 var1 var3 var8 var14 var9) (and (and (and (and (and (and (and (= var13 (write var2 var9 (O_node (node var14 (next (getnode (read var2 var9))))))) (= var10 var5)) (= var15 var11)) (= var4 var1)) (= var12 var3)) (= var6 var8)) (= var0 var14)) (= var7 var9)))) (inv_main25 var13 var10 var15 var4 var12 var6 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main20 var1 var8 var4 var0 var5 var2 var7 var3 var6)) (inv_main20 var1 var8 var4 var0 var5 var2 var7 var3 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 node) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main10 var3 var10 var13 var1 var5 var12) (and (and (= nullAddr var11) (and (and (and (and (and (and (and (= var4 (newHeap (alloc var3 (O_node var6)))) (= var2 var10)) (= var8 var13)) (= var9 var1)) (= var0 var5)) (= var7 var12)) (= var14 var5)) (= var11 (newAddr (alloc var3 (O_node var6)))))) (<= 0 (+ var1 (- 1)))))) (inv_main20 var4 var2 var8 var9 var0 var7 var14 var11 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main43 var4 var6 var15 var7 var13 var9 var2 var0) (and (and (and (and (and (and (and (and (= var1 var4) (= var3 var6)) (= var5 var15)) (= var8 var7)) (= var11 var13)) (= var10 var9)) (= var16 var2)) (= var12 var0)) (= var14 (next (getnode (read var4 var0))))))) (inv_main40 var1 var3 var5 var8 var11 var10 var16 var14)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int)) (or (not (and (inv_main33 var5 var9 var8 var0 var4 var12) (and (and (and (and (and (and (and (= var2 var5) (= var1 var9)) (= var11 var8)) (= var7 var0)) (= var6 var4)) (= var10 var12)) (= var3 nullAddr)) (not (= nullAddr (next (getnode (read var5 var0)))))))) (inv_main40 var2 var1 var11 var7 var6 var10 var3 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (or (not (and (inv_main40 var4 var6 var5 var0 var3 var7 var2 var1) (= (next (getnode (read var4 var1))) nullAddr))) (inv_main41 var4 var6 var5 var0 var3 var7 var2 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 node) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main10 var4 var7 var13 var1 var5 var12) (and (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (= var9 (newHeap (alloc var4 (O_node var6)))) (= var3 var7)) (= var14 var13)) (= var8 var1)) (= var2 var5)) (= var10 var12)) (= var0 var5)) (= var11 (newAddr (alloc var4 (O_node var6)))))) (<= 0 (+ var1 (- 1)))))) (inv_main17 var9 var3 var14 var8 var2 var10 var0 var11)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Heap)) (or (not (and (inv_main41 var6 var10 var18 var12 var16 var13 var3 var1) (and (and (and (and (and (and (and (and (= var4 (write var6 var3 (O_node (node (data (getnode (read var6 var3))) nullAddr)))) (= var9 var10)) (= var8 var18)) (= var7 var12)) (= var17 var16)) (= var5 var13)) (= var15 var3)) (= var19 var1)) (and (and (and (and (and (= var21 (write var4 var19 defObj)) (= var14 var9)) (= var11 var8)) (= var20 var7)) (= var0 var17)) (= var2 var5))))) (inv_main30 var21 var14 var11 var20 (+ var0 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int)) (or (not (and (inv_main33 var2 var6 var14 var7 var11 var8) (and (and (= nullAddr (next (getnode (read var2 var7)))) (and (and (and (and (and (= var13 (write var2 var7 defObj)) (= var12 var6)) (= var10 var14)) (= var5 var7)) (= var4 var11)) (= var3 var8))) (and (and (and (and (and (= var15 var13) (= var1 var12)) (= var0 var10)) (= var16 nullAddr)) (= var9 var4)) (= var17 var3))))) (inv_main30 var15 var1 var0 var16 (+ var9 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (or (not (and (inv_main10 var1 var5 var3 var0 var4 var2) (not (<= 0 (+ var0 (- 1)))))) (inv_main30 var1 var5 var3 var2 (+ var5 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main17 var1 var7 var4 var0 var5 var2 var6 var3)) (inv_main23 (write var1 var3 (O_node (node (data (getnode (read var1 var3))) nullAddr))) var7 var4 var0 var5 var2 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var2 var4 var3 var0 var1) (<= 0 var1))) (inv_main33 var2 var4 var3 var0 var1 3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main25 var2 var7 var12 var0 var4 var11 var13) (and (and (and (and (and (and (= var3 (write var2 var13 (O_node (node (data (getnode (read var2 var13))) var11)))) (= var8 var7)) (= var6 var12)) (= var9 var0)) (= var10 var4)) (= var5 var11)) (= var1 var13)))) (inv_main10 var3 var8 var6 (+ var9 (- 1)) var10 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (and (inv_main4 var2 var7 var4) (and (and (and (and (and (= var1 var2) (= var5 var7)) (= var3 var4)) (= var0 var7)) (= var8 var4)) (= var6 nullAddr)))) (inv_main10 var1 var5 var3 var0 var8 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (or (not (and (inv_main40 var4 var6 var5 var0 var3 var7 var2 var1) (not (= (next (getnode (read var4 var1))) nullAddr)))) (inv_main43 var4 var6 var5 var0 var3 var7 var1 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main17 var1 var7 var4 var0 var5 var2 var6 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main23 var1 var7 var4 var0 var5 var2 var6 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main25 var1 var6 var3 var0 var4 var2 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main33 var2 var4 var3 var0 var1 var5) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main40 var4 var6 var5 var0 var3 var7 var2 var1) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main43 var4 var6 var5 var0 var3 var7 var2 var1) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main41 var4 var6 var5 var0 var3 var7 var2 var1) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (not (inv_main49 var2 var4 var3 var0 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2n_update_all.i.smt2 b/heap-theory-benchmarks/array/sll2n_update_all.i.smt2 new file mode 100644 index 00000000..1a41fcd6 --- /dev/null +++ b/heap-theory-benchmarks/array/sll2n_update_all.i.smt2 @@ -0,0 +1,84 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main30 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main38 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main17 var0 var7 var6 var5 var2 var4 var3 var1)) (inv_main23 (write var0 var1 (O_node (node (data (getnode (read var0 var1))) nullAddr))) var7 var6 var5 var2 var4 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int)) (or (not (and (inv_main59 var4 var8 var6 var11 var15 var12) (and (not (= var17 nullAddr)) (and (and (and (and (and (and (and (= var7 var4) (= var9 var8)) (= var19 var6)) (= var14 var11)) (= var10 var15)) (= var5 var12)) (= var18 (next (getnode (read var4 var12))))) (and (and (and (and (and (and (= var0 (write var7 var5 defObj)) (= var1 var9)) (= var16 var19)) (= var3 var14)) (= var2 var10)) (= var13 var5)) (= var17 var18)))))) (inv_main59 var0 var1 var16 var3 var2 var17)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main42 var1 var4 var3 var0 var2) (and (not (= var0 nullAddr)) (not (<= 0 (+ (+ var4 (* (- 1) var2)) (- 1))))))) (inv_main59 var1 var4 var3 var0 var2 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main52 var2 var8 var6 var9 var14 var0 var10 var12) (and (<= 0 (+ (+ var16 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (= var7 var2) (= var4 var8)) (= var3 var6)) (= var13 var9)) (= var1 var14)) (= var11 var0)) (= var15 var10)) (= var16 var12)) (= var5 (next (getnode (read var2 var10)))))))) (inv_main52 var7 var4 var3 var13 var1 var11 var5 (+ var16 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main42 var1 var4 var3 var0 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 (+ (+ var4 (* (- 1) var2)) (- 1)))))) (inv_main52 var1 var4 var3 var0 var2 (+ var2 var4) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var1 var4 var3 var0 var2) (not (<= 0 (+ (+ var4 (* (- 1) var2)) (- 1)))))) (inv_main42 var1 var4 var3 var0 0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main51 var2 var5 var4 var6 var13 var1 var7 var11) (and (= var14 var9) (and (and (and (and (and (and (= var0 var2) (= var3 var5)) (= var10 var4)) (= var8 var6)) (= var12 var13)) (= var14 var1)) (= var9 (data (getnode (read var2 var7)))))))) (inv_main42 var0 var3 var10 var8 (+ var12 1))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Heap) (var15 Int) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main38 var2 var8 var6 var11 var15 var4 var13 var16 var18) (and (not (<= 0 (+ (+ var12 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (and (= var14 var2) (= var9 var8)) (= var7 var6)) (= var3 var11)) (= var10 var15)) (= var5 var4)) (= var1 var13)) (= var0 var16)) (= var12 var18)) (= var17 (next (getnode (read var2 var13)))))))) (inv_main37 var14 var9 var7 var3 var10 var5 var17 var0 (+ var12 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var1 var4 var3 var0 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 (+ (+ var4 (* (- 1) var2)) (- 1)))))) (inv_main37 var1 var4 var3 var0 var2 (+ var2 var4) var0 (+ var2 var4) var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main37 var2 var6 var4 var7 var11 var3 var8 var15 var17) (and (and (and (and (and (and (and (and (= var12 (write var2 var8 (O_node (node var15 (next (getnode (read var2 var8))))))) (= var16 var6)) (= var5 var4)) (= var13 var7)) (= var9 var11)) (= var10 var3)) (= var0 var8)) (= var1 var15)) (= var14 var17)))) (inv_main30 var12 var16 var5 var13 (+ var9 1))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (or (not (and (inv_main10 var0 var5 var4 var3 var1 var2) (not (<= 0 (+ var3 (- 1)))))) (inv_main30 var0 var5 var4 var2 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main51 var4 var7 var5 var9 var14 var3 var12 var13) (and (not (= var8 var0)) (and (and (and (and (and (and (= var6 var4) (= var2 var7)) (= var1 var5)) (= var11 var9)) (= var10 var14)) (= var8 var3)) (= var0 (data (getnode (read var4 var12)))))))) (inv_main62 var6 var2 var1 var11 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int)) (or (not (and (inv_main25 var1 var7 var6 var5 var3 var4 var12) (and (and (and (and (and (and (= var2 (write var1 var12 (O_node (node (data (getnode (read var1 var12))) var4)))) (= var13 var7)) (= var9 var6)) (= var11 var5)) (= var8 var3)) (= var10 var4)) (= var0 var12)))) (inv_main10 var2 var13 var9 (+ var11 (- 1)) var8 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (and (inv_main4 var3 var8 var6) (and (and (and (and (and (= var4 var3) (= var1 var8)) (= var7 var6)) (= var0 var8)) (= var5 var6)) (= var2 nullAddr)))) (inv_main10 var4 var1 var7 var0 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main20 var0 var8 var7 var6 var3 var5 var4 var2 var1)) (inv_main20 var0 var8 var7 var6 var3 var5 var4 var2 var1)))) +(assert (forall ((var0 Int) (var1 node) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main10 var2 var11 var8 var7 var5 var6) (and (and (= nullAddr var9) (and (and (and (and (and (and (and (= var3 (newHeap (alloc var2 (O_node var1)))) (= var13 var11)) (= var0 var8)) (= var12 var7)) (= var10 var5)) (= var4 var6)) (= var14 var5)) (= var9 (newAddr (alloc var2 (O_node var1)))))) (<= 0 (+ var7 (- 1)))))) (inv_main20 var3 var13 var0 var12 var10 var4 var14 var9 1)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main10 var3 var8 var7 var6 var4 var5) (and (and (not (= nullAddr var12)) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var3 (O_node var1)))) (= var13 var8)) (= var9 var7)) (= var0 var6)) (= var2 var4)) (= var10 var5)) (= var14 var4)) (= var12 (newAddr (alloc var3 (O_node var1)))))) (<= 0 (+ var6 (- 1)))))) (inv_main17 var11 var13 var9 var0 var2 var10 var14 var12)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Heap) (var15 Int) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main38 var2 var8 var6 var11 var15 var4 var13 var16 var18) (and (<= 0 (+ (+ var12 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (and (= var14 var2) (= var9 var8)) (= var7 var6)) (= var3 var11)) (= var10 var15)) (= var5 var4)) (= var1 var13)) (= var0 var16)) (= var12 var18)) (= var17 (next (getnode (read var2 var13)))))))) (inv_main38 var14 var9 var7 var3 var10 var5 var17 var0 (+ var12 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var1 var4 var3 var0 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 (+ (+ var4 (* (- 1) var2)) (- 1)))))) (inv_main38 var1 var4 var3 var0 var2 (+ var2 var4) var0 (+ var2 var4) var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main52 var2 var8 var6 var9 var14 var0 var10 var12) (and (not (<= 0 (+ (+ var16 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (= var7 var2) (= var4 var8)) (= var3 var6)) (= var13 var9)) (= var1 var14)) (= var11 var0)) (= var15 var10)) (= var16 var12)) (= var5 (next (getnode (read var2 var10)))))))) (inv_main51 var7 var4 var3 var13 var1 var11 var5 (+ var16 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main42 var1 var4 var3 var0 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 (+ (+ var4 (* (- 1) var2)) (- 1)))))) (inv_main51 var1 var4 var3 var0 var2 (+ var2 var4) var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main23 var2 var10 var9 var8 var5 var7 var6 var4) (and (and (and (and (and (and (and (= var0 (write var2 var4 (O_node (node var6 (next (getnode (read var2 var4))))))) (= var15 var10)) (= var12 var9)) (= var13 var8)) (= var11 var5)) (= var3 var7)) (= var14 var6)) (= var1 var4)))) (inv_main25 var0 var15 var12 var13 var11 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main17 var0 var7 var6 var5 var2 var4 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main23 var0 var7 var6 var5 var2 var4 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main25 var0 var6 var5 var4 var2 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main38 var2 var7 var5 var0 var3 var4 var1 var6 var8) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main37 var2 var7 var5 var0 var3 var4 var1 var6 var8) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main52 var3 var7 var6 var0 var5 var2 var1 var4) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main51 var3 var7 var6 var0 var5 var2 var1 var4) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main59 var2 var5 var4 var0 var3 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (not (inv_main62 var1 var4 var3 var0 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll2n_update_all_reverse.i.smt2 b/heap-theory-benchmarks/array/sll2n_update_all_reverse.i.smt2 new file mode 100644 index 00000000..1f75d034 --- /dev/null +++ b/heap-theory-benchmarks/array/sll2n_update_all_reverse.i.smt2 @@ -0,0 +1,84 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main30 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main38 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main17 var0 var7 var6 var5 var2 var4 var3 var1)) (inv_main23 (write var0 var1 (O_node (node (data (getnode (read var0 var1))) nullAddr))) var7 var6 var5 var2 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Addr)) (or (not (and (inv_main38 var3 var10 var8 var12 var16 var15 var18 var13 var4) (and (not (<= 0 (+ (+ var7 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (and (= var9 var3) (= var5 var10)) (= var11 var8)) (= var6 var12)) (= var17 var16)) (= var0 var15)) (= var2 var18)) (= var1 var13)) (= var7 var4)) (= var14 (next (getnode (read var3 var18)))))))) (inv_main37 var9 var5 var11 var6 var17 var0 var14 var1 (+ var7 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var1 var4 var3 var0 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 var2)))) (inv_main37 var1 var4 var3 var0 var2 (+ var2 var4) var0 (+ var2 var4) var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main51 var4 var8 var7 var10 var14 var3 var6 var13) (and (not (= var1 var5)) (and (and (and (and (and (and (= var2 var4) (= var12 var8)) (= var11 var7)) (= var9 var10)) (= var0 var14)) (= var1 var3)) (= var5 (data (getnode (read var4 var6)))))))) (inv_main62 var2 var12 var11 var9 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Addr)) (or (not (and (inv_main38 var3 var10 var8 var12 var16 var15 var18 var13 var4) (and (<= 0 (+ (+ var7 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (and (= var9 var3) (= var5 var10)) (= var11 var8)) (= var6 var12)) (= var17 var16)) (= var0 var15)) (= var2 var18)) (= var1 var13)) (= var7 var4)) (= var14 (next (getnode (read var3 var18)))))))) (inv_main38 var9 var5 var11 var6 var17 var0 var14 var1 (+ var7 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var1 var4 var3 var0 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 var2)))) (inv_main38 var1 var4 var3 var0 var2 (+ var2 var4) var0 (+ var2 var4) var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Addr) (var17 Addr)) (or (not (and (inv_main37 var2 var8 var6 var9 var14 var13 var17 var10 var4) (and (and (and (and (and (and (and (and (= var7 (write var2 var17 (O_node (node var10 (next (getnode (read var2 var17))))))) (= var15 var8)) (= var11 var6)) (= var12 var9)) (= var0 var14)) (= var1 var13)) (= var16 var17)) (= var5 var10)) (= var3 var4)))) (inv_main30 var7 var15 var11 var12 (+ var0 (- 1)))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (or (not (and (inv_main10 var0 var5 var4 var3 var1 var2) (not (<= 0 (+ var3 (- 1)))))) (inv_main30 var0 var5 var4 var2 (+ var5 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main52 var2 var8 var7 var10 var14 var0 var6 var12) (and (<= 0 (+ (+ var9 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (= var3 var2) (= var13 var8)) (= var1 var7)) (= var11 var10)) (= var5 var14)) (= var16 var0)) (= var4 var6)) (= var9 var12)) (= var15 (next (getnode (read var2 var6)))))))) (inv_main52 var3 var13 var1 var11 var5 var16 var15 (+ var9 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main42 var1 var4 var3 var0 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 var2)))) (inv_main52 var1 var4 var3 var0 var2 (+ var2 var4) var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main25 var2 var8 var6 var5 var3 var4 var13) (and (and (and (and (and (and (= var10 (write var2 var13 (O_node (node (data (getnode (read var2 var13))) var4)))) (= var12 var8)) (= var9 var6)) (= var0 var5)) (= var11 var3)) (= var1 var4)) (= var7 var13)))) (inv_main10 var10 var12 var9 (+ var0 (- 1)) var11 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (and (inv_main4 var2 var7 var5) (and (and (and (and (and (= var1 var2) (= var8 var7)) (= var6 var5)) (= var0 var7)) (= var4 var5)) (= var3 nullAddr)))) (inv_main10 var1 var8 var6 var0 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var1 var4 var3 var0 var2) (not (<= 0 var2)))) (inv_main42 var1 var4 var3 var0 (+ var4 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main51 var1 var6 var4 var7 var13 var0 var3 var10) (and (= var5 var2) (and (and (and (and (and (and (= var11 var1) (= var8 var6)) (= var14 var4)) (= var12 var7)) (= var9 var13)) (= var5 var0)) (= var2 (data (getnode (read var1 var3)))))))) (inv_main42 var11 var8 var14 var12 (+ var9 (- 1)))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main20 var0 var8 var7 var6 var3 var5 var4 var2 var1)) (inv_main20 var0 var8 var7 var6 var3 var5 var4 var2 var1)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Addr)) (or (not (and (inv_main10 var2 var11 var8 var7 var5 var6) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (= var13 (newHeap (alloc var2 (O_node var0)))) (= var12 var11)) (= var10 var8)) (= var3 var7)) (= var9 var5)) (= var1 var6)) (= var4 var5)) (= var14 (newAddr (alloc var2 (O_node var0)))))) (<= 0 (+ var7 (- 1)))))) (inv_main20 var13 var12 var10 var3 var9 var1 var4 var14 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 node)) (or (not (and (inv_main10 var3 var8 var7 var6 var4 var5) (and (and (not (= nullAddr var1)) (and (and (and (and (and (and (and (= var10 (newHeap (alloc var3 (O_node var14)))) (= var12 var8)) (= var0 var7)) (= var13 var6)) (= var2 var4)) (= var9 var5)) (= var11 var4)) (= var1 (newAddr (alloc var3 (O_node var14)))))) (<= 0 (+ var6 (- 1)))))) (inv_main17 var10 var12 var0 var13 var2 var9 var11 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main52 var2 var8 var7 var10 var14 var0 var6 var12) (and (not (<= 0 (+ (+ var9 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (= var3 var2) (= var13 var8)) (= var1 var7)) (= var11 var10)) (= var5 var14)) (= var16 var0)) (= var4 var6)) (= var9 var12)) (= var15 (next (getnode (read var2 var6)))))))) (inv_main51 var3 var13 var1 var11 var5 var16 var15 (+ var9 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main42 var1 var4 var3 var0 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 var2)))) (inv_main51 var1 var4 var3 var0 var2 (+ var2 var4) var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr)) (or (not (and (inv_main59 var4 var7 var6 var10 var13 var5) (and (not (= var19 nullAddr)) (and (and (and (and (and (and (and (= var8 var4) (= var12 var7)) (= var9 var6)) (= var16 var10)) (= var0 var13)) (= var17 var5)) (= var1 (next (getnode (read var4 var5))))) (and (and (and (and (and (and (= var14 (write var8 var17 defObj)) (= var3 var12)) (= var2 var9)) (= var15 var16)) (= var11 var0)) (= var18 var17)) (= var19 var1)))))) (inv_main59 var14 var3 var2 var15 var11 var19)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main42 var1 var4 var3 var0 var2) (and (not (= var0 nullAddr)) (not (<= 0 var2))))) (inv_main59 var1 var4 var3 var0 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main23 var2 var11 var10 var9 var6 var8 var7 var4) (and (and (and (and (and (and (and (= var13 (write var2 var4 (O_node (node var7 (next (getnode (read var2 var4))))))) (= var14 var11)) (= var12 var10)) (= var3 var9)) (= var1 var6)) (= var15 var8)) (= var5 var7)) (= var0 var4)))) (inv_main25 var13 var14 var12 var3 var1 var15 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main17 var0 var7 var6 var5 var2 var4 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main23 var0 var7 var6 var5 var2 var4 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main25 var0 var6 var5 var4 var2 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (not (and (inv_main38 var2 var7 var6 var0 var4 var3 var8 var1 var5) (not (is-O_node (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (not (and (inv_main37 var2 var7 var6 var0 var4 var3 var8 var1 var5) (not (is-O_node (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main52 var3 var7 var6 var0 var4 var1 var5 var2) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main51 var3 var7 var6 var0 var4 var1 var5 var2) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main59 var1 var5 var4 var0 var3 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (not (inv_main62 var1 var4 var3 var0 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll_circular_traversal-1.i.smt2 b/heap-theory-benchmarks/array/sll_circular_traversal-1.i.smt2 new file mode 100644 index 00000000..71cf00b4 --- /dev/null +++ b/heap-theory-benchmarks/array/sll_circular_traversal-1.i.smt2 @@ -0,0 +1,86 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Addr Int) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Int Int Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main27 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main39 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main45 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main9 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 5 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Heap)) (or (not (and (inv_main39 var12 var1 var2 var0 var5 var6) (and (= var4 var9) (and (and (and (and (and (and (= var11 var12) (= var8 var1)) (= var7 var2)) (= var9 var0)) (= var3 var5)) (= var10 var6)) (= var4 (next (getnode (read var12 var6)))))))) (inv_main42 var11 var8 var7 var9 (+ (+ var3 1) (* (- 1) var8)) var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Heap) (var18 Addr) (var19 Heap)) (or (not (and (inv_main45 var17 var10 var2 var9 var13 var4) (and (not (= var18 var0)) (and (and (not (= var3 var5)) (and (and (and (and (and (and (= var19 var17) (= var16 var10)) (= var7 var2)) (= var5 var9)) (= var8 var13)) (= var3 var4)) (= var12 (next (getnode (read var17 var4)))))) (and (and (and (and (and (and (= var11 (write var19 var3 defObj)) (= var14 var16)) (= var6 var7)) (= var0 var5)) (= var1 var8)) (= var15 var3)) (= var18 var12)))))) (inv_main42 var11 var14 var6 var0 (+ var1 1) var18)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int)) (or (not (and (inv_main45 var8 var1 var2 var0 var4 var5) (and (not (= var10 var9)) (and (= var3 var9) (and (and (and (and (and (and (= var6 var8) (= var12 var1)) (= var7 var2)) (= var9 var0)) (= var11 var4)) (= var3 var5)) (= var10 (next (getnode (read var8 var5))))))))) (inv_main42 var6 var12 var7 var9 (+ var11 1) var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 node) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main17 var13 var7 var3 var6 var0 var2 var4) (and (and (not (= nullAddr var5)) (and (and (and (and (and (and (and (= var9 (newHeap (alloc var13 (O_node var11)))) (= var14 var7)) (= var8 var3)) (= var1 var6)) (= var15 var0)) (= var10 var2)) (= var12 var4)) (= var5 (newAddr (alloc var13 (O_node var11)))))) (<= 0 (+ (+ var6 (- 1)) (- 1)))))) (inv_main21 var9 var14 var8 var1 var15 var10 var12 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (and (inv_main33 var5 var1 var2 var0 var3 var4) (not (= var2 (data (getnode (read var5 var4))))))) (inv_main54 var5 var1 var2 var0 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (and (inv_main42 var5 var1 var2 var0 var3 var4) (not (= var3 (data (getnode (read var5 var4))))))) (inv_main54 var5 var1 var2 var0 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (inv_main21 var7 var3 var4 var2 var0 var1 var5 var6)) (inv_main27 (write var7 var6 (O_node (node var5 (data (getnode (read var7 var6)))))) var3 var4 var2 var0 var1 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (inv_main36 var5 var1 var2 var0 var3 var4)) (inv_main39 (write var5 var4 (O_node (node (next (getnode (read var5 var4))) var3))) var1 var2 var0 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (or (not (inv_main12 var6 var3 var4 var2 var0 var1 var5)) (inv_main12 var6 var3 var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 node) (var8 Int) (var9 Heap)) (or (not (and (inv_main4 var9 var1 var3) (and (= nullAddr var6) (and (and (and (and (and (= var0 (newHeap (alloc var9 (O_node var7)))) (= var2 var1)) (= var5 var3)) (= var4 var1)) (= var8 var3)) (= var6 (newAddr (alloc var9 (O_node var7)))))))) (inv_main12 var0 var2 var5 var4 var8 var6 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (and (inv_main42 var5 var1 var2 var0 var3 var4) (= var3 (data (getnode (read var5 var4)))))) (inv_main45 var5 var1 var2 var0 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (inv_main17 var6 var3 var4 var2 var0 var1 var5) (not (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main18 var6 var3 var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Heap)) (or (not (and (inv_main39 var12 var1 var2 var0 var5 var6) (and (not (= var4 var9)) (and (and (and (and (and (and (= var11 var12) (= var8 var1)) (= var7 var2)) (= var9 var0)) (= var3 var5)) (= var10 var6)) (= var4 (next (getnode (read var12 var6)))))))) (inv_main33 var11 var8 var7 var9 (+ var3 1) var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap)) (or (not (and (inv_main18 var13 var8 var3 var7 var0 var2 var5) (and (and (and (and (and (and (= var6 (write var13 var2 (O_node (node var5 (data (getnode (read var13 var2))))))) (= var11 var8)) (= var9 var3)) (= var1 var7)) (= var4 var0)) (= var12 var2)) (= var10 var5)))) (inv_main33 var6 var11 var9 var10 1 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (or (not (inv_main9 var5 var3 var4 var2 var0 var1)) (inv_main15 (write var5 var1 (O_node (node var1 (data (getnode (read var5 var1)))))) var3 var4 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (inv_main24 var8 var4 var5 var3 var0 var2 var6 var7 var1)) (inv_main24 var8 var4 var5 var3 var0 var2 var6 var7 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 node) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Heap)) (or (not (and (inv_main17 var15 var11 var2 var10 var0 var1 var3) (and (and (= nullAddr var9) (and (and (and (and (and (and (and (= var7 (newHeap (alloc var15 (O_node var6)))) (= var5 var11)) (= var13 var2)) (= var8 var10)) (= var4 var0)) (= var12 var1)) (= var14 var3)) (= var9 (newAddr (alloc var15 (O_node var6)))))) (<= 0 (+ (+ var10 (- 1)) (- 1)))))) (inv_main24 var7 var5 var13 var8 var4 var12 var14 var9 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (and (inv_main33 var5 var1 var2 var0 var3 var4) (= var2 (data (getnode (read var5 var4)))))) (inv_main36 var5 var1 var2 var0 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap)) (or (not (and (inv_main27 var15 var11 var4 var10 var0 var1 var7 var13) (and (and (and (and (and (and (and (= var2 (write var15 var13 (O_node (node (next (getnode (read var15 var13))) var0)))) (= var12 var11)) (= var14 var4)) (= var9 var10)) (= var3 var0)) (= var5 var1)) (= var8 var7)) (= var6 var13)))) (inv_main17 var2 var12 var14 (+ var9 (- 1)) var3 var5 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Heap)) (or (not (and (inv_main15 var11 var5 var6 var4 var1 var3) (and (and (and (and (and (= var10 (write var11 var3 (O_node (node (next (getnode (read var11 var3))) var1)))) (= var0 var5)) (= var8 var6)) (= var9 var4)) (= var7 var1)) (= var2 var3)))) (inv_main17 var10 var0 var8 var9 var7 var2 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 node) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Heap)) (or (not (and (inv_main4 var8 var4 var6) (and (not (= nullAddr var3)) (and (and (and (and (and (= var9 (newHeap (alloc var8 (O_node var2)))) (= var0 var4)) (= var7 var6)) (= var5 var4)) (= var1 var6)) (= var3 (newAddr (alloc var8 (O_node var2)))))))) (inv_main9 var9 var0 var7 var5 var1 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main9 var5 var3 var4 var2 var0 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main15 var5 var3 var4 var2 var0 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap)) (not (and (inv_main21 var7 var3 var4 var2 var0 var1 var5 var6) (not (is-O_node (read var7 var6))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap)) (not (and (inv_main27 var7 var3 var4 var2 var0 var1 var5 var6) (not (is-O_node (read var7 var6))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap)) (not (and (inv_main18 var6 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var6 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main33 var5 var1 var2 var0 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main36 var5 var1 var2 var0 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main39 var5 var1 var2 var0 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main42 var5 var1 var2 var0 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main45 var5 var1 var2 var0 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (not (inv_main54 var5 var1 var2 var0 var3 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll_circular_traversal-2.i.smt2 b/heap-theory-benchmarks/array/sll_circular_traversal-2.i.smt2 new file mode 100644 index 00000000..2786071c --- /dev/null +++ b/heap-theory-benchmarks/array/sll_circular_traversal-2.i.smt2 @@ -0,0 +1,85 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (data Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main12 (Heap Int Int Int Int Addr Int) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Int Int Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main27 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main39 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main45 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main9 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 5 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (and (inv_main17 var3 var4 var2 var0 var1 var6 var5) (not (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main18 var3 var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main33 var2 var3 var0 var5 var1 var4) (not (= var0 (data (getnode (read var2 var4))))))) (inv_main51 var2 var3 var0 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main42 var2 var3 var0 var5 var1 var4) (not (= var1 (data (getnode (read var2 var4))))))) (inv_main51 var2 var3 var0 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main36 var2 var3 var0 var5 var1 var4)) (inv_main39 (write var2 var4 (O_node (node (next (getnode (read var2 var4))) var1))) var3 var0 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (inv_main9 var3 var4 var2 var0 var1 var5)) (inv_main15 (write var3 var5 (O_node (node var5 (data (getnode (read var3 var5)))))) var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main39 var4 var5 var0 var11 var3 var10) (and (= var8 var7) (and (and (and (and (and (and (= var2 var4) (= var9 var5)) (= var12 var0)) (= var7 var11)) (= var6 var3)) (= var1 var10)) (= var8 (next (getnode (read var4 var10)))))))) (inv_main42 var2 var9 var12 var7 (+ (+ var6 1) (* (- 1) var9)) var8)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Heap) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int)) (or (not (and (inv_main45 var2 var3 var12 var16 var1 var7) (and (not (= var17 nullAddr)) (and (and (and (and (and (and (and (= var14 var2) (= var19 var3)) (= var15 var12)) (= var10 var16)) (= var4 var1)) (= var5 var7)) (= var11 (next (getnode (read var2 var7))))) (and (and (and (and (and (and (= var0 (write var14 var5 defObj)) (= var13 var19)) (= var6 var15)) (= var9 var10)) (= var18 var4)) (= var8 var5)) (= var17 var11)))))) (inv_main42 var0 var13 var6 var9 (+ var18 1) var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main39 var4 var5 var0 var11 var3 var10) (and (not (= var8 var7)) (and (and (and (and (and (and (= var2 var4) (= var9 var5)) (= var12 var0)) (= var7 var11)) (= var6 var3)) (= var1 var10)) (= var8 (next (getnode (read var4 var10)))))))) (inv_main33 var2 var9 var12 var7 (+ var6 1) var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int)) (or (not (and (inv_main18 var2 var3 var8 var0 var7 var6 var5) (and (and (and (and (and (and (= var11 (write var2 var6 (O_node (node var5 (data (getnode (read var2 var6))))))) (= var13 var3)) (= var4 var8)) (= var9 var0)) (= var10 var7)) (= var1 var6)) (= var12 var5)))) (inv_main33 var11 var13 var4 var12 1 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main24 var4 var5 var2 var0 var1 var8 var7 var6 var3)) (inv_main24 var4 var5 var2 var0 var1 var8 var7 var6 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 node) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int)) (or (not (and (inv_main17 var1 var2 var11 var0 var10 var8 var5) (and (and (= nullAddr var9) (and (and (and (and (and (and (and (= var13 (newHeap (alloc var1 (O_node var3)))) (= var7 var2)) (= var4 var11)) (= var15 var0)) (= var12 var10)) (= var6 var8)) (= var14 var5)) (= var9 (newAddr (alloc var1 (O_node var3)))))) (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main24 var13 var7 var4 var15 var12 var6 var14 var9 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main33 var2 var3 var0 var5 var1 var4) (= var0 (data (getnode (read var2 var4)))))) (inv_main36 var2 var3 var0 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (or (not (inv_main12 var3 var4 var2 var0 var1 var6 var5)) (inv_main12 var3 var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int)) (or (not (and (inv_main4 var4 var5 var2) (and (= nullAddr var6) (and (and (and (and (and (= var8 (newHeap (alloc var4 (O_node var0)))) (= var1 var5)) (= var9 var2)) (= var3 var5)) (= var7 var2)) (= var6 (newAddr (alloc var4 (O_node var0)))))))) (inv_main12 var8 var1 var9 var3 var7 var6 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main42 var2 var3 var0 var5 var1 var4) (= var1 (data (getnode (read var2 var4)))))) (inv_main45 var2 var3 var0 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int)) (or (not (and (inv_main27 var5 var6 var11 var0 var10 var8 var7 var14) (and (and (and (and (and (and (and (= var13 (write var5 var14 (O_node (node (next (getnode (read var5 var14))) var10)))) (= var4 var6)) (= var1 var11)) (= var12 var0)) (= var15 var10)) (= var9 var8)) (= var3 var7)) (= var2 var14)))) (inv_main17 var13 var4 var1 (+ var12 (- 1)) var15 var9 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr)) (or (not (and (inv_main15 var5 var6 var2 var0 var1 var11) (and (and (and (and (and (= var4 (write var5 var11 (O_node (node (next (getnode (read var5 var11))) var1)))) (= var8 var6)) (= var3 var2)) (= var7 var0)) (= var10 var1)) (= var9 var11)))) (inv_main17 var4 var8 var3 var7 var10 var9 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 node) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Addr)) (or (not (and (inv_main17 var3 var4 var10 var0 var9 var7 var6) (and (and (not (= nullAddr var8)) (and (and (and (and (and (and (and (= var14 (newHeap (alloc var3 (O_node var5)))) (= var1 var4)) (= var13 var10)) (= var12 var0)) (= var11 var9)) (= var2 var7)) (= var15 var6)) (= var8 (newAddr (alloc var3 (O_node var5)))))) (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main21 var14 var1 var13 var12 var11 var2 var15 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main21 var3 var4 var2 var0 var1 var7 var6 var5)) (inv_main27 (write var3 var5 (O_node (node var6 (data (getnode (read var3 var5)))))) var4 var2 var0 var1 var7 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Heap) (var9 node)) (or (not (and (inv_main4 var5 var6 var3) (and (not (= nullAddr var2)) (and (and (and (and (and (= var8 (newHeap (alloc var5 (O_node var9)))) (= var7 var6)) (= var0 var3)) (= var1 var6)) (= var4 var3)) (= var2 (newAddr (alloc var5 (O_node var9)))))))) (inv_main9 var8 var7 var0 var1 var4 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main9 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main15 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main21 var3 var4 var2 var0 var1 var7 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main27 var3 var4 var2 var0 var1 var7 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main18 var3 var4 var2 var0 var1 var6 var5) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main33 var2 var3 var0 var5 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main36 var2 var3 var0 var5 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main39 var2 var3 var0 var5 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main42 var2 var3 var0 var5 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main45 var2 var3 var0 var5 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (inv_main51 var2 var3 var0 var5 var1 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll_length_check-1.i.smt2 b/heap-theory-benchmarks/array/sll_length_check-1.i.smt2 new file mode 100644 index 00000000..bd0a105c --- /dev/null +++ b/heap-theory-benchmarks/array/sll_length_check-1.i.smt2 @@ -0,0 +1,64 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Int Addr Addr) Bool) +(declare-fun inv_main42 (Heap Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int)) (or (not (and (inv_main15 var2 var8 var9 var6 var3) (and (and (and (and (= var7 (write var2 var3 (O_node (node var6)))) (= var4 var8)) (= var5 var9)) (= var1 var6)) (= var0 var3)))) (inv_main11 var7 var4 (+ var5 (- 1)) var0)))) +(assert (forall ((var0 Heap) (var1 Int)) (or (not (and (inv_main3 var0 var1) (not (<= 0 (+ (+ 32 (* (- 1) var1)) (- 1)))))) (inv_main11 var0 var1 (+ var1 1) nullAddr)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int)) (or (not (and (inv_main3 var1 var2) (and (= var0 0) (<= 0 (+ (+ 32 (* (- 1) var2)) (- 1)))))) (inv_main11 var1 var2 (+ var2 1) nullAddr)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main39 var1 var6 var3 var9) (and (not (= var13 nullAddr)) (and (and (and (and (and (= var8 var1) (= var5 var6)) (= var12 var3)) (= var4 var9)) (= var11 (next (getnode (read var1 var9))))) (and (and (and (and (= var2 (write var8 var4 defObj)) (= var0 var5)) (= var10 var12)) (= var7 var4)) (= var13 var11)))))) (inv_main39 var2 var0 var10 var13)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int)) (or (not (and (inv_main33 var4 var10 var6 var8 var9) (and (not (= var1 nullAddr)) (and (= var2 var7) (and (= var3 nullAddr) (and (and (and (and (and (= var5 var4) (= var2 var10)) (= var1 var6)) (= var0 var8)) (= var7 var9)) (= var3 (next (getnode (read var4 var8)))))))))) (inv_main39 var5 var2 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int)) (or (not (and (inv_main11 var0 var2 var3 var1) (and (not (= var1 nullAddr)) (and (and (= var2 0) (= var1 nullAddr)) (not (<= 0 (+ var3 (- 1)))))))) (inv_main39 var0 var2 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int)) (or (not (and (inv_main3 var0 var2) (and (not (= var1 0)) (<= 0 (+ (+ 32 (* (- 1) var2)) (- 1)))))) (inv_main3 var0 (+ var2 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int)) (or (not (inv_main18 var1 var4 var5 var3 var2 var0)) (inv_main18 var1 var4 var5 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 node) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr)) (or (not (and (inv_main11 var3 var7 var8 var6) (and (and (= nullAddr var2) (and (and (and (and (= var4 (newHeap (alloc var3 (O_node var5)))) (= var0 var7)) (= var1 var8)) (= var9 var6)) (= var2 (newAddr (alloc var3 (O_node var5)))))) (<= 0 (+ var8 (- 1)))))) (inv_main18 var4 var0 var1 var9 var2 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int)) (or (not (and (inv_main33 var4 var10 var6 var8 var9) (and (not (= var3 nullAddr)) (and (and (and (and (and (= var5 var4) (= var2 var10)) (= var1 var6)) (= var0 var8)) (= var7 var9)) (= var3 (next (getnode (read var4 var8)))))))) (inv_main33 var5 var2 var1 var3 (+ var7 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int)) (or (not (and (inv_main11 var0 var2 var3 var1) (and (not (= var1 nullAddr)) (not (<= 0 (+ var3 (- 1))))))) (inv_main33 var0 var2 var1 var1 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Int) (var5 Addr) (var6 node) (var7 Int) (var8 Int) (var9 Int)) (or (not (and (inv_main11 var3 var7 var8 var5) (and (and (not (= nullAddr var0)) (and (and (and (and (= var2 (newHeap (alloc var3 (O_node var6)))) (= var9 var7)) (= var4 var8)) (= var1 var5)) (= var0 (newAddr (alloc var3 (O_node var6)))))) (<= 0 (+ var8 (- 1)))))) (inv_main15 var2 var9 var4 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int)) (or (not (and (inv_main33 var4 var10 var6 var8 var9) (and (not (= var2 var7)) (and (= var3 nullAddr) (and (and (and (and (and (= var5 var4) (= var2 var10)) (= var1 var6)) (= var0 var8)) (= var7 var9)) (= var3 (next (getnode (read var4 var8))))))))) (inv_main42 var5 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int)) (or (not (and (inv_main11 var0 var2 var3 var1) (and (and (not (= var2 0)) (= var1 nullAddr)) (not (<= 0 (+ var3 (- 1))))))) (inv_main42 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main15 var0 var3 var4 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main33 var0 var4 var1 var2 var3) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main39 var0 var3 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (inv_main42 var0 var2 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll_length_check-2.i.smt2 b/heap-theory-benchmarks/array/sll_length_check-2.i.smt2 new file mode 100644 index 00000000..d000a0a7 --- /dev/null +++ b/heap-theory-benchmarks/array/sll_length_check-2.i.smt2 @@ -0,0 +1,64 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Int Addr Addr) Bool) +(declare-fun inv_main42 (Heap Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main39 var3 var0 var12 var8) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var13 var3) (= var4 var0)) (= var10 var12)) (= var7 var8)) (= var11 (next (getnode (read var3 var8))))) (and (and (and (and (= var1 (write var13 var7 defObj)) (= var2 var4)) (= var9 var10)) (= var5 var7)) (= var6 var11)))))) (inv_main39 var1 var2 var9 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main33 var4 var1 var10 var8 var5) (and (not (= var2 nullAddr)) (and (= var0 var9) (and (= var6 nullAddr) (and (and (and (and (and (= var7 var4) (= var0 var1)) (= var2 var10)) (= var3 var8)) (= var9 var5)) (= var6 (next (getnode (read var4 var8)))))))))) (inv_main39 var7 var0 var2 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main11 var3 var0 var2 var1) (and (not (= var1 nullAddr)) (and (and (= var0 0) (= var1 nullAddr)) (not (<= 0 (+ var2 (- 1)))))))) (inv_main39 var3 var0 var1 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main33 var4 var1 var10 var8 var5) (and (not (= var0 var9)) (and (= var6 nullAddr) (and (and (and (and (and (= var7 var4) (= var0 var1)) (= var2 var10)) (= var3 var8)) (= var9 var5)) (= var6 (next (getnode (read var4 var8))))))))) (inv_main42 var7 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main11 var3 var0 var2 var1) (and (and (not (= var0 0)) (= var1 nullAddr)) (not (<= 0 (+ var2 (- 1))))))) (inv_main42 var3 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap)) (or (not (and (inv_main3 var2 var0) (and (not (= var1 0)) (<= 0 (+ (+ 32 (* (- 1) var0)) (- 1)))))) (inv_main3 var2 (+ var0 1))))) +(assert (forall ((var0 node) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap)) (or (not (and (inv_main11 var4 var1 var3 var2) (and (and (not (= nullAddr var6)) (and (and (and (and (= var9 (newHeap (alloc var4 (O_node var0)))) (= var7 var1)) (= var5 var3)) (= var8 var2)) (= var6 (newAddr (alloc var4 (O_node var0)))))) (<= 0 (+ var3 (- 1)))))) (inv_main15 var9 var7 var5 var8 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main33 var4 var1 var10 var8 var5) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var9 var4) (= var0 var1)) (= var2 var10)) (= var3 var8)) (= var7 var5)) (= var6 (next (getnode (read var4 var8)))))))) (inv_main33 var9 var0 var2 var6 (+ var7 1))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main11 var3 var0 var2 var1) (and (not (= var1 nullAddr)) (not (<= 0 (+ var2 (- 1))))))) (inv_main33 var3 var0 var1 var1 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (or (not (and (inv_main15 var4 var0 var3 var1 var8) (and (and (and (and (= var5 (write var4 var8 (O_node (node var1)))) (= var7 var0)) (= var9 var3)) (= var6 var1)) (= var2 var8)))) (inv_main11 var5 var7 (+ var9 (- 1)) var2)))) +(assert (forall ((var0 Int) (var1 Heap)) (or (not (and (inv_main3 var1 var0) (not (<= 0 (+ (+ 32 (* (- 1) var0)) (- 1)))))) (inv_main11 var1 var0 var0 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap)) (or (not (and (inv_main3 var2 var0) (and (= var1 0) (<= 0 (+ (+ 32 (* (- 1) var0)) (- 1)))))) (inv_main11 var2 var0 var0 nullAddr)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (inv_main18 var3 var0 var2 var1 var4 var5)) (inv_main18 var3 var0 var2 var1 var4 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 node) (var4 Int) (var5 Heap) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int)) (or (not (and (inv_main11 var5 var0 var4 var2) (and (and (= nullAddr var1) (and (and (and (and (= var6 (newHeap (alloc var5 (O_node var3)))) (= var7 var0)) (= var9 var4)) (= var8 var2)) (= var1 (newAddr (alloc var5 (O_node var3)))))) (<= 0 (+ var4 (- 1)))))) (inv_main18 var6 var7 var9 var8 var1 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr)) (not (and (inv_main15 var3 var0 var2 var1 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main33 var1 var0 var4 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main39 var2 var0 var3 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr)) (not (inv_main42 var1 var0 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll_nondet_insert-1.i.smt2 b/heap-theory-benchmarks/array/sll_nondet_insert-1.i.smt2 new file mode 100644 index 00000000..89e3f433 --- /dev/null +++ b/heap-theory-benchmarks/array/sll_nondet_insert-1.i.smt2 @@ -0,0 +1,97 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main15 (Heap Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main30 (Heap Int Addr Int Int Int) Bool) +(declare-fun inv_main36 (Heap Int Addr Int Int) Bool) +(declare-fun inv_main37 (Heap Int Addr Int Int) Bool) +(declare-fun inv_main44 (Heap Int Addr Int Int Int Int Int) Bool) +(declare-fun inv_main49 (Heap Int Addr Int Int Int) Bool) +(declare-fun inv_main58 (Heap Int Addr Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main6 (Heap Int Int Int) Bool) +(declare-fun inv_main63 (Heap Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main65 (Heap Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main68 (Heap Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main79 (Heap Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main85 (Heap Int Addr Int Int Addr) Bool) +(declare-fun inv_main88 (Heap Int Addr Int Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr)) (or (not (and (inv_main79 var9 var8 var14 var5 var13 var11 var6) (and (not (= (+ var3 var0) var12)) (and (= var2 nullAddr) (and (and (and (and (and (and (and (= var10 var9) (= var0 var8)) (= var1 var14)) (= var3 var5)) (= var4 var13)) (= var7 var11)) (= var12 var6)) (= var2 (next (getnode (read var9 var11))))))))) (inv_main88 var10 var0 var1 var3 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr)) (or (not (and (inv_main37 var1 var0 var4 var3 var2) (and (not (= (+ var3 var0) 0)) (= var4 nullAddr)))) (inv_main88 var1 var0 var4 var3 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main30 var1 var0 var5 var3 var4 var6) (and (not (= var2 0)) (<= 0 (+ (+ var4 (* (- 1) var6)) (- 1)))))) (inv_main30 var1 var0 var5 var3 var4 (+ var6 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr)) (or (not (and (inv_main15 var1 var0 var2 var3) (not (<= 0 (+ var2 (- 1)))))) (inv_main30 var1 var0 var3 0 (+ var0 (- 1)) 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr)) (or (not (and (inv_main36 var1 var0 var4 var3 var2) (not (<= 0 (+ (+ var3 (* (- 1) var2)) (- 1)))))) (inv_main37 var1 var0 var4 var3 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr)) (or (not (and (inv_main36 var1 var0 var5 var4 var3) (and (= var2 0) (<= 0 (+ (+ var4 (* (- 1) var3)) (- 1)))))) (inv_main37 var1 var0 var5 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main68 var8 var7 var17 var2 var16 var9 var5 var4 var15 var18 var12) (and (and (and (and (and (and (and (= var1 (write var8 var18 (O_node (node var15)))) (= var14 var7)) (= var6 var17)) (= var13 var2)) (= var10 var16)) (= var0 var9)) (= var11 var5)) (= var3 var4)))) (inv_main36 var1 var14 var6 var13 (+ var10 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr)) (or (not (and (inv_main63 var10 var9 var20 var4 var19 var12 var7 var6 var18 var21 var15) (and (= var17 nullAddr) (and (and (and (and (and (and (and (and (and (and (= var2 (write var10 var18 (O_node (node var15)))) (= var11 var9)) (= var8 var20)) (= var5 var4)) (= var0 var19)) (= var1 var12)) (= var3 var7)) (= var14 var6)) (= var13 var18)) (= var17 var21)) (= var16 var15))))) (inv_main36 var2 var11 var13 var5 (+ var0 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main30 var1 var0 var4 var2 var3 var5) (not (<= 0 (+ (+ var3 (* (- 1) var5)) (- 1)))))) (inv_main36 var1 var0 var4 var5 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (and (inv_main30 var1 var0 var4 var2 var3 var6) (and (= var5 0) (<= 0 (+ (+ var3 (* (- 1) var6)) (- 1)))))) (inv_main36 var1 var0 var4 var6 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr)) (or (not (and (inv_main79 var9 var8 var14 var5 var13 var11 var6) (and (not (= var2 nullAddr)) (and (and (and (and (and (and (and (= var10 var9) (= var0 var8)) (= var1 var14)) (= var3 var5)) (= var4 var13)) (= var7 var11)) (= var12 var6)) (= var2 (next (getnode (read var9 var11)))))))) (inv_main79 var10 var0 var1 var3 var4 var2 (+ var12 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr)) (or (not (and (inv_main37 var1 var0 var4 var3 var2) (not (= var4 nullAddr)))) (inv_main79 var1 var0 var4 var3 var2 var4 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 node) (var9 Addr)) (or (not (and (inv_main15 var3 var2 var7 var9) (and (and (not (= nullAddr var5)) (and (and (and (and (= var1 (newHeap (alloc var3 (O_node var8)))) (= var0 var2)) (= var6 (+ var7 (- 1)))) (= var4 var9)) (= var5 (newAddr (alloc var3 (O_node var8)))))) (<= 0 (+ var7 (- 1)))))) (inv_main19 var1 var0 var6 var4 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main19 var3 var2 var5 var7 var8) (and (and (and (and (= var9 (write var3 var8 (O_node (node var7)))) (= var0 var2)) (= var4 var5)) (= var1 var7)) (= var6 var8)))) (inv_main15 var9 var0 var4 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int)) (or (not (and (inv_main6 var1 var0 var2 var3) (not (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1)))))) (inv_main15 var1 var3 var3 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main6 var2 var0 var3 var4) (and (= var1 0) (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main15 var2 var4 var4 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr)) (or (not (and (inv_main63 var11 var10 var20 var4 var19 var12 var8 var7 var17 var21 var15) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var5 (write var11 var17 (O_node (node var15)))) (= var1 var10)) (= var3 var20)) (= var18 var4)) (= var13 var19)) (= var16 var12)) (= var9 var8)) (= var0 var7)) (= var14 var17)) (= var6 var21)) (= var2 var15))))) (inv_main68 var5 var1 var3 var18 var13 var16 var9 var0 var14 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Heap) (var17 Int) (var18 Addr) (var19 Addr)) (or (not (and (inv_main85 var11 var10 var18 var8 var17 var1) (and (not (= var7 nullAddr)) (and (and (and (and (and (and (and (= var4 var11) (= var13 var10)) (= var2 var18)) (= var5 var8)) (= var15 var17)) (= var19 var1)) (= var12 (next (getnode (read var11 var1))))) (and (and (and (and (and (and (= var16 (write var4 var19 defObj)) (= var9 var13)) (= var0 var2)) (= var14 var5)) (= var3 var15)) (= var6 var19)) (= var7 var12)))))) (inv_main85 var16 var9 var0 var14 var3 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr)) (or (not (and (inv_main79 var9 var8 var14 var5 var13 var11 var6) (and (not (= var1 nullAddr)) (and (= (+ var3 var0) var12) (and (= var2 nullAddr) (and (and (and (and (and (and (and (= var10 var9) (= var0 var8)) (= var1 var14)) (= var3 var5)) (= var4 var13)) (= var7 var11)) (= var12 var6)) (= var2 (next (getnode (read var9 var11)))))))))) (inv_main85 var10 var0 var1 var3 var4 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr)) (or (not (and (inv_main37 var1 var0 var4 var3 var2) (and (not (= var4 nullAddr)) (and (= (+ var3 var0) 0) (= var4 nullAddr))))) (inv_main85 var1 var0 var4 var3 var2 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (or (not (and (inv_main44 var1 var0 var7 var6 var5 var2 var4 var3) (not (<= 0 (+ (+ var4 (* (- 1) var3)) (- 1)))))) (inv_main49 var1 var0 var7 var6 var5 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main44 var1 var0 var8 var7 var6 var2 var5 var3) (and (= var4 0) (<= 0 (+ (+ var5 (* (- 1) var3)) (- 1)))))) (inv_main49 var1 var0 var8 var7 var6 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main58 var3 var2 var8 var7 var6 var4 var0 var9 var5 var1)) (inv_main58 var3 var2 var8 var7 var6 var4 var0 var9 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 node) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr)) (or (not (and (inv_main49 var9 var8 var15 var4 var14 var10) (and (= nullAddr var6) (and (and (and (and (and (and (and (and (= var2 (newHeap (alloc var9 (O_node var7)))) (= var1 var8)) (= var3 var15)) (= var0 var4)) (= var5 var14)) (= var13 var10)) (= var12 2)) (= var11 var10)) (= var6 (newAddr (alloc var9 (O_node var7)))))))) (inv_main58 var2 var1 var3 var0 var5 var13 var12 var11 var6 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Addr)) (or (not (and (inv_main65 var10 var9 var19 var2 var18 var11 var8 var7 var16 var22 var14) (and (<= 0 (+ var15 (- 1))) (and (and (and (and (and (and (and (and (and (and (and (= var6 var10) (= var21 var9)) (= var20 var19)) (= var5 var2)) (= var13 var18)) (= var4 var11)) (= var12 var8)) (= var15 var7)) (= var3 var16)) (= var0 var22)) (= var17 var14)) (= var1 (next (getnode (read var10 var14)))))))) (inv_main65 var6 var21 var20 var5 var13 var4 var12 (+ var15 (- 1)) var3 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 node) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Heap) (var17 Int) (var18 Int) (var19 Heap) (var20 Int) (var21 Heap) (var22 Int) (var23 Addr) (var24 Int) (var25 Addr)) (or (not (and (inv_main49 var16 var15 var23 var10 var22 var17) (and (and (<= 0 (+ var12 (- 1))) (and (and (and (and (and (and (and (and (and (= var19 var21) (= var11 var9)) (= var14 var25)) (= var2 var3)) (= var24 var1)) (= var20 var7)) (= var8 var18)) (= var12 var4)) (= var13 var0)) (= var6 nullAddr))) (and (not (= nullAddr var0)) (and (and (and (and (and (and (and (and (= var21 (newHeap (alloc var16 (O_node var5)))) (= var9 var15)) (= var25 var23)) (= var3 var10)) (= var1 var22)) (= var7 var17)) (= var18 2)) (= var4 var17)) (= var0 (newAddr (alloc var16 (O_node var5))))))))) (inv_main65 var19 var11 var14 var2 var24 var20 var8 (+ var12 (- 1)) var13 var14 var14)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main6 var2 var0 var3 var4) (and (not (= var1 0)) (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main6 var2 var0 var3 (+ var4 1))))) +(assert (forall ((var0 Heap)) (or (not (inv_main2 var0)) (inv_main6 var0 2 5 2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Addr)) (or (not (and (inv_main65 var10 var9 var19 var2 var18 var11 var8 var7 var16 var22 var14) (and (not (<= 0 (+ var15 (- 1)))) (and (and (and (and (and (and (and (and (and (and (and (= var6 var10) (= var21 var9)) (= var20 var19)) (= var5 var2)) (= var13 var18)) (= var4 var11)) (= var12 var8)) (= var15 var7)) (= var3 var16)) (= var0 var22)) (= var17 var14)) (= var1 (next (getnode (read var10 var14)))))))) (inv_main63 var6 var21 var20 var5 var13 var4 var12 (+ var15 (- 1)) var3 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 node) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Heap) (var15 Int) (var16 Heap) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Addr)) (or (not (and (inv_main49 var14 var13 var21 var8 var20 var15) (and (and (not (<= 0 (+ var9 (- 1)))) (and (and (and (and (and (and (and (and (and (= var2 var16) (= var7 var18)) (= var10 var11)) (= var24 var4)) (= var12 var3)) (= var1 var19)) (= var17 var5)) (= var9 var0)) (= var23 var25)) (= var22 nullAddr))) (and (not (= nullAddr var25)) (and (and (and (and (and (and (and (and (= var16 (newHeap (alloc var14 (O_node var6)))) (= var18 var13)) (= var11 var21)) (= var4 var8)) (= var3 var20)) (= var19 var15)) (= var5 2)) (= var0 var15)) (= var25 (newAddr (alloc var14 (O_node var6))))))))) (inv_main63 var2 var7 var10 var24 var12 var1 var17 (+ var9 (- 1)) var23 var22 var10)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main22 var1 var0 var2 var4 var5 var3)) (inv_main22 var1 var0 var2 var4 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 node) (var9 Addr)) (or (not (and (inv_main15 var2 var1 var5 var7) (and (and (= nullAddr var0) (and (and (and (and (= var6 (newHeap (alloc var2 (O_node var8)))) (= var3 var1)) (= var4 (+ var5 (- 1)))) (= var9 var7)) (= var0 (newAddr (alloc var2 (O_node var8)))))) (<= 0 (+ var5 (- 1)))))) (inv_main22 var6 var3 var4 var9 var0 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main44 var1 var0 var8 var7 var6 var2 var5 var3) (and (not (= var4 0)) (<= 0 (+ (+ var5 (* (- 1) var3)) (- 1)))))) (inv_main44 var1 var0 var8 var7 var6 var2 var5 (+ var3 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main36 var1 var0 var4 var3 var2) (and (not (= var5 0)) (<= 0 (+ (+ var3 (* (- 1) var2)) (- 1)))))) (inv_main44 var1 var0 var4 var3 var2 0 (+ var2 (+ var0 (- 1))) 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main19 var1 var0 var2 var3 var4) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (not (and (inv_main65 var2 var1 var8 var7 var6 var3 var0 var10 var5 var9 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (not (and (inv_main63 var2 var1 var8 var7 var6 var3 var0 var10 var5 var9 var4) (not (is-O_node (read var2 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (not (and (inv_main68 var2 var1 var8 var7 var6 var3 var0 var10 var5 var9 var4) (not (is-O_node (read var2 var9))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main79 var1 var0 var5 var4 var3 var2 var6) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr)) (not (and (inv_main85 var2 var1 var5 var4 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr)) (not (inv_main88 var1 var0 var4 var3 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll_nondet_insert-2.i.smt2 b/heap-theory-benchmarks/array/sll_nondet_insert-2.i.smt2 new file mode 100644 index 00000000..28ae4fd6 --- /dev/null +++ b/heap-theory-benchmarks/array/sll_nondet_insert-2.i.smt2 @@ -0,0 +1,94 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main15 (Heap Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main30 (Heap Int Addr Int Int Int) Bool) +(declare-fun inv_main36 (Heap Int Addr Int Int) Bool) +(declare-fun inv_main42 (Heap Int Addr Int Int Int Int Int) Bool) +(declare-fun inv_main47 (Heap Int Addr Int Int Int) Bool) +(declare-fun inv_main56 (Heap Int Addr Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main6 (Heap Int Int Int) Bool) +(declare-fun inv_main61 (Heap Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main63 (Heap Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main77 (Heap Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main83 (Heap Int Addr Int Int Addr) Bool) +(declare-fun inv_main86 (Heap Int Addr Int Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (or (not (and (inv_main42 var1 var7 var5 var6 var2 var4 var3 var0) (not (<= 0 (+ (+ var3 (* (- 1) var0)) (- 1)))))) (inv_main47 var1 var7 var5 var6 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int)) (or (not (and (inv_main42 var1 var8 var5 var7 var2 var4 var3 var0) (and (= var6 0) (<= 0 (+ (+ var3 (* (- 1) var0)) (- 1)))))) (inv_main47 var1 var8 var5 var7 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int)) (or (not (inv_main56 var1 var8 var5 var7 var3 var0 var6 var9 var2 var4)) (inv_main56 var1 var8 var5 var7 var3 var0 var6 var9 var2 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 node) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap)) (or (not (and (inv_main47 var9 var8 var13 var14 var3 var1) (and (= nullAddr var2) (and (and (and (and (and (and (and (and (= var15 (newHeap (alloc var9 (O_node var11)))) (= var4 var8)) (= var6 var13)) (= var12 var14)) (= var0 var3)) (= var5 var1)) (= var7 2)) (= var10 var1)) (= var2 (newAddr (alloc var9 (O_node var11)))))))) (inv_main56 var15 var4 var6 var12 var0 var5 var7 var10 var2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main6 var2 var0 var1 var4) (and (not (= var3 0)) (<= 0 (+ (+ var1 (* (- 1) var4)) (- 1)))))) (inv_main6 var2 var0 var1 (+ var4 1))))) +(assert (forall ((var0 Heap)) (or (not (inv_main2 var0)) (inv_main6 var0 2 5 2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main30 var0 var6 var3 var5 var1 var4) (and (not (= var2 0)) (<= 0 (+ (+ var1 (* (- 1) var4)) (- 1)))))) (inv_main30 var0 var6 var3 var5 var1 (+ var4 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int)) (or (not (and (inv_main15 var0 var3 var2 var1) (not (<= 0 (+ var2 (- 1)))))) (inv_main30 var0 var3 var1 0 (+ var3 (- 1)) 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main66 var12 var10 var15 var17 var5 var0 var16 var18 var13 var3 var1) (and (and (and (and (and (and (and (= var2 (write var12 var3 (O_node (node var13)))) (= var4 var10)) (= var7 var15)) (= var9 var17)) (= var6 var5)) (= var14 var0)) (= var11 var16)) (= var8 var18)))) (inv_main36 var2 var4 var7 var9 (+ var6 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Int) (var18 Addr) (var19 Int) (var20 Int) (var21 Int)) (or (not (and (inv_main61 var12 var8 var18 var20 var6 var1 var19 var21 var14 var5 var2) (and (= var11 nullAddr) (and (and (and (and (and (and (and (and (and (and (= var15 (write var12 var14 (O_node (node var2)))) (= var17 var8)) (= var10 var18)) (= var0 var20)) (= var16 var6)) (= var7 var1)) (= var4 var19)) (= var3 var21)) (= var13 var14)) (= var11 var5)) (= var9 var2))))) (inv_main36 var15 var17 var13 var0 (+ var16 1))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (or (not (and (inv_main30 var0 var5 var2 var4 var1 var3) (not (<= 0 (+ (+ var1 (* (- 1) var3)) (- 1)))))) (inv_main36 var0 var5 var2 var3 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main30 var1 var6 var3 var5 var2 var4) (and (= var0 0) (<= 0 (+ (+ var2 (* (- 1) var4)) (- 1)))))) (inv_main36 var1 var6 var3 var4 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Int)) (or (not (and (inv_main63 var12 var9 var17 var19 var4 var0 var18 var22 var15 var2 var1) (and (not (<= 0 (+ var10 (- 1)))) (and (and (and (and (and (and (and (and (and (and (and (= var16 var12) (= var8 var9)) (= var5 var17)) (= var11 var19)) (= var3 var4)) (= var14 var0)) (= var6 var18)) (= var10 var22)) (= var21 var15)) (= var20 var2)) (= var13 var1)) (= var7 (next (getnode (read var12 var1)))))))) (inv_main61 var16 var8 var5 var11 var3 var14 var6 (+ var10 (- 1)) var21 var20 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 node) (var14 Int) (var15 Addr) (var16 Int) (var17 Heap) (var18 Int) (var19 Addr) (var20 Int) (var21 Int) (var22 Int) (var23 Int) (var24 Int) (var25 Addr)) (or (not (and (inv_main47 var17 var14 var19 var22 var8 var1) (and (and (not (<= 0 (+ var16 (- 1)))) (and (and (and (and (and (and (and (and (and (= var5 var12) (= var6 var7)) (= var15 var9)) (= var21 var3)) (= var0 var10)) (= var18 var20)) (= var2 var24)) (= var16 var23)) (= var11 var4)) (= var25 nullAddr))) (and (not (= nullAddr var4)) (and (and (and (and (and (and (and (and (= var12 (newHeap (alloc var17 (O_node var13)))) (= var7 var14)) (= var9 var19)) (= var3 var22)) (= var10 var8)) (= var20 var1)) (= var24 2)) (= var23 var1)) (= var4 (newAddr (alloc var17 (O_node var13))))))))) (inv_main61 var5 var6 var15 var21 var0 var18 var2 (+ var16 (- 1)) var11 var25 var15)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 Int)) (or (not (and (inv_main61 var12 var11 var15 var18 var5 var1 var17 var21 var14 var4 var2) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var0 (write var12 var14 (O_node (node var2)))) (= var19 var11)) (= var10 var15)) (= var7 var18)) (= var20 var5)) (= var9 var1)) (= var13 var17)) (= var8 var21)) (= var3 var14)) (= var6 var4)) (= var16 var2))))) (inv_main66 var0 var19 var10 var7 var20 var9 var13 var8 var3 var6 var16)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int)) (or (not (and (inv_main83 var8 var6 var17 var18 var4 var16) (and (not (= var15 nullAddr)) (and (and (and (and (and (and (and (= var14 var8) (= var13 var6)) (= var9 var17)) (= var0 var18)) (= var11 var4)) (= var7 var16)) (= var5 (next (getnode (read var8 var16))))) (and (and (and (and (and (and (= var2 (write var14 var7 defObj)) (= var19 var13)) (= var12 var9)) (= var1 var0)) (= var3 var11)) (= var10 var7)) (= var15 var5)))))) (inv_main83 var2 var19 var12 var1 var3 var15)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main77 var9 var8 var12 var14 var4 var5 var3) (and (not (= var11 nullAddr)) (and (= (+ var7 var1) var6) (and (= var2 nullAddr) (and (and (and (and (and (and (and (= var0 var9) (= var1 var8)) (= var11 var12)) (= var7 var14)) (= var13 var4)) (= var10 var5)) (= var6 var3)) (= var2 (next (getnode (read var9 var5)))))))))) (inv_main83 var0 var1 var11 var7 var13 var11)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main36 var0 var4 var2 var3 var1) (and (not (= var2 nullAddr)) (and (and (= (+ var3 var4) 0) (= var2 nullAddr)) (not (<= 0 (+ (+ var3 (* (- 1) var1)) (- 1)))))))) (inv_main83 var0 var4 var2 var3 var1 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (and (inv_main42 var2 var8 var6 var7 var3 var5 var4 var1) (and (not (= var0 0)) (<= 0 (+ (+ var4 (* (- 1) var1)) (- 1)))))) (inv_main42 var2 var8 var6 var7 var3 var5 var4 (+ var1 1))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main36 var0 var4 var2 var3 var1) (<= 0 (+ (+ var3 (* (- 1) var1)) (- 1))))) (inv_main42 var0 var4 var2 var3 var1 0 (+ var1 (+ var4 (- 1))) 0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main77 var9 var8 var12 var14 var4 var5 var3) (and (not (= (+ var7 var1) var6)) (and (= var2 nullAddr) (and (and (and (and (and (and (and (= var0 var9) (= var1 var8)) (= var11 var12)) (= var7 var14)) (= var13 var4)) (= var10 var5)) (= var6 var3)) (= var2 (next (getnode (read var9 var5))))))))) (inv_main86 var0 var1 var11 var7 var13)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main36 var0 var4 var2 var3 var1) (and (and (not (= (+ var3 var4) 0)) (= var2 nullAddr)) (not (<= 0 (+ (+ var3 (* (- 1) var1)) (- 1))))))) (inv_main86 var0 var4 var2 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 node) (var8 Heap) (var9 Int)) (or (not (and (inv_main15 var2 var9 var4 var3) (and (and (not (= nullAddr var6)) (and (and (and (and (= var8 (newHeap (alloc var2 (O_node var7)))) (= var1 var9)) (= var5 (+ var4 (- 1)))) (= var0 var3)) (= var6 (newAddr (alloc var2 (O_node var7)))))) (<= 0 (+ var4 (- 1)))))) (inv_main19 var8 var1 var5 var0 var6)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main77 var9 var8 var12 var14 var4 var5 var3) (and (not (= var2 nullAddr)) (and (and (and (and (and (and (and (= var0 var9) (= var1 var8)) (= var11 var12)) (= var7 var14)) (= var13 var4)) (= var10 var5)) (= var6 var3)) (= var2 (next (getnode (read var9 var5)))))))) (inv_main77 var0 var1 var11 var7 var13 var2 (+ var6 1))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main36 var0 var4 var2 var3 var1) (and (not (= var2 nullAddr)) (not (<= 0 (+ (+ var3 (* (- 1) var1)) (- 1))))))) (inv_main77 var0 var4 var2 var3 var1 var2 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main19 var1 var9 var3 var2 var5) (and (and (and (and (= var8 (write var1 var5 (O_node (node var2)))) (= var6 var9)) (= var0 var3)) (= var4 var2)) (= var7 var5)))) (inv_main15 var8 var6 var0 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int)) (or (not (and (inv_main6 var2 var0 var1 var3) (not (<= 0 (+ (+ var1 (* (- 1) var3)) (- 1)))))) (inv_main15 var2 var3 var3 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main6 var2 var0 var1 var3) (and (= var4 0) (<= 0 (+ (+ var1 (* (- 1) var3)) (- 1)))))) (inv_main15 var2 var3 var3 nullAddr)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Int)) (or (not (and (inv_main63 var12 var9 var17 var19 var4 var0 var18 var22 var15 var2 var1) (and (<= 0 (+ var10 (- 1))) (and (and (and (and (and (and (and (and (and (and (and (= var16 var12) (= var8 var9)) (= var5 var17)) (= var11 var19)) (= var3 var4)) (= var14 var0)) (= var6 var18)) (= var10 var22)) (= var21 var15)) (= var20 var2)) (= var13 var1)) (= var7 (next (getnode (read var12 var1)))))))) (inv_main63 var16 var8 var5 var11 var3 var14 var6 (+ var10 (- 1)) var21 var7 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 node) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Int) (var25 Addr)) (or (not (and (inv_main47 var15 var12 var20 var24 var5 var0) (and (and (<= 0 (+ var17 (- 1))) (and (and (and (and (and (and (and (and (and (= var10 var9) (= var7 var2)) (= var25 var23)) (= var19 var1)) (= var6 var21)) (= var8 var18)) (= var14 var13)) (= var17 var3)) (= var16 var11)) (= var22 nullAddr))) (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var15 (O_node var4)))) (= var2 var12)) (= var23 var20)) (= var1 var24)) (= var21 var5)) (= var18 var0)) (= var13 2)) (= var3 var0)) (= var11 (newAddr (alloc var15 (O_node var4))))))))) (inv_main63 var10 var7 var25 var19 var6 var8 var14 (+ var17 (- 1)) var16 var25 var25)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (or (not (inv_main22 var0 var5 var2 var1 var3 var4)) (inv_main22 var0 var5 var2 var1 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 node) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main15 var2 var9 var5 var3) (and (and (= nullAddr var0) (and (and (and (and (= var8 (newHeap (alloc var2 (O_node var4)))) (= var6 var9)) (= var1 (+ var5 (- 1)))) (= var7 var3)) (= var0 (newAddr (alloc var2 (O_node var4)))))) (<= 0 (+ var5 (- 1)))))) (inv_main22 var8 var6 var1 var7 var0 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int)) (not (and (inv_main19 var0 var4 var2 var1 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main63 var2 var9 var6 var8 var5 var0 var7 var10 var4 var3 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main61 var2 var9 var6 var8 var5 var0 var7 var10 var4 var3 var1) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main66 var2 var9 var6 var8 var5 var0 var7 var10 var4 var3 var1) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main77 var0 var6 var4 var5 var2 var3 var1) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int)) (not (and (inv_main83 var0 var5 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int)) (not (inv_main86 var0 var4 var2 var3 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll_of_sll_nondet_append-1.i.smt2 b/heap-theory-benchmarks/array/sll_of_sll_nondet_append-1.i.smt2 new file mode 100644 index 00000000..abd31bf7 --- /dev/null +++ b/heap-theory-benchmarks/array/sll_of_sll_nondet_append-1.i.smt2 @@ -0,0 +1,115 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (inner Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main26 (Heap Int Int Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main33 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main37 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main40 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Int Int Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main49 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main5 (Heap Int Int Int Int) Bool) +(declare-fun inv_main51 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main56 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main69 (Heap Int Int Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main84 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main85 (Heap Int Int Int Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main88 (Heap Int Int Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main92 (Heap Int Int Int Int Addr Addr) Bool) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap)) (or (not (= var2 emptyHeap)) (inv_main5 var2 3 5 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int)) (or (not (and (inv_main85 var7 var17 var14 var3 var2 var1 var8 var12 var10) (and (not (= var0 nullAddr)) (and (and (and (and (and (and (and (and (and (= var5 var7) (= var18 var17)) (= var13 var14)) (= var4 var3)) (= var6 var2)) (= var15 var1)) (= var11 var8)) (= var16 var12)) (= var9 var10)) (= var0 (inner (getnode (read var7 var12)))))))) (inv_main88 var5 var18 var13 var4 var6 var15 var11 var16 var9 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Int) (var29 Int) (var30 Int) (var31 Addr)) (or (not (and (inv_main88 var6 var30 var29 var3 var1 var15 var19 var11 var27 var23) (and (not (= var8 nullAddr)) (and (and (and (and (and (and (and (and (and (and (and (= var9 var6) (= var0 var30)) (= var18 var29)) (= var28 var3)) (= var12 var1)) (= var14 var15)) (= var21 var19)) (= var26 var11)) (= var10 var27)) (= var24 var23)) (= var17 (next (getnode (read var6 var23))))) (and (and (and (and (and (and (and (and (and (and (= var16 (write var9 var24 defObj)) (= var5 var0)) (= var13 var18)) (= var22 var28)) (= var2 var12)) (= var20 var14)) (= var25 var21)) (= var31 var26)) (= var4 var10)) (= var7 var24)) (= var8 var17)))))) (inv_main88 var16 var5 var13 var22 var2 var20 var25 var31 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main69 var5 var18 var16 var2 var1 var0 var10 var9 var14) (and (and (= 3 var11) (= 5 var12)) (and (not (= var11 var12)) (and (= var8 nullAddr) (and (and (and (and (and (and (and (and (and (= var13 var5) (= var17 var18)) (= var4 var16)) (= var11 var2)) (= var15 var1)) (= var3 var0)) (= var6 var10)) (= var7 var9)) (= var12 var14)) (= var8 (next (getnode (read var5 var9)))))))))) (inv_main56 var13 var17 var4 (+ (+ var11 1) 1) var15 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main69 var5 var18 var16 var2 var1 var0 var10 var9 var14) (and (and (= (+ var11 1) var12) (<= 0 (+ (+ var4 (* (- 1) var11)) (- 1)))) (and (or (not (= 3 var11)) (not (= 5 var12))) (and (not (= var11 var12)) (and (= var8 nullAddr) (and (and (and (and (and (and (and (and (and (= var13 var5) (= var17 var18)) (= var4 var16)) (= var11 var2)) (= var15 var1)) (= var3 var0)) (= var6 var10)) (= var7 var9)) (= var12 var14)) (= var8 (next (getnode (read var5 var9))))))))))) (inv_main56 var13 var17 var4 (+ var11 1) var15 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main62 var3 var13 var9 var2 var1 var0 var4) (and (and (= (+ var14 1) 0) (<= 0 (+ (+ var7 (* (- 1) var14)) (- 1)))) (and (not (= var14 0)) (and (= var6 nullAddr) (and (and (and (and (and (and (and (= var5 var3) (= var12 var13)) (= var7 var9)) (= var14 var2)) (= var10 var1)) (= var11 var0)) (= var8 var4)) (= var6 (inner (getnode (read var3 var4)))))))))) (inv_main56 var5 var12 var7 (+ var14 1) var10 var11 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main72 var5 var15 var13 var2 var1 var0 var7 var6) (and (= var12 nullAddr) (and (and (and (and (and (and (and (and (= var11 var5) (= var3 var15)) (= var16 var13)) (= var14 var2)) (= var9 var1)) (= var4 var0)) (= var10 var7)) (= var8 var6)) (= var12 (next (getnode (read var5 var7)))))))) (inv_main56 var11 var3 var16 (+ var14 1) var9 var4 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main56 var3 var6 var4 var2 var1 var0 var5) (and (= var5 nullAddr) (and (not (<= 0 (+ (+ var2 (* (- 1) var4)) (- 1)))) (not (= nullAddr var5)))))) (inv_main56 var3 var6 var4 (+ var2 1) var1 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main8 var3 var5 var4 var2 var1 var0) (not (<= 0 (+ var4 (* (- 1) var2)))))) (inv_main56 var3 var5 var4 var5 var1 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 node) (var19 Heap) (var20 Int) (var21 Int) (var22 Int) (var23 Int) (var24 Int) (var25 Addr)) (or (not (and (inv_main33 var5 var22 var16 var4 var2 var25 var20 var9 var13 var11 var15 var1) (and (and (not (= nullAddr var0)) (and (and (and (and (and (and (and (and (and (and (and (and (= var19 (newHeap (alloc var5 (O_node var18)))) (= var21 var22)) (= var8 var16)) (= var6 var4)) (= var3 var2)) (= var7 var25)) (= var10 var20)) (= var24 var9)) (= var17 var13)) (= var12 var11)) (= var23 var15)) (= var14 var1)) (= var0 (newAddr (alloc var5 (O_node var18)))))) (<= 0 (+ var15 (- 1)))))) (inv_main37 var19 var21 var8 var6 var3 var7 var10 var24 var17 var12 var23 var14 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main72 var5 var15 var13 var2 var1 var0 var7 var6) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (and (= var11 var5) (= var3 var15)) (= var16 var13)) (= var14 var2)) (= var9 var1)) (= var4 var0)) (= var10 var7)) (= var8 var6)) (= var12 (next (getnode (read var5 var7)))))))) (inv_main62 var11 var3 var16 var14 var9 var4 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main56 var3 var6 var4 var2 var1 var0 var5) (and (not (= var5 nullAddr)) (and (not (<= 0 (+ (+ var2 (* (- 1) var4)) (- 1)))) (not (= nullAddr var5)))))) (inv_main62 var3 var6 var4 var2 var1 var0 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Int)) (or (not (and (inv_main52 var5 var19 var15 var3 var2 var1 var18 var8 var16 var12) (and (and (and (and (and (and (and (and (and (and (= var4 var5) (= var9 var19)) (= var17 var15)) (= var10 var3)) (= var20 var2)) (= var6 var1)) (= var14 var18)) (= var0 var8)) (= var13 var16)) (= var11 var12)) (= var7 (next (getnode (read var5 var12))))))) (inv_main49 var4 var9 var17 var10 var20 var6 var14 var0 var13 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Heap)) (or (not (and (inv_main46 var8 var16 var12 var4 var2 var1 var15 var9 var14) (and (not (= nullAddr var13)) (and (and (and (and (and (and (and (and (= var17 (write var8 var14 (O_node (node nullAddr (inner (getnode (read var8 var14))))))) (= var7 var16)) (= var0 var12)) (= var5 var4)) (= var10 var2)) (= var13 var1)) (= var3 var15)) (= var6 var9)) (= var11 var14))))) (inv_main49 var17 var7 var0 var5 var10 var13 var3 var6 var11 var13)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Int) (var26 Addr) (var27 Heap) (var28 Int)) (or (not (and (inv_main85 var4 var28 var25 var1 var0 var14 var16 var11 var22) (and (not (= var6 nullAddr)) (and (and (= var21 nullAddr) (and (and (and (and (and (and (and (and (and (= var12 (write var27 var9 defObj)) (= var3 var8)) (= var17 var13)) (= var5 var2)) (= var24 var19)) (= var7 var18)) (= var15 var10)) (= var23 var9)) (= var6 var20)) (= var26 var21))) (and (and (and (and (and (and (and (and (and (= var27 var4) (= var8 var28)) (= var13 var25)) (= var2 var1)) (= var19 var0)) (= var18 var14)) (= var10 var16)) (= var9 var11)) (= var20 var22)) (= var21 (inner (getnode (read var4 var11))))))))) (inv_main84 var12 var3 var17 var5 var24 var7 var15 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Int) (var22 Heap) (var23 Int) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Int) (var29 Int) (var30 Addr) (var31 Addr) (var32 Int) (var33 Int) (var34 Addr) (var35 Addr) (var36 Addr) (var37 Int) (var38 Addr) (var39 Int) (var40 Int) (var41 Int)) (or (not (and (inv_main88 var7 var40 var39 var4 var0 var18 var25 var13 var36 var30) (and (not (= var38 nullAddr)) (and (and (= var10 nullAddr) (and (and (and (and (and (and (and (and (and (= var22 (write var17 var2 defObj)) (= var33 var6)) (= var21 var15)) (= var32 var28)) (= var29 var1)) (= var9 var26)) (= var20 var34)) (= var5 var2)) (= var38 var3)) (= var24 var10))) (and (and (and (and (and (and (and (and (and (and (and (= var11 var7) (= var41 var40)) (= var23 var39)) (= var37 var4)) (= var14 var0)) (= var16 var18)) (= var27 var25)) (= var35 var13)) (= var12 var36)) (= var31 var30)) (= var19 (next (getnode (read var7 var30))))) (and (and (and (and (and (and (and (and (and (and (= var17 (write var11 var31 defObj)) (= var6 var41)) (= var15 var23)) (= var28 var37)) (= var1 var14)) (= var26 var16)) (= var34 var27)) (= var2 var35)) (= var3 var12)) (= var8 var31)) (= var10 var19))))))) (inv_main84 var22 var33 var21 var32 var29 var9 var20 var38)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main56 var3 var6 var4 var2 var1 var0 var5) (and (not (= var0 nullAddr)) (= nullAddr var5)))) (inv_main84 var3 var6 var4 var2 var1 var0 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (or (not (and (inv_main49 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3) (= (next (getnode (read var4 var3))) nullAddr))) (inv_main51 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (or (not (and (inv_main49 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3) (not (= (next (getnode (read var4 var3))) nullAddr)))) (inv_main52 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr)) (or (not (inv_main40 var4 var12 var10 var3 var2 var0 var11 var6 var8 var7 var9 var1 var13 var5)) (inv_main40 var4 var12 var10 var3 var2 var0 var11 var6 var8 var7 var9 var1 var13 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 node) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Addr) (var19 Int) (var20 Int) (var21 Int) (var22 Heap) (var23 Int) (var24 Addr) (var25 Addr)) (or (not (and (inv_main33 var7 var20 var17 var4 var2 var0 var19 var11 var15 var13 var16 var1) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (and (and (and (and (and (= var22 (newHeap (alloc var7 (O_node var10)))) (= var9 var20)) (= var21 var17)) (= var23 var4)) (= var12 var2)) (= var24 var0)) (= var3 var19)) (= var8 var11)) (= var5 var15)) (= var25 var13)) (= var6 var16)) (= var18 var1)) (= var14 (newAddr (alloc var7 (O_node var10)))))) (<= 0 (+ var16 (- 1)))))) (inv_main40 var22 var9 var21 var23 var12 var24 var3 var8 var5 var25 var6 var18 var14 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Int) (var24 Int) (var25 Addr)) (or (not (and (inv_main37 var7 var23 var17 var3 var2 var0 var22 var9 var13 var12 var16 var1 var25) (and (and (and (and (and (and (and (and (and (and (and (and (= var8 (write var7 var25 (O_node (node var1 (inner (getnode (read var7 var25))))))) (= var10 var23)) (= var21 var17)) (= var15 var3)) (= var11 var2)) (= var20 var0)) (= var24 var22)) (= var4 var9)) (= var18 var13)) (= var6 var12)) (= var5 var16)) (= var14 var1)) (= var19 var25)))) (inv_main33 var8 var10 var21 var15 var11 var20 var24 var4 var18 var6 (+ var5 (- 1)) var19)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 node) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main11 var4 var15 var11 var2 var1 var0) (and (and (not (= nullAddr var7)) (and (and (and (and (and (and (and (and (and (= var8 (newHeap (alloc var4 (O_node var6)))) (= var9 var15)) (= var5 var11)) (= var3 var2)) (= var14 var1)) (= var13 var0)) (= var17 5)) (= var10 var2)) (= var16 var2)) (= var7 (newAddr (alloc var4 (O_node var6)))))) (and (not (= var12 0)) (<= 0 (+ (+ 10 (* (- 1) var1)) (- 1))))))) (inv_main33 var8 var9 var5 var3 var14 var13 var17 var10 var16 var7 var16 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main84 var4 var7 var5 var2 var1 var0 var6 var3)) (inv_main85 var4 var7 var5 var2 var1 var0 var6 var3 (next (getnode (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main69 var5 var18 var16 var2 var1 var0 var10 var9 var14) (and (not (= var8 nullAddr)) (and (and (and (and (and (and (and (and (and (= var13 var5) (= var17 var18)) (= var4 var16)) (= var11 var2)) (= var15 var1)) (= var3 var0)) (= var6 var10)) (= var7 var9)) (= var12 var14)) (= var8 (next (getnode (read var5 var9)))))))) (inv_main69 var13 var17 var4 var11 var15 var3 var6 var8 (+ var12 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main62 var4 var13 var10 var2 var1 var0 var5) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (= var11 var4) (= var9 var13)) (= var14 var10)) (= var12 var2)) (= var3 var1)) (= var7 var0)) (= var8 var5)) (= var6 (inner (getnode (read var4 var5)))))))) (inv_main69 var11 var9 var14 var12 var3 var7 var8 var6 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main69 var5 var18 var16 var2 var1 var0 var10 var9 var14) (and (or (not (= (+ var11 1) var12)) (not (<= 0 (+ (+ var4 (* (- 1) var11)) (- 1))))) (and (or (not (= 3 var11)) (not (= 5 var12))) (and (not (= var11 var12)) (and (= var8 nullAddr) (and (and (and (and (and (and (and (and (and (= var13 var5) (= var17 var18)) (= var4 var16)) (= var11 var2)) (= var15 var1)) (= var3 var0)) (= var6 var10)) (= var7 var9)) (= var12 var14)) (= var8 (next (getnode (read var5 var9))))))))))) (inv_main92 var13 var17 var4 var11 var15 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main62 var3 var13 var9 var2 var1 var0 var4) (and (or (not (= (+ var14 1) 0)) (not (<= 0 (+ (+ var7 (* (- 1) var14)) (- 1))))) (and (not (= var14 0)) (and (= var6 nullAddr) (and (and (and (and (and (and (and (= var5 var3) (= var12 var13)) (= var7 var9)) (= var14 var2)) (= var10 var1)) (= var11 var0)) (= var8 var4)) (= var6 (inner (getnode (read var3 var4)))))))))) (inv_main92 var5 var12 var7 var14 var10 var11 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main56 var3 var6 var4 var2 var1 var0 var5) (and (<= 0 (+ (+ var2 (* (- 1) var4)) (- 1))) (not (= nullAddr var5))))) (inv_main92 var3 var6 var4 var2 var1 var0 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main5 var3 var9 var6 var1 var0) (and (and (and (and (and (= var5 var3) (= var4 var9)) (= var8 var6)) (= var10 var1)) (= var7 var0)) (= var2 nullAddr)))) (inv_main8 var5 var4 var8 var4 var7 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main11 var3 var5 var4 var2 var1 var0) (not (<= 0 (+ (+ 10 (* (- 1) var1)) (- 1)))))) (inv_main8 var3 var5 var4 (+ var2 1) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int)) (or (not (and (inv_main11 var4 var6 var5 var2 var1 var0) (and (= var3 0) (<= 0 (+ (+ 10 (* (- 1) var1)) (- 1)))))) (inv_main8 var4 var6 var5 (+ var2 1) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (or (not (inv_main31 var5 var10 var6 var3 var2 var1 var8 var9 var4 var0 var7)) (inv_main29 (write var5 var0 (O_node (node (next (getnode (read var5 var0))) var7))) var10 var6 var3 var2 var1 var8 var9 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int) (var19 Int)) (or (not (and (inv_main29 var8 var18 var15 var3 var1 var0 var17 var9 var13 var11) (and (and (and (and (and (and (and (and (and (= var7 (write var8 var11 (O_node (node nullAddr (inner (getnode (read var8 var11))))))) (= var12 var18)) (= var6 var15)) (= var10 var3)) (= var16 var1)) (= var2 var0)) (= var19 var17)) (= var4 var9)) (= var14 var13)) (= var5 var11)))) (inv_main46 var7 var12 var6 var10 var16 var2 var19 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (or (not (inv_main26 var5 var10 var6 var3 var2 var1 var8 var9 var4 var0 var7)) (inv_main26 var5 var10 var6 var3 var2 var1 var8 var9 var4 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 node) (var15 Addr) (var16 Int) (var17 Int)) (or (not (and (inv_main11 var3 var16 var11 var2 var1 var0) (and (and (= nullAddr var15) (and (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var3 (O_node var14)))) (= var6 var16)) (= var13 var11)) (= var17 var2)) (= var8 var1)) (= var7 var0)) (= var10 5)) (= var4 var2)) (= var5 var2)) (= var15 (newAddr (alloc var3 (O_node var14)))))) (and (not (= var12 0)) (<= 0 (+ (+ 10 (* (- 1) var1)) (- 1))))))) (inv_main26 var9 var6 var13 var17 var8 var7 var10 var4 var5 var15 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main69 var5 var18 var16 var2 var1 var0 var10 var9 var14) (and (= var11 var12) (and (= var8 nullAddr) (and (and (and (and (and (and (and (and (and (= var13 var5) (= var17 var18)) (= var4 var16)) (= var11 var2)) (= var15 var1)) (= var3 var0)) (= var6 var10)) (= var7 var9)) (= var12 var14)) (= var8 (next (getnode (read var5 var9))))))))) (inv_main72 var13 var17 var4 var11 var15 var3 var6 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main62 var3 var13 var9 var2 var1 var0 var4) (and (= var14 0) (and (= var6 nullAddr) (and (and (and (and (and (and (and (= var5 var3) (= var12 var13)) (= var7 var9)) (= var14 var2)) (= var10 var1)) (= var11 var0)) (= var8 var4)) (= var6 (inner (getnode (read var3 var4))))))))) (inv_main72 var5 var12 var7 var14 var10 var11 var8 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main8 var3 var5 var4 var2 var1 var0) (<= 0 (+ var4 (* (- 1) var2))))) (inv_main11 var3 var5 var4 var2 0 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int) (var17 Int)) (or (not (and (inv_main51 var6 var17 var14 var4 var2 var1 var16 var10 var15 var13) (and (and (and (and (and (and (and (= var9 (write var6 var13 (O_node (node var15 (inner (getnode (read var6 var13))))))) (= var8 var17)) (= var11 var14)) (= var0 var4)) (= var12 var2)) (= var3 var1)) (= var5 var16)) (= var7 var10)))) (inv_main11 var9 var8 var11 var0 (+ var12 1) var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main46 var3 var16 var9 var2 var1 var0 var14 var6 var11) (and (= nullAddr var4) (and (and (and (and (and (and (and (and (= var13 (write var3 var11 (O_node (node nullAddr (inner (getnode (read var3 var11))))))) (= var7 var16)) (= var5 var9)) (= var17 var2)) (= var15 var1)) (= var4 var0)) (= var10 var14)) (= var8 var6)) (= var12 var11))))) (inv_main11 var13 var7 var5 var17 (+ var15 1) var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr)) (or (not (and (inv_main33 var6 var10 var7 var3 var2 var1 var8 var9 var4 var0 var5 var11) (not (<= 0 (+ var5 (- 1)))))) (inv_main31 var6 var10 var7 var3 var2 var1 var8 var9 var4 var0 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr)) (not (and (inv_main37 var6 var10 var7 var3 var2 var1 var8 var9 var4 var0 var5 var12 var11) (not (is-O_node (read var6 var11))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main31 var5 var10 var6 var3 var2 var1 var8 var9 var4 var0 var7) (not (is-O_node (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int)) (not (and (inv_main29 var5 var9 var6 var3 var2 var1 var7 var8 var4 var0) (not (is-O_node (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main46 var3 var8 var4 var2 var1 var0 var6 var7 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (not (and (inv_main49 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (not (and (inv_main52 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (not (and (inv_main51 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main62 var3 var6 var4 var2 var1 var0 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main69 var3 var8 var4 var2 var1 var0 var6 var5 var7) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main72 var3 var7 var5 var2 var1 var0 var6 var4) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main84 var4 var7 var5 var2 var1 var0 var6 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int)) (not (and (inv_main85 var5 var8 var6 var2 var1 var0 var7 var4 var3) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main88 var5 var9 var6 var2 var1 var0 var7 var4 var3 var8) (not (is-O_node (read var5 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (not (inv_main92 var3 var6 var4 var2 var1 var0 var5)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll_of_sll_nondet_append-2.i.smt2 b/heap-theory-benchmarks/array/sll_of_sll_nondet_append-2.i.smt2 new file mode 100644 index 00000000..1df6393e --- /dev/null +++ b/heap-theory-benchmarks/array/sll_of_sll_nondet_append-2.i.smt2 @@ -0,0 +1,147 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (inner Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main101 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main108 (Heap Int Int Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main11 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main111 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main123 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main124 (Heap Int Int Int Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main127 (Heap Int Int Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main131 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main26 (Heap Int Int Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main33 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main37 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main40 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Int Int Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main49 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main5 (Heap Int Int Int Int) Bool) +(declare-fun inv_main51 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main65 (Heap Int Int Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main68 (Heap Int Int Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main70 (Heap Int Int Int Int Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main72 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main76 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main79 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main85 (Heap Int Int Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main88 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main90 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main91 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main95 (Heap Int Int Int Int Addr Addr) Bool) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int)) (or (not (= var1 emptyHeap)) (inv_main5 var1 3 5 var0 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Addr)) (or (not (and (inv_main68 var3 var12 var0 var5 var15 var17 var11 var1 var2 var13) (and (and (and (and (and (and (and (and (and (= var10 (write var3 var13 (O_node (node nullAddr (inner (getnode (read var3 var13))))))) (= var6 var12)) (= var18 var0)) (= var9 var5)) (= var8 var15)) (= var4 var17)) (= var7 var11)) (= var16 var1)) (= var14 var2)) (= var19 var13)))) (inv_main85 var10 var6 var18 var9 var8 var4 var7 var16 var19)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main108 var4 var12 var1 var7 var13 var14 var3 var0 var18) (and (and (= 3 var6) (= 5 var8)) (and (not (= var6 var8)) (and (= var11 nullAddr) (and (and (and (and (and (and (and (and (and (= var9 var4) (= var2 var12)) (= var10 var1)) (= var6 var7)) (= var5 var13)) (= var15 var14)) (= var17 var3)) (= var16 var0)) (= var8 var18)) (= var11 (next (getnode (read var4 var0)))))))))) (inv_main95 var9 var2 var10 (+ (+ var6 1) 1) var5 var15 var17)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main108 var4 var12 var1 var7 var13 var14 var3 var0 var18) (and (and (= (+ var6 1) var8) (<= 0 (+ (+ var10 (* (- 1) var6)) (- 1)))) (and (or (not (= 3 var6)) (not (= 5 var8))) (and (not (= var6 var8)) (and (= var11 nullAddr) (and (and (and (and (and (and (and (and (and (= var9 var4) (= var2 var12)) (= var10 var1)) (= var6 var7)) (= var5 var13)) (= var15 var14)) (= var17 var3)) (= var16 var0)) (= var8 var18)) (= var11 (next (getnode (read var4 var0))))))))))) (inv_main95 var9 var2 var10 (+ var6 1) var5 var15 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main101 var2 var7 var0 var3 var8 var12 var1) (and (and (= (+ var5 1) 0) (<= 0 (+ (+ var6 (* (- 1) var5)) (- 1)))) (and (not (= var5 0)) (and (= var14 nullAddr) (and (and (and (and (and (and (and (= var11 var2) (= var4 var7)) (= var6 var0)) (= var5 var3)) (= var10 var8)) (= var9 var12)) (= var13 var1)) (= var14 (inner (getnode (read var2 var1)))))))))) (inv_main95 var11 var4 var6 (+ var5 1) var10 var9 var13)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main111 var6 var9 var1 var8 var10 var11 var4 var5) (and (= var14 nullAddr) (and (and (and (and (and (and (and (and (= var7 var6) (= var13 var9)) (= var15 var1)) (= var3 var8)) (= var12 var10)) (= var2 var11)) (= var0 var4)) (= var16 var5)) (= var14 (next (getnode (read var6 var4)))))))) (inv_main95 var7 var13 var15 (+ var3 1) var12 var2 var14)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main95 var2 var3 var0 var6 var4 var5 var1) (and (= var1 nullAddr) (and (not (<= 0 (+ (+ var6 (* (- 1) var0)) (- 1)))) (not (= nullAddr var1)))))) (inv_main95 var2 var3 var0 (+ var6 1) var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Heap)) (or (not (and (inv_main90 var2 var11 var0 var6 var12 var14 var10 var1 var9 var13) (and (and (and (and (and (and (and (= var17 (write var2 var13 (O_node (node var9 (inner (getnode (read var2 var13))))))) (= var7 var11)) (= var8 var0)) (= var16 var6)) (= var15 var12)) (= var5 var14)) (= var3 var10)) (= var4 var1)))) (inv_main95 var17 var7 var8 var7 var15 var5 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr)) (or (not (and (inv_main85 var3 var14 var0 var8 var15 var17 var13 var1 var12) (and (= nullAddr var4) (and (and (and (and (and (and (and (and (= var2 (write var3 var12 (O_node (node nullAddr (inner (getnode (read var3 var12))))))) (= var6 var14)) (= var16 var0)) (= var7 var8)) (= var5 var15)) (= var4 var17)) (= var10 var13)) (= var9 var1)) (= var11 var12))))) (inv_main95 var2 var6 var16 var6 var5 var11 var11)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int)) (or (not (inv_main40 var1 var9 var0 var6 var10 var11 var4 var13 var12 var2 var5 var8 var7 var3)) (inv_main40 var1 var9 var0 var6 var10 var11 var4 var13 var12 var2 var5 var8 var7 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 node) (var21 Int) (var22 Int) (var23 Addr) (var24 Int) (var25 Int)) (or (not (and (inv_main33 var4 var18 var0 var12 var21 var23 var9 var25 var24 var5 var10 var17) (and (and (= nullAddr var15) (and (and (and (and (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var4 (O_node var20)))) (= var22 var18)) (= var7 var0)) (= var3 var12)) (= var6 var21)) (= var16 var23)) (= var14 var9)) (= var13 var25)) (= var1 var24)) (= var8 var5)) (= var2 var10)) (= var19 var17)) (= var15 (newAddr (alloc var4 (O_node var20)))))) (<= 0 (+ var10 (- 1)))))) (inv_main40 var11 var22 var7 var3 var6 var16 var14 var13 var1 var8 var2 var19 var15 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int)) (or (not (and (inv_main72 var4 var6 var1 var11 var8 var10 var5 var2 var3 var7 var9 var0) (not (<= 0 (+ var9 (- 1)))))) (inv_main70 var4 var6 var1 var11 var8 var10 var5 var2 var3 var7 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main33 var1 var4 var0 var9 var5 var8 var6 var11 var10 var3 var7 var2) (not (<= 0 (+ var7 (- 1)))))) (inv_main31 var1 var4 var0 var9 var5 var8 var6 var11 var10 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main108 var4 var12 var1 var7 var13 var14 var3 var0 var18) (and (= var6 var8) (and (= var11 nullAddr) (and (and (and (and (and (and (and (and (and (= var9 var4) (= var2 var12)) (= var10 var1)) (= var6 var7)) (= var5 var13)) (= var15 var14)) (= var17 var3)) (= var16 var0)) (= var8 var18)) (= var11 (next (getnode (read var4 var0))))))))) (inv_main111 var9 var2 var10 var6 var5 var15 var17 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main101 var2 var7 var0 var3 var8 var12 var1) (and (= var5 0) (and (= var14 nullAddr) (and (and (and (and (and (and (and (= var11 var2) (= var4 var7)) (= var6 var0)) (= var5 var3)) (= var10 var8)) (= var9 var12)) (= var13 var1)) (= var14 (inner (getnode (read var2 var1))))))))) (inv_main111 var11 var4 var6 var5 var10 var9 var13 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main108 var4 var12 var1 var7 var13 var14 var3 var0 var18) (and (not (= var11 nullAddr)) (and (and (and (and (and (and (and (and (and (= var9 var4) (= var2 var12)) (= var10 var1)) (= var6 var7)) (= var5 var13)) (= var15 var14)) (= var17 var3)) (= var16 var0)) (= var8 var18)) (= var11 (next (getnode (read var4 var0)))))))) (inv_main108 var9 var2 var10 var6 var5 var15 var17 var11 (+ var8 1))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main101 var4 var8 var0 var7 var10 var11 var3) (and (not (= var5 nullAddr)) (and (and (and (and (and (and (and (= var9 var4) (= var6 var8)) (= var14 var0)) (= var2 var7)) (= var13 var10)) (= var12 var11)) (= var1 var3)) (= var5 (inner (getnode (read var4 var3)))))))) (inv_main108 var9 var6 var14 var2 var13 var12 var1 var5 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main88 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7) (not (= (next (getnode (read var3 var7))) nullAddr)))) (inv_main91 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (or (not (and (inv_main49 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5) (not (= (next (getnode (read var1 var5))) nullAddr)))) (inv_main52 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Int) (var21 Int) (var22 Addr) (var23 Addr) (var24 Int) (var25 Addr)) (or (not (and (inv_main76 var8 var18 var1 var12 var21 var23 var17 var2 var5 var19 var11 var14 var25) (and (and (and (and (and (and (and (and (and (and (and (and (= var6 (write var8 var25 (O_node (node var14 (inner (getnode (read var8 var25))))))) (= var13 var18)) (= var20 var1)) (= var0 var12)) (= var24 var21)) (= var4 var23)) (= var3 var17)) (= var16 var2)) (= var10 var5)) (= var22 var19)) (= var7 var11)) (= var15 var14)) (= var9 var25)))) (inv_main72 var6 var13 var20 var0 var24 var4 var3 var16 var10 var22 (+ var7 (- 1)) var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Heap) (var8 node) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main8 var4 var11 var0 var6 var13 var16) (and (and (not (= nullAddr var9)) (and (and (and (and (and (and (and (and (and (= var7 (newHeap (alloc var4 (O_node var8)))) (= var15 var11)) (= var3 var0)) (= var12 var6)) (= var5 var13)) (= var10 var16)) (= var14 5)) (= var2 var11)) (= var1 var11)) (= var9 (newAddr (alloc var4 (O_node var8)))))) (not (<= 0 (+ var0 (* (- 1) var6))))))) (inv_main72 var7 var15 var3 var12 var5 var10 var14 var2 var1 var9 var1 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Heap) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 Int) (var22 Addr) (var23 Int) (var24 node) (var25 Addr)) (or (not (and (inv_main72 var8 var21 var1 var13 var23 var25 var20 var2 var4 var22 var12 var14) (and (and (not (= nullAddr var0)) (and (and (and (and (and (and (and (and (and (and (and (and (= var7 (newHeap (alloc var8 (O_node var24)))) (= var19 var21)) (= var9 var1)) (= var17 var13)) (= var15 var23)) (= var11 var25)) (= var5 var20)) (= var18 var2)) (= var16 var4)) (= var3 var22)) (= var6 var12)) (= var10 var14)) (= var0 (newAddr (alloc var8 (O_node var24)))))) (<= 0 (+ var12 (- 1)))))) (inv_main76 var7 var19 var9 var17 var15 var11 var5 var18 var16 var3 var6 var10 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 node) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Int) (var21 Int) (var22 Addr) (var23 Int) (var24 Int) (var25 Int)) (or (not (and (inv_main33 var5 var19 var1 var14 var20 var22 var10 var25 var24 var6 var11 var18) (and (and (not (= nullAddr var12)) (and (and (and (and (and (and (and (and (and (and (and (and (= var17 (newHeap (alloc var5 (O_node var15)))) (= var2 var19)) (= var4 var1)) (= var3 var14)) (= var13 var20)) (= var0 var22)) (= var21 var10)) (= var8 var25)) (= var9 var24)) (= var7 var6)) (= var23 var11)) (= var16 var18)) (= var12 (newAddr (alloc var5 (O_node var15)))))) (<= 0 (+ var11 (- 1)))))) (inv_main37 var17 var2 var4 var3 var13 var0 var21 var8 var9 var7 var23 var16 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main108 var4 var12 var1 var7 var13 var14 var3 var0 var18) (and (or (not (= (+ var6 1) var8)) (not (<= 0 (+ (+ var10 (* (- 1) var6)) (- 1))))) (and (or (not (= 3 var6)) (not (= 5 var8))) (and (not (= var6 var8)) (and (= var11 nullAddr) (and (and (and (and (and (and (and (and (and (= var9 var4) (= var2 var12)) (= var10 var1)) (= var6 var7)) (= var5 var13)) (= var15 var14)) (= var17 var3)) (= var16 var0)) (= var8 var18)) (= var11 (next (getnode (read var4 var0))))))))))) (inv_main131 var9 var2 var10 var6 var5 var15 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main101 var2 var7 var0 var3 var8 var12 var1) (and (or (not (= (+ var5 1) 0)) (not (<= 0 (+ (+ var6 (* (- 1) var5)) (- 1))))) (and (not (= var5 0)) (and (= var14 nullAddr) (and (and (and (and (and (and (and (= var11 var2) (= var4 var7)) (= var6 var0)) (= var5 var3)) (= var10 var8)) (= var9 var12)) (= var13 var1)) (= var14 (inner (getnode (read var2 var1)))))))))) (inv_main131 var11 var4 var6 var5 var10 var9 var13)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main95 var2 var3 var0 var6 var4 var5 var1) (and (<= 0 (+ (+ var6 (* (- 1) var0)) (- 1))) (not (= nullAddr var1))))) (inv_main131 var2 var3 var0 var6 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int)) (or (not (and (inv_main52 var2 var14 var1 var6 var16 var18 var3 var20 var7 var17) (and (and (and (and (and (and (and (and (and (and (= var11 var2) (= var4 var14)) (= var8 var1)) (= var0 var6)) (= var10 var16)) (= var9 var18)) (= var12 var3)) (= var13 var20)) (= var19 var7)) (= var5 var17)) (= var15 (next (getnode (read var2 var17))))))) (inv_main49 var11 var4 var8 var0 var10 var9 var12 var13 var19 var15)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Heap) (var15 Int) (var16 Addr) (var17 Int)) (or (not (and (inv_main46 var3 var13 var0 var7 var15 var16 var5 var17 var9) (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (and (= var14 (write var3 var9 (O_node (node nullAddr (inner (getnode (read var3 var9))))))) (= var2 var13)) (= var12 var0)) (= var8 var7)) (= var4 var15)) (= var11 var16)) (= var1 var5)) (= var6 var17)) (= var10 var9))))) (inv_main49 var14 var2 var12 var8 var4 var11 var1 var6 var10 var11)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (or (not (inv_main26 var1 var3 var0 var8 var5 var7 var6 var10 var9 var2 var4)) (inv_main26 var1 var3 var0 var8 var5 var7 var6 var10 var9 var2 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 node) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int)) (or (not (and (inv_main11 var4 var10 var0 var7 var11 var16) (and (and (= nullAddr var3) (and (and (and (and (and (and (and (and (and (= var15 (newHeap (alloc var4 (O_node var9)))) (= var2 var10)) (= var6 var0)) (= var12 var7)) (= var5 var11)) (= var13 var16)) (= var14 5)) (= var17 var7)) (= var8 var7)) (= var3 (newAddr (alloc var4 (O_node var9)))))) (and (not (= var1 0)) (<= 0 (+ (+ 10 (* (- 1) var11)) (- 1))))))) (inv_main26 var15 var2 var6 var12 var5 var13 var14 var17 var8 var3 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main88 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7) (= (next (getnode (read var3 var7))) nullAddr))) (inv_main90 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main111 var6 var9 var1 var8 var10 var11 var4 var5) (and (not (= var14 nullAddr)) (and (and (and (and (and (and (and (and (= var7 var6) (= var13 var9)) (= var15 var1)) (= var3 var8)) (= var12 var10)) (= var2 var11)) (= var0 var4)) (= var16 var5)) (= var14 (next (getnode (read var6 var4)))))))) (inv_main101 var7 var13 var15 var3 var12 var2 var14)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main95 var2 var3 var0 var6 var4 var5 var1) (and (not (= var1 nullAddr)) (and (not (<= 0 (+ (+ var6 (* (- 1) var0)) (- 1)))) (not (= nullAddr var1)))))) (inv_main101 var2 var3 var0 var6 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (inv_main79 var3 var9 var0 var5 var11 var12 var8 var1 var2 var10 var4 var6 var13 var7)) (inv_main79 var3 var9 var0 var5 var11 var12 var8 var1 var2 var10 var4 var6 var13 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 node) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Int) (var21 Int) (var22 Addr) (var23 Addr) (var24 Int) (var25 Addr)) (or (not (and (inv_main72 var6 var21 var1 var10 var24 var25 var20 var2 var5 var22 var9 var17) (and (and (= nullAddr var23) (and (and (and (and (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var6 (O_node var7)))) (= var0 var21)) (= var4 var1)) (= var14 var10)) (= var8 var24)) (= var19 var25)) (= var18 var20)) (= var3 var2)) (= var15 var5)) (= var13 var22)) (= var12 var9)) (= var16 var17)) (= var23 (newAddr (alloc var6 (O_node var7)))))) (<= 0 (+ var9 (- 1)))))) (inv_main79 var11 var0 var4 var14 var8 var19 var18 var3 var15 var13 var12 var16 var23 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Heap)) (or (not (and (inv_main5 var3 var4 var1 var7 var6) (and (and (and (and (and (= var10 var3) (= var0 var4)) (= var8 var1)) (= var5 var7)) (= var2 var6)) (= var9 nullAddr)))) (inv_main8 var10 var0 var8 var0 var2 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main11 var1 var2 var0 var5 var3 var4) (not (<= 0 (+ (+ 10 (* (- 1) var3)) (- 1)))))) (inv_main8 var1 var2 var0 (+ var5 1) var3 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main11 var2 var3 var0 var6 var4 var5) (and (= var1 0) (<= 0 (+ (+ 10 (* (- 1) var4)) (- 1)))))) (inv_main8 var2 var3 var0 (+ var6 1) var4 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int)) (or (not (inv_main65 var3 var5 var0 var9 var7 var8 var4 var1 var2 var6 var10)) (inv_main65 var3 var5 var0 var9 var7 var8 var4 var1 var2 var6 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 node) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main8 var5 var13 var0 var8 var15 var16) (and (and (= nullAddr var4) (and (and (and (and (and (and (and (and (and (= var12 (newHeap (alloc var5 (O_node var7)))) (= var11 var13)) (= var14 var0)) (= var2 var8)) (= var1 var15)) (= var6 var16)) (= var3 5)) (= var10 var13)) (= var9 var13)) (= var4 (newAddr (alloc var5 (O_node var7)))))) (not (<= 0 (+ var0 (* (- 1) var8))))))) (inv_main65 var12 var11 var14 var2 var1 var6 var3 var10 var9 var4 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main8 var1 var2 var0 var5 var3 var4) (<= 0 (+ var0 (* (- 1) var5))))) (inv_main11 var1 var2 var0 var5 0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Int)) (or (not (and (inv_main51 var1 var9 var0 var5 var10 var14 var3 var17 var6 var13) (and (and (and (and (and (and (and (= var7 (write var1 var13 (O_node (node var6 (inner (getnode (read var1 var13))))))) (= var2 var9)) (= var12 var0)) (= var4 var5)) (= var16 var10)) (= var15 var14)) (= var8 var3)) (= var11 var17)))) (inv_main11 var7 var2 var12 var4 (+ var16 1) var15)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int)) (or (not (and (inv_main46 var1 var12 var0 var4 var14 var15 var3 var17 var6) (and (= nullAddr var10) (and (and (and (and (and (and (and (and (= var5 (write var1 var6 (O_node (node nullAddr (inner (getnode (read var1 var6))))))) (= var2 var12)) (= var7 var0)) (= var13 var4)) (= var8 var14)) (= var10 var15)) (= var9 var3)) (= var11 var17)) (= var16 var6))))) (inv_main11 var5 var2 var7 var13 (+ var8 1) var16)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Int) (var25 Heap) (var26 Int) (var27 Int) (var28 Addr)) (or (not (and (inv_main124 var15 var5 var1 var24 var7 var28 var14 var3 var19) (and (not (= var4 nullAddr)) (and (and (= var20 nullAddr) (and (and (and (and (and (and (and (and (and (= var25 (write var12 var11 defObj)) (= var26 var27)) (= var8 var18)) (= var13 var10)) (= var22 var17)) (= var6 var2)) (= var9 var21)) (= var23 var11)) (= var4 var0)) (= var16 var20))) (and (and (and (and (and (and (and (and (and (= var12 var15) (= var27 var5)) (= var18 var1)) (= var10 var24)) (= var17 var7)) (= var2 var28)) (= var21 var14)) (= var11 var3)) (= var0 var19)) (= var20 (inner (getnode (read var15 var3))))))))) (inv_main123 var25 var26 var8 var13 var22 var6 var9 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Int) (var26 Addr) (var27 Addr) (var28 Heap) (var29 Int) (var30 Addr) (var31 Heap) (var32 Addr) (var33 Int) (var34 Int) (var35 Heap) (var36 Int) (var37 Addr) (var38 Addr) (var39 Heap) (var40 Addr) (var41 Int)) (or (not (and (inv_main127 var28 var13 var1 var34 var15 var40 var26 var6 var30 var5) (and (not (= var4 nullAddr)) (and (and (= var21 nullAddr) (and (and (and (and (and (and (and (and (and (= var39 (write var35 var2 defObj)) (= var24 var25)) (= var0 var12)) (= var36 var9)) (= var29 var33)) (= var38 var23)) (= var17 var7)) (= var8 var2)) (= var4 var27)) (= var37 var21))) (and (and (and (and (and (and (and (and (and (and (and (= var31 var28) (= var41 var13)) (= var16 var1)) (= var14 var34)) (= var11 var15)) (= var3 var40)) (= var10 var26)) (= var22 var6)) (= var20 var30)) (= var19 var5)) (= var18 (next (getnode (read var28 var5))))) (and (and (and (and (and (and (and (and (and (and (= var35 (write var31 var19 defObj)) (= var25 var41)) (= var12 var16)) (= var9 var14)) (= var33 var11)) (= var23 var3)) (= var7 var10)) (= var2 var22)) (= var27 var20)) (= var32 var19)) (= var21 var18))))))) (inv_main123 var39 var24 var0 var36 var29 var38 var17 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main95 var2 var3 var0 var6 var4 var5 var1) (and (not (= var5 nullAddr)) (= nullAddr var1)))) (inv_main123 var2 var3 var0 var6 var4 var5 var1 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main124 var4 var14 var0 var10 var16 var18 var2 var6 var7) (and (not (= var17 nullAddr)) (and (and (and (and (and (and (and (and (and (= var9 var4) (= var1 var14)) (= var8 var0)) (= var3 var10)) (= var15 var16)) (= var11 var18)) (= var12 var2)) (= var13 var6)) (= var5 var7)) (= var17 (inner (getnode (read var4 var6)))))))) (inv_main127 var9 var1 var8 var3 var15 var11 var12 var13 var5 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Heap) (var23 Addr) (var24 Addr) (var25 Heap) (var26 Addr) (var27 Int) (var28 Int) (var29 Heap) (var30 Addr) (var31 Int)) (or (not (and (inv_main127 var22 var10 var0 var28 var12 var30 var21 var4 var24 var3) (and (not (= var17 nullAddr)) (and (and (and (and (and (and (and (and (and (and (and (= var25 var22) (= var31 var10)) (= var13 var0)) (= var11 var28)) (= var8 var12)) (= var2 var30)) (= var7 var21)) (= var18 var4)) (= var16 var24)) (= var15 var3)) (= var14 (next (getnode (read var22 var3))))) (and (and (and (and (and (and (and (and (and (and (= var29 (write var25 var15 defObj)) (= var20 var31)) (= var9 var13)) (= var6 var11)) (= var27 var8)) (= var19 var2)) (= var5 var7)) (= var1 var18)) (= var23 var16)) (= var26 var15)) (= var17 var14)))))) (inv_main127 var29 var20 var9 var6 var27 var19 var5 var1 var23 var17)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Int) (var21 Int) (var22 Int) (var23 Addr) (var24 Int) (var25 Int)) (or (not (and (inv_main37 var5 var19 var2 var12 var21 var23 var8 var25 var24 var6 var9 var18 var16) (and (and (and (and (and (and (and (and (and (and (and (and (= var17 (write var5 var16 (O_node (node var18 (inner (getnode (read var5 var16))))))) (= var22 var19)) (= var10 var2)) (= var15 var12)) (= var14 var21)) (= var3 var23)) (= var1 var8)) (= var4 var25)) (= var20 var24)) (= var11 var6)) (= var0 var9)) (= var13 var18)) (= var7 var16)))) (inv_main33 var17 var22 var10 var15 var14 var3 var1 var4 var20 var11 (+ var0 (- 1)) var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 node) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Int)) (or (not (and (inv_main11 var5 var14 var1 var9 var15 var16) (and (and (not (= nullAddr var10)) (and (and (and (and (and (and (and (and (and (= var12 (newHeap (alloc var5 (O_node var8)))) (= var11 var14)) (= var7 var1)) (= var4 var9)) (= var17 var15)) (= var13 var16)) (= var6 5)) (= var0 var9)) (= var3 var9)) (= var10 (newAddr (alloc var5 (O_node var8)))))) (and (not (= var2 0)) (<= 0 (+ (+ 10 (* (- 1) var15)) (- 1))))))) (inv_main33 var12 var11 var7 var4 var17 var13 var6 var0 var3 var10 var3 nullAddr)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main123 var2 var4 var0 var7 var5 var6 var1 var3)) (inv_main124 var2 var4 var0 var7 var5 var6 var1 var3 (next (getnode (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (or (not (inv_main70 var3 var5 var0 var10 var7 var9 var4 var1 var2 var6 var8)) (inv_main68 (write var3 var6 (O_node (node (next (getnode (read var3 var6))) var8))) var5 var0 var10 var7 var9 var4 var1 var2 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (or (not (and (inv_main49 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5) (= (next (getnode (read var1 var5))) nullAddr))) (inv_main51 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Int)) (or (not (and (inv_main29 var2 var11 var0 var6 var12 var16 var5 var19 var17 var3) (and (and (and (and (and (and (and (and (and (= var1 (write var2 var3 (O_node (node nullAddr (inner (getnode (read var2 var3))))))) (= var7 var11)) (= var8 var0)) (= var4 var6)) (= var9 var12)) (= var15 var16)) (= var10 var5)) (= var18 var19)) (= var14 var17)) (= var13 var3)))) (inv_main46 var1 var7 var8 var4 var9 var15 var10 var18 var13)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Heap)) (or (not (and (inv_main91 var7 var14 var1 var8 var16 var19 var13 var2 var11 var17) (and (and (and (and (and (and (and (and (and (and (= var20 var7) (= var6 var14)) (= var0 var1)) (= var4 var8)) (= var10 var16)) (= var15 var19)) (= var3 var13)) (= var5 var2)) (= var12 var11)) (= var9 var17)) (= var18 (next (getnode (read var7 var17))))))) (inv_main88 var20 var6 var0 var4 var10 var15 var3 var5 var12 var18)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Int)) (or (not (and (inv_main85 var5 var12 var1 var6 var13 var15 var11 var2 var10) (and (not (= nullAddr var4)) (and (and (and (and (and (and (and (and (= var9 (write var5 var10 (O_node (node nullAddr (inner (getnode (read var5 var10))))))) (= var8 var12)) (= var16 var1)) (= var0 var6)) (= var14 var13)) (= var4 var15)) (= var17 var11)) (= var3 var2)) (= var7 var10))))) (inv_main88 var9 var8 var16 var0 var14 var4 var17 var3 var7 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (or (not (inv_main31 var1 var3 var0 var8 var4 var7 var6 var10 var9 var2 var5)) (inv_main29 (write var1 var2 (O_node (node (next (getnode (read var1 var2))) var5))) var3 var0 var8 var4 var7 var6 var10 var9 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int)) (not (and (inv_main37 var2 var5 var0 var10 var6 var9 var7 var12 var11 var4 var8 var3 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main31 var1 var3 var0 var8 var4 var7 var6 var10 var9 var2 var5) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (not (and (inv_main29 var1 var3 var0 var7 var4 var6 var5 var9 var8 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (not (and (inv_main46 var1 var2 var0 var6 var3 var5 var4 var8 var7) (not (is-O_node (read var1 var7))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main49 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main52 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main51 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr)) (not (and (inv_main76 var4 var6 var1 var11 var8 var10 var5 var2 var3 var7 var9 var0 var12) (not (is-O_node (read var4 var12))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (not (and (inv_main70 var3 var5 var0 var10 var7 var9 var4 var1 var2 var6 var8) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main68 var3 var5 var0 var9 var7 var8 var4 var1 var2 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int)) (not (and (inv_main85 var3 var5 var0 var8 var6 var7 var4 var1 var2) (not (is-O_node (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main88 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7) (not (is-O_node (read var3 var7))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main91 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7) (not (is-O_node (read var3 var7))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main90 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7) (not (is-O_node (read var3 var7))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main101 var2 var3 var0 var6 var4 var5 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main108 var3 var4 var1 var7 var5 var6 var2 var0 var8) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main111 var3 var4 var0 var7 var5 var6 var1 var2) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main123 var2 var4 var0 var7 var5 var6 var1 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (not (and (inv_main124 var2 var4 var0 var8 var6 var7 var1 var3 var5) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main127 var2 var5 var0 var9 var7 var8 var1 var4 var6 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (inv_main131 var2 var3 var0 var6 var4 var5 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll_shallow_copy-1.i.smt2 b/heap-theory-benchmarks/array/sll_shallow_copy-1.i.smt2 new file mode 100644 index 00000000..e7fa5131 --- /dev/null +++ b/heap-theory-benchmarks/array/sll_shallow_copy-1.i.smt2 @@ -0,0 +1,58 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int) Bool) +(declare-fun inv_main25 (Heap Addr) Bool) +(declare-fun inv_main26 (Heap Addr node) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 node) (var6 node) (var7 Heap)) (or (not (and (inv_main2 var0) (and (and (not (= nullAddr var4)) (and (and (= var7 (newHeap (alloc var1 (O_node var6)))) (= var2 var3)) (= var4 (newAddr (alloc var1 (O_node var6)))))) (and (not (= nullAddr var3)) (and (= var1 (newHeap (alloc var0 (O_node var5)))) (= var3 (newAddr (alloc var0 (O_node var5))))))))) (inv_main16 var7 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main16 var0 var2 var1)) (inv_main14 (write var0 var2 (O_node (node var1))) var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (inv_main22 var0 var3 var1 var2)) (inv_main22 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 node) (var3 Addr) (var4 Heap) (var5 node) (var6 Heap) (var7 Addr)) (or (not (and (inv_main2 var0) (and (and (= nullAddr var7) (and (and (= var4 (newHeap (alloc var6 (O_node var2)))) (= var1 var3)) (= var7 (newAddr (alloc var6 (O_node var2)))))) (and (not (= nullAddr var3)) (and (= var6 (newHeap (alloc var0 (O_node var5)))) (= var3 (newAddr (alloc var0 (O_node var5))))))))) (inv_main22 var4 var1 var7 1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main14 var0 var1)) (inv_main26 var0 var1 (getnode (read var0 var1)))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (or (not (inv_main10 var0 var1 var2)) (inv_main10 var0 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 node) (var3 Addr)) (or (not (and (inv_main2 var0) (and (= nullAddr var3) (and (= var1 (newHeap (alloc var0 (O_node var2)))) (= var3 (newAddr (alloc var0 (O_node var2)))))))) (inv_main10 var1 var3 1)))) +(assert (forall ((var0 Heap) (var1 node) (var2 Addr)) (or (not (inv_main26 var0 var2 var1)) (inv_main25 (write var0 var2 (O_node var1)) var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main16 var0 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main14 var0 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 node) (var2 Addr)) (not (and (inv_main26 var0 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main25 var0 var1) (not (is-O_node (read var0 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll_shallow_copy-2.i.smt2 b/heap-theory-benchmarks/array/sll_shallow_copy-2.i.smt2 new file mode 100644 index 00000000..04859add --- /dev/null +++ b/heap-theory-benchmarks/array/sll_shallow_copy-2.i.smt2 @@ -0,0 +1,59 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main10 (Heap Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int) Bool) +(declare-fun inv_main26 (Heap Addr node) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (or (not (inv_main10 var2 var1 var0)) (inv_main10 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 node) (var2 Addr) (var3 Heap)) (or (not (and (inv_main2 var3) (and (= nullAddr var2) (and (= var0 (newHeap (alloc var3 (O_node var1)))) (= var2 (newAddr (alloc var3 (O_node var1)))))))) (inv_main10 var0 var2 1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main14 var0 var1)) (inv_main26 var0 var1 (getnode (read var0 (next (getnode (read var0 var1))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main16 var0 var2 var1)) (inv_main14 (write var0 var2 (O_node (node var1))) var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main22 var2 var3 var1 var0)) (inv_main22 var2 var3 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 node) (var4 Addr) (var5 Heap) (var6 node) (var7 Heap)) (or (not (and (inv_main2 var7) (and (and (= nullAddr var0) (and (and (= var1 (newHeap (alloc var5 (O_node var6)))) (= var4 var2)) (= var0 (newAddr (alloc var5 (O_node var6)))))) (and (not (= nullAddr var2)) (and (= var5 (newHeap (alloc var7 (O_node var3)))) (= var2 (newAddr (alloc var7 (O_node var3))))))))) (inv_main22 var1 var4 var0 1)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap)) (or (not (and (inv_main26 var2 var3 var0) (and (and (= var5 (write var2 var3 (O_node var0))) (= var1 var3)) (and (= var6 (write var5 var1 defObj)) (= var4 var1))))) (inv_main0 var6 0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 node) (var5 Addr) (var6 Heap) (var7 node)) (or (not (and (inv_main2 var1) (and (and (not (= nullAddr var5)) (and (and (= var3 (newHeap (alloc var6 (O_node var7)))) (= var0 var2)) (= var5 (newAddr (alloc var6 (O_node var7)))))) (and (not (= nullAddr var2)) (and (= var6 (newHeap (alloc var1 (O_node var4)))) (= var2 (newAddr (alloc var1 (O_node var4))))))))) (inv_main16 var3 var0 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main16 var0 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main14 var0 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main14 var0 var1) (not (is-O_node (read var0 (next (getnode (read var0 var1)))))))))) +(assert (forall ((var0 node) (var1 Heap) (var2 Addr)) (not (and (inv_main26 var1 var2 var0) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr)) (not (and (inv_main0 var0 var1) (not (= (read var0 var2) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll_to_dll_rev-1.i.smt2 b/heap-theory-benchmarks/array/sll_to_dll_rev-1.i.smt2 new file mode 100644 index 00000000..f9d3203f --- /dev/null +++ b/heap-theory-benchmarks/array/sll_to_dll_rev-1.i.smt2 @@ -0,0 +1,228 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (prev Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main100 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main108 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main117 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main120 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main134 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main138 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main142 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main146 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main148 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main153 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main166 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main170 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main174 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main178 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main180 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main185 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main194 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main195 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main196 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main197 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main199 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main209 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main213 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main217 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main221 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main223 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main228 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main241 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main245 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main249 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main253 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main255 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main260 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main269 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main270 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main272 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main282 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main286 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main290 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main294 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main296 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr Addr) Bool) +(declare-fun inv_main301 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main307 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main80 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main84 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main91 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Addr) Bool) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (= var1 emptyHeap)) (inv_main3 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main286 var0 var10 var7 var9 var5 var1) (and (and (and (and (and (and (= var11 var0) (= var8 var10)) (= var3 var7)) (= var4 var9)) (= var2 var5)) (= var6 var1)) (= var12 (prev (getnode (read var0 var5))))))) (inv_main294 var11 var8 var3 var4 var12 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main296 var1 var10 var7 var9 var6 var2) (and (and (and (and (and (and (= var8 var1) (= var0 var10)) (= var5 var7)) (= var12 var9)) (= var4 var6)) (= var11 var2)) (= var3 (prev (getnode (read var1 var6))))))) (inv_main294 var8 var0 var5 var12 var3 var11)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main53 var0 var7 var6 var4 var3 var2 var1 var5)) (inv_main56 (write var0 var5 (O_node (node nullAddr (prev (getnode (read var0 var5)))))) var7 var6 var4 var3 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main195 var0 var5 var2 var4 var1 var3)) (inv_main197 var0 var5 var2 var4 var1 var3 (prev (getnode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main64 var0 var3 var1 var2) (not (= (prev (getnode (read var0 var3))) nullAddr)))) (inv_main100 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int)) (or (not (and (inv_main56 var0 var14 var13 var5 var11 var10 var9 var12) (and (and (and (and (and (and (and (= var1 (write var0 var12 (O_node (node (next (getnode (read var0 var12))) nullAddr)))) (= var6 var14)) (= var3 var13)) (= var15 var5)) (= var2 var11)) (= var8 var10)) (= var4 var9)) (= var7 var12)))) (inv_main58 var1 var6 var3 var15 var2 var8 var4 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var5 var3 var4 var2 var1) (and (not (= var2 nullAddr)) (not (= var1 var2))))) (inv_main255 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 node) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Int) (var23 Int) (var24 Addr) (var25 Addr)) (or (not (and (inv_main58 var0 var25 var24 var2 var16 var15 var14 var18) (and (and (not (= var1 nullAddr)) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var4 (O_node var17)))) (= var9 var19)) (= var8 var7)) (= var6 var12)) (= var3 var13)) (= var21 var5)) (= var20 5)) (= var1 (newAddr (alloc var4 (O_node var17)))))) (and (not (= var23 0)) (and (and (and (and (and (and (and (= var4 (write var0 var18 (O_node (node var15 (prev (getnode (read var0 var18))))))) (= var19 var25)) (= var7 var24)) (= var12 var2)) (= var13 var16)) (= var10 var15)) (= var22 var14)) (= var5 var18)))))) (inv_main53 var11 var9 var8 var6 var3 var21 var20 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 node) (var20 Int) (var21 Int) (var22 Heap) (var23 Addr) (var24 Int) (var25 Addr) (var26 Int)) (or (not (and (inv_main22 var0 var25 var23 var3 var16 var15 var5 var4) (and (and (and (not (= var13 nullAddr)) (and (and (and (and (and (and (and (= var10 (newHeap (alloc var22 (O_node var19)))) (= var12 var14)) (= var9 var14)) (= var11 var8)) (= var20 var6)) (= var2 var14)) (= var18 5)) (= var13 (newAddr (alloc var22 (O_node var19)))))) (= var26 0)) (and (= var24 0) (and (and (and (and (and (and (and (= var22 (write var0 var4 (O_node (node var15 (prev (getnode (read var0 var4))))))) (= var1 var25)) (= var7 var23)) (= var8 var3)) (= var6 var16)) (= var17 var15)) (= var21 var5)) (= var14 var4)))))) (inv_main53 var10 var12 var9 var11 var20 var2 var18 var13)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 node) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr)) (or (not (and (inv_main41 var0 var24 var22 var2 var15 var14 var21 var13) (and (and (and (not (= var20 nullAddr)) (and (and (and (and (and (and (and (= var4 (newHeap (alloc var7 (O_node var6)))) (= var19 var10)) (= var1 var9)) (= var16 var8)) (= var12 var3)) (= var5 var10)) (= var11 5)) (= var20 (newAddr (alloc var7 (O_node var6)))))) (= var17 0)) (and (and (and (and (and (and (and (= var7 (write var0 var13 (O_node (node var14 (prev (getnode (read var0 var13))))))) (= var23 var24)) (= var9 var22)) (= var8 var2)) (= var3 var15)) (= var25 var14)) (= var18 var21)) (= var10 var13))))) (inv_main53 var4 var19 var1 var16 var12 var5 var11 var20)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main58 var0 var16 var15 var1 var11 var10 var9 var12) (and (and (not (= var4 nullAddr)) (not (= var13 nullAddr))) (and (= var5 0) (and (and (and (and (and (and (and (= var2 (write var0 var12 (O_node (node var10 (prev (getnode (read var0 var12))))))) (= var13 var16)) (= var4 var15)) (= var7 var1)) (= var8 var11)) (= var6 var10)) (= var14 var9)) (= var3 var12)))))) (inv_main76 var2 var13 var4 var3 var13 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main270 var1 var10 var7 var9 var0 var6) (and (= var3 nullAddr) (and (and (and (and (and (= var8 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))))))) (= var4 var10)) (= var11 var7)) (= var5 var9)) (= var2 var0)) (= var3 var6))))) (inv_main272 var8 var4 var11 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var5 var3 var4 var2 var1) (and (= var4 nullAddr) (= var1 var2)))) (inv_main272 var0 var5 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var5 var3 var4 var2 var1) (and (= var2 nullAddr) (not (= var1 var2))))) (inv_main153 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var5 var3 var4 var1 var2) (and (= var1 nullAddr) (not (= var2 var1))))) (inv_main228 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main64 var0 var3 var1 var2) (= (prev (getnode (read var0 var3))) nullAddr))) (inv_main96 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int)) (or (not (and (inv_main20 var0 var14 var12 var2 var9 var8 var3 var4) (and (and (and (and (and (and (and (= var10 (write var0 var4 (O_node (node (next (getnode (read var0 var4))) nullAddr)))) (= var5 var14)) (= var1 var12)) (= var6 var2)) (= var15 var9)) (= var11 var8)) (= var7 var3)) (= var13 var4)))) (inv_main22 var10 var5 var1 var6 var15 var11 var7 var13)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var10 var7 var9 var3) (and (and (not (= var5 nullAddr)) (not (= var1 nullAddr))) (and (= var8 nullAddr) (and (and (and (and (and (= var2 var0) (= var1 var10)) (= var5 var7)) (= var4 var9)) (= var6 var3)) (= var8 (next (getnode (read var0 var3))))))))) (inv_main138 var2 var1 var5 var4 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main194 var0 var4 var2 var3 var1)) (inv_main195 var0 var4 var2 var3 var1 (next (getnode (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main270 var1 var10 var7 var9 var0 var6) (and (not (= var3 nullAddr)) (and (and (and (and (and (= var8 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))))))) (= var4 var10)) (= var11 var7)) (= var5 var9)) (= var2 var0)) (= var3 var6))))) (inv_main269 var8 var4 var11 var5 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var5 var3 var4 var2 var1) (and (not (= var4 nullAddr)) (= var1 var2)))) (inv_main269 var0 var5 var3 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main197 var0 var6 var3 var5 var2 var4 var1)) (inv_main196 (write var0 var2 (O_node (node var1 (prev (getnode (read var0 var2)))))) var6 var3 var5 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main58 var0 var16 var15 var1 var11 var10 var9 var12) (and (= var13 nullAddr) (and (= var5 0) (and (and (and (and (and (and (and (= var2 (write var0 var12 (O_node (node var10 (prev (getnode (read var0 var12))))))) (= var13 var16)) (= var4 var15)) (= var7 var1)) (= var8 var11)) (= var6 var10)) (= var14 var9)) (= var3 var12)))))) (inv_main72 var2 var13 var4 var3 var13 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main17 var0 var7 var6 var3 var2 var1 var4 var5)) (inv_main20 (write var0 var5 (O_node (node nullAddr (prev (getnode (read var0 var5)))))) var7 var6 var3 var2 var1 var4 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (or (not (inv_main36 var0 var7 var6 var3 var2 var1 var5 var4)) (inv_main39 (write var0 var4 (O_node (node nullAddr (prev (getnode (read var0 var4)))))) var7 var6 var3 var2 var1 var5 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main120 var0 var8 var6 var7 var4 var11) (and (and (and (and (and (= var3 (write var0 var11 (O_node (node (next (getnode (read var0 var11))) var4)))) (= var5 var8)) (= var10 var6)) (= var1 var7)) (= var9 var4)) (= var2 var11)))) (inv_main117 var3 var5 var10 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main96 var0 var3 var1 var2) (= (prev (getnode (read var0 var1))) nullAddr))) (inv_main117 var0 var3 var1 var2 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var5 var3 var4 var2 var1) (and (not (= var2 nullAddr)) (not (= var1 var2))))) (inv_main148 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main199 var0 var3 var1 var2) (= var3 nullAddr))) (inv_main209 var0 var3 var1 var2 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main269 var1 var4 var2 var3 var0)) (inv_main270 var1 var4 var2 var3 var0 (next (getnode (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main96 var0 var3 var1 var2) (not (= (prev (getnode (read var0 var1))) nullAddr)))) (inv_main108 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main84 var0 var5 var3 var4 var1 var2) (and (not (= var1 nullAddr)) (not (= var2 var1))))) (inv_main86 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var5 var3 var4 var2 var1) (and (and (not (= var5 nullAddr)) (not (= var3 nullAddr))) (= var1 var2)))) (inv_main170 var0 var5 var3 var4 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var10 var7 var9 var3) (and (= var1 nullAddr) (and (= var8 nullAddr) (and (and (and (and (and (= var2 var0) (= var1 var10)) (= var5 var7)) (= var4 var9)) (= var6 var3)) (= var8 (next (getnode (read var0 var3))))))))) (inv_main134 var2 var1 var5 var4 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main213 var0 var11 var8 var10 var3 var7) (and (and (and (and (and (and (= var1 var0) (= var12 var11)) (= var5 var8)) (= var4 var10)) (= var2 var3)) (= var9 var7)) (= var6 (prev (getnode (read var0 var3))))))) (inv_main221 var1 var12 var5 var4 var6 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main223 var0 var11 var8 var10 var5 var7) (and (and (and (and (and (and (= var9 var0) (= var2 var11)) (= var6 var8)) (= var1 var10)) (= var4 var5)) (= var3 var7)) (= var12 (prev (getnode (read var0 var5))))))) (inv_main221 var9 var2 var6 var1 var12 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main272 var0 var3 var1 var2) (and (= var1 nullAddr) (not (= var3 nullAddr))))) (inv_main290 var0 var3 var1 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main39 var0 var15 var13 var3 var8 var7 var12 var6) (and (and (and (and (and (and (and (= var5 (write var0 var6 (O_node (node (next (getnode (read var0 var6))) nullAddr)))) (= var2 var15)) (= var14 var13)) (= var10 var3)) (= var1 var8)) (= var4 var7)) (= var11 var12)) (= var9 var6)))) (inv_main41 var5 var2 var14 var10 var1 var4 var11 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main199 var0 var3 var1 var2) (and (= var1 nullAddr) (not (= var3 nullAddr))))) (inv_main217 var0 var3 var1 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var10 var7 var9 var3) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var1 var0) (= var2 var10)) (= var4 var7)) (= var5 var9)) (= var8 var3)) (= var6 (next (getnode (read var0 var3)))))))) (inv_main120 var1 var2 var4 var5 var8 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main272 var0 var3 var1 var2) (= var3 nullAddr))) (inv_main282 var0 var3 var1 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main245 var0 var12 var10 var11 var9 var5) (and (and (and (and (and (and (= var3 var0) (= var7 var12)) (= var4 var10)) (= var6 var11)) (= var8 var9)) (= var1 var5)) (= var2 (next (getnode (read var0 var9))))))) (inv_main253 var3 var7 var4 var6 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr)) (or (not (and (inv_main255 var1 var12 var9 var11 var8 var3) (and (and (and (and (and (and (= var10 var1) (= var7 var12)) (= var6 var9)) (= var5 var11)) (= var4 var8)) (= var2 var3)) (= var0 (next (getnode (read var1 var8))))))) (inv_main253 var10 var7 var6 var5 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main58 var0 var16 var15 var1 var11 var10 var9 var12) (and (and (= var4 nullAddr) (not (= var13 nullAddr))) (and (= var5 0) (and (and (and (and (and (and (and (= var2 (write var0 var12 (O_node (node var10 (prev (getnode (read var0 var12))))))) (= var13 var16)) (= var4 var15)) (= var7 var1)) (= var8 var11)) (= var6 var10)) (= var14 var9)) (= var3 var12)))))) (inv_main80 var2 var13 var4 var3 var13 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main84 var0 var5 var3 var4 var1 var2) (and (= var1 nullAddr) (not (= var2 var1))))) (inv_main91 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var5 var3 var4 var2 var1) (and (and (= var5 nullAddr) (not (= var3 nullAddr))) (= var1 var2)))) (inv_main174 var0 var5 var3 var4 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main170 var1 var11 var8 var10 var5 var0) (and (and (and (and (and (and (= var3 var1) (= var9 var11)) (= var12 var8)) (= var6 var10)) (= var2 var5)) (= var7 var0)) (= var4 (prev (getnode (read var1 var5))))))) (inv_main178 var3 var9 var12 var6 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main180 var1 var12 var10 var11 var5 var0) (and (and (and (and (and (and (= var3 var1) (= var4 var12)) (= var7 var10)) (= var8 var11)) (= var2 var5)) (= var6 var0)) (= var9 (prev (getnode (read var1 var5))))))) (inv_main178 var3 var4 var7 var8 var9 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var1 var5 var3 var4 var2 var0) (and (not (= var2 nullAddr)) (not (= var0 var2))))) (inv_main180 var1 var5 var3 var4 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main138 var0 var11 var8 var10 var4 var2) (and (and (and (and (and (and (= var6 var0) (= var9 var11)) (= var3 var8)) (= var7 var10)) (= var12 var4)) (= var1 var2)) (= var5 (next (getnode (read var0 var4))))))) (inv_main146 var6 var9 var3 var7 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr)) (or (not (and (inv_main148 var0 var12 var9 var11 var6 var3) (and (and (and (and (and (and (= var10 var0) (= var7 var12)) (= var5 var9)) (= var8 var11)) (= var4 var6)) (= var2 var3)) (= var1 (next (getnode (read var0 var6))))))) (inv_main146 var10 var7 var5 var8 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var1 var5 var3 var4 var2 var0) (and (= var2 nullAddr) (not (= var0 var2))))) (inv_main185 var1 var5 var3 var4 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var5 var3 var4 var2 var1) (and (= var3 nullAddr) (= var1 var2)))) (inv_main166 var0 var5 var3 var4 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var5 var3 var4 var1 var2) (and (and (not (= var5 nullAddr)) (not (= var3 nullAddr))) (= var2 var1)))) (inv_main245 var0 var5 var3 var4 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main307 var0 var13 var11 var12) (and (not (= var3 nullAddr)) (and (and (and (and (and (= var1 var0) (= var5 var13)) (= var9 var11)) (= var7 var12)) (= var10 (prev (getnode (read var0 var12))))) (and (and (and (and (= var8 (write var1 var7 defObj)) (= var6 var5)) (= var4 var9)) (= var2 var7)) (= var3 var10)))))) (inv_main307 var8 var6 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main294 var0 var5 var3 var4 var2 var1) (and (not (= var4 nullAddr)) (= var1 var2)))) (inv_main307 var0 var5 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var10 var7 var9 var3) (and (and (= var5 nullAddr) (not (= var1 nullAddr))) (and (= var8 nullAddr) (and (and (and (and (and (= var2 var0) (= var1 var10)) (= var5 var7)) (= var4 var9)) (= var6 var3)) (= var8 (next (getnode (read var0 var3))))))))) (inv_main142 var2 var1 var5 var4 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main294 var0 var5 var3 var4 var2 var1) (and (not (= var2 nullAddr)) (not (= var1 var2))))) (inv_main296 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var5 var3 var4 var1 var2) (and (and (= var5 nullAddr) (not (= var3 nullAddr))) (= var2 var1)))) (inv_main249 var0 var5 var3 var4 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 node) (var20 Int) (var21 Int) (var22 Heap) (var23 Addr) (var24 Addr) (var25 Int)) (or (not (and (inv_main22 var1 var24 var23 var6 var16 var15 var8 var7) (and (and (not (= var17 nullAddr)) (and (and (and (and (and (and (and (= var12 (newHeap (alloc var22 (O_node var19)))) (= var0 var5)) (= var14 var10)) (= var21 var11)) (= var3 var9)) (= var2 var13)) (= var4 5)) (= var17 (newAddr (alloc var22 (O_node var19)))))) (and (not (= var25 0)) (and (and (and (and (and (and (and (= var22 (write var1 var7 (O_node (node var15 (prev (getnode (read var1 var7))))))) (= var5 var24)) (= var10 var23)) (= var11 var6)) (= var9 var16)) (= var18 var15)) (= var20 var8)) (= var13 var7)))))) (inv_main17 var12 var0 var14 var21 var3 var2 var4 var17)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 node) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap)) (or (not (and (inv_main3 var1 var16 var15) (and (and (not (= var14 nullAddr)) (and (and (and (and (and (and (and (= var6 (newHeap (alloc var17 (O_node var11)))) (= var5 var0)) (= var9 var4)) (= var3 var8)) (= var7 var13)) (= var10 var2)) (= var12 5)) (= var14 (newAddr (alloc var17 (O_node var11)))))) (and (and (and (and (and (= var17 var1) (= var0 var16)) (= var4 var15)) (= var8 1)) (= var13 2)) (= var2 nullAddr))))) (inv_main17 var6 var5 var9 var3 var7 var10 var12 var14)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main294 var0 var5 var3 var4 var2 var1) (and (= var2 nullAddr) (not (= var1 var2))))) (inv_main301 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main196 var1 var10 var7 var9 var6 var8) (and (= var11 nullAddr) (and (and (and (and (and (= var5 (write var1 var6 (O_node (node (next (getnode (read var1 var6))) var8)))) (= var4 var10)) (= var2 var7)) (= var3 var9)) (= var0 var6)) (= var11 var8))))) (inv_main199 var5 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var1 var5 var3 var4 var2 var0) (and (= var4 nullAddr) (= var0 var2)))) (inv_main199 var1 var5 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main84 var0 var5 var3 var4 var1 var2) (= var2 var1))) (inv_main64 var0 var5 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main199 var0 var3 var1 var2) (and (not (= var1 nullAddr)) (not (= var3 nullAddr))))) (inv_main213 var0 var3 var1 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var5 var3 var4 var2 var1) (and (= var2 nullAddr) (not (= var1 var2))))) (inv_main260 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main272 var0 var3 var1 var2) (and (not (= var1 nullAddr)) (not (= var3 nullAddr))))) (inv_main286 var0 var3 var1 var2 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main196 var1 var10 var7 var9 var6 var8) (and (not (= var11 nullAddr)) (and (and (and (and (and (= var5 (write var1 var6 (O_node (node (next (getnode (read var1 var6))) var8)))) (= var4 var10)) (= var2 var7)) (= var3 var9)) (= var0 var6)) (= var11 var8))))) (inv_main194 var5 var4 var2 var3 var11)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var1 var5 var3 var4 var2 var0) (and (not (= var4 nullAddr)) (= var0 var2)))) (inv_main194 var1 var5 var3 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var5 var3 var4 var1 var2) (and (= var3 nullAddr) (= var2 var1)))) (inv_main241 var0 var5 var3 var4 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main76 var0 var11 var9 var10 var1 var8) (and (and (and (and (and (and (= var2 var0) (= var12 var11)) (= var4 var9)) (= var6 var10)) (= var7 var1)) (= var3 var8)) (= var5 (next (getnode (read var0 var1))))))) (inv_main84 var2 var12 var4 var6 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main86 var1 var10 var8 var9 var2 var7) (and (and (and (and (and (and (= var11 var1) (= var0 var10)) (= var6 var8)) (= var3 var9)) (= var12 var2)) (= var5 var7)) (= var4 (next (getnode (read var1 var2))))))) (inv_main84 var11 var0 var6 var3 var4 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 node) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 Heap) (var24 Addr) (var25 Addr) (var26 Int)) (or (not (and (inv_main22 var0 var25 var24 var4 var19 var18 var6 var5) (and (and (and (not (= var11 nullAddr)) (and (and (and (and (and (and (and (= var7 (newHeap (alloc var23 (O_node var3)))) (= var1 var2)) (= var14 var16)) (= var9 var13)) (= var15 var8)) (= var17 var16)) (= var21 5)) (= var11 (newAddr (alloc var23 (O_node var3)))))) (not (= var10 0))) (and (= var26 0) (and (and (and (and (and (and (and (= var23 (write var0 var5 (O_node (node var18 (prev (getnode (read var0 var5))))))) (= var2 var25)) (= var12 var24)) (= var13 var4)) (= var8 var19)) (= var20 var18)) (= var22 var6)) (= var16 var5)))))) (inv_main36 var7 var1 var14 var9 var15 var17 var21 var11)))) +(assert (forall ((var0 Heap) (var1 node) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int) (var20 Int) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr)) (or (not (and (inv_main41 var0 var24 var22 var3 var17 var16 var21 var15) (and (and (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (= var4 (newHeap (alloc var10 (O_node var1)))) (= var12 var23)) (= var18 var13)) (= var9 var11)) (= var8 var5)) (= var2 var7)) (= var14 5)) (= var6 (newAddr (alloc var10 (O_node var1)))))) (not (= var20 0))) (and (and (and (and (and (and (and (= var10 (write var0 var15 (O_node (node var16 (prev (getnode (read var0 var15))))))) (= var23 var24)) (= var13 var22)) (= var11 var3)) (= var5 var17)) (= var25 var16)) (= var19 var21)) (= var7 var15))))) (inv_main36 var4 var12 var18 var9 var8 var2 var14 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var5 var3 var4 var1 var2) (and (not (= var1 nullAddr)) (not (= var2 var1))))) (inv_main223 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main17 var0 var7 var6 var3 var2 var1 var4 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main20 var0 var7 var6 var3 var2 var1 var4 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main22 var0 var7 var6 var3 var2 var1 var5 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main36 var0 var7 var6 var3 var2 var1 var5 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main39 var0 var7 var6 var3 var2 var1 var5 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main41 var0 var7 var6 var4 var3 var2 var5 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main53 var0 var7 var6 var4 var3 var2 var1 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main56 var0 var7 var6 var4 var3 var2 var1 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main58 var0 var7 var6 var4 var3 var2 var1 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main72 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main80 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main76 var0 var5 var3 var4 var1 var2) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main91 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main86 var0 var5 var3 var4 var1 var2) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main64 var0 var3 var1 var2) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (inv_main100 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main96 var0 var3 var1 var2) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (inv_main108 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main117 var0 var4 var2 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main120 var0 var4 var2 var3 var1 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main134 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main142 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main138 var0 var5 var3 var4 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main153 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main148 var0 var5 var3 var4 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main166 var1 var5 var3 var4 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main174 var1 var5 var3 var4 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main170 var1 var5 var3 var4 var2 var0) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main185 var1 var5 var3 var4 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main180 var1 var5 var3 var4 var2 var0) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main194 var0 var4 var2 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main195 var0 var5 var2 var4 var1 var3) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main197 var0 var6 var3 var5 var2 var4 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main196 var0 var5 var2 var4 var1 var3) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main209 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main217 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main213 var0 var5 var3 var4 var1 var2) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main228 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main223 var0 var5 var3 var4 var1 var2) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main241 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main249 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main245 var0 var5 var3 var4 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main260 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main255 var0 var5 var3 var4 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main269 var1 var4 var2 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main270 var1 var5 var3 var4 var0 var2) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main282 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main290 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main286 var0 var5 var3 var4 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main301 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main296 var0 var5 var3 var4 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main307 var0 var3 var1 var2) (not (is-O_node (read var0 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/sll_to_dll_rev-2.i.smt2 b/heap-theory-benchmarks/array/sll_to_dll_rev-2.i.smt2 new file mode 100644 index 00000000..7d4c3749 --- /dev/null +++ b/heap-theory-benchmarks/array/sll_to_dll_rev-2.i.smt2 @@ -0,0 +1,227 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (next Addr) (prev Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main100 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main108 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main117 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main120 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main134 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main138 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main142 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main146 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main148 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main153 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main166 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main170 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main174 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main178 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main180 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main185 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main194 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main195 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main196 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main197 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main199 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main209 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main213 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main217 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main221 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main223 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main228 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main241 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main245 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main249 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main253 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main255 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main260 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main269 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main270 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main272 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main282 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main286 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main290 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main294 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main296 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr Addr) Bool) +(declare-fun inv_main301 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main307 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main80 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main84 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main91 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Addr) Bool) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (= var0 emptyHeap)) (inv_main3 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main84 var0 var3 var4 var2 var5 var1) (and (= var5 nullAddr) (not (= var1 var5))))) (inv_main91 var0 var3 var4 var2 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap)) (or (not (and (inv_main286 var1 var3 var8 var2 var0 var9) (and (and (and (and (and (and (= var12 var1) (= var5 var3)) (= var7 var8)) (= var11 var2)) (= var6 var0)) (= var4 var9)) (= var10 (prev (getnode (read var1 var0))))))) (inv_main294 var12 var5 var7 var11 var10 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap)) (or (not (and (inv_main296 var1 var6 var7 var3 var0 var9) (and (and (and (and (and (and (= var12 var1) (= var10 var6)) (= var5 var7)) (= var8 var3)) (= var11 var0)) (= var4 var9)) (= var2 (prev (getnode (read var1 var0))))))) (inv_main294 var12 var10 var5 var8 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main196 var0 var4 var9 var3 var7 var10) (and (= var1 nullAddr) (and (and (and (and (and (= var8 (write var0 var7 (O_node (node (next (getnode (read var0 var7))) var10)))) (= var6 var4)) (= var11 var9)) (= var2 var3)) (= var5 var7)) (= var1 var10))))) (inv_main199 var8 var6 var11 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var0 var3 var5 var2 var4 var1) (and (= var2 nullAddr) (= var1 var4)))) (inv_main199 var0 var3 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main294 var1 var3 var4 var2 var0 var5) (and (not (= var0 nullAddr)) (not (= var5 var0))))) (inv_main296 var1 var3 var4 var2 var0 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var2 var5 var1 var3 var4) (and (not (= var3 nullAddr)) (not (= var4 var3))))) (inv_main148 var0 var2 var5 var1 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main269 var1 var3 var4 var2 var0)) (inv_main270 var1 var3 var4 var2 var0 (next (getnode (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var2 var5 var1 var3 var4) (and (= var5 nullAddr) (= var4 var3)))) (inv_main166 var0 var2 var5 var1 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main58 var0 var13 var16 var8 var3 var4 var1 var12) (and (and (= var7 nullAddr) (not (= var2 nullAddr))) (and (= var14 0) (and (and (and (and (and (and (and (= var6 (write var0 var12 (O_node (node var4 (prev (getnode (read var0 var12))))))) (= var2 var13)) (= var7 var16)) (= var5 var8)) (= var15 var3)) (= var11 var4)) (= var10 var1)) (= var9 var12)))))) (inv_main80 var6 var2 var7 var9 var2 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var0 var3 var5 var2 var4 var1) (and (not (= var4 nullAddr)) (not (= var1 var4))))) (inv_main180 var0 var3 var5 var2 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main17 var1 var4 var6 var7 var3 var2 var5 var0)) (inv_main20 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0)))))) var4 var6 var7 var3 var2 var5 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main58 var0 var13 var16 var8 var3 var4 var1 var12) (and (and (not (= var7 nullAddr)) (not (= var2 nullAddr))) (and (= var14 0) (and (and (and (and (and (and (and (= var6 (write var0 var12 (O_node (node var4 (prev (getnode (read var0 var12))))))) (= var2 var13)) (= var7 var16)) (= var5 var8)) (= var15 var3)) (= var11 var4)) (= var10 var1)) (= var9 var12)))))) (inv_main76 var6 var2 var7 var9 var2 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main96 var0 var2 var3 var1) (not (= (prev (getnode (read var0 var3))) nullAddr)))) (inv_main108 var0 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main272 var0 var2 var3 var1) (and (not (= var3 nullAddr)) (not (= var2 nullAddr))))) (inv_main286 var0 var2 var3 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main84 var0 var3 var4 var2 var5 var1) (and (not (= var5 nullAddr)) (not (= var1 var5))))) (inv_main86 var0 var3 var4 var2 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main58 var0 var13 var16 var8 var3 var4 var1 var12) (and (= var2 nullAddr) (and (= var14 0) (and (and (and (and (and (and (and (= var7 (write var0 var12 (O_node (node var4 (prev (getnode (read var0 var12))))))) (= var2 var13)) (= var6 var16)) (= var5 var8)) (= var15 var3)) (= var11 var4)) (= var10 var1)) (= var9 var12)))))) (inv_main72 var7 var2 var6 var9 var2 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var2 var5 var1 var4 var3) (and (= var4 nullAddr) (not (= var3 var4))))) (inv_main228 var0 var2 var5 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main307 var0 var9 var12 var2) (and (not (= var13 nullAddr)) (and (and (and (and (and (= var5 var0) (= var8 var9)) (= var3 var12)) (= var1 var2)) (= var4 (prev (getnode (read var0 var2))))) (and (and (and (and (= var7 (write var5 var1 defObj)) (= var11 var8)) (= var6 var3)) (= var10 var1)) (= var13 var4)))))) (inv_main307 var7 var11 var6 var13)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main294 var1 var3 var4 var2 var0 var5) (and (not (= var2 nullAddr)) (= var5 var0)))) (inv_main307 var1 var3 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main270 var1 var4 var8 var3 var0 var11) (and (= var5 nullAddr) (and (and (and (and (and (= var7 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))))))) (= var9 var4)) (= var10 var8)) (= var2 var3)) (= var6 var0)) (= var5 var11))))) (inv_main272 var7 var9 var10 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var3 var5 var2 var1 var4) (and (= var2 nullAddr) (= var4 var1)))) (inv_main272 var0 var3 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main64 var0 var2 var3 var1) (= (prev (getnode (read var0 var2))) nullAddr))) (inv_main96 var0 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main213 var0 var4 var10 var3 var7 var5) (and (and (and (and (and (and (= var11 var0) (= var9 var4)) (= var2 var10)) (= var1 var3)) (= var6 var7)) (= var8 var5)) (= var12 (prev (getnode (read var0 var7))))))) (inv_main221 var11 var9 var2 var1 var12 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main223 var0 var5 var8 var4 var7 var6) (and (and (and (and (and (and (= var11 var0) (= var12 var5)) (= var3 var8)) (= var10 var4)) (= var1 var7)) (= var9 var6)) (= var2 (prev (getnode (read var0 var7))))))) (inv_main221 var11 var12 var3 var10 var2 var9)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (inv_main53 var0 var4 var6 var7 var3 var2 var1 var5)) (inv_main56 (write var0 var5 (O_node (node nullAddr (prev (getnode (read var0 var5)))))) var4 var6 var7 var3 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var5 var10 var1 var4) (and (and (not (= var9 nullAddr)) (not (= var8 nullAddr))) (and (= var3 nullAddr) (and (and (and (and (and (= var2 var0) (= var8 var5)) (= var9 var10)) (= var7 var1)) (= var6 var4)) (= var3 (next (getnode (read var0 var4))))))))) (inv_main138 var2 var8 var9 var7 var8 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var5 var10 var1 var4) (and (and (= var9 nullAddr) (not (= var8 nullAddr))) (and (= var3 nullAddr) (and (and (and (and (and (= var2 var0) (= var8 var5)) (= var9 var10)) (= var7 var1)) (= var6 var4)) (= var3 (next (getnode (read var0 var4))))))))) (inv_main142 var2 var8 var9 var7 var8 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var2 var5 var1 var4 var3) (and (and (= var2 nullAddr) (not (= var5 nullAddr))) (= var3 var4)))) (inv_main249 var0 var2 var5 var1 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main76 var1 var5 var10 var4 var11 var3) (and (and (and (and (and (and (= var9 var1) (= var0 var5)) (= var8 var10)) (= var2 var4)) (= var7 var11)) (= var6 var3)) (= var12 (next (getnode (read var1 var11))))))) (inv_main84 var9 var0 var8 var2 var12 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main86 var1 var6 var10 var3 var11 var2) (and (and (and (and (and (and (= var7 var1) (= var4 var6)) (= var8 var10)) (= var12 var3)) (= var5 var11)) (= var9 var2)) (= var0 (next (getnode (read var1 var11))))))) (inv_main84 var7 var4 var8 var12 var0 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main196 var0 var4 var9 var3 var7 var10) (and (not (= var1 nullAddr)) (and (and (and (and (and (= var8 (write var0 var7 (O_node (node (next (getnode (read var0 var7))) var10)))) (= var6 var4)) (= var11 var9)) (= var2 var3)) (= var5 var7)) (= var1 var10))))) (inv_main194 var8 var6 var11 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var0 var3 var5 var2 var4 var1) (and (not (= var2 nullAddr)) (= var1 var4)))) (inv_main194 var0 var3 var5 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main270 var1 var4 var8 var3 var0 var11) (and (not (= var5 nullAddr)) (and (and (and (and (and (= var7 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))))))) (= var9 var4)) (= var10 var8)) (= var2 var3)) (= var6 var0)) (= var5 var11))))) (inv_main269 var7 var9 var10 var2 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var3 var5 var2 var1 var4) (and (not (= var2 nullAddr)) (= var4 var1)))) (inv_main269 var0 var3 var5 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main170 var1 var8 var11 var4 var9 var2) (and (and (and (and (and (and (= var7 var1) (= var6 var8)) (= var5 var11)) (= var3 var4)) (= var10 var9)) (= var0 var2)) (= var12 (prev (getnode (read var1 var9))))))) (inv_main178 var7 var6 var5 var3 var12 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main180 var0 var7 var11 var5 var8 var1) (and (and (and (and (and (and (= var6 var0) (= var12 var7)) (= var4 var11)) (= var3 var5)) (= var10 var8)) (= var9 var1)) (= var2 (prev (getnode (read var0 var8))))))) (inv_main178 var6 var12 var4 var3 var2 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main84 var0 var3 var4 var2 var5 var1) (= var1 var5))) (inv_main64 var0 var3 var4 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main199 var0 var2 var3 var1) (and (not (= var3 nullAddr)) (not (= var2 nullAddr))))) (inv_main213 var0 var2 var3 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var2 var5 var1 var3 var4) (and (and (not (= var2 nullAddr)) (not (= var5 nullAddr))) (= var4 var3)))) (inv_main170 var0 var2 var5 var1 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main272 var0 var2 var3 var1) (= var2 nullAddr))) (inv_main282 var0 var2 var3 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var5 var10 var1 var4) (and (= var8 nullAddr) (and (= var3 nullAddr) (and (and (and (and (and (= var2 var0) (= var8 var5)) (= var9 var10)) (= var7 var1)) (= var6 var4)) (= var3 (next (getnode (read var0 var4))))))))) (inv_main134 var2 var8 var9 var7 var8 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main199 var0 var2 var3 var1) (and (= var3 nullAddr) (not (= var2 nullAddr))))) (inv_main217 var0 var2 var3 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var2 var5 var1 var3 var4) (and (and (= var2 nullAddr) (not (= var5 nullAddr))) (= var4 var3)))) (inv_main174 var0 var2 var5 var1 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main138 var0 var2 var10 var1 var4 var5) (and (and (and (and (and (and (= var6 var0) (= var8 var2)) (= var12 var10)) (= var7 var1)) (= var9 var4)) (= var3 var5)) (= var11 (next (getnode (read var0 var4))))))) (inv_main146 var6 var8 var12 var7 var11 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main148 var0 var4 var10 var2 var5 var7) (and (and (and (and (and (and (= var8 var0) (= var1 var4)) (= var12 var10)) (= var11 var2)) (= var9 var5)) (= var3 var7)) (= var6 (next (getnode (read var0 var5))))))) (inv_main146 var8 var1 var12 var11 var6 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var2 var5 var1 var4 var3) (and (not (= var4 nullAddr)) (not (= var3 var4))))) (inv_main223 var0 var2 var5 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main64 var0 var2 var3 var1) (not (= (prev (getnode (read var0 var2))) nullAddr)))) (inv_main100 var0 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main20 var0 var10 var13 var7 var3 var4 var12 var8) (and (and (and (and (and (and (and (= var5 (write var0 var8 (O_node (node (next (getnode (read var0 var8))) nullAddr)))) (= var1 var10)) (= var15 var13)) (= var11 var7)) (= var6 var3)) (= var2 var4)) (= var9 var12)) (= var14 var8)))) (inv_main22 var5 var1 var15 var11 var6 var2 var9 var14)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main194 var0 var2 var4 var1 var3)) (inv_main195 var0 var2 var4 var1 var3 (next (getnode (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var0 var3 var5 var2 var4 var1) (and (= var4 nullAddr) (not (= var1 var4))))) (inv_main185 var0 var3 var5 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 node) (var18 Int) (var19 Heap) (var20 Int) (var21 Addr) (var22 Addr) (var23 Heap) (var24 Int) (var25 Addr)) (or (not (and (inv_main22 var0 var16 var22 var11 var5 var6 var18 var13) (and (and (not (= var14 nullAddr)) (and (and (and (and (and (and (and (= var23 (newHeap (alloc var19 (O_node var17)))) (= var21 var15)) (= var8 var25)) (= var7 var24)) (= var1 var4)) (= var3 var10)) (= var20 5)) (= var14 (newAddr (alloc var19 (O_node var17)))))) (and (not (= var2 0)) (and (and (and (and (and (and (and (= var19 (write var0 var13 (O_node (node var6 (prev (getnode (read var0 var13))))))) (= var15 var16)) (= var25 var22)) (= var24 var11)) (= var4 var5)) (= var9 var6)) (= var12 var18)) (= var10 var13)))))) (inv_main17 var23 var21 var8 var7 var1 var3 var20 var14)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 node) (var16 Addr) (var17 Addr)) (or (not (and (inv_main3 var0 var12 var17) (and (and (not (= var3 nullAddr)) (and (and (and (and (and (and (and (= var9 (newHeap (alloc var2 (O_node var15)))) (= var8 var4)) (= var16 var1)) (= var5 var11)) (= var10 var14)) (= var7 var13)) (= var6 5)) (= var3 (newAddr (alloc var2 (O_node var15)))))) (and (and (and (and (and (= var2 var0) (= var4 var12)) (= var1 var17)) (= var11 1)) (= var14 2)) (= var13 nullAddr))))) (inv_main17 var9 var8 var16 var5 var10 var7 var6 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main35 var0 var4 var6 var7 var3 var2 var5 var1)) (inv_main38 (write var0 var1 (O_node (node nullAddr (prev (getnode (read var0 var1)))))) var4 var6 var7 var3 var2 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main195 var0 var2 var4 var1 var3 var5)) (inv_main197 var0 var2 var4 var1 var3 var5 (prev (getnode (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main272 var0 var2 var3 var1) (and (= var3 nullAddr) (not (= var2 nullAddr))))) (inv_main290 var0 var2 var3 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main294 var1 var3 var4 var2 var0 var5) (and (= var0 nullAddr) (not (= var5 var0))))) (inv_main301 var1 var3 var4 var2 var0 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main199 var0 var2 var3 var1) (= var2 nullAddr))) (inv_main209 var0 var2 var3 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var3 var5 var2 var1 var4) (and (not (= var1 nullAddr)) (not (= var4 var1))))) (inv_main255 var0 var3 var5 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var2 var5 var1 var3 var4) (and (= var3 nullAddr) (not (= var4 var3))))) (inv_main153 var0 var2 var5 var1 var3 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 node)) (or (not (and (inv_main40 var1 var19 var23 var11 var3 var4 var10 var16) (and (and (not (= var18 nullAddr)) (and (and (and (and (and (and (and (= var8 (newHeap (alloc var7 (O_node var25)))) (= var5 var15)) (= var21 var20)) (= var2 var12)) (= var17 var24)) (= var14 var15)) (= var9 5)) (= var18 (newAddr (alloc var7 (O_node var25)))))) (and (= var0 0) (and (and (and (and (and (and (and (= var7 (write var1 var16 (O_node (node var4 (prev (getnode (read var1 var16))))))) (= var22 var19)) (= var20 var23)) (= var12 var11)) (= var24 var3)) (= var6 var4)) (= var13 var10)) (= var15 var16)))))) (inv_main53 var8 var5 var21 var2 var17 var14 var9 var18)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 node) (var20 Addr) (var21 Int) (var22 Addr) (var23 Heap) (var24 Int) (var25 Int)) (or (not (and (inv_main58 var0 var20 var22 var12 var3 var4 var1 var18) (and (and (not (= var10 nullAddr)) (and (and (and (and (and (and (and (= var23 (newHeap (alloc var11 (O_node var19)))) (= var17 var2)) (= var7 var9)) (= var25 var6)) (= var14 var21)) (= var5 var13)) (= var8 5)) (= var10 (newAddr (alloc var11 (O_node var19)))))) (and (not (= var24 0)) (and (and (and (and (and (and (and (= var11 (write var0 var18 (O_node (node var4 (prev (getnode (read var0 var18))))))) (= var2 var20)) (= var9 var22)) (= var6 var12)) (= var21 var3)) (= var16 var4)) (= var15 var1)) (= var13 var18)))))) (inv_main53 var23 var17 var7 var25 var14 var5 var8 var10)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main120 var0 var5 var7 var1 var4 var6) (and (and (and (and (and (= var8 (write var0 var6 (O_node (node (next (getnode (read var0 var6))) var4)))) (= var11 var5)) (= var3 var7)) (= var10 var1)) (= var2 var4)) (= var9 var6)))) (inv_main117 var8 var11 var3 var10 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main96 var0 var2 var3 var1) (= (prev (getnode (read var0 var3))) nullAddr))) (inv_main117 var0 var2 var3 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var1 var5 var9 var2 var4) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var3 var1) (= var7 var5)) (= var0 var9)) (= var10 var2)) (= var8 var4)) (= var6 (next (getnode (read var1 var4)))))))) (inv_main120 var3 var7 var0 var10 var8 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var2 var5 var1 var4 var3) (and (= var5 nullAddr) (= var3 var4)))) (inv_main241 var0 var2 var5 var1 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap)) (or (not (and (inv_main245 var0 var5 var11 var2 var1 var6) (and (and (and (and (and (and (= var12 var0) (= var3 var5)) (= var4 var11)) (= var7 var2)) (= var9 var1)) (= var8 var6)) (= var10 (next (getnode (read var0 var1))))))) (inv_main253 var12 var3 var4 var7 var10 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main255 var0 var5 var9 var3 var1 var6) (and (and (and (and (and (and (= var4 var0) (= var2 var5)) (= var10 var9)) (= var12 var3)) (= var8 var1)) (= var11 var6)) (= var7 (next (getnode (read var0 var1))))))) (inv_main253 var4 var2 var10 var12 var7 var11)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int)) (or (not (and (inv_main56 var0 var12 var14 var11 var7 var8 var2 var13) (and (and (and (and (and (and (and (= var6 (write var0 var13 (O_node (node (next (getnode (read var0 var13))) nullAddr)))) (= var5 var12)) (= var10 var14)) (= var1 var11)) (= var9 var7)) (= var4 var8)) (= var15 var2)) (= var3 var13)))) (inv_main58 var6 var5 var10 var1 var9 var4 var15 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var3 var5 var2 var1 var4) (and (= var1 nullAddr) (not (= var4 var1))))) (inv_main260 var0 var3 var5 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Int) (var21 Heap) (var22 Addr) (var23 Int) (var24 node) (var25 Addr)) (or (not (and (inv_main22 var0 var18 var22 var10 var4 var5 var20 var14) (and (and (not (= var9 nullAddr)) (and (and (and (and (and (and (and (= var3 (newHeap (alloc var21 (O_node var24)))) (= var8 var17)) (= var16 var7)) (= var13 var23)) (= var15 var2)) (= var1 var7)) (= var19 5)) (= var9 (newAddr (alloc var21 (O_node var24)))))) (and (= var12 0) (and (and (and (and (and (and (and (= var21 (write var0 var14 (O_node (node var5 (prev (getnode (read var0 var14))))))) (= var17 var18)) (= var25 var22)) (= var23 var10)) (= var2 var4)) (= var6 var5)) (= var11 var20)) (= var7 var14)))))) (inv_main35 var3 var8 var16 var13 var15 var1 var19 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 node) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Int)) (or (not (and (inv_main40 var1 var21 var24 var12 var3 var4 var10 var17) (and (and (not (= var8 nullAddr)) (and (and (and (and (and (and (and (= var18 (newHeap (alloc var5 (O_node var9)))) (= var0 var23)) (= var11 var22)) (= var20 var13)) (= var15 var25)) (= var7 var16)) (= var2 5)) (= var8 (newAddr (alloc var5 (O_node var9)))))) (and (not (= var19 0)) (and (and (and (and (and (and (and (= var5 (write var1 var17 (O_node (node var4 (prev (getnode (read var1 var17))))))) (= var23 var21)) (= var22 var24)) (= var13 var12)) (= var25 var3)) (= var6 var4)) (= var14 var10)) (= var16 var17)))))) (inv_main35 var18 var0 var11 var20 var15 var7 var2 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main197 var0 var3 var5 var2 var4 var6 var1)) (inv_main196 (write var0 var4 (O_node (node var1 (prev (getnode (read var0 var4)))))) var3 var5 var2 var4 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr)) (or (not (and (inv_main38 var0 var10 var14 var8 var3 var4 var7 var9) (and (and (and (and (and (and (and (= var12 (write var0 var9 (O_node (node (next (getnode (read var0 var9))) nullAddr)))) (= var11 var10)) (= var6 var14)) (= var5 var8)) (= var2 var3)) (= var15 var4)) (= var13 var7)) (= var1 var9)))) (inv_main40 var12 var11 var6 var5 var2 var15 var13 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var2 var5 var1 var4 var3) (and (and (not (= var2 nullAddr)) (not (= var5 nullAddr))) (= var3 var4)))) (inv_main245 var0 var2 var5 var1 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main17 var1 var4 var6 var7 var3 var2 var5 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main20 var1 var4 var6 var7 var3 var2 var5 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main22 var0 var4 var6 var7 var3 var2 var5 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main35 var0 var4 var6 var7 var3 var2 var5 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main38 var0 var4 var6 var7 var3 var2 var5 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main40 var1 var4 var6 var7 var3 var2 var5 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main53 var0 var4 var6 var7 var3 var2 var1 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main56 var0 var4 var6 var7 var3 var2 var1 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main58 var0 var5 var6 var7 var4 var3 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main72 var0 var3 var4 var2 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main80 var0 var3 var4 var2 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main76 var0 var3 var4 var2 var5 var1) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main91 var0 var3 var4 var2 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main86 var0 var3 var4 var2 var5 var1) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main64 var0 var2 var3 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (inv_main100 var0 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main96 var0 var2 var3 var1) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (inv_main108 var0 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main117 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main120 var0 var3 var5 var1 var2 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main134 var0 var2 var5 var1 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main142 var0 var2 var5 var1 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main138 var0 var2 var5 var1 var3 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main153 var0 var2 var5 var1 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main148 var0 var2 var5 var1 var3 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main166 var0 var3 var5 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main174 var0 var3 var5 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main170 var0 var3 var5 var2 var4 var1) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main185 var0 var3 var5 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main180 var0 var3 var5 var2 var4 var1) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main194 var0 var2 var4 var1 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main195 var0 var2 var4 var1 var3 var5) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main197 var0 var3 var5 var2 var4 var6 var1) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main196 var0 var2 var4 var1 var3 var5) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main209 var0 var2 var5 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main217 var0 var2 var5 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main213 var0 var2 var5 var1 var4 var3) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main228 var0 var2 var5 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main223 var0 var2 var5 var1 var4 var3) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main241 var0 var3 var5 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main249 var0 var3 var5 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main245 var0 var3 var5 var2 var1 var4) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main260 var0 var3 var5 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main255 var0 var3 var5 var2 var1 var4) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main269 var1 var3 var4 var2 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main270 var1 var3 var4 var2 var0 var5) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main282 var1 var3 var4 var2 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main290 var1 var3 var4 var2 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main286 var1 var3 var4 var2 var0 var5) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main301 var1 var3 var4 var2 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main296 var1 var3 var4 var2 var0 var5) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main307 var0 var2 var3 var1) (not (is-O_node (read var0 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/splice-1.i.smt2 b/heap-theory-benchmarks/array/splice-1.i.smt2 new file mode 100644 index 00000000..635bde6f --- /dev/null +++ b/heap-theory-benchmarks/array/splice-1.i.smt2 @@ -0,0 +1,102 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main16 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main21 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main30 (Heap Int Addr Addr Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr)) (or (not (and (inv_main67 var3 var5 var11 var16 var18 var4 var15 var8 var7) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (and (and (= var17 var3) (= var10 var5)) (= var0 var11)) (= var14 var16)) (= var6 var18)) (= var2 var4)) (= var1 var15)) (= var13 var8)) (= var9 var7)) (= var12 (n (getnode (read var3 var7)))))))) (inv_main66 var17 var10 var0 var14 var6 var2 var1 var13 var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main59 var2 var5 var14 var17 var18 var4 var15 var9 var8) (and (not (= var0 nullAddr)) (and (= var16 nullAddr) (and (and (and (and (and (and (and (and (and (= var1 var2) (= var10 var5)) (= var7 var14)) (= var12 var17)) (= var13 var18)) (= var0 var4)) (= var6 var15)) (= var11 var9)) (= var3 var8)) (= var16 (n (getnode (read var2 var8))))))))) (inv_main66 var1 var10 var7 var12 var13 var0 var6 var11 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr)) (or (not (and (inv_main43 var4 var6 var10 var15 var18 var5 var13 var9 var8) (and (not (= var17 nullAddr)) (and (= var1 nullAddr) (and (= var14 3) (and (and (and (and (and (and (and (and (and (= var16 var4) (= var11 var6)) (= var12 var10)) (= var0 var15)) (= var1 var18)) (= var17 var5)) (= var7 var13)) (= var3 var9)) (= var2 var8)) (= var14 (h (getnode (read var4 var8)))))))))) (inv_main66 var16 var11 var12 var0 var1 var17 var7 var3 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main16 var4 var6 var1 var3 var9 var5 var2 var8 var7) (= var0 0))) (inv_main17 var4 var6 var1 var3 var9 var5 var2 var8 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Heap) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Heap) (var29 Addr) (var30 Addr) (var31 Addr) (var32 Addr) (var33 Addr) (var34 Addr) (var35 Addr) (var36 Int)) (or (not (and (inv_main35 var7 var8 var13 var18 var21 var26 var31 var29 var11) (and (and (and (not (= var9 3)) (and (and (and (and (and (and (and (and (and (= var28 var7) (= var36 var8)) (= var23 var13)) (= var15 var18)) (= var3 var21)) (= var27 var26)) (= var25 var31)) (= var30 var29)) (= var22 var11)) (= var9 (h (getnode (read var7 var13)))))) (and (and (and (and (and (and (and (and (= var19 var28) (= var17 1)) (= var35 var23)) (= var34 var15)) (= var6 nullAddr)) (= var33 var27)) (= var1 var25)) (= var32 var30)) (= var24 var22))) (and (and (and (and (and (and (and (and (= var14 var19) (= var5 var17)) (= var12 var35)) (= var0 var34)) (= var20 var6)) (= var2 nullAddr)) (= var4 var1)) (= var10 var32)) (= var16 var24))))) (inv_main43 var14 var5 var12 var0 var20 var2 var4 var10 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr)) (or (not (and (inv_main50 var3 var5 var9 var13 var17 var4 var11 var7 var6) (and (and (and (and (and (and (and (and (= var15 (write var3 var13 (O_node (node (h (getnode (read var3 var13))) var17)))) (= var8 var5)) (= var0 var9)) (= var1 var13)) (= var12 var17)) (= var16 var4)) (= var14 var11)) (= var2 var7)) (= var10 var6)))) (inv_main43 var15 0 var0 var1 var1 var16 var14 var2 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr)) (or (not (and (inv_main51 var3 var6 var10 var14 var17 var5 var13 var8 var7) (and (and (and (and (and (and (and (and (= var11 (write var3 var14 (O_node (node (h (getnode (read var3 var14))) var5)))) (= var15 var6)) (= var16 var10)) (= var12 var14)) (= var0 var17)) (= var4 var5)) (= var2 var13)) (= var9 var8)) (= var1 var7)))) (inv_main43 var11 1 var16 var12 var0 var12 var2 var9 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main43 var1 var3 var7 var14 var17 var2 var11 var6 var5) (and (not (= var4 3)) (and (and (and (and (and (and (and (and (and (= var0 var1) (= var9 var3)) (= var15 var7)) (= var13 var14)) (= var10 var17)) (= var8 var2)) (= var16 var11)) (= var12 var6)) (= var18 var5)) (= var4 (h (getnode (read var1 var5)))))))) (inv_main47 var0 var9 var15 var18 var10 var8 var16 var12 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (inv_main30 var3 var5 var0 var2 var9 var4 var1 var8 var7 var6)) (inv_main30 var3 var5 var0 var2 var9 var4 var1 var8 var7 var6)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 node) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr)) (or (not (and (inv_main21 var2 var3 var7 var12 var14 var18 var25 var21 var5) (and (and (= var16 nullAddr) (and (and (and (and (and (and (and (and (and (= var0 (newHeap (alloc var1 (O_node var17)))) (= var22 0)) (= var20 var24)) (= var9 var8)) (= var28 var11)) (= var26 var10)) (= var27 var23)) (= var13 var19)) (= var15 var4)) (= var16 (newAddr (alloc var1 (O_node var17)))))) (and (and (and (and (and (and (and (and (= var1 (write var2 var5 (O_node (node 1 (n (getnode (read var2 var5))))))) (= var6 var3)) (= var24 var7)) (= var8 var12)) (= var11 var14)) (= var10 var18)) (= var23 var25)) (= var19 var21)) (= var4 var5))))) (inv_main30 var0 var22 var20 var16 var28 var26 var27 var13 var15 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Heap) (var27 node) (var28 Addr)) (or (not (and (inv_main22 var6 var7 var11 var12 var16 var19 var24 var20 var9) (and (and (= var5 nullAddr) (and (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var26 (O_node var27)))) (= var15 1)) (= var28 var23)) (= var14 var22)) (= var21 var25)) (= var10 var0)) (= var18 var17)) (= var8 var13)) (= var2 var4)) (= var5 (newAddr (alloc var26 (O_node var27)))))) (and (and (and (and (and (and (and (and (= var26 (write var6 var9 (O_node (node 2 (n (getnode (read var6 var9))))))) (= var3 var7)) (= var23 var11)) (= var22 var12)) (= var25 var16)) (= var0 var19)) (= var17 var24)) (= var13 var20)) (= var4 var9))))) (inv_main30 var1 var15 var28 var5 var21 var10 var18 var8 var2 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main17 var3 var5 var0 var2 var8 var4 var1 var7 var6)) (inv_main35 (write var3 var6 (O_node (node 3 (n (getnode (read var3 var6)))))) var5 var0 var2 var8 var4 var1 var7 var6)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main58 var5 var7 var11 var14 var17 var6 var12 var9 var8) (and (= var1 2) (and (and (and (and (and (and (and (and (and (= var0 var5) (= var2 var7)) (= var18 var11)) (= var13 var14)) (= var15 var17)) (= var10 var6)) (= var4 var12)) (= var3 var9)) (= var16 var8)) (= var1 (h (getnode (read var5 var8)))))))) (inv_main59 var0 var2 var18 var13 var15 var10 var4 var3 var16)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main58 var0 var3 var10 var15 var18 var2 var13 var5 var4) (and (not (= var9 2)) (and (and (and (and (and (and (and (and (and (= var1 var0) (= var8 var3)) (= var17 var10)) (= var16 var15)) (= var7 var18)) (= var12 var2)) (= var6 var13)) (= var11 var5)) (= var14 var4)) (= var9 (h (getnode (read var0 var4)))))))) (inv_main72 var1 var8 var17 var16 var7 var12 var6 var11 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr)) (or (not (and (inv_main66 var3 var5 var9 var13 var18 var4 var11 var7 var6) (and (not (= var17 1)) (and (and (and (and (and (and (and (and (and (= var12 var3) (= var2 var5)) (= var16 var9)) (= var10 var13)) (= var8 var18)) (= var1 var4)) (= var15 var11)) (= var14 var7)) (= var0 var6)) (= var17 (h (getnode (read var3 var6)))))))) (inv_main72 var12 var2 var16 var10 var8 var1 var15 var14 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr)) (or (not (and (inv_main33 var5 var7 var11 var15 var18 var6 var14 var9 var8) (and (and (and (and (and (and (and (and (and (= var17 var5) (= var13 var7)) (= var3 var11)) (= var0 var15)) (= var12 var18)) (= var16 var6)) (= var10 var14)) (= var1 var9)) (= var4 var8)) (= var2 (n (getnode (read var5 var8))))))) (inv_main16 var17 var13 var3 var0 var12 var16 var10 var1 var2)))) +(assert (forall ((var0 Addr) (var1 node) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main3 var6 var8) (and (not (= var3 nullAddr)) (and (and (= var10 (newHeap (alloc var6 (O_node var1)))) (= var9 var8)) (= var3 (newAddr (alloc var6 (O_node var1)))))))) (inv_main16 var10 var9 var3 var0 var7 var2 var5 var4 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main16 var4 var6 var1 var3 var9 var5 var2 var8 var7) (and (not (= var6 0)) (not (= var0 0))))) (inv_main21 var4 var6 var1 var3 var9 var5 var2 var8 var7)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Heap) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr)) (or (not (and (inv_main21 var3 var4 var9 var14 var16 var20 var28 var24 var6) (and (and (not (= var18 nullAddr)) (and (and (and (and (and (and (and (and (and (= var21 (newHeap (alloc var2 (O_node var0)))) (= var13 0)) (= var17 var27)) (= var19 var10)) (= var15 var12)) (= var1 var11)) (= var22 var26)) (= var8 var23)) (= var25 var5)) (= var18 (newAddr (alloc var2 (O_node var0)))))) (and (and (and (and (and (and (and (and (= var2 (write var3 var6 (O_node (node 1 (n (getnode (read var3 var6))))))) (= var7 var4)) (= var27 var9)) (= var10 var14)) (= var12 var16)) (= var11 var20)) (= var26 var28)) (= var23 var24)) (= var5 var6))))) (inv_main27 var21 var13 var17 var18 var15 var1 var22 var8 var25)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 node) (var26 Addr) (var27 Addr) (var28 Heap)) (or (not (and (inv_main22 var3 var4 var8 var9 var14 var17 var26 var20 var6) (and (and (not (= var11 nullAddr)) (and (and (and (and (and (and (and (and (and (= var7 (newHeap (alloc var28 (O_node var25)))) (= var5 1)) (= var24 var23)) (= var21 var22)) (= var15 var27)) (= var12 var0)) (= var18 var16)) (= var13 var10)) (= var19 var2)) (= var11 (newAddr (alloc var28 (O_node var25)))))) (and (and (and (and (and (and (and (and (= var28 (write var3 var6 (O_node (node 2 (n (getnode (read var3 var6))))))) (= var1 var4)) (= var23 var8)) (= var22 var9)) (= var27 var14)) (= var0 var17)) (= var16 var26)) (= var10 var20)) (= var2 var6))))) (inv_main27 var7 var5 var24 var11 var15 var12 var18 var13 var19)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main27 var3 var5 var0 var2 var8 var4 var1 var7 var6)) (inv_main33 (write var3 var6 (O_node (node (h (getnode (read var3 var6))) var2))) var5 var0 var2 var8 var4 var1 var7 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main16 var4 var6 var1 var3 var9 var5 var2 var8 var7) (and (= var6 0) (not (= var0 0))))) (inv_main22 var4 var6 var1 var3 var9 var5 var2 var8 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main47 var4 var6 var11 var15 var17 var5 var14 var8 var7) (and (= var13 0) (and (and (and (and (and (and (and (and (and (= var1 var4) (= var13 var6)) (= var3 var11)) (= var18 var15)) (= var16 var17)) (= var9 var5)) (= var2 var14)) (= var10 var8)) (= var12 var7)) (= var0 (n (getnode (read var4 var7)))))))) (inv_main51 var1 var13 var3 var18 var16 var9 var2 var10 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int)) (or (not (inv_main8 var1 var2 var0 var3)) (inv_main8 var1 var2 var0 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 node) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (and (inv_main3 var4 var5) (and (= var3 nullAddr) (and (and (= var0 (newHeap (alloc var4 (O_node var2)))) (= var1 var5)) (= var3 (newAddr (alloc var4 (O_node var2)))))))) (inv_main8 var0 var1 var3 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main59 var2 var5 var14 var17 var18 var4 var15 var9 var8) (and (not (= var16 nullAddr)) (and (and (and (and (and (and (and (and (and (= var1 var2) (= var10 var5)) (= var7 var14)) (= var12 var17)) (= var13 var18)) (= var0 var4)) (= var6 var15)) (= var11 var9)) (= var3 var8)) (= var16 (n (getnode (read var2 var8)))))))) (inv_main58 var1 var10 var7 var12 var13 var0 var6 var11 var16)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr)) (or (not (and (inv_main43 var4 var6 var10 var15 var18 var5 var13 var9 var8) (and (not (= var1 nullAddr)) (and (= var14 3) (and (and (and (and (and (and (and (and (and (= var16 var4) (= var11 var6)) (= var12 var10)) (= var0 var15)) (= var1 var18)) (= var17 var5)) (= var7 var13)) (= var3 var9)) (= var2 var8)) (= var14 (h (getnode (read var4 var8))))))))) (inv_main58 var16 var11 var12 var0 var1 var17 var7 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main66 var3 var6 var12 var16 var18 var5 var15 var11 var10) (and (= var14 1) (and (and (and (and (and (and (and (and (and (= var9 var3) (= var4 var6)) (= var0 var12)) (= var8 var16)) (= var13 var18)) (= var7 var5)) (= var1 var15)) (= var2 var11)) (= var17 var10)) (= var14 (h (getnode (read var3 var10)))))))) (inv_main67 var9 var4 var0 var8 var13 var7 var1 var2 var17)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main47 var4 var6 var11 var15 var17 var5 var14 var8 var7) (and (not (= var13 0)) (and (and (and (and (and (and (and (and (and (= var1 var4) (= var13 var6)) (= var3 var11)) (= var18 var15)) (= var16 var17)) (= var9 var5)) (= var2 var14)) (= var10 var8)) (= var12 var7)) (= var0 (n (getnode (read var4 var7)))))))) (inv_main50 var1 var13 var3 var18 var16 var9 var2 var10 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main21 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main22 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main27 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main33 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main17 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main35 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main43 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main47 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main50 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main51 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main58 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main59 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main66 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main67 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (inv_main72 var3 var5 var0 var2 var8 var4 var1 var7 var6)))) +(check-sat) diff --git a/heap-theory-benchmarks/array/splice-2.i.smt2 b/heap-theory-benchmarks/array/splice-2.i.smt2 new file mode 100644 index 00000000..7c4b08d6 --- /dev/null +++ b/heap-theory-benchmarks/array/splice-2.i.smt2 @@ -0,0 +1,108 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (h Int) (n Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main16 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main21 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main30 (Heap Int Addr Addr Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main64 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main64 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (= var5 nullAddr)))) (inv_main66 var0 var6 var2 var1 var4 var8 var7 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr)) (or (not (and (inv_main16 var0 var7 var2 var1 var5 var9 var8 var3 var6) (and (= var7 0) (not (= var4 0))))) (inv_main22 var0 var7 var2 var1 var5 var9 var8 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr)) (or (not (and (inv_main16 var0 var7 var2 var1 var5 var9 var8 var3 var6) (and (not (= var7 0)) (not (= var4 0))))) (inv_main21 var0 var7 var2 var1 var5 var9 var8 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main43 var8 var6 var10 var1 var3 var17 var7 var11 var5) (and (not (= var2 3)) (and (and (and (and (and (and (and (and (and (= var9 var8) (= var16 var6)) (= var14 var10)) (= var18 var1)) (= var4 var3)) (= var15 var17)) (= var12 var7)) (= var13 var11)) (= var0 var5)) (= var2 (h (getnode (read var8 var5)))))))) (inv_main47 var9 var16 var14 var0 var4 var15 var12 var13 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main47 var12 var6 var13 var0 var4 var18 var8 var15 var5) (and (not (= var2 0)) (and (and (and (and (and (and (and (and (and (= var10 var12) (= var2 var6)) (= var11 var13)) (= var1 var0)) (= var14 var4)) (= var3 var18)) (= var9 var8)) (= var17 var15)) (= var7 var5)) (= var16 (n (getnode (read var12 var5)))))))) (inv_main50 var10 var2 var11 var1 var14 var3 var9 var17 var16)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Heap) (var26 Int) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Heap) (var31 Addr) (var32 Int) (var33 Addr) (var34 Int) (var35 Addr) (var36 Addr)) (or (not (and (inv_main35 var30 var26 var12 var20 var7 var19 var28 var31 var10) (and (and (and (not (= var32 3)) (and (and (and (and (and (and (and (and (and (= var25 var30) (= var24 var26)) (= var29 var12)) (= var21 var20)) (= var8 var7)) (= var3 var19)) (= var15 var28)) (= var17 var31)) (= var16 var10)) (= var32 (h (getnode (read var30 var12)))))) (and (and (and (and (and (and (and (and (= var2 var25) (= var34 1)) (= var23 var29)) (= var36 var21)) (= var13 nullAddr)) (= var18 var3)) (= var5 var15)) (= var11 var17)) (= var1 var16))) (and (and (and (and (and (and (and (and (= var4 var2) (= var6 var34)) (= var9 var23)) (= var14 var36)) (= var33 var13)) (= var27 nullAddr)) (= var22 var5)) (= var0 var11)) (= var35 var1))))) (inv_main43 var4 var6 var9 var14 var33 var27 var22 var0 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Addr)) (or (not (and (inv_main50 var7 var5 var9 var1 var3 var17 var6 var10 var4) (and (and (and (and (and (and (and (and (= var14 (write var7 var1 (O_node (node (h (getnode (read var7 var1))) var3)))) (= var2 var5)) (= var12 var9)) (= var13 var1)) (= var0 var3)) (= var8 var17)) (= var15 var6)) (= var16 var10)) (= var11 var4)))) (inv_main43 var14 0 var12 var13 var13 var8 var15 var16 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr)) (or (not (and (inv_main51 var12 var9 var13 var1 var7 var16 var11 var14 var8) (and (and (and (and (and (and (and (and (= var5 (write var12 var1 (O_node (node (h (getnode (read var12 var1))) var16)))) (= var10 var9)) (= var0 var13)) (= var6 var1)) (= var17 var7)) (= var3 var16)) (= var4 var11)) (= var2 var14)) (= var15 var8)))) (inv_main43 var5 1 var0 var6 var17 var6 var4 var2 var15)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 node) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Heap) (var24 Addr) (var25 Addr) (var26 Heap) (var27 Addr) (var28 Addr)) (or (not (and (inv_main21 var23 var18 var11 var15 var6 var13 var20 var24 var9) (and (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (and (and (= var16 (newHeap (alloc var26 (O_node var14)))) (= var3 0)) (= var17 var19)) (= var4 var7)) (= var5 var10)) (= var8 var28)) (= var1 var25)) (= var21 var22)) (= var2 var27)) (= var12 (newAddr (alloc var26 (O_node var14)))))) (and (and (and (and (and (and (and (and (= var26 (write var23 var9 (O_node (node 1 (n (getnode (read var23 var9))))))) (= var0 var18)) (= var19 var11)) (= var7 var15)) (= var10 var6)) (= var28 var13)) (= var25 var20)) (= var22 var24)) (= var27 var9))))) (inv_main27 var16 var3 var17 var12 var5 var8 var1 var21 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Heap) (var20 Addr) (var21 Heap) (var22 Addr) (var23 Addr) (var24 node) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr)) (or (not (and (inv_main22 var21 var17 var7 var13 var4 var12 var20 var23 var6) (and (and (not (= var5 nullAddr)) (and (and (and (and (and (and (and (and (and (= var19 (newHeap (alloc var14 (O_node var24)))) (= var1 1)) (= var16 var9)) (= var11 var2)) (= var22 var0)) (= var15 var10)) (= var25 var8)) (= var18 var28)) (= var26 var27)) (= var5 (newAddr (alloc var14 (O_node var24)))))) (and (and (and (and (and (and (and (and (= var14 (write var21 var6 (O_node (node 2 (n (getnode (read var21 var6))))))) (= var3 var17)) (= var9 var7)) (= var2 var13)) (= var0 var4)) (= var10 var12)) (= var8 var20)) (= var28 var23)) (= var27 var6))))) (inv_main27 var19 var1 var16 var5 var22 var15 var25 var18 var26)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr)) (or (not (inv_main30 var0 var7 var2 var1 var4 var9 var8 var3 var6 var5)) (inv_main30 var0 var7 var2 var1 var4 var9 var8 var3 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 node) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Heap) (var22 Addr) (var23 Addr) (var24 Heap) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr)) (or (not (and (inv_main21 var21 var16 var9 var13 var2 var12 var18 var22 var6) (and (and (= var19 nullAddr) (and (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var24 (O_node var15)))) (= var4 0)) (= var28 var17)) (= var25 var3)) (= var5 var7)) (= var8 var27)) (= var14 var23)) (= var1 var20)) (= var10 var26)) (= var19 (newAddr (alloc var24 (O_node var15)))))) (and (and (and (and (and (and (and (and (= var24 (write var21 var6 (O_node (node 1 (n (getnode (read var21 var6))))))) (= var0 var16)) (= var17 var9)) (= var3 var13)) (= var7 var2)) (= var27 var12)) (= var23 var18)) (= var20 var22)) (= var26 var6))))) (inv_main30 var11 var4 var28 var19 var5 var8 var14 var1 var10 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Addr) (var20 Int) (var21 Int) (var22 Addr) (var23 Heap) (var24 Addr) (var25 Addr) (var26 Addr) (var27 node) (var28 Addr)) (or (not (and (inv_main22 var23 var20 var7 var16 var3 var15 var22 var24 var4) (and (and (= var14 nullAddr) (and (and (and (and (and (and (and (and (and (= var12 (newHeap (alloc var18 (O_node var27)))) (= var21 1)) (= var19 var9)) (= var5 var1)) (= var11 var0)) (= var13 var10)) (= var25 var8)) (= var17 var28)) (= var6 var26)) (= var14 (newAddr (alloc var18 (O_node var27)))))) (and (and (and (and (and (and (and (and (= var18 (write var23 var4 (O_node (node 2 (n (getnode (read var23 var4))))))) (= var2 var20)) (= var9 var7)) (= var1 var16)) (= var0 var3)) (= var10 var15)) (= var8 var22)) (= var28 var24)) (= var26 var4))))) (inv_main30 var12 var21 var19 var14 var11 var13 var25 var17 var6 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main66 var10 var7 var12 var1 var4 var18 var9 var13 var6) (and (= var8 2) (and (and (and (and (and (and (and (and (and (= var5 var10) (= var2 var7)) (= var3 var12)) (= var17 var1)) (= var14 var4)) (= var16 var18)) (= var11 var9)) (= var0 var13)) (= var15 var6)) (= var8 (h (getnode (read var10 var6)))))))) (inv_main67 var5 var2 var3 var17 var14 var16 var11 var0 var15)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr)) (or (not (and (inv_main35 var12 var8 var13 var0 var4 var17 var9 var15 var7) (and (= var2 3) (and (and (and (and (and (and (and (and (and (= var16 var12) (= var10 var8)) (= var6 var13)) (= var3 var0)) (= var11 var4)) (= var5 var17)) (= var18 var9)) (= var1 var15)) (= var14 var7)) (= var2 (h (getnode (read var12 var13)))))))) (inv_main0 var16 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main64 var0 var6 var2 var1 var4 var8 var7 var3 var5) (= var5 nullAddr))) (inv_main0 var0 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (inv_main27 var0 var6 var2 var1 var4 var8 var7 var3 var5)) (inv_main33 (write var0 var5 (O_node (node (h (getnode (read var0 var5))) var1))) var6 var2 var1 var4 var8 var7 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main58 var9 var5 var10 var0 var3 var17 var7 var12 var4) (and (not (= var16 1)) (and (and (and (and (and (and (and (and (and (= var13 var9) (= var6 var5)) (= var11 var10)) (= var14 var0)) (= var8 var3)) (= var1 var17)) (= var2 var7)) (= var18 var12)) (= var15 var4)) (= var16 (h (getnode (read var9 var4)))))))) (inv_main72 var13 var6 var11 var14 var8 var1 var2 var18 var15)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main66 var11 var9 var12 var2 var5 var18 var10 var14 var8) (and (not (= var13 2)) (and (and (and (and (and (and (and (and (and (= var3 var11) (= var16 var9)) (= var15 var12)) (= var0 var2)) (= var17 var5)) (= var7 var18)) (= var4 var10)) (= var1 var14)) (= var6 var8)) (= var13 (h (getnode (read var11 var8)))))))) (inv_main72 var3 var16 var15 var0 var17 var7 var4 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main47 var12 var6 var13 var0 var4 var18 var8 var15 var5) (and (= var2 0) (and (and (and (and (and (and (and (and (and (= var10 var12) (= var2 var6)) (= var11 var13)) (= var1 var0)) (= var14 var4)) (= var3 var18)) (= var9 var8)) (= var17 var15)) (= var7 var5)) (= var16 (n (getnode (read var12 var5)))))))) (inv_main51 var10 var2 var11 var1 var14 var3 var9 var17 var16)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (inv_main17 var0 var6 var2 var1 var4 var8 var7 var3 var5)) (inv_main35 (write var0 var5 (O_node (node 3 (n (getnode (read var0 var5)))))) var6 var2 var1 var4 var8 var7 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main59 var11 var7 var13 var0 var4 var18 var8 var14 var6) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (and (and (= var2 var11) (= var5 var7)) (= var10 var13)) (= var16 var0)) (= var3 var4)) (= var15 var18)) (= var1 var8)) (= var17 var14)) (= var9 var6)) (= var12 (n (getnode (read var11 var6)))))))) (inv_main58 var2 var5 var10 var16 var3 var15 var1 var17 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main43 var10 var8 var11 var0 var5 var17 var9 var12 var7) (and (not (= var14 nullAddr)) (and (= var16 3) (and (and (and (and (and (and (and (and (and (= var15 var10) (= var6 var8)) (= var3 var11)) (= var2 var0)) (= var14 var5)) (= var1 var17)) (= var13 var9)) (= var4 var12)) (= var18 var7)) (= var16 (h (getnode (read var10 var7))))))))) (inv_main58 var15 var6 var3 var2 var14 var1 var13 var4 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr)) (or (not (and (inv_main33 var10 var6 var12 var0 var4 var18 var7 var14 var5) (and (and (and (and (and (and (and (and (and (= var17 var10) (= var9 var6)) (= var1 var12)) (= var2 var0)) (= var3 var4)) (= var8 var18)) (= var13 var7)) (= var11 var14)) (= var15 var5)) (= var16 (n (getnode (read var10 var5))))))) (inv_main16 var17 var9 var1 var2 var3 var8 var13 var11 var16)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 node) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main3 var0 var9) (and (not (= var5 nullAddr)) (and (and (= var1 (newHeap (alloc var0 (O_node var3)))) (= var2 var9)) (= var5 (newAddr (alloc var0 (O_node var3)))))))) (inv_main16 var1 var2 var5 var8 var6 var4 var10 var7 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr)) (or (not (and (inv_main16 var0 var7 var2 var1 var5 var9 var8 var3 var6) (= var4 0))) (inv_main17 var0 var7 var2 var1 var5 var9 var8 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int)) (or (not (inv_main8 var0 var3 var1 var2)) (inv_main8 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 node) (var4 Int) (var5 Int)) (or (not (and (inv_main3 var0 var5) (and (= var1 nullAddr) (and (and (= var2 (newHeap (alloc var0 (O_node var3)))) (= var4 var5)) (= var1 (newAddr (alloc var0 (O_node var3)))))))) (inv_main8 var2 var4 var1 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main58 var14 var7 var15 var0 var5 var18 var10 var16 var6) (and (= var13 1) (and (and (and (and (and (and (and (and (and (= var11 var14) (= var3 var7)) (= var2 var15)) (= var17 var0)) (= var1 var5)) (= var4 var18)) (= var9 var10)) (= var8 var16)) (= var12 var6)) (= var13 (h (getnode (read var14 var6)))))))) (inv_main59 var11 var3 var2 var17 var1 var4 var9 var8 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main67 var11 var8 var13 var2 var6 var18 var9 var15 var7) (and (and (and (and (and (and (and (and (and (= var4 var11) (= var3 var8)) (= var14 var13)) (= var12 var2)) (= var10 var6)) (= var0 var18)) (= var1 var9)) (= var5 var15)) (= var16 var7)) (= var17 (n (getnode (read var11 var7))))))) (inv_main64 var4 var3 var14 var12 var10 var0 var1 var5 var17)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main59 var11 var7 var13 var0 var4 var18 var8 var14 var6) (and (= var12 nullAddr) (and (and (and (and (and (and (and (and (and (= var2 var11) (= var5 var7)) (= var10 var13)) (= var16 var0)) (= var3 var4)) (= var15 var18)) (= var1 var8)) (= var17 var14)) (= var9 var6)) (= var12 (n (getnode (read var11 var6)))))))) (inv_main64 var2 var5 var10 var16 var3 var15 var1 var17 var15)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main43 var10 var8 var11 var0 var5 var17 var9 var12 var7) (and (= var14 nullAddr) (and (= var16 3) (and (and (and (and (and (and (and (and (and (= var15 var10) (= var6 var8)) (= var3 var11)) (= var2 var0)) (= var14 var5)) (= var1 var17)) (= var13 var9)) (= var4 var12)) (= var18 var7)) (= var16 (h (getnode (read var10 var7))))))))) (inv_main64 var15 var6 var3 var2 var14 var1 var13 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main21 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main22 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main27 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main33 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main17 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main35 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main43 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main47 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main50 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main51 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main58 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main59 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main66 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main67 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (inv_main72 var0 var6 var2 var1 var4 var8 var7 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr)) (not (and (inv_main0 var0 var1) (not (= (read var0 var2) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/split_list_test05-1.i.smt2 b/heap-theory-benchmarks/array/split_list_test05-1.i.smt2 new file mode 100644 index 00000000..bef93502 --- /dev/null +++ b/heap-theory-benchmarks/array/split_list_test05-1.i.smt2 @@ -0,0 +1,710 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node_t 0) (list_t 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node_t (getnode_t node_t)) (O_list_t (getlist_t list_t)) (defObj)) + ((node_t (data Int) (prev Addr) (next Addr))) + ((list_t (first Addr) (last Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr Int Int) Bool) +(declare-fun inv_main100 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main101 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main103 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main106 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main107 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main108 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main110 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main111 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main112 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main113 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main118 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main119 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main120 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main121 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main123 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main126 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main127 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main128 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main130 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main131 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main132 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main133 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main137 (Heap Addr Int Int) Bool) +(declare-fun inv_main144 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main145 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main146 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main147 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main149 (Heap Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main152 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main153 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main154 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main156 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main157 (Heap Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main158 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main159 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main165 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main166 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main167 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main168 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main17 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main170 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main173 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main174 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main175 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main177 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main178 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main179 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main18 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main180 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main185 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main186 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main187 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main188 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main19 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main190 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main193 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main194 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main195 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main197 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main198 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main199 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main200 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main205 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main206 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main207 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main208 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main210 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main213 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main214 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main215 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main217 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main218 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main219 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main22 (Heap Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main220 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main225 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main226 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main227 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main228 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main230 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main233 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main234 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main235 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main237 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main238 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main239 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main240 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main245 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main246 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main247 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main248 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main250 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main253 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main254 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main255 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main257 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main258 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main259 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main26 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main260 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main265 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main266 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main267 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main268 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main27 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main270 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main273 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main274 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main275 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main277 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main278 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main279 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main280 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main281 (Heap Addr Int) Bool) +(declare-fun inv_main284 (Heap Addr Int Int) Bool) +(declare-fun inv_main29 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main291 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main292 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main293 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main294 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main296 (Heap Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main299 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main300 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main301 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main303 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main304 (Heap Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main305 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main306 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main308 (Heap Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main311 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main312 (Heap Addr Int Addr Addr Addr) Bool) +(declare-fun inv_main315 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main317 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main319 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main32 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main321 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main323 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main335 (Heap Addr Int Addr Addr Int) Bool) +(declare-fun inv_main341 (Heap Addr Int Addr Addr Int) Bool) +(declare-fun inv_main342 (Heap Addr Int Addr Addr Int Addr) Bool) +(declare-fun inv_main345 (Heap Addr Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main347 (Heap Addr Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main349 (Heap Addr Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main351 (Heap Addr Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main353 (Heap Addr Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main361 (Heap Addr Int Addr Addr Int) Bool) +(declare-fun inv_main367 (Heap Addr Int Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main39 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main41 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main43 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main47 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main48 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main50 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main51 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main53 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main58 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main59 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main60 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main61 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main63 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main66 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main67 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main68 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main70 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main71 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main72 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main73 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main79 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main80 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main81 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main83 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main86 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main87 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main90 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main91 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main92 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main93 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main98 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main99 (Heap Addr Int Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 node_t) (var11 Addr) (var12 Addr)) (or (not (and (inv_main255 var3 var9 var2 var8 var6 var12) (and (and (and (and (and (= var4 (write var3 var12 (O_node_t (node_t (data (getnode_t (read var3 var12))) (prev (getnode_t (read var3 var12))) nullAddr)))) (= var7 var9)) (= var0 var2)) (= var5 var8)) (= var1 var6)) (= var11 var12)))) (inv_main265 (newHeap (alloc var4 (O_node_t var10))) var7 var0 var7 62 (newAddr (alloc var4 (O_node_t var10))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 node_t) (var11 Addr)) (or (not (and (inv_main260 var2 var9 var1 var8 var6 var11) (and (and (and (and (= var7 (write var2 var8 (O_list_t (list_t (first (getlist_t (read var2 var8))) var11)))) (= var0 var9)) (= var5 var1)) (= var4 var8)) (= var3 var6)))) (inv_main265 (newHeap (alloc var7 (O_node_t var10))) var0 var5 var0 62 (newAddr (alloc var7 (O_node_t var10))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Int) (var19 Addr) (var20 Int)) (or (not (and (inv_main210 var11 var6 var10 var15 var20 var16 var1) (and (and (not (= var3 0)) (and (= var1 nullAddr) (and (and (and (and (and (and (= var2 var11) (= var9 var6)) (= var5 var10)) (= var0 var15)) (= var18 var20)) (= var8 var16)) (= var19 (last (getlist_t (read var11 var15))))))) (and (and (and (and (and (and (= var17 var2) (= var4 var9)) (= var13 var5)) (= var12 var0)) (= var14 var18)) (= var7 var8)) (or (and (= var19 nullAddr) (= var3 1)) (and (not (= var19 nullAddr)) (= var3 0))))))) (inv_main208 var17 var4 var13 var12 var14 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Heap) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main250 var10 var7 var9 var15 var1 var20 var5) (and (and (not (= var16 0)) (and (= var5 nullAddr) (and (and (and (and (and (and (= var12 var10) (= var2 var7)) (= var14 var9)) (= var6 var15)) (= var11 var1)) (= var4 var20)) (= var18 (last (getlist_t (read var10 var15))))))) (and (and (and (and (and (and (= var8 var12) (= var19 var2)) (= var17 var14)) (= var3 var6)) (= var0 var11)) (= var13 var4)) (or (and (= var18 nullAddr) (= var16 1)) (and (not (= var18 nullAddr)) (= var16 0))))))) (inv_main248 var8 var19 var17 var3 var0 var13)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main254 var1 var4 var0 var3 var2 var5)) (inv_main255 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) nullAddr (next (getnode_t (read var1 var5)))))) var4 var0 var3 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main20 var2 var4 var1 var6 var0 var3 var5)) (inv_main25 (write var2 var0 (O_list_t (list_t var5 (last (getlist_t (read var2 var0)))))) var4 var1 var6 var0 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main25 var2 var4 var1 var6 var0 var3 var5)) (inv_main26 (write var2 var0 (O_list_t (list_t (first (getlist_t (read var2 var0))) var5))) var4 var1 var6 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main131 var1 var4 var0 var6 var2 var5 var3)) (inv_main130 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) var3 (next (getnode_t (read var1 var5)))))) var4 var0 var6 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main90 var2 var5 var1 var4 var3 var0)) (inv_main92 (write var2 var0 (O_node_t (node_t (data (getnode_t (read var2 var0))) (prev (getnode_t (read var2 var0))) nullAddr))) var5 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main292 var1 var5 var0 var6 var4 var2 var3)) (inv_main296 var1 var5 var0 var6 var4 var2 var3 (first (getlist_t (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main71 var3 var5 var2 var4 var1 var0 var6)) (inv_main70 (write var3 var0 (O_node_t (node_t (data (getnode_t (read var3 var0))) var6 (next (getnode_t (read var3 var0)))))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main110 var1 var4 var0 var5 var2 var3)) (inv_main112 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) (prev (getnode_t (read var1 var3))) nullAddr))) var4 var0 var5 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (inv_main218 var1 var6 var0 var3 var5 var4 var2)) (inv_main217 (write var1 var4 (O_node_t (node_t (data (getnode_t (read var1 var4))) var2 (next (getnode_t (read var1 var4)))))) var6 var0 var3 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main81 var2 var5 var1 var4 var3 var0)) (inv_main86 (write var2 var4 (O_list_t (list_t var0 (last (getlist_t (read var2 var4)))))) var5 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main250 var1 var5 var0 var3 var2 var6 var4) (not (= var4 nullAddr)))) (inv_main247 var1 var5 var0 var3 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Heap) (var20 Addr)) (or (not (and (inv_main250 var11 var9 var10 var15 var3 var20 var6) (and (and (= var1 0) (and (= var6 nullAddr) (and (and (and (and (and (and (= var13 var11) (= var4 var9)) (= var14 var10)) (= var7 var15)) (= var12 var3)) (= var5 var20)) (= var18 (last (getlist_t (read var11 var15))))))) (and (and (and (and (and (and (= var19 var13) (= var16 var4)) (= var8 var14)) (= var0 var7)) (= var17 var12)) (= var2 var5)) (or (and (= var18 nullAddr) (= var1 1)) (and (not (= var18 nullAddr)) (= var1 0))))))) (inv_main247 var19 var16 var8 var0 var17 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main63 var3 var6 var2 var4 var1 var0 var5) (not (= var5 nullAddr)))) (inv_main60 var3 var6 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main63 var13 var7 var12 var2 var0 var10 var17) (and (and (= var5 0) (and (= var17 nullAddr) (and (and (and (and (and (and (= var4 var13) (= var20 var7)) (= var15 var12)) (= var18 var2)) (= var6 var0)) (= var3 var10)) (= var9 (last (getlist_t (read var13 var2))))))) (and (and (and (and (and (and (= var8 var4) (= var19 var20)) (= var11 var15)) (= var16 var18)) (= var1 var6)) (= var14 var3)) (or (and (= var9 nullAddr) (= var5 1)) (and (not (= var9 nullAddr)) (= var5 0))))))) (inv_main60 var8 var19 var11 var16 var1 var14)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main72 var3 var5 var2 var4 var1 var0)) (inv_main73 (write var3 (last (getlist_t (read var3 var4))) (O_node_t (node_t (data (getnode_t (read var3 (last (getlist_t (read var3 var4)))))) (prev (getnode_t (read var3 (last (getlist_t (read var3 var4)))))) var0))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (inv_main304 var1 var6 var0 var7 var4 var2 var3 var5)) (inv_main303 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) var5 (next (getnode_t (read var1 var3)))))) var6 var0 var7 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main91 var2 var6 var1 var4 var3 var0 var5)) (inv_main90 (write var2 var0 (O_node_t (node_t (data (getnode_t (read var2 var0))) var5 (next (getnode_t (read var2 var0)))))) var6 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main39 var1 var3 var0 var2 var5 var4)) (inv_main43 var1 var3 var0 var2 var5 var4 (first (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main107 var1 var4 var0 var5 var2 var3)) (inv_main108 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) nullAddr (next (getnode_t (read var1 var3)))))) var4 var0 var5 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main158 var1 var4 var0 var2 var6 var3 var5)) (inv_main159 (write var1 (last (getlist_t (read var1 var6))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var6)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var6)))))) var5))) var4 var0 var2 var6 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main217 var1 var5 var0 var2 var4 var3)) (inv_main219 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) (prev (getnode_t (read var1 var3))) nullAddr))) var5 var0 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main19 var2 var4 var1 var6 var0 var3 var5)) (inv_main30 var2 var4 var1 var6 var0 var3 var5 (last (getlist_t (read var2 var0))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main257 var1 var4 var0 var3 var2 var5)) (inv_main259 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) (prev (getnode_t (read var1 var5))) nullAddr))) var4 var0 var3 var2 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main63 var14 var9 var13 var3 var0 var12 var17) (and (and (not (= var2 0)) (and (= var17 nullAddr) (and (and (and (and (and (and (= var5 var14) (= var20 var9)) (= var16 var13)) (= var19 var3)) (= var8 var0)) (= var4 var12)) (= var11 (last (getlist_t (read var14 var3))))))) (and (and (and (and (and (and (= var6 var5) (= var15 var20)) (= var10 var16)) (= var18 var19)) (= var1 var8)) (= var7 var4)) (or (and (= var11 nullAddr) (= var2 1)) (and (not (= var11 nullAddr)) (= var2 0))))))) (inv_main61 var6 var15 var10 var18 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main317 var2 var5 var1 var0 var4 var3 var6) (= var6 0))) (inv_main319 var2 var5 var1 var0 var4 var3 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int)) (or (not (and (inv_main317 var9 var5 var8 var0 var2 var1 var13) (and (not (= var13 0)) (and (and (and (and (and (and (= var11 var9) (= var12 var5)) (= var10 var8)) (= var7 var0)) (= var6 var2)) (= var4 var1)) (= var3 (data (getnode_t (read var9 (next (getnode_t (read var9 (next (getnode_t (read var9 var1)))))))))))))) (and (or (not (= var3 101)) (inv_main319 var11 var12 var10 var7 var6 var4 1)) (or (not (not (= var3 101))) (inv_main319 var11 var12 var10 var7 var6 var4 0)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main265 var1 var2 var0 var5 var4 var3)) (inv_main266 (write var1 var3 (O_node_t (node_t var4 (prev (getnode_t (read var1 var3))) (next (getnode_t (read var1 var3)))))) var2 var0 var5 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main193 var1 var3 var0 var4 var5 var2)) (inv_main194 (write var1 var4 (O_list_t (list_t (first (getlist_t (read var1 var4))) var2))) var3 var0 var4 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int) (var20 Heap)) (or (not (and (inv_main270 var14 var7 var13 var10 var9 var8 var12) (and (and (not (= var6 0)) (and (= var12 nullAddr) (and (and (and (and (and (and (= var20 var14) (= var3 var7)) (= var11 var13)) (= var18 var10)) (= var17 var9)) (= var2 var8)) (= var15 (last (getlist_t (read var14 var10))))))) (and (and (and (and (and (and (= var4 var20) (= var1 var3)) (= var5 var11)) (= var0 var18)) (= var19 var17)) (= var16 var2)) (or (and (= var15 nullAddr) (= var6 1)) (and (not (= var15 nullAddr)) (= var6 0))))))) (inv_main268 var4 var1 var5 var0 var19 var16)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main121 var1 var3 var0 var5 var2 var4)) (inv_main126 (write var1 var5 (O_list_t (list_t var4 (last (getlist_t (read var1 var5)))))) var3 var0 var5 var2 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main103 var1 var5 var0 var6 var2 var3 var4) (not (= var4 nullAddr)))) (inv_main100 var1 var5 var0 var6 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Heap) (var20 Addr)) (or (not (and (inv_main103 var12 var9 var11 var20 var14 var6 var8) (and (and (= var4 0) (and (= var8 nullAddr) (and (and (and (and (and (and (= var17 var12) (= var16 var9)) (= var2 var11)) (= var13 var20)) (= var10 var14)) (= var5 var6)) (= var1 (last (getlist_t (read var12 var20))))))) (and (and (and (and (and (and (= var19 var17) (= var0 var16)) (= var15 var2)) (= var3 var13)) (= var7 var10)) (= var18 var5)) (or (and (= var1 nullAddr) (= var4 1)) (and (not (= var1 nullAddr)) (= var4 0))))))) (inv_main100 var19 var0 var15 var3 var7 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (= var5 0))) (inv_main341 var3 var6 var2 var1 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Heap) (var20 Int) (var21 Heap) (var22 Addr) (var23 Heap)) (or (not (and (inv_main353 var19 var10 var18 var1 var4 var11 var0 var20) (and (= var5 0) (and (and (not (= var20 0)) (and (and (and (and (and (and (and (= var23 var19) (= var22 var10)) (= var7 var18)) (= var12 var1)) (= var17 var4)) (= var8 var11)) (= var16 var0)) (= var3 (data (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 var0))))))))))))))))))))) (and (and (and (and (and (and (and (= var21 var23) (= var2 var22)) (= var6 var7)) (= var14 var12)) (= var15 var17)) (= var9 var8)) (= var13 var16)) (or (and (= var3 62) (= var5 1)) (and (not (= var3 62)) (= var5 0)))))))) (inv_main341 var21 var2 var6 var14 var15 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main106 var1 var4 var0 var5 var2 var3)) (inv_main107 (write var1 var5 (O_list_t (list_t (first (getlist_t (read var1 var5))) var3))) var4 var0 var5 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main205 var1 var5 var0 var2 var4 var3)) (inv_main206 (write var1 var3 (O_node_t (node_t var4 (prev (getnode_t (read var1 var3))) (next (getnode_t (read var1 var3)))))) var5 var0 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main51 var1 var4 var0 var3 var6 var5 var2)) (inv_main50 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) var2 (next (getnode_t (read var1 var5)))))) var4 var0 var3 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main270 var2 var3 var1 var6 var5 var4 var0) (not (= var0 nullAddr)))) (inv_main267 var2 var3 var1 var6 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int) (var14 Int) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr) (var20 Heap)) (or (not (and (inv_main270 var12 var5 var11 var8 var7 var6 var10) (and (and (= var4 0) (and (= var10 nullAddr) (and (and (and (and (and (and (= var20 var12) (= var3 var5)) (= var9 var11)) (= var19 var8)) (= var18 var7)) (= var1 var6)) (= var15 (last (getlist_t (read var12 var8))))))) (and (and (and (and (and (and (= var16 var20) (= var17 var3)) (= var14 var9)) (= var2 var19)) (= var13 var18)) (= var0 var1)) (or (and (= var15 nullAddr) (= var4 1)) (and (not (= var15 nullAddr)) (= var4 0))))))) (inv_main267 var16 var17 var14 var2 var13 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main144 var1 var4 var0 var2 var6 var3 var5)) (inv_main145 (write var1 var5 (O_node_t (node_t var3 (prev (getnode_t (read var1 var5))) (next (getnode_t (read var1 var5)))))) var4 var0 var2 var6 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main67 var3 var5 var2 var4 var1 var0)) (inv_main68 (write var3 var0 (O_node_t (node_t (data (getnode_t (read var3 var0))) nullAddr (next (getnode_t (read var3 var0)))))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main210 var1 var6 var0 var3 var5 var4 var2) (not (= var2 nullAddr)))) (inv_main207 var1 var6 var0 var3 var5 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main210 var13 var6 var12 var14 var19 var15 var3) (and (and (= var0 0) (and (= var3 nullAddr) (and (and (and (and (and (and (= var4 var13) (= var11 var6)) (= var5 var12)) (= var2 var14)) (= var16 var19)) (= var10 var15)) (= var17 (last (getlist_t (read var13 var14))))))) (and (and (and (and (and (and (= var7 var4) (= var8 var11)) (= var1 var5)) (= var20 var2)) (= var9 var16)) (= var18 var10)) (or (and (= var17 nullAddr) (= var0 1)) (and (not (= var17 nullAddr)) (= var0 0))))))) (inv_main207 var7 var8 var1 var20 var9 var18)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main132 var1 var3 var0 var5 var2 var4)) (inv_main133 (write var1 (last (getlist_t (read var1 var5))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var5)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var5)))))) var4))) var3 var0 var5 var2 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main168 var1 var4 var0 var2 var3 var5)) (inv_main173 (write var1 var2 (O_list_t (list_t var5 (last (getlist_t (read var1 var2)))))) var4 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main43 var1 var3 var0 var2 var6 var5 var4) (not (= var4 nullAddr)))) (inv_main40 var1 var3 var0 var2 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int)) (or (not (and (inv_main43 var9 var6 var8 var5 var20 var19 var7) (and (and (= var13 0) (and (= var7 nullAddr) (and (and (and (and (and (and (= var10 var9) (= var1 var6)) (= var14 var8)) (= var18 var5)) (= var3 var20)) (= var16 var19)) (= var17 (last (getlist_t (read var9 var5))))))) (and (and (and (and (and (and (= var4 var10) (= var15 var1)) (= var12 var14)) (= var11 var18)) (= var2 var3)) (= var0 var16)) (or (and (= var17 nullAddr) (= var13 1)) (and (not (= var17 nullAddr)) (= var13 0))))))) (inv_main40 var4 var15 var12 var11 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 node_t) (var15 Addr)) (or (not (and (inv_main27 var9 var4 var8 var6 var0 var3 var15) (and (= var5 0) (and (and (and (and (and (and (= var12 (write var9 var15 (O_node_t (node_t (data (getnode_t (read var9 var15))) (prev (getnode_t (read var9 var15))) nullAddr)))) (= var13 var4)) (= var11 var8)) (= var1 var6)) (= var7 var0)) (= var10 var3)) (= var2 var15))))) (inv_main38 (newHeap (alloc var12 (O_node_t var14))) var13 var11 var13 60 (newAddr (alloc var12 (O_node_t var14))))))) +(assert (forall ((var0 Addr) (var1 node_t) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr)) (or (not (and (inv_main32 var10 var6 var9 var8 var0 var4 var14) (and (= var7 0) (and (and (and (and (and (= var12 (write var10 var0 (O_list_t (list_t (first (getlist_t (read var10 var0))) var14)))) (= var3 var6)) (= var2 var9)) (= var11 var8)) (= var13 var0)) (= var5 var4))))) (inv_main38 (newHeap (alloc var12 (O_node_t var1))) var3 var2 var3 60 (newAddr (alloc var12 (O_node_t var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main112 var1 var4 var0 var5 var2 var3)) (inv_main113 (write var1 (last (getlist_t (read var1 var5))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var5)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var5)))))) var3))) var4 var0 var5 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (inv_main178 var1 var5 var0 var2 var4 var6 var3)) (inv_main177 (write var1 var6 (O_node_t (node_t (data (getnode_t (read var1 var6))) var3 (next (getnode_t (read var1 var6)))))) var5 var0 var2 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 node_t) (var11 Addr) (var12 Int)) (or (not (and (inv_main88 var3 var11 var2 var6 var5 var1) (and (and (and (and (and (= var7 (write var3 var1 (O_node_t (node_t (data (getnode_t (read var3 var1))) (prev (getnode_t (read var3 var1))) nullAddr)))) (= var4 var11)) (= var9 var2)) (= var0 var6)) (= var12 var5)) (= var8 var1)))) (inv_main98 (newHeap (alloc var7 (O_node_t var10))) var4 var9 var4 100 (newAddr (alloc var7 (O_node_t var10))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 node_t)) (or (not (and (inv_main93 var2 var8 var1 var5 var4 var0) (and (and (and (and (= var10 (write var2 var5 (O_list_t (list_t (first (getlist_t (read var2 var5))) var0)))) (= var9 var8)) (= var6 var1)) (= var7 var5)) (= var3 var4)))) (inv_main98 (newHeap (alloc var10 (O_node_t var11))) var9 var6 var9 100 (newAddr (alloc var10 (O_node_t var11))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main66 var3 var5 var2 var4 var1 var0)) (inv_main67 (write var3 var4 (O_list_t (list_t (first (getlist_t (read var3 var4))) var0))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main46 var1 var3 var0 var2 var5 var4)) (inv_main47 (write var1 var2 (O_list_t (list_t (first (getlist_t (read var1 var2))) var4))) var3 var0 var2 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main126 var1 var3 var0 var5 var2 var4)) (inv_main127 (write var1 var5 (O_list_t (list_t (first (getlist_t (read var1 var5))) var4))) var3 var0 var5 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main80 var2 var5 var1 var4 var3 var0)) (inv_main91 var2 var5 var1 var4 var3 var0 (last (getlist_t (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main26 var2 var4 var1 var6 var0 var3 var5)) (inv_main27 (write var2 var5 (O_node_t (node_t (data (getnode_t (read var2 var5))) nullAddr (next (getnode_t (read var2 var5)))))) var4 var1 var6 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main166 var1 var4 var0 var2 var3 var5)) (inv_main170 var1 var4 var0 var2 var3 var5 (first (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main293 var1 var5 var0 var6 var4 var2 var3)) (inv_main304 var1 var5 var0 var6 var4 var2 var3 (last (getlist_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main233 var1 var3 var0 var4 var2 var5)) (inv_main234 (write var1 var4 (O_list_t (list_t (first (getlist_t (read var1 var4))) var5))) var3 var0 var4 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 node_t)) (or (not (and (inv_main68 var4 var10 var3 var8 var2 var0) (and (and (and (and (and (= var6 (write var4 var0 (O_node_t (node_t (data (getnode_t (read var4 var0))) (prev (getnode_t (read var4 var0))) nullAddr)))) (= var1 var10)) (= var5 var3)) (= var11 var8)) (= var9 var2)) (= var7 var0)))) (inv_main78 (newHeap (alloc var6 (O_node_t var12))) var1 var5 var1 97 (newAddr (alloc var6 (O_node_t var12))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 node_t) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main73 var4 var9 var3 var7 var2 var0) (and (and (and (and (= var5 (write var4 var7 (O_list_t (list_t (first (getlist_t (read var4 var7))) var0)))) (= var10 var9)) (= var8 var3)) (= var11 var7)) (= var1 var2)))) (inv_main78 (newHeap (alloc var5 (O_node_t var6))) var10 var8 var10 97 (newAddr (alloc var5 (O_node_t var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main130 var1 var3 var0 var5 var2 var4)) (inv_main132 (write var1 var4 (O_node_t (node_t (data (getnode_t (read var1 var4))) (prev (getnode_t (read var1 var4))) nullAddr))) var3 var0 var5 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main315 var2 var6 var1 var0 var4 var3 var5) (not (= var5 60)))) (inv_main317 var2 var6 var1 var0 var4 var3 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Heap)) (or (not (and (inv_main315 var11 var7 var10 var1 var3 var2 var6) (and (= var6 60) (and (and (and (and (and (and (= var13 var11) (= var5 var7)) (= var4 var10)) (= var12 var1)) (= var0 var3)) (= var9 var2)) (= var8 (data (getnode_t (read var11 (next (getnode_t (read var11 var2))))))))))) (and (or (not (= var8 104)) (inv_main317 var13 var5 var4 var12 var0 var9 1)) (or (not (not (= var8 104))) (inv_main317 var13 var5 var4 var12 var0 var9 0)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main277 var1 var2 var0 var5 var4 var3)) (inv_main279 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) (prev (getnode_t (read var1 var3))) nullAddr))) var2 var0 var5 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main294 var1 var5 var0 var6 var4 var2 var3)) (inv_main299 (write var1 var4 (O_list_t (list_t var3 (last (getlist_t (read var1 var4)))))) var5 var0 var6 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main312 var2 var5 var1 var0 var4 var3)) (inv_main315 var2 var5 var1 var0 var4 var3 (data (getnode_t (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main99 var1 var4 var0 var5 var2 var3)) (inv_main103 var1 var4 var0 var5 var2 var3 (first (getlist_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main127 var1 var3 var0 var5 var2 var4)) (inv_main128 (write var1 var4 (O_node_t (node_t (data (getnode_t (read var1 var4))) nullAddr (next (getnode_t (read var1 var4)))))) var3 var0 var5 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main342 var3 var5 var2 var1 var4 var6 var0)) (inv_main345 var3 var5 var2 var1 var4 var6 var0 (data (getnode_t (read var3 var0))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main165 var1 var4 var0 var2 var3 var5)) (inv_main166 (write var1 var5 (O_node_t (node_t var3 (prev (getnode_t (read var1 var5))) (next (getnode_t (read var1 var5)))))) var4 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main10 var1 var2 var0 var4) (or (= var4 60) (= var4 62)))) (inv_main10 var1 var2 var0 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Addr) (var15 Addr)) (or (not (and (inv_main27 var9 var6 var8 var7 var1 var5 var15) (and (not (= var0 0)) (and (and (and (and (and (and (= var13 (write var9 var15 (O_node_t (node_t (data (getnode_t (read var9 var15))) (prev (getnode_t (read var9 var15))) nullAddr)))) (= var14 var6)) (= var12 var8)) (= var2 var7)) (= var10 var1)) (= var11 var5)) (= var3 var15))))) (inv_main10 var13 var14 var12 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr)) (or (not (and (inv_main32 var9 var5 var8 var6 var0 var3 var14) (and (not (= var13 0)) (and (and (and (and (and (= var11 (write var9 var0 (O_list_t (list_t (first (getlist_t (read var9 var0))) var14)))) (= var2 var5)) (= var1 var8)) (= var10 var6)) (= var12 var0)) (= var4 var3))))) (inv_main10 var11 var2 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (and (inv_main4 var1 var4) (and (= var3 (write var1 var4 (O_list_t (list_t (first (getlist_t (read var1 var4))) nullAddr)))) (= var0 var4)))) (inv_main10 var3 var0 var2 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 node_t) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main235 var3 var8 var2 var11 var7 var12) (and (and (and (and (and (= var6 (write var3 var12 (O_node_t (node_t (data (getnode_t (read var3 var12))) (prev (getnode_t (read var3 var12))) nullAddr)))) (= var10 var8)) (= var1 var2)) (= var9 var11)) (= var0 var7)) (= var4 var12)))) (inv_main245 (newHeap (alloc var6 (O_node_t var5))) var10 var1 var10 121 (newAddr (alloc var6 (O_node_t var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Heap) (var4 Addr) (var5 node_t) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main240 var1 var8 var0 var10 var6 var11) (and (and (and (and (= var3 (write var1 var10 (O_list_t (list_t (first (getlist_t (read var1 var10))) var11)))) (= var4 var8)) (= var7 var0)) (= var9 var10)) (= var2 var6)))) (inv_main245 (newHeap (alloc var3 (O_node_t var5))) var4 var7 var4 121 (newAddr (alloc var3 (O_node_t var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main60 var3 var5 var2 var4 var1 var0)) (inv_main71 var3 var5 var2 var4 var1 var0 (last (getlist_t (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main274 var1 var2 var0 var5 var4 var3)) (inv_main275 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) nullAddr (next (getnode_t (read var1 var3)))))) var2 var0 var5 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main308 var4 var7 var3 var2) (and (and (and (and (= var8 var4) (= var1 var7)) (= var6 var3)) (= var5 var2)) (= var0 (next (getnode_t (read var4 var2))))))) (inv_main312 var8 var1 var6 var5 var0 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Heap) (var14 Addr) (var15 Addr)) (or (not (and (inv_main311 var12 var9 var11 var1 var3) (and (and (not (= var6 nullAddr)) (and (and (and (and (and (= var13 var12) (= var5 var9)) (= var2 var11)) (= var15 var1)) (= var8 var3)) (= var14 (next (getnode_t (read var12 var1)))))) (and (and (and (and (= var0 (write var13 var15 defObj)) (= var7 var5)) (= var10 var2)) (= var6 var15)) (= var4 var14))))) (inv_main312 var0 var7 var10 var4 var4 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main206 var1 var5 var0 var2 var4 var3)) (inv_main210 var1 var5 var0 var2 var4 var3 (first (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main86 var2 var5 var1 var4 var3 var0)) (inv_main87 (write var2 var4 (O_list_t (list_t (first (getlist_t (read var2 var4))) var0))) var5 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main291 var1 var5 var0 var6 var4 var2 var3)) (inv_main292 (write var1 var3 (O_node_t (node_t var2 (prev (getnode_t (read var1 var3))) (next (getnode_t (read var1 var3)))))) var5 var0 var6 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Heap) (var15 Addr) (var16 Heap) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main190 var13 var7 var12 var8 var9 var15 var5) (and (and (not (= var17 0)) (and (= var5 nullAddr) (and (and (and (and (and (and (= var16 var13) (= var0 var7)) (= var10 var12)) (= var3 var8)) (= var11 var9)) (= var20 var15)) (= var4 (last (getlist_t (read var13 var8))))))) (and (and (and (and (and (and (= var14 var16) (= var19 var0)) (= var1 var10)) (= var6 var3)) (= var2 var11)) (= var18 var20)) (or (and (= var4 nullAddr) (= var17 1)) (and (not (= var4 nullAddr)) (= var17 0))))))) (inv_main188 var14 var19 var1 var6 var2 var18)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main258 var1 var4 var0 var3 var2 var6 var5)) (inv_main257 (write var1 var6 (O_node_t (node_t (data (getnode_t (read var1 var6))) var5 (next (getnode_t (read var1 var6)))))) var4 var0 var3 var2 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main98 var1 var4 var0 var5 var2 var3)) (inv_main99 (write var1 var3 (O_node_t (node_t var2 (prev (getnode_t (read var1 var3))) (next (getnode_t (read var1 var3)))))) var4 var0 var5 var2 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 node_t) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main215 var2 var10 var1 var6 var9 var7) (and (and (and (and (and (= var8 (write var2 var7 (O_node_t (node_t (data (getnode_t (read var2 var7))) (prev (getnode_t (read var2 var7))) nullAddr)))) (= var5 var10)) (= var11 var1)) (= var12 var6)) (= var0 var9)) (= var4 var7)))) (inv_main225 (newHeap (alloc var8 (O_node_t var3))) var5 var11 var5 100 (newAddr (alloc var8 (O_node_t var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 node_t) (var8 Int) (var9 Addr) (var10 Heap) (var11 Addr)) (or (not (and (inv_main220 var3 var9 var2 var5 var8 var6) (and (and (and (and (= var10 (write var3 var5 (O_list_t (list_t (first (getlist_t (read var3 var5))) var6)))) (= var11 var9)) (= var0 var2)) (= var4 var5)) (= var1 var8)))) (inv_main225 (newHeap (alloc var10 (O_node_t var7))) var11 var0 var11 100 (newAddr (alloc var10 (O_node_t var7))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main213 var1 var5 var0 var2 var4 var3)) (inv_main214 (write var1 var2 (O_list_t (list_t (first (getlist_t (read var1 var2))) var3))) var5 var0 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main321 var2 var5 var1 var0 var4 var3 var6) (= var6 0))) (inv_main323 var2 var5 var1 var0 var4 var3 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int)) (or (not (and (inv_main321 var10 var5 var9 var0 var2 var1 var12) (and (not (= var12 0)) (and (and (and (and (and (and (= var8 var10) (= var3 var5)) (= var4 var9)) (= var7 var0)) (= var11 var2)) (= var6 var1)) (= var13 (data (getnode_t (read var10 (next (getnode_t (read var10 (next (getnode_t (read var10 (next (getnode_t (read var10 (next (getnode_t (read var10 var1)))))))))))))))))))) (and (or (not (= var13 100)) (inv_main323 var8 var3 var4 var7 var11 var6 1)) (or (not (not (= var13 100))) (inv_main323 var8 var3 var4 var7 var11 var6 0)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main185 var1 var3 var0 var4 var5 var2)) (inv_main186 (write var1 var2 (O_node_t (node_t var5 (prev (getnode_t (read var1 var2))) (next (getnode_t (read var1 var2)))))) var3 var0 var4 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main92 var2 var5 var1 var4 var3 var0)) (inv_main93 (write var2 (last (getlist_t (read var2 var4))) (O_node_t (node_t (data (getnode_t (read var2 (last (getlist_t (read var2 var4)))))) (prev (getnode_t (read var2 (last (getlist_t (read var2 var4)))))) var0))) var5 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main267 var1 var2 var0 var5 var4 var3)) (inv_main278 var1 var2 var0 var5 var4 var3 (last (getlist_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 node_t) (var12 Heap)) (or (not (and (inv_main175 var2 var9 var1 var6 var8 var10) (and (and (and (and (and (= var12 (write var2 var10 (O_node_t (node_t (data (getnode_t (read var2 var10))) (prev (getnode_t (read var2 var10))) nullAddr)))) (= var7 var9)) (= var4 var1)) (= var3 var6)) (= var0 var8)) (= var5 var10)))) (inv_main185 (newHeap (alloc var12 (O_node_t var11))) var7 var4 var7 98 (newAddr (alloc var12 (O_node_t var11))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 node_t) (var10 Addr) (var11 Addr)) (or (not (and (inv_main180 var2 var8 var1 var4 var6 var10) (and (and (and (and (= var0 (write var2 var4 (O_list_t (list_t (first (getlist_t (read var2 var4))) var10)))) (= var11 var8)) (= var3 var1)) (= var5 var4)) (= var7 var6)))) (inv_main185 (newHeap (alloc var0 (O_node_t var9))) var11 var3 var11 98 (newAddr (alloc var0 (O_node_t var9))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int) (var18 Addr) (var19 Heap) (var20 Addr)) (or (not (and (inv_main103 var15 var9 var14 var20 var17 var4 var8) (and (and (not (= var7 0)) (and (= var8 nullAddr) (and (and (and (and (and (and (= var19 var15) (= var18 var9)) (= var1 var14)) (= var16 var20)) (= var13 var17)) (= var2 var4)) (= var0 (last (getlist_t (read var15 var20))))))) (and (and (and (and (and (and (= var6 var19) (= var12 var18)) (= var11 var1)) (= var5 var16)) (= var10 var13)) (= var3 var2)) (or (and (= var0 nullAddr) (= var7 1)) (and (not (= var0 nullAddr)) (= var7 0))))))) (inv_main101 var6 var12 var11 var5 var10 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main156 var1 var4 var0 var2 var6 var3 var5)) (inv_main158 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) (prev (getnode_t (read var1 var5))) nullAddr))) var4 var0 var2 var6 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main78 var2 var5 var1 var4 var3 var0)) (inv_main79 (write var2 var0 (O_node_t (node_t var3 (prev (getnode_t (read var2 var0))) (next (getnode_t (read var2 var0)))))) var5 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main137 var1 var3 var0 var2) (or (= var2 60) (= var2 62)))) (inv_main137 var1 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int) (var14 Int) (var15 Addr)) (or (not (and (inv_main154 var12 var7 var11 var2 var9 var14 var15) (and (not (= var8 0)) (and (and (and (and (and (and (= var4 (write var12 var15 (O_node_t (node_t (data (getnode_t (read var12 var15))) (prev (getnode_t (read var12 var15))) nullAddr)))) (= var10 var7)) (= var0 var11)) (= var6 var2)) (= var1 var9)) (= var5 var14)) (= var3 var15))))) (inv_main137 var4 var10 var0 var13)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Int)) (or (not (and (inv_main159 var8 var4 var7 var1 var6 var12 var13) (and (not (= var0 0)) (and (and (and (and (and (= var10 (write var8 var6 (O_list_t (list_t (first (getlist_t (read var8 var6))) var13)))) (= var3 var4)) (= var14 var7)) (= var2 var1)) (= var5 var6)) (= var11 var12))))) (inv_main137 var10 var3 var14 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main128 var3 var8 var2 var11 var6 var10) (and (and (and (and (and (= var4 (write var3 var10 (O_node_t (node_t (data (getnode_t (read var3 var10))) (prev (getnode_t (read var3 var10))) nullAddr)))) (= var1 var8)) (= var9 var2)) (= var5 var11)) (= var7 var6)) (= var0 var10)))) (inv_main137 var4 var1 var9 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main133 var2 var8 var1 var11 var6 var10) (and (and (and (and (= var5 (write var2 var11 (O_list_t (list_t (first (getlist_t (read var2 var11))) var10)))) (= var7 var8)) (= var3 var1)) (= var9 var11)) (= var4 var6)))) (inv_main137 var5 var7 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main225 var1 var3 var0 var4 var2 var5)) (inv_main226 (write var1 var5 (O_node_t (node_t var2 (prev (getnode_t (read var1 var5))) (next (getnode_t (read var1 var5)))))) var3 var0 var4 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main345 var3 var6 var2 var1 var5 var7 var0 var4) (not (= var4 60)))) (inv_main347 var3 var6 var2 var1 var5 var7 var0 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main345 var12 var7 var11 var1 var4 var8 var0 var3) (and (= var3 60) (and (and (and (and (and (and (and (= var10 var12) (= var9 var7)) (= var6 var11)) (= var5 var1)) (= var14 var4)) (= var15 var8)) (= var2 var0)) (= var13 (data (getnode_t (read var12 (next (getnode_t (read var12 var0))))))))))) (and (or (not (= var13 98)) (inv_main347 var10 var9 var6 var5 var14 var15 var2 1)) (or (not (not (= var13 98))) (inv_main347 var10 var9 var6 var5 var14 var15 var2 0)))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int)) (or (not (and (inv_main43 var8 var4 var7 var3 var20 var19 var6) (and (and (not (= var14 0)) (and (= var6 nullAddr) (and (and (and (and (and (and (= var9 var8) (= var1 var4)) (= var12 var7)) (= var17 var3)) (= var2 var20)) (= var15 var19)) (= var16 (last (getlist_t (read var8 var3))))))) (and (and (and (and (and (and (= var0 var9) (= var10 var1)) (= var13 var12)) (= var18 var17)) (= var5 var2)) (= var11 var15)) (or (and (= var16 nullAddr) (= var14 1)) (and (not (= var16 nullAddr)) (= var14 0))))))) (inv_main41 var0 var10 var13 var18 var5 var11)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main198 var1 var4 var0 var5 var6 var2 var3)) (inv_main197 (write var1 var2 (O_node_t (node_t (data (getnode_t (read var1 var2))) var3 (next (getnode_t (read var1 var2)))))) var4 var0 var5 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Int) (var13 Heap) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Int)) (or (not (and (inv_main230 var13 var8 var12 var9 var7 var19 var1) (and (and (not (= var4 0)) (and (= var1 nullAddr) (and (and (and (and (and (and (= var10 var13) (= var17 var8)) (= var20 var12)) (= var16 var9)) (= var18 var7)) (= var6 var19)) (= var11 (last (getlist_t (read var13 var9))))))) (and (and (and (and (and (and (= var15 var10) (= var0 var17)) (= var3 var20)) (= var2 var16)) (= var5 var18)) (= var14 var6)) (or (and (= var11 nullAddr) (= var4 1)) (and (not (= var11 nullAddr)) (= var4 0))))))) (inv_main228 var15 var0 var3 var2 var5 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Heap) (var20 Int) (var21 Heap) (var22 Addr) (var23 Heap)) (or (not (and (inv_main353 var19 var10 var18 var1 var4 var11 var0 var20) (and (not (= var5 0)) (and (and (not (= var20 0)) (and (and (and (and (and (and (and (= var23 var19) (= var22 var10)) (= var7 var18)) (= var12 var1)) (= var17 var4)) (= var8 var11)) (= var16 var0)) (= var3 (data (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 var0))))))))))))))))))))) (and (and (and (and (and (and (and (= var21 var23) (= var2 var22)) (= var6 var7)) (= var14 var12)) (= var15 var17)) (= var9 var8)) (= var13 var16)) (or (and (= var3 62) (= var5 1)) (and (not (= var3 62)) (= var5 0)))))))) (inv_main361 var21 var2 var6 var14 var15 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Heap) (var18 Int)) (or (not (and (inv_main361 var12 var7 var11 var0 var1 var8) (and (<= 0 (+ (+ 6 (* (- 1) (+ var16 1))) (- 1))) (and (and (and (and (and (and (and (= var15 var12) (= var14 var7)) (= var18 var11)) (= var9 var0)) (= var3 var1)) (= var4 var8)) (= var6 (next (getnode_t (read var12 var0))))) (and (and (and (and (and (= var17 (write var15 var9 defObj)) (= var10 var14)) (= var5 var18)) (= var2 var9)) (= var13 var6)) (= var16 var4)))))) (inv_main361 var17 var10 var5 var13 var13 (+ var16 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main31 var2 var4 var1 var6 var0 var3 var5)) (inv_main32 (write var2 (last (getlist_t (read var2 var0))) (O_node_t (node_t (data (getnode_t (read var2 (last (getlist_t (read var2 var0)))))) (prev (getnode_t (read var2 (last (getlist_t (read var2 var0)))))) var5))) var4 var1 var6 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main207 var1 var5 var0 var2 var4 var3)) (inv_main218 var1 var5 var0 var2 var4 var3 (last (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main246 var1 var4 var0 var3 var2 var5)) (inv_main250 var1 var4 var0 var3 var2 var5 (first (getlist_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Heap)) (or (not (and (inv_main296 var15 var7 var14 var10 var20 var18 var19 var22) (and (and (not (= var17 0)) (and (= var22 nullAddr) (and (and (and (and (and (and (and (= var1 var15) (= var16 var7)) (= var0 var14)) (= var5 var10)) (= var21 var20)) (= var8 var18)) (= var4 var19)) (= var13 (last (getlist_t (read var15 var20))))))) (and (and (and (and (and (and (and (= var23 var1) (= var6 var16)) (= var2 var0)) (= var3 var5)) (= var11 var21)) (= var12 var8)) (= var9 var4)) (or (and (= var13 nullAddr) (= var17 1)) (and (not (= var13 nullAddr)) (= var17 0))))))) (inv_main294 var23 var6 var2 var3 var11 var12 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main247 var1 var4 var0 var3 var2 var5)) (inv_main258 var1 var4 var0 var3 var2 var5 (last (getlist_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 node_t) (var4 Addr)) (or (not (and (inv_main137 var1 var4 var0 var2) (and (not (= var2 60)) (not (= var2 62))))) (inv_main144 (newHeap (alloc var1 (O_node_t var3))) var4 var0 var2 var4 var2 (newAddr (alloc var1 (O_node_t var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (= var6 0))) (inv_main311 var2 var5 var1 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Heap) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Addr)) (or (not (and (inv_main323 var14 var8 var13 var0 var3 var2 var18) (and (= var17 0) (and (and (not (= var18 0)) (and (and (and (and (and (and (= var15 var14) (= var11 var8)) (= var16 var13)) (= var12 var0)) (= var5 var3)) (= var10 var2)) (= var7 (data (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 var2))))))))))))))))))))) (and (and (and (and (and (and (= var9 var15) (= var4 var11)) (= var19 var16)) (= var6 var12)) (= var1 var5)) (= var20 var10)) (or (and (= var7 62) (= var17 1)) (and (not (= var7 62)) (= var17 0)))))))) (inv_main311 var9 var4 var19 var6 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main259 var1 var4 var0 var3 var2 var5)) (inv_main260 (write var1 (last (getlist_t (read var1 var3))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var3)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var3)))))) var5))) var4 var0 var3 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main40 var1 var3 var0 var2 var5 var4)) (inv_main51 var1 var3 var0 var2 var5 var4 (last (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Int) (var18 Addr)) (or (not (and (inv_main341 var11 var5 var10 var0 var2 var6) (and (and (and (and (and (and (and (= var4 var11) (= var9 var5)) (= var17 var10)) (= var8 var0)) (= var12 var2)) (= var16 var6)) (= var3 (next (getnode_t (read var11 var0))))) (and (and (and (and (and (= var1 (write var4 var8 defObj)) (= var18 var9)) (= var13 var17)) (= var7 var8)) (= var15 var3)) (= var14 var16))))) (inv_main342 var1 var18 var13 var15 var15 var14 var15)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main335 var13 var7 var12 var0 var3 var8) (and (not (<= 0 (+ (+ 6 (* (- 1) (+ var2 1))) (- 1)))) (and (and (and (and (and (and (and (= var4 var13) (= var16 var7)) (= var14 var12)) (= var5 var0)) (= var10 var3)) (= var9 var8)) (= var18 (next (getnode_t (read var13 var0))))) (and (and (and (and (and (= var6 (write var4 var5 defObj)) (= var15 var16)) (= var11 var14)) (= var1 var5)) (= var17 var18)) (= var2 var9)))))) (inv_main342 var6 var15 var11 var17 var17 (+ var2 1) var17)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main303 var1 var5 var0 var6 var4 var2 var3)) (inv_main305 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) (prev (getnode_t (read var1 var3))) nullAddr))) var5 var0 var6 var4 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main253 var1 var4 var0 var3 var2 var5)) (inv_main254 (write var1 var3 (O_list_t (list_t (first (getlist_t (read var1 var3))) var5))) var4 var0 var3 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main59 var3 var5 var2 var4 var1 var0)) (inv_main63 var3 var5 var2 var4 var1 var0 (first (getlist_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (inv_main30 var2 var5 var1 var7 var0 var4 var6 var3)) (inv_main29 (write var2 var6 (O_node_t (node_t (data (getnode_t (read var2 var6))) var3 (next (getnode_t (read var2 var6)))))) var5 var1 var7 var0 var4 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main197 var1 var3 var0 var4 var5 var2)) (inv_main199 (write var1 var2 (O_node_t (node_t (data (getnode_t (read var1 var2))) (prev (getnode_t (read var1 var2))) nullAddr))) var3 var0 var4 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_list_t (list_t nullAddr (last (getlist_t (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Int) (var16 Addr) (var17 Heap) (var18 Int) (var19 Addr) (var20 Int) (var21 Int) (var22 Int) (var23 Addr)) (or (not (and (inv_main149 var9 var4 var8 var2 var6 var15 var19 var10) (and (and (not (= var5 0)) (and (= var10 nullAddr) (and (and (and (and (and (and (and (= var13 var9) (= var12 var4)) (= var11 var8)) (= var22 var2)) (= var0 var6)) (= var18 var15)) (= var1 var19)) (= var23 (last (getlist_t (read var9 var6))))))) (and (and (and (and (and (and (and (= var17 var13) (= var16 var12)) (= var20 var11)) (= var21 var22)) (= var7 var0)) (= var3 var18)) (= var14 var1)) (or (and (= var23 nullAddr) (= var5 1)) (and (not (= var23 nullAddr)) (= var5 0))))))) (inv_main147 var17 var16 var20 var21 var7 var3 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int) (var21 Addr) (var22 Int) (var23 Addr)) (or (not (and (inv_main22 var12 var6 var11 var9 var1 var5 var23 var4) (and (and (not (= var3 0)) (and (= var4 nullAddr) (and (and (and (and (and (and (and (= var10 var12) (= var18 var6)) (= var13 var11)) (= var22 var9)) (= var14 var1)) (= var16 var5)) (= var15 var23)) (= var2 (last (getlist_t (read var12 var1))))))) (and (and (and (and (and (and (and (= var19 var10) (= var0 var18)) (= var8 var13)) (= var20 var22)) (= var17 var14)) (= var7 var16)) (= var21 var15)) (or (and (= var2 nullAddr) (= var3 1)) (and (not (= var2 nullAddr)) (= var3 0))))))) (inv_main20 var19 var0 var8 var20 var17 var7 var21)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main152 var1 var4 var0 var2 var6 var3 var5)) (inv_main153 (write var1 var6 (O_list_t (list_t (first (getlist_t (read var1 var6))) var5))) var4 var0 var2 var6 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main187 var1 var3 var0 var4 var5 var2)) (inv_main198 var1 var3 var0 var4 var5 var2 (last (getlist_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main146 var1 var4 var0 var2 var6 var3 var5)) (inv_main157 var1 var4 var0 var2 var6 var3 var5 (last (getlist_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main227 var1 var3 var0 var4 var2 var5)) (inv_main238 var1 var3 var0 var4 var2 var5 (last (getlist_t (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main351 var3 var6 var2 var1 var4 var7 var0 var5) (= var5 0))) (inv_main353 var3 var6 var2 var1 var4 var7 var0 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Heap) (var15 Int)) (or (not (and (inv_main351 var10 var5 var9 var1 var2 var6 var0 var13) (and (not (= var13 0)) (and (and (and (and (and (and (and (= var14 var10) (= var8 var5)) (= var3 var9)) (= var4 var1)) (= var7 var2)) (= var15 var6)) (= var11 var0)) (= var12 (data (getnode_t (read var10 (next (getnode_t (read var10 (next (getnode_t (read var10 (next (getnode_t (read var10 (next (getnode_t (read var10 var0)))))))))))))))))))) (and (or (not (= var12 121)) (inv_main353 var14 var8 var3 var4 var7 var15 var11 1)) (or (not (not (= var12 121))) (inv_main353 var14 var8 var3 var4 var7 var15 var11 0)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (inv_main278 var1 var2 var0 var6 var5 var3 var4)) (inv_main277 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) var4 (next (getnode_t (read var1 var3)))))) var2 var0 var6 var5 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main149 var1 var5 var0 var3 var7 var4 var6 var2) (not (= var2 nullAddr)))) (inv_main146 var1 var5 var0 var3 var7 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int) (var21 Addr) (var22 Addr) (var23 Int)) (or (not (and (inv_main149 var7 var3 var6 var2 var4 var14 var17 var8) (and (and (= var23 0) (and (= var8 nullAddr) (and (and (and (and (and (and (and (= var12 var7) (= var11 var3)) (= var9 var6)) (= var20 var2)) (= var0 var4)) (= var16 var14)) (= var1 var17)) (= var21 (last (getlist_t (read var7 var4))))))) (and (and (and (and (and (and (and (= var19 var12) (= var18 var11)) (= var13 var9)) (= var15 var20)) (= var22 var0)) (= var5 var16)) (= var10 var1)) (or (and (= var21 nullAddr) (= var23 1)) (and (not (= var21 nullAddr)) (= var23 0))))))) (inv_main146 var19 var18 var13 var15 var22 var5 var10)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main299 var1 var5 var0 var6 var4 var2 var3)) (inv_main300 (write var1 var4 (O_list_t (list_t (first (getlist_t (read var1 var4))) var3))) var5 var0 var6 var4 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main266 var1 var2 var0 var5 var4 var3)) (inv_main270 var1 var2 var0 var5 var4 var3 (first (getlist_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Addr) (var20 Addr)) (or (not (and (inv_main170 var12 var7 var11 var3 var4 var19 var6) (and (and (not (= var10 0)) (and (= var6 nullAddr) (and (and (and (and (and (and (= var9 var12) (= var15 var7)) (= var2 var11)) (= var14 var3)) (= var13 var4)) (= var1 var19)) (= var20 (last (getlist_t (read var12 var3))))))) (and (and (and (and (and (and (= var18 var9) (= var16 var15)) (= var0 var2)) (= var8 var14)) (= var5 var13)) (= var17 var1)) (or (and (= var20 nullAddr) (= var10 1)) (and (not (= var20 nullAddr)) (= var10 0))))))) (inv_main168 var18 var16 var0 var8 var5 var17)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main335 var13 var7 var12 var0 var3 var8) (and (<= 0 (+ (+ 6 (* (- 1) (+ var2 1))) (- 1))) (and (and (and (and (and (and (and (= var4 var13) (= var16 var7)) (= var14 var12)) (= var5 var0)) (= var10 var3)) (= var9 var8)) (= var18 (next (getnode_t (read var13 var0))))) (and (and (and (and (and (= var6 (write var4 var5 defObj)) (= var15 var16)) (= var11 var14)) (= var1 var5)) (= var17 var18)) (= var2 var9)))))) (inv_main335 var6 var15 var11 var17 var17 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Heap) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Addr)) (or (not (and (inv_main323 var14 var8 var13 var0 var3 var2 var18) (and (not (= var17 0)) (and (and (not (= var18 0)) (and (and (and (and (and (and (= var15 var14) (= var11 var8)) (= var16 var13)) (= var12 var0)) (= var5 var3)) (= var10 var2)) (= var7 (data (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 var2))))))))))))))))))))) (and (and (and (and (and (and (= var9 var15) (= var4 var11)) (= var19 var16)) (= var6 var12)) (= var1 var5)) (= var20 var10)) (or (and (= var7 62) (= var17 1)) (and (not (= var7 62)) (= var17 0)))))))) (inv_main335 var9 var4 var19 var6 var1 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Int) (var16 Int) (var17 Heap) (var18 Heap) (var19 Int) (var20 Addr)) (or (not (and (inv_main83 var17 var10 var16 var4 var3 var0 var9) (and (and (not (= var7 0)) (and (= var9 nullAddr) (and (and (and (and (and (and (= var13 var17) (= var8 var10)) (= var2 var16)) (= var12 var4)) (= var5 var3)) (= var11 var0)) (= var20 (last (getlist_t (read var17 var4))))))) (and (and (and (and (and (and (= var18 var13) (= var1 var8)) (= var15 var2)) (= var14 var12)) (= var19 var5)) (= var6 var11)) (or (and (= var20 nullAddr) (= var7 1)) (and (not (= var20 nullAddr)) (= var7 0))))))) (inv_main81 var18 var1 var15 var14 var19 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main153 var1 var4 var0 var2 var6 var3 var5)) (inv_main154 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) nullAddr (next (getnode_t (read var1 var5)))))) var4 var0 var2 var6 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main173 var1 var4 var0 var2 var3 var5)) (inv_main174 (write var1 var2 (O_list_t (list_t (first (getlist_t (read var1 var2))) var5))) var4 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main38 var1 var3 var0 var2 var5 var4)) (inv_main39 (write var1 var4 (O_node_t (node_t var5 (prev (getnode_t (read var1 var4))) (next (getnode_t (read var1 var4)))))) var3 var0 var2 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main273 var1 var2 var0 var5 var4 var3)) (inv_main274 (write var1 var5 (O_list_t (list_t (first (getlist_t (read var1 var5))) var3))) var2 var0 var5 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main111 var1 var4 var0 var6 var2 var3 var5)) (inv_main110 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) var5 (next (getnode_t (read var1 var3)))))) var4 var0 var6 var2 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 node_t) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main154 var13 var8 var12 var3 var9 var14 var15) (and (= var2 0) (and (and (and (and (and (and (= var5 (write var13 var15 (O_node_t (node_t (data (getnode_t (read var13 var15))) (prev (getnode_t (read var13 var15))) nullAddr)))) (= var11 var8)) (= var0 var12)) (= var7 var3)) (= var1 var9)) (= var6 var14)) (= var4 var15))))) (inv_main165 (newHeap (alloc var5 (O_node_t var10))) var11 var0 var11 60 (newAddr (alloc var5 (O_node_t var10))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 node_t) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Int)) (or (not (and (inv_main159 var7 var3 var6 var0 var5 var12 var13) (and (= var9 0) (and (and (and (and (and (= var10 (write var7 var5 (O_list_t (list_t (first (getlist_t (read var7 var5))) var13)))) (= var2 var3)) (= var14 var6)) (= var1 var0)) (= var4 var5)) (= var11 var12))))) (inv_main165 (newHeap (alloc var10 (O_node_t var8))) var2 var14 var2 60 (newAddr (alloc var10 (O_node_t var8))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main41 var1 var3 var0 var2 var5 var4)) (inv_main46 (write var1 var2 (O_list_t (list_t var4 (last (getlist_t (read var1 var2)))))) var3 var0 var2 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main230 var2 var4 var1 var5 var3 var6 var0) (not (= var0 nullAddr)))) (inv_main227 var2 var4 var1 var5 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Int)) (or (not (and (inv_main230 var11 var6 var10 var7 var5 var19 var0) (and (and (= var1 0) (and (= var0 nullAddr) (and (and (and (and (and (and (= var8 var11) (= var14 var6)) (= var20 var10)) (= var13 var7)) (= var18 var5)) (= var4 var19)) (= var9 (last (getlist_t (read var11 var7))))))) (and (and (and (and (and (and (= var15 var8) (= var2 var14)) (= var17 var20)) (= var3 var13)) (= var16 var18)) (= var12 var4)) (or (and (= var9 nullAddr) (= var1 1)) (and (not (= var9 nullAddr)) (= var1 0))))))) (inv_main227 var15 var2 var17 var3 var16 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main18 var2 var4 var1 var6 var0 var3 var5)) (inv_main22 var2 var4 var1 var6 var0 var3 var5 (first (getlist_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main22 var2 var5 var1 var7 var0 var4 var6 var3) (not (= var3 nullAddr)))) (inv_main19 var2 var5 var1 var7 var0 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Heap) (var22 Int) (var23 Addr)) (or (not (and (inv_main22 var12 var6 var11 var8 var0 var4 var23 var3) (and (and (= var13 0) (and (= var3 nullAddr) (and (and (and (and (and (and (and (= var9 var12) (= var18 var6)) (= var10 var11)) (= var22 var8)) (= var15 var0)) (= var17 var4)) (= var16 var23)) (= var2 (last (getlist_t (read var12 var0))))))) (and (and (and (and (and (and (and (= var21 var9) (= var20 var18)) (= var1 var10)) (= var5 var22)) (= var19 var15)) (= var7 var17)) (= var14 var16)) (or (and (= var2 nullAddr) (= var13 1)) (and (not (= var2 nullAddr)) (= var13 0))))))) (inv_main19 var21 var20 var1 var5 var19 var7 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main367 var10 var6 var9 var0 var3 var7) (and (not (= var15 nullAddr)) (and (and (and (and (and (and (and (= var2 var10) (= var13 var6)) (= var16 var9)) (= var4 var0)) (= var1 var3)) (= var5 var7)) (= var8 (next (getnode_t (read var10 var0))))) (and (and (and (and (and (= var14 (write var2 var4 defObj)) (= var17 var13)) (= var12 var16)) (= var11 var4)) (= var15 var8)) (= var18 var5)))))) (inv_main367 var14 var17 var12 var15 var15 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Heap) (var18 Int)) (or (not (and (inv_main361 var12 var7 var11 var0 var1 var8) (and (not (= var14 nullAddr)) (and (not (<= 0 (+ (+ 6 (* (- 1) (+ var16 1))) (- 1)))) (and (and (and (and (and (and (and (= var15 var12) (= var13 var7)) (= var18 var11)) (= var9 var0)) (= var3 var1)) (= var4 var8)) (= var6 (next (getnode_t (read var12 var0))))) (and (and (and (and (and (= var17 (write var15 var9 defObj)) (= var10 var13)) (= var5 var18)) (= var2 var9)) (= var14 var6)) (= var16 var4))))))) (inv_main367 var17 var10 var5 var14 var14 (+ var16 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr)) (or (not (inv_main281 var1 var2 var0)) (inv_main308 var1 var2 var0 (first (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main101 var1 var4 var0 var5 var2 var3)) (inv_main106 (write var1 var5 (O_list_t (list_t var3 (last (getlist_t (read var1 var5)))))) var4 var0 var5 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main174 var1 var4 var0 var2 var3 var5)) (inv_main175 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) nullAddr (next (getnode_t (read var1 var5)))))) var4 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main118 var1 var3 var0 var5 var2 var4)) (inv_main119 (write var1 var4 (O_node_t (node_t var2 (prev (getnode_t (read var1 var4))) (next (getnode_t (read var1 var4)))))) var3 var0 var5 var2 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main145 var1 var4 var0 var2 var6 var3 var5)) (inv_main149 var1 var4 var0 var2 var6 var3 var5 (first (getlist_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main188 var1 var3 var0 var4 var5 var2)) (inv_main193 (write var1 var4 (O_list_t (list_t var2 (last (getlist_t (read var1 var4)))))) var3 var0 var4 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr)) (or (not (and (inv_main123 var14 var8 var13 var9 var16 var19 var7) (and (and (not (= var12 0)) (and (= var7 nullAddr) (and (and (and (and (and (and (= var4 var14) (= var3 var8)) (= var11 var13)) (= var2 var9)) (= var10 var16)) (= var6 var19)) (= var1 (last (getlist_t (read var14 var9))))))) (and (and (and (and (and (and (= var0 var4) (= var20 var3)) (= var18 var11)) (= var15 var2)) (= var17 var10)) (= var5 var6)) (or (and (= var1 nullAddr) (= var12 1)) (and (not (= var1 nullAddr)) (= var12 0))))))) (inv_main121 var0 var20 var18 var15 var17 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 node_t)) (or (not (and (inv_main284 var1 var2 var0 var3) (and (not (= var3 60)) (not (= var3 62))))) (inv_main291 (newHeap (alloc var1 (O_node_t var4))) var2 var0 var3 var2 var3 (newAddr (alloc var1 (O_node_t var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main29 var2 var4 var1 var6 var0 var3 var5)) (inv_main31 (write var2 var5 (O_node_t (node_t (data (getnode_t (read var2 var5))) (prev (getnode_t (read var2 var5))) nullAddr))) var4 var1 var6 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 node_t) (var4 Int)) (or (not (and (inv_main10 var1 var2 var0 var4) (and (not (= var4 60)) (not (= var4 62))))) (inv_main17 (newHeap (alloc var1 (O_node_t var3))) var2 var0 var4 var2 var4 (newAddr (alloc var1 (O_node_t var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main100 var1 var4 var0 var5 var2 var3)) (inv_main111 var1 var4 var0 var5 var2 var3 (last (getlist_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main268 var1 var2 var0 var5 var4 var3)) (inv_main273 (write var1 var5 (O_list_t (list_t var3 (last (getlist_t (read var1 var5)))))) var2 var0 var5 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main237 var1 var3 var0 var4 var2 var5)) (inv_main239 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) (prev (getnode_t (read var1 var5))) nullAddr))) var3 var0 var4 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main186 var1 var3 var0 var4 var5 var2)) (inv_main190 var1 var3 var0 var4 var5 var2 (first (getlist_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 node_t) (var11 Addr) (var12 Int)) (or (not (and (inv_main195 var2 var6 var1 var7 var8 var4) (and (and (and (and (and (= var5 (write var2 var4 (O_node_t (node_t (data (getnode_t (read var2 var4))) (prev (getnode_t (read var2 var4))) nullAddr)))) (= var3 var6)) (= var12 var1)) (= var11 var7)) (= var0 var8)) (= var9 var4)))) (inv_main205 (newHeap (alloc var5 (O_node_t var10))) var3 var12 var3 111 (newAddr (alloc var5 (O_node_t var10))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 node_t) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int)) (or (not (and (inv_main200 var2 var9 var1 var10 var11 var4) (and (and (and (and (= var5 (write var2 var10 (O_list_t (list_t (first (getlist_t (read var2 var10))) var4)))) (= var6 var9)) (= var3 var1)) (= var8 var10)) (= var0 var11)))) (inv_main205 (newHeap (alloc var5 (O_node_t var7))) var6 var3 var6 111 (newAddr (alloc var5 (O_node_t var7))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 node_t) (var11 Addr) (var12 Int)) (or (not (and (inv_main108 var2 var9 var1 var11 var3 var7) (and (and (and (and (and (= var8 (write var2 var7 (O_node_t (node_t (data (getnode_t (read var2 var7))) (prev (getnode_t (read var2 var7))) nullAddr)))) (= var4 var9)) (= var12 var1)) (= var5 var11)) (= var0 var3)) (= var6 var7)))) (inv_main118 (newHeap (alloc var8 (O_node_t var10))) var4 var12 var4 62 (newAddr (alloc var8 (O_node_t var10))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 node_t) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int) (var11 Int)) (or (not (and (inv_main113 var1 var7 var0 var8 var3 var4) (and (and (and (and (= var9 (write var1 var8 (O_list_t (list_t (first (getlist_t (read var1 var8))) var4)))) (= var2 var7)) (= var11 var0)) (= var6 var8)) (= var10 var3)))) (inv_main118 (newHeap (alloc var9 (O_node_t var5))) var2 var11 var2 62 (newAddr (alloc var9 (O_node_t var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main167 var1 var4 var0 var2 var3 var5)) (inv_main178 var1 var4 var0 var2 var3 var5 (last (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main50 var1 var3 var0 var2 var5 var4)) (inv_main52 (write var1 var4 (O_node_t (node_t (data (getnode_t (read var1 var4))) (prev (getnode_t (read var1 var4))) nullAddr))) var3 var0 var2 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main296 var1 var6 var0 var7 var4 var2 var3 var5) (not (= var5 nullAddr)))) (inv_main293 var1 var6 var0 var7 var4 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Heap) (var14 Int) (var15 Addr) (var16 Int) (var17 Heap) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr)) (or (not (and (inv_main296 var17 var9 var16 var11 var21 var19 var20 var23) (and (and (= var3 0) (and (= var23 nullAddr) (and (and (and (and (and (and (and (= var1 var17) (= var18 var9)) (= var0 var16)) (= var6 var11)) (= var22 var21)) (= var10 var19)) (= var5 var20)) (= var15 (last (getlist_t (read var17 var21))))))) (and (and (and (and (and (and (and (= var13 var1) (= var4 var18)) (= var2 var0)) (= var14 var6)) (= var12 var22)) (= var8 var10)) (= var7 var5)) (or (and (= var15 nullAddr) (= var3 1)) (and (not (= var15 nullAddr)) (= var3 0))))))) (inv_main293 var13 var4 var2 var14 var12 var8 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main248 var1 var4 var0 var3 var2 var5)) (inv_main253 (write var1 var3 (O_list_t (list_t var5 (last (getlist_t (read var1 var3)))))) var4 var0 var3 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main234 var1 var3 var0 var4 var2 var5)) (inv_main235 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) nullAddr (next (getnode_t (read var1 var5)))))) var3 var0 var4 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main58 var3 var5 var2 var4 var1 var0)) (inv_main59 (write var3 var0 (O_node_t (node_t var1 (prev (getnode_t (read var3 var0))) (next (getnode_t (read var3 var0)))))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Heap) (var1 list_t)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_list_t var1))) (newAddr (alloc var0 (O_list_t var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main170 var1 var5 var0 var2 var3 var6 var4) (not (= var4 nullAddr)))) (inv_main167 var1 var5 var0 var2 var3 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main170 var12 var7 var11 var3 var4 var19 var6) (and (and (= var0 0) (and (= var6 nullAddr) (and (and (and (and (and (and (= var10 var12) (= var16 var7)) (= var2 var11)) (= var15 var3)) (= var14 var4)) (= var1 var19)) (= var20 (last (getlist_t (read var12 var3))))))) (and (and (and (and (and (and (= var17 var10) (= var13 var16)) (= var9 var2)) (= var5 var15)) (= var8 var14)) (= var18 var1)) (or (and (= var20 nullAddr) (= var0 1)) (and (not (= var20 nullAddr)) (= var0 0))))))) (inv_main167 var17 var13 var9 var5 var8 var18)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int)) (or (not (and (inv_main301 var9 var6 var8 var7 var12 var10 var11) (and (= var14 0) (and (and (and (and (and (and (= var0 (write var9 var11 (O_node_t (node_t (data (getnode_t (read var9 var11))) (prev (getnode_t (read var9 var11))) nullAddr)))) (= var13 var6)) (= var5 var8)) (= var1 var7)) (= var4 var12)) (= var2 var10)) (= var3 var11))))) (inv_main281 var0 var13 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (and (inv_main306 var8 var5 var7 var6 var13 var11 var12) (and (= var2 0) (and (and (and (and (and (= var0 (write var8 var13 (O_list_t (list_t (first (getlist_t (read var8 var13))) var12)))) (= var3 var5)) (= var1 var7)) (= var10 var6)) (= var9 var13)) (= var4 var11))))) (inv_main281 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main17 var2 var4 var1 var6 var0 var3 var5)) (inv_main18 (write var2 var5 (O_node_t (node_t var3 (prev (getnode_t (read var2 var5))) (next (getnode_t (read var2 var5)))))) var4 var1 var6 var0 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main347 var3 var6 var2 var1 var4 var7 var0 var5) (= var5 0))) (inv_main349 var3 var6 var2 var1 var4 var7 var0 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main347 var12 var9 var11 var2 var4 var10 var1 var7) (and (not (= var7 0)) (and (and (and (and (and (and (and (= var3 var12) (= var14 var9)) (= var0 var11)) (= var15 var2)) (= var13 var4)) (= var5 var10)) (= var6 var1)) (= var8 (data (getnode_t (read var12 (next (getnode_t (read var12 (next (getnode_t (read var12 var1)))))))))))))) (and (or (not (= var8 111)) (inv_main349 var3 var14 var0 var15 var13 var5 var6 1)) (or (not (not (= var8 111))) (inv_main349 var3 var14 var0 var15 var13 var5 var6 0)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main177 var1 var4 var0 var2 var3 var5)) (inv_main179 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) (prev (getnode_t (read var1 var5))) nullAddr))) var4 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main194 var1 var3 var0 var4 var5 var2)) (inv_main195 (write var1 var2 (O_node_t (node_t (data (getnode_t (read var1 var2))) nullAddr (next (getnode_t (read var1 var2)))))) var3 var0 var4 var5 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main300 var1 var5 var0 var6 var4 var2 var3)) (inv_main301 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) nullAddr (next (getnode_t (read var1 var3)))))) var5 var0 var6 var4 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main52 var1 var3 var0 var2 var5 var4)) (inv_main53 (write var1 (last (getlist_t (read var1 var2))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var2)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var2)))))) var4))) var3 var0 var2 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main208 var1 var5 var0 var2 var4 var3)) (inv_main213 (write var1 var2 (O_list_t (list_t var3 (last (getlist_t (read var1 var2)))))) var5 var0 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main214 var1 var5 var0 var2 var4 var3)) (inv_main215 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) nullAddr (next (getnode_t (read var1 var3)))))) var5 var0 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main319 var3 var6 var2 var1 var5 var4 var0) (= var0 0))) (inv_main321 var3 var6 var2 var1 var5 var4 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr)) (or (not (and (inv_main319 var11 var8 var10 var1 var3 var2 var0) (and (not (= var0 0)) (and (and (and (and (and (and (= var7 var11) (= var5 var8)) (= var9 var10)) (= var13 var1)) (= var12 var3)) (= var6 var2)) (= var4 (data (getnode_t (read var11 (next (getnode_t (read var11 (next (getnode_t (read var11 (next (getnode_t (read var11 var2))))))))))))))))) (and (or (not (= var4 97)) (inv_main321 var7 var5 var9 var13 var12 var6 1)) (or (not (not (= var4 97))) (inv_main321 var7 var5 var9 var13 var12 var6 0)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main199 var1 var3 var0 var4 var5 var2)) (inv_main200 (write var1 (last (getlist_t (read var1 var4))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var4)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var4)))))) var2))) var3 var0 var4 var5 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main120 var1 var3 var0 var5 var2 var4)) (inv_main131 var1 var3 var0 var5 var2 var4 (last (getlist_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main119 var1 var3 var0 var5 var2 var4)) (inv_main123 var1 var3 var0 var5 var2 var4 (first (getlist_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main47 var1 var3 var0 var2 var5 var4)) (inv_main48 (write var1 var4 (O_node_t (node_t (data (getnode_t (read var1 var4))) nullAddr (next (getnode_t (read var1 var4)))))) var3 var0 var2 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main238 var1 var4 var0 var5 var3 var6 var2)) (inv_main237 (write var1 var6 (O_node_t (node_t (data (getnode_t (read var1 var6))) var2 (next (getnode_t (read var1 var6)))))) var4 var0 var5 var3 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main147 var1 var4 var0 var2 var6 var3 var5)) (inv_main152 (write var1 var6 (O_list_t (list_t var5 (last (getlist_t (read var1 var6)))))) var4 var0 var2 var6 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main228 var1 var3 var0 var4 var2 var5)) (inv_main233 (write var1 var4 (O_list_t (list_t var5 (last (getlist_t (read var1 var4)))))) var3 var0 var4 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main305 var1 var5 var0 var6 var4 var2 var3)) (inv_main306 (write var1 (last (getlist_t (read var1 var4))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var4)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var4)))))) var3))) var5 var0 var6 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main87 var2 var5 var1 var4 var3 var0)) (inv_main88 (write var2 var0 (O_node_t (node_t (data (getnode_t (read var2 var0))) nullAddr (next (getnode_t (read var2 var0)))))) var5 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main279 var1 var2 var0 var5 var4 var3)) (inv_main280 (write var1 (last (getlist_t (read var1 var5))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var5)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var5)))))) var3))) var2 var0 var5 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main157 var2 var5 var1 var3 var7 var4 var6 var0)) (inv_main156 (write var2 var6 (O_node_t (node_t (data (getnode_t (read var2 var6))) var0 (next (getnode_t (read var2 var6)))))) var5 var1 var3 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main179 var1 var4 var0 var2 var3 var5)) (inv_main180 (write var1 (last (getlist_t (read var1 var2))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var2)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var2)))))) var5))) var4 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main284 var2 var3 var1 var4) (or (= var4 60) (= var4 62)))) (inv_main284 var2 var3 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main301 var10 var7 var9 var8 var14 var12 var13) (and (not (= var11 0)) (and (and (and (and (and (and (= var0 (write var10 var13 (O_node_t (node_t (data (getnode_t (read var10 var13))) (prev (getnode_t (read var10 var13))) nullAddr)))) (= var15 var7)) (= var6 var9)) (= var2 var8)) (= var5 var14)) (= var3 var12)) (= var4 var13))))) (inv_main284 var0 var15 var6 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr)) (or (not (and (inv_main306 var9 var6 var8 var7 var14 var12 var13) (and (not (= var0 0)) (and (and (and (and (and (= var1 (write var9 var14 (O_list_t (list_t (first (getlist_t (read var9 var14))) var13)))) (= var3 var6)) (= var2 var8)) (= var11 var7)) (= var10 var14)) (= var5 var12))))) (inv_main284 var1 var3 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main275 var2 var9 var1 var12 var11 var10) (and (and (and (and (and (= var6 (write var2 var10 (O_node_t (node_t (data (getnode_t (read var2 var10))) (prev (getnode_t (read var2 var10))) nullAddr)))) (= var5 var9)) (= var8 var1)) (= var4 var12)) (= var7 var11)) (= var0 var10)))) (inv_main284 var6 var5 var8 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr)) (or (not (and (inv_main280 var4 var6 var3 var11 var9 var7) (and (and (and (and (= var10 (write var4 var11 (O_list_t (list_t (first (getlist_t (read var4 var11))) var7)))) (= var1 var6)) (= var5 var3)) (= var0 var11)) (= var8 var9)))) (inv_main284 var10 var1 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main83 var2 var6 var1 var4 var3 var0 var5) (not (= var5 nullAddr)))) (inv_main80 var2 var6 var1 var4 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Int) (var18 Heap) (var19 Int) (var20 Addr)) (or (not (and (inv_main83 var18 var11 var17 var5 var4 var0 var10) (and (and (= var19 0) (and (= var10 nullAddr) (and (and (and (and (and (and (= var15 var18) (= var8 var11)) (= var3 var17)) (= var13 var5)) (= var6 var4)) (= var12 var0)) (= var20 (last (getlist_t (read var18 var5))))))) (and (and (and (and (and (and (= var9 var15) (= var14 var8)) (= var7 var3)) (= var1 var13)) (= var16 var6)) (= var2 var12)) (or (and (= var20 nullAddr) (= var19 1)) (and (not (= var20 nullAddr)) (= var19 0))))))) (inv_main80 var9 var14 var7 var1 var16 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main79 var2 var5 var1 var4 var3 var0)) (inv_main83 var2 var5 var1 var4 var3 var0 (first (getlist_t (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main190 var1 var4 var0 var5 var6 var2 var3) (not (= var3 nullAddr)))) (inv_main187 var1 var4 var0 var5 var6 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int) (var18 Heap) (var19 Addr) (var20 Addr)) (or (not (and (inv_main190 var15 var8 var14 var10 var11 var16 var6) (and (and (= var5 0) (and (= var6 nullAddr) (and (and (and (and (and (and (= var18 var15) (= var2 var8)) (= var12 var14)) (= var3 var10)) (= var13 var11)) (= var19 var16)) (= var4 (last (getlist_t (read var15 var10))))))) (and (and (and (and (and (and (= var0 var18) (= var20 var2)) (= var9 var12)) (= var7 var3)) (= var17 var13)) (= var1 var19)) (or (and (= var4 nullAddr) (= var5 1)) (and (not (= var4 nullAddr)) (= var5 0))))))) (inv_main187 var0 var20 var9 var7 var17 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main239 var1 var3 var0 var4 var2 var5)) (inv_main240 (write var1 (last (getlist_t (read var1 var4))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var4)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var4)))))) var5))) var3 var0 var4 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main61 var3 var5 var2 var4 var1 var0)) (inv_main66 (write var3 var4 (O_list_t (list_t var0 (last (getlist_t (read var3 var4)))))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main219 var1 var5 var0 var2 var4 var3)) (inv_main220 (write var1 (last (getlist_t (read var1 var2))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var2)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var2)))))) var3))) var5 var0 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main70 var3 var5 var2 var4 var1 var0)) (inv_main72 (write var3 var0 (O_node_t (node_t (data (getnode_t (read var3 var0))) (prev (getnode_t (read var3 var0))) nullAddr))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 node_t) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main48 var1 var8 var0 var6 var11 var10) (and (and (and (and (and (= var9 (write var1 var10 (O_node_t (node_t (data (getnode_t (read var1 var10))) (prev (getnode_t (read var1 var10))) nullAddr)))) (= var7 var8)) (= var2 var0)) (= var12 var6)) (= var3 var11)) (= var5 var10)))) (inv_main58 (newHeap (alloc var9 (O_node_t var4))) var7 var2 var7 104 (newAddr (alloc var9 (O_node_t var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 node_t) (var10 Addr) (var11 Int)) (or (not (and (inv_main53 var2 var7 var1 var5 var11 var10) (and (and (and (and (= var0 (write var2 var5 (O_list_t (list_t (first (getlist_t (read var2 var5))) var10)))) (= var4 var7)) (= var6 var1)) (= var3 var5)) (= var8 var11)))) (inv_main58 (newHeap (alloc var0 (O_node_t var9))) var4 var6 var4 104 (newAddr (alloc var0 (O_node_t var9))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main245 var1 var4 var0 var3 var2 var5)) (inv_main246 (write var1 var5 (O_node_t (node_t var2 (prev (getnode_t (read var1 var5))) (next (getnode_t (read var1 var5)))))) var4 var0 var3 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main226 var1 var3 var0 var4 var2 var5)) (inv_main230 var1 var3 var0 var4 var2 var5 (first (getlist_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main123 var1 var4 var0 var6 var3 var5 var2) (not (= var2 nullAddr)))) (inv_main120 var1 var4 var0 var6 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr) (var20 Heap)) (or (not (and (inv_main123 var15 var7 var14 var9 var17 var19 var5) (and (and (= var16 0) (and (= var5 nullAddr) (and (and (and (and (and (and (= var3 var15) (= var2 var7)) (= var12 var14)) (= var1 var9)) (= var11 var17)) (= var4 var19)) (= var0 (last (getlist_t (read var15 var9))))))) (and (and (and (and (and (and (= var20 var3) (= var10 var2)) (= var8 var12)) (= var13 var1)) (= var6 var11)) (= var18 var4)) (or (and (= var0 nullAddr) (= var16 1)) (and (not (= var0 nullAddr)) (= var16 0))))))) (inv_main120 var20 var10 var8 var13 var6 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main349 var3 var6 var2 var1 var4 var7 var0 var5) (= var5 0))) (inv_main351 var3 var6 var2 var1 var4 var7 var0 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main349 var12 var7 var11 var1 var2 var8 var0 var6) (and (not (= var6 0)) (and (and (and (and (and (and (and (= var3 var12) (= var5 var7)) (= var13 var11)) (= var10 var1)) (= var14 var2)) (= var15 var8)) (= var4 var0)) (= var9 (data (getnode_t (read var12 (next (getnode_t (read var12 (next (getnode_t (read var12 (next (getnode_t (read var12 var0))))))))))))))))) (and (or (not (= var9 100)) (inv_main351 var3 var5 var13 var10 var14 var15 var4 1)) (or (not (not (= var9 100))) (inv_main351 var3 var5 var13 var10 var14 var15 var4 0)))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_list_t (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_list_t (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main17 var2 var4 var1 var6 var0 var3 var5) (not (is-O_node_t (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main18 var2 var4 var1 var6 var0 var3 var5) (not (is-O_list_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main22 var2 var5 var1 var7 var0 var4 var6 var3) (and (= var3 nullAddr) (not (is-O_list_t (read var2 var0)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main20 var2 var4 var1 var6 var0 var3 var5) (not (is-O_list_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main25 var2 var4 var1 var6 var0 var3 var5) (not (is-O_list_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main26 var2 var4 var1 var6 var0 var3 var5) (not (is-O_node_t (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main27 var2 var4 var1 var6 var0 var3 var5) (not (is-O_node_t (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main19 var2 var4 var1 var6 var0 var3 var5) (not (is-O_list_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main30 var2 var5 var1 var7 var0 var4 var6 var3) (not (is-O_node_t (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main29 var2 var4 var1 var6 var0 var3 var5) (not (is-O_node_t (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main31 var2 var4 var1 var6 var0 var3 var5) (not (is-O_list_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main31 var2 var4 var1 var6 var0 var3 var5) (not (is-O_node_t (read var2 (last (getlist_t (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main32 var2 var4 var1 var6 var0 var3 var5) (not (is-O_list_t (read var2 var0))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main38 var1 var3 var0 var2 var5 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main39 var1 var3 var0 var2 var5 var4) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main43 var1 var3 var0 var2 var6 var5 var4) (and (= var4 nullAddr) (not (is-O_list_t (read var1 var2)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main41 var1 var3 var0 var2 var5 var4) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main46 var1 var3 var0 var2 var5 var4) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main47 var1 var3 var0 var2 var5 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main48 var1 var3 var0 var2 var5 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main40 var1 var3 var0 var2 var5 var4) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main51 var1 var4 var0 var3 var6 var5 var2) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main50 var1 var3 var0 var2 var5 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main52 var1 var3 var0 var2 var5 var4) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main52 var1 var3 var0 var2 var5 var4) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var2)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main53 var1 var3 var0 var2 var5 var4) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main58 var3 var5 var2 var4 var1 var0) (not (is-O_node_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main59 var3 var5 var2 var4 var1 var0) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main63 var3 var6 var2 var4 var1 var0 var5) (and (= var5 nullAddr) (not (is-O_list_t (read var3 var4)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main61 var3 var5 var2 var4 var1 var0) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main66 var3 var5 var2 var4 var1 var0) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main67 var3 var5 var2 var4 var1 var0) (not (is-O_node_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main68 var3 var5 var2 var4 var1 var0) (not (is-O_node_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main60 var3 var5 var2 var4 var1 var0) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main71 var3 var5 var2 var4 var1 var0 var6) (not (is-O_node_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main70 var3 var5 var2 var4 var1 var0) (not (is-O_node_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main72 var3 var5 var2 var4 var1 var0) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main72 var3 var5 var2 var4 var1 var0) (not (is-O_node_t (read var3 (last (getlist_t (read var3 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main73 var3 var5 var2 var4 var1 var0) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main78 var2 var5 var1 var4 var3 var0) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main79 var2 var5 var1 var4 var3 var0) (not (is-O_list_t (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main83 var2 var6 var1 var4 var3 var0 var5) (and (= var5 nullAddr) (not (is-O_list_t (read var2 var4)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main81 var2 var5 var1 var4 var3 var0) (not (is-O_list_t (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main86 var2 var5 var1 var4 var3 var0) (not (is-O_list_t (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main87 var2 var5 var1 var4 var3 var0) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main88 var2 var5 var1 var4 var3 var0) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main80 var2 var5 var1 var4 var3 var0) (not (is-O_list_t (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main91 var2 var6 var1 var4 var3 var0 var5) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main90 var2 var5 var1 var4 var3 var0) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main92 var2 var5 var1 var4 var3 var0) (not (is-O_list_t (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main92 var2 var5 var1 var4 var3 var0) (not (is-O_node_t (read var2 (last (getlist_t (read var2 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main93 var2 var5 var1 var4 var3 var0) (not (is-O_list_t (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main98 var1 var4 var0 var5 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main99 var1 var4 var0 var5 var2 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main103 var1 var5 var0 var6 var2 var3 var4) (and (= var4 nullAddr) (not (is-O_list_t (read var1 var6)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main101 var1 var4 var0 var5 var2 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main106 var1 var4 var0 var5 var2 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main107 var1 var4 var0 var5 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main108 var1 var4 var0 var5 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main100 var1 var4 var0 var5 var2 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main111 var1 var4 var0 var6 var2 var3 var5) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main110 var1 var4 var0 var5 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main112 var1 var4 var0 var5 var2 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main112 var1 var4 var0 var5 var2 var3) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var5)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main113 var1 var4 var0 var5 var2 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main118 var1 var3 var0 var5 var2 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main119 var1 var3 var0 var5 var2 var4) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main123 var1 var4 var0 var6 var3 var5 var2) (and (= var2 nullAddr) (not (is-O_list_t (read var1 var6)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main121 var1 var3 var0 var5 var2 var4) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main126 var1 var3 var0 var5 var2 var4) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main127 var1 var3 var0 var5 var2 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main128 var1 var3 var0 var5 var2 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main120 var1 var3 var0 var5 var2 var4) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main131 var1 var4 var0 var6 var2 var5 var3) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main130 var1 var3 var0 var5 var2 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main132 var1 var3 var0 var5 var2 var4) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main132 var1 var3 var0 var5 var2 var4) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var5)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main133 var1 var3 var0 var5 var2 var4) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main144 var1 var4 var0 var2 var6 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main145 var1 var4 var0 var2 var6 var3 var5) (not (is-O_list_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main149 var1 var5 var0 var3 var7 var4 var6 var2) (and (= var2 nullAddr) (not (is-O_list_t (read var1 var7)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main147 var1 var4 var0 var2 var6 var3 var5) (not (is-O_list_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main152 var1 var4 var0 var2 var6 var3 var5) (not (is-O_list_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main153 var1 var4 var0 var2 var6 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main154 var1 var4 var0 var2 var6 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main146 var1 var4 var0 var2 var6 var3 var5) (not (is-O_list_t (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main157 var2 var5 var1 var3 var7 var4 var6 var0) (not (is-O_node_t (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main156 var1 var4 var0 var2 var6 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main158 var1 var4 var0 var2 var6 var3 var5) (not (is-O_list_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main158 var1 var4 var0 var2 var6 var3 var5) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var6)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main159 var1 var4 var0 var2 var6 var3 var5) (not (is-O_list_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main165 var1 var4 var0 var2 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main166 var1 var4 var0 var2 var3 var5) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main170 var1 var5 var0 var2 var3 var6 var4) (and (= var4 nullAddr) (not (is-O_list_t (read var1 var2)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main168 var1 var4 var0 var2 var3 var5) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main173 var1 var4 var0 var2 var3 var5) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main174 var1 var4 var0 var2 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main175 var1 var4 var0 var2 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main167 var1 var4 var0 var2 var3 var5) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main178 var1 var5 var0 var2 var4 var6 var3) (not (is-O_node_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main177 var1 var4 var0 var2 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main179 var1 var4 var0 var2 var3 var5) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main179 var1 var4 var0 var2 var3 var5) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var2)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main180 var1 var4 var0 var2 var3 var5) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main185 var1 var3 var0 var4 var5 var2) (not (is-O_node_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main186 var1 var3 var0 var4 var5 var2) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main190 var1 var4 var0 var5 var6 var2 var3) (and (= var3 nullAddr) (not (is-O_list_t (read var1 var5)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main188 var1 var3 var0 var4 var5 var2) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main193 var1 var3 var0 var4 var5 var2) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main194 var1 var3 var0 var4 var5 var2) (not (is-O_node_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main195 var1 var3 var0 var4 var5 var2) (not (is-O_node_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main187 var1 var3 var0 var4 var5 var2) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main198 var1 var4 var0 var5 var6 var2 var3) (not (is-O_node_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main197 var1 var3 var0 var4 var5 var2) (not (is-O_node_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main199 var1 var3 var0 var4 var5 var2) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main199 var1 var3 var0 var4 var5 var2) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var4)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main200 var1 var3 var0 var4 var5 var2) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main205 var1 var5 var0 var2 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main206 var1 var5 var0 var2 var4 var3) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main210 var1 var6 var0 var3 var5 var4 var2) (and (= var2 nullAddr) (not (is-O_list_t (read var1 var3)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main208 var1 var5 var0 var2 var4 var3) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main213 var1 var5 var0 var2 var4 var3) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main214 var1 var5 var0 var2 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main215 var1 var5 var0 var2 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main207 var1 var5 var0 var2 var4 var3) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main218 var1 var6 var0 var3 var5 var4 var2) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main217 var1 var5 var0 var2 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main219 var1 var5 var0 var2 var4 var3) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main219 var1 var5 var0 var2 var4 var3) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var2)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main220 var1 var5 var0 var2 var4 var3) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main225 var1 var3 var0 var4 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main226 var1 var3 var0 var4 var2 var5) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main230 var2 var4 var1 var5 var3 var6 var0) (and (= var0 nullAddr) (not (is-O_list_t (read var2 var5)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main228 var1 var3 var0 var4 var2 var5) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main233 var1 var3 var0 var4 var2 var5) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main234 var1 var3 var0 var4 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main235 var1 var3 var0 var4 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main227 var1 var3 var0 var4 var2 var5) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main238 var1 var4 var0 var5 var3 var6 var2) (not (is-O_node_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main237 var1 var3 var0 var4 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main239 var1 var3 var0 var4 var2 var5) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main239 var1 var3 var0 var4 var2 var5) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var4)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main240 var1 var3 var0 var4 var2 var5) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main245 var1 var4 var0 var3 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main246 var1 var4 var0 var3 var2 var5) (not (is-O_list_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main250 var1 var5 var0 var3 var2 var6 var4) (and (= var4 nullAddr) (not (is-O_list_t (read var1 var3)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main248 var1 var4 var0 var3 var2 var5) (not (is-O_list_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main253 var1 var4 var0 var3 var2 var5) (not (is-O_list_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main254 var1 var4 var0 var3 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main255 var1 var4 var0 var3 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main247 var1 var4 var0 var3 var2 var5) (not (is-O_list_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main258 var1 var4 var0 var3 var2 var6 var5) (not (is-O_node_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main257 var1 var4 var0 var3 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main259 var1 var4 var0 var3 var2 var5) (not (is-O_list_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main259 var1 var4 var0 var3 var2 var5) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var3)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main260 var1 var4 var0 var3 var2 var5) (not (is-O_list_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main265 var1 var2 var0 var5 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main266 var1 var2 var0 var5 var4 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main270 var2 var3 var1 var6 var5 var4 var0) (and (= var0 nullAddr) (not (is-O_list_t (read var2 var6)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main268 var1 var2 var0 var5 var4 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main273 var1 var2 var0 var5 var4 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main274 var1 var2 var0 var5 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main275 var1 var2 var0 var5 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main267 var1 var2 var0 var5 var4 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main278 var1 var2 var0 var6 var5 var3 var4) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main277 var1 var2 var0 var5 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main279 var1 var2 var0 var5 var4 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main279 var1 var2 var0 var5 var4 var3) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var5)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main280 var1 var2 var0 var5 var4 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main291 var1 var5 var0 var6 var4 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main292 var1 var5 var0 var6 var4 var2 var3) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main296 var1 var6 var0 var7 var4 var2 var3 var5) (and (= var5 nullAddr) (not (is-O_list_t (read var1 var4)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main294 var1 var5 var0 var6 var4 var2 var3) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main299 var1 var5 var0 var6 var4 var2 var3) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main300 var1 var5 var0 var6 var4 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main301 var1 var5 var0 var6 var4 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main293 var1 var5 var0 var6 var4 var2 var3) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main304 var1 var6 var0 var7 var4 var2 var3 var5) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main303 var1 var5 var0 var6 var4 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main305 var1 var5 var0 var6 var4 var2 var3) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main305 var1 var5 var0 var6 var4 var2 var3) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var4)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main306 var1 var5 var0 var6 var4 var2 var3) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr)) (not (and (inv_main281 var1 var2 var0) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (not (and (inv_main308 var2 var3 var1 var0) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main312 var2 var5 var1 var0 var4 var3) (not (is-O_node_t (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main315 var2 var6 var1 var0 var4 var3 var5) (and (= var5 60) (not (is-O_node_t (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main315 var2 var6 var1 var0 var4 var3 var5) (and (= var5 60) (not (is-O_node_t (read var2 (next (getnode_t (read var2 var3))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main317 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main317 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 var3))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main317 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3)))))))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main319 var3 var6 var2 var1 var5 var4 var0) (and (not (= var0 0)) (not (is-O_node_t (read var3 var4)))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main319 var3 var6 var2 var1 var5 var4 var0) (and (not (= var0 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 var4))))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main319 var3 var6 var2 var1 var5 var4 var0) (and (not (= var0 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var4)))))))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main319 var3 var6 var2 var1 var5 var4 var0) (and (not (= var0 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var4))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main321 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main321 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 var3))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main321 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3)))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main321 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main321 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3)))))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 var3))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3)))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3)))))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3))))))))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main311 var2 var4 var1 var0 var3) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main335 var2 var4 var1 var0 var3 var5) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main342 var3 var5 var2 var1 var4 var6 var0) (not (is-O_node_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main345 var3 var6 var2 var1 var5 var7 var0 var4) (and (= var4 60) (not (is-O_node_t (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main345 var3 var6 var2 var1 var5 var7 var0 var4) (and (= var4 60) (not (is-O_node_t (read var3 (next (getnode_t (read var3 var0))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main347 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main347 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 var0))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main347 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0)))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main349 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main349 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 var0))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main349 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0)))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main349 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main351 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main351 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 var0))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main351 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0)))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main351 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main351 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0)))))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 var0))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0)))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0)))))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0))))))))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main341 var2 var4 var1 var0 var3 var5) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main361 var2 var4 var1 var0 var3 var5) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main367 var2 var4 var1 var0 var3 var5) (not (is-O_node_t (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/test-0019_1-1.i.smt2 b/heap-theory-benchmarks/array/test-0019_1-1.i.smt2 new file mode 100644 index 00000000..842d645b --- /dev/null +++ b/heap-theory-benchmarks/array/test-0019_1-1.i.smt2 @@ -0,0 +1,56 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TData 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TData (getTData TData)) (defObj)) + ((TData (lo Addr) (hi Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main10 (Heap TData Int) Bool) +(declare-fun inv_main12 (Heap TData Int) Bool) +(declare-fun inv_main18 (Heap TData Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap TData Int Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap TData) Bool) +(assert (forall ((var0 Heap) (var1 TData)) (or (not (= var0 emptyHeap)) (inv_main3 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 TData) (var10 TData) (var11 TData) (var12 Addr) (var13 Addr)) (or (not (and (inv_main22 var0 var10 var5 var12 var13 var4) (and (and (and (and (and (and (= var7 var0) (= var11 (TData nullAddr (hi var10)))) (= var8 var5)) (= var6 var12)) (= var2 var13)) (not (<= 0 (+ var4 (* (- 1) (getInt (read var0 var13))))))) (and (and (= var3 var7) (= var9 (TData (lo var11) nullAddr))) (= var1 var8))))) (inv_main0 var3 0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int) (var9 TData) (var10 Int) (var11 TData) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 TData) (var18 TData) (var19 Addr) (var20 TData) (var21 Addr) (var22 Addr) (var23 Addr)) (or (not (and (inv_main22 var1 var17 var12 var19 var23 var10) (and (and (and (and (and (and (and (= var7 var15) (= var11 (TData nullAddr (hi var18)))) (= var13 var14)) (= var16 var0)) (= var6 var22)) (and (<= 0 (+ var10 (* (- 1) (getInt (read var1 var23))))) (and (and (and (and (= var5 (write var1 var19 defObj)) (= var20 var17)) (= var8 var12)) (= var4 var19)) (= var21 var23)))) (and (and (and (and (= var15 (write var5 var21 defObj)) (= var18 var20)) (= var14 var8)) (= var0 var4)) (= var22 var21))) (and (and (= var3 var7) (= var9 (TData (lo var11) nullAddr))) (= var2 var13))))) (inv_main0 var3 0)))) +(assert (forall ((var0 TData) (var1 Int) (var2 Heap) (var3 Int) (var4 TData) (var5 TData) (var6 Heap) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main12 var2 var5 var1) (and (and (and (and (= var6 var8) (= var4 var0)) (= var9 1)) (= var7 (lo var0))) (and (and (= var8 (write var2 (hi var5) (O_Int 8))) (= var0 var5)) (= var3 var1))))) (inv_main18 var6 var4 var9 var7 (hi var4))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TData) (var3 TData) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Heap) (var9 Int) (var10 TData) (var11 Int) (var12 Heap) (var13 Addr) (var14 TData)) (or (not (and (inv_main3 var0 var10) (and (and (and (and (and (= var8 (newHeap (alloc var12 (O_Int var5)))) (= var2 var3)) (= var4 var9)) (= var1 (newAddr (alloc var12 (O_Int var5))))) (and (and (and (= var7 (newHeap (alloc var0 (O_Int var6)))) (= var14 var10)) (= var11 1)) (= var13 (newAddr (alloc var0 (O_Int var6)))))) (and (and (= var12 var7) (= var3 (TData var13 (hi var14)))) (= var9 var11))))) (inv_main10 var8 (TData (lo var2) var1) var4)))) +(assert (forall ((var0 Heap) (var1 TData) (var2 Addr) (var3 Int) (var4 Addr)) (or (not (inv_main18 var0 var1 var3 var2 var4)) (inv_main22 var0 var1 var3 var2 var4 (getInt (read var0 var2)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 TData)) (or (not (inv_main10 var1 var2 var0)) (inv_main12 (write var1 (lo var2) (O_Int 4)) var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 TData)) (not (and (inv_main10 var1 var2 var0) (not (is-O_Int (read var1 (lo var2)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 TData)) (not (and (inv_main12 var1 var2 var0) (not (is-O_Int (read var1 (hi var2)))))))) +(assert (forall ((var0 Heap) (var1 TData) (var2 Addr) (var3 Int) (var4 Addr)) (not (and (inv_main18 var0 var1 var3 var2 var4) (not (is-O_Int (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 TData) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main22 var0 var1 var4 var3 var5 var2) (not (is-O_Int (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main0 var0 var2) (not (= (read var0 var1) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/test-0019_1-2.i.smt2 b/heap-theory-benchmarks/array/test-0019_1-2.i.smt2 new file mode 100644 index 00000000..7f78df4c --- /dev/null +++ b/heap-theory-benchmarks/array/test-0019_1-2.i.smt2 @@ -0,0 +1,52 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TData 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TData (getTData TData)) (defObj)) + ((TData (lo Addr) (hi Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap TData Int) Bool) +(declare-fun inv_main12 (Heap TData Int) Bool) +(declare-fun inv_main18 (Heap TData TData Addr Addr) Bool) +(declare-fun inv_main22 (Heap TData TData Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap TData) Bool) +(assert (forall ((var0 Heap) (var1 TData)) (or (not (= var0 emptyHeap)) (inv_main3 var0 var1)))) +(assert (forall ((var0 TData) (var1 Int) (var2 Heap)) (or (not (inv_main10 var2 var0 var1)) (inv_main12 (write var2 (lo var0) (O_Int 4)) var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 TData) (var4 Heap) (var5 TData) (var6 Int) (var7 Heap) (var8 TData) (var9 TData)) (or (not (and (inv_main12 var7 var3 var6) (and (and (and (and (= var4 var0) (= var9 var8)) (= var5 var8)) (= var1 (lo var8))) (and (and (= var0 (write var7 (hi var3) (O_Int 8))) (= var8 var3)) (= var2 var6))))) (inv_main18 var4 var9 var5 var1 (hi var5))))) +(assert (forall ((var0 TData) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 TData) (var6 Heap) (var7 Int) (var8 TData) (var9 Addr) (var10 Int) (var11 Int) (var12 TData) (var13 Heap) (var14 Int)) (or (not (and (inv_main3 var13 var0) (and (and (and (and (and (= var6 (newHeap (alloc var4 (O_Int var7)))) (= var5 var8)) (= var2 var11)) (= var1 (newAddr (alloc var4 (O_Int var7))))) (and (and (and (= var3 (newHeap (alloc var13 (O_Int var14)))) (= var12 var0)) (= var10 1)) (= var9 (newAddr (alloc var13 (O_Int var14)))))) (and (and (= var4 var3) (= var8 (TData var9 (hi var12)))) (= var11 var10))))) (inv_main10 var6 (TData (lo var5) var1) var2)))) +(assert (forall ((var0 TData) (var1 TData) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (inv_main18 var4 var0 var1 var3 var2)) (inv_main22 var4 var0 var1 var3 var2 (getInt (read var4 var3)))))) +(assert (forall ((var0 TData) (var1 Int) (var2 Heap)) (not (and (inv_main10 var2 var0 var1) (not (is-O_Int (read var2 (lo var0)))))))) +(assert (forall ((var0 TData) (var1 Int) (var2 Heap)) (not (and (inv_main12 var2 var0 var1) (not (is-O_Int (read var2 (hi var0)))))))) +(assert (forall ((var0 TData) (var1 TData) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main18 var4 var0 var1 var3 var2) (not (is-O_Int (read var4 var3))))))) +(assert (forall ((var0 TData) (var1 TData) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main22 var4 var0 var1 var3 var2 var5) (not (is-O_Int (read var4 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/test-0232-1.i.smt2 b/heap-theory-benchmarks/array/test-0232-1.i.smt2 new file mode 100644 index 00000000..ba276b5e --- /dev/null +++ b/heap-theory-benchmarks/array/test-0232-1.i.smt2 @@ -0,0 +1,66 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (item 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_item (getitem item)) (defObj)) + ((item (next Addr) (data Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main10 (Heap Addr Int Addr) Bool) +(declare-fun inv_main12 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (and (inv_main14 var1 var0) (= var0 nullAddr))) (inv_main0 var1 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main10 var3 var1 var0 var2) (not (= (next (getitem (read var3 var2))) nullAddr)))) (inv_main12 var3 var1 var0 var2 (data (getitem (read var3 (next (getitem (read var3 var2)))))))))) +(assert (forall ((var0 Int) (var1 item) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main10 var4 var2 var0 var3) (= (next (getitem (read var4 var3))) nullAddr))) (inv_main12 (newHeap (alloc var4 (O_item var1))) var2 var0 var3 (newAddr (alloc var4 (O_item var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main12 var9 var5 var2 var7 var1) (and (not (= var4 nullAddr)) (and (= var0 0) (and (and (and (= var6 (write var9 var7 (O_item (item (next (getitem (read var9 var7))) var1)))) (= var8 var5)) (= var3 var2)) (= var4 var7)))))) (inv_main15 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Heap)) (or (not (and (inv_main15 var7 var2) (and (and (and (= var6 var7) (= var1 var2)) (= var4 (next (getitem (read var7 var2))))) (and (and (= var5 (write var6 var1 defObj)) (= var3 var1)) (= var0 var4))))) (inv_main14 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap)) (or (not (and (inv_main20 var7 var4) (and (and (and (= var6 var7) (= var0 var4)) (= var5 (next (getitem (read var7 var4))))) (and (and (= var1 (write var6 var0 defObj)) (= var3 var0)) (= var2 var5))))) (inv_main14 var1 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main12 var9 var5 var2 var7 var1) (and (= var4 nullAddr) (and (= var0 0) (and (and (and (= var6 (write var9 var7 (O_item (item (next (getitem (read var9 var7))) var1)))) (= var8 var5)) (= var3 var2)) (= var4 var7)))))) (inv_main14 var6 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main9 var3 var1 var0 var2)) (inv_main10 (write var3 var2 (O_item (item var1 (data (getitem (read var3 var2)))))) var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (and (inv_main14 var1 var0) (not (= var0 nullAddr)))) (inv_main20 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 item) (var3 Heap)) (or (not (and (inv_main2 var3) (and (= var0 var3) (= var1 nullAddr)))) (inv_main9 (newHeap (alloc var0 (O_item var2))) var1 1 (newAddr (alloc var0 (O_item var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 item) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main12 var10 var4 var1 var8 var0) (and (not (= var7 0)) (and (and (and (= var6 (write var10 var8 (O_item (item (next (getitem (read var10 var8))) var0)))) (= var9 var4)) (= var3 var1)) (= var2 var8))))) (inv_main9 (newHeap (alloc var6 (O_item var5))) var2 1 (newAddr (alloc var6 (O_item var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main9 var3 var1 var0 var2) (not (is-O_item (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main10 var3 var1 var0 var2) (not (is-O_item (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main10 var3 var1 var0 var2) (and (not (= (next (getitem (read var3 var2))) nullAddr)) (not (is-O_item (read var3 var2)))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main10 var3 var1 var0 var2) (and (not (= (next (getitem (read var3 var2))) nullAddr)) (not (is-O_item (read var3 (next (getitem (read var3 var2))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main12 var4 var2 var1 var3 var0) (not (is-O_item (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main15 var1 var0) (not (is-O_item (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main20 var1 var0) (not (is-O_item (read var1 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (not (and (inv_main0 var2 var0) (not (= (read var2 var1) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/test-0232-2.i.smt2 b/heap-theory-benchmarks/array/test-0232-2.i.smt2 new file mode 100644 index 00000000..3f05740d --- /dev/null +++ b/heap-theory-benchmarks/array/test-0232-2.i.smt2 @@ -0,0 +1,64 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (item 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_item (getitem item)) (defObj)) + ((item (next Addr) (data Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr Int Addr) Bool) +(declare-fun inv_main12 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 item)) (or (not (and (inv_main2 var2) (and (= var0 var2) (= var1 nullAddr)))) (inv_main9 (newHeap (alloc var0 (O_item var3))) var1 1 (newAddr (alloc var0 (O_item var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 item) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main12 var4 var10 var5 var9 var0) (and (not (= var8 0)) (and (and (and (= var1 (write var4 var9 (O_item (item (next (getitem (read var4 var9))) var0)))) (= var7 var10)) (= var3 var5)) (= var2 var9))))) (inv_main9 (newHeap (alloc var1 (O_item var6))) var2 1 (newAddr (alloc var1 (O_item var6))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr)) (or (not (inv_main9 var0 var3 var1 var2)) (inv_main10 (write var0 var2 (O_item (item var3 (data (getitem (read var0 var2)))))) var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main17 var3 var8 var1) (and (not (= var6 nullAddr)) (and (and (and (= var4 (write var3 (data (getitem (read var3 var8))) defObj)) (= var2 var8)) (= var7 var1)) (and (and (= var5 (write var4 var2 defObj)) (= var0 var2)) (= var6 var7)))))) (inv_main21 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main21 var1 var7) (and (not (= var4 nullAddr)) (and (and (and (= var6 var1) (= var5 var7)) (= var2 (next (getitem (read var1 var7))))) (and (and (= var3 (write var6 var5 defObj)) (= var0 var5)) (= var4 var2)))))) (inv_main21 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (and (inv_main12 var4 var9 var5 var7 var0) (and (not (= var3 nullAddr)) (and (= var3 nullAddr) (and (= var8 0) (and (and (and (= var1 (write var4 var7 (O_item (item (next (getitem (read var4 var7))) var0)))) (= var6 var9)) (= var2 var5)) (= var3 var7))))))) (inv_main21 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr)) (or (not (and (inv_main10 var0 var3 var1 var2) (not (= (next (getitem (read var0 var2))) nullAddr)))) (inv_main12 var0 var3 var1 var2 (data (getitem (read var0 (next (getitem (read var0 var2)))))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 item) (var3 Addr) (var4 Addr)) (or (not (and (inv_main10 var0 var4 var1 var3) (= (next (getitem (read var0 var3))) nullAddr))) (inv_main12 (newHeap (alloc var0 (O_item var2))) var4 var1 var3 (newAddr (alloc var0 (O_item var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (and (inv_main12 var4 var9 var5 var7 var0) (and (not (= var3 nullAddr)) (and (= var8 0) (and (and (and (= var1 (write var4 var7 (O_item (item (next (getitem (read var4 var7))) var0)))) (= var6 var9)) (= var2 var5)) (= var3 var7)))))) (inv_main15 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main15 var0 var1)) (inv_main17 var0 var1 (next (getitem (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr)) (not (and (inv_main9 var0 var3 var1 var2) (not (is-O_item (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr)) (not (and (inv_main10 var0 var3 var1 var2) (not (is-O_item (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr)) (not (and (inv_main10 var0 var3 var1 var2) (and (not (= (next (getitem (read var0 var2))) nullAddr)) (not (is-O_item (read var0 var2)))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr)) (not (and (inv_main10 var0 var3 var1 var2) (and (not (= (next (getitem (read var0 var2))) nullAddr)) (not (is-O_item (read var0 (next (getitem (read var0 var2))))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main12 var1 var4 var2 var3 var0) (not (is-O_item (read var1 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main15 var0 var1) (not (is-O_item (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main17 var1 var2 var0) (not (is-O_item (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main21 var0 var1) (not (is-O_item (read var0 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/test-0232-3.i.smt2 b/heap-theory-benchmarks/array/test-0232-3.i.smt2 new file mode 100644 index 00000000..c6e2963f --- /dev/null +++ b/heap-theory-benchmarks/array/test-0232-3.i.smt2 @@ -0,0 +1,68 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (item 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_item (getitem item)) (defObj)) + ((item (next Addr) (data Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr Int Addr) Bool) +(declare-fun inv_main12 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr)) (or (not (and (inv_main12 var0 var9 var8 var4 var2) (and (not (= var6 nullAddr)) (and (= var5 0) (and (and (and (= var7 (write var0 var4 (O_item (item (next (getitem (read var0 var4))) var2)))) (= var3 var9)) (= var1 var8)) (= var6 var4)))))) (inv_main15 var7 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main21 var1 var4) (and (= var0 nullAddr) (and (and (= var2 var1) (= var3 var4)) (= var0 (next (getitem (read var1 var4)))))))) (inv_main24 var2 var3 var0)))) +(assert (forall ((var0 item) (var1 Heap) (var2 Addr) (var3 Heap)) (or (not (and (inv_main2 var1) (and (= var3 var1) (= var2 nullAddr)))) (inv_main9 (newHeap (alloc var3 (O_item var0))) var2 1 (newAddr (alloc var3 (O_item var0))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 item) (var8 Heap) (var9 Int) (var10 Addr)) (or (not (and (inv_main12 var0 var10 var9 var5 var2) (and (not (= var4 0)) (and (and (and (= var8 (write var0 var5 (O_item (item (next (getitem (read var0 var5))) var2)))) (= var3 var10)) (= var1 var9)) (= var6 var5))))) (inv_main9 (newHeap (alloc var8 (O_item var7))) var6 1 (newAddr (alloc var8 (O_item var7))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main15 var0 var1)) (inv_main17 var0 var1 (next (getitem (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main17 var0 var8 var7) (and (not (= var4 nullAddr)) (and (and (and (= var2 (write var0 (data (getitem (read var0 var8))) defObj)) (= var3 var8)) (= var5 var7)) (and (and (= var1 (write var2 var3 defObj)) (= var6 var3)) (= var4 var5)))))) (inv_main21 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr)) (or (not (and (inv_main24 var0 var8 var5) (and (not (= var4 nullAddr)) (and (and (and (= var6 (write var7 var3 defObj)) (= var1 var3)) (= var4 var2)) (and (and (= var7 (write var0 (data (getitem (read var0 var8))) defObj)) (= var3 var8)) (= var2 var5)))))) (inv_main21 var6 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main21 var0 var7) (and (not (= var1 nullAddr)) (and (and (and (= var4 (write var3 var6 defObj)) (= var2 var6)) (= var1 var5)) (and (not (= var5 nullAddr)) (and (and (= var3 var0) (= var6 var7)) (= var5 (next (getitem (read var0 var7)))))))))) (inv_main21 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr)) (or (not (and (inv_main12 var0 var9 var8 var4 var2) (and (not (= var6 nullAddr)) (and (= var6 nullAddr) (and (= var5 0) (and (and (and (= var7 (write var0 var4 (O_item (item (next (getitem (read var0 var4))) var2)))) (= var3 var9)) (= var1 var8)) (= var6 var4))))))) (inv_main21 var7 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main10 var0 var3 var2 var1) (not (= (next (getitem (read var0 var1))) nullAddr)))) (inv_main12 var0 var3 var2 var1 (data (getitem (read var0 (next (getitem (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 item) (var2 Addr) (var3 Int) (var4 Addr)) (or (not (and (inv_main10 var0 var4 var3 var2) (= (next (getitem (read var0 var2))) nullAddr))) (inv_main12 (newHeap (alloc var0 (O_item var1))) var4 var3 var2 (newAddr (alloc var0 (O_item var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (inv_main9 var0 var3 var2 var1)) (inv_main10 (write var0 var1 (O_item (item var3 (data (getitem (read var0 var1)))))) var3 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main9 var0 var3 var2 var1) (not (is-O_item (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main10 var0 var3 var2 var1) (not (is-O_item (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main10 var0 var3 var2 var1) (and (not (= (next (getitem (read var0 var1))) nullAddr)) (not (is-O_item (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main10 var0 var3 var2 var1) (and (not (= (next (getitem (read var0 var1))) nullAddr)) (not (is-O_item (read var0 (next (getitem (read var0 var1))))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr)) (not (and (inv_main12 var0 var4 var3 var2 var1) (not (is-O_item (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main15 var0 var1) (not (is-O_item (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main17 var0 var2 var1) (not (is-O_item (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main21 var0 var1) (not (is-O_item (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main24 var0 var2 var1) (not (is-O_item (read var0 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/test-0232_1-1.i.smt2 b/heap-theory-benchmarks/array/test-0232_1-1.i.smt2 new file mode 100644 index 00000000..fe445ea6 --- /dev/null +++ b/heap-theory-benchmarks/array/test-0232_1-1.i.smt2 @@ -0,0 +1,73 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (item 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_item (getitem item)) (defObj)) + ((item (next Addr) (data Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main0 (Heap Int Int) Bool) +(declare-fun inv_main13 (Heap Int Addr Int Int Addr) Bool) +(declare-fun inv_main14 (Heap Int Addr Int Int Addr) Bool) +(declare-fun inv_main16 (Heap Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main2 (Heap Int) Bool) +(declare-fun inv_main20 (Heap Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Addr Int) Bool) +(declare-fun inv_main24 (Heap Int Addr Int) Bool) +(declare-fun inv_main30 (Heap Int Addr Int) Bool) +(assert (inv_main2 emptyHeap 0)) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (inv_main24 var1 var3 var2 var0)) (inv_main23 (write var1 (data (getitem (read var1 var2))) defObj) var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int)) (or (not (and (inv_main16 var1 var4 var11 var10 var9 var3 var7) (and (not (<= 0 (+ (* (- 1) (+ var13 1)) (- 1)))) (and (<= 0 (+ (+ var13 1) (- 1))) (and (= var0 0) (and (and (and (and (and (= var5 (write var1 var3 (O_item (item (next (getitem (read var1 var3))) var7)))) (= var6 var4)) (= var2 var11)) (= var13 var10)) (= var8 var9)) (= var12 var3))))))) (inv_main23 var5 var6 var12 (+ var13 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main16 var0 var6 var16 var15 var13 var2 var11) (and (not (<= 0 (+ (* (- 1) var5) (- 1)))) (and (<= 0 (+ var5 (- 1))) (and (and (and (= var3 0) (not (= var9 0))) (and (and (and (and (= var10 var7) (= var8 var4)) (= var14 var17)) (= var5 (+ var18 1))) (or (and (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1))) (= var3 1)) (and (not (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1)))) (= var3 0))))) (and (and (and (and (and (= var7 (write var0 var2 (O_item (item (next (getitem (read var0 var2))) var11)))) (= var4 var6)) (= var1 var16)) (= var18 var15)) (= var12 var13)) (= var17 var2))))))) (inv_main23 var10 var8 var14 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main13 var2 var5 var3 var1 var0 var4)) (inv_main14 (write var2 var4 (O_item (item var3 (data (getitem (read var2 var4)))))) var5 var3 var1 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main20 var1 var3 var2 var0) (<= 0 (+ var0 (- 1))))) (inv_main30 var1 var3 var2 var0)))) +(assert (forall ((var0 item) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int)) (or (not (and (inv_main16 var1 var5 var16 var14 var13 var4 var10) (and (and (and (not (= var15 0)) (not (= var8 0))) (and (and (and (and (= var11 var6) (= var9 var7)) (= var3 var17)) (= var18 (+ var19 1))) (or (and (<= 0 (+ (+ 20 (* (- 1) var7)) (- 1))) (= var15 1)) (and (not (<= 0 (+ (+ 20 (* (- 1) var7)) (- 1)))) (= var15 0))))) (and (and (and (and (and (= var6 (write var1 var4 (O_item (item (next (getitem (read var1 var4))) var10)))) (= var7 var5)) (= var2 var16)) (= var19 var14)) (= var12 var13)) (= var17 var4))))) (inv_main13 (newHeap (alloc var11 (O_item var0))) (+ var9 1) var3 var18 2 (newAddr (alloc var11 (O_item var0))))))) +(assert (forall ((var0 Heap) (var1 item) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main2 var3 var5) (and (and (= var0 var3) (= var4 var5)) (= var2 nullAddr)))) (inv_main13 (newHeap (alloc var0 (O_item var1))) (+ var4 1) var2 0 2 (newAddr (alloc var0 (O_item var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int)) (or (not (and (inv_main16 var1 var4 var11 var10 var9 var3 var7) (and (<= 0 (+ (* (- 1) (+ var13 1)) (- 1))) (and (<= 0 (+ (+ var13 1) (- 1))) (and (= var0 0) (and (and (and (and (and (= var5 (write var1 var3 (O_item (item (next (getitem (read var1 var3))) var7)))) (= var6 var4)) (= var2 var11)) (= var13 var10)) (= var8 var9)) (= var12 var3))))))) (inv_main24 var5 var6 var12 (+ var13 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main16 var0 var6 var16 var15 var13 var2 var11) (and (<= 0 (+ (* (- 1) var5) (- 1))) (and (<= 0 (+ var5 (- 1))) (and (and (and (= var3 0) (not (= var9 0))) (and (and (and (and (= var10 var7) (= var8 var4)) (= var14 var17)) (= var5 (+ var18 1))) (or (and (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1))) (= var3 1)) (and (not (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1)))) (= var3 0))))) (and (and (and (and (and (= var7 (write var0 var2 (O_item (item (next (getitem (read var0 var2))) var11)))) (= var4 var6)) (= var1 var16)) (= var18 var15)) (= var12 var13)) (= var17 var2))))))) (inv_main24 var10 var8 var14 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main20 var1 var3 var2 var0) (not (<= 0 (+ var0 (- 1)))))) (inv_main0 var1 var3 0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int)) (or (not (and (inv_main23 var1 var5 var12 var10) (and (and (and (and (and (= var7 var1) (= var6 var5)) (= var9 var12)) (= var4 var10)) (= var2 (next (getitem (read var1 var12))))) (and (and (and (and (= var0 (write var7 var9 defObj)) (= var8 var6)) (= var3 var9)) (= var13 var4)) (= var11 var2))))) (inv_main20 var0 var8 var11 (+ var13 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main30 var2 var4 var10 var8) (and (and (and (and (and (= var6 var2) (= var13 var4)) (= var9 var10)) (= var5 var8)) (= var3 (next (getitem (read var2 var10))))) (and (and (and (and (= var11 (write var6 var9 defObj)) (= var12 var13)) (= var7 var9)) (= var1 var5)) (= var0 var3))))) (inv_main20 var11 var12 var0 (+ var1 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int)) (or (not (and (inv_main16 var1 var4 var11 var10 var9 var3 var7) (and (not (<= 0 (+ (+ var13 1) (- 1)))) (and (= var0 0) (and (and (and (and (and (= var5 (write var1 var3 (O_item (item (next (getitem (read var1 var3))) var7)))) (= var6 var4)) (= var2 var11)) (= var13 var10)) (= var8 var9)) (= var12 var3)))))) (inv_main20 var5 var6 var12 (+ var13 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main16 var0 var6 var16 var15 var13 var2 var11) (and (not (<= 0 (+ var5 (- 1)))) (and (and (and (= var3 0) (not (= var9 0))) (and (and (and (and (= var10 var7) (= var8 var4)) (= var14 var17)) (= var5 (+ var18 1))) (or (and (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1))) (= var3 1)) (and (not (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1)))) (= var3 0))))) (and (and (and (and (and (= var7 (write var0 var2 (O_item (item (next (getitem (read var0 var2))) var11)))) (= var4 var6)) (= var1 var16)) (= var18 var15)) (= var12 var13)) (= var17 var2)))))) (inv_main20 var10 var8 var14 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main14 var2 var5 var3 var1 var0 var4) (not (= (next (getitem (read var2 var4))) nullAddr)))) (inv_main16 var2 var5 var3 var1 var0 var4 (data (getitem (read var2 (next (getitem (read var2 var4)))))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 item)) (or (not (and (inv_main14 var2 var5 var3 var1 var0 var4) (= (next (getitem (read var2 var4))) nullAddr))) (inv_main16 (newHeap (alloc var2 (O_item var6))) var5 var3 var1 var0 var4 (newAddr (alloc var2 (O_item var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main13 var2 var5 var3 var1 var0 var4) (not (is-O_item (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main14 var2 var5 var3 var1 var0 var4) (not (is-O_item (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main14 var2 var5 var3 var1 var0 var4) (and (not (= (next (getitem (read var2 var4))) nullAddr)) (not (is-O_item (read var2 var4)))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main14 var2 var5 var3 var1 var0 var4) (and (not (= (next (getitem (read var2 var4))) nullAddr)) (not (is-O_item (read var2 (next (getitem (read var2 var4))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main16 var3 var6 var4 var2 var1 var5 var0) (not (is-O_item (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main24 var1 var3 var2 var0) (not (is-O_item (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main23 var1 var3 var2 var0) (not (is-O_item (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main30 var1 var3 var2 var0) (not (is-O_item (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int)) (not (and (inv_main0 var0 var3 var1) (not (= (read var0 var2) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/tree-3.i.smt2 b/heap-theory-benchmarks/array/tree-3.i.smt2 new file mode 100644 index 00000000..e0658ee8 --- /dev/null +++ b/heap-theory-benchmarks/array/tree-3.i.smt2 @@ -0,0 +1,137 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (left Addr) (right Addr) (parent Addr) (value Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main13 (Heap Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main23 (Heap Addr Addr Int) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr) Bool) +(declare-fun inv_main66 (Heap Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main70 (Heap Addr Addr) Bool) +(declare-fun inv_main74 (Heap Addr Addr) Bool) +(declare-fun inv_main85 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main92 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main93 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main94 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main97 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main99 (Heap Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main92 var2 var0 var1 var3) (not (= (left (getnode (read var2 var1))) nullAddr)))) (inv_main94 var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main37 var2 var1 var0)) (inv_main38 (write var2 (left (getnode (read var2 var0))) (O_node (node (left (getnode (read var2 (left (getnode (read var2 var0)))))) nullAddr (parent (getnode (read var2 (left (getnode (read var2 var0)))))) (value (getnode (read var2 (left (getnode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main34 var2 var1 var0)) (inv_main37 (write var2 (left (getnode (read var2 var0))) (O_node (node nullAddr (right (getnode (read var2 (left (getnode (read var2 var0)))))) (parent (getnode (read var2 (left (getnode (read var2 var0)))))) (value (getnode (read var2 (left (getnode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main94 var2 var0 var1 var3)) (inv_main93 (write var2 (left (getnode (read var2 var1))) defObj) var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main92 var2 var0 var1 var3) (= (left (getnode (read var2 var1))) nullAddr))) (inv_main93 var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main13 var2 var1 var0)) (inv_main16 (write var2 var0 (O_node (node nullAddr (right (getnode (read var2 var0))) (parent (getnode (read var2 var0))) (value (getnode (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main70 var4 var1 var3) (and (not (= var5 nullAddr)) (and (and (and (= var2 var4) (= var6 var1)) (= var0 var3)) (= var5 (parent (getnode (read var4 var3)))))))) (inv_main58 var2 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main27 var2 var1 var0) (and (and (not (= var1 nullAddr)) (not (= var1 nullAddr))) (and (not (= var1 nullAddr)) (= var0 nullAddr))))) (inv_main58 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main39 var2 var1 var0)) (inv_main40 (write var2 (left (getnode (read var2 var0))) (O_node (node (left (getnode (read var2 (left (getnode (read var2 var0)))))) (right (getnode (read var2 (left (getnode (read var2 var0)))))) var0 (value (getnode (read var2 (left (getnode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main59 var2 var0 var1) (= (value (getnode (read var2 var1))) 0))) (inv_main74 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main97 var6 var0 var2 var7) (and (and (and (= var4 (write var6 (right (getnode (read var6 var2))) defObj)) (= var5 var0)) (= var3 var2)) (= var1 var7)))) (inv_main99 var4 var5 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main93 var2 var0 var1 var3) (= (right (getnode (read var2 var1))) nullAddr))) (inv_main99 var2 var0 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Heap)) (or (not (and (inv_main19 var6 var3 var2) (and (= var4 0) (and (and (= var5 (write var6 var3 (O_node (node (left (getnode (read var6 var3))) (right (getnode (read var6 var3))) var2 (value (getnode (read var6 var3))))))) (= var0 var3)) (= var1 var2))))) (inv_main23 var5 var0 var1 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main19 var6 var4 var3) (and (not (= var2 0)) (and (and (= var1 (write var6 var4 (O_node (node (left (getnode (read var6 var4))) (right (getnode (read var6 var4))) var3 (value (getnode (read var6 var4))))))) (= var0 var4)) (= var5 var3))))) (inv_main23 var1 var0 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int)) (or (not (and (inv_main16 var4 var3 var2) (and (= var6 0) (and (= var1 nullAddr) (and (and (= var0 (write var4 var2 (O_node (node (left (getnode (read var4 var2))) var3 (parent (getnode (read var4 var2))) (value (getnode (read var4 var2))))))) (= var1 var3)) (= var5 var2)))))) (inv_main23 var0 var1 var5 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int)) (or (not (and (inv_main16 var4 var3 var2) (and (not (= var6 0)) (and (= var1 nullAddr) (and (and (= var0 (write var4 var2 (O_node (node (left (getnode (read var4 var2))) var3 (parent (getnode (read var4 var2))) (value (getnode (read var4 var2))))))) (= var1 var3)) (= var5 var2)))))) (inv_main23 var0 var1 var5 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Heap)) (or (not (and (inv_main23 var5 var3 var2 var4) (and (and (and (= var7 (write var5 var2 (O_node (node (left (getnode (read var5 var2))) (right (getnode (read var5 var2))) (parent (getnode (read var5 var2))) var4)))) (= var6 var3)) (= var1 var2)) (= var0 var4)))) (inv_main7 var7 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (and (inv_main2 var2) (and (= var0 var2) (= var1 nullAddr)))) (inv_main7 var0 var1 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Int)) (or (not (and (inv_main60 var4 var0 var3) (and (not (= var6 42)) (and (and (and (= var5 var4) (= var1 var0)) (= var2 var3)) (= var6 (value (getnode (read var4 (left (getnode (read var4 var3))))))))))) (inv_main66 var5 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main27 var2 var1 var0) (and (= var1 nullAddr) (and (not (= var1 nullAddr)) (= var0 nullAddr))))) (inv_main54 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main38 var2 var1 var0)) (inv_main39 (write var2 (left (getnode (read var2 var0))) (O_node (node (left (getnode (read var2 (left (getnode (read var2 var0)))))) (right (getnode (read var2 (left (getnode (read var2 var0)))))) (parent (getnode (read var2 (left (getnode (read var2 var0)))))) 42))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main16 var5 var3 var2) (and (not (= var4 nullAddr)) (and (and (= var1 (write var5 var2 (O_node (node (left (getnode (read var5 var2))) var3 (parent (getnode (read var5 var2))) (value (getnode (read var5 var2))))))) (= var4 var3)) (= var0 var2))))) (inv_main19 var1 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main58 var2 var0 var1) (not (= (left (getnode (read var2 var1))) nullAddr)))) (inv_main60 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main86 var5 var0 var1 var7) (and (and (and (and (= var8 var5) (= var6 var0)) (= var3 var1)) (= var2 var7)) (= var4 (right (getnode (read var5 var1))))))) (inv_main85 var8 var6 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main70 var7 var1 var6) (and (and (and (and (= var10 var4) (= var5 var9)) (= var3 var9)) (= var2 nullAddr)) (and (= var8 nullAddr) (and (and (and (= var4 var7) (= var9 var1)) (= var0 var6)) (= var8 (parent (getnode (read var7 var6))))))))) (inv_main85 var10 var5 var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var4 var3 var2) (and (and (and (and (= var0 var4) (= var1 var3)) (= var6 var3)) (= var5 nullAddr)) (and (and (= var3 nullAddr) (not (= var3 nullAddr))) (and (not (= var3 nullAddr)) (= var2 nullAddr)))))) (inv_main85 var0 var1 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main59 var2 var0 var1) (not (= (value (getnode (read var2 var1))) 0)))) (inv_main70 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main93 var2 var0 var1 var3) (not (= (right (getnode (read var2 var1))) nullAddr)))) (inv_main97 var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main85 var6 var0 var3 var7) (and (not (= var5 nullAddr)) (and (and (and (and (= var8 var6) (= var1 var0)) (= var2 var3)) (= var4 var7)) (= var5 (right (getnode (read var6 var3)))))))) (inv_main86 var8 var1 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main33 var6 var5 var4 var1) (and (not (= var3 nullAddr)) (and (and (= var0 (write var6 var4 (O_node (node var1 (right (getnode (read var6 var4))) (parent (getnode (read var6 var4))) (value (getnode (read var6 var4))))))) (= var2 var5)) (= var3 var4))))) (inv_main34 var0 var2 var3)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main27 var3 var2 var1) (not (= var1 nullAddr)))) (inv_main33 (newHeap (alloc var3 (O_node var0))) var2 var1 (newAddr (alloc var3 (O_node var0))))))) +(assert (forall ((var0 node) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main7 var6 var4 var3) (and (not (= var7 nullAddr)) (and (and (and (and (= var2 (newHeap (alloc var6 (O_node var0)))) (= var1 var4)) (= var5 var3)) (= var7 (newAddr (alloc var6 (O_node var0))))) (not (= var8 0)))))) (inv_main13 var2 var1 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main7 var3 var2 var1) (and (not (= var1 nullAddr)) (= var0 0)))) (inv_main28 var3 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main58 var2 var0 var1) (= (left (getnode (read var2 var1))) nullAddr))) (inv_main59 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main60 var5 var0 var4) (and (= var1 42) (and (and (and (= var3 var5) (= var2 var0)) (= var6 var4)) (= var1 (value (getnode (read var5 (left (getnode (read var5 var4))))))))))) (inv_main59 var3 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main28 var2 var1 var0)) (inv_main27 (write var2 var0 (O_node (node (left (getnode (read var2 var0))) (right (getnode (read var2 var0))) nullAddr (value (getnode (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main40 var6 var5 var4) (and (and (and (= var3 var6) (= var0 var5)) (= var2 var4)) (= var1 (right (getnode (read var6 var4))))))) (inv_main27 var3 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main7 var3 var2 var1) (and (= var1 nullAddr) (= var0 0)))) (inv_main27 var3 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main99 var6 var0 var2 var8) (and (not (= var5 nullAddr)) (and (and (and (and (= var1 var6) (= var3 var0)) (= var4 var2)) (= var7 var8)) (= var5 (parent (getnode (read var6 var2)))))))) (inv_main92 var1 var3 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main85 var6 var0 var2 var7) (and (not (= var8 nullAddr)) (and (= var4 nullAddr) (and (and (and (and (= var3 var6) (= var5 var0)) (= var8 var2)) (= var1 var7)) (= var4 (right (getnode (read var6 var2))))))))) (inv_main92 var3 var5 var8 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main13 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main16 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main19 var2 var1 var0) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main23 var3 var1 var0 var2) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main28 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main33 var3 var2 var1 var0) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main34 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main34 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main38 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main38 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main39 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main39 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main40 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main54 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main58 var2 var0 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main60 var2 var0 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main60 var2 var0 var1) (not (is-O_node (read var2 (left (getnode (read var2 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main66 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main59 var2 var0 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main74 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main70 var2 var0 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main85 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main86 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main92 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main94 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main93 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main97 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main99 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/tree-4.i.smt2 b/heap-theory-benchmarks/array/tree-4.i.smt2 new file mode 100644 index 00000000..b8e556d9 --- /dev/null +++ b/heap-theory-benchmarks/array/tree-4.i.smt2 @@ -0,0 +1,135 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (left Addr) (right Addr) (parent Addr) (value Int))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main13 (Heap Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main25 (Heap Addr Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr) Bool) +(declare-fun inv_main63 (Heap Addr Addr) Bool) +(declare-fun inv_main67 (Heap Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr) Bool) +(declare-fun inv_main82 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main89 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main90 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main91 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main94 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap)) (or (not (and (inv_main30 var6 var3 var2 var0) (and (not (= var1 nullAddr)) (and (and (= var5 (write var6 var2 (O_node (node var0 (right (getnode (read var6 var2))) (parent (getnode (read var6 var2))) (value (getnode (read var6 var2))))))) (= var4 var3)) (= var1 var2))))) (inv_main31 var5 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main82 var6 var4 var2 var8) (and (not (= var1 nullAddr)) (and (and (and (and (= var3 var6) (= var7 var4)) (= var0 var2)) (= var5 var8)) (= var1 (right (getnode (read var6 var2)))))))) (inv_main83 var3 var7 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 node) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main7 var5 var2 var1) (and (not (= var7 nullAddr)) (and (and (and (and (= var8 (newHeap (alloc var5 (O_node var4)))) (= var0 var2)) (= var6 var1)) (= var7 (newAddr (alloc var5 (O_node var4))))) (not (= var3 0)))))) (inv_main13 var8 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main24 var2 var1 var0) (and (= var1 nullAddr) (and (not (= var1 nullAddr)) (= var0 nullAddr))))) (inv_main51 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main31 var2 var1 var0)) (inv_main34 (write var2 (left (getnode (read var2 var0))) (O_node (node nullAddr (right (getnode (read var2 (left (getnode (read var2 var0)))))) (parent (getnode (read var2 (left (getnode (read var2 var0)))))) (value (getnode (read var2 (left (getnode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int)) (or (not (and (inv_main22 var6 var4 var3 var7) (and (and (and (= var0 (write var6 var3 (O_node (node (left (getnode (read var6 var3))) (right (getnode (read var6 var3))) (parent (getnode (read var6 var3))) var7)))) (= var1 var4)) (= var2 var3)) (= var5 var7)))) (inv_main7 var0 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap)) (or (not (and (inv_main2 var1) (and (= var2 var1) (= var0 nullAddr)))) (inv_main7 var2 var0 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main67 var5 var1 var0) (and (not (= var6 nullAddr)) (and (and (and (= var3 var5) (= var4 var1)) (= var2 var0)) (= var6 (parent (getnode (read var5 var0)))))))) (inv_main55 var3 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main24 var2 var1 var0) (and (and (not (= var1 nullAddr)) (not (= var1 nullAddr))) (and (not (= var1 nullAddr)) (= var0 nullAddr))))) (inv_main55 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main90 var2 var1 var0 var3) (not (= (right (getnode (read var2 var0))) nullAddr)))) (inv_main94 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr)) (or (not (and (inv_main57 var5 var3 var0) (and (not (= var4 42)) (and (and (and (= var2 var5) (= var6 var3)) (= var1 var0)) (= var4 (value (getnode (read var5 (left (getnode (read var5 var0))))))))))) (inv_main63 var2 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main89 var2 var1 var0 var3) (not (= (left (getnode (read var2 var0))) nullAddr)))) (inv_main91 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main91 var2 var1 var0 var3)) (inv_main90 (write var2 (left (getnode (read var2 var0))) defObj) var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main89 var2 var1 var0 var3) (= (left (getnode (read var2 var0))) nullAddr))) (inv_main90 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main96 var7 var2 var0 var8) (and (not (= var3 nullAddr)) (and (and (and (and (= var4 var7) (= var5 var2)) (= var6 var0)) (= var1 var8)) (= var3 (parent (getnode (read var7 var0)))))))) (inv_main89 var4 var5 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main82 var5 var3 var1 var8) (and (not (= var2 nullAddr)) (and (= var0 nullAddr) (and (and (and (and (= var6 var5) (= var4 var3)) (= var2 var1)) (= var7 var8)) (= var0 (right (getnode (read var5 var1))))))))) (inv_main89 var6 var4 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main55 var2 var1 var0) (= (left (getnode (read var2 var0))) nullAddr))) (inv_main56 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (inv_main57 var5 var4 var1) (and (= var6 42) (and (and (and (= var0 var5) (= var2 var4)) (= var3 var1)) (= var6 (value (getnode (read var5 (left (getnode (read var5 var1))))))))))) (inv_main56 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main56 var2 var1 var0) (= (value (getnode (read var2 var0))) 0))) (inv_main71 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main35 var2 var1 var0)) (inv_main36 (write var2 (left (getnode (read var2 var0))) (O_node (node (left (getnode (read var2 (left (getnode (read var2 var0)))))) (right (getnode (read var2 (left (getnode (read var2 var0)))))) (parent (getnode (read var2 (left (getnode (read var2 var0)))))) 42))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main13 var2 var1 var0)) (inv_main16 (write var2 var0 (O_node (node nullAddr (right (getnode (read var2 var0))) (parent (getnode (read var2 var0))) (value (getnode (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr)) (or (not (and (inv_main94 var5 var4 var3 var7) (and (and (and (= var2 (write var5 (right (getnode (read var5 var3))) defObj)) (= var0 var4)) (= var1 var3)) (= var6 var7)))) (inv_main96 var2 var0 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main90 var2 var1 var0 var3) (= (right (getnode (read var2 var0))) nullAddr))) (inv_main96 var2 var1 var0 var0)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main24 var3 var2 var1) (not (= var1 nullAddr)))) (inv_main30 (newHeap (alloc var3 (O_node var0))) var2 var1 (newAddr (alloc var3 (O_node var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main55 var2 var1 var0) (not (= (left (getnode (read var2 var0))) nullAddr)))) (inv_main57 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main7 var3 var2 var1) (and (not (= var1 nullAddr)) (= var0 0)))) (inv_main25 var3 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main56 var2 var1 var0) (not (= (value (getnode (read var2 var0))) 0)))) (inv_main67 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main83 var6 var3 var1 var8) (and (and (and (and (= var0 var6) (= var2 var3)) (= var4 var1)) (= var7 var8)) (= var5 (right (getnode (read var6 var1))))))) (inv_main82 var0 var2 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main67 var8 var3 var0) (and (and (and (and (= var10 var5) (= var1 var7)) (= var2 var7)) (= var6 nullAddr)) (and (= var9 nullAddr) (and (and (and (= var5 var8) (= var7 var3)) (= var4 var0)) (= var9 (parent (getnode (read var8 var0))))))))) (inv_main82 var10 var1 var2 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main24 var5 var3 var2) (and (and (and (and (= var0 var5) (= var1 var3)) (= var6 var3)) (= var4 nullAddr)) (and (and (= var3 nullAddr) (not (= var3 nullAddr))) (and (not (= var3 nullAddr)) (= var2 nullAddr)))))) (inv_main82 var0 var1 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main36 var2 var1 var0)) (inv_main37 (write var2 (left (getnode (read var2 var0))) (O_node (node (left (getnode (read var2 (left (getnode (read var2 var0)))))) (right (getnode (read var2 (left (getnode (read var2 var0)))))) var0 (value (getnode (read var2 (left (getnode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main25 var2 var1 var0)) (inv_main24 (write var2 var0 (O_node (node (left (getnode (read var2 var0))) (right (getnode (read var2 var0))) nullAddr (value (getnode (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main37 var2 var1 var0) (and (and (and (= var6 var2) (= var4 var1)) (= var5 var0)) (= var3 (right (getnode (read var2 var0))))))) (inv_main24 var6 var4 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main7 var3 var2 var1) (and (= var1 nullAddr) (= var0 0)))) (inv_main24 var3 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main34 var2 var1 var0)) (inv_main35 (write var2 (left (getnode (read var2 var0))) (O_node (node (left (getnode (read var2 (left (getnode (read var2 var0)))))) nullAddr (parent (getnode (read var2 (left (getnode (read var2 var0)))))) (value (getnode (read var2 (left (getnode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap)) (or (not (and (inv_main16 var4 var3 var2) (and (not (= var1 nullAddr)) (and (and (= var5 (write var4 var2 (O_node (node (left (getnode (read var4 var2))) var3 (parent (getnode (read var4 var2))) (value (getnode (read var4 var2))))))) (= var1 var3)) (= var0 var2))))) (inv_main19 var5 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main19 var6 var4 var3) (and (and (= var2 (write var6 var4 (O_node (node (left (getnode (read var6 var4))) (right (getnode (read var6 var4))) var3 (value (getnode (read var6 var4))))))) (= var1 var4)) (= var5 var3)))) (inv_main22 var2 var1 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (inv_main16 var5 var4 var3) (and (= var1 nullAddr) (and (and (= var2 (write var5 var3 (O_node (node (left (getnode (read var5 var3))) var4 (parent (getnode (read var5 var3))) (value (getnode (read var5 var3))))))) (= var1 var4)) (= var0 var3))))) (inv_main22 var2 var1 var0 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main13 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main16 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main19 var2 var1 var0) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (not (and (inv_main22 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main25 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main30 var3 var2 var1 var0) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main31 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main31 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main34 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main34 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main35 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main35 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main36 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main36 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main51 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main55 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main57 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main57 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main63 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main56 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main71 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main67 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main82 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main83 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main89 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main91 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main90 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main94 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main96 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/tree_cnstr.i.smt2 b/heap-theory-benchmarks/array/tree_cnstr.i.smt2 new file mode 100644 index 00000000..0944d9b0 --- /dev/null +++ b/heap-theory-benchmarks/array/tree_cnstr.i.smt2 @@ -0,0 +1,126 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TreeNode 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TreeNode (getTreeNode TreeNode)) (defObj)) + ((TreeNode (left Addr) (right Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main35 var2 var1 var0)) (inv_main37 (write var2 (right (getTreeNode (read var2 var0))) (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var2 (right (getTreeNode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main5 var2 var1 var0)) (inv_main6 (write var2 var1 (O_TreeNode (TreeNode (left (getTreeNode (read var2 var1))) nullAddr))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main37 var2 var1 var0)) (inv_main6 (write var2 (right (getTreeNode (read var2 var0))) (O_TreeNode (TreeNode (left (getTreeNode (read var2 (right (getTreeNode (read var2 var0)))))) nullAddr))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap)) (or (not (and (inv_main21 var5 var4 var3) (and (= var2 0) (and (and (and (= var6 var5) (= var0 var4)) (= var1 var3)) (or (and (= (right (getTreeNode (read var5 var3))) nullAddr) (= var2 1)) (and (not (= (right (getTreeNode (read var5 var3))) nullAddr)) (= var2 0))))))) (inv_main6 var6 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap)) (or (not (and (inv_main21 var4 var3 var2) (and (= var0 0) (and (not (= var5 0)) (and (and (and (= var7 var4) (= var1 var3)) (= var6 var2)) (or (and (= (right (getTreeNode (read var4 var2))) nullAddr) (= var5 1)) (and (not (= (right (getTreeNode (read var4 var2))) nullAddr)) (= var5 0)))))))) (inv_main6 var7 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main10 var2 var1 var0)) (inv_main13 var2 var1 var0 (left (getTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main50 var3 var2 var1 var0) (and (and (and (and (= var4 var3) (= var8 var2)) (= var6 var1)) (= var5 var0)) (= var7 (left (getTreeNode (read var3 var1))))))) (inv_main43 var4 var8 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main51 var4 var3 var2 var0) (and (and (and (and (= var6 var4) (= var7 var3)) (= var1 var2)) (= var8 var0)) (= var5 (right (getTreeNode (read var4 var2))))))) (inv_main43 var6 var7 var5 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Heap)) (or (not (and (inv_main6 var7 var6 var5) (and (and (and (not (= var8 nullAddr)) (and (and (and (= var10 var9) (= var1 var8)) (= var0 var4)) (= var3 nullAddr))) (= var2 0)) (and (and (= var9 var7) (= var8 var6)) (= var4 nullAddr))))) (inv_main43 var10 var1 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr)) (or (not (and (inv_main57 var3 var9 var10 var1) (and (and (and (not (= var0 nullAddr)) (and (and (and (= var14 var2) (= var11 var0)) (= var13 var6)) (= var15 nullAddr))) (and (and (and (= var2 (write var5 var7 defObj)) (= var0 var12)) (= var6 var7)) (= var4 var8))) (and (and (and (= var5 (write var3 var1 (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var3 var1))))))) (= var12 var9)) (= var7 var10)) (= var8 var1))))) (inv_main43 var14 var11 var11 var15)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main58 var4 var11 var12 var0) (and (and (and (not (= var7 nullAddr)) (and (and (and (= var3 var5) (= var13 var7)) (= var8 var1)) (= var2 nullAddr))) (and (and (and (= var5 (write var10 var15 defObj)) (= var7 var6)) (= var1 var15)) (= var9 var14))) (and (and (and (= var10 (write var4 var0 (O_TreeNode (TreeNode (left (getTreeNode (read var4 var0))) nullAddr)))) (= var6 var11)) (= var15 var12)) (= var14 var0))))) (inv_main43 var3 var13 var13 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Heap) (var21 Addr)) (or (not (and (inv_main46 var3 var17 var18 var0 var12) (and (and (and (and (not (= var14 nullAddr)) (and (and (and (= var4 var16) (= var10 var14)) (= var11 var1)) (= var21 nullAddr))) (and (and (and (= var16 (write var20 var15 defObj)) (= var14 var9)) (= var1 var15)) (= var2 var7))) (and (= var19 nullAddr) (and (= var8 0) (and (= var12 nullAddr) (and (and (and (and (= var5 var3) (= var6 var17)) (= var13 var18)) (= var19 var0)) (= var8 (right (getTreeNode (read var3 var18))))))))) (and (and (and (= var20 var5) (= var9 nullAddr)) (= var15 var13)) (= var7 var19))))) (inv_main43 var4 var10 var10 var21)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main4 var2 var1 var0)) (inv_main5 (write var2 var1 (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var2 var1)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main55 var3 var2 var1 var0) (not (= var1 (left (getTreeNode (read var3 var0))))))) (inv_main58 var3 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main28 var2 var1 var0 var3)) (inv_main27 (write var2 var0 (O_TreeNode (TreeNode var3 (right (getTreeNode (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main29 var2 var1 var0)) (inv_main21 (write var2 (left (getTreeNode (read var2 var0))) (O_TreeNode (TreeNode (left (getTreeNode (read var2 (left (getTreeNode (read var2 var0)))))) nullAddr))) var1 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main11 var5 var4 var3) (and (= var1 0) (and (and (and (= var0 var5) (= var2 var4)) (= var6 var3)) (or (and (= (left (getTreeNode (read var5 var3))) nullAddr) (= var1 1)) (and (not (= (left (getTreeNode (read var5 var3))) nullAddr)) (= var1 0))))))) (inv_main21 var0 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main11 var7 var6 var5) (and (= var1 0) (and (not (= var2 0)) (and (and (and (= var3 var7) (= var0 var6)) (= var4 var5)) (or (and (= (left (getTreeNode (read var7 var5))) nullAddr) (= var2 1)) (and (not (= (left (getTreeNode (read var7 var5))) nullAddr)) (= var2 0)))))))) (inv_main21 var3 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main49 var3 var2 var1 var0) (= (left (getTreeNode (read var3 var1))) nullAddr))) (inv_main51 var3 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main49 var3 var2 var1 var0) (not (= (left (getTreeNode (read var3 var1))) nullAddr)))) (inv_main50 var3 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main13 var3 var2 var1 var0) (= var0 nullAddr))) (inv_main11 var3 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main13 var6 var5 var4 var0) (and (= var7 0) (and (not (= var0 nullAddr)) (and (and (and (= var2 var6) (= var1 var5)) (= var3 var4)) (= var7 (right (getTreeNode (read var6 var4))))))))) (inv_main11 var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main43 var3 var2 var1 var0)) (inv_main46 var3 var2 var1 var0 (left (getTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main46 var5 var4 var3 var2 var0) (and (not (= var6 nullAddr)) (and (= var9 0) (and (= var0 nullAddr) (and (and (and (and (= var7 var5) (= var8 var4)) (= var1 var3)) (= var6 var2)) (= var9 (right (getTreeNode (read var5 var3)))))))))) (inv_main55 var7 var8 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main13 var7 var6 var5 var0) (and (not (= var3 0)) (and (not (= var8 0)) (and (not (= var0 nullAddr)) (and (and (and (= var2 var7) (= var1 var6)) (= var4 var5)) (= var8 (right (getTreeNode (read var7 var5)))))))))) (inv_main16 var2 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main55 var3 var2 var1 var0) (= var1 (left (getTreeNode (read var3 var0)))))) (inv_main57 var3 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 TreeNode) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main21 var4 var3 var2) (and (not (= var0 0)) (and (not (= var6 0)) (and (and (and (= var8 var4) (= var1 var3)) (= var7 var2)) (or (and (= (right (getTreeNode (read var4 var2))) nullAddr) (= var6 1)) (and (not (= (right (getTreeNode (read var4 var2))) nullAddr)) (= var6 0)))))))) (inv_main36 (newHeap (alloc var8 (O_TreeNode var5))) var1 var7 (newAddr (alloc var8 (O_TreeNode var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main36 var3 var2 var1 var0)) (inv_main35 (write var3 var1 (O_TreeNode (TreeNode (left (getTreeNode (read var3 var1))) var0))) var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main46 var4 var3 var2 var1 var0) (not (= var0 nullAddr)))) (inv_main49 var4 var3 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main46 var5 var4 var3 var2 var0) (and (not (= var9 0)) (and (= var0 nullAddr) (and (and (and (and (= var7 var5) (= var8 var4)) (= var1 var3)) (= var6 var2)) (= var9 (right (getTreeNode (read var5 var3))))))))) (inv_main49 var7 var8 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main27 var2 var1 var0)) (inv_main29 (write var2 (left (getTreeNode (read var2 var0))) (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var2 (left (getTreeNode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 TreeNode) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (inv_main11 var7 var6 var5) (and (not (= var8 0)) (and (not (= var2 0)) (and (and (and (= var3 var7) (= var0 var6)) (= var4 var5)) (or (and (= (left (getTreeNode (read var7 var5))) nullAddr) (= var2 1)) (and (not (= (left (getTreeNode (read var7 var5))) nullAddr)) (= var2 0)))))))) (inv_main28 (newHeap (alloc var3 (O_TreeNode var1))) var0 var4 (newAddr (alloc var3 (O_TreeNode var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main13 var6 var5 var4 var0) (and (= var7 0) (and (not (= var8 0)) (and (not (= var0 nullAddr)) (and (and (and (= var2 var6) (= var1 var5)) (= var3 var4)) (= var8 (right (getTreeNode (read var6 var4)))))))))) (inv_main17 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main16 var4 var3 var2) (and (and (and (= var0 var4) (= var1 var3)) (= var6 var2)) (= var5 (left (getTreeNode (read var4 var2))))))) (inv_main10 var0 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main17 var4 var3 var2) (and (and (and (= var0 var4) (= var1 var3)) (= var6 var2)) (= var5 (right (getTreeNode (read var4 var2))))))) (inv_main10 var0 var1 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main6 var3 var2 var1) (not (= var0 0)))) (inv_main10 var3 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 TreeNode)) (or (not (inv_main3 var1)) (inv_main4 (newHeap (alloc var1 (O_TreeNode var2))) (newAddr (alloc var1 (O_TreeNode var2))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main4 var2 var1 var0) (not (is-O_TreeNode (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main5 var2 var1 var0) (not (is-O_TreeNode (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main10 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main13 var3 var2 var1 var0) (and (not (= var0 nullAddr)) (not (is-O_TreeNode (read var3 var1)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main16 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main17 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main11 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main28 var2 var1 var0 var3) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main27 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main27 var2 var1 var0) (not (is-O_TreeNode (read var2 (left (getTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main29 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main29 var2 var1 var0) (not (is-O_TreeNode (read var2 (left (getTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main21 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main36 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main35 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main35 var2 var1 var0) (not (is-O_TreeNode (read var2 (right (getTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var1 var0) (not (is-O_TreeNode (read var2 (right (getTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main43 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main46 var4 var3 var2 var1 var0) (and (= var0 nullAddr) (not (is-O_TreeNode (read var4 var2)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main49 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main50 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main51 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main55 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main57 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main58 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/tree_max.c.smt2 b/heap-theory-benchmarks/array/tree_max.c.smt2 new file mode 100644 index 00000000..047c7321 --- /dev/null +++ b/heap-theory-benchmarks/array/tree_max.c.smt2 @@ -0,0 +1,156 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (left Addr) (right Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun check0 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check1 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check10 (Heap Addr Int Heap Addr Int Addr Int) Bool) +(declare-fun check2 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check3 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check4 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check5 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check6 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check7 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check8 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check9 (Heap Addr Int Heap Addr Int Addr Int) Bool) +(declare-fun check_post (Heap Addr Int Heap) Bool) +(declare-fun check_pre (Heap Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main3 (Heap) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Addr Int) Bool) +(declare-fun max0 (Heap Addr Heap Addr) Bool) +(declare-fun max1 (Heap Addr Heap Addr Int) Bool) +(declare-fun max10 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max11 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max12 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max13 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max14 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max15 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max3 (Heap Addr Heap Addr) Bool) +(declare-fun max4 (Heap Addr Heap Addr) Bool) +(declare-fun max5 (Heap Addr Heap Addr Int) Bool) +(declare-fun max6 (Heap Addr Heap Addr Int Addr) Bool) +(declare-fun max7 (Heap Addr Heap Addr Int Int) Bool) +(declare-fun max8 (Heap Addr Heap Addr Int Int Addr) Bool) +(declare-fun max9 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max_post (Heap Addr Heap Int) Bool) +(declare-fun max_pre (Heap Addr) Bool) +(declare-fun nondet_tree0 (Heap Heap) Bool) +(declare-fun nondet_tree1 (Heap Heap Addr) Bool) +(declare-fun nondet_tree10 (Heap Heap Addr) Bool) +(declare-fun nondet_tree11 (Heap Heap Addr) Bool) +(declare-fun nondet_tree12 (Heap Heap Addr) Bool) +(declare-fun nondet_tree3 (Heap Heap) Bool) +(declare-fun nondet_tree4 (Heap Heap) Bool) +(declare-fun nondet_tree5 (Heap Heap) Bool) +(declare-fun nondet_tree6 (Heap Heap Addr) Bool) +(declare-fun nondet_tree7 (Heap Heap Addr) Bool) +(declare-fun nondet_tree8 (Heap Heap Addr) Bool) +(declare-fun nondet_tree9 (Heap Heap Addr) Bool) +(declare-fun nondet_tree_post (Heap Heap Addr) Bool) +(declare-fun nondet_tree_pre (Heap) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap)) (or (not (inv_main2 var0)) (inv_main3 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap)) (or (not (and (inv_main3 var2) (nondet_tree_post var2 var1 var0))) (inv_main7 var1 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var2 var0) (max_post var4 var0 var1 var3))) (inv_main9 var1 var2 var3 var2 var3)))) +(assert (forall ((var0 Heap)) (or (not (inv_main3 var0)) (nondet_tree_pre var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main7 var2 var1 var0)) (max_pre var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int)) (or (not (inv_main9 var3 var1 var4 var0 var2)) (check_pre var3 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (or (not (check_pre var2 var1 var0)) (check0 var2 var1 var0 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (check0 var5 var4 var2 var1 var3 var0) (not (= var4 nullAddr)))) (check3 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (check0 var5 var4 var2 var1 var3 var0) (= var4 nullAddr))) (check4 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check3 var5 var4 var2 var1 var3 var0)) (check5 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check5 var5 var4 var2 var1 var3 var0)) (check8 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (check8 var5 var4 var2 var1 var3 var0) (not (= var6 0)))) (check6 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (check8 var5 var4 var2 var1 var3 var0) (= var6 0))) (check7 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check6 var5 var4 var2 var1 var3 var0)) (check9 var5 var4 var2 var1 var3 var0 (left (getnode (read var5 var4))) var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (check9 var8 var7 var4 var2 var6 var1 var3 var0) (check_post var8 var3 var0 var5))) (check2 var5 var7 var4 var2 var6 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check7 var5 var4 var2 var1 var3 var0)) (check10 var5 var4 var2 var1 var3 var0 (right (getnode (read var5 var4))) var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (check10 var7 var6 var4 var3 var5 var0 var8 var2) (check_post var7 var8 var2 var1))) (check2 var1 var6 var4 var3 var5 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check4 var5 var4 var2 var1 var3 var0)) (check2 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check2 var5 var4 var2 var1 var3 var0)) (check1 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check1 var5 var4 var2 var1 var3 var0)) (check_post var1 var3 var0 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (check3 var5 var4 var2 var1 var3 var0) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (check3 var5 var4 var2 var1 var3 var0) (not (<= 0 (+ var2 (* (- 1) (data (getnode (read var5 var4))))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (check6 var5 var4 var2 var1 var3 var0) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (check9 var7 var6 var4 var2 var5 var1 var3 var0)) (check_pre var7 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (check7 var5 var4 var2 var1 var3 var0) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (check10 var6 var5 var3 var2 var4 var0 var7 var1)) (check_pre var6 var7 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (max_pre var1 var0)) (max0 var1 var0 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (max0 var3 var1 var0 var2) (= var1 nullAddr))) (max3 var3 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (max0 var3 var1 var0 var2) (not (= var1 nullAddr)))) (max4 var3 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (max3 var3 var1 var0 var2)) (max1 var3 var1 var0 var2 (- 2147483648))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (max4 var3 var1 var0 var2)) (max5 var3 var1 var0 var2 (data (getnode (read var3 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (max5 var4 var2 var0 var3 var1)) (max6 var4 var2 var0 var3 var1 (left (getnode (read var4 var2))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap)) (or (not (and (max6 var7 var4 var1 var6 var3 var2) (max_post var7 var2 var0 var5))) (max7 var0 var4 var1 var6 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (max7 var5 var2 var0 var4 var1 var3)) (max8 var5 var2 var0 var4 var1 var3 (right (getnode (read var5 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (max8 var7 var2 var0 var6 var1 var5 var4) (max_post var7 var4 var3 var8))) (max9 var3 var2 var0 var6 var1 var5 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (max9 var6 var3 var1 var5 var2 var4 var0) (and (<= 0 (+ var4 (* (- 1) var2))) (<= 0 (+ var4 (* (- 1) var0)))))) (max11 var6 var3 var1 var5 var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (max9 var6 var3 var1 var5 var2 var4 var0) (or (not (<= 0 (+ var4 (* (- 1) var2)))) (not (<= 0 (+ var4 (* (- 1) var0))))))) (max12 var6 var3 var1 var5 var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (max11 var6 var3 var1 var5 var2 var4 var0)) (max1 var6 var3 var1 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (max12 var6 var3 var1 var5 var2 var4 var0)) (max10 var6 var3 var1 var5 var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (max10 var6 var3 var1 var5 var2 var4 var0) (and (<= 0 (+ var0 (* (- 1) var2))) (<= 0 (+ var0 (* (- 1) var4)))))) (max14 var6 var3 var1 var5 var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (max10 var6 var3 var1 var5 var2 var4 var0) (or (not (<= 0 (+ var0 (* (- 1) var2)))) (not (<= 0 (+ var0 (* (- 1) var4))))))) (max15 var6 var3 var1 var5 var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (max14 var6 var3 var1 var5 var2 var4 var0)) (max1 var6 var3 var1 var5 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (max15 var6 var3 var1 var5 var2 var4 var0)) (max13 var6 var3 var1 var5 var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (max13 var6 var3 var1 var5 var2 var4 var0)) (max1 var6 var3 var1 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (or (not (max1 var4 var1 var0 var3 var2)) (max_post var0 var3 var4 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (max4 var3 var1 var0 var2) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (max5 var4 var2 var0 var3 var1) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (max6 var5 var3 var0 var4 var2 var1)) (max_pre var5 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (max7 var5 var2 var0 var4 var1 var3) (not (is-O_node (read var5 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (max8 var6 var2 var0 var5 var1 var4 var3)) (max_pre var6 var3)))) +(assert (forall ((var0 Heap)) (or (not (nondet_tree_pre var0)) (nondet_tree0 var0 var0)))) +(assert (forall ((var0 Heap) (var1 Heap)) (or (not (nondet_tree0 var1 var0)) (nondet_tree5 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap)) (or (not (and (nondet_tree5 var2 var0) (not (= var1 0)))) (nondet_tree3 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap)) (or (not (and (nondet_tree5 var2 var0) (= var1 0))) (nondet_tree4 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Heap)) (or (not (nondet_tree3 var1 var0)) (nondet_tree1 var1 var0 0)))) +(assert (forall ((var0 Heap) (var1 node) (var2 Heap)) (or (not (nondet_tree4 var2 var0)) (nondet_tree6 (newHeap (alloc var2 (O_node var1))) var0 (newAddr (alloc var2 (O_node var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree6 var2 var0 var1)) (nondet_tree8 var2 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap)) (or (not (nondet_tree8 var3 var0 var2)) (nondet_tree7 (write var3 var2 (O_node (node var1 (left (getnode (read var3 var2))) (right (getnode (read var3 var2)))))) var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree7 var2 var0 var1)) (nondet_tree10 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Heap)) (or (not (and (nondet_tree10 var4 var1 var2) (nondet_tree_post var4 var3 var0))) (nondet_tree9 (write var4 var2 (O_node (node (data (getnode (read var4 var2))) var0 (right (getnode (read var4 var2)))))) var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree9 var2 var0 var1)) (nondet_tree12 var2 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (nondet_tree12 var3 var0 var2) (nondet_tree_post var3 var1 var4))) (nondet_tree11 (write var3 var2 (O_node (node (data (getnode (read var3 var2))) (left (getnode (read var3 var2))) var4))) var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree11 var2 var0 var1)) (nondet_tree1 var2 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr)) (or (not (nondet_tree1 var1 var0 var2)) (nondet_tree_post var0 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (not (and (nondet_tree8 var2 var0 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree10 var2 var0 var1)) (nondet_tree_pre var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Heap)) (not (and (and (nondet_tree10 var4 var1 var2) (nondet_tree_post var4 var3 var0)) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree12 var2 var0 var1)) (nondet_tree_pre var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (and (nondet_tree12 var3 var0 var2) (nondet_tree_post var3 var1 var4)) (not (is-O_node (read var3 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/tree_max_incorrect.c.smt2 b/heap-theory-benchmarks/array/tree_max_incorrect.c.smt2 new file mode 100644 index 00000000..ccd87cc6 --- /dev/null +++ b/heap-theory-benchmarks/array/tree_max_incorrect.c.smt2 @@ -0,0 +1,144 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (node 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_node (getnode node)) (defObj)) + ((node (data Int) (left Addr) (right Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun check0 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check1 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check10 (Heap Addr Int Heap Addr Int Addr Int) Bool) +(declare-fun check2 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check3 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check4 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check5 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check6 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check7 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check8 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check9 (Heap Addr Int Heap Addr Int Addr Int) Bool) +(declare-fun check_post (Heap Addr Int Heap) Bool) +(declare-fun check_pre (Heap Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main3 (Heap) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Addr Int) Bool) +(declare-fun max0 (Heap Addr Heap Addr) Bool) +(declare-fun max1 (Heap Addr Heap Addr Int) Bool) +(declare-fun max10 (Heap Addr Heap Addr Int Int) Bool) +(declare-fun max3 (Heap Addr Heap Addr) Bool) +(declare-fun max4 (Heap Addr Heap Addr) Bool) +(declare-fun max5 (Heap Addr Heap Addr Addr) Bool) +(declare-fun max6 (Heap Addr Heap Addr Int) Bool) +(declare-fun max7 (Heap Addr Heap Addr Int Addr) Bool) +(declare-fun max8 (Heap Addr Heap Addr Int Int) Bool) +(declare-fun max9 (Heap Addr Heap Addr Int Int) Bool) +(declare-fun max_post (Heap Addr Heap Int) Bool) +(declare-fun max_pre (Heap Addr) Bool) +(declare-fun nondet_tree0 (Heap Heap) Bool) +(declare-fun nondet_tree1 (Heap Heap Addr) Bool) +(declare-fun nondet_tree10 (Heap Heap Addr) Bool) +(declare-fun nondet_tree11 (Heap Heap Addr) Bool) +(declare-fun nondet_tree12 (Heap Heap Addr) Bool) +(declare-fun nondet_tree3 (Heap Heap) Bool) +(declare-fun nondet_tree4 (Heap Heap) Bool) +(declare-fun nondet_tree5 (Heap Heap) Bool) +(declare-fun nondet_tree6 (Heap Heap Addr) Bool) +(declare-fun nondet_tree7 (Heap Heap Addr) Bool) +(declare-fun nondet_tree8 (Heap Heap Addr) Bool) +(declare-fun nondet_tree9 (Heap Heap Addr) Bool) +(declare-fun nondet_tree_post (Heap Heap Addr) Bool) +(declare-fun nondet_tree_pre (Heap) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (and (inv_main3 var0) (nondet_tree_post var0 var2 var1))) (inv_main7 var2 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var0 var1 var2) (max_post var0 var2 var4 var3))) (inv_main9 var4 var1 var3 var1 var3)))) +(assert (forall ((var0 Heap)) (or (not (inv_main2 var0)) (inv_main3 var0)))) +(assert (forall ((var0 Heap)) (or (not (inv_main3 var0)) (nondet_tree_pre var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main7 var0 var1 var2)) (max_pre var0 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main9 var0 var3 var4 var2 var1)) (check_pre var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr)) (or (not (check_pre var0 var2 var1)) (check0 var0 var2 var1 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (and (check0 var0 var5 var4 var1 var2 var3) (not (= var5 nullAddr)))) (check3 var0 var5 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (and (check0 var0 var5 var4 var1 var2 var3) (= var5 nullAddr))) (check4 var0 var5 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check3 var0 var5 var4 var1 var2 var3)) (check5 var0 var5 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check5 var0 var5 var4 var1 var2 var3)) (check8 var0 var5 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr)) (or (not (and (check8 var0 var6 var5 var1 var3 var4) (not (= var2 0)))) (check6 var0 var6 var5 var1 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr)) (or (not (and (check8 var0 var6 var5 var1 var3 var4) (= var2 0))) (check7 var0 var6 var5 var1 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check6 var0 var5 var4 var1 var2 var3)) (check9 var0 var5 var4 var1 var2 var3 (left (getnode (read var0 var5))) var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (check9 var0 var8 var6 var2 var3 var5 var1 var7) (check_post var0 var1 var7 var4))) (check2 var4 var8 var6 var2 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check7 var0 var5 var4 var1 var2 var3)) (check10 var0 var5 var4 var1 var2 var3 (right (getnode (read var0 var5))) var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (check10 var0 var8 var7 var2 var5 var6 var3 var4) (check_post var0 var3 var4 var1))) (check2 var1 var8 var7 var2 var5 var6)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check4 var0 var5 var4 var1 var2 var3)) (check2 var0 var5 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check2 var0 var5 var4 var1 var2 var3)) (check1 var0 var5 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check1 var0 var5 var4 var1 var2 var3)) (check_post var1 var2 var3 var0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (not (and (check3 var0 var5 var4 var1 var2 var3) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (not (and (check3 var0 var5 var4 var1 var2 var3) (not (<= 0 (+ var4 (* (- 1) (data (getnode (read var0 var5))))))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (not (and (check6 var0 var5 var4 var1 var2 var3) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (or (not (check9 var0 var7 var5 var2 var3 var4 var1 var6)) (check_pre var0 var1 var6)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (not (and (check7 var0 var5 var4 var1 var2 var3) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (or (not (check10 var0 var7 var6 var1 var4 var5 var2 var3)) (check_pre var0 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (max_pre var0 var1)) (max0 var0 var1 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (max0 var0 var3 var1 var2) (= var3 nullAddr))) (max3 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (max0 var0 var3 var1 var2) (not (= var3 nullAddr)))) (max4 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (max3 var0 var3 var1 var2)) (max1 var0 var3 var1 var2 (- 2147483648))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (max4 var0 var3 var1 var2)) (max5 var0 var3 var1 var2 (left (getnode (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (max5 var0 var6 var1 var5 var2) (max_post var0 var2 var4 var3))) (max6 var4 var6 var1 var5 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (max6 var0 var4 var2 var3 var1)) (max7 var0 var4 var2 var3 var1 (right (getnode (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (or (not (and (max7 var0 var7 var3 var6 var1 var4) (max_post var0 var4 var2 var5))) (max8 var2 var7 var3 var6 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (max8 var0 var5 var2 var4 var1 var3) (<= 0 (+ var1 (* (- 1) var3))))) (max9 var0 var5 var2 var4 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (max8 var0 var5 var2 var4 var1 var3) (not (<= 0 (+ var1 (* (- 1) var3)))))) (max10 var0 var5 var2 var4 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (max9 var0 var5 var2 var4 var1 var3)) (max1 var0 var5 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (max10 var0 var5 var2 var4 var1 var3)) (max1 var0 var5 var2 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (max1 var0 var4 var2 var3 var1)) (max_post var2 var3 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (max4 var0 var3 var1 var2) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (max5 var0 var4 var1 var3 var2)) (max_pre var0 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (max6 var0 var4 var2 var3 var1) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (max7 var0 var5 var2 var4 var1 var3)) (max_pre var0 var3)))) +(assert (forall ((var0 Heap)) (or (not (nondet_tree_pre var0)) (nondet_tree0 var0 var0)))) +(assert (forall ((var0 Heap) (var1 Heap)) (or (not (nondet_tree0 var0 var1)) (nondet_tree5 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap)) (or (not (and (nondet_tree5 var0 var2) (not (= var1 0)))) (nondet_tree3 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap)) (or (not (and (nondet_tree5 var0 var2) (= var1 0))) (nondet_tree4 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Heap)) (or (not (nondet_tree3 var0 var1)) (nondet_tree1 var0 var1 0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 node)) (or (not (nondet_tree4 var0 var1)) (nondet_tree6 (newHeap (alloc var0 (O_node var2))) var1 (newAddr (alloc var0 (O_node var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree6 var0 var2 var1)) (nondet_tree8 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (nondet_tree8 var0 var2 var1)) (nondet_tree7 (write var0 var1 (O_node (node var3 (left (getnode (read var0 var1))) (right (getnode (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree7 var0 var2 var1)) (nondet_tree10 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr)) (or (not (and (nondet_tree10 var0 var3 var1) (nondet_tree_post var0 var2 var4))) (nondet_tree9 (write var0 var1 (O_node (node (data (getnode (read var0 var1))) var4 (right (getnode (read var0 var1)))))) var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree9 var0 var2 var1)) (nondet_tree12 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap)) (or (not (and (nondet_tree12 var0 var2 var1) (nondet_tree_post var0 var4 var3))) (nondet_tree11 (write var0 var1 (O_node (node (data (getnode (read var0 var1))) (left (getnode (read var0 var1))) var3))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree11 var0 var2 var1)) (nondet_tree1 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr)) (or (not (nondet_tree1 var0 var1 var2)) (nondet_tree_post var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (not (and (nondet_tree8 var0 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree10 var0 var2 var1)) (nondet_tree_pre var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr)) (not (and (and (nondet_tree10 var0 var3 var1) (nondet_tree_post var0 var2 var4)) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree12 var0 var2 var1)) (nondet_tree_pre var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap)) (not (and (and (nondet_tree12 var0 var2 var1) (nondet_tree_post var0 var4 var3)) (not (is-O_node (read var0 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/tree_of_cslls.i.smt2 b/heap-theory-benchmarks/array/tree_of_cslls.i.smt2 new file mode 100644 index 00000000..d8b2b0d8 --- /dev/null +++ b/heap-theory-benchmarks/array/tree_of_cslls.i.smt2 @@ -0,0 +1,185 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TListNode 0) (TTreeNode 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TListNode (getTListNode TListNode)) (O_TTreeNode (getTTreeNode TTreeNode)) (defObj)) + ((TListNode (next Addr))) + ((TTreeNode (left Addr) (right Addr) (list Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main25 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main70 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main75 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main79 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main80 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main81 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main82 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main34 var3 var1 var2 var4 var0)) (inv_main49 (write var3 var0 (O_TTreeNode (TTreeNode nullAddr (right (getTTreeNode (read var3 var0))) (list (getTTreeNode (read var3 var0)))))) var1 var2 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (inv_main52 var4 var1 var2 var5 var0 var3)) (inv_main51 (write var4 var0 (O_TTreeNode (TTreeNode (left (getTTreeNode (read var4 var0))) (right (getTTreeNode (read var4 var0))) var3))) var1 var2 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Int) (var11 Addr)) (or (not (and (inv_main67 var9 var1 var5 var11 var6 var10) (and (not (= nullAddr var0)) (and (= var3 0) (and (= var10 0) (and (and (and (and (and (= var8 var9) (= var7 var1)) (= var2 var5)) (= var4 var11)) (= var0 var6)) (or (and (not (= nullAddr (right (getTTreeNode (read var9 var5))))) (= var3 1)) (and (= nullAddr (right (getTTreeNode (read var9 var5)))) (= var3 0))))))))) (inv_main76 var8 var7 var2 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 TListNode) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main11 var7 var2 var4 var8 var11) (and (and (and (and (and (and (= var1 (newHeap (alloc var9 (O_TListNode var12)))) (= var6 var15)) (= var5 var3)) (= var0 var13)) (= var14 (newAddr (alloc var9 (O_TListNode var12))))) (not (= var10 0))) (and (and (and (= var9 (write var7 (list (getTTreeNode (read var7 var2))) (O_TListNode (TListNode var11)))) (= var15 var2)) (= var3 var4)) (= var13 var8))))) (inv_main15 var1 var6 var5 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap) (var9 Heap) (var10 Addr) (var11 Addr) (var12 TListNode) (var13 Addr) (var14 Addr)) (or (not (and (inv_main17 var9 var0 var4 var11) (and (and (and (and (and (and (= var5 (newHeap (alloc var8 (O_TListNode var12)))) (= var6 var14)) (= var13 var2)) (= var1 var3)) (= var10 (newAddr (alloc var8 (O_TListNode var12))))) (not (= var7 0))) (and (and (and (= var8 (write var9 (list (getTTreeNode (read var9 var0))) (O_TListNode (TListNode var11)))) (= var14 var0)) (= var2 var4)) (= var3 var11))))) (inv_main15 var5 var6 var13 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var0 var1 var4 var2) (not (= nullAddr (left (getTTreeNode (read var3 var1))))))) (inv_main71 var3 var0 var1 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main82 var4 var1 var2 var5 var3 var0) (= var0 (next (getTListNode (read var4 (list (getTTreeNode (read var4 var2))))))))) (inv_main80 var4 var1 var2 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main18 var3 var1 var2 var4 var0)) (inv_main17 (write var3 var4 (O_TListNode (TListNode var0))) var1 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main40 var3 var1 var2 var4 var0)) (inv_main34 (write var3 var2 (O_TTreeNode (TTreeNode var0 (right (getTTreeNode (read var3 var2))) (list (getTTreeNode (read var3 var2)))))) var1 var2 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main47 var3 var1 var2 var4 var0)) (inv_main34 (write var3 var2 (O_TTreeNode (TTreeNode (left (getTTreeNode (read var3 var2))) var0 (list (getTTreeNode (read var3 var2)))))) var1 var2 var4 var0)))) +(assert (forall ((var0 TListNode) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main6 var6 var1 var4 var7) (and (and (and (= var3 (write var6 var1 (O_TTreeNode (TTreeNode (left (getTTreeNode (read var6 var1))) nullAddr (list (getTTreeNode (read var6 var1))))))) (= var2 var1)) (= var5 var4)) (= var8 var7)))) (inv_main9 (newHeap (alloc var3 (O_TListNode var0))) var2 var5 var8 (newAddr (alloc var3 (O_TListNode var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main64 var3 var0 var1 var4 var2)) (and (or (not (not (= nullAddr (left (getTTreeNode (read var3 var1)))))) (inv_main67 var3 var0 var1 var4 var2 1)) (or (not (= nullAddr (left (getTTreeNode (read var3 var1))))) (inv_main67 var3 var0 var1 var4 var2 0)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 TTreeNode) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main33 var12 var4 var6 var13 var3) (and (and (and (and (and (and (= var18 (newHeap (alloc var5 (O_TTreeNode var11)))) (= var17 var14)) (= var1 var16)) (= var10 var9)) (= var7 var8)) (= var0 (newAddr (alloc var5 (O_TTreeNode var11))))) (and (not (= var2 0)) (and (not (= var15 0)) (and (and (and (and (and (= var5 var12) (= var14 var4)) (= var16 var6)) (= var9 var13)) (= var8 var3)) (or (and (= nullAddr (left (getTTreeNode (read var12 var6)))) (= var15 1)) (and (not (= nullAddr (left (getTTreeNode (read var12 var6))))) (= var15 0))))))))) (inv_main40 var18 var17 var1 var10 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main57 var3 var1 var2 var4 var0)) (inv_main60 var3 var1 var2 var4 var0 (next (getTListNode (read var3 (list (getTTreeNode (read var3 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main33 var9 var3 var6 var10 var2) (and (= var4 0) (and (and (and (and (and (= var0 var9) (= var8 var3)) (= var5 var6)) (= var7 var10)) (= var1 var2)) (or (and (= nullAddr (left (getTTreeNode (read var9 var6)))) (= var4 1)) (and (not (= nullAddr (left (getTTreeNode (read var9 var6))))) (= var4 0))))))) (inv_main36 var0 var8 var5 var7 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr)) (or (not (and (inv_main33 var9 var1 var5 var10 var0) (and (= var8 0) (and (not (= var3 0)) (and (and (and (and (and (= var2 var9) (= var11 var1)) (= var4 var5)) (= var7 var10)) (= var6 var0)) (or (and (= nullAddr (left (getTTreeNode (read var9 var5)))) (= var3 1)) (and (not (= nullAddr (left (getTTreeNode (read var9 var5))))) (= var3 0)))))))) (inv_main36 var2 var11 var4 var7 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (inv_main60 var4 var1 var3 var5 var0 var2)) (inv_main59 (write var4 var5 (O_TListNode (TListNode var2))) var1 var3 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main25 var3 var1 var2 var5 var4) (= var4 0))) (inv_main33 var3 var1 var2 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main25 var6 var2 var3 var8 var7) (and (= var1 0) (and (not (= var7 0)) (and (and (and (and (= var4 var6) (= var9 var2)) (= var5 var3)) (= var0 var8)) (or (and (not (= nullAddr (right (getTTreeNode (read var6 var3))))) (= var1 1)) (and (= nullAddr (right (getTTreeNode (read var6 var3)))) (= var1 0)))))))) (inv_main33 var4 var9 var5 var0 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var0 var1 var4 var2) (= nullAddr (left (getTTreeNode (read var3 var1)))))) (inv_main72 var3 var0 var1 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main83 var3 var0 var1 var4 var2)) (inv_main86 var3 var0 var1 var4 var2 (next (getTListNode (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main75 var3 var0 var1 var4 var2)) (inv_main82 var3 var0 var1 var4 var2 (list (getTTreeNode (read var3 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main81 var7 var1 var4 var9 var5) (and (and (and (and (and (= var0 var7) (= var3 var1)) (= var2 var4)) (= var8 var9)) (= var10 var5)) (= var6 (next (getTListNode (read var7 (list (getTTreeNode (read var7 var4)))))))))) (inv_main83 var0 var3 var2 var6 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main76 var3 var0 var1 var4 var2) (= var1 (left (getTTreeNode (read var3 var2)))))) (inv_main78 var3 var0 var1 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main71 var9 var0 var5 var10 var6) (and (and (and (and (and (= var7 var9) (= var8 var0)) (= var2 var5)) (= var4 var10)) (= var3 var6)) (= var1 (left (getTTreeNode (read var9 var5))))))) (inv_main64 var7 var8 var1 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main72 var7 var0 var3 var8 var4) (and (and (and (and (and (= var1 var7) (= var5 var0)) (= var2 var3)) (= var6 var8)) (= var10 var4)) (= var9 (right (getTTreeNode (read var7 var3))))))) (inv_main64 var1 var5 var9 var6 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main80 var8 var2 var5 var9 var6) (and (and (not (= nullAddr var10)) (and (and (and (and (= var13 (write var8 (list (getTTreeNode (read var8 var5))) defObj)) (= var0 var2)) (= var4 var5)) (= var12 var9)) (= var3 var6))) (and (and (and (= var1 (write var13 var4 defObj)) (= var10 var0)) (= var11 var4)) (= var7 var12))))) (inv_main64 var1 var10 var10 var7 nullAddr)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main12 var3 var1 var2 var4) (and (not (= nullAddr var1)) (= var0 0)))) (inv_main64 var3 var1 var1 var4 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 TTreeNode) (var4 Heap) (var5 Heap)) (or (not (and (inv_main2 var5) (and (= var4 (newHeap (alloc var5 (O_TTreeNode var3)))) (= var1 (newAddr (alloc var5 (O_TTreeNode var3))))))) (inv_main5 var4 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 TTreeNode) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main49 var9 var1 var5 var10 var0) (and (and (and (and (= var4 (write var9 var0 (O_TTreeNode (TTreeNode (left (getTTreeNode (read var9 var0))) nullAddr (list (getTTreeNode (read var9 var0))))))) (= var7 var1)) (= var6 var5)) (= var3 var10)) (= var8 var0)))) (inv_main52 (newHeap (alloc var4 (O_TTreeNode var2))) var7 var6 var3 var8 (newAddr (alloc var4 (O_TTreeNode var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main5 var2 var0 var1 var3)) (inv_main6 (write var2 var0 (O_TTreeNode (TTreeNode nullAddr (right (getTTreeNode (read var2 var0))) (list (getTTreeNode (read var2 var0)))))) var0 var1 var3)))) +(assert (forall ((var0 TTreeNode) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main36 var11 var4 var6 var12 var3) (and (and (and (and (and (and (= var2 (newHeap (alloc var18 (O_TTreeNode var0)))) (= var5 var13)) (= var17 var10)) (= var1 var7)) (= var16 var15)) (= var14 (newAddr (alloc var18 (O_TTreeNode var0))))) (and (not (= var9 0)) (and (not (= var8 0)) (and (and (and (and (and (= var18 var11) (= var13 var4)) (= var10 var6)) (= var7 var12)) (= var15 var3)) (or (and (= nullAddr (right (getTTreeNode (read var11 var6)))) (= var8 1)) (and (not (= nullAddr (right (getTTreeNode (read var11 var6))))) (= var8 0))))))))) (inv_main47 var2 var5 var17 var1 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main8 var2 var0 var1 var3)) (inv_main11 var2 var0 var1 var3 (list (getTTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main67 var3 var0 var1 var5 var2 var4) (not (= var4 0)))) (inv_main70 var3 var0 var1 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Int) (var11 Addr)) (or (not (and (inv_main67 var9 var1 var5 var11 var6 var10) (and (not (= var3 0)) (and (= var10 0) (and (and (and (and (and (= var8 var9) (= var7 var1)) (= var2 var5)) (= var4 var11)) (= var0 var6)) (or (and (not (= nullAddr (right (getTTreeNode (read var9 var5))))) (= var3 1)) (and (= nullAddr (right (getTTreeNode (read var9 var5)))) (= var3 0)))))))) (inv_main70 var8 var7 var2 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main36 var8 var2 var6 var9 var1) (and (= var5 0) (and (and (and (and (and (= var10 var8) (= var0 var2)) (= var3 var6)) (= var4 var9)) (= var7 var1)) (or (and (= nullAddr (right (getTTreeNode (read var8 var6)))) (= var5 1)) (and (not (= nullAddr (right (getTTreeNode (read var8 var6))))) (= var5 0))))))) (inv_main12 var10 var0 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr)) (or (not (and (inv_main36 var9 var3 var5 var10 var2) (and (= var1 0) (and (not (= var7 0)) (and (and (and (and (and (= var4 var9) (= var11 var3)) (= var8 var5)) (= var6 var10)) (= var0 var2)) (or (and (= nullAddr (right (getTTreeNode (read var9 var5)))) (= var7 1)) (and (not (= nullAddr (right (getTTreeNode (read var9 var5))))) (= var7 0)))))))) (inv_main12 var4 var11 var8 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Heap)) (or (not (and (inv_main54 var9 var3 var6 var10 var2 var5) (and (= var8 0) (and (and (and (and (= var11 (write var9 (list (getTTreeNode (read var9 var2))) (O_TListNode (TListNode var5)))) (= var1 var3)) (= var4 var6)) (= var7 var10)) (= var0 var2))))) (inv_main12 var11 var1 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main59 var9 var3 var5 var10 var2) (and (= var6 0) (and (and (and (and (= var1 (write var9 (list (getTTreeNode (read var9 var3))) (O_TListNode (TListNode var10)))) (= var7 var3)) (= var8 var5)) (= var4 var10)) (= var0 var2))))) (inv_main12 var1 var7 var8 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main11 var7 var3 var4 var8 var2) (and (= var1 0) (and (and (and (= var6 (write var7 (list (getTTreeNode (read var7 var3))) (O_TListNode (TListNode var2)))) (= var0 var3)) (= var5 var4)) (= var9 var8))))) (inv_main12 var6 var0 var5 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr)) (or (not (and (inv_main17 var7 var0 var2 var8) (and (= var4 0) (and (and (and (= var6 (write var7 (list (getTTreeNode (read var7 var0))) (O_TListNode (TListNode var8)))) (= var5 var0)) (= var3 var2)) (= var1 var8))))) (inv_main12 var6 var5 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main76 var3 var0 var1 var4 var2) (not (= var1 (left (getTTreeNode (read var3 var2))))))) (inv_main79 var3 var0 var1 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main25 var7 var2 var3 var9 var8) (and (= var4 0) (and (not (= var1 0)) (and (not (= var8 0)) (and (and (and (and (= var5 var7) (= var10 var2)) (= var6 var3)) (= var0 var9)) (or (and (not (= nullAddr (right (getTTreeNode (read var7 var3))))) (= var1 1)) (and (= nullAddr (right (getTTreeNode (read var7 var3)))) (= var1 0))))))))) (inv_main29 var5 var10 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main22 var2 var0 var1 var3)) (and (or (not (not (= nullAddr (left (getTTreeNode (read var2 var1)))))) (inv_main25 var2 var0 var1 var3 1)) (or (not (= nullAddr (left (getTTreeNode (read var2 var1))))) (inv_main25 var2 var0 var1 var3 0)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 TListNode) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main54 var10 var4 var7 var12 var3 var6) (and (and (and (and (and (and (and (= var2 (newHeap (alloc var11 (O_TListNode var5)))) (= var8 var1)) (= var9 var0)) (= var14 var18)) (= var17 var16)) (= var13 (newAddr (alloc var11 (O_TListNode var5))))) (not (= var15 0))) (and (and (and (and (= var11 (write var10 (list (getTTreeNode (read var10 var3))) (O_TListNode (TListNode var6)))) (= var1 var4)) (= var0 var7)) (= var18 var12)) (= var16 var3))))) (inv_main57 var2 var8 var9 var13 var17)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Heap) (var12 Addr) (var13 TListNode) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr)) (or (not (and (inv_main59 var10 var3 var6 var12 var2) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var1 (O_TListNode var13)))) (= var0 var15)) (= var8 var4)) (= var16 var9)) (= var5 var14)) (= var17 (newAddr (alloc var1 (O_TListNode var13))))) (not (= var7 0))) (and (and (and (and (= var1 (write var10 (list (getTTreeNode (read var10 var3))) (O_TListNode (TListNode var12)))) (= var15 var3)) (= var4 var6)) (= var9 var12)) (= var14 var2))))) (inv_main57 var11 var0 var8 var17 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main51 var3 var1 var2 var4 var0)) (inv_main54 var3 var1 var2 var4 var0 (list (getTTreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main9 var3 var0 var2 var4 var1)) (inv_main8 (write var3 var0 (O_TTreeNode (TTreeNode (left (getTTreeNode (read var3 var0))) (right (getTTreeNode (read var3 var0))) var1))) var0 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main25 var7 var3 var4 var9 var8) (and (not (= var2 0)) (and (not (= var1 0)) (and (not (= var8 0)) (and (and (and (and (= var5 var7) (= var10 var3)) (= var6 var4)) (= var0 var9)) (or (and (not (= nullAddr (right (getTTreeNode (read var7 var4))))) (= var1 1)) (and (= nullAddr (right (getTTreeNode (read var7 var4)))) (= var1 0))))))))) (inv_main28 var5 var10 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main28 var7 var1 var3 var8) (and (and (and (and (= var2 var7) (= var6 var1)) (= var5 var3)) (= var4 var8)) (= var0 (left (getTTreeNode (read var7 var3))))))) (inv_main22 var2 var6 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main29 var7 var3 var4 var8) (and (and (and (and (= var5 var7) (= var2 var3)) (= var0 var4)) (= var1 var8)) (= var6 (right (getTTreeNode (read var7 var4))))))) (inv_main22 var5 var2 var6 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main12 var3 var1 var2 var4) (not (= var0 0)))) (inv_main22 var3 var1 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main82 var4 var1 var2 var5 var3 var0) (not (= var0 (next (getTListNode (read var4 (list (getTTreeNode (read var4 var2)))))))))) (inv_main81 var4 var1 var2 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main15 var2 var0 var1 var3)) (inv_main18 var2 var0 var1 var3 (next (getTListNode (read var2 (list (getTTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main78 var3 var0 var1 var4 var2)) (inv_main75 (write var3 var2 (O_TTreeNode (TTreeNode nullAddr (right (getTTreeNode (read var3 var2))) (list (getTTreeNode (read var3 var2)))))) var0 var1 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main79 var3 var0 var1 var4 var2)) (inv_main75 (write var3 var2 (O_TTreeNode (TTreeNode (left (getTTreeNode (read var3 var2))) nullAddr (list (getTTreeNode (read var3 var2)))))) var0 var1 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Int) (var11 Addr)) (or (not (and (inv_main67 var9 var1 var5 var11 var6 var10) (and (= nullAddr var0) (and (= var3 0) (and (= var10 0) (and (and (and (and (and (= var8 var9) (= var7 var1)) (= var2 var5)) (= var4 var11)) (= var0 var6)) (or (and (not (= nullAddr (right (getTTreeNode (read var9 var5))))) (= var3 1)) (and (= nullAddr (right (getTTreeNode (read var9 var5)))) (= var3 0))))))))) (inv_main75 var8 nullAddr var2 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main86 var8 var1 var5 var10 var6 var0) (and (and (and (and (= var4 (write var8 (list (getTTreeNode (read var8 var5))) (O_TListNode (TListNode var0)))) (= var7 var1)) (= var3 var5)) (= var2 var10)) (= var9 var6)))) (inv_main75 (write var4 var2 defObj) var7 var3 var2 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main5 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main6 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main9 var3 var0 var2 var4 var1) (not (is-O_TTreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main8 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main11 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main11 var3 var1 var2 var4 var0) (not (is-O_TListNode (read var3 (list (getTTreeNode (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var0 var1 var3) (not (is-O_TListNode (read var2 (list (getTTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main18 var3 var1 var2 var4 var0) (not (is-O_TListNode (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main17 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main17 var2 var0 var1 var3) (not (is-O_TListNode (read var2 (list (getTTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main22 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main25 var2 var0 var1 var4 var3) (and (not (= var3 0)) (not (is-O_TTreeNode (read var2 var1)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main28 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main29 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main33 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main40 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main36 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main47 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main34 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main49 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main52 var4 var1 var2 var5 var0 var3) (not (is-O_TTreeNode (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main51 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main54 var4 var1 var3 var5 var0 var2) (not (is-O_TTreeNode (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main54 var4 var1 var3 var5 var0 var2) (not (is-O_TListNode (read var4 (list (getTTreeNode (read var4 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main57 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main57 var3 var1 var2 var4 var0) (not (is-O_TListNode (read var3 (list (getTTreeNode (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main60 var4 var1 var3 var5 var0 var2) (not (is-O_TListNode (read var4 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main59 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main59 var3 var1 var2 var4 var0) (not (is-O_TListNode (read var3 (list (getTTreeNode (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main64 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main67 var3 var0 var1 var5 var2 var4) (and (= var4 0) (not (is-O_TTreeNode (read var3 var1)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main70 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main71 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main72 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main76 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main78 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main79 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main75 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main82 var4 var1 var2 var5 var3 var0) (not (is-O_TTreeNode (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main82 var4 var1 var2 var5 var3 var0) (not (is-O_TListNode (read var4 (list (getTTreeNode (read var4 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main81 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main81 var3 var0 var1 var4 var2) (not (is-O_TListNode (read var3 (list (getTTreeNode (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main83 var3 var0 var1 var4 var2) (not (is-O_TListNode (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main86 var4 var1 var2 var5 var3 var0) (not (is-O_TTreeNode (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main86 var4 var1 var2 var5 var3 var0) (not (is-O_TListNode (read var4 (list (getTTreeNode (read var4 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main80 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/array/tree_stack.i.smt2 b/heap-theory-benchmarks/array/tree_stack.i.smt2 new file mode 100644 index 00000000..cf738913 --- /dev/null +++ b/heap-theory-benchmarks/array/tree_stack.i.smt2 @@ -0,0 +1,136 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +;=============================================================================== +; Encoding of Heap sorts and operations +;------------------------------------------------------------------------------- +(define-sort Addr() Int) +(declare-datatypes ((HeapObject 0) (TreeNode 0) (StackItem 0)) + (((O_Int (getInt Int)) (O_Addr (getAddr Addr)) (O_TreeNode (getTreeNode TreeNode)) (O_StackItem (getStackItem StackItem)) (defObj)) + ((TreeNode (left Addr) (right Addr))) + ((StackItem (next Addr) (node Addr))))) +(declare-datatypes ((AllocResHeap 0) (Heap 0)) + (((AllocResHeap (newHeap Heap) (newAddr Addr))) + ((HeapCtor (HeapSize Int) + (HeapContents (Array Addr HeapObject)))))) +(define-fun nullAddr () Addr 0) +(define-fun defHeapObject () HeapObject defObj) +(define-fun valid ((h Heap) (p Addr)) Bool + (and (>= (HeapSize h) p) (> p 0))) +(define-fun emptyHeap () Heap ( + HeapCtor 0 (( as const (Array Addr HeapObject)) defHeapObject))) +(define-fun read ((h Heap) (p Addr)) HeapObject + (ite (valid h p) + (select (HeapContents h) p) + defHeapObject)) +(define-fun write ((h Heap) (p Addr) (o HeapObject)) Heap + (ite (valid h p) + (HeapCtor (HeapSize h) (store (HeapContents h) p o)) + h)) +(define-fun alloc ((h Heap) (o HeapObject)) AllocResHeap + (AllocResHeap (HeapCtor (+ 1 (HeapSize h)) + (store (HeapContents h) (+ 1 (HeapSize h)) o)) + (+ 1 (HeapSize h)))) + +;=============================================================================== +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(declare-fun inv_main62 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Int) (var4 TreeNode) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main12 var2 var6 var5) (and (not (= var3 0)) (and (not (= var0 0)) (and (and (and (= var1 var2) (= var8 var6)) (= var7 var5)) (or (and (= (left (getTreeNode (read var2 var5))) nullAddr) (= var0 1)) (and (not (= (left (getTreeNode (read var2 var5))) nullAddr)) (= var0 0)))))))) (inv_main29 (newHeap (alloc var1 (O_TreeNode var4))) var8 var7 (newAddr (alloc var1 (O_TreeNode var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main14 var0 var2 var1 var3) (= var3 nullAddr))) (inv_main12 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main14 var2 var5 var4 var7) (and (= var6 0) (and (not (= var7 nullAddr)) (and (and (and (= var0 var2) (= var1 var5)) (= var3 var4)) (= var6 (right (getTreeNode (read var2 var4))))))))) (inv_main12 var0 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main50 var0 var2 var1 var4 var3) (= (left (getTreeNode (read var0 var1))) nullAddr))) (inv_main51 var0 var2 var1 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main58 var1 var6 var5 var9 var7 var4) (and (and (and (and (= var3 (write var1 var7 (O_StackItem (StackItem (next (getStackItem (read var1 var7))) var4)))) (= var10 var6)) (= var0 var5)) (= var2 var9)) (= var8 var7)))) (inv_main51 var3 var10 var0 var8 var8)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main17 var1 var5 var2) (and (and (and (= var0 var1) (= var4 var5)) (= var3 var2)) (= var6 (left (getTreeNode (read var1 var2))))))) (inv_main11 var0 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main18 var2 var5 var4) (and (and (and (= var3 var2) (= var6 var5)) (= var0 var4)) (= var1 (right (getTreeNode (read var2 var4))))))) (inv_main11 var3 var6 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main7 var1 var3 var2) (not (= var0 0)))) (inv_main11 var1 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main11 var0 var2 var1)) (inv_main14 var0 var2 var1 (left (getTreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main45 var0 var7 var5 var9 var8) (and (and (and (and (and (= var3 var0) (= var2 var7)) (= var4 var5)) (= var10 var9)) (= var1 var8)) (= var6 (next (getStackItem (read var0 var9))))))) (inv_main46 var3 var2 var4 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 StackItem) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main50 var1 var7 var4 var10 var8) (and (and (and (and (and (and (= var5 (newHeap (alloc var1 (O_StackItem var3)))) (= var11 var7)) (= var2 var4)) (= var6 var10)) (= var9 var8)) (= var0 (newAddr (alloc var1 (O_StackItem var3))))) (not (= (left (getTreeNode (read var1 var4))) nullAddr))))) (inv_main54 var5 var11 var2 var6 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main54 var0 var2 var1 var4 var3)) (inv_main56 (write var0 var3 (O_StackItem (StackItem var4 (node (getStackItem (read var0 var3)))))) var2 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main28 var0 var2 var1)) (inv_main30 (write var0 (left (getTreeNode (read var0 var1))) (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var0 (left (getTreeNode (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 StackItem) (var7 Addr) (var8 Addr)) (or (not (and (inv_main7 var2 var8 var4) (and (= var1 0) (and (and (= var0 var2) (= var5 var8)) (= var3 nullAddr))))) (inv_main40 (newHeap (alloc var0 (O_StackItem var6))) var5 var3 (newAddr (alloc var0 (O_StackItem var6))) var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main62 var0 var2 var1 var4 var3)) (inv_main64 (write var0 var3 (O_StackItem (StackItem var4 (node (getStackItem (read var0 var3)))))) var2 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main36 var0 var2 var1)) (inv_main38 (write var0 (right (getTreeNode (read var0 var1))) (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var0 (right (getTreeNode (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 StackItem) (var10 Addr) (var11 Heap)) (or (not (and (inv_main51 var1 var7 var2 var10 var8) (and (and (and (and (and (and (= var11 (newHeap (alloc var1 (O_StackItem var9)))) (= var6 var7)) (= var3 var2)) (= var5 var10)) (= var4 var8)) (= var0 (newAddr (alloc var1 (O_StackItem var9))))) (not (= (right (getTreeNode (read var1 var2))) nullAddr))))) (inv_main62 var11 var6 var3 var5 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TreeNode)) (or (not (inv_main4 var0)) (inv_main5 (newHeap (alloc var0 (O_TreeNode var2))) (newAddr (alloc var0 (O_TreeNode var2))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main64 var0 var2 var1 var4 var3)) (inv_main66 var0 var2 var1 var4 var3 (right (getTreeNode (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main37 var1 var3 var2 var0)) (inv_main36 (write var1 var2 (O_TreeNode (TreeNode (left (getTreeNode (read var1 var2))) var0))) var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main40 var0 var2 var1 var4 var3)) (inv_main41 (write var0 var4 (O_StackItem (StackItem nullAddr (node (getStackItem (read var0 var4)))))) var2 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main41 var1 var5 var3 var9 var6) (and (not (= var8 nullAddr)) (and (and (and (and (= var0 (write var1 var9 (O_StackItem (StackItem (next (getStackItem (read var1 var9))) var5)))) (= var2 var5)) (= var7 var3)) (= var8 var9)) (= var4 var6))))) (inv_main45 var0 var2 var7 var8 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main51 var0 var4 var3 var6 var5) (and (and (not (= var8 nullAddr)) (and (and (and (and (= var7 (write var0 var3 defObj)) (= var2 var4)) (= var9 var3)) (= var8 var6)) (= var1 var5))) (= (right (getTreeNode (read var0 var3))) nullAddr)))) (inv_main45 var7 var2 var9 var8 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr)) (or (not (and (inv_main66 var5 var10 var7 var13 var2 var15) (and (and (not (= var1 nullAddr)) (and (and (and (and (= var9 (write var14 var11 defObj)) (= var4 var3)) (= var12 var11)) (= var1 var6)) (= var0 var6))) (and (and (and (and (= var14 (write var5 var2 (O_StackItem (StackItem (next (getStackItem (read var5 var2))) var15)))) (= var3 var10)) (= var11 var7)) (= var8 var13)) (= var6 var2))))) (inv_main45 var9 var4 var12 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main29 var0 var3 var2 var1)) (inv_main28 (write var0 var2 (O_TreeNode (TreeNode var1 (right (getTreeNode (read var0 var2)))))) var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main14 var2 var6 var4 var8) (and (not (= var5 0)) (and (not (= var7 0)) (and (not (= var8 nullAddr)) (and (and (and (= var0 var2) (= var1 var6)) (= var3 var4)) (= var7 (right (getTreeNode (read var2 var4)))))))))) (inv_main17 var0 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main30 var0 var2 var1)) (inv_main22 (write var0 (left (getTreeNode (read var0 var1))) (O_TreeNode (TreeNode (left (getTreeNode (read var0 (left (getTreeNode (read var0 var1)))))) nullAddr))) var2 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main12 var1 var3 var2) (and (= var0 0) (and (and (and (= var6 var1) (= var5 var3)) (= var4 var2)) (or (and (= (left (getTreeNode (read var1 var2))) nullAddr) (= var0 1)) (and (not (= (left (getTreeNode (read var1 var2))) nullAddr)) (= var0 0))))))) (inv_main22 var6 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main12 var2 var5 var4) (and (= var3 0) (and (not (= var0 0)) (and (and (and (= var1 var2) (= var7 var5)) (= var6 var4)) (or (and (= (left (getTreeNode (read var2 var4))) nullAddr) (= var0 1)) (and (not (= (left (getTreeNode (read var2 var4))) nullAddr)) (= var0 0)))))))) (inv_main22 var1 var7 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main5 var0 var2 var1)) (inv_main6 (write var0 var2 (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var0 var2)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main6 var0 var2 var1)) (inv_main7 (write var0 var2 (O_TreeNode (TreeNode (left (getTreeNode (read var0 var2))) nullAddr))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main38 var0 var2 var1)) (inv_main7 (write var0 (right (getTreeNode (read var0 var1))) (O_TreeNode (TreeNode (left (getTreeNode (read var0 (right (getTreeNode (read var0 var1)))))) nullAddr))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main22 var0 var4 var1) (and (= var5 0) (and (and (and (= var3 var0) (= var6 var4)) (= var2 var1)) (or (and (= (right (getTreeNode (read var0 var1))) nullAddr) (= var5 1)) (and (not (= (right (getTreeNode (read var0 var1))) nullAddr)) (= var5 0))))))) (inv_main7 var3 var6 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main22 var2 var5 var4) (and (= var0 0) (and (not (= var1 0)) (and (and (and (= var7 var2) (= var3 var5)) (= var6 var4)) (or (and (= (right (getTreeNode (read var2 var4))) nullAddr) (= var1 1)) (and (not (= (right (getTreeNode (read var2 var4))) nullAddr)) (= var1 0)))))))) (inv_main7 var7 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main46 var1 var8 var4 var10 var9) (and (and (and (and (and (= var0 var1) (= var7 var8)) (= var3 var4)) (= var6 var10)) (= var2 var9)) (= var5 (node (getStackItem (read var1 var9))))))) (inv_main50 (write var0 var2 defObj) var7 var5 var6 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main14 var2 var5 var4 var8) (and (= var7 0) (and (not (= var6 0)) (and (not (= var8 nullAddr)) (and (and (and (= var0 var2) (= var1 var5)) (= var3 var4)) (= var6 (right (getTreeNode (read var2 var4)))))))))) (inv_main18 var0 var1 var3)))) +(assert (forall ((var0 TreeNode) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main22 var3 var6 var5) (and (not (= var2 0)) (and (not (= var1 0)) (and (and (and (= var8 var3) (= var4 var6)) (= var7 var5)) (or (and (= (right (getTreeNode (read var3 var5))) nullAddr) (= var1 1)) (and (not (= (right (getTreeNode (read var3 var5))) nullAddr)) (= var1 0)))))))) (inv_main37 (newHeap (alloc var8 (O_TreeNode var0))) var4 var7 (newAddr (alloc var8 (O_TreeNode var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main56 var0 var2 var1 var4 var3)) (inv_main58 var0 var2 var1 var4 var3 (left (getTreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main5 var0 var2 var1) (not (is-O_TreeNode (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main6 var0 var2 var1) (not (is-O_TreeNode (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main11 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main14 var0 var2 var1 var3) (and (not (= var3 nullAddr)) (not (is-O_TreeNode (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main17 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main18 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main12 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main29 var0 var3 var2 var1) (not (is-O_TreeNode (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main28 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main28 var0 var2 var1) (not (is-O_TreeNode (read var0 (left (getTreeNode (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main30 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main30 var0 var2 var1) (not (is-O_TreeNode (read var0 (left (getTreeNode (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main22 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main37 var1 var3 var2 var0) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main36 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main36 var0 var2 var1) (not (is-O_TreeNode (read var0 (right (getTreeNode (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main38 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main38 var0 var2 var1) (not (is-O_TreeNode (read var0 (right (getTreeNode (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main40 var0 var2 var1 var4 var3) (not (is-O_StackItem (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main41 var0 var2 var1 var4 var3) (not (is-O_StackItem (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main45 var0 var2 var1 var4 var3) (not (is-O_StackItem (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main46 var0 var2 var1 var4 var3) (not (is-O_StackItem (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main50 var0 var2 var1 var4 var3) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main54 var0 var2 var1 var4 var3) (not (is-O_StackItem (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main56 var0 var2 var1 var4 var3) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main58 var0 var3 var2 var5 var4 var1) (not (is-O_StackItem (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main51 var0 var2 var1 var4 var3) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main62 var0 var2 var1 var4 var3) (not (is-O_StackItem (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main64 var0 var2 var1 var4 var3) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main66 var0 var2 var1 var4 var3 var5) (not (is-O_StackItem (read var0 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/alternating_list-1.i.smt2 b/heap-theory-benchmarks/heap/alternating_list-1.i.smt2 new file mode 100644 index 00000000..feccaa8a --- /dev/null +++ b/heap-theory-benchmarks/heap/alternating_list-1.i.smt2 @@ -0,0 +1,73 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main12 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Int Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main37 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main40 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main53 (Heap Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 node) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Heap) (var16 Addr)) (or (not (and (inv_main17 var15 var11 var8 var14 var16) (and (and (not (= var0 nullAddr)) (and (and (and (and (and (= var7 (newHeap (alloc var6 (O_node var9)))) (= var13 0)) (= var10 var3)) (= var4 var2)) (= var5 var12)) (= var0 (newAddr (alloc var6 (O_node var9)))))) (and (and (and (and (= var6 (write var15 var16 (O_node (node 1 (n (getnode (read var15 var16))))))) (= var1 var11)) (= var3 var8)) (= var2 var14)) (= var12 var16))))) (inv_main23 var7 var13 var10 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 node) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Heap) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main18 var11 var9 var7 var10 var14) (and (and (not (= var15 nullAddr)) (and (and (and (and (and (= var12 (newHeap (alloc var8 (O_node var3)))) (= var1 1)) (= var0 var2)) (= var4 var16)) (= var5 var13)) (= var15 (newAddr (alloc var8 (O_node var3)))))) (and (and (and (and (= var8 (write var11 var14 (O_node (node 2 (n (getnode (read var11 var14))))))) (= var6 var9)) (= var2 var7)) (= var16 var10)) (= var13 var14))))) (inv_main23 var12 var1 var0 var15 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int)) (or (not (inv_main8 var2 var1 var0 var3)) (inv_main8 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 node) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int)) (or (not (and (inv_main3 var4 var3) (and (= var0 nullAddr) (and (and (= var2 (newHeap (alloc var4 (O_node var1)))) (= var5 var3)) (= var0 (newAddr (alloc var4 (O_node var1)))))))) (inv_main8 var2 var5 var0 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main49 var7 var3 var0 var6 var9) (and (not (= var5 3)) (and (and (and (and (and (= var8 var7) (= var4 var3)) (= var2 var0)) (= var1 var6)) (= var10 var9)) (= var5 (h (getnode (read var7 var9)))))))) (inv_main53 var8 var4 var2 var1 var10 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main29 var7 var4 var0 var6 var9) (and (and (and (and (and (= var1 var7) (= var3 var4)) (= var8 var0)) (= var10 var6)) (= var5 var9)) (= var2 (n (getnode (read var7 var9))))))) (inv_main12 var1 var3 var8 var10 var2)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (inv_main3 var5 var2) (and (not (= var1 nullAddr)) (and (and (= var3 (newHeap (alloc var5 (O_node var0)))) (= var6 var2)) (= var1 (newAddr (alloc var5 (O_node var0)))))))) (inv_main12 var3 var6 var1 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int)) (or (not (and (inv_main37 var7 var5 var0 var6 var8) (and (and (and (and (and (= var3 var7) (= var10 var5)) (= var1 var0)) (= var9 var6)) (= var4 var8)) (= var2 (n (getnode (read var7 var8))))))) (inv_main33 var3 var10 var1 var9 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main13 var8 var4 var1 var7 var9) (and (and (and (and (= var6 (write var8 var9 (O_node (node 3 (n (getnode (read var8 var9))))))) (= var0 var4)) (= var3 var1)) (= var2 var7)) (= var5 var9)))) (inv_main33 var6 1 var3 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main33 var8 var3 var0 var7 var9) (and (not (= var1 0)) (and (not (= var2 3)) (and (and (and (and (and (= var10 var8) (= var1 var3)) (= var6 var0)) (= var5 var7)) (= var4 var9)) (= var2 (h (getnode (read var8 var9))))))))) (inv_main40 var10 0 var6 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (inv_main26 var3 var1 var0 var2 var5 var4)) (inv_main26 var3 var1 var0 var2 var5 var4)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Addr)) (or (not (and (inv_main17 var14 var10 var8 var13 var15) (and (and (= var11 nullAddr) (and (and (and (and (and (= var6 (newHeap (alloc var5 (O_node var0)))) (= var1 0)) (= var9 var4)) (= var16 var3)) (= var7 var12)) (= var11 (newAddr (alloc var5 (O_node var0)))))) (and (and (and (and (= var5 (write var14 var15 (O_node (node 1 (n (getnode (read var14 var15))))))) (= var2 var10)) (= var4 var8)) (= var3 var13)) (= var12 var15))))) (inv_main26 var6 var1 var9 var11 var7 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 node) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Heap) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main18 var11 var8 var5 var10 var13) (and (and (= var15 nullAddr) (and (and (and (and (and (= var9 (newHeap (alloc var7 (O_node var4)))) (= var0 1)) (= var1 var2)) (= var14 var16)) (= var6 var12)) (= var15 (newAddr (alloc var7 (O_node var4)))))) (and (and (and (and (= var7 (write var11 var13 (O_node (node 2 (n (getnode (read var11 var13))))))) (= var3 var8)) (= var2 var5)) (= var16 var10)) (= var12 var13))))) (inv_main26 var9 var0 var1 var15 var6 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main23 var3 var1 var0 var2 var4)) (inv_main29 (write var3 var4 (O_node (node (h (getnode (read var3 var4))) var2))) var1 var0 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main40 var7 var4 var0 var6 var8) (and (= var9 1) (and (and (and (and (and (= var3 var7) (= var5 var4)) (= var10 var0)) (= var2 var6)) (= var1 var8)) (= var9 (h (getnode (read var7 var8)))))))) (inv_main37 var3 var5 var10 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int)) (or (not (and (inv_main44 var6 var4 var0 var5 var8) (and (= var7 2) (and (and (and (and (and (= var9 var6) (= var10 var4)) (= var1 var0)) (= var2 var5)) (= var3 var8)) (= var7 (h (getnode (read var6 var8)))))))) (inv_main37 var9 var10 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main33 var8 var3 var0 var7 var9) (and (= var1 0) (and (not (= var2 3)) (and (and (and (and (and (= var10 var8) (= var1 var3)) (= var6 var0)) (= var5 var7)) (= var4 var9)) (= var2 (h (getnode (read var8 var9))))))))) (inv_main44 var10 1 var6 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main12 var4 var2 var0 var3 var5) (and (not (= var2 0)) (not (= var1 0))))) (inv_main17 var4 var2 var0 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main12 var3 var1 var0 var2 var5) (= var4 0))) (inv_main13 var3 var1 var0 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main53 var9 var4 var0 var8 var11 var7) (and (and (and (and (and (and (= var1 var9) (= var5 var4)) (= var10 var0)) (= var2 var8)) (= var12 var11)) (= var6 var7)) (= var3 (n (getnode (read var9 var11))))))) (inv_main49 (write var1 var6 defObj) var5 var10 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main33 var6 var3 var0 var5 var9) (and (= var4 3) (and (and (and (and (and (= var1 var6) (= var2 var3)) (= var8 var0)) (= var7 var5)) (= var10 var9)) (= var4 (h (getnode (read var6 var9)))))))) (inv_main49 var1 var2 var8 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main40 var8 var6 var1 var7 var9) (and (not (= var3 1)) (and (and (and (and (and (= var5 var8) (= var2 var6)) (= var4 var1)) (= var10 var7)) (= var0 var9)) (= var3 (h (getnode (read var8 var9)))))))) (inv_main57 var5 var2 var4 var10 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main44 var6 var3 var1 var5 var8) (and (not (= var0 2)) (and (and (and (and (and (= var4 var6) (= var2 var3)) (= var10 var1)) (= var9 var5)) (= var7 var8)) (= var0 (h (getnode (read var6 var8)))))))) (inv_main57 var4 var2 var10 var9 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main12 var4 var2 var0 var3 var5) (and (= var2 0) (not (= var1 0))))) (inv_main18 var4 var2 var0 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main17 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main18 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main23 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main29 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main13 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main33 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main40 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main44 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main37 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main49 var3 var1 var0 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main53 var4 var1 var0 var3 var5 var2) (not (is-O_node (read var4 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (inv_main57 var3 var1 var0 var2 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/alternating_list-2.i.smt2 b/heap-theory-benchmarks/heap/alternating_list-2.i.smt2 new file mode 100644 index 00000000..6e73a7af --- /dev/null +++ b/heap-theory-benchmarks/heap/alternating_list-2.i.smt2 @@ -0,0 +1,73 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main12 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Int Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main37 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main40 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main53 (Heap Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main12 var3 var4 var0 var2 var5) (and (= var4 0) (not (= var1 0))))) (inv_main18 var3 var4 var0 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main29 var5 var7 var1 var4 var10) (and (and (and (and (and (= var8 var5) (= var2 var7)) (= var3 var1)) (= var9 var4)) (= var6 var10)) (= var0 (n (getnode (read var5 var10))))))) (inv_main12 var8 var2 var3 var9 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 node) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Int)) (or (not (and (inv_main3 var4 var6) (and (not (= var0 nullAddr)) (and (and (= var5 (newHeap (alloc var4 (O_node var2)))) (= var1 var6)) (= var0 (newAddr (alloc var4 (O_node var2)))))))) (inv_main12 var5 var1 var0 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main53 var7 var9 var1 var6 var12 var2) (and (and (and (and (and (and (= var3 var7) (= var5 var9)) (= var8 var1)) (= var11 var6)) (= var10 var12)) (= var4 var2)) (= var0 (n (getnode (read var7 var12))))))) (inv_main49 (write var3 var4 defObj) var5 var8 var11 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr)) (or (not (and (inv_main33 var6 var7 var0 var5 var10) (and (= var3 3) (and (and (and (and (and (= var8 var6) (= var9 var7)) (= var4 var0)) (= var2 var5)) (= var1 var10)) (= var3 (h (getnode (read var6 var10)))))))) (inv_main49 var8 var9 var4 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main37 var6 var7 var0 var5 var10) (and (and (and (and (and (= var9 var6) (= var1 var7)) (= var2 var0)) (= var8 var5)) (= var3 var10)) (= var4 (n (getnode (read var6 var10))))))) (inv_main33 var9 var1 var2 var8 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main13 var3 var5 var0 var2 var8) (and (and (and (and (= var1 (write var3 var8 (O_node (node 3 (n (getnode (read var3 var8))))))) (= var4 var5)) (= var9 var0)) (= var7 var2)) (= var6 var8)))) (inv_main33 var1 1 var9 var7 var9)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main12 var3 var4 var0 var2 var5) (= var1 0))) (inv_main13 var3 var4 var0 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (inv_main23 var2 var3 var0 var1 var4)) (inv_main29 (write var2 var4 (O_node (node (h (getnode (read var2 var4))) var1))) var3 var0 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (or (not (and (inv_main40 var6 var7 var0 var5 var9) (and (= var10 1) (and (and (and (and (and (= var2 var6) (= var1 var7)) (= var8 var0)) (= var4 var5)) (= var3 var9)) (= var10 (h (getnode (read var6 var9)))))))) (inv_main37 var2 var1 var8 var4 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main44 var6 var7 var1 var5 var9) (and (= var0 2) (and (and (and (and (and (= var2 var6) (= var3 var7)) (= var8 var1)) (= var4 var5)) (= var10 var9)) (= var0 (h (getnode (read var6 var9)))))))) (inv_main37 var2 var3 var8 var4 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main40 var6 var7 var1 var5 var9) (and (not (= var10 1)) (and (and (and (and (and (= var8 var6) (= var0 var7)) (= var2 var1)) (= var3 var5)) (= var4 var9)) (= var10 (h (getnode (read var6 var9)))))))) (inv_main57 var8 var0 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main44 var4 var6 var1 var3 var9) (and (not (= var2 2)) (and (and (and (and (and (= var8 var4) (= var5 var6)) (= var0 var1)) (= var7 var3)) (= var10 var9)) (= var2 (h (getnode (read var4 var9)))))))) (inv_main57 var8 var5 var0 var7 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 node) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main17 var3 var5 var8 var13 var15) (and (and (not (= var0 nullAddr)) (and (and (and (and (and (= var6 (newHeap (alloc var12 (O_node var4)))) (= var11 0)) (= var14 var1)) (= var7 var9)) (= var10 var2)) (= var0 (newAddr (alloc var12 (O_node var4)))))) (and (and (and (and (= var12 (write var3 var15 (O_node (node 2 (n (getnode (read var3 var15))))))) (= var16 var5)) (= var1 var8)) (= var9 var13)) (= var2 var15))))) (inv_main23 var6 var11 var14 var0 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 node) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr)) (or (not (and (inv_main18 var4 var6 var12 var14 var16) (and (and (not (= var8 nullAddr)) (and (and (and (and (and (= var9 (newHeap (alloc var15 (O_node var7)))) (= var0 1)) (= var1 var10)) (= var5 var3)) (= var13 var11)) (= var8 (newAddr (alloc var15 (O_node var7)))))) (and (and (and (and (= var15 (write var4 var16 (O_node (node 1 (n (getnode (read var4 var16))))))) (= var2 var6)) (= var10 var12)) (= var3 var14)) (= var11 var16))))) (inv_main23 var9 var0 var1 var8 var13)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr)) (or (not (and (inv_main33 var7 var8 var0 var6 var10) (and (not (= var5 0)) (and (not (= var9 3)) (and (and (and (and (and (= var4 var7) (= var5 var8)) (= var1 var0)) (= var2 var6)) (= var3 var10)) (= var9 (h (getnode (read var7 var10))))))))) (inv_main40 var4 0 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr)) (or (not (inv_main26 var2 var3 var0 var1 var5 var4)) (inv_main26 var2 var3 var0 var1 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 node) (var16 Int)) (or (not (and (inv_main17 var4 var5 var8 var12 var14) (and (and (= var13 nullAddr) (and (and (and (and (and (= var7 (newHeap (alloc var11 (O_node var15)))) (= var1 0)) (= var6 var2)) (= var0 var9)) (= var10 var3)) (= var13 (newAddr (alloc var11 (O_node var15)))))) (and (and (and (and (= var11 (write var4 var14 (O_node (node 2 (n (getnode (read var4 var14))))))) (= var16 var5)) (= var2 var8)) (= var9 var12)) (= var3 var14))))) (inv_main26 var7 var1 var6 var13 var10 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Heap) (var14 node) (var15 Addr) (var16 Addr)) (or (not (and (inv_main18 var4 var5 var9 var11 var16) (and (and (= var0 nullAddr) (and (and (and (and (and (= var10 (newHeap (alloc var13 (O_node var14)))) (= var1 1)) (= var15 var6)) (= var8 var3)) (= var12 var7)) (= var0 (newAddr (alloc var13 (O_node var14)))))) (and (and (and (and (= var13 (write var4 var16 (O_node (node 1 (n (getnode (read var4 var16))))))) (= var2 var5)) (= var6 var9)) (= var3 var11)) (= var7 var16))))) (inv_main26 var10 var1 var15 var0 var12 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr)) (or (not (and (inv_main33 var7 var8 var0 var6 var10) (and (= var5 0) (and (not (= var9 3)) (and (and (and (and (and (= var4 var7) (= var5 var8)) (= var1 var0)) (= var2 var6)) (= var3 var10)) (= var9 (h (getnode (read var7 var10))))))))) (inv_main44 var4 1 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main12 var3 var4 var0 var2 var5) (and (not (= var4 0)) (not (= var1 0))))) (inv_main17 var3 var4 var0 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int)) (or (not (inv_main8 var1 var2 var0 var3)) (inv_main8 var1 var2 var0 var3)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main3 var3 var4) (and (= var1 nullAddr) (and (and (= var2 (newHeap (alloc var3 (O_node var0)))) (= var5 var4)) (= var1 (newAddr (alloc var3 (O_node var0)))))))) (inv_main8 var2 var5 var1 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main49 var4 var6 var0 var3 var9) (and (not (= var5 3)) (and (and (and (and (and (= var1 var4) (= var8 var6)) (= var2 var0)) (= var10 var3)) (= var7 var9)) (= var5 (h (getnode (read var4 var9)))))))) (inv_main53 var1 var8 var2 var10 var7 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main17 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main18 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main23 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main29 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main13 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main33 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main40 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main44 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main37 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main49 var2 var3 var0 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main53 var3 var4 var0 var2 var5 var1) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (inv_main57 var2 var3 var0 var1 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/cart.i.smt2 b/heap-theory-benchmarks/heap/cart.i.smt2 new file mode 100644 index 00000000..a38df4a6 --- /dev/null +++ b/heap-theory-benchmarks/heap/cart.i.smt2 @@ -0,0 +1,69 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (stock Int) (order Int)) + ) +)) +(declare-fun inv_main12 (Heap Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Int Addr) Bool) +(declare-fun inv_main14 (Heap Addr Int Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int) Bool) +(declare-fun inv_main21 (Heap Addr Addr Int) Bool) +(declare-fun inv_main26 (Heap Addr Addr Int) Bool) +(declare-fun inv_main27 (Heap Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main26 var2 var1 var3 var0)) (inv_main28 var2 var1 var3 var0 (stock (getnode (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main20 var3 var10 var5 var6) (and (and (= var0 0) (and (not (<= 0 (+ (* (- 1) var6) (- 1)))) (and (and (and (and (= var8 var3) (= var9 var10)) (= var2 var5)) (= var4 var6)) (= var1 (stock (getnode (read var3 var5))))))) (and (and (and (and (= var7 var8) (= var13 var9)) (= var11 var2)) (= var12 var4)) (or (and (<= 0 (+ (+ var4 (* (- 1) var1)) (- 1))) (= var0 1)) (and (not (<= 0 (+ (+ var4 (* (- 1) var1)) (- 1)))) (= var0 0))))))) (inv_main21 var7 var13 var11 var12)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main16 var2 var1 var3) (not (= var3 nullAddr)))) (inv_main20 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main28 var3 var2 var4 var0 var1)) (inv_main27 (write var3 var4 (O_node (node (next (getnode (read var3 var4))) var1 (order (getnode (read var3 var4)))))) var2 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main27 var7 var6 var8 var2) (and (and (and (and (= var3 var7) (= var1 var6)) (= var5 var8)) (= var4 var2)) (= var0 (next (getnode (read var7 var8))))))) (inv_main16 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main20 var2 var1 var3 var0) (<= 0 (+ (* (- 1) var0) (- 1))))) (inv_main16 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr)) (or (not (and (inv_main20 var5 var13 var8 var10) (and (and (not (= var4 0)) (and (not (<= 0 (+ (* (- 1) var10) (- 1)))) (and (and (and (and (= var11 var5) (= var12 var13)) (= var3 var8)) (= var7 var10)) (= var2 (stock (getnode (read var5 var8))))))) (and (and (and (and (= var0 var11) (= var9 var12)) (= var6 var3)) (= var1 var7)) (or (and (<= 0 (+ (+ var7 (* (- 1) var2)) (- 1))) (= var4 1)) (and (not (<= 0 (+ (+ var7 (* (- 1) var2)) (- 1)))) (= var4 0))))))) (inv_main16 var0 var9 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int)) (or (not (and (inv_main3 var1 var0) (= var2 0))) (inv_main16 var1 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main31 var1 var0 var2)) (inv_main35 var1 var0 var2 (order (getnode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main32 var4 var1 var5) (and (not (= var2 nullAddr)) (and (and (and (= var3 var4) (= var0 var1)) (= var6 var5)) (= var2 (next (getnode (read var4 var5)))))))) (inv_main31 var3 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main16 var1 var0 var2) (and (not (= var0 nullAddr)) (= var2 nullAddr)))) (inv_main31 var1 var0 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main21 var2 var1 var3 var0)) (inv_main26 (write var2 var3 (O_node (node (next (getnode (read var2 var3))) (stock (getnode (read var2 var3))) var0))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (or (not (inv_main12 var2 var0 var1 var3)) (inv_main13 (write var2 var3 (O_node (node (next (getnode (read var2 var3))) var1 (order (getnode (read var2 var3)))))) var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (or (not (inv_main13 var2 var0 var1 var3)) (inv_main14 (write var2 var3 (O_node (node (next (getnode (read var2 var3))) (stock (getnode (read var2 var3))) 0))) var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main35 var1 var0 var2 var3) (<= 0 (+ (+ var3 (* (- 1) (stock (getnode (read var1 var2))))) (- 1))))) (inv_main33 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 node)) (or (not (and (inv_main3 var3 var0) (and (not (<= 0 (+ (* (- 1) var2) (- 1)))) (not (= var1 0))))) (inv_main12 (newHeap (alloc var3 (O_node var4))) var0 var2 (newAddr (alloc var3 (O_node var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main33 var1 var0 var2)) (inv_main32 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main35 var1 var0 var2 var3) (not (<= 0 (+ (+ var3 (* (- 1) (stock (getnode (read var1 var2))))) (- 1)))))) (inv_main32 var1 var0 var2)))) +(assert (forall ((var0 Heap)) (or (not (inv_main2 var0)) (inv_main3 var0 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main14 var4 var1 var2 var7) (and (and (and (= var6 (write var4 var7 (O_node (node var1 (stock (getnode (read var4 var7))) (order (getnode (read var4 var7))))))) (= var0 var1)) (= var3 var2)) (= var5 var7)))) (inv_main3 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int)) (or (not (and (inv_main3 var2 var0) (and (<= 0 (+ (* (- 1) var3) (- 1))) (not (= var1 0))))) (inv_main3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (not (and (inv_main12 var2 var0 var1 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (not (and (inv_main13 var2 var0 var1 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (not (and (inv_main14 var2 var0 var1 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main20 var2 var1 var3 var0) (and (not (<= 0 (+ (* (- 1) var0) (- 1)))) (not (is-O_node (read var2 var3)))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main21 var2 var1 var3 var0) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var1 var3 var0) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main28 var3 var2 var4 var0 var1) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main27 var2 var1 var3 var0) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main31 var1 var0 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main35 var1 var0 var2 var3) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main33 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main32 var1 var0 var2) (not (is-O_node (read var1 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll-01-1.i.smt2 b/heap-theory-benchmarks/heap/dll-01-1.i.smt2 new file mode 100644 index 00000000..a6756a94 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll-01-1.i.smt2 @@ -0,0 +1,163 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (prev Addr) (inner Addr)) + ) +)) +(declare-fun inv_main101 (Heap Addr Addr) Bool) +(declare-fun inv_main104 (Heap Addr Addr) Bool) +(declare-fun inv_main107 (Heap Addr Addr) Bool) +(declare-fun inv_main109 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr) Bool) +(declare-fun inv_main112 (Heap Addr Addr) Bool) +(declare-fun inv_main114 (Heap Addr Addr) Bool) +(declare-fun inv_main119 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main8 (Heap Addr) Bool) +(declare-fun inv_main80 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main85 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main90 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main94 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main112 var0 var2 var1) (not (= nullAddr (next (getTSLL (read var0 var1))))))) (inv_main119 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main52 var1 var3 var2 var0)) (inv_main51 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) var0))) var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main32 var0 var3 var1 var2)) (inv_main31 (write var0 var1 (O_TSLL (TSLL var2 (prev (getTSLL (read var0 var1))) (inner (getTSLL (read var0 var1)))))) var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main104 var0 var9 var1) (and (not (= nullAddr var6)) (and (and (and (and (= var8 var0) (= var3 var9)) (= var2 var1)) (= var7 (next (getTSLL (read var0 var9))))) (and (and (= var5 (write var8 var3 defObj)) (= var4 var3)) (= var6 var7)))))) (inv_main101 var5 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main94 var1 var10 var2 var5 var9) (and (not (= nullAddr var0)) (and (= nullAddr var8) (and (and (and (and (and (= var3 var1) (= var0 var10)) (= var4 var2)) (= var7 var5)) (= var6 var9)) (= var8 (next (getTSLL (read var1 var2))))))))) (inv_main101 var3 var0 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var1 var6 var2) (and (not (= nullAddr var0)) (and (= nullAddr var0) (and (not (= nullAddr var0)) (and (= var3 0) (and (and (= var4 var1) (= var0 var6)) (= var5 nullAddr)))))))) (inv_main101 var4 var0 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main101 var0 var5 var1) (and (not (= nullAddr var4)) (and (not (= nullAddr var4)) (and (and (and (= var2 var0) (= var6 var5)) (= var3 var1)) (= var4 (inner (getTSLL (read var0 var5))))))))) (inv_main107 var2 var6 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var0 var4 var1 var2 var3) (and (not (<= 0 (+ 1 (* (- 1) var2)))) (= nullAddr var3)))) (inv_main96 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Heap) (var4 TSLL) (var5 Addr)) (or (not (and (inv_main4 var3 var5) (and (= var1 0) (and (not (= var0 nullAddr)) (and (= var2 (write var3 var5 (O_TSLL (TSLL (next (getTSLL (read var3 var5))) nullAddr (inner (getTSLL (read var3 var5))))))) (= var0 var5)))))) (inv_main16 (newHeap (alloc var2 (O_TSLL var4))) var0 (newAddr (alloc var2 (O_TSLL var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var0 var4 var1 var2 var3) (and (not (= nullAddr var3)) (and (= var2 0) (not (= nullAddr var3)))))) (inv_main78 var0 var4 var1 1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var0 var4 var1 var2 var3) (and (not (= nullAddr var3)) (and (not (= var2 0)) (not (= nullAddr var3)))))) (inv_main78 var0 var4 var1 2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main58 var3 var10 var4 var9) (and (and (= var5 0) (and (= var9 nullAddr) (and (and (and (= var8 var3) (= var0 var10)) (= var6 var4)) (= var2 (inner (getTSLL (read var3 var4))))))) (and (and (and (= var7 var8) (= var11 var0)) (= var1 var6)) (or (and (= var2 nullAddr) (= var5 1)) (and (not (= var2 nullAddr)) (= var5 0))))))) (inv_main56 var7 var11 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main101 var0 var5 var1) (and (= nullAddr var4) (and (and (and (= var2 var0) (= var6 var5)) (= var3 var1)) (= var4 (inner (getTSLL (read var0 var5)))))))) (inv_main104 var2 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main112 var2 var5 var3) (and (= nullAddr (next (getTSLL (read var2 var3)))) (and (and (= var1 (write var2 var3 defObj)) (= var4 var5)) (= var0 var3))))) (inv_main104 var1 var4 nullAddr)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main33 var0 var5 var1) (and (and (and (= var2 var0) (= var6 var5)) (= var4 var1)) (= var3 (next (getTSLL (read var0 var1))))))) (inv_main34 var2 var6 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var0 var4 var1 var2 var3) (and (<= 0 (+ 1 (* (- 1) var2))) (= nullAddr var3)))) (inv_main94 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 TSLL) (var4 Addr)) (or (not (and (inv_main27 var1 var4 var2) (not (= var0 0)))) (inv_main32 (newHeap (alloc var1 (O_TSLL var3))) var4 var2 (newAddr (alloc var1 (O_TSLL var3))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main4 var1 var3) (and (= var2 nullAddr) (and (= var0 (write var1 var3 (O_TSLL (TSLL (next (getTSLL (read var1 var3))) nullAddr (inner (getTSLL (read var1 var3))))))) (= var2 var3))))) (inv_main8 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (inv_main71 var0 var3 var1 var2)) (inv_main72 var0 var3 var1 var2 (inner (getTSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main88 var2 var9 var3 var7 var8) (and (and (and (and (and (= var5 var2) (= var6 var9)) (= var10 var3)) (= var1 var7)) (= var4 var8)) (= var0 (inner (getTSLL (read var2 var8))))))) (inv_main72 var5 var6 var10 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 var1))) (inner (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main107 var0 var2 var1) (not (= nullAddr (inner (getTSLL (read var0 var1))))))) (inv_main114 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 TSLL) (var6 Int) (var7 Addr)) (or (not (and (inv_main34 var1 var7 var2) (and (= var6 0) (and (not (= var3 nullAddr)) (and (not (= nullAddr var3)) (and (and (= var0 (write var1 var2 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var2))) (inner (getTSLL (read var1 var2))))))) (= var4 var7)) (= var3 var2))))))) (inv_main52 (newHeap (alloc var0 (O_TSLL var5))) var4 var3 (newAddr (alloc var0 (O_TSLL var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var0 var4 var1 var2 var3) (and (= nullAddr var3) (and (= var2 0) (not (= nullAddr var3)))))) (inv_main80 var0 var4 var1 1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var0 var4 var1 var2 var3) (and (= nullAddr var3) (and (not (= var2 0)) (not (= nullAddr var3)))))) (inv_main80 var0 var4 var1 2 var3)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main4 var2 var3) (and (not (= var0 0)) (and (not (= var4 nullAddr)) (and (= var1 (write var2 var3 (O_TSLL (TSLL (next (getTSLL (read var2 var3))) nullAddr (inner (getTSLL (read var2 var3))))))) (= var4 var3)))))) (inv_main12 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main78 var0 var4 var1 var2 var3) (= nullAddr (inner (getTSLL (read var0 var3)))))) (inv_main83 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var1 var6 var2) (and (= nullAddr var0) (and (= var3 0) (and (and (= var4 var1) (= var0 var6)) (= var5 nullAddr)))))) (inv_main66 var4 var0 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main22 var2 var8 var6) (and (and (= var0 0) (and (= var6 nullAddr) (and (and (= var4 var2) (= var3 var8)) (= var7 (inner (getTSLL (read var2 var8))))))) (and (and (= var5 var4) (= var1 var3)) (or (and (= var7 nullAddr) (= var0 1)) (and (not (= var7 nullAddr)) (= var0 0))))))) (inv_main20 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main83 var0 var4 var1 var2 var3) (not (= nullAddr (next (getTSLL (read var0 var3))))))) (inv_main88 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main16 var1 var2 var0)) (inv_main15 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) var0))) var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main83 var0 var4 var1 var2 var3) (= nullAddr (next (getTSLL (read var0 var3)))))) (inv_main90 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main107 var0 var2 var1) (= nullAddr (inner (getTSLL (read var0 var1)))))) (inv_main112 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main94 var1 var10 var2 var5 var9) (and (not (= nullAddr var8)) (and (and (and (and (and (= var3 var1) (= var0 var10)) (= var4 var2)) (= var7 var5)) (= var6 var9)) (= var8 (next (getTSLL (read var1 var2)))))))) (inv_main71 var3 var0 var8 0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var1 var6 var2) (and (not (= nullAddr var0)) (and (not (= nullAddr var0)) (and (= var3 0) (and (and (= var4 var1) (= var0 var6)) (= var5 nullAddr))))))) (inv_main71 var4 var0 var0 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main48 var0 var2 var1)) (inv_main47 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (prev (getTSLL (read var0 var1))) nullAddr))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main53 var0 var2 var1)) (inv_main47 (write var0 (inner (getTSLL (read var0 var1))) (O_TSLL (TSLL (next (getTSLL (read var0 (inner (getTSLL (read var0 var1)))))) (prev (getTSLL (read var0 (inner (getTSLL (read var0 var1)))))) nullAddr))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main34 var1 var5 var2) (and (= var3 nullAddr) (and (not (= nullAddr var3)) (and (and (= var0 (write var1 var2 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var2))) (inner (getTSLL (read var1 var2))))))) (= var4 var5)) (= var3 var2)))))) (inv_main44 var0 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main34 var2 var6 var3) (and (not (= var0 0)) (and (not (= var4 nullAddr)) (and (not (= nullAddr var4)) (and (and (= var1 (write var2 var3 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 var3))) (inner (getTSLL (read var2 var3))))))) (= var5 var6)) (= var4 var3))))))) (inv_main48 var1 var5 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (or (not (and (inv_main78 var0 var4 var1 var2 var3) (not (= nullAddr (inner (getTSLL (read var0 var3))))))) (inv_main85 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main15 var0 var1)) (inv_main17 (write var0 (inner (getTSLL (read var0 var1))) (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 (inner (getTSLL (read var0 var1)))))) (inner (getTSLL (read var0 (inner (getTSLL (read var0 var1))))))))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main11 var0 var1)) (inv_main22 var0 var1 (inner (getTSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main34 var2 var5 var3) (and (= nullAddr var0) (and (and (= var4 (write var2 var3 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 var3))) (inner (getTSLL (read var2 var3))))))) (= var1 var5)) (= var0 var3))))) (inv_main39 var4 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main58 var0 var3 var1 var2) (not (= var2 nullAddr)))) (inv_main27 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr)) (or (not (and (inv_main58 var1 var11 var2 var8) (and (and (not (= var10 0)) (and (= var8 nullAddr) (and (and (and (= var6 var1) (= var0 var11)) (= var4 var2)) (= var3 (inner (getTSLL (read var1 var2))))))) (and (and (and (= var9 var6) (= var5 var0)) (= var7 var4)) (or (and (= var3 nullAddr) (= var10 1)) (and (not (= var3 nullAddr)) (= var10 0))))))) (inv_main27 var9 var5 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main22 var0 var2 var1) (not (= var1 nullAddr)))) (inv_main27 var0 var2 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main22 var1 var8 var5) (and (and (not (= var0 0)) (and (= var5 nullAddr) (and (and (= var4 var1) (= var2 var8)) (= var6 (inner (getTSLL (read var1 var8))))))) (and (and (= var3 var4) (= var7 var2)) (or (and (= var6 nullAddr) (= var0 1)) (and (not (= var6 nullAddr)) (= var0 0))))))) (inv_main27 var3 var7 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main101 var0 var5 var1) (and (= nullAddr var4) (and (not (= nullAddr var4)) (and (and (and (= var2 var0) (= var6 var5)) (= var3 var1)) (= var4 (inner (getTSLL (read var0 var5))))))))) (inv_main109 var2 var6 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main51 var0 var2 var1)) (inv_main53 (write var0 (inner (getTSLL (read var0 var1))) (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 (inner (getTSLL (read var0 var1)))))) (inner (getTSLL (read var0 (inner (getTSLL (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main31 var0 var2 var1)) (inv_main33 (write var0 (next (getTSLL (read var0 var1))) (O_TSLL (TSLL (next (getTSLL (read var0 (next (getTSLL (read var0 var1)))))) var1 (inner (getTSLL (read var0 (next (getTSLL (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main12 var0 var1)) (inv_main11 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (prev (getTSLL (read var0 var1))) nullAddr))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main17 var0 var1)) (inv_main11 (write var0 (inner (getTSLL (read var0 var1))) (O_TSLL (TSLL (next (getTSLL (read var0 (inner (getTSLL (read var0 var1)))))) (prev (getTSLL (read var0 (inner (getTSLL (read var0 var1)))))) nullAddr))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main47 var0 var2 var1)) (inv_main58 var0 var2 var1 (inner (getTSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (inv_main8 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main12 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main16 var1 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main15 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main15 var0 var1) (not (is-O_TSLL (read var0 (inner (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main17 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main17 var0 var1) (not (is-O_TSLL (read var0 (inner (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main11 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main22 var0 var2 var1) (and (= var1 nullAddr) (not (is-O_TSLL (read var0 var2)))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (inv_main20 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main32 var0 var3 var1 var2) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main31 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main31 var0 var2 var1) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main33 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main34 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main39 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main44 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main48 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main52 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main51 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main51 var0 var2 var1) (not (is-O_TSLL (read var0 (inner (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main53 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main53 var0 var2 var1) (not (is-O_TSLL (read var0 (inner (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main47 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main58 var0 var3 var1 var2) (and (= var2 nullAddr) (not (is-O_TSLL (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main56 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main66 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main71 var0 var3 var1 var2) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (inv_main80 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main78 var0 var4 var1 var2 var3) (not (is-O_TSLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (inv_main85 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main83 var0 var4 var1 var2 var3) (not (is-O_TSLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (inv_main90 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main88 var0 var4 var1 var2 var3) (not (is-O_TSLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (inv_main96 var0 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main94 var0 var4 var1 var2 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main101 var0 var2 var1) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main109 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main107 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main114 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main112 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main119 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main104 var0 var2 var1) (not (is-O_TSLL (read var0 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll-01-2.i.smt2 b/heap-theory-benchmarks/heap/dll-01-2.i.smt2 new file mode 100644 index 00000000..2b694327 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll-01-2.i.smt2 @@ -0,0 +1,166 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (prev Addr) (inner Addr)) + ) +)) +(declare-fun inv_main101 (Heap Addr Addr) Bool) +(declare-fun inv_main104 (Heap Addr Addr) Bool) +(declare-fun inv_main107 (Heap Addr Addr) Bool) +(declare-fun inv_main109 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr) Bool) +(declare-fun inv_main112 (Heap Addr Addr) Bool) +(declare-fun inv_main114 (Heap Addr Addr) Bool) +(declare-fun inv_main119 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr) Bool) +(declare-fun inv_main122 (Heap Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main8 (Heap Addr) Bool) +(declare-fun inv_main80 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main85 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main90 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main94 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap)) (or (not (and (inv_main4 var3 var1) (and (= var0 nullAddr) (and (= var2 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) nullAddr (inner (getTSLL (read var3 var1))))))) (= var0 var1))))) (inv_main8 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main112 var1 var0 var2) (= nullAddr (next (getTSLL (read var1 var2)))))) (inv_main122 (write var1 var2 defObj) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main51 var1 var0 var2)) (inv_main53 (write var1 (inner (getTSLL (read var1 var2))) (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 (inner (getTSLL (read var1 var2)))))) (inner (getTSLL (read var1 (inner (getTSLL (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main12 var1 var0)) (inv_main11 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) nullAddr))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main17 var1 var0)) (inv_main11 (write var1 (inner (getTSLL (read var1 var0))) (O_TSLL (TSLL (next (getTSLL (read var1 (inner (getTSLL (read var1 var0)))))) (prev (getTSLL (read var1 (inner (getTSLL (read var1 var0)))))) nullAddr))) var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main94 var7 var3 var8 var6 var9) (and (not (= nullAddr var4)) (and (and (and (and (and (= var1 var7) (= var5 var3)) (= var2 var8)) (= var0 var6)) (= var10 var9)) (= var4 (next (getTSLL (read var7 var8)))))))) (inv_main71 var1 var5 var4 0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var3 var2 var4) (and (not (= nullAddr var6)) (and (not (= nullAddr var6)) (and (= var1 0) (and (and (= var0 var3) (= var6 var2)) (= var5 nullAddr))))))) (inv_main71 var0 var6 var6 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main101 var5 var3 var6) (and (not (= nullAddr var1)) (and (not (= nullAddr var1)) (and (and (and (= var0 var5) (= var2 var3)) (= var4 var6)) (= var1 (inner (getTSLL (read var5 var3))))))))) (inv_main107 var0 var2 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 TSLL)) (or (not (and (inv_main27 var2 var1 var3) (not (= var0 0)))) (inv_main32 (newHeap (alloc var2 (O_TSLL var4))) var1 var3 (newAddr (alloc var2 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main104 var3 var1 var4) (and (not (= nullAddr var0)) (and (and (and (and (= var9 var3) (= var7 var1)) (= var8 var4)) (= var6 (next (getTSLL (read var3 var1))))) (and (and (= var2 (write var9 var7 defObj)) (= var5 var7)) (= var0 var6)))))) (inv_main101 var2 var0 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main94 var7 var3 var8 var6 var9) (and (not (= nullAddr var5)) (and (= nullAddr var4) (and (and (and (and (and (= var1 var7) (= var5 var3)) (= var2 var8)) (= var0 var6)) (= var10 var9)) (= var4 (next (getTSLL (read var7 var8))))))))) (inv_main101 var1 var5 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var3 var2 var4) (and (not (= nullAddr var6)) (and (= nullAddr var6) (and (not (= nullAddr var6)) (and (= var1 0) (and (and (= var0 var3) (= var6 var2)) (= var5 nullAddr)))))))) (inv_main101 var0 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main33 var5 var3 var6) (and (and (and (= var2 var5) (= var1 var3)) (= var4 var6)) (= var0 (next (getTSLL (read var5 var6))))))) (inv_main34 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main78 var2 var0 var3 var1 var4) (not (= nullAddr (inner (getTSLL (read var2 var4))))))) (inv_main85 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main47 var1 var0 var2)) (inv_main58 var1 var0 var2 (inner (getTSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 TSLL) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap)) (or (not (and (inv_main34 var4 var2 var5) (and (= var6 0) (and (not (= var0 nullAddr)) (and (not (= nullAddr var0)) (and (and (= var7 (write var4 var5 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var4 var5))) (inner (getTSLL (read var4 var5))))))) (= var1 var2)) (= var0 var5))))))) (inv_main52 (newHeap (alloc var7 (O_TSLL var3))) var1 var0 (newAddr (alloc var7 (O_TSLL var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var2 var0 var3 var1 var4) (and (not (= nullAddr var4)) (and (= var1 0) (not (= nullAddr var4)))))) (inv_main78 var2 var0 var3 1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var2 var0 var3 var1 var4) (and (not (= nullAddr var4)) (and (not (= var1 0)) (not (= nullAddr var4)))))) (inv_main78 var2 var0 var3 2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main78 var2 var0 var3 var1 var4) (= nullAddr (inner (getTSLL (read var2 var4)))))) (inv_main83 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main15 var1 var0)) (inv_main17 (write var1 (inner (getTSLL (read var1 var0))) (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 (inner (getTSLL (read var1 var0)))))) (inner (getTSLL (read var1 (inner (getTSLL (read var1 var0))))))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main16 var2 var1 var0)) (inv_main15 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) var0))) var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var3 var2 var4) (and (= nullAddr var6) (and (= var1 0) (and (and (= var0 var3) (= var6 var2)) (= var5 nullAddr)))))) (inv_main66 var0 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main107 var1 var0 var2) (not (= nullAddr (inner (getTSLL (read var1 var2))))))) (inv_main114 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main31 var1 var0 var2)) (inv_main33 (write var1 (next (getTSLL (read var1 var2))) (O_TSLL (TSLL (next (getTSLL (read var1 (next (getTSLL (read var1 var2)))))) var2 (inner (getTSLL (read var1 (next (getTSLL (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var2 var0 var3 var1 var4) (and (not (<= 0 (+ 1 (* (- 1) var1)))) (= nullAddr var4)))) (inv_main96 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main101 var5 var3 var6) (and (= nullAddr var1) (and (not (= nullAddr var1)) (and (and (and (= var0 var5) (= var2 var3)) (= var4 var6)) (= var1 (inner (getTSLL (read var5 var3))))))))) (inv_main109 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap)) (or (not (and (inv_main34 var3 var2 var4) (and (= var0 nullAddr) (and (not (= nullAddr var0)) (and (and (= var5 (write var3 var4 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var3 var4))) (inner (getTSLL (read var3 var4))))))) (= var1 var2)) (= var0 var4)))))) (inv_main44 var5 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main52 var2 var1 var3 var0)) (inv_main51 (write var2 var3 (O_TSLL (TSLL (next (getTSLL (read var2 var3))) (prev (getTSLL (read var2 var3))) var0))) var1 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (or (not (inv_main71 var2 var0 var3 var1)) (inv_main72 var2 var0 var3 var1 (inner (getTSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main88 var8 var5 var9 var7 var10) (and (and (and (and (and (= var6 var8) (= var0 var5)) (= var2 var9)) (= var3 var7)) (= var1 var10)) (= var4 (inner (getTSLL (read var8 var10))))))) (inv_main72 var6 var0 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main48 var1 var0 var2)) (inv_main47 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main53 var1 var0 var2)) (inv_main47 (write var1 (inner (getTSLL (read var1 var2))) (O_TSLL (TSLL (next (getTSLL (read var1 (inner (getTSLL (read var1 var2)))))) (prev (getTSLL (read var1 (inner (getTSLL (read var1 var2)))))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var2 var0 var3 var1 var4) (and (= nullAddr var4) (and (= var1 0) (not (= nullAddr var4)))))) (inv_main80 var2 var0 var3 1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var2 var0 var3 var1 var4) (and (= nullAddr var4) (and (not (= var1 0)) (not (= nullAddr var4)))))) (inv_main80 var2 var0 var3 2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main83 var2 var0 var3 var1 var4) (= nullAddr (next (getTSLL (read var2 var4)))))) (inv_main88 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main11 var1 var0)) (inv_main22 var1 var0 (inner (getTSLL (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main4 var3 var2) (and (not (= var4 0)) (and (not (= var1 nullAddr)) (and (= var0 (write var3 var2 (O_TSLL (TSLL (next (getTSLL (read var3 var2))) nullAddr (inner (getTSLL (read var3 var2))))))) (= var1 var2)))))) (inv_main12 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main112 var1 var0 var2) (not (= nullAddr (next (getTSLL (read var1 var2))))))) (inv_main119 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main58 var2 var1 var3 var0) (not (= var0 nullAddr)))) (inv_main27 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap)) (or (not (and (inv_main58 var7 var5 var8 var1) (and (and (not (= var10 0)) (and (= var1 nullAddr) (and (and (and (= var11 var7) (= var6 var5)) (= var9 var8)) (= var4 (inner (getTSLL (read var7 var8))))))) (and (and (and (= var0 var11) (= var2 var6)) (= var3 var9)) (or (and (= var4 nullAddr) (= var10 1)) (and (not (= var4 nullAddr)) (= var10 0))))))) (inv_main27 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main22 var2 var0 var1) (not (= var1 nullAddr)))) (inv_main27 var2 var0 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main22 var6 var3 var5) (and (and (not (= var0 0)) (and (= var5 nullAddr) (and (and (= var2 var6) (= var7 var3)) (= var8 (inner (getTSLL (read var6 var3))))))) (and (and (= var1 var2) (= var4 var7)) (or (and (= var8 nullAddr) (= var0 1)) (and (not (= var8 nullAddr)) (= var0 0))))))) (inv_main27 var1 var4 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main22 var5 var3 var4) (and (and (= var0 0) (and (= var4 nullAddr) (and (and (= var2 var5) (= var6 var3)) (= var8 (inner (getTSLL (read var5 var3))))))) (and (and (= var1 var2) (= var7 var6)) (or (and (= var8 nullAddr) (= var0 1)) (and (not (= var8 nullAddr)) (= var0 0))))))) (inv_main20 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main72 var2 var0 var3 var1 var4) (and (<= 0 (+ 1 (* (- 1) var1))) (= nullAddr var4)))) (inv_main94 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main34 var4 var3 var5) (and (not (= var2 0)) (and (not (= var0 nullAddr)) (and (not (= nullAddr var0)) (and (and (= var6 (write var4 var5 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var4 var5))) (inner (getTSLL (read var4 var5))))))) (= var1 var3)) (= var0 var5))))))) (inv_main48 var6 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main32 var2 var1 var3 var0)) (inv_main31 (write var2 var3 (O_TSLL (TSLL var0 (prev (getTSLL (read var2 var3))) (inner (getTSLL (read var2 var3)))))) var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main107 var1 var0 var2) (= nullAddr (inner (getTSLL (read var1 var2)))))) (inv_main112 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap)) (or (not (and (inv_main58 var7 var5 var8 var0) (and (and (= var4 0) (and (= var0 nullAddr) (and (and (and (= var11 var7) (= var6 var5)) (= var10 var8)) (= var3 (inner (getTSLL (read var7 var8))))))) (and (and (and (= var2 var11) (= var9 var6)) (= var1 var10)) (or (and (= var3 nullAddr) (= var4 1)) (and (not (= var3 nullAddr)) (= var4 0))))))) (inv_main56 var2 var9 var1)))) +(assert (forall ((var0 Heap) (var1 TSLL) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main4 var5 var4) (and (= var2 0) (and (not (= var3 nullAddr)) (and (= var0 (write var5 var4 (O_TSLL (TSLL (next (getTSLL (read var5 var4))) nullAddr (inner (getTSLL (read var5 var4))))))) (= var3 var4)))))) (inv_main16 (newHeap (alloc var0 (O_TSLL var1))) var3 (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main83 var2 var0 var3 var1 var4) (not (= nullAddr (next (getTSLL (read var2 var4))))))) (inv_main90 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr)) (or (not (and (inv_main34 var4 var1 var5) (and (= nullAddr var0) (and (and (= var3 (write var4 var5 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var4 var5))) (inner (getTSLL (read var4 var5))))))) (= var2 var1)) (= var0 var5))))) (inv_main39 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var0))) (inner (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main122 var1 var0 var2)) (inv_main104 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main101 var5 var3 var6) (and (= nullAddr var1) (and (and (and (= var0 var5) (= var2 var3)) (= var4 var6)) (= var1 (inner (getTSLL (read var5 var3)))))))) (inv_main104 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (inv_main8 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main12 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main16 var2 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main15 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main15 var1 var0) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main17 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main17 var1 var0) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main11 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main22 var2 var0 var1) (and (= var1 nullAddr) (not (is-O_TSLL (read var2 var0)))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (inv_main20 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main32 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main31 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main31 var1 var0 var2) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main33 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main34 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main39 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main44 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main48 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main52 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main51 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main51 var1 var0 var2) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main53 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main53 var1 var0 var2) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main47 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main58 var2 var1 var3 var0) (and (= var0 nullAddr) (not (is-O_TSLL (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main56 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main66 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (not (and (inv_main71 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (inv_main80 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main78 var2 var0 var3 var1 var4) (not (is-O_TSLL (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (inv_main85 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main83 var2 var0 var3 var1 var4) (not (is-O_TSLL (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (inv_main90 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main88 var2 var0 var3 var1 var4) (not (is-O_TSLL (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (inv_main96 var2 var0 var3 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main94 var2 var0 var3 var1 var4) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main101 var1 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main109 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main107 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main114 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main112 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main119 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main122 var1 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main104 var1 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll-circular-1.i.smt2 b/heap-theory-benchmarks/heap/dll-circular-1.i.smt2 new file mode 100644 index 00000000..230d5467 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll-circular-1.i.smt2 @@ -0,0 +1,93 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (prev Addr) (data Int)) + ) +)) +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr Addr Int) Bool) +(declare-fun inv_main17 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main27 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Int) Bool) +(declare-fun inv_main33 (Heap Addr Addr Int) Bool) +(declare-fun inv_main35 (Heap Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Int) Bool) +(declare-fun inv_main43 (Heap Addr Addr Int) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main46 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main51 (Heap Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main33 var4 var5 var3 var2) (and (= var6 0) (and (and (and (and (= var0 var4) (= var8 var5)) (= var1 var3)) (= var7 var2)) (= var6 (data (getTSLL (read var4 var3)))))))) (inv_main38 var0 var8 var1 var7)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main13 var5 var8 var4 var3) (and (and (and (and (= var0 var5) (= var2 var8)) (= var7 var4)) (= var1 var3)) (= var6 (next (getTSLL (read var5 var4))))))) (inv_main14 var0 var2 var6 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main8 var2 var3 var1 var0)) (inv_main30 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) var0))) var3 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL var1 (prev (getTSLL (read var0 var1))) (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main11 var2 var3 var1 var0)) (inv_main13 (write var2 (next (getTSLL (read var2 var1))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var1)))))) var1 (data (getTSLL (read var2 (next (getTSLL (read var2 var1))))))))) var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main45 var3 var4 var2 var1 var0) (not (= var0 0)))) (inv_main46 var3 var4 var2 var1 (data (getTSLL (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main14 var3 var6 var2 var1) (and (not (= var5 2)) (and (not (= var5 1)) (and (not (= var0 0)) (and (and (and (= var4 (write var3 var2 (O_TSLL (TSLL var6 (prev (getTSLL (read var3 var2))) (data (getTSLL (read var3 var2))))))) (= var8 var6)) (= var7 var2)) (= var5 var1))))))) (inv_main8 var4 var8 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main17 var4 var8 var3 var2) (and (= var1 0) (and (not (= nullAddr var7)) (and (and (and (= var6 (write var4 var3 (O_TSLL (TSLL (next (getTSLL (read var4 var3))) (prev (getTSLL (read var4 var3))) var2)))) (= var5 var8)) (= var7 var3)) (= var0 var2)))))) (inv_main8 var6 var5 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main4 var1 var2) (and (= var3 0) (and (= var4 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) 0)))) (= var0 var2))))) (inv_main8 var4 var0 var0 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main14 var2 var6 var1 var0) (and (= var3 0) (and (and (and (= var4 (write var2 var1 (O_TSLL (TSLL var6 (prev (getTSLL (read var2 var1))) (data (getTSLL (read var2 var1))))))) (= var8 var6)) (= var7 var1)) (= var5 var0))))) (inv_main17 var4 var8 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main14 var3 var6 var2 var1) (and (= var5 1) (and (not (= var0 0)) (and (and (and (= var4 (write var3 var2 (O_TSLL (TSLL var6 (prev (getTSLL (read var3 var2))) (data (getTSLL (read var3 var2))))))) (= var8 var6)) (= var7 var2)) (= var5 var1)))))) (inv_main17 var4 var8 var7 2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main14 var3 var6 var2 var1) (and (= var5 2) (and (not (= var5 1)) (and (not (= var0 0)) (and (and (and (= var4 (write var3 var2 (O_TSLL (TSLL var6 (prev (getTSLL (read var3 var2))) (data (getTSLL (read var3 var2))))))) (= var8 var6)) (= var7 var2)) (= var5 var1))))))) (inv_main17 var4 var8 var7 3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 TSLL) (var9 Addr)) (or (not (and (inv_main17 var4 var9 var3 var2) (and (not (= var0 0)) (and (not (= nullAddr var7)) (and (and (and (= var6 (write var4 var3 (O_TSLL (TSLL (next (getTSLL (read var4 var3))) (prev (getTSLL (read var4 var3))) var2)))) (= var5 var9)) (= var7 var3)) (= var1 var2)))))) (inv_main12 (newHeap (alloc var6 (O_TSLL var8))) var5 var7 var1 (newAddr (alloc var6 (O_TSLL var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Heap) (var4 TSLL) (var5 Addr)) (or (not (and (inv_main4 var3 var5) (and (not (= var1 0)) (and (= var2 (write var3 var5 (O_TSLL (TSLL (next (getTSLL (read var3 var5))) (prev (getTSLL (read var3 var5))) 0)))) (= var0 var5))))) (inv_main12 (newHeap (alloc var2 (O_TSLL var4))) var0 var0 1 (newAddr (alloc var2 (O_TSLL var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main51 var3 var5 var2 var1) (and (not (= var4 0)) (and (and (and (and (= var0 var3) (= var7 var5)) (= var6 var2)) (= var8 var1)) (= var4 (data (getTSLL (read var3 var2)))))))) (inv_main56 var0 var6 var6 var8)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main39 var2 var3 var1 var0)) (inv_main45 var2 var3 var1 var0 (data (getTSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main45 var3 var4 var2 var1 var0) (= var0 0))) (inv_main43 var3 var4 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main46 var5 var7 var4 var3 var1) (and (= var9 0) (and (and (and (and (= var8 var5) (= var0 var7)) (= var2 var4)) (= var6 var3)) (or (and (<= 0 (+ (+ var1 (* (- 1) (data (getTSLL (read var5 (next (getTSLL (read var5 var4)))))))) (- 1))) (= var9 1)) (and (not (<= 0 (+ (+ var1 (* (- 1) (data (getTSLL (read var5 (next (getTSLL (read var5 var4)))))))) (- 1)))) (= var9 0))))))) (inv_main43 var8 var0 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main33 var6 var8 var5 var4) (and (not (= var7 0)) (and (and (and (and (= var3 var6) (= var1 var8)) (= var0 var5)) (= var2 var4)) (= var7 (data (getTSLL (read var6 var5)))))))) (inv_main39 var3 var1 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main38 var4 var8 var3 var2) (and (and (and (and (= var7 var4) (= var5 var8)) (= var1 var3)) (= var0 var2)) (= var6 (next (getTSLL (read var4 var8))))))) (inv_main51 var7 var5 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main56 var5 var7 var4 var3) (and (and (and (and (= var1 var5) (= var2 var7)) (= var0 var4)) (= var8 var3)) (= var6 (next (getTSLL (read var5 var4))))))) (inv_main51 (write var1 var2 defObj) var2 var6 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main46 var5 var7 var4 var3 var1) (and (not (= var9 0)) (and (and (and (and (= var8 var5) (= var0 var7)) (= var2 var4)) (= var6 var3)) (or (and (<= 0 (+ (+ var1 (* (- 1) (data (getTSLL (read var5 (next (getTSLL (read var5 var4)))))))) (- 1))) (= var9 1)) (and (not (<= 0 (+ (+ var1 (* (- 1) (data (getTSLL (read var5 (next (getTSLL (read var5 var4)))))))) (- 1)))) (= var9 0))))))) (inv_main41 var8 var0 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main30 var5 var6 var4 var3) (and (= nullAddr var8) (and (and (and (and (= var1 var5) (= var7 var6)) (= var0 var4)) (= var2 var3)) (= var8 (next (getTSLL (read var5 var6)))))))) (inv_main35 var1 var7 var8 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (inv_main41 var4 var6 var3 var2) (and (and (and (and (= var7 var4) (= var1 var6)) (= var0 var3)) (= var8 var2)) (= var5 (next (getTSLL (read var4 var3))))))) (inv_main33 var7 var1 var5 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main30 var5 var6 var4 var3) (and (not (= nullAddr var8)) (and (and (and (and (= var1 var5) (= var7 var6)) (= var0 var4)) (= var2 var3)) (= var8 (next (getTSLL (read var5 var6)))))))) (inv_main33 var1 var7 var8 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main17 var4 var5 var3 var2) (and (= nullAddr var6) (and (and (and (= var0 (write var4 var3 (O_TSLL (TSLL (next (getTSLL (read var4 var3))) (prev (getTSLL (read var4 var3))) var2)))) (= var1 var5)) (= var6 var3)) (= var7 var2))))) (inv_main27 var0 var1 var6 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main12 var2 var4 var1 var0 var3)) (inv_main11 (write var2 var1 (O_TSLL (TSLL var3 (prev (getTSLL (read var2 var1))) (data (getTSLL (read var2 var1)))))) var4 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main12 var2 var4 var1 var0 var3) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main11 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main11 var2 var3 var1 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main13 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main14 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main17 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main27 var2 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main8 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main30 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main35 var2 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main33 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main39 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main39 var2 var3 var1 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main45 var3 var4 var2 var1 var0) (and (not (= var0 0)) (not (is-O_TSLL (read var3 var2)))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main46 var3 var4 var2 var1 var0) (not (is-O_TSLL (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main46 var3 var4 var2 var1 var0) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var2)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main43 var2 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main41 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main38 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main51 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main56 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll-circular-2.i.smt2 b/heap-theory-benchmarks/heap/dll-circular-2.i.smt2 new file mode 100644 index 00000000..2edaf972 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll-circular-2.i.smt2 @@ -0,0 +1,96 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (prev Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Addr Addr Int) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr Int) Bool) +(declare-fun inv_main15 (Heap Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main28 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Int) Bool) +(declare-fun inv_main36 (Heap Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int) Bool) +(declare-fun inv_main42 (Heap Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main47 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Int) Bool) +(declare-fun inv_main57 (Heap Addr Addr Int) Bool) +(declare-fun inv_main9 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main46 var4 var3 var2 var1 var0) (not (= var0 0)))) (inv_main47 var4 var3 var2 var1 (data (getTSLL (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main39 var4 var3 var2 var1) (and (and (and (and (= var8 var4) (= var0 var3)) (= var6 var2)) (= var5 var1)) (= var7 (next (getTSLL (read var4 var3))))))) (inv_main52 var8 var0 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main57 var6 var5 var4 var3) (and (and (and (and (= var8 var6) (= var0 var5)) (= var7 var4)) (= var2 var3)) (= var1 (next (getTSLL (read var6 var4))))))) (inv_main52 (write var8 var0 defObj) var0 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL var0 (prev (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 TSLL) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main18 var5 var4 var3 var2) (and (not (= var1 0)) (and (not (= nullAddr var7)) (and (and (and (= var8 (write var5 var3 (O_TSLL (TSLL (next (getTSLL (read var5 var3))) (prev (getTSLL (read var5 var3))) var2)))) (= var9 var4)) (= var7 var3)) (= var6 var2)))))) (inv_main13 (newHeap (alloc var8 (O_TSLL var0))) var9 var7 var6 (newAddr (alloc var8 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 TSLL)) (or (not (and (inv_main5 var3 var2) (and (not (= var4 0)) (and (= var1 (write var3 var2 (O_TSLL (TSLL (next (getTSLL (read var3 var2))) (prev (getTSLL (read var3 var2))) 0)))) (= var0 var2))))) (inv_main13 (newHeap (alloc var1 (O_TSLL var5))) var0 var0 1 (newAddr (alloc var1 (O_TSLL var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main14 var6 var5 var4 var3) (and (and (and (and (= var2 var6) (= var8 var5)) (= var7 var4)) (= var1 var3)) (= var0 (next (getTSLL (read var6 var4))))))) (inv_main15 var2 var8 var0 var1)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main15 var4 var3 var2 var1) (and (not (= var8 2)) (and (not (= var8 1)) (and (not (= var6 0)) (and (and (and (= var0 (write var4 var2 (O_TSLL (TSLL var3 (prev (getTSLL (read var4 var2))) (data (getTSLL (read var4 var2))))))) (= var7 var3)) (= var5 var2)) (= var8 var1))))))) (inv_main9 var0 var7 var5 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main18 var3 var2 var1 var0) (and (= var6 0) (and (not (= nullAddr var5)) (and (and (and (= var7 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) (prev (getTSLL (read var3 var1))) var0)))) (= var8 var2)) (= var5 var1)) (= var4 var0)))))) (inv_main9 var7 var8 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main5 var1 var0) (and (= var4 0) (and (= var3 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) 0)))) (= var2 var0))))) (inv_main9 var3 var2 var2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main42 var5 var3 var2 var1) (and (and (and (and (= var4 var5) (= var7 var3)) (= var6 var2)) (= var0 var1)) (= var8 (next (getTSLL (read var5 var2))))))) (inv_main34 var4 var7 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main31 var5 var4 var3 var2) (and (not (= nullAddr var1)) (and (and (and (and (= var8 var5) (= var0 var4)) (= var7 var3)) (= var6 var2)) (= var1 (next (getTSLL (read var5 var4)))))))) (inv_main34 var8 var0 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main4 var1 var0)) (inv_main5 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) nullAddr (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (and (inv_main52 var6 var5 var4 var3) (and (not (= var8 0)) (and (and (and (and (= var0 var6) (= var2 var5)) (= var1 var4)) (= var7 var3)) (= var8 (data (getTSLL (read var6 var4)))))))) (inv_main57 var0 var1 var1 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main13 var3 var2 var1 var0 var4)) (inv_main12 (write var3 var1 (O_TSLL (TSLL var4 (prev (getTSLL (read var3 var1))) (data (getTSLL (read var3 var1)))))) var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main34 var8 var6 var5 var4) (and (not (= var1 0)) (and (and (and (and (= var3 var8) (= var0 var6)) (= var7 var5)) (= var2 var4)) (= var1 (data (getTSLL (read var8 var5)))))))) (inv_main40 var3 var0 var7 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main15 var4 var3 var2 var1) (and (= var6 0) (and (and (and (= var0 (write var4 var2 (O_TSLL (TSLL var3 (prev (getTSLL (read var4 var2))) (data (getTSLL (read var4 var2))))))) (= var7 var3)) (= var5 var2)) (= var8 var1))))) (inv_main18 var0 var7 var5 var8)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main15 var4 var3 var2 var1) (and (= var8 1) (and (not (= var6 0)) (and (and (and (= var0 (write var4 var2 (O_TSLL (TSLL var3 (prev (getTSLL (read var4 var2))) (data (getTSLL (read var4 var2))))))) (= var7 var3)) (= var5 var2)) (= var8 var1)))))) (inv_main18 var0 var7 var5 2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main15 var4 var3 var2 var1) (and (= var8 2) (and (not (= var8 1)) (and (not (= var6 0)) (and (and (and (= var0 (write var4 var2 (O_TSLL (TSLL var3 (prev (getTSLL (read var4 var2))) (data (getTSLL (read var4 var2))))))) (= var7 var3)) (= var5 var2)) (= var8 var1))))))) (inv_main18 var0 var7 var5 3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main46 var4 var3 var2 var1 var0) (= var0 0))) (inv_main42 var4 var3 var2 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main47 var5 var4 var3 var2 var6) (and (not (= var1 0)) (and (and (and (and (= var9 var5) (= var8 var4)) (= var7 var3)) (= var0 var2)) (or (and (<= 0 (+ (data (getTSLL (read var5 (next (getTSLL (read var5 var3)))))) (* (- 1) var6))) (= var1 1)) (and (not (<= 0 (+ (data (getTSLL (read var5 (next (getTSLL (read var5 var3)))))) (* (- 1) var6)))) (= var1 0))))))) (inv_main42 var9 var8 var7 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main40 var3 var2 var1 var0)) (inv_main46 var3 var2 var1 var0 (data (getTSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main34 var6 var5 var4 var3) (and (= var2 0) (and (and (and (and (= var1 var6) (= var7 var5)) (= var0 var4)) (= var8 var3)) (= var2 (data (getTSLL (read var6 var4)))))))) (inv_main39 var1 var7 var0 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main18 var6 var5 var4 var3) (and (= nullAddr var0) (and (and (and (= var2 (write var6 var4 (O_TSLL (TSLL (next (getTSLL (read var6 var4))) (prev (getTSLL (read var6 var4))) var3)))) (= var7 var5)) (= var0 var4)) (= var1 var3))))) (inv_main28 var2 var7 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main47 var5 var4 var3 var2 var6) (and (= var1 0) (and (and (and (and (= var9 var5) (= var8 var4)) (= var7 var3)) (= var0 var2)) (or (and (<= 0 (+ (data (getTSLL (read var5 (next (getTSLL (read var5 var3)))))) (* (- 1) var6))) (= var1 1)) (and (not (<= 0 (+ (data (getTSLL (read var5 (next (getTSLL (read var5 var3)))))) (* (- 1) var6)))) (= var1 0))))))) (inv_main44 var9 var8 var7 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main12 var3 var2 var1 var0)) (inv_main14 (write var3 (next (getTSLL (read var3 var1))) (O_TSLL (TSLL (next (getTSLL (read var3 (next (getTSLL (read var3 var1)))))) var1 (data (getTSLL (read var3 (next (getTSLL (read var3 var1))))))))) var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main9 var3 var2 var1 var0)) (inv_main31 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) (prev (getTSLL (read var3 var1))) var0))) var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main31 var5 var4 var3 var2) (and (= nullAddr var1) (and (and (and (and (= var8 var5) (= var0 var4)) (= var7 var3)) (= var6 var2)) (= var1 (next (getTSLL (read var5 var4)))))))) (inv_main36 var8 var0 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main5 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main13 var3 var2 var1 var0 var4) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main12 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main12 var3 var2 var1 var0) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main14 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main15 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main18 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main28 var3 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main9 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main31 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main36 var3 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main34 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main40 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main40 var3 var2 var1 var0) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main46 var4 var3 var2 var1 var0) (and (not (= var0 0)) (not (is-O_TSLL (read var4 var2)))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (not (and (inv_main47 var3 var2 var1 var0 var4) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (not (and (inv_main47 var3 var2 var1 var0 var4) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main44 var3 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main42 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main39 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main52 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main57 var3 var2 var1 var0) (not (is-O_TSLL (read var3 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll-optional-2.i.smt2 b/heap-theory-benchmarks/heap/dll-optional-2.i.smt2 new file mode 100644 index 00000000..706af1d3 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll-optional-2.i.smt2 @@ -0,0 +1,118 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (prev Addr) (opt Addr) (data Int)) + ) +)) +(declare-fun inv_main11 (Heap Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr) Bool) +(declare-fun inv_main14 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr) Bool) +(declare-fun inv_main17 (Heap Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main25 (Heap Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Int) Bool) +(declare-fun inv_main54 (Heap Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main41 var2 var1 var0)) (inv_main46 var2 var1 var0 (data (getTSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main23 var3 var2 var0 var1)) (inv_main22 (write var3 var0 (O_TSLL (TSLL var1 (prev (getTSLL (read var3 var0))) (opt (getTSLL (read var3 var0))) (data (getTSLL (read var3 var0)))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap)) (or (not (and (inv_main54 var5 var2 var1) (and (and (and (= var6 var5) (= var4 var2)) (= var0 var1)) (= var3 (next (getTSLL (read var5 var1))))))) (inv_main55 var6 var4 var3)))) +(assert (forall ((var0 Heap) (var1 TSLL) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main7 var4 var2) (and (= var0 (write var4 var2 (O_TSLL (TSLL (next (getTSLL (read var4 var2))) (prev (getTSLL (read var4 var2))) (opt (getTSLL (read var4 var2))) 2)))) (= var3 var2)))) (inv_main12 (newHeap (alloc var0 (O_TSLL var1))) var3 (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap)) (or (not (and (inv_main4 var4 var1) (and (= var2 0) (and (= var0 0) (and (= var5 (write var4 var1 (O_TSLL (TSLL (next (getTSLL (read var4 var1))) nullAddr (opt (getTSLL (read var4 var1))) (data (getTSLL (read var4 var1))))))) (= var3 var1)))))) (inv_main14 var5 var3)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr)) (or (not (and (inv_main46 var9 var7 var0 var10) (and (and (not (= var1 0)) (and (= var10 2) (and (and (and (= var6 var9) (= var3 var7)) (= var2 var0)) (= var4 (opt (getTSLL (read var9 var0))))))) (and (and (and (= var5 var6) (= var8 var3)) (= var11 var2)) (or (and (= var4 var2) (= var1 1)) (and (not (= var4 var2)) (= var1 0))))))) (inv_main42 var5 var8 var11)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap)) (or (not (and (inv_main55 var6 var3 var0) (and (= var5 2) (and (and (and (= var1 var6) (= var2 var3)) (= var4 var0)) (= var5 (data (getTSLL (read var6 var3)))))))) (inv_main58 var1 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main35 var2 var1 var0)) (inv_main38 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) (opt (getTSLL (read var2 var0))) 0))) var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr)) (or (not (and (inv_main25 var6 var3 var1) (and (= var0 0) (and (= var5 0) (and (and (= var4 (write var6 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var6 var1))) (opt (getTSLL (read var6 var1))) (data (getTSLL (read var6 var1))))))) (= var2 var3)) (= var7 var1)))))) (inv_main35 var4 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main12 var2 var0 var1)) (inv_main11 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) var1 (data (getTSLL (read var2 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main42 var5 var3 var0) (and (not (= var6 nullAddr)) (and (and (and (= var4 var5) (= var1 var3)) (= var2 var0)) (= var6 (next (getTSLL (read var5 var0)))))))) (inv_main41 var4 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (and (inv_main18 var2 var1 var0) (and (not (= var1 nullAddr)) (= var3 0)))) (inv_main41 var2 var1 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 TSLL) (var3 Addr) (var4 Heap)) (or (not (and (inv_main18 var4 var3 var1) (not (= var0 0)))) (inv_main23 (newHeap (alloc var4 (O_TSLL var2))) var3 var1 (newAddr (alloc var4 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main42 var5 var3 var0) (and (not (= var1 nullAddr)) (and (= var6 nullAddr) (and (and (and (= var4 var5) (= var1 var3)) (= var2 var0)) (= var6 (next (getTSLL (read var5 var0))))))))) (inv_main54 var4 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (and (inv_main18 var2 var1 var0) (and (not (= var1 nullAddr)) (and (= var1 nullAddr) (= var3 0))))) (inv_main54 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr)) (or (not (and (inv_main58 var6 var2 var0) (and (and (not (= var4 nullAddr)) (and (and (= var7 (write var6 (opt (getTSLL (read var6 var2))) defObj)) (= var5 var2)) (= var8 var0))) (and (and (= var3 (write var7 var5 defObj)) (= var1 var5)) (= var4 var8))))) (inv_main54 var3 var4 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main55 var7 var5 var1) (and (and (not (= var6 nullAddr)) (and (not (= var0 2)) (and (and (and (= var2 var7) (= var4 var5)) (= var8 var1)) (= var0 (data (getTSLL (read var7 var5))))))) (and (and (= var3 (write var2 var4 defObj)) (= var9 var4)) (= var6 var8))))) (inv_main54 var3 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main33 var3 var2 var0 var1)) (inv_main32 (write var3 var0 (O_TSLL (TSLL (next (getTSLL (read var3 var0))) (prev (getTSLL (read var3 var0))) var1 (data (getTSLL (read var3 var0)))))) var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TSLL) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main28 var6 var3 var1) (and (and (= var0 (write var6 var1 (O_TSLL (TSLL (next (getTSLL (read var6 var1))) (prev (getTSLL (read var6 var1))) (opt (getTSLL (read var6 var1))) 2)))) (= var5 var3)) (= var4 var1)))) (inv_main33 (newHeap (alloc var0 (O_TSLL var2))) var5 var4 (newAddr (alloc var0 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main14 var1 var0)) (inv_main17 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) (opt (getTSLL (read var1 var0))) 0))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var0))) (opt (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main24 var3 var1 var0) (and (and (and (= var2 var3) (= var6 var1)) (= var4 var0)) (= var5 (next (getTSLL (read var3 var0))))))) (inv_main25 var2 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap)) (or (not (and (inv_main4 var3 var1) (and (not (= var0 0)) (and (= var4 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) nullAddr (opt (getTSLL (read var3 var1))) (data (getTSLL (read var3 var1))))))) (= var2 var1))))) (inv_main7 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (and (inv_main46 var2 var1 var0 var3) (not (= var3 2)))) (inv_main44 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Int)) (or (not (and (inv_main46 var9 var8 var1 var11) (and (and (= var3 0) (and (= var11 2) (and (and (and (= var7 var9) (= var4 var8)) (= var2 var1)) (= var5 (opt (getTSLL (read var9 var1))))))) (and (and (and (= var6 var7) (= var10 var4)) (= var0 var2)) (or (and (= var5 var2) (= var3 1)) (and (not (= var5 var2)) (= var3 0))))))) (inv_main44 var6 var10 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int)) (or (not (and (inv_main4 var4 var1) (and (not (= var5 0)) (and (= var0 0) (and (= var3 (write var4 var1 (O_TSLL (TSLL (next (getTSLL (read var4 var1))) nullAddr (opt (getTSLL (read var4 var1))) (data (getTSLL (read var4 var1))))))) (= var2 var1)))))) (inv_main13 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main22 var2 var1 var0)) (inv_main24 (write var2 (next (getTSLL (read var2 var0))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var0)))))) var0 (opt (getTSLL (read var2 (next (getTSLL (read var2 var0)))))) (data (getTSLL (read var2 (next (getTSLL (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main34 var2 var1 var0)) (inv_main37 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) (opt (getTSLL (read var2 var0))) 1))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr)) (or (not (and (inv_main25 var6 var3 var0) (and (not (= var2 0)) (and (= var5 0) (and (and (= var4 (write var6 var0 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var6 var0))) (opt (getTSLL (read var6 var0))) (data (getTSLL (read var6 var0))))))) (= var1 var3)) (= var7 var0)))))) (inv_main34 var4 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main13 var1 var0)) (inv_main16 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) (opt (getTSLL (read var1 var0))) 1))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main32 var2 var1 var0)) (inv_main18 (write var2 (opt (getTSLL (read var2 var0))) (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 (opt (getTSLL (read var2 var0)))))) (opt (getTSLL (read var2 (opt (getTSLL (read var2 var0)))))) (data (getTSLL (read var2 (opt (getTSLL (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main37 var2 var1 var0)) (inv_main18 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) var0 (data (getTSLL (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main38 var2 var1 var0)) (inv_main18 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) var0 (data (getTSLL (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main11 var2 var0) (and (= var1 (write var2 (opt (getTSLL (read var2 var0))) (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 (opt (getTSLL (read var2 var0)))))) (opt (getTSLL (read var2 (opt (getTSLL (read var2 var0)))))) (data (getTSLL (read var2 (opt (getTSLL (read var2 var0)))))))))) (= var3 var0)))) (inv_main18 var1 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap)) (or (not (and (inv_main16 var3 var1) (and (= var2 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) (prev (getTSLL (read var3 var1))) var1 (data (getTSLL (read var3 var1))))))) (= var0 var1)))) (inv_main18 var2 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap)) (or (not (and (inv_main17 var3 var2) (and (= var1 (write var3 var2 (O_TSLL (TSLL (next (getTSLL (read var3 var2))) (prev (getTSLL (read var3 var2))) var2 (data (getTSLL (read var3 var2))))))) (= var0 var2)))) (inv_main18 var1 var0 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main25 var5 var3 var1) (and (not (= var0 0)) (and (and (= var4 (write var5 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var5 var1))) (opt (getTSLL (read var5 var1))) (data (getTSLL (read var5 var1))))))) (= var2 var3)) (= var6 var1))))) (inv_main28 var4 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main7 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main12 var2 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main11 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main11 var1 var0) (not (is-O_TSLL (read var1 (opt (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main13 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main16 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main14 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main17 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main23 var3 var2 var0 var1) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main22 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main22 var2 var1 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main24 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main25 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main28 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main33 var3 var2 var0 var1) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main32 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main32 var2 var1 var0) (not (is-O_TSLL (read var2 (opt (getTSLL (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main34 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main35 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main38 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main41 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (not (and (inv_main46 var2 var1 var0 var3) (and (= var3 2) (not (is-O_TSLL (read var2 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main44 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main42 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main54 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main55 var2 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main58 var2 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll-queue-2.i.smt2 b/heap-theory-benchmarks/heap/dll-queue-2.i.smt2 new file mode 100644 index 00000000..a9558509 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll-queue-2.i.smt2 @@ -0,0 +1,156 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (prev Addr) (data Int)) + ) +)) +(declare-fun inv_main101 (Heap Addr Addr Int) Bool) +(declare-fun inv_main105 (Heap Addr Addr Int) Bool) +(declare-fun inv_main108 (Heap Addr Addr Int) Bool) +(declare-fun inv_main111 (Heap Addr Addr Int) Bool) +(declare-fun inv_main113 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int) Bool) +(declare-fun inv_main121 (Heap Addr Addr Int) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr Int) Bool) +(declare-fun inv_main15 (Heap Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Addr Addr Int) Bool) +(declare-fun inv_main19 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int) Bool) +(declare-fun inv_main25 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Int) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int) Bool) +(declare-fun inv_main47 (Heap Addr Addr Int) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Int) Bool) +(declare-fun inv_main55 (Heap Addr Addr Int) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int) Bool) +(declare-fun inv_main60 (Heap Addr Addr Int) Bool) +(declare-fun inv_main63 (Heap Addr Addr Int) Bool) +(declare-fun inv_main65 (Heap Addr Addr Int) Bool) +(declare-fun inv_main70 (Heap Addr Addr Int) Bool) +(declare-fun inv_main74 (Heap Addr Addr Int) Bool) +(declare-fun inv_main77 (Heap Addr Addr Int) Bool) +(declare-fun inv_main79 (Heap Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Addr Addr Int) Bool) +(declare-fun inv_main82 (Heap Addr Addr Int) Bool) +(declare-fun inv_main84 (Heap Addr Addr Int) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int) Bool) +(declare-fun inv_main90 (Heap Addr Addr Int) Bool) +(declare-fun inv_main94 (Heap Addr Addr Int) Bool) +(declare-fun inv_main96 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main74 var2 var6 var5 var8) (and (and (and (and (= var4 var2) (= var7 var6)) (= var3 var5)) (= var0 var8)) (= var1 (next (getTSLL (read var2 var6))))))) (inv_main105 var4 var7 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main111 var2 var5 var4 var7) (and (and (and (and (= var0 var2) (= var8 var5)) (= var3 var4)) (= var6 var7)) (= var1 (next (getTSLL (read var2 var4))))))) (inv_main105 var0 var8 var1 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (inv_main12 var0 var2 var1 var3)) (inv_main14 (write var0 (next (getTSLL (read var0 var1))) (O_TSLL (TSLL (next (getTSLL (read var0 (next (getTSLL (read var0 var1)))))) var1 (data (getTSLL (read var0 (next (getTSLL (read var0 var1))))))))) var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main13 var1 var3 var2 var4 var0)) (inv_main12 (write var1 var2 (O_TSLL (TSLL var0 (prev (getTSLL (read var1 var2))) (data (getTSLL (read var1 var2)))))) var3 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main77 var0 var3 var2 var5) (and (not (= var7 nullAddr)) (and (and (and (and (= var6 var0) (= var8 var3)) (= var4 var2)) (= var1 var5)) (= var7 (next (getTSLL (read var0 var3)))))))) (inv_main82 var6 var8 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main42 var0 var2 var1 var3) (and (not (= var2 nullAddr)) (= var3 2)))) (inv_main58 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main105 var0 var2 var1 var3) (and (not (= var4 0)) (not (= var1 nullAddr))))) (inv_main108 var0 var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main45 var1 var5 var4 var7) (and (= var0 nullAddr) (and (and (and (and (= var8 var1) (= var6 var5)) (= var2 var4)) (= var3 var7)) (= var0 (next (getTSLL (read var1 var5)))))))) (inv_main51 var8 var6 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 TSLL) (var5 Int)) (or (not (and (inv_main8 var0 var2 var1 var3) (not (= var5 0)))) (inv_main13 (newHeap (alloc var0 (O_TSLL var4))) var2 var1 var3 (newAddr (alloc var0 (O_TSLL var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main8 var1 var3 var2 var4) (and (= var3 nullAddr) (and (= var4 1) (and (not (= var3 nullAddr)) (= var0 0)))))) (inv_main47 var1 var3 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main55 var0 var2 var1 var3) (not (= var3 3)))) (inv_main74 var0 var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main94 var2 var5 var4 var6) (and (not (= var7 3)) (and (and (and (and (= var1 var2) (= var8 var5)) (= var0 var4)) (= var3 var6)) (= var7 (data (getTSLL (read var2 (next (getTSLL (read var2 (next (getTSLL (read var2 (next (getTSLL (read var2 var5))))))))))))))))) (inv_main74 var1 var8 var0 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main55 var0 var2 var1 var3) (and (= var2 nullAddr) (= var3 3)))) (inv_main79 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main55 var0 var2 var1 var3) (and (not (= var2 nullAddr)) (= var3 3)))) (inv_main77 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main4 var0 var1)) (inv_main5 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) nullAddr (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int)) (or (not (and (inv_main77 var3 var5 var4 var7) (and (= var6 nullAddr) (and (and (and (and (= var0 var3) (= var1 var5)) (= var2 var4)) (= var8 var7)) (= var6 (next (getTSLL (read var3 var5)))))))) (inv_main84 var0 var1 var2 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main58 var0 var4 var3 var7) (and (= var8 nullAddr) (and (and (and (and (= var5 var0) (= var2 var4)) (= var1 var3)) (= var6 var7)) (= var8 (next (getTSLL (read var0 var4)))))))) (inv_main65 var5 var2 var1 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main94 var1 var3 var2 var5) (and (= var6 3) (and (and (and (and (= var8 var1) (= var7 var3)) (= var4 var2)) (= var0 var5)) (= var6 (data (getTSLL (read var1 (next (getTSLL (read var1 (next (getTSLL (read var1 (next (getTSLL (read var1 var3))))))))))))))))) (inv_main101 var8 var7 var4 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main18 var0 var2 var1 var3) (= var2 nullAddr))) (inv_main30 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main108 var0 var2 var1 var3) (= var3 0))) (inv_main111 var0 var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Addr)) (or (not (and (inv_main108 var10 var3 var11 var5) (and (and (not (= var4 0)) (and (not (= var5 0)) (and (and (and (and (= var6 var10) (= var1 var3)) (= var0 var11)) (= var9 var5)) (= var7 (data (getTSLL (read var10 var11))))))) (and (and (and (and (= var12 var6) (= var2 var1)) (= var13 var0)) (= var8 var9)) (or (and (<= 0 (+ var7 (- 1))) (= var4 1)) (and (not (<= 0 (+ var7 (- 1)))) (= var4 0))))))) (inv_main111 var12 var2 var13 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (and (inv_main88 var2 var4 var3 var7) (and (= var0 nullAddr) (and (and (and (and (= var6 var2) (= var5 var4)) (= var1 var3)) (= var8 var7)) (= var0 (next (getTSLL (read var2 (next (getTSLL (read var2 (next (getTSLL (read var2 var4)))))))))))))) (inv_main96 var6 var5 var1 var8)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main63 var1 var3 var2 var5) (and (= var6 nullAddr) (and (and (and (and (= var0 var1) (= var4 var3)) (= var8 var2)) (= var7 var5)) (= var6 (next (getTSLL (read var1 (next (getTSLL (read var1 var3))))))))))) (inv_main70 var0 var4 var8 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main105 var0 var2 var1 var3) (and (not (= var2 nullAddr)) (= var1 nullAddr)))) (inv_main121 var0 var2 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main105 var0 var2 var1 var4) (and (not (= var2 nullAddr)) (and (= var3 0) (not (= var1 nullAddr)))))) (inv_main121 var0 var2 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main121 var0 var5 var4 var8) (and (and (not (= var9 nullAddr)) (and (and (and (and (= var2 var0) (= var11 var5)) (= var7 var4)) (= var3 var8)) (= var6 (next (getTSLL (read var0 var5)))))) (and (and (and (= var1 (write var2 var7 defObj)) (= var9 var6)) (= var10 var7)) (= var12 var3))))) (inv_main121 var1 var9 var9 var12)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main15 var1 var5 var4 var7) (and (= var0 0) (and (and (and (= var3 (write var1 var4 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var4))) (data (getTSLL (read var1 var4))))))) (= var2 var5)) (= var6 var4)) (= var0 var7))))) (inv_main19 var3 var2 var6 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main8 var1 var3 var2 var4) (and (not (= var3 nullAddr)) (and (= var4 1) (and (not (= var3 nullAddr)) (= var0 0)))))) (inv_main45 var1 var3 var2 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main82 var2 var5 var4 var7) (and (not (= var6 nullAddr)) (and (and (and (and (= var1 var2) (= var3 var5)) (= var8 var4)) (= var0 var7)) (= var6 (next (getTSLL (read var2 (next (getTSLL (read var2 var5))))))))))) (inv_main88 var1 var3 var8 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main8 var1 var3 var2 var4) (and (= var3 nullAddr) (= var0 0)))) (inv_main39 var1 var3 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main42 var0 var2 var1 var3) (and (= var2 nullAddr) (= var3 2)))) (inv_main60 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main18 var0 var2 var1 var3) (and (= var1 nullAddr) (not (= var2 nullAddr))))) (inv_main34 var0 var2 var1 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main8 var1 var3 var2 var4) (and (not (= var4 1)) (and (not (= var3 nullAddr)) (= var0 0))))) (inv_main42 var1 var3 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main45 var0 var3 var2 var7) (and (not (= var4 nullAddr)) (and (and (and (and (= var1 var0) (= var6 var3)) (= var8 var2)) (= var5 var7)) (= var4 (next (getTSLL (read var0 var3)))))))) (inv_main42 var1 var6 var8 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main14 var0 var4 var3 var5) (and (and (and (and (= var2 var0) (= var1 var4)) (= var6 var3)) (= var7 var5)) (= var8 (next (getTSLL (read var0 var3))))))) (inv_main15 var2 var1 var8 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main18 var0 var2 var1 var3) (and (not (= var1 nullAddr)) (not (= var2 nullAddr))))) (inv_main8 var0 var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main5 var1 var3) (and (= var2 (write var1 var3 (O_TSLL (TSLL (next (getTSLL (read var1 var3))) (prev (getTSLL (read var1 var3))) 0)))) (= var0 var3)))) (inv_main8 var2 var0 var0 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main58 var1 var4 var3 var7) (and (not (= var2 nullAddr)) (and (and (and (and (= var6 var1) (= var8 var4)) (= var5 var3)) (= var0 var7)) (= var2 (next (getTSLL (read var1 var4)))))))) (inv_main63 var6 var8 var5 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr)) (or (not (and (inv_main15 var2 var4 var3 var5) (and (= var0 1) (and (not (= var0 0)) (and (and (and (= var6 (write var2 var3 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 var3))) (data (getTSLL (read var2 var3))))))) (= var7 var4)) (= var1 var3)) (= var0 var5)))))) (inv_main22 var6 var7 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main42 var0 var2 var1 var3) (not (= var3 2)))) (inv_main55 var0 var2 var1 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main63 var1 var4 var3 var6) (and (not (= var5 nullAddr)) (and (and (and (and (= var8 var1) (= var2 var4)) (= var7 var3)) (= var0 var6)) (= var5 (next (getTSLL (read var1 (next (getTSLL (read var1 var4))))))))))) (inv_main55 var8 var2 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main88 var3 var5 var4 var7) (and (not (= var0 nullAddr)) (and (and (and (and (= var1 var3) (= var2 var5)) (= var8 var4)) (= var6 var7)) (= var0 (next (getTSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 var5)))))))))))))) (inv_main94 var1 var2 var8 var6)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 var1))) (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr)) (or (not (and (inv_main15 var2 var4 var3 var5) (and (<= 0 (+ var0 (- 2))) (and (not (= var0 1)) (and (not (= var0 0)) (and (and (and (= var6 (write var2 var3 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 var3))) (data (getTSLL (read var2 var3))))))) (= var7 var4)) (= var1 var3)) (= var0 var5))))))) (inv_main25 var6 var7 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main82 var2 var4 var3 var6) (and (= var0 nullAddr) (and (and (and (and (= var1 var2) (= var5 var4)) (= var8 var3)) (= var7 var6)) (= var0 (next (getTSLL (read var2 (next (getTSLL (read var2 var4))))))))))) (inv_main90 var1 var5 var8 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr)) (or (not (and (inv_main19 var1 var3 var2 var6) (and (and (and (= var4 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) 1)))) (= var7 var3)) (= var0 var2)) (= var5 var6)))) (inv_main18 var4 var7 var0 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap)) (or (not (and (inv_main22 var1 var4 var3 var5) (and (and (and (= var7 (write var1 var3 (O_TSLL (TSLL (next (getTSLL (read var1 var3))) (prev (getTSLL (read var1 var3))) 2)))) (= var2 var4)) (= var0 var3)) (= var6 var5)))) (inv_main18 var7 var2 var0 2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr)) (or (not (and (inv_main15 var2 var4 var3 var5) (and (not (<= 0 (+ var0 (- 2)))) (and (not (= var0 1)) (and (not (= var0 0)) (and (and (and (= var6 (write var2 var3 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var2 var3))) (data (getTSLL (read var2 var3))))))) (= var7 var4)) (= var1 var3)) (= var0 var5))))))) (inv_main18 var6 var7 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main25 var1 var3 var2 var4) (and (and (and (= var0 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) 3)))) (= var6 var3)) (= var5 var2)) (= var7 var4)))) (inv_main18 var0 var6 var5 3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main108 var9 var3 var11 var5) (and (and (= var1 0) (and (not (= var5 0)) (and (and (and (and (= var6 var9) (= var2 var3)) (= var0 var11)) (= var8 var5)) (= var7 (data (getTSLL (read var9 var11))))))) (and (and (and (and (= var10 var6) (= var13 var2)) (= var12 var0)) (= var4 var8)) (or (and (<= 0 (+ var7 (- 1))) (= var1 1)) (and (not (<= 0 (+ var7 (- 1)))) (= var1 0))))))) (inv_main113 var10 var13 var12 var4)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main5 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main13 var1 var3 var2 var4 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main12 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main12 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main14 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main15 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main19 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main22 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main25 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main30 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main34 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main39 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main47 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main45 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main51 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main60 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main58 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main65 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main63 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main63 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var2)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main70 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main79 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main77 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main84 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main82 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main82 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var2)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main90 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main88 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main88 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var2)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main88 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 (next (getTSLL (read var0 var2))))))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main96 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main94 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main94 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var2)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main94 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 (next (getTSLL (read var0 var2))))))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main94 var0 var2 var1 var3) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 (next (getTSLL (read var0 (next (getTSLL (read var0 var2)))))))))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main101 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main74 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main108 var0 var2 var1 var3) (and (not (= var3 0)) (not (is-O_TSLL (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (inv_main113 var0 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main111 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main121 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll-rb-sentinel-1.i.smt2 b/heap-theory-benchmarks/heap/dll-rb-sentinel-1.i.smt2 new file mode 100644 index 00000000..b866aaf6 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll-rb-sentinel-1.i.smt2 @@ -0,0 +1,143 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (prev Addr) (colour Int)) + ) +)) +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main61 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main65 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main77 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Addr Addr) Bool) +(declare-fun inv_main81 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main21 var2 var3 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main34 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 TSLL) (var3 Heap) (var4 Addr)) (or (not (and (inv_main5 var3 var4) (and (= var1 (write var3 var4 (O_TSLL (TSLL (next (getTSLL (read var3 var4))) (prev (getTSLL (read var3 var4))) 1)))) (= var0 var4)))) (inv_main7 (newHeap (alloc var1 (O_TSLL var2))) var0 (newAddr (alloc var1 (O_TSLL var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main81 var4 var6 var1 var2) (and (and (and (and (= var0 var4) (= var7 var6)) (= var5 var1)) (= var8 var2)) (= var3 (next (getTSLL (read var4 var2))))))) (inv_main58 (write var0 var8 defObj) var7 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Heap)) (or (not (and (inv_main78 var9 var10 var3 var5) (and (and (and (and (and (= var8 var9) (= var4 var10)) (= var7 var3)) (= var6 var5)) (= var2 (next (getTSLL (read var9 var3))))) (and (and (and (= var12 (write var8 var7 defObj)) (= var11 var4)) (= var1 var7)) (= var0 var2))))) (inv_main58 var12 var11 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main60 var4 var7 var1 var2) (and (= var3 var0) (and (and (and (and (= var5 var4) (= var3 var7)) (= var8 var1)) (= var6 var2)) (= var0 (next (getTSLL (read var4 var2)))))))) (inv_main58 var5 var3 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main48 var2 var3 var0 var1) (and (= var3 var1) (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main58 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main58 var2 var3 var0 var1) (not (= var3 var0)))) (inv_main76 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main26 var2 var3 var0 var1)) (inv_main28 (write var2 (next (getTSLL (read var2 var1))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var1)))))) var1 (colour (getTSLL (read var2 (next (getTSLL (read var2 var1))))))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main58 var2 var3 var0 var1) (= var3 var0))) (inv_main0 var2 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main11 var3 var4 var0 var2) (and (= var4 var0) (= var1 0)))) (inv_main50 var3 var4 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main48 var2 var3 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main55 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main61 var5 var7 var0 var4) (and (not (= var8 var2)) (and (and (and (and (= var6 var5) (= var8 var7)) (= var1 var0)) (= var3 var4)) (= var2 (next (getTSLL (read var5 var4)))))))) (inv_main65 var6 var8 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main7 var1 var2 var0)) (inv_main8 (write var1 var0 (O_TSLL (TSLL var2 (prev (getTSLL (read var1 var0))) (colour (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main18 var5 var7 var0 var3) (and (not (= var6 0)) (and (and (and (= var1 (write var5 var3 (O_TSLL (TSLL var7 (prev (getTSLL (read var5 var3))) (colour (getTSLL (read var5 var3))))))) (= var2 var7)) (= var8 var0)) (= var4 var3))))) (inv_main22 var1 var2 var8 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main28 var4 var6 var1 var2) (and (and (and (and (= var3 var4) (= var8 var6)) (= var7 var1)) (= var0 var2)) (= var5 (next (getTSLL (read var4 var2))))))) (inv_main29 var3 var8 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main59 var2 var3 var0 var1) (not (= 0 (colour (getTSLL (read var2 var1))))))) (inv_main60 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main65 var2 var3 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main60 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main11 var3 var4 var0 var2) (and (not (= var4 var0)) (= var1 0)))) (inv_main48 var3 var4 var0 var0)))) +(assert (forall ((var0 Addr) (var1 TSLL) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main11 var4 var5 var0 var3) (not (= var2 0)))) (inv_main16 (newHeap (alloc var4 (O_TSLL var1))) var5 var0 var3 (newAddr (alloc var4 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main76 var2 var3 var0 var1) (not (= 0 (colour (getTSLL (read var2 var0))))))) (inv_main78 var2 var3 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main77 var6 var8 var1 var2) (and (and (and (and (= var0 var6) (= var3 var8)) (= var7 var1)) (= var4 var2)) (= var5 (next (getTSLL (read var6 var1))))))) (inv_main81 (write var0 var7 defObj) var3 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main22 var2 var3 var0 var1)) (inv_main21 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 1))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main31 var2 var3 var0 var1)) (inv_main21 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 1))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main27 var2 var3 var0 var1 var4)) (inv_main26 (write var2 var1 (O_TSLL (TSLL var4 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1)))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main32 var2 var3 var0 var1) (and (not (= var3 var1)) (= var3 (next (getTSLL (read var2 var1))))))) (inv_main11 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (and (inv_main9 var3 var5 var1) (and (and (= var2 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) (prev (getTSLL (read var3 var1))) 1)))) (= var4 var5)) (= var0 var1)))) (inv_main11 var2 var4 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main61 var5 var7 var0 var4) (and (= var8 var2) (and (and (and (and (= var6 var5) (= var8 var7)) (= var1 var0)) (= var3 var4)) (= var2 (next (getTSLL (read var5 var4)))))))) (inv_main67 var6 var8 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 var1))) (colour (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main17 var6 var7 var1 var3) (and (and (and (and (= var8 var6) (= var0 var7)) (= var5 var1)) (= var2 var3)) (= var4 (next (getTSLL (read var6 var3))))))) (inv_main18 var8 var0 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main32 var2 var3 var0 var1) (and (= var3 var1) (= var3 (next (getTSLL (read var2 var1))))))) (inv_main43 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main76 var2 var3 var0 var1) (= 0 (colour (getTSLL (read var2 var0)))))) (inv_main77 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main21 var2 var3 var0 var1) (= 1 (colour (getTSLL (read var2 var1)))))) (inv_main32 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main15 var2 var3 var0 var1)) (inv_main17 (write var2 (next (getTSLL (read var2 var1))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var1)))))) var1 (colour (getTSLL (read var2 (next (getTSLL (read var2 var1))))))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main8 var1 var2 var0)) (inv_main9 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) var2 (colour (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main32 var2 var3 var0 var1) (not (= var3 (next (getTSLL (read var2 var1))))))) (inv_main39 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main65 var2 var3 var0 var1) (= 1 (colour (getTSLL (read var2 var1)))))) (inv_main71 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 TSLL) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main23 var6 var7 var0 var3) (and (and (and (= var4 (write var6 var3 (O_TSLL (TSLL (next (getTSLL (read var6 var3))) (prev (getTSLL (read var6 var3))) 0)))) (= var8 var7)) (= var1 var0)) (= var5 var3)))) (inv_main27 (newHeap (alloc var4 (O_TSLL var2))) var8 var1 var5 (newAddr (alloc var4 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main18 var5 var6 var0 var3) (and (= var8 0) (and (and (and (= var1 (write var5 var3 (O_TSLL (TSLL var6 (prev (getTSLL (read var5 var3))) (colour (getTSLL (read var5 var3))))))) (= var2 var6)) (= var7 var0)) (= var4 var3))))) (inv_main23 var1 var2 var7 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main29 var2 var3 var0 var1)) (inv_main31 (write var2 var1 (O_TSLL (TSLL var3 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1)))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main16 var2 var4 var0 var1 var3)) (inv_main15 (write var2 var1 (O_TSLL (TSLL var3 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1)))))) var4 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main60 var4 var7 var1 var2) (and (not (= var3 var0)) (and (and (and (and (= var5 var4) (= var3 var7)) (= var8 var1)) (= var6 var2)) (= var0 (next (getTSLL (read var4 var2)))))))) (inv_main59 var5 var3 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main48 var2 var3 var0 var1) (and (not (= var3 var1)) (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main59 var2 var3 var0 var1)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main4 var0 var1)) (inv_main5 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) nullAddr (colour (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main59 var2 var3 var0 var1) (= 0 (colour (getTSLL (read var2 var1)))))) (inv_main61 var2 var3 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main5 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main7 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main8 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main9 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main16 var2 var4 var0 var1 var3) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var3 var0 var1) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main17 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main18 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main22 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main23 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main27 var2 var3 var0 var1 var4) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var3 var0 var1) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main28 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main29 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main31 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main21 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main34 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main32 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main39 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main43 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main50 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main48 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main55 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main59 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main61 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main67 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main65 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main71 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main60 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main76 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main77 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main81 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main78 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main0 var0 var2) (not (= (read var0 var1) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll-rb-sentinel-2.i.smt2 b/heap-theory-benchmarks/heap/dll-rb-sentinel-2.i.smt2 new file mode 100644 index 00000000..4df0964e --- /dev/null +++ b/heap-theory-benchmarks/heap/dll-rb-sentinel-2.i.smt2 @@ -0,0 +1,138 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (prev Addr) (colour Int)) + ) +)) +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main61 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main65 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main77 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Addr Addr) Bool) +(declare-fun inv_main81 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main29 var2 var3 var0 var1)) (inv_main31 (write var2 var1 (O_TSLL (TSLL var3 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1)))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main32 var2 var3 var0 var1) (not (= var3 (next (getTSLL (read var2 var1))))))) (inv_main39 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main32 var2 var3 var0 var1) (and (= var3 var1) (= var3 (next (getTSLL (read var2 var1))))))) (inv_main43 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main21 var2 var3 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main34 var2 var3 var0 var1)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main76 var2 var3 var0 var1) (not (= 0 (colour (getTSLL (read var2 var0))))))) (inv_main78 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main77 var5 var6 var0 var1) (and (and (and (and (= var7 var5) (= var8 var6)) (= var2 var0)) (= var4 var1)) (= var3 (next (getTSLL (read var5 var0))))))) (inv_main81 (write var7 var2 defObj) var8 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 var1))) (colour (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr)) (or (not (and (inv_main81 var6 var9 var2 var3) (and (and (not (= var11 var0)) (and (and (and (and (= var10 var6) (= var5 var9)) (= var8 var2)) (= var1 var3)) (= var12 (next (getTSLL (read var6 var3)))))) (and (and (and (= var4 (write var10 var1 defObj)) (= var11 var5)) (= var0 var12)) (= var7 var1))))) (inv_main76 var4 var11 var0 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main78 var6 var9 var1 var2) (and (not (= var12 var7)) (and (and (and (and (and (= var0 var6) (= var4 var9)) (= var10 var1)) (= var5 var2)) (= var8 (next (getTSLL (read var6 var1))))) (and (and (and (= var3 (write var0 var10 defObj)) (= var12 var4)) (= var11 var10)) (= var7 var8)))))) (inv_main76 var3 var12 var7 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main60 var4 var6 var1 var2) (and (not (= var8 var7)) (and (= var8 var5) (and (and (and (and (= var3 var4) (= var8 var6)) (= var7 var1)) (= var0 var2)) (= var5 (next (getTSLL (read var4 var2))))))))) (inv_main76 var3 var8 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main48 var2 var3 var0 var1) (and (not (= var3 var0)) (and (= var3 var1) (= 1 (colour (getTSLL (read var2 var1)))))))) (inv_main76 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main60 var4 var6 var1 var2) (and (not (= var8 var5)) (and (and (and (and (= var3 var4) (= var8 var6)) (= var7 var1)) (= var0 var2)) (= var5 (next (getTSLL (read var4 var2)))))))) (inv_main59 var3 var8 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main48 var2 var3 var0 var1) (and (not (= var3 var1)) (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main59 var2 var3 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main4 var0 var1)) (inv_main5 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) nullAddr (colour (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main17 var3 var6 var1 var2) (and (and (and (and (= var8 var3) (= var7 var6)) (= var5 var1)) (= var4 var2)) (= var0 (next (getTSLL (read var3 var2))))))) (inv_main18 var8 var7 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main26 var2 var3 var0 var1)) (inv_main28 (write var2 (next (getTSLL (read var2 var1))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var1)))))) var1 (colour (getTSLL (read var2 (next (getTSLL (read var2 var1))))))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main18 var3 var5 var0 var1) (and (= var2 0) (and (and (and (= var4 (write var3 var1 (O_TSLL (TSLL var5 (prev (getTSLL (read var3 var1))) (colour (getTSLL (read var3 var1))))))) (= var8 var5)) (= var7 var0)) (= var6 var1))))) (inv_main23 var4 var8 var7 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main11 var2 var4 var0 var1) (and (not (= var4 var0)) (= var3 0)))) (inv_main48 var2 var4 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main7 var1 var2 var0)) (inv_main8 (write var1 var0 (O_TSLL (TSLL var2 (prev (getTSLL (read var1 var0))) (colour (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main65 var2 var3 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main71 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 TSLL) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main23 var5 var7 var1 var2) (and (and (and (= var8 (write var5 var2 (O_TSLL (TSLL (next (getTSLL (read var5 var2))) (prev (getTSLL (read var5 var2))) 0)))) (= var6 var7)) (= var0 var1)) (= var3 var2)))) (inv_main27 (newHeap (alloc var8 (O_TSLL var4))) var6 var0 var3 (newAddr (alloc var8 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main27 var2 var3 var0 var1 var4)) (inv_main26 (write var2 var1 (O_TSLL (TSLL var4 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1)))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main59 var2 var3 var0 var1) (not (= 0 (colour (getTSLL (read var2 var1))))))) (inv_main60 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main65 var2 var3 var0 var1) (= 1 (colour (getTSLL (read var2 var1)))))) (inv_main60 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main21 var2 var3 var0 var1) (= 1 (colour (getTSLL (read var2 var1)))))) (inv_main32 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main16 var2 var3 var0 var1 var4)) (inv_main15 (write var2 var1 (O_TSLL (TSLL var4 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1)))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main76 var2 var3 var0 var1) (= 0 (colour (getTSLL (read var2 var0)))))) (inv_main77 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main48 var2 var3 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main55 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main11 var2 var4 var0 var1) (and (= var4 var0) (= var3 0)))) (inv_main50 var2 var4 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main61 var5 var6 var1 var2) (and (not (= var3 var7)) (and (and (and (and (= var8 var5) (= var3 var6)) (= var0 var1)) (= var4 var2)) (= var7 (next (getTSLL (read var5 var2)))))))) (inv_main65 var8 var3 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main18 var2 var4 var0 var1) (and (not (= var7 0)) (and (and (and (= var3 (write var2 var1 (O_TSLL (TSLL var4 (prev (getTSLL (read var2 var1))) (colour (getTSLL (read var2 var1))))))) (= var8 var4)) (= var6 var0)) (= var5 var1))))) (inv_main22 var3 var8 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 TSLL) (var5 Addr)) (or (not (and (inv_main11 var3 var5 var0 var1) (not (= var2 0)))) (inv_main16 (newHeap (alloc var3 (O_TSLL var4))) var5 var0 var1 (newAddr (alloc var3 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main59 var2 var3 var0 var1) (= 0 (colour (getTSLL (read var2 var1)))))) (inv_main61 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main28 var5 var7 var1 var2) (and (and (and (and (= var8 var5) (= var0 var7)) (= var3 var1)) (= var6 var2)) (= var4 (next (getTSLL (read var5 var2))))))) (inv_main29 var8 var0 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main15 var2 var3 var0 var1)) (inv_main17 (write var2 (next (getTSLL (read var2 var1))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var1)))))) var1 (colour (getTSLL (read var2 (next (getTSLL (read var2 var1))))))))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main22 var2 var3 var0 var1)) (inv_main21 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 1))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main31 var2 var3 var0 var1)) (inv_main21 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 1))) var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main61 var5 var6 var1 var2) (and (= var3 var7) (and (and (and (and (= var8 var5) (= var3 var6)) (= var0 var1)) (= var4 var2)) (= var7 (next (getTSLL (read var5 var2)))))))) (inv_main67 var8 var3 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main8 var1 var2 var0)) (inv_main9 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) var2 (colour (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 TSLL) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap)) (or (not (and (inv_main5 var2 var3) (and (= var4 (write var2 var3 (O_TSLL (TSLL (next (getTSLL (read var2 var3))) (prev (getTSLL (read var2 var3))) 1)))) (= var1 var3)))) (inv_main7 (newHeap (alloc var4 (O_TSLL var0))) var1 (newAddr (alloc var4 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main32 var2 var3 var0 var1) (and (not (= var3 var1)) (= var3 (next (getTSLL (read var2 var1))))))) (inv_main11 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main9 var2 var4 var0) (and (and (= var1 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) 1)))) (= var3 var4)) (= var5 var0)))) (inv_main11 var1 var3 var5 var5)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main5 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main7 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main8 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main9 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main16 var2 var3 var0 var1 var4) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var3 var0 var1) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main17 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main18 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main22 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main23 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main27 var2 var3 var0 var1 var4) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var3 var0 var1) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main28 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main29 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main31 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main21 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main34 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main32 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main39 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main43 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main50 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main48 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main55 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main59 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main61 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main67 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main65 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main71 var2 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main60 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main76 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main77 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main81 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main78 var2 var3 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll-reverse.i.smt2 b/heap-theory-benchmarks/heap/dll-reverse.i.smt2 new file mode 100644 index 00000000..e4986b8a --- /dev/null +++ b/heap-theory-benchmarks/heap/dll-reverse.i.smt2 @@ -0,0 +1,132 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TDLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TDLL (getTDLL TDLL)) + (defObj) + ) + ( + (TDLL (next Addr) (prev Addr) (data Int)) + ) +)) +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main25 (Heap Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main63 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main65 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main68 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main69 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main77 (Heap Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main40 var0 var2 var1 var3)) (inv_main39 (write var0 var1 (O_TDLL (TDLL var3 (prev (getTDLL (read var0 var1))) (data (getTDLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main23 var0 var4 var2) (and (and (and (= var5 var0) (= var1 var4)) (= var6 var2)) (= var3 (next (getTDLL (read var0 var2))))))) (inv_main17 var5 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main16 var0 var4 var3) (and (= var1 0) (and (and (= var2 (write var0 var3 (O_TDLL (TDLL (next (getTDLL (read var0 var3))) (prev (getTDLL (read var0 var3))) 0)))) (= var6 var4)) (= var5 var3))))) (inv_main17 var2 var6 var6)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main5 var0 var3) (and (= var4 0) (and (= var1 (write var0 var3 (O_TDLL (TDLL (next (getTDLL (read var0 var3))) (prev (getTDLL (read var0 var3))) 0)))) (= var2 var3))))) (inv_main17 var1 var2 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main13 var0 var4 var1) (and (and (and (= var3 var0) (= var6 var4)) (= var5 var1)) (= var2 (next (getTDLL (read var0 var1))))))) (inv_main14 var3 var6 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main50 var0 var7 var4 var1 var5) (and (not (= var8 nullAddr)) (and (and (and (and (= var9 (write var0 var4 (O_TDLL (TDLL (next (getTDLL (read var0 var4))) var5 (data (getTDLL (read var0 var4))))))) (= var2 var7)) (= var3 var4)) (= var6 var1)) (= var8 var5))))) (inv_main48 var9 var2 var8 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main44 var0 var8 var3) (and (and (not (= var4 nullAddr)) (and (and (and (= var5 var7) (= var4 var6)) (= var9 var2)) (= var1 nullAddr))) (and (and (= var7 (write var0 var3 (O_TDLL (TDLL (next (getTDLL (read var0 var3))) (prev (getTDLL (read var0 var3))) 2)))) (= var6 var8)) (= var2 var3))))) (inv_main48 var5 var4 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main37 var0 var8 var5) (and (and (not (= var6 nullAddr)) (and (and (and (= var1 var4) (= var6 var7)) (= var9 var3)) (= var2 nullAddr))) (and (and (= var4 (write var0 (next (getTDLL (read var0 var5))) (O_TDLL (TDLL (next (getTDLL (read var0 (next (getTDLL (read var0 var5)))))) (prev (getTDLL (read var0 (next (getTDLL (read var0 var5)))))) 2)))) (= var7 var8)) (= var3 var5))))) (inv_main48 var1 var6 var6 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main17 var0 var3 var2) (and (not (= var6 nullAddr)) (and (= var1 nullAddr) (and (and (and (= var5 var0) (= var4 var3)) (= var6 var2)) (= var1 (next (getTDLL (read var0 var2))))))))) (inv_main29 var5 var4 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main17 var0 var5 var3) (and (not (= var4 nullAddr)) (and (= var6 0) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var5)) (= var4 var3)) (= var7 (next (getTDLL (read var0 var3)))))))))) (inv_main29 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main54 var0 var3 var2 var1) (and (not (= var3 nullAddr)) (= var2 nullAddr)))) (inv_main77 var0 var3 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr)) (or (not (and (inv_main77 var0 var9 var3 var1) (and (and (not (= var12 nullAddr)) (and (and (and (and (= var6 var0) (= var4 var9)) (= var11 var3)) (= var7 var1)) (= var2 (next (getTDLL (read var0 var3)))))) (and (and (and (= var10 (write var6 var4 defObj)) (= var8 var4)) (= var12 var2)) (= var5 var7))))) (inv_main77 var10 var12 var12 var5)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main4 var0 var1)) (inv_main5 (write var0 var1 (O_TDLL (TDLL (next (getTDLL (read var0 var1))) nullAddr (data (getTDLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main49 var0 var4 var2 var1 var3)) (inv_main50 (write var0 var2 (O_TDLL (TDLL var1 (prev (getTDLL (read var0 var2))) (data (getTDLL (read var0 var2)))))) var4 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr)) (or (not (and (inv_main69 var0 var9 var6 var1 var10 var5) (and (and (and (and (and (and (= var2 var0) (= var7 var9)) (= var8 var6)) (= var12 var1)) (= var3 var10)) (= var4 var5)) (= var11 (next (getTDLL (read var0 var6))))))) (inv_main68 var2 var7 var11 var12 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int)) (or (not (and (inv_main63 var0 var10 var5 var1 var11 var4) (and (not (= var6 2)) (and (and (and (and (and (and (= var3 var0) (= var2 var10)) (= var9 var5)) (= var8 var1)) (= var12 var11)) (= var7 var4)) (= var6 (data (getTDLL (read var0 var5)))))))) (inv_main68 var3 var2 var9 var8 var12 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main54 var0 var3 var2 var1) (not (= var2 nullAddr)))) (inv_main56 var0 var3 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main14 var0 var2 var1)) (inv_main16 (write var0 var1 (O_TDLL (TDLL nullAddr (prev (getTDLL (read var0 var1))) (data (getTDLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main17 var0 var6 var3) (and (not (= var5 nullAddr)) (and (not (= var4 0)) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var6)) (= var5 var3)) (= var7 (next (getTDLL (read var0 var3)))))))))) (inv_main23 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main12 var0 var3 var2 var1)) (inv_main11 (write var0 var2 (O_TDLL (TDLL var1 (prev (getTDLL (read var0 var2))) (data (getTDLL (read var0 var2)))))) var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main56 var0 var6 var3 var1) (and (= var8 2) (and (and (and (and (= var4 var0) (= var2 var6)) (= var7 var3)) (= var5 var1)) (= var8 (data (getTDLL (read var0 var3)))))))) (inv_main60 var4 var2 var7 var5 var8 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main63 var0 var10 var5 var2 var11 var4) (and (= var3 2) (and (and (and (and (and (and (= var6 var0) (= var12 var10)) (= var1 var5)) (= var9 var2)) (= var7 var11)) (= var8 var4)) (= var3 (data (getTDLL (read var0 var5)))))))) (inv_main69 var6 var12 var1 var9 var7 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main17 var0 var3 var2) (and (= var6 nullAddr) (and (= var1 nullAddr) (and (and (and (= var5 var0) (= var4 var3)) (= var6 var2)) (= var1 (next (getTDLL (read var0 var2))))))))) (inv_main31 var5 var4 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main17 var0 var5 var3) (and (= var4 nullAddr) (and (= var6 0) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var5)) (= var4 var3)) (= var7 (next (getTDLL (read var0 var3)))))))))) (inv_main31 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main17 var0 var6 var3) (and (= var5 nullAddr) (and (not (= var4 0)) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var6)) (= var5 var3)) (= var7 (next (getTDLL (read var0 var3)))))))))) (inv_main25 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main60 var0 var10 var8 var2 var11 var7) (and (or (not (= var1 2)) (= var5 1)) (and (and (and (and (and (and (= var4 var0) (= var6 var10)) (= var9 var8)) (= var12 var2)) (= var1 var11)) (= var3 var7)) (= var5 (data (getTDLL (read var0 (next (getTDLL (read var0 var8))))))))))) (inv_main63 var4 var6 var9 var12 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main56 var0 var7 var3 var1) (and (and (not (= var4 2)) (not (= var4 2))) (and (and (and (and (= var2 var0) (= var6 var7)) (= var8 var3)) (= var5 var1)) (= var4 (data (getTDLL (read var0 var3)))))))) (inv_main63 var2 var6 var8 var5 var4 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap)) (or (not (and (inv_main68 var0 var8 var6 var1 var9 var5) (and (and (and (and (and (and (= var12 var0) (= var3 var8)) (= var7 var6)) (= var10 var1)) (= var4 var9)) (= var11 var5)) (= var2 (next (getTDLL (read var0 var6))))))) (inv_main54 var12 var3 var2 var10)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main50 var0 var7 var4 var1 var5) (and (= var8 nullAddr) (and (and (and (and (= var9 (write var0 var4 (O_TDLL (TDLL (next (getTDLL (read var0 var4))) var5 (data (getTDLL (read var0 var4))))))) (= var2 var7)) (= var3 var4)) (= var6 var1)) (= var8 var5))))) (inv_main54 var9 var3 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main44 var0 var4 var2) (and (and (= var5 nullAddr) (and (and (and (= var3 var6) (= var5 var1)) (= var9 var8)) (= var7 nullAddr))) (and (and (= var6 (write var0 var2 (O_TDLL (TDLL (next (getTDLL (read var0 var2))) (prev (getTDLL (read var0 var2))) 2)))) (= var1 var4)) (= var8 var2))))) (inv_main54 var3 var7 var7 var7)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main37 var0 var6 var4) (and (and (= var9 nullAddr) (and (and (and (= var8 var1) (= var9 var7)) (= var2 var3)) (= var5 nullAddr))) (and (and (= var1 (write var0 (next (getTDLL (read var0 var4))) (O_TDLL (TDLL (next (getTDLL (read var0 (next (getTDLL (read var0 var4)))))) (prev (getTDLL (read var0 (next (getTDLL (read var0 var4)))))) 2)))) (= var7 var6)) (= var3 var4))))) (inv_main54 var8 var5 var5 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main60 var0 var10 var8 var2 var11 var7) (and (and (= var1 2) (not (= var5 1))) (and (and (and (and (and (and (= var4 var0) (= var6 var10)) (= var9 var8)) (= var12 var2)) (= var1 var11)) (= var3 var7)) (= var5 (data (getTDLL (read var0 (next (getTDLL (read var0 var8))))))))))) (inv_main65 var4 var6 var9 var12 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main56 var0 var7 var4 var2) (and (and (= var1 2) (not (= var1 2))) (and (and (and (and (= var8 var0) (= var6 var7)) (= var3 var4)) (= var5 var2)) (= var1 (data (getTDLL (read var0 var4)))))))) (inv_main65 var8 var6 var3 var5 var1 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main48 var0 var3 var2 var1)) (inv_main49 var0 var3 var2 var1 (next (getTDLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TDLL (TDLL nullAddr (prev (getTDLL (read var0 var1))) (data (getTDLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 TDLL) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main34 var0 var6 var3) (and (= var5 nullAddr) (and (and (and (= var1 var0) (= var2 var6)) (= var7 var3)) (= var5 (next (getTDLL (read var0 var3)))))))) (inv_main40 (newHeap (alloc var1 (O_TDLL var4))) var2 var7 (newAddr (alloc var1 (O_TDLL var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main41 var0 var4 var2) (and (and (and (= var5 var0) (= var1 var4)) (= var6 var2)) (= var3 (next (getTDLL (read var0 var2))))))) (inv_main42 var5 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main42 var0 var2 var1)) (inv_main44 (write var0 var1 (O_TDLL (TDLL nullAddr (prev (getTDLL (read var0 var1))) (data (getTDLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main39 var0 var2 var1)) (inv_main41 (write var0 (next (getTDLL (read var0 var1))) (O_TDLL (TDLL (next (getTDLL (read var0 (next (getTDLL (read var0 var1)))))) var1 (data (getTDLL (read var0 (next (getTDLL (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 TDLL)) (or (not (and (inv_main16 var0 var6 var4) (and (not (= var3 0)) (and (and (= var5 (write var0 var4 (O_TDLL (TDLL (next (getTDLL (read var0 var4))) (prev (getTDLL (read var0 var4))) 0)))) (= var2 var6)) (= var1 var4))))) (inv_main12 (newHeap (alloc var5 (O_TDLL var7))) var2 var1 (newAddr (alloc var5 (O_TDLL var7))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 TDLL) (var5 Int)) (or (not (and (inv_main5 var0 var3) (and (not (= var5 0)) (and (= var2 (write var0 var3 (O_TDLL (TDLL (next (getTDLL (read var0 var3))) (prev (getTDLL (read var0 var3))) 0)))) (= var1 var3))))) (inv_main12 (newHeap (alloc var2 (O_TDLL var4))) var1 var1 (newAddr (alloc var2 (O_TDLL var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main34 var0 var4 var2) (and (not (= var1 nullAddr)) (and (and (and (= var5 var0) (= var6 var4)) (= var3 var2)) (= var1 (next (getTDLL (read var0 var2)))))))) (inv_main37 var5 var6 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main29 var0 var2 var1)) (inv_main34 (write var0 var1 (O_TDLL (TDLL (next (getTDLL (read var0 var1))) (prev (getTDLL (read var0 var1))) 1))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main11 var0 var2 var1)) (inv_main13 (write var0 (next (getTDLL (read var0 var1))) (O_TDLL (TDLL (next (getTDLL (read var0 (next (getTDLL (read var0 var1)))))) var1 (data (getTDLL (read var0 (next (getTDLL (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 TDLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TDLL var1))) (newAddr (alloc var0 (O_TDLL var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main5 var0 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main12 var0 var3 var2 var1) (not (is-O_TDLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main11 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main11 var0 var2 var1) (not (is-O_TDLL (read var0 (next (getTDLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main13 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main14 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main16 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main17 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main25 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main23 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main31 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main29 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main34 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main40 var0 var2 var1 var3) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main39 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main39 var0 var2 var1) (not (is-O_TDLL (read var0 (next (getTDLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main41 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main42 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main44 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main37 var0 var2 var1) (not (is-O_TDLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main37 var0 var2 var1) (not (is-O_TDLL (read var0 (next (getTDLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main48 var0 var3 var2 var1) (not (is-O_TDLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main49 var0 var4 var2 var1 var3) (not (is-O_TDLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main50 var0 var4 var2 var1 var3) (not (is-O_TDLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main56 var0 var3 var2 var1) (not (is-O_TDLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main60 var0 var4 var3 var1 var5 var2) (not (is-O_TDLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main60 var0 var4 var3 var1 var5 var2) (not (is-O_TDLL (read var0 (next (getTDLL (read var0 var3)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (inv_main65 var0 var4 var3 var1 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main63 var0 var4 var3 var1 var5 var2) (not (is-O_TDLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main69 var0 var4 var3 var1 var5 var2) (not (is-O_TDLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main68 var0 var4 var3 var1 var5 var2) (not (is-O_TDLL (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main77 var0 var3 var2 var1) (not (is-O_TDLL (read var0 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll-simple-white-blue-1.i.smt2 b/heap-theory-benchmarks/heap/dll-simple-white-blue-1.i.smt2 new file mode 100644 index 00000000..f7011abc --- /dev/null +++ b/heap-theory-benchmarks/heap/dll-simple-white-blue-1.i.smt2 @@ -0,0 +1,118 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (prev Addr) (data Int)) + ) +)) +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr) Bool) +(declare-fun inv_main67 (Heap Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main12 var2 var3 var1 var0)) (inv_main11 (write var2 var1 (O_TSLL (TSLL var0 (prev (getTSLL (read var2 var1))) (data (getTSLL (read var2 var1)))))) var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main11 var1 var2 var0)) (inv_main13 (write var1 (next (getTSLL (read var1 var0))) (O_TSLL (TSLL (next (getTSLL (read var1 (next (getTSLL (read var1 var0)))))) var0 (data (getTSLL (read var1 (next (getTSLL (read var1 var0))))))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main36 var2 var5 var1 var3) (and (and (and (and (= var6 var2) (= var7 var5)) (= var0 var1)) (= var8 var3)) (= var4 (next (getTSLL (read var2 var1))))))) (inv_main38 var6 var7 var4 var8)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var0 var1))) (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 TSLL) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var2 var3 var1) (not (= var4 0)))) (inv_main12 (newHeap (alloc var2 (O_TSLL var0))) var3 var1 (newAddr (alloc var2 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main67 var4 var6 var3) (and (and (not (= var8 nullAddr)) (and (and (and (= var2 var4) (= var5 var6)) (= var7 var3)) (= var9 (next (getTSLL (read var4 var3)))))) (and (and (= var1 (write var2 var5 defObj)) (= var0 var5)) (= var8 var9))))) (inv_main67 var1 var8 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main47 var2 var4 var1) (and (not (= var5 nullAddr)) (and (= var3 nullAddr) (and (and (and (= var0 var2) (= var5 var4)) (= var6 var1)) (= var3 (next (getTSLL (read var2 var1))))))))) (inv_main67 var0 var5 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main55 var2 var6 var1) (and (not (= var4 nullAddr)) (and (= var5 nullAddr) (and (and (and (= var3 var2) (= var4 var6)) (= var0 var1)) (= var5 (next (getTSLL (read var2 var1))))))))) (inv_main67 var3 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main47 var2 var4 var1) (and (not (= var3 nullAddr)) (and (and (and (= var0 var2) (= var5 var4)) (= var6 var1)) (= var3 (next (getTSLL (read var2 var1)))))))) (inv_main54 var0 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main55 var2 var6 var1) (and (not (= var5 nullAddr)) (and (and (and (= var4 var2) (= var3 var6)) (= var0 var1)) (= var5 (next (getTSLL (read var2 var1)))))))) (inv_main54 var4 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main16 var1 var2 var0)) (inv_main7 (write var1 var0 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main5 var2 var3) (and (= var0 (write var2 var3 (O_TSLL (TSLL (next (getTSLL (read var2 var3))) (prev (getTSLL (read var2 var3))) 0)))) (= var1 var3)))) (inv_main7 var0 var1 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main26 var3 var5 var2) (and (= var0 0) (and (not (= var4 nullAddr)) (and (and (and (= var6 var3) (= var7 var5)) (= var1 var2)) (= var4 (next (getTSLL (read var3 var2))))))))) (inv_main30 var6 var7 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main14 var1 var2 var0)) (inv_main16 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) 0))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main37 var1 var3 var0 var2 var4)) (inv_main36 (write var1 var0 (O_TSLL (TSLL var4 (prev (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var3 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main23 var1 var2 var0)) (inv_main24 (write var1 var0 (O_TSLL (TSLL var2 (prev (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 TSLL) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main7 var3 var7 var2) (and (and (and (and (= var0 (newHeap (alloc var3 (O_TSLL var6)))) (= var8 var7)) (= var1 var2)) (= var9 (newAddr (alloc var3 (O_TSLL var6))))) (and (not (= var5 0)) (= var4 0))))) (inv_main21 var0 var8 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main42 var1 var3 var0 var2)) (inv_main45 var1 var3 var0 var2 (prev (getTSLL (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main54 var3 var4 var2) (and (= var6 1) (and (and (and (= var0 var3) (= var1 var4)) (= var5 var2)) (= var6 (data (getTSLL (read var3 var2)))))))) (inv_main55 var0 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main26 var2 var5 var1) (and (= var3 nullAddr) (and (and (and (= var6 var2) (= var0 var5)) (= var4 var1)) (= var3 (next (getTSLL (read var2 var1)))))))) (inv_main27 var6 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (or (not (and (inv_main26 var2 var4 var1) (and (not (= var7 0)) (and (not (= var3 nullAddr)) (and (and (and (= var5 var2) (= var6 var4)) (= var0 var1)) (= var3 (next (getTSLL (read var2 var1))))))))) (inv_main27 var5 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main46 var3 var4 var2) (and (= var1 1) (and (and (and (= var6 var3) (= var0 var4)) (= var5 var2)) (= var1 (data (getTSLL (read var3 var2)))))))) (inv_main47 var6 var0 var5)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main48 var2 var5 var1) (and (and (and (= var0 var2) (= var6 var5)) (= var3 var1)) (= var4 (next (getTSLL (read var2 var1))))))) (inv_main46 var0 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main44 var1 var4 var0 var3) (and (and (= var2 (write var1 var3 (O_TSLL (TSLL (next (getTSLL (read var1 var3))) var0 (data (getTSLL (read var1 var3))))))) (= var6 var4)) (= var5 var0)))) (inv_main46 var2 var6 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main40 var3 var6 var2 var5) (and (= var7 nullAddr) (and (and (and (= var0 (write var3 var2 (O_TSLL (TSLL var5 (prev (getTSLL (read var3 var2))) (data (getTSLL (read var3 var2))))))) (= var1 var6)) (= var4 var2)) (= var7 var5))))) (inv_main46 var0 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main24 var2 var4 var1) (and (and (= var5 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) nullAddr (data (getTSLL (read var2 var1))))))) (= var0 var4)) (= var3 var1)))) (inv_main46 var5 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main45 var1 var4 var0 var3 var2)) (inv_main44 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) var2 (data (getTSLL (read var1 var0)))))) var4 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main54 var2 var5 var1) (and (not (= var3 1)) (and (and (and (= var6 var2) (= var4 var5)) (= var0 var1)) (= var3 (data (getTSLL (read var2 var1)))))))) (inv_main60 var6 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main40 var4 var6 var3 var5) (and (not (= var0 nullAddr)) (and (and (and (= var1 (write var4 var3 (O_TSLL (TSLL var5 (prev (getTSLL (read var4 var3))) (data (getTSLL (read var4 var3))))))) (= var2 var6)) (= var7 var3)) (= var0 var5))))) (inv_main42 var1 var2 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main13 var2 var3 var1) (and (and (and (= var6 var2) (= var0 var3)) (= var4 var1)) (= var5 (next (getTSLL (read var2 var1))))))) (inv_main14 var6 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main21 var1 var2 var0)) (inv_main23 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) 1))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main30 var4 var6 var3) (and (and (and (= var5 var4) (= var0 var6)) (= var2 var3)) (= var1 (next (getTSLL (read var4 var3))))))) (inv_main26 var5 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main7 var2 var4 var1) (and (= var0 0) (= var3 0)))) (inv_main26 var2 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 TSLL) (var6 Heap) (var7 Addr)) (or (not (and (inv_main27 var2 var4 var1) (and (and (and (= var6 var2) (= var7 var4)) (= var3 var1)) (= var0 (next (getTSLL (read var2 var1))))))) (inv_main37 (newHeap (alloc var6 (O_TSLL var5))) var7 var3 var0 (newAddr (alloc var6 (O_TSLL var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main46 var4 var5 var3) (and (not (= var2 1)) (and (and (and (= var0 var4) (= var1 var5)) (= var6 var3)) (= var2 (data (getTSLL (read var4 var3)))))))) (inv_main48 var0 var1 var6)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main4 var0 var1)) (inv_main5 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) nullAddr (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main38 var1 var3 var0 var2)) (inv_main40 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (prev (getTSLL (read var1 var0))) 1))) var3 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main5 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main12 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main11 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main11 var1 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main13 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main14 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main16 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main21 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main23 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main24 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main26 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main30 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main27 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main37 var1 var3 var0 var2 var4) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main36 var1 var3 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main38 var1 var3 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main40 var1 var3 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main42 var1 var3 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main45 var1 var4 var0 var3 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main44 var1 var3 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main46 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main48 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main47 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main54 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main60 var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main55 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main67 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll-token-1.i.smt2 b/heap-theory-benchmarks/heap/dll-token-1.i.smt2 new file mode 100644 index 00000000..77dde866 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll-token-1.i.smt2 @@ -0,0 +1,110 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (prev Addr) (data Int)) + ) +)) +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr) Bool) +(declare-fun inv_main8 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main52 var2 var1 var0) (= 1 (data (getTSLL (read var2 var0)))))) (inv_main53 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main45 var2 var1 var0) (= 2 (data (getTSLL (read var2 var0)))))) (inv_main52 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main55 var3 var2 var1) (and (and (and (= var4 var3) (= var5 var2)) (= var0 var1)) (= var6 (next (getTSLL (read var3 var1))))))) (inv_main52 (write var4 var5 defObj) var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main27 var2 var1 var0) (= 1 (data (getTSLL (read var2 var0)))))) (inv_main32 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main53 var2 var1 var0) (= 1 (data (getTSLL (read var2 var0)))))) (inv_main58 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main52 var2 var1 var0) (not (= 1 (data (getTSLL (read var2 var0))))))) (inv_main55 var2 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main33 var2 var1 var0) (= 0 (data (getTSLL (read var2 var0)))))) (inv_main34 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 TSLL) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main14 var3 var2 var0) (and (not (= var7 0)) (and (not (= nullAddr var6)) (and (and (= var1 (write var3 var0 (O_TSLL (TSLL (next (getTSLL (read var3 var0))) (prev (getTSLL (read var3 var0))) 0)))) (= var5 var2)) (= var6 var0)))))) (inv_main12 (newHeap (alloc var1 (O_TSLL var4))) var5 var6 (newAddr (alloc var1 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 TSLL)) (or (not (and (inv_main5 var2 var1) (and (not (= var3 0)) (and (= var4 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 0)))) (= var0 var1))))) (inv_main12 (newHeap (alloc var4 (O_TSLL var5))) var0 var0 (newAddr (alloc var4 (O_TSLL var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main12 var2 var1 var0 var3)) (inv_main11 (write var2 var0 (O_TSLL (TSLL var3 (prev (getTSLL (read var2 var0))) (data (getTSLL (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main23 var2 var1 var0 var3)) (inv_main22 (write var2 var0 (O_TSLL (TSLL var3 (prev (getTSLL (read var2 var0))) (data (getTSLL (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main34 var2 var1 var0) (and (and (and (= var5 var2) (= var6 var1)) (= var3 var0)) (= var4 (next (getTSLL (read var2 var0))))))) (inv_main27 var5 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap)) (or (not (and (inv_main24 var3 var2 var0) (and (not (= nullAddr var1)) (and (and (= var5 (write var3 (next (getTSLL (read var3 var0))) (O_TSLL (TSLL (next (getTSLL (read var3 (next (getTSLL (read var3 var0)))))) (prev (getTSLL (read var3 (next (getTSLL (read var3 var0)))))) 2)))) (= var1 var2)) (= var4 var0))))) (inv_main27 var5 var1 var1)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main22 var2 var1 var0)) (inv_main24 (write var2 (next (getTSLL (read var2 var0))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var0)))))) var0 (data (getTSLL (read var2 (next (getTSLL (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main27 var2 var1 var0) (not (= 1 (data (getTSLL (read var2 var0))))))) (inv_main33 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main4 var1 var0)) (inv_main5 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) nullAddr (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main32 var2 var1 var0) (not (= 1 (data (getTSLL (read var2 var0))))))) (inv_main42 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main45 var2 var1 var0) (not (= 2 (data (getTSLL (read var2 var0))))))) (inv_main49 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main40 var3 var2 var0) (and (and (and (= var1 var3) (= var5 var2)) (= var4 var0)) (= var6 (next (getTSLL (read var3 var0))))))) (inv_main45 var1 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main53 var2 var1 var0) (not (= 1 (data (getTSLL (read var2 var0))))))) (inv_main60 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main14 var2 var1 var0) (and (= nullAddr var4) (and (and (= var5 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) 0)))) (= var3 var1)) (= var4 var0))))) (inv_main18 var5 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main11 var2 var1 var0)) (inv_main13 (write var2 (next (getTSLL (read var2 var0))) (O_TSLL (TSLL (next (getTSLL (read var2 (next (getTSLL (read var2 var0)))))) var0 (data (getTSLL (read var2 (next (getTSLL (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 TSLL) (var5 Heap) (var6 Addr)) (or (not (and (inv_main8 var2 var1 var0) (and (and (= var5 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) (prev (getTSLL (read var2 var0))) 1)))) (= var6 var1)) (= var3 var0)))) (inv_main23 (newHeap (alloc var5 (O_TSLL var4))) var6 var3 (newAddr (alloc var5 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main14 var3 var2 var0) (and (= var6 0) (and (not (= nullAddr var5)) (and (and (= var1 (write var3 var0 (O_TSLL (TSLL (next (getTSLL (read var3 var0))) (prev (getTSLL (read var3 var0))) 0)))) (= var4 var2)) (= var5 var0)))))) (inv_main8 var1 var4 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap)) (or (not (and (inv_main5 var2 var1) (and (= var0 0) (and (= var4 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 0)))) (= var3 var1))))) (inv_main8 var4 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main13 var4 var3 var2) (and (and (and (= var5 var4) (= var6 var3)) (= var0 var2)) (= var1 (next (getTSLL (read var4 var2))))))) (inv_main14 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap)) (or (not (and (inv_main24 var3 var2 var0) (and (= nullAddr var1) (and (and (= var5 (write var3 (next (getTSLL (read var3 var0))) (O_TSLL (TSLL (next (getTSLL (read var3 (next (getTSLL (read var3 var0)))))) (prev (getTSLL (read var3 (next (getTSLL (read var3 var0)))))) 2)))) (= var1 var2)) (= var4 var0))))) (inv_main29 var5 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main32 var2 var1 var0) (= 1 (data (getTSLL (read var2 var0)))))) (inv_main40 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main33 var2 var1 var0) (not (= 0 (data (getTSLL (read var2 var0))))))) (inv_main36 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main5 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main12 var2 var1 var0 var3) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main11 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main11 var2 var1 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main13 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main14 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main18 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main8 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main23 var2 var1 var0 var3) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main22 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main22 var2 var1 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main24 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main24 var2 var1 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main29 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main27 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main33 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main36 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main34 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main32 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main42 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main40 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main45 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main49 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main52 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main55 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main53 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main60 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main58 var2 var1 var0) (not (is-O_TSLL (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll-token-2.i.smt2 b/heap-theory-benchmarks/heap/dll-token-2.i.smt2 new file mode 100644 index 00000000..0eebeddb --- /dev/null +++ b/heap-theory-benchmarks/heap/dll-token-2.i.smt2 @@ -0,0 +1,110 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (prev Addr) (data Int)) + ) +)) +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr) Bool) +(declare-fun inv_main8 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main45 var1 var0 var2) (= 2 (data (getTSLL (read var1 var2)))))) (inv_main49 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap)) (or (not (and (inv_main24 var3 var2 var4) (and (= nullAddr var0) (and (and (= var5 (write var3 (next (getTSLL (read var3 var4))) (O_TSLL (TSLL (next (getTSLL (read var3 (next (getTSLL (read var3 var4)))))) (prev (getTSLL (read var3 (next (getTSLL (read var3 var4)))))) 2)))) (= var0 var2)) (= var1 var4))))) (inv_main29 var5 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main32 var1 var0 var2) (= 1 (data (getTSLL (read var1 var2)))))) (inv_main40 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main11 var1 var0 var2)) (inv_main13 (write var1 (next (getTSLL (read var1 var2))) (O_TSLL (TSLL (next (getTSLL (read var1 (next (getTSLL (read var1 var2)))))) var2 (data (getTSLL (read var1 (next (getTSLL (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main45 var1 var0 var2) (not (= 2 (data (getTSLL (read var1 var2))))))) (inv_main52 var1 var0 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main55 var3 var1 var4) (and (and (and (= var0 var3) (= var2 var1)) (= var6 var4)) (= var5 (next (getTSLL (read var3 var4))))))) (inv_main52 (write var0 var2 defObj) var2 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main33 var1 var0 var2) (= 0 (data (getTSLL (read var1 var2)))))) (inv_main34 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (prev (getTSLL (read var1 var0))) (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main52 var1 var0 var2) (not (= 1 (data (getTSLL (read var1 var2))))))) (inv_main55 var1 var2 var2)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main33 var1 var0 var2) (not (= 0 (data (getTSLL (read var1 var2))))))) (inv_main36 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main14 var4 var1 var5) (and (= nullAddr var3) (and (and (= var0 (write var4 var5 (O_TSLL (TSLL (next (getTSLL (read var4 var5))) (prev (getTSLL (read var4 var5))) 0)))) (= var2 var1)) (= var3 var5))))) (inv_main18 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main34 var3 var2 var5) (and (and (and (= var1 var3) (= var0 var2)) (= var6 var5)) (= var4 (next (getTSLL (read var3 var5))))))) (inv_main27 var1 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap)) (or (not (and (inv_main24 var3 var2 var4) (and (not (= nullAddr var0)) (and (and (= var5 (write var3 (next (getTSLL (read var3 var4))) (O_TSLL (TSLL (next (getTSLL (read var3 (next (getTSLL (read var3 var4)))))) (prev (getTSLL (read var3 (next (getTSLL (read var3 var4)))))) 2)))) (= var0 var2)) (= var1 var4))))) (inv_main27 var5 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main22 var1 var0 var2)) (inv_main24 (write var1 (next (getTSLL (read var1 var2))) (O_TSLL (TSLL (next (getTSLL (read var1 (next (getTSLL (read var1 var2)))))) var2 (data (getTSLL (read var1 (next (getTSLL (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main13 var3 var1 var5) (and (and (and (= var4 var3) (= var6 var1)) (= var2 var5)) (= var0 (next (getTSLL (read var3 var5))))))) (inv_main14 var4 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main53 var1 var0 var2) (= 1 (data (getTSLL (read var1 var2)))))) (inv_main58 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main23 var2 var1 var3 var0)) (inv_main22 (write var2 var3 (O_TSLL (TSLL var0 (prev (getTSLL (read var2 var3))) (data (getTSLL (read var2 var3)))))) var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main32 var1 var0 var2) (not (= 1 (data (getTSLL (read var1 var2))))))) (inv_main42 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main40 var3 var0 var5) (and (and (and (= var1 var3) (= var2 var0)) (= var6 var5)) (= var4 (next (getTSLL (read var3 var5))))))) (inv_main45 var1 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main12 var2 var0 var3 var1)) (inv_main11 (write var2 var3 (O_TSLL (TSLL var1 (prev (getTSLL (read var2 var3))) (data (getTSLL (read var2 var3)))))) var0 var3)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main4 var1 var0)) (inv_main5 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) nullAddr (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main53 var1 var0 var2) (not (= 1 (data (getTSLL (read var1 var2))))))) (inv_main60 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main27 var1 var0 var2) (= 1 (data (getTSLL (read var1 var2)))))) (inv_main32 var1 var0 var2)))) +(assert (forall ((var0 TSLL) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main14 var2 var1 var4) (and (not (= var3 0)) (and (not (= nullAddr var7)) (and (and (= var6 (write var2 var4 (O_TSLL (TSLL (next (getTSLL (read var2 var4))) (prev (getTSLL (read var2 var4))) 0)))) (= var5 var1)) (= var7 var4)))))) (inv_main12 (newHeap (alloc var6 (O_TSLL var0))) var5 var7 (newAddr (alloc var6 (O_TSLL var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TSLL) (var3 Int) (var4 Heap) (var5 Addr)) (or (not (and (inv_main5 var4 var1) (and (not (= var3 0)) (and (= var0 (write var4 var1 (O_TSLL (TSLL (next (getTSLL (read var4 var1))) (prev (getTSLL (read var4 var1))) 0)))) (= var5 var1))))) (inv_main12 (newHeap (alloc var0 (O_TSLL var2))) var5 var5 (newAddr (alloc var0 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 TSLL) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main8 var4 var1 var6) (and (and (= var5 (write var4 var6 (O_TSLL (TSLL (next (getTSLL (read var4 var6))) (prev (getTSLL (read var4 var6))) 1)))) (= var0 var1)) (= var3 var6)))) (inv_main23 (newHeap (alloc var5 (O_TSLL var2))) var0 var3 (newAddr (alloc var5 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main52 var1 var0 var2) (= 1 (data (getTSLL (read var1 var2)))))) (inv_main53 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main27 var1 var0 var2) (not (= 1 (data (getTSLL (read var1 var2))))))) (inv_main33 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int)) (or (not (and (inv_main14 var1 var0 var2) (and (= var6 0) (and (not (= nullAddr var5)) (and (and (= var4 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) (prev (getTSLL (read var1 var2))) 0)))) (= var3 var0)) (= var5 var2)))))) (inv_main8 var4 var3 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr)) (or (not (and (inv_main5 var2 var1) (and (= var0 0) (and (= var3 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) (prev (getTSLL (read var2 var1))) 0)))) (= var4 var1))))) (inv_main8 var3 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main5 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main12 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main11 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main11 var1 var0 var2) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main13 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main14 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main18 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main8 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main23 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main22 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main22 var1 var0 var2) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main24 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main24 var1 var0 var2) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main29 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main27 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main33 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main36 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main34 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main32 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main42 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main40 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main45 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main49 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main52 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main55 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main53 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main60 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main58 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll2c_append_equal.i.smt2 b/heap-theory-benchmarks/heap/dll2c_append_equal.i.smt2 new file mode 100644 index 00000000..3b611ece --- /dev/null +++ b/heap-theory-benchmarks/heap/dll2c_append_equal.i.smt2 @@ -0,0 +1,114 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (prev Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main35 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main58 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main69 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main70 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main74 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main77 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main89 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main93 (Heap Int Int Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main96 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main23 var1 var2 var3 var6 var5 var4 var0)) (inv_main44 (write var1 var0 (O_node (node var4 (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main61 var5 var6 var7 var0 var1 var2 var3 var4)) (inv_main62 (write var5 var4 (O_node (node (next (getnode (read var5 var4))) nullAddr (data (getnode (read var5 var4)))))) var6 var7 var0 var1 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main77 var5 var8 var9 var0 var7 var6) (and (not (= nullAddr var12)) (and (= (+ var4 1) (+ 1 var11)) (and (= var3 var12) (and (and (and (and (and (and (= var2 var5) (= var11 var8)) (= var10 var9)) (= var12 var0)) (= var1 var7)) (= var4 var6)) (= var3 (next (getnode (read var5 var7)))))))))) (inv_main89 var2 var11 var10 var12 var3 (+ var4 1) var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 node) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var6 var15 var16 var12 var11 var10 var3) (and (and (not (= nullAddr var2)) (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var6 (O_node var14)))) (= var13 var15)) (= var4 var16)) (= var7 var12)) (= var5 var11)) (= var8 var10)) (= var0 var3)) (= var9 var11)) (= var2 (newAddr (alloc var6 (O_node var14)))))) (<= 0 (+ (+ var12 (- 1)) (- 1)))))) (inv_main29 var1 var13 var4 var7 var5 var8 var0 var9 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main58 var6 var7 var8 var0 var1 var2 var3 var4 var5)) (inv_main58 var6 var7 var8 var0 var1 var2 var3 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Int) (var21 Int) (var22 node)) (or (not (and (inv_main44 var6 var19 var21 var11 var10 var9 var5) (and (and (= nullAddr var4) (and (and (and (and (and (and (and (= var3 (newHeap (alloc var7 (O_node var22)))) (= var16 var18)) (= var2 var13)) (= var0 var17)) (= var12 3)) (= var20 var13)) (= var8 var13)) (= var4 (newAddr (alloc var7 (O_node var22)))))) (and (and (and (and (and (and (= var7 (write var6 var9 (O_node (node (next (getnode (read var6 var9))) var5 (data (getnode (read var6 var9))))))) (= var18 var19)) (= var13 var21)) (= var14 var11)) (= var1 var10)) (= var17 var9)) (= var15 var5))))) (inv_main58 var3 var16 var2 var0 var12 var20 var8 var4 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main12 var1 var2 var4 var6 var5 var3 var0)) (inv_main18 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (or (not (and (inv_main74 var1 var4 var5 var0 var3 var2) (= var5 (data (getnode (read var1 var3)))))) (inv_main77 var1 var4 var5 var0 var3 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main41 var3 var14 var15 var10 var9 var8 var2 var4) (and (and (and (and (and (and (and (= var7 (write var3 var8 (O_node (node (next (getnode (read var3 var8))) var4 (data (getnode (read var3 var8))))))) (= var5 var14)) (= var6 var15)) (= var0 var10)) (= var1 var9)) (= var13 var8)) (= var12 var2)) (= var11 var4)))) (inv_main22 var7 var5 var6 (+ var0 (- 1)) var1 var11 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main38 var4 var13 var15 var9 var8 var7 var3 var5) (and (= var11 nullAddr) (and (and (and (and (and (and (and (= var12 (write var4 var5 (O_node (node var7 (prev (getnode (read var4 var5))) (data (getnode (read var4 var5))))))) (= var6 var13)) (= var0 var15)) (= var1 var9)) (= var14 var8)) (= var11 var7)) (= var2 var3)) (= var10 var5))))) (inv_main22 var12 var6 var0 (+ var1 (- 1)) var14 var10 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var2 var11 var13 var7 var6 var3 var10) (and (and (and (and (and (and (= var9 (write var2 var10 (O_node (node (next (getnode (read var2 var10))) (prev (getnode (read var2 var10))) var3)))) (= var5 var11)) (= var4 var13)) (= var12 var7)) (= var0 var6)) (= var8 var3)) (= var1 var10)))) (inv_main22 var9 var5 var4 var12 var0 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main18 var1 var2 var4 var6 var5 var3 var0)) (inv_main19 (write var1 var0 (O_node (node (next (getnode (read var1 var0))) nullAddr (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main70 var5 var6 var7 var0 var1 var2 var4 var3)) (inv_main71 (write var5 var4 (O_node (node (next (getnode (read var5 var4))) var3 (data (getnode (read var5 var4)))))) var6 var7 var0 var1 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (inv_main65 var4 var5 var6 var0 var1 var2 var3)) (inv_main67 (write var4 var3 (O_node (node (next (getnode (read var4 var3))) var3 (data (getnode (read var4 var3)))))) var5 var6 var0 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main77 var5 var8 var9 var0 var7 var6) (and (not (= var3 var12)) (and (and (and (and (and (and (= var2 var5) (= var11 var8)) (= var10 var9)) (= var12 var0)) (= var1 var7)) (= var4 var6)) (= var3 (next (getnode (read var5 var7)))))))) (inv_main74 var2 var11 var10 var12 var3 (+ var4 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main72 var5 var10 var12 var7 var0 var1 var3 var9) (and (and (and (and (and (= var4 (write var5 var7 (O_node (node (next (getnode (read var5 var7))) var3 (data (getnode (read var5 var7))))))) (= var8 var10)) (= var2 var12)) (= var13 var7)) (= var11 var0)) (= var6 var1)))) (inv_main74 var4 var8 var2 var13 var13 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Int)) (or (not (and (inv_main67 var4 var10 var13 var9 var0 var1 var3) (and (and (and (and (and (and (= var6 (write var4 var3 (O_node (node var3 (prev (getnode (read var4 var3))) (data (getnode (read var4 var3))))))) (= var12 var10)) (= var8 var13)) (= var5 var9)) (= var2 var0)) (= var7 var1)) (= var11 var3)))) (inv_main74 var6 var12 var8 var11 var11 0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (or (not (and (inv_main74 var1 var4 var5 var0 var3 var2) (not (= var5 (data (getnode (read var1 var3))))))) (inv_main96 var1 var4 var5 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main77 var5 var8 var9 var0 var7 var6) (and (not (= (+ var4 1) (+ 1 var11))) (and (= var3 var12) (and (and (and (and (and (and (= var2 var5) (= var11 var8)) (= var10 var9)) (= var12 var0)) (= var1 var7)) (= var4 var6)) (= var3 (next (getnode (read var5 var7))))))))) (inv_main96 var2 var11 var10 var12 var3 (+ var4 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main71 var5 var6 var7 var0 var1 var2 var4 var3)) (inv_main72 (write var5 var4 (O_node (node var0 (prev (getnode (read var5 var4))) (data (getnode (read var5 var4)))))) var6 var7 var0 var1 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int)) (or (not (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)) (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 node) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var5 var14 var16 var10 var9 var8 var4) (and (and (= nullAddr var2) (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var5 (O_node var3)))) (= var13 var14)) (= var12 var16)) (= var11 var10)) (= var15 var9)) (= var7 var8)) (= var0 var4)) (= var6 var9)) (= var2 (newAddr (alloc var5 (O_node var3)))))) (<= 0 (+ (+ var10 (- 1)) (- 1)))))) (inv_main32 var1 var13 var12 var11 var15 var7 var0 var6 var2 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (and (inv_main22 var1 var2 var3 var6 var5 var4 var0) (not (<= 0 (+ (+ var6 (- 1)) (- 1)))))) (inv_main23 var1 var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (inv_main66 var4 var5 var6 var0 var1 var2 var3)) (inv_main69 var4 var5 var6 var0 var1 var2 var3 (prev (getnode (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Addr) (var17 Int)) (or (not (and (inv_main36 var3 var14 var17 var8 var7 var6 var2 var12 var10) (and (and (and (and (and (and (and (and (= var11 (write var3 var10 (O_node (node (next (getnode (read var3 var10))) (prev (getnode (read var3 var10))) var12)))) (= var9 var14)) (= var1 var17)) (= var15 var8)) (= var13 var7)) (= var0 var6)) (= var16 var2)) (= var4 var12)) (= var5 var10)))) (inv_main38 var11 var9 var1 var15 var13 var0 var16 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)) (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 node) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Heap) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var6 var7 var9) (and (= nullAddr var2) (and (and (and (and (and (and (= var8 (newHeap (alloc var6 (O_node var1)))) (= var0 var7)) (= var5 var9)) (= var4 var7)) (= var10 var9)) (= var3 var9)) (= var2 (newAddr (alloc var6 (O_node var1)))))))) (inv_main15 var8 var0 var5 var4 var10 var3 var2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main62 var4 var13 var15 var7 var1 var2 var8 var11) (and (= nullAddr var3) (and (and (and (and (and (and (and (= var12 (write var4 var11 (O_node (node (next (getnode (read var4 var11))) (prev (getnode (read var4 var11))) var8)))) (= var6 var13)) (= var14 var15)) (= var3 var7)) (= var10 var1)) (= var0 var2)) (= var5 var8)) (= var9 var11))))) (inv_main65 var12 var6 var14 var3 var10 var0 var9)))) +(assert (forall ((var0 Int) (var1 node) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Heap) (var21 Int) (var22 Int)) (or (not (and (inv_main44 var4 var18 var21 var10 var9 var8 var2) (and (and (not (= nullAddr var6)) (and (and (and (and (and (and (and (= var20 (newHeap (alloc var5 (O_node var1)))) (= var22 var17)) (= var3 var11)) (= var16 var15)) (= var19 3)) (= var7 var11)) (= var13 var11)) (= var6 (newAddr (alloc var5 (O_node var1)))))) (and (and (and (and (and (and (= var5 (write var4 var8 (O_node (node (next (getnode (read var4 var8))) var2 (data (getnode (read var4 var8))))))) (= var17 var18)) (= var11 var21)) (= var12 var10)) (= var0 var9)) (= var15 var8)) (= var14 var2))))) (inv_main55 var20 var22 var3 var16 var19 var7 var13 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main36 (write var3 var0 (O_node (node (next (getnode (read var3 var0))) nullAddr (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main62 var4 var13 var15 var7 var1 var2 var8 var11) (and (not (= nullAddr var3)) (and (and (and (and (and (and (and (= var12 (write var4 var11 (O_node (node (next (getnode (read var4 var11))) (prev (getnode (read var4 var11))) var8)))) (= var6 var13)) (= var14 var15)) (= var3 var7)) (= var10 var1)) (= var0 var2)) (= var5 var8)) (= var9 var11))))) (inv_main66 var12 var6 var14 var3 var10 var0 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main38 var5 var13 var15 var11 var10 var9 var2 var6) (and (not (= var4 nullAddr)) (and (and (and (and (and (and (and (= var3 (write var5 var6 (O_node (node var9 (prev (getnode (read var5 var6))) (data (getnode (read var5 var6))))))) (= var8 var13)) (= var0 var15)) (= var14 var11)) (= var1 var10)) (= var4 var9)) (= var7 var2)) (= var12 var6))))) (inv_main41 var3 var8 var0 var14 var1 var4 var7 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 node) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var4 var6 var9) (and (not (= nullAddr var7)) (and (and (and (and (and (and (= var2 (newHeap (alloc var4 (O_node var8)))) (= var1 var6)) (= var3 var9)) (= var5 var6)) (= var10 var9)) (= var0 var9)) (= var7 (newAddr (alloc var4 (O_node var8)))))))) (inv_main12 var2 var1 var3 var5 var10 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int)) (or (not (and (inv_main89 var3 var12 var14 var8 var6 var4 var13) (and (not (= var7 var11)) (and (and (and (and (and (and (and (= var5 var3) (= var10 var12)) (= var9 var14)) (= var1 var8)) (= var0 var6)) (= var2 var4)) (= var11 var13)) (= var7 (next (getnode (read var3 var13)))))))) (inv_main93 var5 var10 var9 var1 var0 var2 var11 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Int) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Int) (var23 Int) (var24 Addr) (var25 Int)) (or (not (and (inv_main93 var7 var23 var25 var14 var9 var8 var24 var6) (and (not (= var16 var18)) (and (and (and (and (and (and (and (and (and (= var1 var7) (= var17 var23)) (= var11 var25)) (= var3 var14)) (= var5 var9)) (= var22 var8)) (= var19 var24)) (= var10 var6)) (= var21 (next (getnode (read var7 var6))))) (and (and (and (and (and (and (and (and (= var15 (write var1 var10 defObj)) (= var0 var17)) (= var20 var11)) (= var12 var3)) (= var4 var5)) (= var2 var22)) (= var18 var19)) (= var13 var10)) (= var16 var21)))))) (inv_main93 var15 var0 var20 var12 var4 var2 var18 var16)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main69 var5 var6 var7 var0 var1 var2 var4 var3)) (inv_main70 (write var5 var3 (O_node (node var4 (prev (getnode (read var5 var3))) (data (getnode (read var5 var3)))))) var6 var7 var0 var1 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main55 var5 var6 var7 var0 var1 var2 var3 var4)) (inv_main61 (write var5 var4 (O_node (node nullAddr (prev (getnode (read var5 var4))) (data (getnode (read var5 var4)))))) var6 var7 var0 var1 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main35 (write var3 var0 (O_node (node nullAddr (prev (getnode (read var3 var0))) (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main12 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main18 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main19 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main36 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main38 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main41 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main23 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main44 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main55 var5 var6 var7 var0 var1 var2 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main61 var5 var6 var7 var0 var1 var2 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main62 var5 var6 var7 var0 var1 var2 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main65 var4 var5 var6 var0 var1 var2 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main67 var4 var5 var6 var0 var1 var2 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main66 var4 var5 var6 var0 var1 var2 var3) (not (is-O_node (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main69 var5 var6 var7 var0 var1 var2 var4 var3) (not (is-O_node (read var5 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main70 var5 var6 var7 var0 var1 var2 var4 var3) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main71 var5 var6 var7 var0 var1 var2 var4 var3) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main72 var5 var6 var7 var0 var1 var2 var4 var3) (not (is-O_node (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (not (and (inv_main74 var1 var4 var5 var0 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (not (and (inv_main77 var1 var4 var5 var0 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main89 var1 var4 var6 var0 var3 var2 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main93 var2 var5 var7 var0 var4 var3 var6 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (not (inv_main96 var1 var4 var5 var0 var3 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll2c_prepend_equal.i.smt2 b/heap-theory-benchmarks/heap/dll2c_prepend_equal.i.smt2 new file mode 100644 index 00000000..5e3486ca --- /dev/null +++ b/heap-theory-benchmarks/heap/dll2c_prepend_equal.i.smt2 @@ -0,0 +1,114 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (prev Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main35 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main58 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main68 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Int Int Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Int Int Addr Addr Addr) Bool) +(declare-fun inv_main73 (Heap Int Int Addr Int Int Addr Addr Addr) Bool) +(declare-fun inv_main74 (Heap Int Int Addr Int Int Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main79 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main91 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main95 (Heap Int Int Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main98 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main23 var1 var2 var3 var6 var5 var4 var0)) (inv_main44 (write var1 var0 (O_node (node var4 (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main61 var5 var6 var7 var0 var1 var2 var3 var4)) (inv_main62 (write var5 var4 (O_node (node (next (getnode (read var5 var4))) nullAddr (data (getnode (read var5 var4)))))) var6 var7 var0 var1 var2 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int)) (or (not (and (inv_main91 var4 var10 var14 var8 var5 var9 var13) (and (not (= var2 var12)) (and (and (and (and (and (and (and (= var0 var4) (= var1 var10)) (= var6 var14)) (= var3 var8)) (= var11 var5)) (= var7 var9)) (= var12 var13)) (= var2 (next (getnode (read var4 var13)))))))) (inv_main95 var0 var1 var6 var3 var11 var7 var12 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Heap) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Int) (var24 Addr) (var25 Int)) (or (not (and (inv_main95 var8 var22 var25 var14 var9 var21 var24 var12) (and (not (= var1 var0)) (and (and (and (and (and (and (and (and (and (= var10 var8) (= var6 var22)) (= var23 var25)) (= var18 var14)) (= var20 var9)) (= var15 var21)) (= var2 var24)) (= var4 var12)) (= var19 (next (getnode (read var8 var12))))) (and (and (and (and (and (and (and (and (= var11 (write var10 var4 defObj)) (= var5 var6)) (= var3 var23)) (= var17 var18)) (= var16 var20)) (= var13 var15)) (= var0 var2)) (= var7 var4)) (= var1 var19)))))) (inv_main95 var11 var5 var3 var17 var16 var13 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 node) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var3 var14 var15 var7 var6 var5 var2) (and (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (and (= var13 (newHeap (alloc var3 (O_node var9)))) (= var16 var14)) (= var0 var15)) (= var12 var7)) (= var1 var6)) (= var8 var5)) (= var4 var2)) (= var10 var6)) (= var11 (newAddr (alloc var3 (O_node var9)))))) (<= 0 (+ (+ var7 (- 1)) (- 1)))))) (inv_main29 var13 var16 var0 var12 var1 var8 var4 var10 var11)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main58 var6 var7 var8 var0 var1 var2 var3 var4 var5)) (inv_main58 var6 var7 var8 var0 var1 var2 var3 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 node) (var22 Int)) (or (not (and (inv_main44 var6 var19 var22 var11 var10 var9 var4) (and (and (= nullAddr var3) (and (and (and (and (and (and (and (= var14 (newHeap (alloc var1 (O_node var21)))) (= var20 var2)) (= var5 var17)) (= var7 var15)) (= var16 3)) (= var8 var17)) (= var13 var17)) (= var3 (newAddr (alloc var1 (O_node var21)))))) (and (and (and (and (and (and (= var1 (write var6 var9 (O_node (node (next (getnode (read var6 var9))) var4 (data (getnode (read var6 var9))))))) (= var2 var19)) (= var17 var22)) (= var18 var11)) (= var12 var10)) (= var15 var9)) (= var0 var4))))) (inv_main58 var14 var20 var5 var7 var16 var8 var13 var3 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main12 var1 var2 var4 var6 var5 var3 var0)) (inv_main18 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main41 var6 var14 var15 var12 var11 var10 var4 var7) (and (and (and (and (and (and (and (= var2 (write var6 var10 (O_node (node (next (getnode (read var6 var10))) var7 (data (getnode (read var6 var10))))))) (= var0 var14)) (= var3 var15)) (= var13 var12)) (= var8 var11)) (= var9 var10)) (= var5 var4)) (= var1 var7)))) (inv_main22 var2 var0 var3 (+ var13 (- 1)) var8 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main38 var3 var13 var15 var7 var6 var5 var2 var4) (and (= var10 nullAddr) (and (and (and (and (and (and (and (= var0 (write var3 var4 (O_node (node var5 (prev (getnode (read var3 var4))) (data (getnode (read var3 var4))))))) (= var14 var13)) (= var11 var15)) (= var1 var7)) (= var9 var6)) (= var10 var5)) (= var8 var2)) (= var12 var4))))) (inv_main22 var0 var14 var11 (+ var1 (- 1)) var9 var12 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int)) (or (not (and (inv_main19 var3 var11 var13 var7 var6 var5 var9) (and (and (and (and (and (and (= var12 (write var3 var9 (O_node (node (next (getnode (read var3 var9))) (prev (getnode (read var3 var9))) var5)))) (= var0 var11)) (= var1 var13)) (= var8 var7)) (= var4 var6)) (= var2 var5)) (= var10 var9)))) (inv_main22 var12 var0 var1 var8 var4 var10 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main71 var6 var7 var8 var0 var1 var2 var4 var3 var5)) (inv_main72 (write var6 var4 (O_node (node var5 (prev (getnode (read var6 var4))) (data (getnode (read var6 var4)))))) var7 var8 var0 var1 var2 var4 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main18 var1 var2 var4 var6 var5 var3 var0)) (inv_main19 (write var1 var0 (O_node (node (next (getnode (read var1 var0))) nullAddr (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main79 var7 var10 var11 var0 var8 var9) (and (not (= var6 var12)) (and (and (and (and (and (and (= var4 var7) (= var5 var10)) (= var3 var11)) (= var12 var0)) (= var1 var8)) (= var2 var9)) (= var6 (next (getnode (read var7 var8)))))))) (inv_main76 var4 var5 var3 var12 var6 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int)) (or (not (and (inv_main68 var6 var8 var10 var0 var1 var2 var4) (and (and (and (and (and (= var9 (write var6 var4 (O_node (node (next (getnode (read var6 var4))) var4 (data (getnode (read var6 var4))))))) (= var11 var8)) (= var3 var10)) (= var5 var0)) (= var12 var1)) (= var7 var2)))) (inv_main76 var9 var11 var3 var5 var5 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main74 var9 var13 var14 var11 var1 var2 var5 var12 var7) (and (and (and (and (and (= var4 (write var9 var5 (O_node (node (next (getnode (read var9 var5))) var12 (data (getnode (read var9 var5))))))) (= var8 var13)) (= var3 var14)) (= var6 var11)) (= var0 var1)) (= var10 var2)))) (inv_main76 var4 var8 var3 var6 var6 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main73 var6 var7 var8 var0 var1 var2 var4 var3 var5)) (inv_main74 (write var6 var3 (O_node (node var4 (prev (getnode (read var6 var3))) (data (getnode (read var6 var3)))))) var7 var8 var0 var1 var2 var4 var3 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main62 var4 var14 var15 var9 var1 var2 var10 var13) (and (= nullAddr var11) (and (and (and (and (and (and (and (= var3 (write var4 var13 (O_node (node (next (getnode (read var4 var13))) (prev (getnode (read var4 var13))) var10)))) (= var12 var14)) (= var0 var15)) (= var11 var9)) (= var5 var1)) (= var8 var2)) (= var7 var10)) (= var6 var13))))) (inv_main67 var3 var12 var0 var6 var5 var8 var6)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main66 var5 var13 var14 var7 var1 var2 var4) (and (and (and (and (and (and (and (= var0 var5) (= var3 var13)) (= var10 var14)) (= var8 var7)) (= var12 var1)) (= var6 var2)) (= var11 var4)) (= var9 (prev (getnode (read var5 var7))))))) (inv_main71 var0 var3 var10 var11 var12 var6 var11 var9 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int)) (or (not (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)) (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap) (var9 node) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var5 var15 var16 var12 var11 var10 var2) (and (and (= nullAddr var13) (and (and (and (and (and (and (and (and (= var8 (newHeap (alloc var5 (O_node var9)))) (= var0 var15)) (= var14 var16)) (= var6 var12)) (= var1 var11)) (= var3 var10)) (= var7 var2)) (= var4 var11)) (= var13 (newAddr (alloc var5 (O_node var9)))))) (<= 0 (+ (+ var12 (- 1)) (- 1)))))) (inv_main32 var8 var0 var14 var6 var1 var3 var7 var4 var13 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (and (inv_main22 var1 var2 var3 var6 var5 var4 var0) (not (<= 0 (+ (+ var6 (- 1)) (- 1)))))) (inv_main23 var1 var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main72 var6 var7 var8 var0 var1 var2 var4 var3 var5)) (inv_main73 (write var6 var5 (O_node (node (next (getnode (read var6 var5))) var4 (data (getnode (read var6 var5)))))) var7 var8 var0 var1 var2 var4 var3 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Int) (var17 Int)) (or (not (and (inv_main36 var3 var14 var17 var9 var8 var7 var2 var12 var10) (and (and (and (and (and (and (and (and (= var15 (write var3 var10 (O_node (node (next (getnode (read var3 var10))) (prev (getnode (read var3 var10))) var12)))) (= var13 var14)) (= var0 var17)) (= var16 var9)) (= var6 var8)) (= var4 var7)) (= var1 var2)) (= var11 var12)) (= var5 var10)))) (inv_main38 var15 var13 var0 var16 var6 var4 var1 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)) (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var4 var5 var9) (and (= nullAddr var8) (and (and (and (and (and (and (= var3 (newHeap (alloc var4 (O_node var1)))) (= var6 var5)) (= var2 var9)) (= var10 var5)) (= var0 var9)) (= var7 var9)) (= var8 (newAddr (alloc var4 (O_node var1)))))))) (inv_main15 var3 var6 var2 var10 var0 var7 var8 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (inv_main67 var4 var5 var6 var0 var1 var2 var3)) (inv_main68 (write var4 var3 (O_node (node var3 (prev (getnode (read var4 var3))) (data (getnode (read var4 var3)))))) var5 var6 var0 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Heap) (var19 Int) (var20 Int) (var21 node) (var22 Int)) (or (not (and (inv_main44 var5 var19 var22 var9 var8 var7 var3) (and (and (not (= nullAddr var14)) (and (and (and (and (and (and (and (= var18 (newHeap (alloc var1 (O_node var21)))) (= var17 var2)) (= var13 var16)) (= var11 var12)) (= var6 3)) (= var20 var16)) (= var4 var16)) (= var14 (newAddr (alloc var1 (O_node var21)))))) (and (and (and (and (and (and (= var1 (write var5 var7 (O_node (node (next (getnode (read var5 var7))) var3 (data (getnode (read var5 var7))))))) (= var2 var19)) (= var16 var22)) (= var15 var9)) (= var10 var8)) (= var12 var7)) (= var0 var3))))) (inv_main55 var18 var17 var13 var11 var6 var20 var4 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main79 var7 var10 var11 var0 var8 var9) (and (not (= nullAddr var12)) (and (= (+ var3 1) (+ 1 var6)) (and (= var5 var12) (and (and (and (and (and (and (= var4 var7) (= var6 var10)) (= var2 var11)) (= var12 var0)) (= var1 var8)) (= var3 var9)) (= var5 (next (getnode (read var7 var8)))))))))) (inv_main91 var4 var6 var2 var12 var5 (+ var3 1) var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (or (not (and (inv_main76 var1 var4 var5 var0 var2 var3) (= var5 (data (getnode (read var1 var2)))))) (inv_main79 var1 var4 var5 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main36 (write var3 var0 (O_node (node (next (getnode (read var3 var0))) nullAddr (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main62 var4 var14 var15 var9 var1 var2 var10 var13) (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (= var3 (write var4 var13 (O_node (node (next (getnode (read var4 var13))) (prev (getnode (read var4 var13))) var10)))) (= var12 var14)) (= var0 var15)) (= var11 var9)) (= var5 var1)) (= var8 var2)) (= var7 var10)) (= var6 var13))))) (inv_main66 var3 var12 var0 var11 var5 var8 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int)) (or (not (and (inv_main38 var4 var13 var15 var10 var9 var8 var2 var5) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (= var14 (write var4 var5 (O_node (node var8 (prev (getnode (read var4 var5))) (data (getnode (read var4 var5))))))) (= var1 var13)) (= var3 var15)) (= var6 var10)) (= var11 var9)) (= var12 var8)) (= var7 var2)) (= var0 var5))))) (inv_main41 var14 var1 var3 var6 var11 var12 var7 var0)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int)) (or (not (and (inv_main4 var5 var6 var8) (and (not (= nullAddr var9)) (and (and (and (and (and (and (= var3 (newHeap (alloc var5 (O_node var0)))) (= var10 var6)) (= var7 var8)) (= var1 var6)) (= var4 var8)) (= var2 var8)) (= var9 (newAddr (alloc var5 (O_node var0)))))))) (inv_main12 var3 var10 var7 var1 var4 var2 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (or (not (and (inv_main76 var1 var4 var5 var0 var2 var3) (not (= var5 (data (getnode (read var1 var2))))))) (inv_main98 var1 var4 var5 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main79 var7 var10 var11 var0 var8 var9) (and (not (= (+ var3 1) (+ 1 var6))) (and (= var5 var12) (and (and (and (and (and (and (= var4 var7) (= var6 var10)) (= var2 var11)) (= var12 var0)) (= var1 var8)) (= var3 var9)) (= var5 (next (getnode (read var7 var8))))))))) (inv_main98 var4 var6 var2 var12 var5 (+ var3 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main55 var5 var6 var7 var0 var1 var2 var3 var4)) (inv_main61 (write var5 var4 (O_node (node nullAddr (prev (getnode (read var5 var4))) (data (getnode (read var5 var4)))))) var6 var7 var0 var1 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main35 (write var3 var0 (O_node (node nullAddr (prev (getnode (read var3 var0))) (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main12 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main18 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main19 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main36 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main38 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main41 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main23 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main44 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main55 var5 var6 var7 var0 var1 var2 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main61 var5 var6 var7 var0 var1 var2 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main62 var5 var6 var7 var0 var1 var2 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main67 var4 var5 var6 var0 var1 var2 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main68 var4 var5 var6 var0 var1 var2 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main66 var4 var5 var6 var0 var1 var2 var3) (not (is-O_node (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (not (and (inv_main71 var6 var7 var8 var0 var1 var2 var4 var3 var5) (not (is-O_node (read var6 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (not (and (inv_main72 var6 var7 var8 var0 var1 var2 var4 var3 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (not (and (inv_main73 var6 var7 var8 var0 var1 var2 var4 var3 var5) (not (is-O_node (read var6 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (not (and (inv_main74 var6 var7 var8 var0 var1 var2 var4 var3 var5) (not (is-O_node (read var6 var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main76 var1 var4 var5 var0 var2 var3) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main79 var1 var4 var5 var0 var2 var3) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main91 var1 var4 var6 var0 var2 var3 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main95 var1 var4 var6 var0 var2 var3 var5 var7) (not (is-O_node (read var1 var7))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (not (inv_main98 var1 var4 var5 var0 var2 var3)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll2c_prepend_unequal.i.smt2 b/heap-theory-benchmarks/heap/dll2c_prepend_unequal.i.smt2 new file mode 100644 index 00000000..a83921d6 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll2c_prepend_unequal.i.smt2 @@ -0,0 +1,121 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (prev Addr) (data Int)) + ) +)) +(declare-fun inv_main101 (Heap Int Int Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main104 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main35 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Int Int Int Addr Int) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main63 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main68 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main69 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main73 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main74 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main75 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main77 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main82 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main85 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main97 (Heap Int Int Addr Int Addr Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main23 var1 var2 var3 var6 var5 var4 var0)) (inv_main44 (write var1 var0 (O_node (node var4 (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main97 var7 var14 var15 var10 var4 var13 var3 var11) (and (not (= var2 var5)) (and (and (and (and (and (and (and (and (= var12 var7) (= var0 var14)) (= var6 var15)) (= var9 var10)) (= var1 var4)) (= var8 var13)) (= var16 var3)) (= var5 var11)) (= var2 (next (getnode (read var7 var11)))))))) (inv_main101 var12 var0 var6 var9 var1 var8 var16 var5 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Int) (var16 Addr) (var17 Int) (var18 Addr) (var19 Addr) (var20 Heap) (var21 Int) (var22 Int) (var23 Addr) (var24 Int) (var25 Addr) (var26 Int) (var27 Int) (var28 Int)) (or (not (and (inv_main101 var20 var15 var28 var23 var5 var13 var3 var10 var4) (and (not (= var7 var11)) (and (and (and (and (and (and (and (and (and (and (= var9 var20) (= var6 var15)) (= var26 var28)) (= var19 var23)) (= var17 var5)) (= var25 var13)) (= var24 var3)) (= var2 var10)) (= var12 var4)) (= var16 (next (getnode (read var20 var4))))) (and (and (and (and (and (and (and (and (and (= var14 (write var9 var12 defObj)) (= var0 var6)) (= var27 var26)) (= var8 var19)) (= var21 var17)) (= var1 var25)) (= var22 var24)) (= var11 var2)) (= var18 var12)) (= var7 var16)))))) (inv_main101 var14 var0 var27 var8 var21 var1 var22 var11 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main85 var3 var13 var14 var6 var2 var12 var1) (and (not (= var8 var7)) (and (and (and (and (and (and (and (= var5 var3) (= var4 var13)) (= var11 var14)) (= var7 var6)) (= var10 var2)) (= var9 var12)) (= var0 var1)) (= var8 (next (getnode (read var3 var12)))))))) (inv_main82 var5 var4 var11 var7 var10 var8 (+ var0 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main77 var8 var9 var12 var0 var5 var7) (and (and (and (and (and (and (= var4 var8) (= var6 var9)) (= var2 var12)) (= var10 var0)) (= var1 var5)) (= var11 var7)) (= var3 (next (getnode (read var8 var7))))))) (inv_main82 var4 var6 var2 var10 var1 var3 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 node) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var3 var13 var15 var7 var6 var5 var2) (and (and (not (= nullAddr var1)) (and (and (and (and (and (and (and (and (= var0 (newHeap (alloc var3 (O_node var9)))) (= var16 var13)) (= var14 var15)) (= var12 var7)) (= var8 var6)) (= var4 var5)) (= var10 var2)) (= var11 var6)) (= var1 (newAddr (alloc var3 (O_node var9)))))) (<= 0 (+ (+ var7 (- 1)) (- 1)))))) (inv_main29 var0 var16 var14 var12 var8 var4 var10 var11 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main12 var1 var2 var4 var6 var5 var3 var0)) (inv_main18 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main76 var3 var4 var5 var0 var1 var2) (= var1 (data (getnode (read var3 var2)))))) (inv_main77 var3 var4 var5 var0 var1 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main41 var4 var13 var14 var9 var8 var7 var3 var5) (and (and (and (and (and (and (and (= var6 (write var4 var7 (O_node (node (next (getnode (read var4 var7))) var5 (data (getnode (read var4 var7))))))) (= var1 var13)) (= var15 var14)) (= var11 var9)) (= var0 var8)) (= var10 var7)) (= var12 var3)) (= var2 var5)))) (inv_main22 var6 var1 var15 (+ var11 (- 1)) var0 var2 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main38 var3 var13 var15 var11 var10 var9 var2 var4) (and (= var14 nullAddr) (and (and (and (and (and (and (and (= var5 (write var3 var4 (O_node (node var9 (prev (getnode (read var3 var4))) (data (getnode (read var3 var4))))))) (= var6 var13)) (= var12 var15)) (= var8 var11)) (= var7 var10)) (= var14 var9)) (= var0 var2)) (= var1 var4))))) (inv_main22 var5 var6 var12 (+ var8 (- 1)) var7 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var5 var12 var13 var8 var7 var6 var11) (and (and (and (and (and (and (= var3 (write var5 var11 (O_node (node (next (getnode (read var5 var11))) (prev (getnode (read var5 var11))) var6)))) (= var1 var12)) (= var9 var13)) (= var10 var8)) (= var2 var7)) (= var0 var6)) (= var4 var11)))) (inv_main22 var3 var1 var9 var10 var2 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main18 var1 var2 var4 var6 var5 var3 var0)) (inv_main19 (write var1 var0 (O_node (node (next (getnode (read var1 var0))) nullAddr (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main72 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5)) (inv_main73 (write var4 var8 (O_node (node var5 (prev (getnode (read var4 var8))) (data (getnode (read var4 var8)))))) var7 var9 var0 var2 var3 var6 var8 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main73 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5)) (inv_main74 (write var4 var5 (O_node (node (next (getnode (read var4 var5))) var8 (data (getnode (read var4 var5)))))) var7 var9 var0 var2 var3 var6 var8 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main74 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5)) (inv_main75 (write var4 var1 (O_node (node var8 (prev (getnode (read var4 var1))) (data (getnode (read var4 var1)))))) var7 var9 var0 var2 var3 var6 var8 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int)) (or (not (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)) (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 node) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var4 var15 var16 var9 var8 var7 var1) (and (and (= nullAddr var11) (and (and (and (and (and (and (and (and (= var10 (newHeap (alloc var4 (O_node var5)))) (= var3 var15)) (= var0 var16)) (= var12 var9)) (= var2 var8)) (= var13 var7)) (= var14 var1)) (= var6 var8)) (= var11 (newAddr (alloc var4 (O_node var5)))))) (<= 0 (+ (+ var9 (- 1)) (- 1)))))) (inv_main32 var10 var3 var0 var12 var2 var13 var14 var6 var11 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (and (inv_main22 var1 var2 var3 var6 var5 var4 var0) (not (<= 0 (+ (+ var6 (- 1)) (- 1)))))) (inv_main23 var1 var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (and (inv_main82 var4 var5 var6 var0 var2 var3 var1) (not (= var6 (data (getnode (read var4 var3))))))) (inv_main104 var4 var5 var6 var0 var2 var3 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main85 var3 var13 var14 var6 var2 var12 var1) (and (not (= (+ var0 1) (+ 1 var4))) (and (= var8 var7) (and (and (and (and (and (and (and (= var5 var3) (= var4 var13)) (= var11 var14)) (= var7 var6)) (= var10 var2)) (= var9 var12)) (= var0 var1)) (= var8 (next (getnode (read var3 var12))))))))) (inv_main104 var5 var4 var11 var7 var10 var8 (+ var0 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (and (inv_main76 var4 var5 var6 var0 var1 var3) (not (= var1 (data (getnode (read var4 var3))))))) (inv_main104 var4 var5 var6 var0 var1 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (and (inv_main82 var4 var5 var6 var0 var2 var3 var1) (= var6 (data (getnode (read var4 var3)))))) (inv_main85 var4 var5 var6 var0 var2 var3 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int)) (or (not (and (inv_main69 var6 var12 var14 var10 var1 var5 var11 var8) (and (and (and (and (and (and (= var4 (write var6 var8 (O_node (node (next (getnode (read var6 var8))) var8 (data (getnode (read var6 var8))))))) (= var9 var12)) (= var7 var14)) (= var13 var10)) (= var3 var1)) (= var2 var5)) (= var0 var11)))) (inv_main76 var4 var9 var7 var13 var3 var13)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Heap)) (or (not (and (inv_main75 var3 var13 var14 var6 var0 var2 var12 var5 var8 var11) (and (and (and (and (and (and (= var16 (write var3 var5 (O_node (node (next (getnode (read var3 var5))) var8 (data (getnode (read var3 var5))))))) (= var9 var13)) (= var4 var14)) (= var1 var6)) (= var7 var0)) (= var15 var2)) (= var10 var12)))) (inv_main76 var16 var9 var4 var1 var7 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main56 var4 var7 var8 var0 var1 var3 var6 var5 var2)) (inv_main62 (write var4 var2 (O_node (node nullAddr (prev (getnode (read var4 var2))) (data (getnode (read var4 var2)))))) var7 var8 var0 var1 var3 var6 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main67 var4 var13 var16 var6 var1 var3 var12 var5) (and (and (and (and (and (and (and (and (= var0 var4) (= var15 var13)) (= var11 var16)) (= var14 var6)) (= var8 var1)) (= var9 var3)) (= var7 var12)) (= var2 var5)) (= var10 (prev (getnode (read var4 var6))))))) (inv_main72 var0 var15 var11 var2 var8 var9 var7 var2 var10 var14)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Int) (var16 Addr) (var17 Int)) (or (not (and (inv_main36 var1 var15 var17 var7 var6 var5 var0 var12 var9) (and (and (and (and (and (and (and (and (= var14 (write var1 var9 (O_node (node (next (getnode (read var1 var9))) (prev (getnode (read var1 var9))) var12)))) (= var13 var15)) (= var11 var17)) (= var3 var7)) (= var2 var6)) (= var4 var5)) (= var16 var0)) (= var8 var12)) (= var10 var9)))) (inv_main38 var14 var13 var11 var3 var2 var4 var16 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)) (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 node) (var10 Int)) (or (not (and (inv_main4 var7 var8 var10) (and (= nullAddr var6) (and (and (and (and (and (and (= var4 (newHeap (alloc var7 (O_node var9)))) (= var2 var8)) (= var0 var10)) (= var3 var8)) (= var5 var10)) (= var1 var10)) (= var6 (newAddr (alloc var7 (O_node var9)))))))) (inv_main15 var4 var2 var0 var3 var5 var1 var6 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main63 var6 var15 var17 var10 var3 var5 var14 var7 var12) (and (= nullAddr var4) (and (and (and (and (and (and (and (and (= var0 (write var6 var12 (O_node (node (next (getnode (read var6 var12))) (prev (getnode (read var6 var12))) var7)))) (= var16 var15)) (= var2 var17)) (= var4 var10)) (= var8 var3)) (= var11 var5)) (= var13 var14)) (= var1 var7)) (= var9 var12))))) (inv_main68 var0 var16 var2 var9 var8 var11 var13 var9)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main63 var6 var15 var17 var10 var3 var5 var14 var7 var12) (and (not (= nullAddr var4)) (and (and (and (and (and (and (and (and (= var0 (write var6 var12 (O_node (node (next (getnode (read var6 var12))) (prev (getnode (read var6 var12))) var7)))) (= var16 var15)) (= var2 var17)) (= var4 var10)) (= var8 var3)) (= var11 var5)) (= var13 var14)) (= var1 var7)) (= var9 var12))))) (inv_main67 var0 var16 var2 var4 var8 var11 var13 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main85 var3 var13 var14 var6 var2 var12 var1) (and (not (= nullAddr var7)) (and (= (+ var0 1) (+ 1 var4)) (and (= var8 var7) (and (and (and (and (and (and (and (= var5 var3) (= var4 var13)) (= var11 var14)) (= var7 var6)) (= var10 var2)) (= var9 var12)) (= var0 var1)) (= var8 (next (getnode (read var3 var12)))))))))) (inv_main97 var5 var4 var11 var7 var10 var8 (+ var0 1) var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main36 (write var3 var0 (O_node (node (next (getnode (read var3 var0))) nullAddr (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main68 var3 var5 var7 var0 var1 var2 var4 var6)) (inv_main69 (write var3 var6 (O_node (node var6 (prev (getnode (read var3 var6))) (data (getnode (read var3 var6)))))) var5 var7 var0 var1 var2 var4 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main38 var2 var13 var15 var7 var6 var5 var1 var3) (and (not (= var11 nullAddr)) (and (and (and (and (and (and (and (= var12 (write var2 var3 (O_node (node var5 (prev (getnode (read var2 var3))) (data (getnode (read var2 var3))))))) (= var0 var13)) (= var8 var15)) (= var4 var7)) (= var14 var6)) (= var11 var5)) (= var9 var1)) (= var10 var3))))) (inv_main41 var12 var0 var8 var4 var14 var11 var9 var10)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 node) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var6 var8 var10) (and (not (= nullAddr var1)) (and (and (and (and (and (and (= var0 (newHeap (alloc var6 (O_node var2)))) (= var7 var8)) (= var9 var10)) (= var5 var8)) (= var4 var10)) (= var3 var10)) (= var1 (newAddr (alloc var6 (O_node var2)))))))) (inv_main12 var0 var7 var9 var5 var4 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 node) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Int) (var18 Addr) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 Int)) (or (not (and (inv_main44 var9 var22 var23 var14 var13 var12 var7) (and (and (not (= nullAddr var10)) (and (and (and (and (and (and (and (and (= var5 (newHeap (alloc var0 (O_node var4)))) (= var8 var2)) (= var16 var17)) (= var15 var20)) (= var6 5)) (= var11 3)) (= var21 5)) (= var19 5)) (= var10 (newAddr (alloc var0 (O_node var4)))))) (and (and (and (and (and (and (= var0 (write var9 var12 (O_node (node (next (getnode (read var9 var12))) var7 (data (getnode (read var9 var12))))))) (= var2 var22)) (= var17 var23)) (= var1 var14)) (= var3 var13)) (= var20 var12)) (= var18 var7))))) (inv_main56 var5 var8 var16 var15 var6 var11 var21 var19 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main62 var4 var7 var8 var0 var1 var3 var6 var5 var2)) (inv_main63 (write var4 var2 (O_node (node (next (getnode (read var4 var2))) nullAddr (data (getnode (read var4 var2)))))) var7 var8 var0 var1 var3 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int)) (or (not (inv_main59 var5 var8 var9 var0 var2 var4 var7 var6 var3 var1)) (inv_main59 var5 var8 var9 var0 var2 var4 var7 var6 var3 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 node) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Int)) (or (not (and (inv_main44 var14 var21 var22 var17 var16 var15 var13) (and (and (= nullAddr var12) (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var1 (O_node var6)))) (= var3 var5)) (= var4 var18)) (= var8 var20)) (= var2 5)) (= var10 3)) (= var23 5)) (= var9 5)) (= var12 (newAddr (alloc var1 (O_node var6)))))) (and (and (and (and (and (and (= var1 (write var14 var15 (O_node (node (next (getnode (read var14 var15))) var13 (data (getnode (read var14 var15))))))) (= var5 var21)) (= var18 var22)) (= var0 var17)) (= var7 var16)) (= var20 var15)) (= var19 var13))))) (inv_main59 var11 var3 var4 var8 var2 var10 var23 var9 var12 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main35 (write var3 var0 (O_node (node nullAddr (prev (getnode (read var3 var0))) (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main12 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main18 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main19 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main36 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main38 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main41 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main23 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main44 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main56 var4 var7 var8 var0 var1 var3 var6 var5 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main62 var4 var7 var8 var0 var1 var3 var6 var5 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main63 var4 var7 var8 var0 var1 var3 var6 var5 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main68 var3 var5 var7 var0 var1 var2 var4 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main69 var3 var5 var7 var0 var1 var2 var4 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main67 var3 var5 var7 var0 var1 var2 var4 var6) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main72 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5) (not (is-O_node (read var4 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main73 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5) (not (is-O_node (read var4 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main74 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main75 var4 var7 var9 var0 var2 var3 var6 var8 var1 var5) (not (is-O_node (read var4 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int)) (not (and (inv_main76 var3 var4 var5 var0 var1 var2) (not (is-O_node (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int)) (not (and (inv_main77 var3 var4 var5 var0 var1 var2) (not (is-O_node (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main82 var4 var5 var6 var0 var2 var3 var1) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main85 var4 var5 var6 var0 var2 var3 var1) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main97 var5 var6 var7 var0 var3 var4 var2 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (not (and (inv_main101 var6 var7 var8 var0 var4 var5 var2 var1 var3) (not (is-O_node (read var6 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (inv_main104 var4 var5 var6 var0 var2 var3 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll2c_remove_all.i.smt2 b/heap-theory-benchmarks/heap/dll2c_remove_all.i.smt2 new file mode 100644 index 00000000..53e189db --- /dev/null +++ b/heap-theory-benchmarks/heap/dll2c_remove_all.i.smt2 @@ -0,0 +1,81 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (prev Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main35 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main47 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main58 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main56 var3 var4 var6 var0 var1 var5 var2)) (inv_main58 var3 var4 var6 var0 var1 var5 var2 (prev (getnode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main23 var1 var2 var3 var6 var5 var4 var0)) (inv_main44 (write var1 var0 (O_node (node var4 (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 node) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var5 var14 var16 var10 var9 var8 var2) (and (and (not (= nullAddr var13)) (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var5 (O_node var3)))) (= var11 var14)) (= var6 var16)) (= var7 var10)) (= var4 var9)) (= var12 var8)) (= var0 var2)) (= var15 var9)) (= var13 (newAddr (alloc var5 (O_node var3)))))) (<= 0 (+ (+ var10 (- 1)) (- 1)))))) (inv_main29 var1 var11 var6 var7 var4 var12 var0 var15 var13)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main58 var4 var5 var7 var0 var1 var6 var3 var2)) (inv_main59 (write var4 var3 (O_node (node (next (getnode (read var4 var3))) var2 (data (getnode (read var4 var3)))))) var5 var7 var0 var1 var6 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr)) (or (not (and (inv_main51 var5 var7 var11 var0 var3 var9) (and (not (= var8 var12)) (and (and (and (and (and (and (= var10 var5) (= var1 var7)) (= var6 var11)) (= var12 var0)) (= var4 var3)) (= var2 var9)) (= var8 (next (getnode (read var5 var0)))))))) (inv_main56 var10 var1 var6 var12 var4 var2 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main12 var1 var2 var4 var6 var5 var3 var0)) (inv_main18 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))) (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Heap) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 Int)) (or (not (and (inv_main59 var7 var19 var23 var13 var4 var12 var17 var5) (and (and (and (and (and (and (and (and (= var14 (write var7 var5 (O_node (node var17 (prev (getnode (read var7 var5))) (data (getnode (read var7 var5))))))) (= var21 var19)) (= var18 var23)) (= var3 var13)) (= var0 var4)) (= var22 var12)) (= var11 var17)) (= var8 var5)) (and (and (and (and (and (and (and (= var1 (write var14 var3 defObj)) (= var10 var21)) (= var15 var18)) (= var20 var3)) (= var2 var0)) (= var6 var22)) (= var9 var11)) (= var16 var8))))) (inv_main47 var1 var10 var15 var9 (+ var2 1))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Heap) (var20 Int) (var21 Int) (var22 Int) (var23 Addr) (var24 Int) (var25 Int)) (or (not (and (inv_main51 var8 var22 var25 var14 var3 var11) (and (and (and (= var5 var23) (and (and (and (and (and (and (= var19 var8) (= var15 var22)) (= var21 var25)) (= var23 var14)) (= var16 var3)) (= var0 var11)) (= var5 (next (getnode (read var8 var14)))))) (and (and (and (and (and (and (= var4 (write var19 var23 defObj)) (= var10 var15)) (= var20 var21)) (= var7 var23)) (= var12 var16)) (= var24 var0)) (= var17 var5))) (and (and (and (and (and (= var2 var4) (= var18 var10)) (= var9 var20)) (= var1 nullAddr)) (= var6 var12)) (= var13 var24))))) (inv_main47 var2 var18 var9 var1 (+ var6 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int)) (or (not (and (inv_main44 var4 var11 var13 var8 var7 var6 var3) (and (and (and (and (and (and (= var5 (write var4 var6 (O_node (node (next (getnode (read var4 var6))) var3 (data (getnode (read var4 var6))))))) (= var0 var11)) (= var1 var13)) (= var10 var8)) (= var2 var7)) (= var12 var6)) (= var9 var3)))) (inv_main47 var5 var0 var1 var12 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main41 var4 var14 var15 var9 var8 var7 var3 var5) (and (and (and (and (and (and (and (= var13 (write var4 var7 (O_node (node (next (getnode (read var4 var7))) var5 (data (getnode (read var4 var7))))))) (= var10 var14)) (= var0 var15)) (= var12 var9)) (= var6 var8)) (= var11 var7)) (= var2 var3)) (= var1 var5)))) (inv_main22 var13 var10 var0 (+ var12 (- 1)) var6 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main38 var3 var13 var15 var8 var7 var6 var1 var4) (and (= var0 nullAddr) (and (and (and (and (and (and (and (= var5 (write var3 var4 (O_node (node var6 (prev (getnode (read var3 var4))) (data (getnode (read var3 var4))))))) (= var9 var13)) (= var12 var15)) (= var2 var8)) (= var11 var7)) (= var0 var6)) (= var14 var1)) (= var10 var4))))) (inv_main22 var5 var9 var12 (+ var2 (- 1)) var11 var10 var14)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var3 var12 var13 var6 var5 var4 var9) (and (and (and (and (and (and (= var8 (write var3 var9 (O_node (node (next (getnode (read var3 var9))) (prev (getnode (read var3 var9))) var4)))) (= var7 var12)) (= var11 var13)) (= var0 var6)) (= var1 var5)) (= var2 var4)) (= var10 var9)))) (inv_main22 var8 var7 var11 var0 var1 var10 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main18 var1 var2 var4 var6 var5 var3 var0)) (inv_main19 (write var1 var0 (O_node (node (next (getnode (read var1 var0))) nullAddr (data (getnode (read var1 var0)))))) var2 var4 var6 var5 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main47 var2 var3 var4 var0 var1) (<= 0 (+ (+ var3 (* (- 1) var1)) (- 1))))) (inv_main51 var2 var3 var4 var0 var1 3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int)) (or (not (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)) (inv_main32 var4 var5 var6 var9 var8 var7 var3 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 node) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Int)) (or (not (and (inv_main22 var5 var12 var14 var8 var7 var6 var3) (and (and (= nullAddr var2) (and (and (and (and (and (and (and (and (= var15 (newHeap (alloc var5 (O_node var10)))) (= var4 var12)) (= var16 var14)) (= var0 var8)) (= var1 var7)) (= var13 var6)) (= var9 var3)) (= var11 var7)) (= var2 (newAddr (alloc var5 (O_node var10)))))) (<= 0 (+ (+ var8 (- 1)) (- 1)))))) (inv_main32 var15 var4 var16 var0 var1 var13 var9 var11 var2 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (and (inv_main22 var1 var2 var3 var6 var5 var4 var0) (not (<= 0 (+ (+ var6 (- 1)) (- 1)))))) (inv_main23 var1 var2 var3 var6 var5 var4 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Int)) (or (not (and (inv_main36 var4 var16 var17 var9 var8 var7 var2 var12 var10) (and (and (and (and (and (and (and (and (= var6 (write var4 var10 (O_node (node (next (getnode (read var4 var10))) (prev (getnode (read var4 var10))) var12)))) (= var14 var16)) (= var11 var17)) (= var13 var9)) (= var0 var8)) (= var1 var7)) (= var15 var2)) (= var3 var12)) (= var5 var10)))) (inv_main38 var6 var14 var11 var13 var0 var1 var15 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)) (inv_main15 var2 var3 var5 var7 var6 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 node) (var7 Int) (var8 Addr) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var4 var5 var9) (and (= nullAddr var8) (and (and (and (and (and (and (= var3 (newHeap (alloc var4 (O_node var6)))) (= var0 var5)) (= var10 var9)) (= var2 var5)) (= var1 var9)) (= var7 var9)) (= var8 (newAddr (alloc var4 (O_node var6)))))))) (inv_main15 var3 var0 var10 var2 var1 var7 var8 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main36 (write var3 var0 (O_node (node (next (getnode (read var3 var0))) nullAddr (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main47 var2 var3 var4 var0 var1) (and (not (= nullAddr var0)) (not (<= 0 (+ (+ var3 (* (- 1) var1)) (- 1))))))) (inv_main65 var2 var3 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int)) (or (not (and (inv_main38 var4 var13 var15 var10 var9 var8 var2 var5) (and (not (= var11 nullAddr)) (and (and (and (and (and (and (and (= var14 (write var4 var5 (O_node (node var8 (prev (getnode (read var4 var5))) (data (getnode (read var4 var5))))))) (= var0 var13)) (= var3 var15)) (= var7 var10)) (= var6 var9)) (= var11 var8)) (= var12 var2)) (= var1 var5))))) (inv_main41 var14 var0 var3 var7 var6 var11 var12 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 node) (var10 Int)) (or (not (and (inv_main4 var3 var6 var10) (and (not (= nullAddr var0)) (and (and (and (and (and (and (= var1 (newHeap (alloc var3 (O_node var9)))) (= var5 var6)) (= var8 var10)) (= var4 var6)) (= var2 var10)) (= var7 var10)) (= var0 (newAddr (alloc var3 (O_node var9)))))))) (inv_main12 var1 var5 var8 var4 var2 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0)) (inv_main35 (write var3 var0 (O_node (node nullAddr (prev (getnode (read var3 var0))) (data (getnode (read var3 var0)))))) var4 var5 var8 var7 var6 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main12 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main18 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main19 var1 var2 var4 var6 var5 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main29 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main35 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main36 var3 var4 var5 var8 var7 var6 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main38 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main41 var1 var3 var4 var7 var6 var5 var0 var2) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main23 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main44 var1 var2 var3 var6 var5 var4 var0) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main51 var2 var3 var5 var0 var1 var4) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main56 var3 var4 var6 var0 var1 var5 var2) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main58 var4 var5 var7 var0 var1 var6 var3 var2) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main59 var4 var5 var7 var0 var1 var6 var3 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (not (inv_main65 var2 var3 var4 var0 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll2c_update_all.i.smt2 b/heap-theory-benchmarks/heap/dll2c_update_all.i.smt2 new file mode 100644 index 00000000..55d75b45 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll2c_update_all.i.smt2 @@ -0,0 +1,94 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (prev Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main35 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main57 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main70 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main78 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main82 (Heap Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main85 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main49 var4 var2 var1 var0 var3) (not (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1)))))) (inv_main61 var4 var2 var1 var0 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Heap)) (or (not (and (inv_main70 var6 var9 var8 var7 var11 var3 var4 var12) (and (= var13 var2) (and (and (and (and (and (and (= var14 var6) (= var0 var9)) (= var1 var8)) (= var10 var7)) (= var5 var11)) (= var13 var3)) (= var2 (data (getnode (read var6 var4)))))))) (inv_main61 var14 var0 var1 var10 (+ var5 1))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main57 var4 var13 var10 var9 var14 var18 var0 var12 var15) (and (not (<= 0 (+ (+ var16 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (and (= var7 var4) (= var2 var13)) (= var8 var10)) (= var1 var9)) (= var11 var14)) (= var3 var18)) (= var6 var0)) (= var17 var12)) (= var16 var15)) (= var5 (next (getnode (read var4 var0)))))))) (inv_main56 var7 var2 var8 var1 var11 var3 var5 var17 (+ var16 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main49 var4 var2 var1 var0 var3) (and (not (<= 0 (+ var3 (- 1)))) (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1)))))) (inv_main56 var4 var2 var1 var0 var3 (+ var3 var2) var0 (+ var3 var2) var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap)) (or (not (inv_main15 var7 var4 var1 var3 var6 var0 var2 var5)) (inv_main15 var7 var4 var1 var3 var6 var0 var2 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Heap) (var8 Int) (var9 Int) (var10 node)) (or (not (and (inv_main4 var7 var4 var2) (and (= nullAddr var1) (and (and (and (and (and (and (= var6 (newHeap (alloc var7 (O_node var10)))) (= var9 var4)) (= var0 var2)) (= var5 var4)) (= var8 var2)) (= var3 var2)) (= var1 (newAddr (alloc var7 (O_node var10)))))))) (inv_main15 var6 var9 var0 var5 var8 var3 var1 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (inv_main29 var8 var3 var0 var2 var7 var1 var5 var6 var4)) (inv_main35 (write var8 var4 (O_node (node nullAddr (prev (getnode (read var8 var4))) (data (getnode (read var8 var4)))))) var3 var0 var2 var7 var1 var5 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 node) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int) (var16 Int)) (or (not (and (inv_main22 var2 var9 var5 var8 var13 var6 var10) (and (and (not (= nullAddr var12)) (and (and (and (and (and (and (and (and (= var14 (newHeap (alloc var2 (O_node var7)))) (= var1 var9)) (= var4 var5)) (= var3 var8)) (= var15 var13)) (= var0 var6)) (= var11 var10)) (= var16 var13)) (= var12 (newAddr (alloc var2 (O_node var7)))))) (<= 0 (+ (+ var8 (- 1)) (- 1)))))) (inv_main29 var14 var1 var4 var3 var15 var0 var11 var16 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (or (not (inv_main12 var6 var4 var1 var3 var5 var0 var2)) (inv_main18 (write var6 var2 (O_node (node nullAddr (prev (getnode (read var6 var2))) (data (getnode (read var6 var2)))))) var4 var1 var3 var5 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Heap)) (or (not (and (inv_main78 var12 var6 var2 var1 var7 var0) (and (not (= var8 var11)) (and (and (and (and (and (and (= var10 var12) (= var4 var6)) (= var3 var2)) (= var5 var1)) (= var9 var7)) (= var11 var0)) (= var8 (next (getnode (read var12 var0)))))))) (inv_main82 var10 var4 var3 var5 var9 var11 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Addr) (var19 Int) (var20 Heap) (var21 Int) (var22 Int)) (or (not (and (inv_main82 var8 var15 var12 var10 var17 var2 var14) (and (not (= var1 var9)) (and (and (and (and (and (and (and (and (= var3 var8) (= var22 var15)) (= var19 var12)) (= var5 var10)) (= var16 var17)) (= var18 var2)) (= var4 var14)) (= var11 (next (getnode (read var8 var14))))) (and (and (and (and (and (and (and (= var20 (write var3 var4 defObj)) (= var21 var22)) (= var13 var19)) (= var0 var5)) (= var6 var16)) (= var9 var18)) (= var7 var4)) (= var1 var11)))))) (inv_main82 var20 var21 var13 var0 var6 var9 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap)) (or (not (and (inv_main22 var6 var3 var0 var2 var5 var1 var4) (not (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main23 var6 var3 var0 var2 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int)) (or (not (and (inv_main56 var4 var11 var8 var7 var12 var17 var1 var10 var14) (and (and (and (and (and (and (and (and (= var15 (write var4 var1 (O_node (node (next (getnode (read var4 var1))) (prev (getnode (read var4 var1))) var10)))) (= var13 var11)) (= var0 var8)) (= var16 var7)) (= var6 var12)) (= var3 var17)) (= var2 var1)) (= var5 var10)) (= var9 var14)))) (inv_main49 var15 var13 var0 var16 (+ var6 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr)) (or (not (and (inv_main44 var2 var9 var5 var7 var12 var6 var10) (and (and (and (and (and (and (= var11 (write var2 var6 (O_node (node (next (getnode (read var2 var6))) var10 (data (getnode (read var2 var6))))))) (= var1 var9)) (= var0 var5)) (= var4 var7)) (= var3 var12)) (= var8 var6)) (= var13 var10)))) (inv_main49 var11 var1 var0 var8 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main71 var5 var11 var9 var8 var13 var3 var4 var15) (and (<= 0 (+ (+ var0 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (= var6 var5) (= var1 var11)) (= var2 var9)) (= var16 var8)) (= var10 var13)) (= var14 var3)) (= var12 var4)) (= var0 var15)) (= var7 (next (getnode (read var5 var4)))))))) (inv_main71 var6 var1 var2 var16 var10 var14 var7 (+ var0 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main61 var4 var2 var1 var0 var3) (and (<= 0 (+ var3 (- 1))) (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1)))))) (inv_main71 var4 var2 var1 var0 var3 (+ var3 var2) var0 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Heap) (var9 Int) (var10 node)) (or (not (and (inv_main4 var8 var6 var3) (and (not (= nullAddr var1)) (and (and (and (and (and (and (= var7 (newHeap (alloc var8 (O_node var10)))) (= var4 var6)) (= var9 var3)) (= var2 var6)) (= var0 var3)) (= var5 var3)) (= var1 (newAddr (alloc var8 (O_node var10)))))))) (inv_main12 var7 var4 var9 var2 var0 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main57 var4 var13 var10 var9 var14 var18 var0 var12 var15) (and (<= 0 (+ (+ var16 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (and (= var7 var4) (= var2 var13)) (= var8 var10)) (= var1 var9)) (= var11 var14)) (= var3 var18)) (= var6 var0)) (= var17 var12)) (= var16 var15)) (= var5 (next (getnode (read var4 var0)))))))) (inv_main57 var7 var2 var8 var1 var11 var3 var5 var17 (+ var16 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main49 var4 var2 var1 var0 var3) (and (<= 0 (+ var3 (- 1))) (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1)))))) (inv_main57 var4 var2 var1 var0 var3 (+ var3 var2) var0 (+ var3 var2) var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (or (not (inv_main18 var6 var4 var1 var3 var5 var0 var2)) (inv_main19 (write var6 var2 (O_node (node (next (getnode (read var6 var2))) nullAddr (data (getnode (read var6 var2)))))) var4 var1 var3 var5 var0 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main71 var5 var11 var9 var8 var13 var3 var4 var15) (and (not (<= 0 (+ (+ var0 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (= var6 var5) (= var1 var11)) (= var2 var9)) (= var16 var8)) (= var10 var13)) (= var14 var3)) (= var12 var4)) (= var0 var15)) (= var7 (next (getnode (read var5 var4)))))))) (inv_main70 var6 var1 var2 var16 var10 var14 var7 (+ var0 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main61 var4 var2 var1 var0 var3) (and (not (<= 0 (+ var3 (- 1)))) (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1)))))) (inv_main70 var4 var2 var1 var0 var3 (+ var3 var2) var0 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap)) (or (not (inv_main23 var6 var3 var0 var2 var5 var1 var4)) (inv_main44 (write var6 var4 (O_node (node var1 (prev (getnode (read var6 var4))) (data (getnode (read var6 var4)))))) var3 var0 var2 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main70 var6 var11 var10 var9 var12 var4 var5 var14) (and (not (= var13 var0)) (and (and (and (and (and (and (= var2 var6) (= var3 var11)) (= var8 var10)) (= var1 var9)) (= var7 var12)) (= var13 var4)) (= var0 (data (getnode (read var6 var5)))))))) (inv_main85 var2 var3 var8 var1 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr)) (or (not (and (inv_main36 var5 var12 var9 var11 var16 var10 var15 var4 var2) (and (and (and (and (and (and (and (and (= var6 (write var5 var2 (O_node (node (next (getnode (read var5 var2))) (prev (getnode (read var5 var2))) var4)))) (= var14 var12)) (= var3 var9)) (= var13 var11)) (= var1 var16)) (= var17 var10)) (= var8 var15)) (= var0 var4)) (= var7 var2)))) (inv_main38 var6 var14 var3 var13 var1 var17 var8 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Heap)) (or (not (and (inv_main41 var4 var10 var7 var9 var13 var8 var11 var0) (and (and (and (and (and (and (and (= var15 (write var4 var8 (O_node (node (next (getnode (read var4 var8))) var0 (data (getnode (read var4 var8))))))) (= var3 var10)) (= var1 var7)) (= var14 var9)) (= var2 var13)) (= var6 var8)) (= var12 var11)) (= var5 var0)))) (inv_main22 var15 var3 var1 (+ var14 (- 1)) var2 var5 var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main38 var4 var11 var7 var10 var14 var8 var12 var0) (and (= var9 nullAddr) (and (and (and (and (and (and (and (= var1 (write var4 var0 (O_node (node var8 (prev (getnode (read var4 var0))) (data (getnode (read var4 var0))))))) (= var15 var11)) (= var2 var7)) (= var3 var10)) (= var5 var14)) (= var9 var8)) (= var13 var12)) (= var6 var0))))) (inv_main22 var1 var15 var2 (+ var3 (- 1)) var5 var6 var13)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var6 var11 var9 var10 var13 var2 var3) (and (and (and (and (and (and (= var5 (write var6 var3 (O_node (node (next (getnode (read var6 var3))) (prev (getnode (read var6 var3))) var2)))) (= var8 var11)) (= var7 var9)) (= var1 var10)) (= var0 var13)) (= var12 var2)) (= var4 var3)))) (inv_main22 var5 var8 var7 var1 var0 var4 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (inv_main35 var8 var3 var0 var2 var7 var1 var5 var6 var4)) (inv_main36 (write var8 var4 (O_node (node (next (getnode (read var8 var4))) nullAddr (data (getnode (read var8 var4)))))) var3 var0 var2 var7 var1 var5 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main61 var4 var2 var1 var0 var3) (and (not (= nullAddr var0)) (not (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1))))))) (inv_main78 var4 var2 var1 var0 var3 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (inv_main32 var9 var4 var1 var3 var8 var2 var6 var7 var5 var0)) (inv_main32 var9 var4 var1 var3 var8 var2 var6 var7 var5 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 node) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main22 var7 var13 var10 var12 var15 var11 var14) (and (and (= nullAddr var16) (and (and (and (and (and (and (and (and (= var4 (newHeap (alloc var7 (O_node var6)))) (= var5 var13)) (= var2 var10)) (= var1 var12)) (= var0 var15)) (= var3 var11)) (= var9 var14)) (= var8 var15)) (= var16 (newAddr (alloc var7 (O_node var6)))))) (<= 0 (+ (+ var12 (- 1)) (- 1)))))) (inv_main32 var4 var5 var2 var1 var0 var3 var9 var8 var16 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main38 var5 var11 var8 var10 var14 var9 var12 var0) (and (not (= var7 nullAddr)) (and (and (and (and (and (and (and (= var4 (write var5 var0 (O_node (node var9 (prev (getnode (read var5 var0))) (data (getnode (read var5 var0))))))) (= var1 var11)) (= var13 var8)) (= var2 var10)) (= var15 var14)) (= var7 var9)) (= var3 var12)) (= var6 var0))))) (inv_main41 var4 var1 var13 var2 var15 var7 var3 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main12 var6 var4 var1 var3 var5 var0 var2) (not (is-O_node (read var6 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main18 var6 var4 var1 var3 var5 var0 var2) (not (is-O_node (read var6 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main19 var6 var4 var1 var3 var5 var0 var2) (not (is-O_node (read var6 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (not (and (inv_main29 var8 var3 var0 var2 var7 var1 var5 var6 var4) (not (is-O_node (read var8 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (not (and (inv_main35 var8 var3 var0 var2 var7 var1 var5 var6 var4) (not (is-O_node (read var8 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (not (and (inv_main36 var8 var3 var0 var2 var7 var1 var5 var6 var4) (not (is-O_node (read var8 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (not (and (inv_main38 var7 var4 var1 var3 var6 var2 var5 var0) (not (is-O_node (read var7 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (not (and (inv_main41 var7 var4 var1 var3 var6 var2 var5 var0) (not (is-O_node (read var7 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap)) (not (and (inv_main23 var6 var3 var0 var2 var5 var1 var4) (not (is-O_node (read var6 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap)) (not (and (inv_main44 var6 var3 var0 var2 var5 var1 var4) (not (is-O_node (read var6 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int)) (not (and (inv_main57 var7 var4 var2 var1 var5 var8 var0 var3 var6) (not (is-O_node (read var7 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int)) (not (and (inv_main56 var7 var4 var2 var1 var5 var8 var0 var3 var6) (not (is-O_node (read var7 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (not (and (inv_main71 var7 var2 var1 var0 var3 var4 var5 var6) (not (is-O_node (read var7 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (not (and (inv_main70 var7 var2 var1 var0 var3 var4 var5 var6) (not (is-O_node (read var7 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main78 var5 var3 var2 var1 var4 var0) (not (is-O_node (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main82 var6 var4 var2 var1 var5 var0 var3) (not (is-O_node (read var6 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap)) (not (inv_main85 var4 var2 var1 var0 var3)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll2n_append_equal.i.smt2 b/heap-theory-benchmarks/heap/dll2n_append_equal.i.smt2 new file mode 100644 index 00000000..9e008611 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll2n_append_equal.i.smt2 @@ -0,0 +1,90 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr) (prev Addr)) + ) +)) +(declare-fun inv_main15 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main24 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main40 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main46 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main47 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main53 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main58 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main60 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main73 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 node) (var11 Int) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main8 var9 var8 var3 var13 var11 var12) (and (and (not (= nullAddr var6)) (and (and (and (and (and (and (and (= var0 (newHeap (alloc var9 (O_node var10)))) (= var2 var8)) (= var5 var3)) (= var7 var12)) (= var1 3)) (= var4 var3)) (= var14 var3)) (= var6 (newAddr (alloc var9 (O_node var10)))))) (not (<= 0 (+ var13 (- 1))))))) (inv_main40 var0 var2 var5 var7 var1 var4 var14 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main18 var0 var7 var3 var6 var4 var5 var8 var1 var2)) (inv_main18 var0 var7 var3 var6 var4 var5 var8 var1 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 node) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap)) (or (not (and (inv_main8 var7 var5 var3 var13 var11 var12) (and (and (= nullAddr var1) (and (and (and (and (and (and (and (= var14 (newHeap (alloc var7 (O_node var2)))) (= var9 var5)) (= var8 var3)) (= var6 var13)) (= var10 var11)) (= var4 var12)) (= var0 var11)) (= var1 (newAddr (alloc var7 (O_node var2)))))) (<= 0 (+ var13 (- 1)))))) (inv_main18 var14 var9 var8 var6 var10 var4 var0 var1 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main58 var0 var5 var3 var2 var4 var1) (not (= var4 nullAddr)))) (inv_main60 var0 var5 var3 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var0 var6 var2 var5 var3 var4 var7 var1)) (inv_main21 (write var0 var1 (O_node (node (data (getnode (read var0 var1))) nullAddr (prev (getnode (read var0 var1)))))) var6 var2 var5 var3 var4 var7 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main60 var0 var5 var3 var2 var4 var1) (not (= var3 (data (getnode (read var0 var4))))))) (inv_main76 var0 var5 var3 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main58 var0 var5 var3 var2 var4 var1) (and (not (= var1 (+ 1 var5))) (= var4 nullAddr)))) (inv_main76 var0 var5 var3 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (or (not (inv_main53 var0 var5 var3 var2 var1 var6 var7 var4)) (inv_main56 (write var0 var4 (O_node (node (data (getnode (read var0 var4))) var7 (prev (getnode (read var0 var4)))))) var5 var3 var2 var1 var6 var7 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr)) (or (not (and (inv_main61 var0 var9 var5 var4 var6 var1) (and (and (and (and (and (and (= var2 var0) (= var10 var9)) (= var8 var5)) (= var12 var4)) (= var3 var6)) (= var7 var1)) (= var11 (next (getnode (read var0 var6))))))) (inv_main58 var2 var10 var8 var12 var11 (+ var7 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main56 var8 var5 var3 var10 var9 var11 var13 var4) (and (and (and (and (and (= var6 (write var8 var13 (O_node (node (data (getnode (read var8 var13))) (next (getnode (read var8 var13))) var4)))) (= var12 var5)) (= var1 var3)) (= var2 var10)) (= var7 var9)) (= var0 var11)))) (inv_main58 var6 var12 var1 var2 var2 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main47 var8 var4 var2 var10 var9 var14 var11 var7) (and (= nullAddr var15) (and (and (and (and (and (and (and (= var13 (write var8 var7 (O_node (node var11 (next (getnode (read var8 var7))) (prev (getnode (read var8 var7))))))) (= var12 var4)) (= var0 var2)) (= var15 var10)) (= var6 var9)) (= var3 var14)) (= var5 var11)) (= var1 var7))))) (inv_main58 var13 var12 var0 var1 var1 0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (or (not (and (inv_main52 var0 var5 var3 var2 var1 var6 var7 var4) (= (next (getnode (read var0 var4))) nullAddr))) (inv_main53 var0 var5 var3 var2 var1 var6 var7 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (or (not (inv_main40 var0 var5 var3 var2 var1 var6 var4 var7)) (inv_main46 (write var0 var7 (O_node (node (data (getnode (read var0 var7))) nullAddr (prev (getnode (read var0 var7)))))) var5 var3 var2 var1 var6 var4 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main21 var0 var6 var2 var5 var3 var4 var7 var1)) (inv_main22 (write var0 var1 (O_node (node (data (getnode (read var0 var1))) (next (getnode (read var0 var1))) nullAddr))) var6 var2 var5 var3 var4 var7 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (or (not (inv_main46 var0 var5 var3 var2 var1 var6 var4 var7)) (inv_main47 (write var0 var7 (O_node (node (data (getnode (read var0 var7))) (next (getnode (read var0 var7))) nullAddr))) var5 var3 var2 var1 var6 var4 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Int) (var16 Int) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Int) (var21 Int) (var22 Addr)) (or (not (and (inv_main73 var14 var7 var4 var18 var5 var15 var10) (and (not (= var13 nullAddr)) (and (and (and (and (and (and (and (and (= var17 var14) (= var2 var7)) (= var6 var4)) (= var22 var18)) (= var19 var5)) (= var21 var15)) (= var8 var10)) (= var12 (next (getnode (read var14 var10))))) (and (and (and (and (and (and (and (= var0 (write var17 var8 defObj)) (= var20 var2)) (= var9 var6)) (= var3 var22)) (= var1 var19)) (= var16 var21)) (= var11 var8)) (= var13 var12)))))) (inv_main73 var0 var20 var9 var3 var1 var16 var13)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main58 var0 var5 var3 var2 var4 var1) (and (not (= var2 nullAddr)) (and (= var1 (+ 1 var5)) (= var4 nullAddr))))) (inv_main73 var0 var5 var3 var2 var4 var1 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap)) (or (not (and (inv_main25 var7 var5 var2 var11 var9 var10 var4) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (= var13 (write var7 var4 (O_node (node (data (getnode (read var7 var4))) var10 (prev (getnode (read var7 var4))))))) (= var8 var5)) (= var3 var2)) (= var6 var11)) (= var0 var9)) (= var12 var10)) (= var1 var4))))) (inv_main28 var13 var8 var3 var6 var0 var12 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main60 var0 var5 var3 var2 var4 var1) (= var3 (data (getnode (read var0 var4)))))) (inv_main61 var0 var5 var3 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (or (not (inv_main43 var0 var6 var4 var3 var1 var7 var5 var8 var2)) (inv_main43 var0 var6 var4 var3 var1 var7 var5 var8 var2)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int)) (or (not (and (inv_main8 var7 var5 var3 var12 var10 var11) (and (and (= nullAddr var8) (and (and (and (and (and (and (and (= var9 (newHeap (alloc var7 (O_node var0)))) (= var14 var5)) (= var4 var3)) (= var13 var11)) (= var2 3)) (= var1 var3)) (= var6 var3)) (= var8 (newAddr (alloc var7 (O_node var0)))))) (not (<= 0 (+ var12 (- 1))))))) (inv_main43 var9 var14 var4 var13 var2 var1 var6 var8 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (or (not (and (inv_main52 var0 var5 var3 var2 var1 var6 var7 var4) (not (= (next (getnode (read var0 var4))) nullAddr)))) (inv_main54 var0 var5 var3 var2 var1 var6 var7 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 node) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int)) (or (not (and (inv_main8 var10 var8 var4 var14 var12 var13) (and (and (not (= nullAddr var7)) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var10 (O_node var6)))) (= var1 var8)) (= var9 var4)) (= var5 var14)) (= var0 var12)) (= var3 var13)) (= var2 var12)) (= var7 (newAddr (alloc var10 (O_node var6)))))) (<= 0 (+ var14 (- 1)))))) (inv_main15 var11 var1 var9 var5 var0 var3 var2 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap)) (or (not (and (inv_main22 var7 var5 var3 var11 var9 var10 var14 var1) (and (and (and (and (and (and (and (= var15 (write var7 var1 (O_node (node var14 (next (getnode (read var7 var1))) (prev (getnode (read var7 var1))))))) (= var8 var5)) (= var12 var3)) (= var6 var11)) (= var4 var9)) (= var2 var10)) (= var0 var14)) (= var13 var1)))) (inv_main24 var15 var8 var12 var6 var4 var2 var13)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Addr) (var13 Int)) (or (not (and (inv_main28 var9 var5 var2 var13 var11 var12 var3) (and (and (and (and (and (and (= var1 (write var9 var12 (O_node (node (data (getnode (read var9 var12))) (next (getnode (read var9 var12))) var3)))) (= var10 var5)) (= var4 var2)) (= var8 var13)) (= var6 var11)) (= var0 var12)) (= var7 var3)))) (inv_main8 var1 var10 var4 (+ var8 (- 1)) var6 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int)) (or (not (and (inv_main25 var8 var5 var2 var12 var10 var11 var4) (and (= var0 nullAddr) (and (and (and (and (and (and (= var3 (write var8 var4 (O_node (node (data (getnode (read var8 var4))) var11 (prev (getnode (read var8 var4))))))) (= var6 var5)) (= var9 var2)) (= var13 var12)) (= var7 var10)) (= var0 var11)) (= var1 var4))))) (inv_main8 var3 var6 var9 (+ var13 (- 1)) var7 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int)) (or (not (inv_main4 var0 var2 var1)) (inv_main8 var0 var2 var1 var2 var1 nullAddr)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main54 var9 var7 var3 var12 var10 var15 var16 var6) (and (and (and (and (and (and (and (and (= var0 var9) (= var2 var7)) (= var14 var3)) (= var8 var12)) (= var5 var10)) (= var4 var15)) (= var13 var16)) (= var11 var6)) (= var1 (next (getnode (read var9 var6))))))) (inv_main52 var0 var2 var14 var8 var5 var4 var13 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main47 var8 var4 var2 var10 var9 var14 var11 var7) (and (not (= nullAddr var15)) (and (and (and (and (and (and (and (= var13 (write var8 var7 (O_node (node var11 (next (getnode (read var8 var7))) (prev (getnode (read var8 var7))))))) (= var12 var4)) (= var0 var2)) (= var15 var10)) (= var6 var9)) (= var3 var14)) (= var5 var11)) (= var1 var7))))) (inv_main52 var13 var12 var0 var15 var6 var3 var1 var15)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main24 var0 var6 var1 var5 var3 var4 var2)) (inv_main25 (write var0 var2 (O_node (node var3 (next (getnode (read var0 var2))) (prev (getnode (read var0 var2)))))) var6 var1 var5 var3 var4 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main15 var0 var6 var2 var5 var3 var4 var7 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main21 var0 var6 var2 var5 var3 var4 var7 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main22 var0 var6 var2 var5 var3 var4 var7 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main24 var0 var6 var1 var5 var3 var4 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main25 var0 var6 var1 var5 var3 var4 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main28 var0 var6 var1 var5 var3 var4 var2) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main40 var0 var5 var3 var2 var1 var6 var4 var7) (not (is-O_node (read var0 var7))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main46 var0 var5 var3 var2 var1 var6 var4 var7) (not (is-O_node (read var0 var7))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main47 var0 var5 var3 var2 var1 var6 var4 var7) (not (is-O_node (read var0 var7))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main52 var0 var5 var3 var2 var1 var6 var7 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main54 var0 var5 var3 var2 var1 var6 var7 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main53 var0 var5 var3 var2 var1 var6 var7 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main56 var0 var5 var3 var2 var1 var6 var7 var4) (not (is-O_node (read var0 var7))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (not (and (inv_main60 var0 var5 var3 var2 var4 var1) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (not (and (inv_main61 var0 var5 var3 var2 var4 var1) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main73 var0 var5 var3 var2 var4 var1 var6) (not (is-O_node (read var0 var6))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (not (inv_main76 var0 var5 var3 var2 var4 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll2n_insert_equal.i.smt2 b/heap-theory-benchmarks/heap/dll2n_insert_equal.i.smt2 new file mode 100644 index 00000000..579c9336 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll2n_insert_equal.i.smt2 @@ -0,0 +1,97 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr) (prev Addr)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main34 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Int Int Int Int Addr Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main40 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main45 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main53 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main60 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main63 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main81 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int)) (or (not (inv_main37 var5 var6 var1 var4 var8 var9 var3 var0 var7 var2)) (inv_main37 var5 var6 var1 var4 var8 var9 var3 var0 var7 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Heap) (var10 Int) (var11 node) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 Int) (var22 Heap) (var23 Int)) (or (not (and (inv_main8 var7 var8 var16 var6 var2 var13) (and (and (and (= nullAddr var1) (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var22 (O_node var11)))) (= var19 var17)) (= var14 var4)) (= var5 var3)) (= var12 var10)) (= var18 var15)) (= var21 var20)) (= var0 var15)) (= var1 (newAddr (alloc var22 (O_node var11)))))) (and (and (and (and (and (and (= var22 var7) (= var17 var8)) (= var4 var16)) (= var3 var13)) (= var10 3)) (= var15 var16)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var8 (* (- 2) var23)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var8 (* (- 2) var23)))) (- 1)))) (or (not (<= 0 (+ (+ var8 (* (- 2) var23)) (- 1)))) (<= 0 (+ var8 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var8 (* (- 2) var23))) (- 1)))) (<= 0 (+ (* (- 1) var8) (- 1))))) (= var20 var23)))) (not (<= 0 (+ var6 (- 1))))))) (inv_main37 var9 var19 var14 var5 var12 var18 var21 var0 var1 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 node) (var11 Addr) (var12 Int) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Int) (var23 Int)) (or (not (and (inv_main8 var8 var9 var13 var7 var5 var11) (and (and (and (not (= nullAddr var20)) (and (and (and (and (and (and (and (and (= var14 (newHeap (alloc var4 (O_node var10)))) (= var1 var3)) (= var17 var0)) (= var15 var21)) (= var6 var2)) (= var16 var19)) (= var22 var12)) (= var18 var19)) (= var20 (newAddr (alloc var4 (O_node var10)))))) (and (and (and (and (and (and (= var4 var8) (= var3 var9)) (= var0 var13)) (= var21 var11)) (= var2 3)) (= var19 var13)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var9 (* (- 2) var23)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var9 (* (- 2) var23)))) (- 1)))) (or (not (<= 0 (+ (+ var9 (* (- 2) var23)) (- 1)))) (<= 0 (+ var9 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var9 (* (- 2) var23))) (- 1)))) (<= 0 (+ (* (- 1) var9) (- 1))))) (= var12 var23)))) (not (<= 0 (+ var7 (- 1))))))) (inv_main34 var14 var1 var17 var15 var6 var16 var22 var18 var20)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main45 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (and (= var7 nullAddr) (not (<= 0 (+ var2 (- 1))))))) (inv_main52 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int)) (or (not (and (inv_main54 var4 var5 var11 var13 var15 var8 var3 var0 var17 var7) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (and (and (= var12 (write var4 var0 (O_node (node (data (getnode (read var4 var0))) var7 (prev (getnode (read var4 var0))))))) (= var14 var5)) (= var10 var11)) (= var1 var13)) (= var2 var15)) (= var19 var8)) (= var16 var3)) (= var18 var0)) (= var9 var17)) (= var6 var7))))) (inv_main56 var12 var14 var10 var1 var2 var19 var16 var18 var9 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap)) (or (not (and (inv_main19 var2 var3 var8 var1 var0 var7 var4) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (= var13 (write var2 var4 (O_node (node (data (getnode (read var2 var4))) (next (getnode (read var2 var4))) nullAddr)))) (= var11 var3)) (= var9 var8)) (= var12 var1)) (= var5 var0)) (= var6 var7)) (= var10 var4))))) (inv_main22 var13 var11 var9 var12 var5 var6 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (inv_main51 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8)) (inv_main53 (write var4 var7 (O_node (node (data (getnode (read var4 var7))) var0 (prev (getnode (read var4 var7)))))) var5 var1 var3 var6 var9 var2 var0 var7 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Heap)) (or (not (and (inv_main22 var4 var5 var11 var3 var1 var9 var8) (and (and (and (and (and (and (= var13 (write var4 var9 (O_node (node (data (getnode (read var4 var9))) (next (getnode (read var4 var9))) var8)))) (= var10 var5)) (= var0 var11)) (= var12 var3)) (= var2 var1)) (= var6 var9)) (= var7 var8)))) (inv_main8 var13 var10 var0 (+ var12 (- 1)) var2 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var5 var6 var12 var4 var0 var10 var7) (and (= var11 nullAddr) (and (and (and (and (and (and (= var9 (write var5 var7 (O_node (node (data (getnode (read var5 var7))) (next (getnode (read var5 var7))) nullAddr)))) (= var8 var6)) (= var13 var12)) (= var2 var4)) (= var3 var0)) (= var11 var10)) (= var1 var7))))) (inv_main8 var9 var8 var13 (+ var2 (- 1)) var3 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int)) (or (not (inv_main4 var1 var2 var0)) (inv_main8 var1 var2 var0 var2 var0 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int)) (or (not (and (inv_main52 var4 var5 var12 var13 var14 var8 var3 var0 var17 var7) (and (not (= var16 nullAddr)) (and (and (and (and (and (and (and (and (and (= var9 (write var4 var0 (O_node (node (data (getnode (read var4 var0))) var13 (prev (getnode (read var4 var0))))))) (= var15 var5)) (= var6 var12)) (= var16 var13)) (= var2 var14)) (= var19 var8)) (= var11 var3)) (= var10 var0)) (= var1 var17)) (= var18 var7))))) (inv_main60 var9 var15 var6 var16 var2 var19 var11 var10 var1 var18)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (inv_main65 var2 var3 var0 var1 var4 var5)) (inv_main66 var2 var3 var0 var1 var4 var5 (next (getnode (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr)) (or (not (and (inv_main48 var4 var5 var12 var14 var15 var11 var3 var0 var19 var10) (and (and (and (and (and (and (and (and (and (and (= var2 var4) (= var18 var5)) (= var9 var12)) (= var7 var14)) (= var6 var15)) (= var16 var11)) (= var1 var3)) (= var13 var0)) (= var8 var19)) (= var17 var10)) (= var20 (next (getnode (read var4 var10))))))) (inv_main45 var2 var18 var9 var7 var6 var16 (+ var1 (- 1)) var13 var8 var20)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Int) (var24 Int) (var25 Int) (var26 Addr)) (or (not (and (inv_main41 var6 var7 var15 var18 var21 var11 var5 var14 var20) (and (and (and (and (and (and (and (and (and (= var1 var0) (= var13 var2)) (= var24 var22)) (= var9 var4)) (= var12 var3)) (= var8 var23)) (= var17 var16)) (= var19 var26)) (= var10 nullAddr)) (and (and (and (and (and (and (and (and (= var0 (write var6 var20 (O_node (node var14 (next (getnode (read var6 var20))) (prev (getnode (read var6 var20))))))) (= var2 var7)) (= var22 var15)) (= var4 var18)) (= var3 var21)) (= var23 var11)) (= var16 var5)) (= var25 var14)) (= var26 var20))))) (inv_main45 var1 var13 var24 var9 var12 var8 var17 var19 var10 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main40 var4 var5 var1 var3 var7 var8 var2 var0 var6)) (inv_main41 (write var4 var6 (O_node (node (data (getnode (read var4 var6))) (next (getnode (read var4 var6))) nullAddr))) var5 var1 var3 var7 var8 var2 var0 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main34 var4 var5 var1 var3 var7 var8 var2 var0 var6)) (inv_main40 (write var4 var6 (O_node (node (data (getnode (read var4 var6))) nullAddr (prev (getnode (read var4 var6)))))) var5 var1 var3 var7 var8 var2 var0 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main63 var2 var3 var0 var1 var4 var5) (not (= var4 nullAddr)))) (inv_main65 var2 var3 var0 var1 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Heap) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Int) (var22 Addr)) (or (not (and (inv_main78 var6 var7 var15 var17 var8 var21 var20) (and (not (= var2 nullAddr)) (and (and (and (and (and (and (and (and (= var12 var6) (= var5 var7)) (= var16 var15)) (= var19 var17)) (= var22 var8)) (= var10 var21)) (= var0 var20)) (= var14 (next (getnode (read var6 var20))))) (and (and (and (and (and (and (and (= var13 (write var12 var0 defObj)) (= var3 var5)) (= var1 var16)) (= var4 var19)) (= var18 var22)) (= var11 var10)) (= var9 var0)) (= var2 var14)))))) (inv_main78 var13 var3 var1 var4 var18 var11 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main63 var2 var3 var0 var1 var4 var5) (and (not (= var1 nullAddr)) (and (= var5 (+ 1 var3)) (= var4 nullAddr))))) (inv_main78 var2 var3 var0 var1 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main66 var2 var3 var0 var1 var4 var5 var6) (not (= var0 (data (getnode (read var2 var4))))))) (inv_main81 var2 var3 var0 var1 var4 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main63 var2 var3 var0 var1 var4 var5) (and (not (= var5 (+ 1 var3))) (= var4 nullAddr)))) (inv_main81 var2 var3 var0 var1 var4 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr)) (or (not (inv_main15 var4 var5 var0 var3 var1 var7 var6 var2)) (inv_main15 var4 var5 var0 var3 var1 var7 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 node) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main8 var3 var4 var11 var2 var1 var7) (and (and (= nullAddr var5) (and (and (and (and (and (and (= var6 (newHeap (alloc var3 (O_node var10)))) (= var13 var4)) (= var9 var11)) (= var12 var2)) (= var8 var1)) (= var0 var7)) (= var5 (newAddr (alloc var3 (O_node var10)))))) (<= 0 (+ var2 (- 1)))))) (inv_main15 var6 var13 var9 var12 var8 var0 var5 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (inv_main18 var3 var4 var0 var2 var1 var6 var5)) (inv_main19 (write var3 var5 (O_node (node (data (getnode (read var3 var5))) var6 (prev (getnode (read var3 var5)))))) var4 var0 var2 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main66 var2 var3 var0 var1 var4 var5 var6) (= var0 (data (getnode (read var2 var4)))))) (inv_main63 var2 var3 var0 var1 var6 (+ var5 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main56 var3 var4 var10 var12 var13 var9 var2 var0 var14 var7) (and (and (and (and (and (and (= var11 (write var3 var7 (O_node (node (data (getnode (read var3 var7))) (next (getnode (read var3 var7))) var0)))) (= var6 var4)) (= var1 var10)) (= var5 var12)) (= var16 var13)) (= var8 var9)) (= var15 var2)))) (inv_main63 var11 var6 var1 var5 var5 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int)) (or (not (and (inv_main54 var5 var6 var15 var16 var17 var11 var4 var0 var18 var9) (and (= var8 nullAddr) (and (and (and (and (and (and (and (and (and (= var3 (write var5 var0 (O_node (node (data (getnode (read var5 var0))) var9 (prev (getnode (read var5 var0))))))) (= var19 var6)) (= var1 var15)) (= var7 var16)) (= var12 var17)) (= var10 var11)) (= var13 var4)) (= var14 var0)) (= var2 var18)) (= var8 var9))))) (inv_main63 var3 var19 var1 var7 var7 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int)) (or (not (and (inv_main60 var5 var6 var12 var13 var16 var10 var4 var1 var18 var8) (and (and (and (and (and (and (and (and (and (= var7 (write var5 var13 (O_node (node (data (getnode (read var5 var13))) (next (getnode (read var5 var13))) var1)))) (= var19 var6)) (= var14 var12)) (= var9 var13)) (= var11 var16)) (= var0 var10)) (= var15 var4)) (= var17 var1)) (= var3 var18)) (= var2 var8)))) (inv_main63 var7 var19 var14 var17 var17 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int) (var17 Heap) (var18 Addr) (var19 Int)) (or (not (and (inv_main52 var5 var6 var13 var15 var16 var12 var4 var2 var18 var11) (and (= var10 nullAddr) (and (and (and (and (and (and (and (and (and (= var17 (write var5 var2 (O_node (node (data (getnode (read var5 var2))) var15 (prev (getnode (read var5 var2))))))) (= var0 var6)) (= var19 var13)) (= var10 var15)) (= var7 var16)) (= var1 var12)) (= var9 var4)) (= var14 var2)) (= var8 var18)) (= var3 var11))))) (inv_main63 var17 var0 var19 var14 var14 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main45 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (<= 0 (+ var2 (- 1))))) (inv_main48 var4 var5 var1 var3 var6 var9 var2 var0 var8 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main45 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (and (not (= var7 nullAddr)) (not (<= 0 (+ var2 (- 1))))))) (inv_main51 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (inv_main53 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8)) (inv_main54 (write var4 var0 (O_node (node (data (getnode (read var4 var0))) (next (getnode (read var4 var0))) var7))) var5 var1 var3 var6 var9 var2 var0 var7 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 node) (var12 Int) (var13 Heap)) (or (not (and (inv_main8 var5 var6 var12 var4 var3 var10) (and (and (not (= nullAddr var2)) (and (and (and (and (and (and (= var13 (newHeap (alloc var5 (O_node var11)))) (= var0 var6)) (= var1 var12)) (= var9 var4)) (= var8 var3)) (= var7 var10)) (= var2 (newAddr (alloc var5 (O_node var11)))))) (<= 0 (+ var4 (- 1)))))) (inv_main12 var13 var0 var1 var9 var8 var7 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (inv_main12 var3 var4 var0 var2 var1 var6 var5)) (inv_main18 (write var3 var5 (O_node (node var1 (next (getnode (read var3 var5))) (prev (getnode (read var3 var5)))))) var4 var0 var2 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main12 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main18 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main19 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main22 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main34 var4 var5 var1 var3 var7 var8 var2 var0 var6) (not (is-O_node (read var4 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main40 var4 var5 var1 var3 var7 var8 var2 var0 var6) (not (is-O_node (read var4 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main41 var4 var5 var1 var3 var7 var8 var2 var0 var6) (not (is-O_node (read var4 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main48 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main51 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var7))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main53 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main54 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main56 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main52 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main60 var4 var5 var1 var3 var6 var9 var2 var0 var7 var8) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (not (and (inv_main65 var2 var3 var0 var1 var4 var5) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main66 var2 var3 var0 var1 var4 var5 var6) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main78 var2 var3 var0 var1 var5 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (not (inv_main81 var2 var3 var0 var1 var4 var5)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll2n_prepend_equal.i.smt2 b/heap-theory-benchmarks/heap/dll2n_prepend_equal.i.smt2 new file mode 100644 index 00000000..73991e22 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll2n_prepend_equal.i.smt2 @@ -0,0 +1,77 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr) (prev Addr)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main34 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main40 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main46 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main64 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main41 var1 var7 var3 var14 var15 var9 var8 var12) (and (and (and (and (and (and (and (= var10 (write var1 var12 (O_node (node var8 (next (getnode (read var1 var12))) (prev (getnode (read var1 var12))))))) (= var11 var7)) (= var0 var3)) (= var2 var14)) (= var13 var15)) (= var6 var9)) (= var4 var8)) (= var5 var12)))) (inv_main43 var10 var11 var0 var2 var13 var6 var5)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int)) (or (not (and (inv_main43 var1 var5 var2 var12 var13 var6 var4) (and (not (= var7 nullAddr)) (and (and (and (and (and (and (= var0 (write var1 var4 (O_node (node (data (getnode (read var1 var4))) var12 (prev (getnode (read var1 var4))))))) (= var3 var5)) (= var9 var2)) (= var7 var12)) (= var11 var13)) (= var10 var6)) (= var8 var4))))) (inv_main46 var0 var3 var9 var7 var11 var10 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int) (var16 Int) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Int) (var22 Addr)) (or (not (and (inv_main64 var3 var12 var5 var19 var1 var2 var14) (and (not (= var20 nullAddr)) (and (and (and (and (and (and (and (and (= var17 var3) (= var16 var12)) (= var7 var5)) (= var22 var19)) (= var18 var1)) (= var11 var2)) (= var4 var14)) (= var6 (next (getnode (read var3 var14))))) (and (and (and (and (and (and (and (= var13 (write var17 var4 defObj)) (= var0 var16)) (= var15 var7)) (= var8 var22)) (= var10 var18)) (= var21 var11)) (= var9 var4)) (= var20 var6)))))) (inv_main64 var13 var0 var15 var8 var10 var21 var20)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main49 var2 var5 var3 var4 var0 var1) (and (not (= var4 nullAddr)) (and (= var1 (+ 1 var5)) (= var0 nullAddr))))) (inv_main64 var2 var5 var3 var4 var0 var1 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (or (not (inv_main12 var1 var6 var2 var4 var0 var3 var5)) (inv_main18 (write var1 var5 (O_node (node var0 (next (getnode (read var1 var5))) (prev (getnode (read var1 var5)))))) var6 var2 var4 var0 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (inv_main51 var2 var5 var3 var4 var0 var1)) (inv_main52 var2 var5 var3 var4 var0 var1 (next (getnode (read var2 var0))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (or (not (inv_main18 var1 var6 var2 var4 var0 var3 var5)) (inv_main19 (write var1 var5 (O_node (node (data (getnode (read var1 var5))) var3 (prev (getnode (read var1 var5)))))) var6 var2 var4 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (or (not (inv_main40 var2 var7 var3 var5 var6 var1 var0 var4)) (inv_main41 (write var2 var4 (O_node (node (data (getnode (read var2 var4))) (next (getnode (read var2 var4))) nullAddr))) var7 var3 var5 var6 var1 var0 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (and (inv_main19 var2 var10 var4 var7 var1 var6 var13) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (= var0 (write var2 var13 (O_node (node (data (getnode (read var2 var13))) (next (getnode (read var2 var13))) nullAddr)))) (= var5 var10)) (= var9 var4)) (= var8 var7)) (= var11 var1)) (= var12 var6)) (= var3 var13))))) (inv_main22 var0 var5 var9 var8 var11 var12 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (or (not (inv_main34 var2 var7 var3 var5 var6 var1 var0 var4)) (inv_main40 (write var2 var4 (O_node (node (data (getnode (read var2 var4))) nullAddr (prev (getnode (read var2 var4)))))) var7 var3 var5 var6 var1 var0 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (and (inv_main22 var5 var9 var6 var8 var2 var7 var13) (and (and (and (and (and (and (= var0 (write var5 var7 (O_node (node (data (getnode (read var5 var7))) (next (getnode (read var5 var7))) var13)))) (= var1 var9)) (= var11 var6)) (= var4 var8)) (= var3 var2)) (= var10 var7)) (= var12 var13)))) (inv_main8 var0 var1 var11 (+ var4 (- 1)) var3 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (and (inv_main19 var2 var8 var3 var7 var1 var6 var13) (and (= var0 nullAddr) (and (and (and (and (and (and (= var5 (write var2 var13 (O_node (node (data (getnode (read var2 var13))) (next (getnode (read var2 var13))) nullAddr)))) (= var9 var8)) (= var11 var3)) (= var4 var7)) (= var10 var1)) (= var0 var6)) (= var12 var13))))) (inv_main8 var5 var9 var11 (+ var4 (- 1)) var10 var12)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int)) (or (not (inv_main4 var0 var2 var1)) (inv_main8 var0 var2 var1 var2 var1 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 node)) (or (not (and (inv_main8 var3 var9 var5 var7 var2 var6) (and (and (not (= nullAddr var12)) (and (and (and (and (and (and (= var10 (newHeap (alloc var3 (O_node var13)))) (= var0 var9)) (= var8 var5)) (= var1 var7)) (= var11 var2)) (= var4 var6)) (= var12 (newAddr (alloc var3 (O_node var13)))))) (<= 0 (+ var7 (- 1)))))) (inv_main12 var10 var0 var8 var1 var11 var4 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main49 var2 var5 var3 var4 var0 var1) (not (= var0 nullAddr)))) (inv_main51 var2 var5 var3 var4 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 node) (var14 Heap)) (or (not (and (inv_main8 var3 var9 var4 var7 var1 var6) (and (and (not (= nullAddr var0)) (and (and (and (and (and (and (and (= var14 (newHeap (alloc var3 (O_node var13)))) (= var12 var9)) (= var2 var4)) (= var10 var6)) (= var11 3)) (= var5 var4)) (= var8 var4)) (= var0 (newAddr (alloc var3 (O_node var13)))))) (not (<= 0 (+ var7 (- 1))))))) (inv_main34 var14 var12 var2 var10 var11 var5 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main52 var3 var6 var4 var5 var1 var2 var0) (= var4 (data (getnode (read var3 var1)))))) (inv_main49 var3 var6 var4 var5 var0 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr)) (or (not (and (inv_main46 var2 var6 var3 var9 var10 var7 var5) (and (and (and (and (and (and (= var12 (write var2 var9 (O_node (node (data (getnode (read var2 var9))) (next (getnode (read var2 var9))) var5)))) (= var11 var6)) (= var4 var3)) (= var13 var9)) (= var8 var10)) (= var1 var7)) (= var0 var5)))) (inv_main49 var12 var11 var4 var0 var0 0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int)) (or (not (and (inv_main43 var0 var6 var1 var12 var13 var8 var2) (and (= var11 nullAddr) (and (and (and (and (and (and (= var4 (write var0 var2 (O_node (node (data (getnode (read var0 var2))) var12 (prev (getnode (read var0 var2))))))) (= var3 var6)) (= var5 var1)) (= var11 var12)) (= var9 var13)) (= var7 var8)) (= var10 var2))))) (inv_main49 var4 var3 var5 var10 var10 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main15 var2 var7 var3 var5 var0 var4 var6 var1)) (inv_main15 var2 var7 var3 var5 var0 var4 var6 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 node)) (or (not (and (inv_main8 var3 var11 var4 var8 var2 var7) (and (and (= nullAddr var6) (and (and (and (and (and (and (= var5 (newHeap (alloc var3 (O_node var13)))) (= var1 var11)) (= var10 var4)) (= var12 var8)) (= var0 var2)) (= var9 var7)) (= var6 (newAddr (alloc var3 (O_node var13)))))) (<= 0 (+ var8 (- 1)))))) (inv_main15 var5 var1 var10 var12 var0 var9 var6 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main52 var3 var6 var4 var5 var1 var2 var0) (not (= var4 (data (getnode (read var3 var1))))))) (inv_main67 var3 var6 var4 var5 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main49 var2 var5 var3 var4 var0 var1) (and (not (= var1 (+ 1 var5))) (= var0 nullAddr)))) (inv_main67 var2 var5 var3 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int)) (or (not (inv_main37 var3 var8 var4 var6 var7 var1 var0 var5 var2)) (inv_main37 var3 var8 var4 var6 var7 var1 var0 var5 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 node)) (or (not (and (inv_main8 var2 var11 var3 var7 var1 var6) (and (and (= nullAddr var8) (and (and (and (and (and (and (and (= var4 (newHeap (alloc var2 (O_node var14)))) (= var5 var11)) (= var13 var3)) (= var12 var6)) (= var10 3)) (= var9 var3)) (= var0 var3)) (= var8 (newAddr (alloc var2 (O_node var14)))))) (not (<= 0 (+ var7 (- 1))))))) (inv_main37 var4 var5 var13 var12 var10 var9 var0 var8 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main12 var1 var6 var2 var4 var0 var3 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main18 var1 var6 var2 var4 var0 var3 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main19 var1 var6 var2 var4 var0 var3 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main22 var1 var6 var2 var4 var0 var3 var5) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main34 var2 var7 var3 var5 var6 var1 var0 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main40 var2 var7 var3 var5 var6 var1 var0 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main41 var2 var7 var3 var5 var6 var1 var0 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main43 var1 var6 var2 var4 var5 var0 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main46 var1 var6 var2 var4 var5 var0 var3) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (not (and (inv_main51 var2 var5 var3 var4 var0 var1) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main52 var3 var6 var4 var5 var1 var2 var0) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main64 var3 var6 var4 var5 var1 var2 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (not (inv_main67 var2 var5 var3 var4 var0 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll2n_remove_all.i.smt2 b/heap-theory-benchmarks/heap/dll2n_remove_all.i.smt2 new file mode 100644 index 00000000..298c5883 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll2n_remove_all.i.smt2 @@ -0,0 +1,54 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr) (prev Addr)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main31 (Heap Int Int Addr Int Int) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main31 var6 var7 var0 var5 var9 var10) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (= var11 var6) (= var1 var7)) (= var2 var0)) (= var4 var5)) (= var8 var9)) (= var3 var10)) (= var12 (next (getnode (read var6 var5)))))))) (inv_main36 var11 var1 var2 var4 var8 var3 var12)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main19 var4 var5 var11 var3 var0 var8 var7) (and (not (= var10 nullAddr)) (and (and (and (and (and (and (= var1 (write var4 var7 (O_node (node (data (getnode (read var4 var7))) (next (getnode (read var4 var7))) nullAddr)))) (= var2 var5)) (= var6 var11)) (= var9 var3)) (= var12 var0)) (= var10 var8)) (= var13 var7))))) (inv_main22 var1 var2 var6 var9 var12 var10 var13)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main28 var2 var3 var0 var1 var4) (and (not (= nullAddr var1)) (not (<= 0 var4))))) (inv_main42 var2 var3 var0 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int)) (or (not (and (inv_main22 var4 var5 var11 var3 var1 var10 var8) (and (and (and (and (and (and (= var12 (write var4 var10 (O_node (node (data (getnode (read var4 var10))) (next (getnode (read var4 var10))) var8)))) (= var0 var5)) (= var2 var11)) (= var13 var3)) (= var9 var1)) (= var6 var10)) (= var7 var8)))) (inv_main8 var12 var0 var2 (+ var13 (- 1)) var9 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap)) (or (not (and (inv_main19 var2 var3 var11 var1 var0 var8 var4) (and (= var10 nullAddr) (and (and (and (and (and (and (= var13 (write var2 var4 (O_node (node (data (getnode (read var2 var4))) (next (getnode (read var2 var4))) nullAddr)))) (= var12 var3)) (= var9 var11)) (= var7 var1)) (= var5 var0)) (= var10 var8)) (= var6 var4))))) (inv_main8 var13 var12 var9 (+ var7 (- 1)) var5 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int)) (or (not (inv_main4 var1 var2 var0)) (inv_main8 var1 var2 var0 var2 var0 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr)) (or (not (inv_main15 var4 var5 var0 var3 var1 var7 var6 var2)) (inv_main15 var4 var5 var0 var3 var1 var7 var6 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 node) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main8 var5 var6 var10 var4 var1 var8) (and (and (= nullAddr var7) (and (and (and (and (and (and (= var11 (newHeap (alloc var5 (O_node var3)))) (= var0 var6)) (= var12 var10)) (= var9 var4)) (= var13 var1)) (= var2 var8)) (= var7 (newAddr (alloc var5 (O_node var3)))))) (<= 0 (+ var4 (- 1)))))) (inv_main15 var11 var0 var12 var9 var13 var2 var7 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (inv_main18 var3 var4 var0 var2 var1 var6 var5)) (inv_main19 (write var3 var5 (O_node (node (data (getnode (read var3 var5))) var6 (prev (getnode (read var3 var5)))))) var4 var0 var2 var1 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Heap) (var17 Int) (var18 Int) (var19 Addr) (var20 Int)) (or (not (and (inv_main36 var2 var3 var12 var15 var7 var18 var11) (and (and (and (and (and (and (and (= var16 (write var9 var0 defObj)) (= var1 var4)) (= var14 var10)) (= var19 var0)) (= var20 var13)) (= var17 var6)) (= var5 var8)) (and (and (and (and (and (and (= var9 (write var2 var11 (O_node (node (data (getnode (read var2 var11))) (next (getnode (read var2 var11))) nullAddr)))) (= var4 var3)) (= var10 var12)) (= var0 var15)) (= var13 var7)) (= var6 var18)) (= var8 var11))))) (inv_main28 var16 var1 var14 var5 (+ var20 (- 1)))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Int) (var18 Int) (var19 Addr)) (or (not (and (inv_main31 var2 var3 var9 var12 var4 var18) (and (and (and (and (and (and (and (= var15 (write var0 var13 defObj)) (= var7 var5)) (= var6 var1)) (= var10 var13)) (= var8 var17)) (= var11 var16)) (= var19 var14)) (and (= var14 nullAddr) (and (and (and (and (and (and (= var0 var2) (= var5 var3)) (= var1 var9)) (= var13 var12)) (= var17 var4)) (= var16 var18)) (= var14 (next (getnode (read var2 var12))))))))) (inv_main28 var15 var7 var6 var19 (+ var8 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main8 var3 var4 var0 var2 var1 var5) (not (<= 0 (+ var2 (- 1)))))) (inv_main28 var3 var4 var0 var5 (+ var4 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main28 var2 var3 var0 var1 var4) (<= 0 var4))) (inv_main31 var2 var3 var0 var1 var4 3)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main8 var4 var5 var10 var3 var2 var7) (and (and (not (= nullAddr var9)) (and (and (and (and (and (and (= var8 (newHeap (alloc var4 (O_node var0)))) (= var12 var5)) (= var1 var10)) (= var13 var3)) (= var11 var2)) (= var6 var7)) (= var9 (newAddr (alloc var4 (O_node var0)))))) (<= 0 (+ var3 (- 1)))))) (inv_main12 var8 var12 var1 var13 var11 var6 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (inv_main12 var3 var4 var0 var2 var1 var6 var5)) (inv_main18 (write var3 var5 (O_node (node var1 (next (getnode (read var3 var5))) (prev (getnode (read var3 var5)))))) var4 var0 var2 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main12 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main18 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main19 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main22 var3 var4 var0 var2 var1 var6 var5) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main31 var2 var3 var0 var1 var4 var5) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main36 var3 var4 var1 var2 var5 var6 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (not (inv_main42 var2 var3 var0 var1 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll2n_remove_all_reverse.i.smt2 b/heap-theory-benchmarks/heap/dll2n_remove_all_reverse.i.smt2 new file mode 100644 index 00000000..83466e3e --- /dev/null +++ b/heap-theory-benchmarks/heap/dll2n_remove_all_reverse.i.smt2 @@ -0,0 +1,61 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr) (prev Addr)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main31 (Heap Int Int Addr Int Int) Bool) +(declare-fun inv_main38 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main39 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main47 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main22 var8 var9 var1 var5 var4 var12 var11) (and (and (and (and (and (and (= var13 (write var8 var12 (O_node (node (data (getnode (read var8 var12))) (next (getnode (read var8 var12))) var11)))) (= var6 var9)) (= var2 var1)) (= var7 var5)) (= var0 var4)) (= var3 var12)) (= var10 var11)))) (inv_main8 var13 var6 var2 (+ var7 (- 1)) var0 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr)) (or (not (and (inv_main19 var6 var7 var2 var4 var3 var11 var10) (and (= var13 nullAddr) (and (and (and (and (and (and (= var12 (write var6 var10 (O_node (node (data (getnode (read var6 var10))) (next (getnode (read var6 var10))) nullAddr)))) (= var8 var7)) (= var9 var2)) (= var0 var4)) (= var1 var3)) (= var13 var11)) (= var5 var10))))) (inv_main8 var12 var8 var9 (+ var0 (- 1)) var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int)) (or (not (inv_main4 var0 var1 var2)) (inv_main8 var0 var1 var2 var1 var2 nullAddr)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var0 var1 var2 var6 var5 var4 var3)) (inv_main18 (write var0 var3 (O_node (node var5 (next (getnode (read var0 var3))) (prev (getnode (read var0 var3)))))) var1 var2 var6 var5 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr)) (or (not (and (inv_main28 var0 var1 var2 var4 var3) (and (not (= nullAddr var4)) (not (<= 0 var3))))) (inv_main47 var0 var1 var2 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main38 var0 var2 var4 var7 var6 var1 var5 var3) (= (next (getnode (read var0 var3))) nullAddr))) (inv_main39 var0 var2 var4 var7 var6 var1 var5 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr)) (or (not (and (inv_main28 var0 var1 var2 var4 var3) (<= 0 var3))) (inv_main31 var0 var1 var2 var4 var3 3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Heap)) (or (not (and (inv_main41 var7 var10 var3 var6 var15 var9 var14 var1) (and (and (and (and (and (and (and (and (= var16 var7) (= var8 var10)) (= var4 var3)) (= var12 var6)) (= var13 var15)) (= var0 var9)) (= var2 var14)) (= var5 var1)) (= var11 (next (getnode (read var7 var1))))))) (inv_main38 var16 var8 var4 var12 var13 var0 var2 var11)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr)) (or (not (and (inv_main31 var1 var4 var6 var11 var10 var2) (and (and (and (and (and (and (and (= var9 var1) (= var8 var4)) (= var5 var6)) (= var12 var11)) (= var3 var10)) (= var7 var2)) (= var0 nullAddr)) (not (= nullAddr (next (getnode (read var1 var11)))))))) (inv_main38 var9 var8 var5 var12 var3 var7 var0 var12)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main38 var0 var2 var4 var7 var6 var1 var5 var3) (not (= (next (getnode (read var0 var3))) nullAddr)))) (inv_main41 var0 var2 var4 var7 var6 var1 var3 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Int) (var17 Addr) (var18 Int) (var19 Addr) (var20 Int) (var21 Int)) (or (not (and (inv_main39 var11 var14 var2 var6 var20 var12 var19 var1) (and (and (and (and (and (and (and (and (= var15 (write var11 var19 (O_node (node (data (getnode (read var11 var19))) nullAddr (prev (getnode (read var11 var19))))))) (= var21 var14)) (= var18 var2)) (= var17 var6)) (= var10 var20)) (= var9 var12)) (= var4 var19)) (= var13 var1)) (and (and (and (and (and (= var8 (write var15 var13 defObj)) (= var3 var21)) (= var0 var18)) (= var7 var17)) (= var16 var10)) (= var5 var9))))) (inv_main28 var8 var3 var0 var7 (+ var16 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr)) (or (not (and (inv_main31 var7 var10 var3 var5 var14 var9) (and (and (= nullAddr (next (getnode (read var7 var5)))) (and (and (and (and (and (= var6 (write var7 var5 defObj)) (= var2 var10)) (= var16 var3)) (= var17 var5)) (= var13 var14)) (= var0 var9))) (and (and (and (and (and (= var1 var6) (= var4 var2)) (= var15 var16)) (= var11 nullAddr)) (= var12 var13)) (= var8 var0))))) (inv_main28 var1 var4 var15 var11 (+ var12 (- 1)))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (or (not (and (inv_main8 var0 var1 var2 var5 var4 var3) (not (<= 0 (+ var5 (- 1)))))) (inv_main28 var0 var1 var2 var3 (+ var1 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main19 var4 var6 var0 var2 var1 var11 var8) (and (not (= var13 nullAddr)) (and (and (and (and (and (and (= var10 (write var4 var8 (O_node (node (data (getnode (read var4 var8))) (next (getnode (read var4 var8))) nullAddr)))) (= var7 var6)) (= var5 var0)) (= var12 var2)) (= var9 var1)) (= var13 var11)) (= var3 var8))))) (inv_main22 var10 var7 var5 var12 var9 var13 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main18 var0 var1 var2 var6 var5 var4 var3)) (inv_main19 (write var0 var3 (O_node (node (data (getnode (read var0 var3))) var4 (prev (getnode (read var0 var3)))))) var1 var2 var6 var5 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 node) (var11 Heap) (var12 Int) (var13 Addr)) (or (not (and (inv_main8 var11 var12 var2 var5 var4 var13) (and (and (not (= nullAddr var0)) (and (and (and (and (and (and (= var9 (newHeap (alloc var11 (O_node var10)))) (= var8 var12)) (= var6 var2)) (= var7 var5)) (= var1 var4)) (= var3 var13)) (= var0 (newAddr (alloc var11 (O_node var10)))))) (<= 0 (+ var5 (- 1)))))) (inv_main12 var9 var8 var6 var7 var1 var3 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (or (not (inv_main15 var0 var1 var3 var7 var6 var5 var4 var2)) (inv_main15 var0 var1 var3 var7 var6 var5 var4 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 node) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Int)) (or (not (and (inv_main8 var6 var7 var0 var2 var1 var11) (and (and (= nullAddr var9) (and (and (and (and (and (and (= var12 (newHeap (alloc var6 (O_node var3)))) (= var4 var7)) (= var5 var0)) (= var10 var2)) (= var13 var1)) (= var8 var11)) (= var9 (newAddr (alloc var6 (O_node var3)))))) (<= 0 (+ var2 (- 1)))))) (inv_main15 var12 var4 var5 var10 var13 var8 var9 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var0 var1 var2 var6 var5 var4 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var0 var1 var2 var6 var5 var4 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main19 var0 var1 var2 var6 var5 var4 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main22 var0 var1 var2 var6 var5 var4 var3) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr)) (not (and (inv_main31 var0 var2 var3 var5 var4 var1) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main38 var0 var2 var4 var7 var6 var1 var5 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main41 var0 var2 var4 var7 var6 var1 var5 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main39 var0 var2 var4 var7 var6 var1 var5 var3) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr)) (not (inv_main47 var0 var1 var2 var4 var3)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll2n_update_all_reverse.i.smt2 b/heap-theory-benchmarks/heap/dll2n_update_all_reverse.i.smt2 new file mode 100644 index 00000000..086ea755 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll2n_update_all_reverse.i.smt2 @@ -0,0 +1,70 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr) (prev Addr)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main35 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main40 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main57 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main60 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main28 var1 var0 var4 var3 var2) (not (<= 0 var2)))) (inv_main40 var1 var0 var4 var3 (+ var0 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main49 var3 var8 var13 var6 var11 var1 var12 var14) (and (= var10 var0) (and (and (and (and (and (and (= var2 var3) (= var5 var8)) (= var7 var13)) (= var9 var6)) (= var4 var11)) (= var10 var1)) (= var0 (data (getnode (read var3 var12)))))))) (inv_main40 var2 var5 var7 var9 (+ var4 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var1 var0 var5 var6 var2 var4 var3)) (inv_main18 (write var1 var3 (O_node (node var2 (next (getnode (read var1 var3))) (prev (getnode (read var1 var3)))))) var0 var5 var6 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int)) (or (not (and (inv_main8 var3 var9 var13 var6 var4 var5) (and (and (not (= nullAddr var8)) (and (and (and (and (and (and (= var11 (newHeap (alloc var3 (O_node var1)))) (= var2 var9)) (= var7 var13)) (= var10 var6)) (= var0 var4)) (= var12 var5)) (= var8 (newAddr (alloc var3 (O_node var1)))))) (<= 0 (+ var6 (- 1)))))) (inv_main12 var11 var2 var7 var10 var0 var12 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Heap) (var19 Heap)) (or (not (and (inv_main57 var3 var13 var17 var7 var15 var4) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (= var18 var3) (= var10 var13)) (= var2 var17)) (= var16 var7)) (= var14 var15)) (= var11 var4)) (= var0 (next (getnode (read var3 var4))))) (and (and (and (and (and (and (= var19 (write var18 var11 defObj)) (= var9 var10)) (= var5 var2)) (= var1 var16)) (= var8 var14)) (= var6 var11)) (= var12 var0)))))) (inv_main57 var19 var9 var5 var1 var8 var12)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main40 var1 var0 var4 var3 var2) (and (not (= var3 nullAddr)) (not (<= 0 (* (- 1) var2)))))) (inv_main57 var1 var0 var4 var3 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main18 var1 var0 var5 var6 var2 var4 var3)) (inv_main19 (write var1 var3 (O_node (node (data (getnode (read var1 var3))) var4 (prev (getnode (read var1 var3)))))) var0 var5 var6 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var1 var0 var5 var7 var2 var4 var3 var6)) (inv_main15 var1 var0 var5 var7 var2 var4 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 node) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main8 var3 var11 var13 var7 var4 var5) (and (and (= nullAddr var8) (and (and (and (and (and (and (= var0 (newHeap (alloc var3 (O_node var10)))) (= var2 var11)) (= var9 var13)) (= var12 var7)) (= var6 var4)) (= var1 var5)) (= var8 (newAddr (alloc var3 (O_node var10)))))) (<= 0 (+ var7 (- 1)))))) (inv_main15 var0 var2 var9 var12 var6 var1 var8 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main50 var3 var9 var15 var6 var12 var1 var14 var16) (and (not (<= 0 (+ (+ var4 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (= var8 var3) (= var10 var9)) (= var0 var15)) (= var2 var6)) (= var13 var12)) (= var7 var1)) (= var11 var14)) (= var4 var16)) (= var5 (next (getnode (read var3 var14)))))))) (inv_main49 var8 var10 var0 var2 var13 var7 var5 (+ var4 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main40 var1 var0 var4 var3 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 (* (- 1) var2))))) (inv_main49 var1 var0 var4 var3 var2 (+ var2 var0) var3 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main36 var0 var14 var18 var3 var16 var13 var5 var1 var11) (and (not (<= 0 (+ (+ var2 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (and (= var7 var0) (= var10 var14)) (= var9 var18)) (= var17 var3)) (= var15 var16)) (= var12 var13)) (= var8 var5)) (= var4 var1)) (= var2 var11)) (= var6 (next (getnode (read var0 var5)))))))) (inv_main35 var7 var10 var9 var17 var15 var12 var6 var4 (+ var2 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main28 var1 var0 var4 var3 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 var2)))) (inv_main35 var1 var0 var4 var3 var2 (+ var2 var0) var3 (+ var2 var0) var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var1 var11 var13 var7 var2 var4 var3) (and (not (= var8 nullAddr)) (and (and (and (and (and (and (= var6 (write var1 var3 (O_node (node (data (getnode (read var1 var3))) (next (getnode (read var1 var3))) nullAddr)))) (= var10 var11)) (= var5 var13)) (= var9 var7)) (= var12 var2)) (= var8 var4)) (= var0 var3))))) (inv_main22 var6 var10 var5 var9 var12 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main22 var2 var9 var13 var7 var3 var6 var5) (and (and (and (and (and (and (= var1 (write var2 var6 (O_node (node (data (getnode (read var2 var6))) (next (getnode (read var2 var6))) var5)))) (= var4 var9)) (= var12 var13)) (= var10 var7)) (= var11 var3)) (= var0 var6)) (= var8 var5)))) (inv_main8 var1 var4 var12 (+ var10 (- 1)) var11 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var2 var9 var12 var8 var3 var6 var5) (and (= var4 nullAddr) (and (and (and (and (and (and (= var0 (write var2 var5 (O_node (node (data (getnode (read var2 var5))) (next (getnode (read var2 var5))) nullAddr)))) (= var13 var9)) (= var10 var12)) (= var11 var8)) (= var7 var3)) (= var4 var6)) (= var1 var5))))) (inv_main8 var0 var13 var10 (+ var11 (- 1)) var7 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int)) (or (not (inv_main4 var1 var0 var2)) (inv_main8 var1 var0 var2 var0 var2 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int)) (or (not (and (inv_main49 var2 var9 var12 var4 var10 var1 var11 var14) (and (not (= var7 var8)) (and (and (and (and (and (and (= var13 var2) (= var0 var9)) (= var3 var12)) (= var6 var4)) (= var5 var10)) (= var7 var1)) (= var8 (data (getnode (read var2 var11)))))))) (inv_main60 var13 var0 var3 var6 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Int) (var16 Int) (var17 Addr)) (or (not (and (inv_main35 var0 var8 var15 var2 var13 var7 var4 var1 var6) (and (and (and (and (and (and (and (and (= var14 (write var0 var4 (O_node (node var1 (next (getnode (read var0 var4))) (prev (getnode (read var0 var4))))))) (= var11 var8)) (= var9 var15)) (= var5 var2)) (= var16 var13)) (= var10 var7)) (= var17 var4)) (= var3 var1)) (= var12 var6)))) (inv_main28 var14 var11 var9 var5 (+ var16 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (or (not (and (inv_main8 var1 var0 var4 var5 var2 var3) (not (<= 0 (+ var5 (- 1)))))) (inv_main28 var1 var0 var4 var3 (+ var0 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main50 var3 var9 var15 var6 var12 var1 var14 var16) (and (<= 0 (+ (+ var4 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (= var8 var3) (= var10 var9)) (= var0 var15)) (= var2 var6)) (= var13 var12)) (= var7 var1)) (= var11 var14)) (= var4 var16)) (= var5 (next (getnode (read var3 var14)))))))) (inv_main50 var8 var10 var0 var2 var13 var7 var5 (+ var4 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main40 var1 var0 var4 var3 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 (* (- 1) var2))))) (inv_main50 var1 var0 var4 var3 var2 (+ var2 var0) var3 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main36 var0 var14 var18 var3 var16 var13 var5 var1 var11) (and (<= 0 (+ (+ var2 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (and (= var7 var0) (= var10 var14)) (= var9 var18)) (= var17 var3)) (= var15 var16)) (= var12 var13)) (= var8 var5)) (= var4 var1)) (= var2 var11)) (= var6 (next (getnode (read var0 var5)))))))) (inv_main36 var7 var10 var9 var17 var15 var12 var6 var4 (+ var2 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main28 var1 var0 var4 var3 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 var2)))) (inv_main36 var1 var0 var4 var3 var2 (+ var2 var0) var3 (+ var2 var0) var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var1 var0 var5 var6 var2 var4 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var1 var0 var5 var6 var2 var4 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main19 var1 var0 var5 var6 var2 var4 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main22 var1 var0 var5 var6 var2 var4 var3) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main36 var3 var2 var7 var6 var5 var1 var8 var4 var0) (not (is-O_node (read var3 var8))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main35 var3 var2 var7 var6 var5 var1 var8 var4 var0) (not (is-O_node (read var3 var8))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main50 var2 var1 var6 var5 var3 var0 var4 var7) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main49 var2 var1 var6 var5 var3 var0 var4 var7) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (not (and (inv_main57 var1 var0 var5 var4 var3 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (not (inv_main60 var1 var0 var4 var3 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll_circular_traversal-1.i.smt2 b/heap-theory-benchmarks/heap/dll_circular_traversal-1.i.smt2 new file mode 100644 index 00000000..dbdf05ba --- /dev/null +++ b/heap-theory-benchmarks/heap/dll_circular_traversal-1.i.smt2 @@ -0,0 +1,75 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr) (prev Addr)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Addr Int) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main16 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main9 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 5 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main29 var4 var5 var13 var0 var12 var10 var8 var7) (and (and (and (and (and (and (and (= var1 (write var4 var8 (O_node (node (data (getnode (read var4 var8))) (next (getnode (read var4 var8))) var7)))) (= var14 var5)) (= var15 var13)) (= var11 var0)) (= var2 var12)) (= var3 var10)) (= var9 var8)) (= var6 var7)))) (inv_main18 var1 var14 var15 (+ var11 (- 1)) var2 var3 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr)) (or (not (and (inv_main16 var5 var6 var3 var1 var2 var11) (and (and (and (and (and (= var10 (write var5 var11 (O_node (node var2 (next (getnode (read var5 var11))) (prev (getnode (read var5 var11))))))) (= var0 var6)) (= var8 var3)) (= var9 var1)) (= var7 var2)) (= var4 var11)))) (inv_main18 var10 var0 var8 var9 var7 var4 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap)) (or (not (and (inv_main42 var6 var7 var2 var5 var1 var0) (and (not (= var4 var10)) (and (and (and (and (and (and (= var12 var6) (= var9 var7)) (= var8 var2)) (= var10 var5)) (= var11 var1)) (= var3 var0)) (= var4 (next (getnode (read var6 var1)))))))) (inv_main36 var12 var9 var8 var10 var4 (+ var3 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main32 var3 var4 var9 var0 var8 var7 var5) (and (and (and (and (and (and (= var6 (write var3 var5 (O_node (node (data (getnode (read var3 var5))) (next (getnode (read var3 var5))) var7)))) (= var12 var4)) (= var10 var9)) (= var1 var0)) (= var2 var8)) (= var13 var7)) (= var11 var5)))) (inv_main36 var6 var12 var10 var11 var11 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (inv_main9 var3 var4 var2 var0 var1 var5)) (inv_main15 (write var3 var5 (O_node (node (data (getnode (read var3 var5))) var5 (prev (getnode (read var3 var5)))))) var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (inv_main39 var4 var5 var2 var3 var1 var0)) (inv_main42 (write var4 var1 (O_node (node var0 (next (getnode (read var4 var1))) (prev (getnode (read var4 var1)))))) var5 var2 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main22 var3 var4 var2 var0 var1 var7 var6 var5)) (inv_main28 (write var3 var5 (O_node (node (data (getnode (read var3 var5))) var6 (prev (getnode (read var3 var5)))))) var4 var2 var0 var1 var7 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (inv_main15 var3 var4 var2 var0 var1 var5)) (inv_main16 (write var3 var5 (O_node (node (data (getnode (read var3 var5))) (next (getnode (read var3 var5))) var5))) var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (and (inv_main50 var4 var5 var2 var3 var1 var0) (= var0 (data (getnode (read var4 var1)))))) (inv_main51 var4 var5 var2 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (or (not (inv_main12 var3 var4 var2 var0 var1 var6 var5)) (inv_main12 var3 var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 node)) (or (not (and (inv_main4 var4 var5 var2) (and (= nullAddr var3) (and (and (and (and (and (= var6 (newHeap (alloc var4 (O_node var9)))) (= var0 var5)) (= var1 var2)) (= var7 var5)) (= var8 var2)) (= var3 (newAddr (alloc var4 (O_node var9)))))))) (inv_main12 var6 var0 var1 var7 var8 var3 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main28 var3 var4 var2 var0 var1 var7 var6 var5)) (inv_main29 (write var3 var5 (O_node (node var1 (next (getnode (read var3 var5))) (prev (getnode (read var3 var5)))))) var4 var2 var0 var1 var7 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (inv_main19 var3 var4 var2 var0 var1 var6 var5)) (inv_main32 (write var3 var6 (O_node (node (data (getnode (read var3 var6))) var5 (prev (getnode (read var3 var6)))))) var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (and (inv_main36 var4 var5 var2 var3 var1 var0) (= var2 (data (getnode (read var4 var1)))))) (inv_main39 var4 var5 var2 var3 var1 var0)))) +(assert (forall ((var0 Int) (var1 node) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main18 var2 var3 var8 var0 var7 var5 var4) (and (and (not (= nullAddr var6)) (and (and (and (and (and (and (and (= var10 (newHeap (alloc var2 (O_node var1)))) (= var14 var3)) (= var13 var8)) (= var9 var0)) (= var15 var7)) (= var12 var5)) (= var11 var4)) (= var6 (newAddr (alloc var2 (O_node var1)))))) (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main22 var10 var14 var13 var9 var15 var12 var11 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap)) (or (not (and (inv_main42 var6 var7 var2 var5 var1 var0) (and (= var4 var10) (and (and (and (and (and (and (= var12 var6) (= var9 var7)) (= var8 var2)) (= var10 var5)) (= var11 var1)) (= var3 var0)) (= var4 (next (getnode (read var6 var1)))))))) (inv_main37 var12 var9 var8 var10 var4 (+ var3 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (and (inv_main18 var3 var4 var2 var0 var1 var6 var5) (not (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main19 var3 var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (inv_main25 var3 var4 var2 var0 var1 var8 var6 var5 var7)) (inv_main25 var3 var4 var2 var0 var1 var8 var6 var5 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 node) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main18 var1 var2 var11 var0 var10 var7 var4) (and (and (= nullAddr var12) (and (and (and (and (and (and (and (= var8 (newHeap (alloc var1 (O_node var9)))) (= var5 var2)) (= var13 var11)) (= var15 var0)) (= var3 var10)) (= var6 var7)) (= var14 var4)) (= var12 (newAddr (alloc var1 (O_node var9)))))) (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main25 var8 var5 var13 var15 var3 var6 var14 var12 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 node) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main4 var4 var5 var2) (and (not (= nullAddr var7)) (and (and (and (and (and (= var3 (newHeap (alloc var4 (O_node var6)))) (= var1 var5)) (= var8 var2)) (= var0 var5)) (= var9 var2)) (= var7 (newAddr (alloc var4 (O_node var6)))))))) (inv_main9 var3 var1 var8 var0 var9 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Heap) (var18 Heap)) (or (not (and (inv_main37 var3 var4 var12 var2 var10 var9) (and (and (and (and (and (and (and (= var18 var3) (= var15 var4)) (= var7 var12)) (= var5 var2)) (= var13 var10)) (= var1 var9)) (= var8 (prev (getnode (read var3 var10))))) (and (and (and (and (and (= var17 var18) (= var11 var15)) (= var6 var7)) (= var0 nullAddr)) (= var16 var8)) (= var14 var1))))) (inv_main50 var17 var11 var6 var0 var16 (+ var14 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Int) (var19 Int)) (or (not (and (inv_main51 var3 var4 var12 var2 var11 var10) (and (not (= var1 nullAddr)) (and (and (and (and (and (and (and (= var5 var3) (= var18 var4)) (= var17 var12)) (= var7 var2)) (= var8 var11)) (= var14 var10)) (= var6 (prev (getnode (read var3 var11))))) (and (and (and (and (and (and (= var13 (write var5 var8 defObj)) (= var15 var18)) (= var9 var17)) (= var0 var7)) (= var16 var8)) (= var19 var14)) (= var1 var6)))))) (inv_main50 var13 var15 var9 var0 var1 (+ var19 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main9 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main15 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main16 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main22 var3 var4 var2 var0 var1 var7 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main28 var3 var4 var2 var0 var1 var7 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main29 var3 var4 var2 var0 var1 var7 var6 var5) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main19 var3 var4 var2 var0 var1 var6 var5) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main32 var3 var4 var2 var0 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main36 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main39 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main42 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main37 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main50 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main51 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var4 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll_circular_traversal-2.i.smt2 b/heap-theory-benchmarks/heap/dll_circular_traversal-2.i.smt2 new file mode 100644 index 00000000..fde3c625 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll_circular_traversal-2.i.smt2 @@ -0,0 +1,82 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr) (prev Addr)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Addr Int) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main16 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main39 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main45 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main57 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main9 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 5 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr)) (or (not (and (inv_main18 var5 var3 var4 var2 var0 var1 var6) (not (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main19 var5 var3 var4 var2 var0 var1 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Heap)) (or (not (and (inv_main42 var12 var1 var2 var4 var0 var10) (and (not (= var3 var8)) (and (and (and (and (and (and (= var11 var12) (= var7 var1)) (= var6 var2)) (= var8 var4)) (= var5 var0)) (= var9 var10)) (= var3 (next (getnode (read var12 var10)))))))) (inv_main36 var11 var7 var6 var8 (+ var5 1) var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap)) (or (not (and (inv_main32 var13 var8 var3 var7 var0 var2 var6) (and (and (and (and (and (and (= var5 (write var13 var6 (O_node (node (data (getnode (read var13 var6))) (next (getnode (read var13 var6))) var2)))) (= var11 var8)) (= var9 var3)) (= var1 var7)) (= var4 var0)) (= var12 var2)) (= var10 var6)))) (inv_main36 var5 var11 var9 var10 1 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (or (not (inv_main15 var5 var3 var4 var2 var0 var1)) (inv_main16 (write var5 var1 (O_node (node (data (getnode (read var5 var1))) (next (getnode (read var5 var1))) var1))) var3 var4 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main36 var5 var1 var2 var3 var0 var4) (not (= var2 (data (getnode (read var5 var4))))))) (inv_main57 var5 var1 var2 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main51 var5 var1 var2 var3 var0 var4) (not (= var0 (data (getnode (read var5 var4))))))) (inv_main57 var5 var1 var2 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Heap)) (or (not (and (inv_main42 var12 var1 var2 var4 var0 var10) (and (= var3 var8) (and (and (and (and (and (and (= var11 var12) (= var7 var1)) (= var6 var2)) (= var8 var4)) (= var5 var0)) (= var9 var10)) (= var3 (next (getnode (read var12 var10)))))))) (inv_main37 var11 var7 var6 var8 (+ var5 1) var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main36 var5 var1 var2 var3 var0 var4) (= var2 (data (getnode (read var5 var4)))))) (inv_main39 var5 var1 var2 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (inv_main28 var6 var3 var4 var2 var0 var1 var7 var5)) (inv_main29 (write var6 var5 (O_node (node var0 (next (getnode (read var6 var5))) (prev (getnode (read var6 var5)))))) var3 var4 var2 var0 var1 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main51 var5 var1 var2 var3 var0 var4) (= var0 (data (getnode (read var5 var4)))))) (inv_main52 var5 var1 var2 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (inv_main25 var7 var3 var5 var2 var0 var1 var8 var6 var4)) (inv_main25 var7 var3 var5 var2 var0 var1 var8 var6 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 node) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap)) (or (not (and (inv_main18 var15 var11 var2 var10 var0 var1 var5) (and (and (= nullAddr var9) (and (and (and (and (and (and (and (= var7 (newHeap (alloc var15 (O_node var8)))) (= var4 var11)) (= var12 var2)) (= var14 var10)) (= var3 var0)) (= var6 var1)) (= var13 var5)) (= var9 (newAddr (alloc var15 (O_node var8)))))) (<= 0 (+ (+ var10 (- 1)) (- 1)))))) (inv_main25 var7 var4 var12 var14 var3 var6 var13 var9 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr)) (or (not (inv_main19 var5 var3 var4 var2 var0 var1 var6)) (inv_main32 (write var5 var1 (O_node (node (data (getnode (read var5 var1))) var6 (prev (getnode (read var5 var1)))))) var3 var4 var2 var0 var1 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (or (not (inv_main12 var6 var3 var4 var2 var0 var1 var5)) (inv_main12 var6 var3 var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 node) (var8 Int) (var9 Heap)) (or (not (and (inv_main4 var9 var1 var3) (and (= nullAddr var6) (and (and (and (and (and (= var0 (newHeap (alloc var9 (O_node var7)))) (= var2 var1)) (= var5 var3)) (= var4 var1)) (= var8 var3)) (= var6 (newAddr (alloc var9 (O_node var7)))))))) (inv_main12 var0 var2 var5 var4 var8 var6 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap)) (or (not (and (inv_main29 var15 var11 var4 var10 var0 var1 var7 var13) (and (and (and (and (and (and (and (= var2 (write var15 var7 (O_node (node (data (getnode (read var15 var7))) (next (getnode (read var15 var7))) var13)))) (= var12 var11)) (= var14 var4)) (= var9 var10)) (= var3 var0)) (= var5 var1)) (= var8 var7)) (= var6 var13)))) (inv_main18 var2 var12 var14 (+ var9 (- 1)) var3 var5 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Heap)) (or (not (and (inv_main16 var11 var5 var6 var4 var1 var3) (and (and (and (and (and (= var10 (write var11 var3 (O_node (node var1 (next (getnode (read var11 var3))) (prev (getnode (read var11 var3))))))) (= var0 var5)) (= var8 var6)) (= var9 var4)) (= var7 var1)) (= var2 var3)))) (inv_main18 var10 var0 var8 var9 var7 var2 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Heap)) (or (not (and (inv_main37 var10 var2 var4 var6 var1 var9) (and (and (and (and (and (and (= var12 var10) (= var8 var2)) (= var11 var4)) (= var7 var6)) (= var0 var1)) (= var3 var9)) (= var5 (prev (getnode (read var10 var9))))))) (inv_main45 var12 var8 var11 var7 var0 var5)))) +(assert (forall ((var0 Int) (var1 node) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main18 var13 var7 var3 var6 var0 var2 var4) (and (and (not (= nullAddr var5)) (and (and (and (and (and (and (and (= var9 (newHeap (alloc var13 (O_node var1)))) (= var14 var7)) (= var12 var3)) (= var8 var6)) (= var15 var0)) (= var11 var2)) (= var10 var4)) (= var5 (newAddr (alloc var13 (O_node var1)))))) (<= 0 (+ (+ var6 (- 1)) (- 1)))))) (inv_main22 var9 var14 var12 var8 var15 var11 var10 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (or (not (inv_main9 var5 var3 var4 var2 var0 var1)) (inv_main15 (write var5 var1 (O_node (node (data (getnode (read var5 var1))) var1 (prev (getnode (read var5 var1)))))) var3 var4 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (inv_main22 var6 var3 var4 var2 var0 var1 var7 var5)) (inv_main28 (write var6 var5 (O_node (node (data (getnode (read var6 var5))) var7 (prev (getnode (read var6 var5)))))) var3 var4 var2 var0 var1 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (inv_main39 var5 var1 var2 var3 var0 var4)) (inv_main42 (write var5 var4 (O_node (node var0 (next (getnode (read var5 var4))) (prev (getnode (read var5 var4)))))) var1 var2 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 node) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Heap)) (or (not (and (inv_main4 var8 var4 var6) (and (not (= nullAddr var3)) (and (and (and (and (and (= var9 (newHeap (alloc var8 (O_node var2)))) (= var0 var4)) (= var7 var6)) (= var5 var4)) (= var1 var6)) (= var3 (newAddr (alloc var8 (O_node var2)))))))) (inv_main9 var9 var0 var7 var5 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Heap) (var17 Int)) (or (not (and (inv_main45 var16 var10 var3 var11 var8 var13) (and (and (and (and (and (and (= var15 (write var16 var11 (O_node (node (data (getnode (read var16 var11))) (next (getnode (read var16 var11))) nullAddr)))) (= var9 var10)) (= var7 var3)) (= var12 var11)) (= var2 var8)) (= var14 var13)) (and (and (and (and (and (= var0 var15) (= var17 var9)) (= var6 var7)) (= var4 nullAddr)) (= var1 var2)) (= var5 var14))))) (inv_main51 var0 var17 var6 var4 (+ var1 (- 1)) var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int) (var18 Int) (var19 Addr)) (or (not (and (inv_main52 var16 var9 var2 var12 var8 var15) (and (not (= var19 nullAddr)) (and (and (and (and (and (and (and (= var3 var16) (= var18 var9)) (= var17 var2)) (= var5 var12)) (= var11 var8)) (= var6 var15)) (= var4 (prev (getnode (read var16 var15))))) (and (and (and (and (and (and (= var10 (write var3 var6 defObj)) (= var13 var18)) (= var7 var17)) (= var0 var5)) (= var1 var11)) (= var14 var6)) (= var19 var4)))))) (inv_main51 var10 var13 var7 var0 (+ var1 (- 1)) var19)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main9 var5 var3 var4 var2 var0 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main15 var5 var3 var4 var2 var0 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main16 var5 var3 var4 var2 var0 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (not (and (inv_main22 var6 var3 var4 var2 var0 var1 var7 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (not (and (inv_main28 var6 var3 var4 var2 var0 var1 var7 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (not (and (inv_main29 var6 var3 var4 var2 var0 var1 var7 var5) (not (is-O_node (read var6 var7))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr)) (not (and (inv_main19 var5 var3 var4 var2 var0 var1 var6) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr)) (not (and (inv_main32 var5 var3 var4 var2 var0 var1 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main36 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main39 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main42 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main37 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main45 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main51 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main52 var5 var1 var2 var3 var0 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (inv_main57 var5 var1 var2 var3 var0 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll_nondet_free_order-2.i.smt2 b/heap-theory-benchmarks/heap/dll_nondet_free_order-2.i.smt2 new file mode 100644 index 00000000..e69a0c82 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll_nondet_free_order-2.i.smt2 @@ -0,0 +1,63 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (prev Addr)) + ) +)) +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main11 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main14 (Heap Int Int Addr) Bool) +(declare-fun inv_main16 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main26 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr) Bool) +(declare-fun inv_main36 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 node) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int)) (or (not (and (inv_main16 var4 var8 var3 var1 var2) (and (and (not (= nullAddr var7)) (and (and (and (and (and (= var5 (newHeap (alloc var4 (O_node var6)))) (= var0 var8)) (= var11 var3)) (= var9 var1)) (= var10 var2)) (= var7 (newAddr (alloc var4 (O_node var6)))))) (<= 0 (+ (+ var3 (- 1)) (- 1)))))) (inv_main20 var5 var0 var11 var9 var10 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (inv_main33 var0 var2 var1 var3)) (inv_main36 var0 var2 var1 var3 (prev (getnode (read var0 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int)) (or (not (inv_main17 var3 var4 var2 var0 var1)) (inv_main29 (write var3 var0 (O_node (node var1 (prev (getnode (read var3 var0)))))) var4 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int) (var18 Heap) (var19 Addr) (var20 Heap) (var21 Int) (var22 Heap) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Int) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Int) (var31 Addr)) (or (not (and (inv_main36 var16 var3 var19 var4 var13) (and (and (and (and (not (= var5 0)) (and (and (not (= var17 0)) (and (and (and (and (and (= var2 var16) (= var0 var3)) (= var9 var19)) (= var14 var4)) (= var23 var13)) (= var1 (next (getnode (read var16 var4)))))) (and (and (and (and (and (= var22 (write var2 var14 defObj)) (= var26 var0)) (= var25 var9)) (= var12 var14)) (= var10 var23)) (= var27 var1)))) (and (and (and (and (and (= var20 (write var22 var27 defObj)) (= var21 var26)) (= var31 var25)) (= var15 var12)) (= var24 var10)) (= var6 var27))) (and (and (and (= var18 (write var20 var24 defObj)) (= var11 var21)) (= var8 var31)) (= var28 var15))) (and (and (= var7 var18) (= var30 var11)) (= var29 nullAddr))))) (inv_main0 var7 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Heap) (var26 Addr) (var27 Addr) (var28 Int) (var29 Addr) (var30 Addr) (var31 Addr)) (or (not (and (inv_main36 var19 var7 var22 var9 var16) (and (and (and (and (= var10 0) (and (and (not (= var21 0)) (and (and (and (and (and (= var5 var19) (= var2 var7)) (= var13 var22)) (= var17 var9)) (= var26 var16)) (= var3 (next (getnode (read var19 var9)))))) (and (and (and (and (and (= var25 (write var5 var17 defObj)) (= var28 var2)) (= var27 var13)) (= var15 var17)) (= var14 var26)) (= var29 var3)))) (and (and (and (and (and (= var4 (write var25 var14 defObj)) (= var20 var28)) (= var24 var27)) (= var18 var15)) (= var8 var14)) (= var23 var29))) (and (and (and (= var12 (write var4 var23 defObj)) (= var0 var20)) (= var30 var24)) (= var11 var18))) (and (and (= var6 var12) (= var1 var0)) (= var31 nullAddr))))) (inv_main0 var6 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Heap) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Int) (var21 Heap) (var22 Heap) (var23 Heap) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Int) (var30 Addr) (var31 Addr) (var32 Int)) (or (not (and (inv_main36 var23 var8 var24 var9 var18) (and (and (and (and (not (= var20 0)) (and (and (not (= var2 0)) (and (= var7 0) (and (and (and (and (and (= var6 var23) (= var3 var8)) (= var13 var24)) (= var19 var9)) (= var25 var18)) (= var4 (next (getnode (read var23 var9))))))) (and (and (and (and (and (= var17 (write var6 var4 defObj)) (= var14 var3)) (= var28 var13)) (= var11 var19)) (= var31 var25)) (= var30 var4)))) (and (and (and (and (and (= var15 (write var17 var11 defObj)) (= var29 var14)) (= var0 var28)) (= var5 var11)) (= var27 var31)) (= var16 var30))) (and (and (and (= var21 (write var15 var27 defObj)) (= var1 var29)) (= var26 var0)) (= var10 var5))) (and (and (= var22 var21) (= var32 var1)) (= var12 nullAddr))))) (inv_main0 var22 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int) (var21 Heap) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Heap) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Addr) (var31 Addr) (var32 Addr)) (or (not (and (inv_main36 var25 var11 var27 var13 var22) (and (and (and (and (= var14 0) (and (and (not (= var2 0)) (and (= var10 0) (and (and (and (and (and (= var6 var25) (= var3 var11)) (= var19 var27)) (= var23 var13)) (= var28 var22)) (= var4 (next (getnode (read var25 var13))))))) (and (and (and (and (and (= var21 (write var6 var4 defObj)) (= var20 var3)) (= var29 var19)) (= var17 var23)) (= var32 var28)) (= var31 var4)))) (and (and (and (and (and (= var12 (write var21 var32 defObj)) (= var9 var20)) (= var30 var29)) (= var8 var17)) (= var26 var32)) (= var18 var31))) (and (and (and (= var16 (write var12 var8 defObj)) (= var0 var9)) (= var24 var30)) (= var7 var8))) (and (and (= var5 var16) (= var15 var0)) (= var1 nullAddr))))) (inv_main0 var5 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Heap) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Heap) (var26 Int)) (or (not (and (inv_main36 var3 var10 var9 var11 var23) (and (and (and (= var15 0) (and (and (= var18 0) (and (= var8 0) (and (and (and (and (and (= var4 var3) (= var1 var10)) (= var17 var9)) (= var24 var11)) (= var14 var23)) (= var2 (next (getnode (read var3 var11))))))) (and (and (and (and (and (= var7 (write var4 var14 defObj)) (= var26 var1)) (= var22 var17)) (= var13 var24)) (= var6 var14)) (= var12 var2)))) (and (and (and (= var19 (write var7 var13 defObj)) (= var16 var26)) (= var21 var22)) (= var20 var13))) (and (and (= var25 var19) (= var0 var16)) (= var5 nullAddr))))) (inv_main0 var25 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int) (var21 Int) (var22 Heap) (var23 Int) (var24 Addr) (var25 Heap) (var26 Int) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Addr) (var31 Heap) (var32 Addr)) (or (not (and (inv_main36 var22 var6 var24 var8 var17) (and (and (and (and (not (= var23 0)) (and (and (= var15 0) (and (= var4 0) (and (and (and (and (and (= var2 var22) (= var0 var6)) (= var14 var24)) (= var18 var8)) (= var29 var17)) (= var1 (next (getnode (read var22 var8))))))) (and (and (and (and (and (= var5 (write var2 var29 defObj)) (= var21 var0)) (= var16 var14)) (= var11 var18)) (= var3 var29)) (= var12 var1)))) (and (and (and (and (and (= var25 (write var5 var11 defObj)) (= var20 var21)) (= var19 var16)) (= var27 var11)) (= var30 var3)) (= var28 var12))) (and (and (and (= var31 (write var25 var28 defObj)) (= var26 var20)) (= var7 var19)) (= var10 var27))) (and (and (= var9 var31) (= var13 var26)) (= var32 nullAddr))))) (inv_main0 var9 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (or (not (inv_main23 var3 var4 var2 var0 var1 var6 var5)) (inv_main23 var3 var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr) (var11 node)) (or (not (and (inv_main16 var7 var9 var5 var1 var2) (and (and (= nullAddr var4) (and (and (and (and (and (= var6 (newHeap (alloc var7 (O_node var11)))) (= var8 var9)) (= var0 var5)) (= var10 var1)) (= var3 var2)) (= var4 (newAddr (alloc var7 (O_node var11)))))) (<= 0 (+ (+ var5 (- 1)) (- 1)))))) (inv_main23 var6 var8 var0 var10 var3 var4 1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 node) (var4 Int) (var5 Int) (var6 Addr)) (or (not (and (inv_main3 var1 var5) (and (not (= nullAddr var6)) (and (and (and (= var0 (newHeap (alloc var1 (O_node var3)))) (= var4 var5)) (= var2 var5)) (= var6 (newAddr (alloc var1 (O_node var3)))))))) (inv_main8 var0 var4 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (inv_main20 var3 var4 var2 var0 var1 var5)) (inv_main26 (write var3 var5 (O_node (node var1 (prev (getnode (read var3 var5)))))) var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int)) (or (not (and (inv_main16 var3 var4 var2 var0 var1) (not (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main17 var3 var4 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Heap) (var8 Int) (var9 Addr)) (or (not (and (inv_main29 var6 var8 var5 var1 var2) (and (and (and (and (= var7 (write var6 var2 (O_node (node (next (getnode (read var6 var2))) var1)))) (= var4 var8)) (= var3 var5)) (= var0 var1)) (= var9 var2)))) (inv_main33 var7 var4 var9 var9)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (inv_main11 var2 var3 var1 var0 var4)) (inv_main11 var2 var3 var1 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 node)) (or (not (and (inv_main3 var1 var3) (and (= nullAddr var0) (and (and (and (= var4 (newHeap (alloc var1 (O_node var6)))) (= var5 var3)) (= var2 var3)) (= var0 (newAddr (alloc var1 (O_node var6)))))))) (inv_main11 var4 var5 var2 var0 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr)) (or (not (and (inv_main26 var3 var7 var2 var0 var1 var11) (and (and (and (and (and (= var4 (write var3 var1 (O_node (node (next (getnode (read var3 var1))) var11)))) (= var5 var7)) (= var9 var2)) (= var8 var0)) (= var6 var1)) (= var10 var11)))) (inv_main16 var4 var5 (+ var9 (- 1)) var8 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Heap)) (or (not (and (inv_main14 var4 var5 var2 var0) (and (and (and (= var7 (write var4 var0 (O_node (node (next (getnode (read var4 var0))) var0)))) (= var3 var5)) (= var6 var2)) (= var1 var0)))) (inv_main16 var7 var3 var6 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int)) (or (not (inv_main8 var2 var3 var1 var0)) (inv_main14 (write var2 var0 (O_node (node var0 (prev (getnode (read var2 var0)))))) var3 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int)) (not (and (inv_main8 var2 var3 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int)) (not (and (inv_main14 var2 var3 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main20 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main26 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int)) (not (and (inv_main17 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int)) (not (and (inv_main29 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main33 var0 var2 var1 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main36 var0 var2 var1 var4 var3) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main0 var0 var2) (not (= (read var0 var1) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/dll_nullified-2.i.smt2 b/heap-theory-benchmarks/heap/dll_nullified-2.i.smt2 new file mode 100644 index 00000000..4b596893 --- /dev/null +++ b/heap-theory-benchmarks/heap/dll_nullified-2.i.smt2 @@ -0,0 +1,84 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data_0 Int) (next Addr) (data_1 Int) (prev Addr) (data_2 Int)) + ) +)) +(declare-fun inv_main11 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main14 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main17 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main26 (Heap Int Addr) Bool) +(declare-fun inv_main28 (Heap Int Addr) Bool) +(declare-fun inv_main29 (Heap Int Addr) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main32 (Heap Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Addr Int) Bool) +(declare-fun inv_main39 (Heap Int Addr) Bool) +(declare-fun inv_main40 (Heap Int Addr Addr) Bool) +(declare-fun inv_main44 (Heap Int Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Int Addr Addr Int) Bool) +(declare-fun inv_main50 (Heap Int Addr) Bool) +(declare-fun inv_main7 (Heap Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (or (not (and (inv_main26 var0 var2 var1) (and (not (= var1 nullAddr)) (= (next (getnode (read var0 var1))) nullAddr)))) (inv_main39 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int)) (or (not (and (inv_main46 var2 var13 var4 var0 var8) (and (not (= var9 nullAddr)) (and (and (= var5 0) (and (= var8 0) (and (and (and (and (= var12 var2) (= var11 var13)) (= var10 var4)) (= var6 var0)) (or (and (not (= 0 (data_2 (getnode (read var2 var4))))) (= var5 1)) (and (= 0 (data_2 (getnode (read var2 var4)))) (= var5 0)))))) (and (and (and (= var7 (write var12 var10 defObj)) (= var1 var11)) (= var3 var10)) (= var9 var6)))))) (inv_main39 var7 var1 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (or (not (inv_main19 var0 var3 var4 var1 var2)) (inv_main20 (write var0 var2 (O_node (node (data_0 (getnode (read var0 var2))) var1 (data_1 (getnode (read var0 var2))) (prev (getnode (read var0 var2))) (data_2 (getnode (read var0 var2)))))) var3 var4 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main46 var2 var4 var3 var0 var1) (not (= var1 0)))) (inv_main50 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr)) (or (not (and (inv_main46 var3 var7 var6 var0 var1) (and (not (= var8 0)) (and (= var1 0) (and (and (and (and (= var5 var3) (= var4 var7)) (= var2 var6)) (= var9 var0)) (or (and (not (= 0 (data_2 (getnode (read var3 var6))))) (= var8 1)) (and (= 0 (data_2 (getnode (read var3 var6)))) (= var8 0)))))))) (inv_main50 var5 var4 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main34 var1 var3 var2 var0) (not (= var0 0)))) (inv_main50 var1 var3 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main34 var2 var7 var6 var0) (and (not (= var5 0)) (and (= var0 0) (and (and (and (= var4 var2) (= var3 var7)) (= var1 var6)) (or (and (not (= 0 (data_2 (getnode (read var2 var6))))) (= var5 1)) (and (= 0 (data_2 (getnode (read var2 var6)))) (= var5 0)))))))) (inv_main50 var4 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (or (not (inv_main11 var0 var3 var4 var1 var2)) (inv_main17 (write var0 var2 (O_node (node 0 (next (getnode (read var0 var2))) (data_1 (getnode (read var0 var2))) (prev (getnode (read var0 var2))) (data_2 (getnode (read var0 var2)))))) var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (or (not (inv_main39 var0 var2 var1)) (inv_main40 var0 var2 var1 (prev (getnode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (or (not (inv_main17 var0 var3 var4 var1 var2)) (inv_main18 (write var0 var2 (O_node (node (data_0 (getnode (read var0 var2))) (next (getnode (read var0 var2))) 0 (prev (getnode (read var0 var2))) (data_2 (getnode (read var0 var2)))))) var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (or (not (inv_main18 var0 var3 var4 var1 var2)) (inv_main19 (write var0 var2 (O_node (node (data_0 (getnode (read var0 var2))) (next (getnode (read var0 var2))) (data_1 (getnode (read var0 var2))) (prev (getnode (read var0 var2))) 0))) var3 var4 var1 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main34 var2 var7 var6 var0) (and (= var5 0) (and (= var0 0) (and (and (and (= var4 var2) (= var3 var7)) (= var1 var6)) (or (and (not (= 0 (data_2 (getnode (read var2 var6))))) (= var5 1)) (and (= 0 (data_2 (getnode (read var2 var6)))) (= var5 0)))))))) (inv_main29 var4 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (or (not (and (inv_main20 var1 var8 var9 var2 var6) (and (not (= var3 nullAddr)) (and (and (and (and (= var5 (write var1 var6 (O_node (node (data_0 (getnode (read var1 var6))) (next (getnode (read var1 var6))) (data_1 (getnode (read var1 var6))) nullAddr (data_2 (getnode (read var1 var6))))))) (= var4 var8)) (= var7 var9)) (= var3 var2)) (= var0 var6))))) (inv_main23 var5 var4 var7 var3 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (inv_main29 var0 var4 var3) (and (and (and (= var6 var0) (= var2 var4)) (= var1 var3)) (= var5 (next (getnode (read var0 var3))))))) (inv_main26 var6 var2 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int)) (or (not (and (inv_main7 var0 var2 var3 var1) (not (<= 0 (+ var3 (- 1)))))) (inv_main26 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int)) (or (not (and (inv_main32 var0 var3 var2 var1) (not (= var1 0)))) (inv_main34 var0 var3 var2 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main32 var0 var7 var6 var4) (and (= var4 0) (and (and (and (= var3 var0) (= var5 var7)) (= var2 var6)) (or (and (not (= 0 (data_1 (getnode (read var0 var6))))) (= var1 1)) (and (= 0 (data_1 (getnode (read var0 var6)))) (= var1 0))))))) (inv_main34 var3 var5 var2 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (and (inv_main23 var2 var7 var9 var3 var5) (and (and (and (and (= var4 (write var2 var3 (O_node (node (data_0 (getnode (read var2 var3))) (next (getnode (read var2 var3))) (data_1 (getnode (read var2 var3))) var5 (data_2 (getnode (read var2 var3))))))) (= var0 var7)) (= var6 var9)) (= var1 var3)) (= var8 var5)))) (inv_main7 var4 var0 (+ var6 (- 1)) var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (or (not (and (inv_main20 var4 var8 var9 var5 var6) (and (= var0 nullAddr) (and (and (and (and (= var1 (write var4 var6 (O_node (node (data_0 (getnode (read var4 var6))) (next (getnode (read var4 var6))) (data_1 (getnode (read var4 var6))) nullAddr (data_2 (getnode (read var4 var6))))))) (= var3 var8)) (= var7 var9)) (= var0 var5)) (= var2 var6))))) (inv_main7 var1 var3 (+ var7 (- 1)) var2)))) +(assert (forall ((var0 Heap) (var1 Int)) (or (not (inv_main3 var0 var1)) (inv_main7 var0 var1 var1 nullAddr)))) +(assert (forall ((var0 node) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (or (not (and (inv_main7 var3 var8 var9 var4) (and (and (not (= nullAddr var2)) (and (and (and (and (= var5 (newHeap (alloc var3 (O_node var0)))) (= var7 var8)) (= var1 var9)) (= var6 var4)) (= var2 (newAddr (alloc var3 (O_node var0)))))) (<= 0 (+ var9 (- 1)))))) (inv_main11 var5 var7 var1 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (inv_main40 var1 var3 var2 var0)) (and (or (not (not (= 0 (data_0 (getnode (read var1 var2)))))) (inv_main44 var1 var3 var2 var0 1)) (or (not (= 0 (data_0 (getnode (read var1 var2))))) (inv_main44 var1 var3 var2 var0 0)))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (or (not (inv_main14 var0 var4 var5 var1 var3 var2)) (inv_main14 var0 var4 var5 var1 var3 var2)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Int)) (or (not (and (inv_main7 var4 var7 var9 var5) (and (and (= nullAddr var3) (and (and (and (and (= var8 (newHeap (alloc var4 (O_node var0)))) (= var6 var7)) (= var2 var9)) (= var1 var5)) (= var3 (newAddr (alloc var4 (O_node var0)))))) (<= 0 (+ var9 (- 1)))))) (inv_main14 var8 var6 var2 var1 var3 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (or (not (inv_main28 var0 var2 var1)) (and (or (not (not (= 0 (data_0 (getnode (read var0 var1)))))) (inv_main32 var0 var2 var1 1)) (or (not (= 0 (data_0 (getnode (read var0 var1))))) (inv_main32 var0 var2 var1 0)))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (or (not (and (inv_main26 var0 var2 var1) (not (= (next (getnode (read var0 var1))) nullAddr)))) (inv_main28 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main44 var2 var4 var3 var0 var1) (not (= var1 0)))) (inv_main46 var2 var4 var3 var0 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (and (inv_main44 var5 var8 var7 var0 var3) (and (= var3 0) (and (and (and (and (= var4 var5) (= var6 var8)) (= var9 var7)) (= var2 var0)) (or (and (not (= 0 (data_1 (getnode (read var5 var7))))) (= var1 1)) (and (= 0 (data_1 (getnode (read var5 var7)))) (= var1 0))))))) (inv_main46 var4 var6 var9 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main11 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main17 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main18 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main19 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main20 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main23 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main26 var0 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main28 var0 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int)) (not (and (inv_main32 var0 var3 var2 var1) (and (= var1 0) (not (is-O_node (read var0 var2)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main34 var1 var3 var2 var0) (and (= var0 0) (not (is-O_node (read var1 var2)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main29 var0 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main39 var0 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main40 var1 var3 var2 var0) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int)) (not (and (inv_main44 var2 var4 var3 var0 var1) (and (= var1 0) (not (is-O_node (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int)) (not (and (inv_main46 var2 var4 var3 var0 var1) (and (= var1 0) (not (is-O_node (read var2 var3)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (inv_main50 var0 var2 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/hash_fun.i.smt2 b/heap-theory-benchmarks/heap/hash_fun.i.smt2 new file mode 100644 index 00000000..bf7c07ca --- /dev/null +++ b/heap-theory-benchmarks/heap/hash_fun.i.smt2 @@ -0,0 +1,48 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (hash Int) (next Addr)) + ) +)) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main23 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main25 (Heap Addr Int) Bool) +(declare-fun inv_main26 (Heap Addr Int) Bool) +(declare-fun inv_main27 (Heap Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Int Int) Bool) +(declare-fun inv_main5 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap)) (or (not (and (inv_main29 var3 var0 var2 var1) (not (<= 0 (+ var1 (* (- 1) var2)))))) (inv_main27 var3 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Heap)) (or (not (and (inv_main29 var6 var1 var5 var3) (and (and (= var2 0) (and (<= 0 (+ var3 (* (- 1) var5))) (and (and (and (= var10 var6) (= var8 var1)) (= var9 var5)) (= var0 (hash (getnode (read var6 var1))))))) (and (and (and (= var11 var10) (= var7 var8)) (= var4 var9)) (or (and (<= 0 (+ (+ (+ var9 100) (* (- 1) var0)) (- 1))) (= var2 1)) (and (not (<= 0 (+ (+ (+ var9 100) (* (- 1) var0)) (- 1)))) (= var2 0))))))) (inv_main27 var11 var7 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr)) (or (not (and (inv_main26 var4 var0 var3) (and (not (= var2 nullAddr)) (and (and (and (= var1 var4) (= var6 var0)) (= var5 var3)) (= var2 (next (getnode (read var4 var0)))))))) (inv_main25 var1 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int)) (or (not (and (inv_main5 var2 var0 var1) (and (not (= var0 nullAddr)) (= var3 0)))) (inv_main25 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (or (not (inv_main25 var2 var0 var1)) (inv_main29 var2 var0 var1 (hash (getnode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (or (not (inv_main27 var2 var0 var1)) (inv_main26 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr)) (or (not (and (inv_main29 var7 var1 var6 var3) (and (and (not (= var4 0)) (and (<= 0 (+ var3 (* (- 1) var6))) (and (and (and (= var10 var7) (= var8 var1)) (= var9 var6)) (= var2 (hash (getnode (read var7 var1))))))) (and (and (and (= var5 var10) (= var11 var8)) (= var0 var9)) (or (and (<= 0 (+ (+ (+ var9 100) (* (- 1) var2)) (- 1))) (= var4 1)) (and (not (<= 0 (+ (+ (+ var9 100) (* (- 1) var2)) (- 1)))) (= var4 0))))))) (inv_main26 var5 var11 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (and (inv_main23 var9 var6 var8 var2 var10 var11 var13) (and (and (and (and (and (and (= var4 (write var9 var13 (O_node (node var11 (next (getnode (read var9 var13))))))) (= var12 var6)) (= var1 var8)) (= var5 var2)) (= var7 var10)) (= var3 var11)) (= var0 var13)))) (inv_main5 var4 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap)) (or (not (and (inv_main5 var3 var0 var2) (and (or (not (<= 0 var2)) (not (<= 0 (+ 1000000 (* (- 1) var2))))) (not (= var1 0))))) (inv_main5 var3 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main5 var4 var1 var3) (and (or (not (<= 0 (+ (+ var0 (* (- 1) var3)) (- 1)))) (not (<= 0 (+ (+ (+ var3 100) (* (- 1) var0)) (- 1))))) (and (and (<= 0 var3) (<= 0 (+ 1000000 (* (- 1) var3)))) (not (= var2 0)))))) (inv_main5 var4 var1 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap)) (or (not (and (inv_main2 var1) (and (= var3 var1) (= var2 nullAddr)))) (inv_main5 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 node) (var2 Int) (var3 Int) (var4 Heap) (var5 Int)) (or (not (and (inv_main5 var4 var0 var3) (and (and (<= 0 (+ (+ var5 (* (- 1) var3)) (- 1))) (<= 0 (+ (+ (+ var3 100) (* (- 1) var5)) (- 1)))) (and (and (<= 0 var3) (<= 0 (+ 1000000 (* (- 1) var3)))) (not (= var2 0)))))) (inv_main22 (newHeap (alloc var4 (O_node var1))) var0 var3 var5 1 var5 (newAddr (alloc var4 (O_node var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (or (not (inv_main22 var3 var0 var2 var1 var4 var5 var6)) (inv_main23 (write var3 var6 (O_node (node (hash (getnode (read var3 var6))) var0))) var0 var2 var1 var4 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main22 var3 var0 var2 var1 var4 var5 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main23 var3 var0 var2 var1 var4 var5 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (not (and (inv_main25 var2 var0 var1) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap)) (not (and (inv_main29 var3 var0 var2 var1) (and (<= 0 (+ var1 (* (- 1) var2))) (not (is-O_node (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (not (inv_main27 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (not (and (inv_main26 var2 var0 var1) (not (is-O_node (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/length_test03-1.i.smt2 b/heap-theory-benchmarks/heap/length_test03-1.i.smt2 new file mode 100644 index 00000000..c2cf7038 --- /dev/null +++ b/heap-theory-benchmarks/heap/length_test03-1.i.smt2 @@ -0,0 +1,142 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node_t 0) (list_t 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node_t (getnode_t node_t)) + (O_list_t (getlist_t list_t)) + (defObj) + ) + ( + (node_t (data Int) (prev Addr) (next Addr)) + ) + ( + (list_t (first Addr) (last Addr)) + ) +)) +(declare-fun inv_main17 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main25 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Int Int Int) Bool) +(declare-fun inv_main37 (Heap Addr Addr Int Int Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Int Int Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int Int Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main61 (Heap Addr Addr Int Int Int Addr) Bool) +(declare-fun inv_main63 (Heap Addr Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main68 (Heap Addr Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main73 (Heap Addr Addr Int Int Int Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main18 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main22 var5 var0 var1 var2 var6 var4 var7 var3 (first (getlist_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main57 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main59 (write var3 var8 (O_node_t (node_t (data (getnode_t (read var3 var8))) (prev (getnode_t (read var3 var8))) nullAddr))) var0 var1 var2 var7 var5 var6 var4 var9 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 node_t) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (or (not (and (inv_main37 var4 var0 var1 var3 var7 var6) (<= 0 (+ (+ 5 (* (- 1) var6)) (- 1))))) (inv_main45 (newHeap (alloc var4 (O_node_t var2))) var0 var1 var3 var7 var6 var5 var1 var5 (newAddr (alloc var4 (O_node_t var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr)) (or (not (and (inv_main61 var9 var6 var7 var0 var12 var3 var4) (and (= var1 nullAddr) (and (and (and (and (and (and (and (= var2 var9) (= var14 var6)) (= var13 var7)) (= var11 var0)) (= var10 var12)) (= var8 var3)) (= var1 var4)) (= var5 (next (getnode_t (read var9 var4)))))))) (inv_main63 var2 var14 var13 var11 var10 var8 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Heap) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Int)) (or (not (and (inv_main64 var16 var9 var10 var2 var22 var3 var8 var15) (and (= var1 nullAddr) (and (and (and (and (and (and (and (and (and (= var17 var16) (= var14 var9)) (= var20 var10)) (= var19 var2)) (= var13 var22)) (= var6 var3)) (= var4 var8)) (= var21 var15)) (= var7 (next (getnode_t (read var16 var8))))) (and (and (and (and (and (and (and (= var12 (write var17 var4 defObj)) (= var11 var14)) (= var23 var20)) (= var18 var19)) (= var5 var13)) (= var24 var6)) (= var0 var4)) (= var1 var7)))))) (inv_main63 var12 var11 var23 var18 var5 var24 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main59 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main60 (write var3 (last (getlist_t (read var3 var4))) (O_node_t (node_t (data (getnode_t (read var3 (last (getlist_t (read var3 var4)))))) (prev (getnode_t (read var3 (last (getlist_t (read var3 var4)))))) var8))) var0 var1 var2 var7 var5 var6 var4 var9 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main53 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main54 (write var3 var4 (O_list_t (list_t (first (getlist_t (read var3 var4))) var8))) var0 var1 var2 var7 var5 var6 var4 var9 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main47 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main58 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8 (last (getlist_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_list_t (list_t nullAddr (last (getlist_t (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main31 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main32 (write var5 (last (getlist_t (read var5 var4))) (O_node_t (node_t (data (getnode_t (read var5 (last (getlist_t (read var5 var4)))))) (prev (getnode_t (read var5 (last (getlist_t (read var5 var4)))))) var3))) var0 var1 var2 var6 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int)) (or (not (and (inv_main50 var3 var0 var1 var2 var8 var5 var6 var4 var10 var9 var7) (not (= var7 nullAddr)))) (inv_main47 var3 var0 var1 var2 var8 var5 var6 var4 var10 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Int) (var25 Addr) (var26 Int) (var27 Int) (var28 Int) (var29 Addr) (var30 Int) (var31 Addr) (var32 Int)) (or (not (and (inv_main50 var7 var21 var6 var1 var30 var13 var15 var29 var32 var31 var3) (and (and (= var28 0) (and (= var3 nullAddr) (and (and (and (and (and (and (and (and (and (and (= var2 var7) (= var18 var21)) (= var23 var6)) (= var22 var1)) (= var9 var30)) (= var8 var13)) (= var26 var15)) (= var5 var29)) (= var4 var32)) (= var14 var31)) (= var20 (last (getlist_t (read var7 var29))))))) (and (and (and (and (and (and (and (and (and (and (= var10 var2) (= var17 var18)) (= var25 var23)) (= var16 var22)) (= var24 var9)) (= var27 var8)) (= var19 var26)) (= var12 var5)) (= var0 var4)) (= var11 var14)) (or (and (= var20 nullAddr) (= var28 1)) (and (not (= var20 nullAddr)) (= var28 0))))))) (inv_main47 var10 var17 var25 var16 var24 var27 var19 var12 var0 var11)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main63 var12 var8 var9 var3 var16 var5 var6 var11) (and (and (and (and (and (and (and (and (= var10 var12) (= var7 var8)) (= var15 var9)) (= var0 var3)) (= var1 var16)) (= var13 var5)) (= var14 var6)) (= var4 var11)) (= var2 (last (getlist_t (read var12 var9))))))) (inv_main68 var10 var7 var15 var0 var1 var13 var2 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int)) (or (not (and (inv_main61 var10 var6 var7 var3 var14 var4 var5) (and (not (= var13 nullAddr)) (and (and (and (and (and (and (and (= var1 var10) (= var9 var6)) (= var12 var7)) (= var0 var3)) (= var2 var14)) (= var11 var4)) (= var13 var5)) (= var8 (next (getnode_t (read var10 var5)))))))) (inv_main64 var1 var9 var12 var0 var2 var11 var13 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Heap) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Int)) (or (not (and (inv_main64 var16 var9 var10 var2 var22 var3 var8 var15) (and (not (= var1 nullAddr)) (and (and (and (and (and (and (and (and (and (= var17 var16) (= var14 var9)) (= var20 var10)) (= var19 var2)) (= var13 var22)) (= var6 var3)) (= var4 var8)) (= var21 var15)) (= var7 (next (getnode_t (read var16 var8))))) (and (and (and (and (and (and (and (= var12 (write var17 var4 defObj)) (= var11 var14)) (= var23 var20)) (= var18 var19)) (= var5 var13)) (= var24 var6)) (= var0 var4)) (= var1 var7)))))) (inv_main64 var12 var11 var23 var18 var5 var24 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main6 var2 var0 var1)) (inv_main7 (write var2 var1 (O_list_t (list_t nullAddr (last (getlist_t (read var2 var1)))))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main46 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main50 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8 (first (getlist_t (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Heap) (var21 Int) (var22 Addr) (var23 Int) (var24 Addr) (var25 Addr) (var26 Addr)) (or (not (and (inv_main22 var19 var17 var18 var5 var23 var7 var14 var6 var22) (and (and (not (= var8 0)) (and (= var22 nullAddr) (and (and (and (and (and (and (and (and (= var16 var19) (= var3 var17)) (= var24 var18)) (= var21 var5)) (= var0 var23)) (= var25 var7)) (= var13 var14)) (= var10 var6)) (= var2 (last (getlist_t (read var19 var7))))))) (and (and (and (and (and (and (and (and (= var20 var16) (= var12 var3)) (= var1 var24)) (= var9 var21)) (= var15 var0)) (= var26 var25)) (= var4 var13)) (= var11 var10)) (or (and (= var2 nullAddr) (= var8 1)) (and (not (= var2 nullAddr)) (= var8 0))))))) (inv_main20 var20 var12 var1 var9 var15 var26 var4 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main17 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main18 (write var5 var3 (O_node_t (node_t var7 (prev (getnode_t (read var5 var3))) (next (getnode_t (read var5 var3)))))) var0 var1 var2 var6 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int)) (or (not (inv_main58 var3 var0 var1 var2 var8 var5 var7 var4 var10 var9 var6)) (inv_main57 (write var3 var9 (O_node_t (node_t (data (getnode_t (read var3 var9))) var6 (next (getnode_t (read var3 var9)))))) var0 var1 var2 var8 var5 var7 var4 var10 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main48 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main53 (write var3 var4 (O_list_t (list_t var8 (last (getlist_t (read var3 var4)))))) var0 var1 var2 var7 var5 var6 var4 var9 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 node_t) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Heap) (var17 Int) (var18 Int)) (or (not (and (inv_main27 var16 var12 var13 var2 var17 var5 var9 var4) (and (not (= var1 0)) (and (and (and (and (and (and (and (= var7 (write var16 var4 (O_node_t (node_t (data (getnode_t (read var16 var4))) (prev (getnode_t (read var16 var4))) nullAddr)))) (= var6 var12)) (= var15 var13)) (= var8 var2)) (= var10 var17)) (= var0 var5)) (= var14 var9)) (= var11 var4))))) (inv_main17 (newHeap (alloc var7 (O_node_t var3))) var6 var15 var8 var18 var6 var18 (newAddr (alloc var7 (O_node_t var3))))))) +(assert (forall ((var0 node_t) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int) (var16 Addr) (var17 Heap)) (or (not (and (inv_main32 var13 var11 var12 var2 var15 var5 var7 var4) (and (not (= var8 0)) (and (and (and (and (and (and (= var17 (write var13 var5 (O_list_t (list_t (first (getlist_t (read var13 var5))) var4)))) (= var16 var11)) (= var9 var12)) (= var1 var2)) (= var14 var15)) (= var10 var5)) (= var6 var7))))) (inv_main17 (newHeap (alloc var17 (O_node_t var0))) var16 var9 var1 var3 var16 var3 (newAddr (alloc var17 (O_node_t var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 node_t) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main7 var4 var1 var2) (and (and (= var8 (write var4 var2 (O_list_t (list_t (first (getlist_t (read var4 var2))) nullAddr)))) (= var6 var1)) (= var3 var2)))) (inv_main17 (newHeap (alloc var8 (O_node_t var5))) var6 var3 var0 var7 var6 var7 (newAddr (alloc var8 (O_node_t var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main68 var11 var6 var7 var2 var13 var4 var5 var10) (and (and (and (and (and (and (and (and (= var9 var11) (= var15 var6)) (= var14 var7)) (= var3 var2)) (= var0 var13)) (= var8 var4)) (= var12 var5)) (= var1 var10)) (= var16 (prev (getnode_t (read var11 var5))))))) (inv_main73 var9 var15 var14 var3 var0 0 var12 var1 var16)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Heap) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Int)) (or (not (and (inv_main73 var12 var23 var9 var2 var27 var19 var21 var11 var18) (and (<= 0 (+ (+ 5 (* (- 1) (+ var4 1))) (- 1))) (and (and (and (and (and (and (and (and (and (and (= var22 var12) (= var17 var23)) (= var20 var9)) (= var8 var2)) (= var13 var27)) (= var5 var19)) (= var25 var21)) (= var16 var11)) (= var24 var18)) (= var14 (prev (getnode_t (read var12 var21))))) (and (and (and (and (and (and (and (and (= var3 (write var22 var25 defObj)) (= var7 var17)) (= var0 var20)) (= var15 var8)) (= var1 var13)) (= var4 var5)) (= var26 var25)) (= var10 var16)) (= var6 var14)))))) (inv_main73 var3 var7 var0 var15 var1 (+ var4 1) var6 var10 var6)))) +(assert (forall ((var0 Heap) (var1 list_t)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_list_t var1))) (newAddr (alloc var0 (O_list_t var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main30 var6 var0 var1 var3 var7 var5 var8 var4 var2)) (inv_main29 (write var6 var4 (O_node_t (node_t (data (getnode_t (read var6 var4))) var2 (next (getnode_t (read var6 var4)))))) var0 var1 var3 var7 var5 var8 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main29 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main31 (write var5 var3 (O_node_t (node_t (data (getnode_t (read var5 var3))) (prev (getnode_t (read var5 var3))) nullAddr))) var0 var1 var2 var6 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main19 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main30 var5 var0 var1 var2 var6 var4 var7 var3 (last (getlist_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main25 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main26 (write var5 var4 (O_list_t (list_t (first (getlist_t (read var5 var4))) var3))) var0 var1 var2 var6 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main37 var3 var0 var1 var2 var5 var4) (not (<= 0 (+ (+ 5 (* (- 1) var4)) (- 1)))))) (inv_main36 var3 var0 var1 var2 var5 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Int) (var16 Heap) (var17 Int) (var18 Addr) (var19 Int)) (or (not (and (inv_main55 var13 var11 var12 var1 var17 var5 var6 var14 var19 var18) (and (and (and (and (and (and (and (and (and (= var16 (write var13 var18 (O_node_t (node_t (data (getnode_t (read var13 var18))) (prev (getnode_t (read var13 var18))) nullAddr)))) (= var9 var11)) (= var3 var12)) (= var2 var1)) (= var15 var17)) (= var0 var5)) (= var4 var6)) (= var8 var14)) (= var7 var19)) (= var10 var18)))) (inv_main37 var16 var9 var3 var2 var15 (+ var0 1))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main60 var14 var11 var12 var4 var16 var6 var7 var15 var18 var17) (and (and (and (and (and (and (and (and (= var8 (write var14 var15 (O_list_t (list_t (first (getlist_t (read var14 var15))) var17)))) (= var3 var11)) (= var2 var12)) (= var13 var4)) (= var10 var16)) (= var9 var6)) (= var0 var7)) (= var1 var15)) (= var5 var18)))) (inv_main37 var8 var3 var2 var13 var10 (+ var9 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Heap) (var16 Int)) (or (not (and (inv_main27 var15 var11 var12 var2 var16 var4 var8 var3) (and (= var1 0) (and (and (and (and (and (and (and (= var6 (write var15 var3 (O_node_t (node_t (data (getnode_t (read var15 var3))) (prev (getnode_t (read var15 var3))) nullAddr)))) (= var5 var11)) (= var14 var12)) (= var7 var2)) (= var9 var16)) (= var0 var4)) (= var13 var8)) (= var10 var3))))) (inv_main37 var6 var5 var14 var7 5 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Heap)) (or (not (and (inv_main32 var11 var9 var10 var1 var13 var3 var6 var2) (and (= var4 0) (and (and (and (and (and (and (= var15 (write var11 var3 (O_list_t (list_t (first (getlist_t (read var11 var3))) var2)))) (= var14 var9)) (= var7 var10)) (= var0 var1)) (= var12 var13)) (= var8 var3)) (= var5 var6))))) (inv_main37 var15 var14 var7 var0 5 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main54 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main55 (write var3 var8 (O_node_t (node_t (data (getnode_t (read var3 var8))) nullAddr (next (getnode_t (read var3 var8)))))) var0 var1 var2 var7 var5 var6 var4 var9 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main26 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main27 (write var5 var3 (O_node_t (node_t (data (getnode_t (read var5 var3))) nullAddr (next (getnode_t (read var5 var3)))))) var0 var1 var2 var6 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int)) (or (not (and (inv_main22 var5 var0 var1 var2 var7 var4 var8 var3 var6) (not (= var6 nullAddr)))) (inv_main19 var5 var0 var1 var2 var7 var4 var8 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Heap)) (or (not (and (inv_main22 var17 var15 var16 var4 var21 var7 var11 var6 var20) (and (and (= var10 0) (and (= var20 nullAddr) (and (and (and (and (and (and (and (and (= var13 var17) (= var3 var15)) (= var23 var16)) (= var18 var4)) (= var0 var21)) (= var25 var7)) (= var9 var11)) (= var8 var6)) (= var1 (last (getlist_t (read var17 var7))))))) (and (and (and (and (and (and (and (and (= var26 var13) (= var12 var3)) (= var24 var23)) (= var5 var18)) (= var22 var0)) (= var19 var25)) (= var2 var9)) (= var14 var8)) (or (and (= var1 nullAddr) (= var10 1)) (and (not (= var1 nullAddr)) (= var10 0))))))) (inv_main19 var26 var12 var24 var5 var22 var19 var2 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (or (not (inv_main20 var5 var0 var1 var2 var6 var4 var7 var3)) (inv_main25 (write var5 var4 (O_list_t (list_t var3 (last (getlist_t (read var5 var4)))))) var0 var1 var2 var6 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main45 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8)) (inv_main46 (write var3 var8 (O_node_t (node_t var9 (prev (getnode_t (read var3 var8))) (next (getnode_t (read var3 var8)))))) var0 var1 var2 var7 var5 var6 var4 var9 var8)))) +(assert (forall ((var0 Addr) (var1 list_t) (var2 Heap) (var3 Heap) (var4 Addr)) (or (not (and (inv_main4 var2 var0) (and (= var3 (write var2 var0 (O_list_t (list_t (first (getlist_t (read var2 var0))) nullAddr)))) (= var4 var0)))) (inv_main6 (newHeap (alloc var3 (O_list_t var1))) var4 (newAddr (alloc var3 (O_list_t var1))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Int) (var27 Addr) (var28 Int) (var29 Addr) (var30 Int) (var31 Addr) (var32 Int)) (or (not (and (inv_main50 var11 var25 var9 var0 var30 var19 var21 var29 var32 var31 var4) (and (and (not (= var15 0)) (and (= var4 nullAddr) (and (and (and (and (and (and (and (and (and (and (= var2 var11) (= var23 var25)) (= var27 var9)) (= var26 var0)) (= var14 var30)) (= var12 var19)) (= var28 var21)) (= var6 var29)) (= var5 var32)) (= var20 var31)) (= var24 (last (getlist_t (read var11 var29))))))) (and (and (and (and (and (and (and (and (and (and (= var3 var2) (= var16 var23)) (= var13 var27)) (= var7 var26)) (= var1 var14)) (= var8 var12)) (= var17 var28)) (= var10 var6)) (= var18 var5)) (= var22 var20)) (or (and (= var24 nullAddr) (= var15 1)) (and (not (= var24 nullAddr)) (= var15 0))))))) (inv_main48 var3 var16 var13 var7 var1 var8 var17 var10 var18 var22)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int)) (or (not (inv_main36 var3 var0 var1 var2 var5 var4)) (inv_main61 var3 var0 var1 var2 var5 var4 (first (getlist_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_list_t (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_list_t (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main6 var2 var0 var1) (not (is-O_list_t (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main7 var2 var0 var1) (not (is-O_list_t (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main17 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_node_t (read var5 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main18 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_list_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main22 var5 var0 var1 var2 var7 var4 var8 var3 var6) (and (= var6 nullAddr) (not (is-O_list_t (read var5 var4)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main20 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_list_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main25 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_list_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main26 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_node_t (read var5 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main27 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_node_t (read var5 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main19 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_list_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (not (and (inv_main30 var6 var0 var1 var3 var7 var5 var8 var4 var2) (not (is-O_node_t (read var6 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main29 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_node_t (read var5 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main31 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_list_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main31 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_node_t (read var5 (last (getlist_t (read var5 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main32 var5 var0 var1 var2 var6 var4 var7 var3) (not (is-O_list_t (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main45 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_node_t (read var3 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main46 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int)) (not (and (inv_main50 var3 var0 var1 var2 var8 var5 var6 var4 var10 var9 var7) (and (= var7 nullAddr) (not (is-O_list_t (read var3 var4)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main48 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main53 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main54 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_node_t (read var3 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main55 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_node_t (read var3 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main47 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int)) (not (and (inv_main58 var3 var0 var1 var2 var8 var5 var7 var4 var10 var9 var6) (not (is-O_node_t (read var3 var9))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main57 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_node_t (read var3 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main59 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main59 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_node_t (read var3 (last (getlist_t (read var3 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main60 var3 var0 var1 var2 var7 var5 var6 var4 var9 var8) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int)) (not (and (inv_main36 var3 var0 var1 var2 var5 var4) (not (is-O_list_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main61 var4 var1 var2 var3 var6 var5 var0) (not (is-O_node_t (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main64 var5 var1 var2 var3 var7 var6 var0 var4) (not (is-O_node_t (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main63 var5 var1 var2 var3 var7 var6 var0 var4) (not (is-O_list_t (read var5 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main68 var5 var1 var2 var3 var7 var6 var0 var4) (not (is-O_node_t (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main73 var5 var1 var2 var3 var8 var7 var0 var4 var6) (not (is-O_node_t (read var5 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/list-1.i.smt2 b/heap-theory-benchmarks/heap/list-1.i.smt2 new file mode 100644 index 00000000..c45bd141 --- /dev/null +++ b/heap-theory-benchmarks/heap/list-1.i.smt2 @@ -0,0 +1,80 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main24 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main41 var5 var4 var1 var3) (and (= var6 1) (and (and (and (and (= var0 var5) (= var8 var4)) (= var2 var1)) (= var7 var3)) (= var6 (h (getnode (read var5 var3)))))))) (inv_main43 var0 var8 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main12 var3 var2 var0 var1) (= var4 0))) (inv_main26 var3 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main38 var7 var6 var3 var5) (and (and (and (and (= var4 var7) (= var1 var6)) (= var0 var3)) (= var8 var5)) (= var2 (n (getnode (read var7 var5))))))) (inv_main12 var4 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (and (inv_main24 var6 var5 var2 var4) (and (= var8 0) (and (and (and (and (= var1 var6) (= var3 var5)) (= var7 var2)) (= var0 var4)) (= var9 (n (getnode (read var6 var4)))))))) (inv_main12 var1 var3 var7 var9)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 node)) (or (not (and (inv_main2 var3) (and (= var0 0) (and (not (= var4 nullAddr)) (and (= var2 (newHeap (alloc var3 (O_node var5)))) (= var4 (newAddr (alloc var3 (O_node var5))))))))) (inv_main12 var2 var4 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main42 var5 var4 var1 var3) (and (= var2 2) (and (and (and (and (= var8 var5) (= var6 var4)) (= var7 var1)) (= var0 var3)) (= var2 (h (getnode (read var5 var3)))))))) (inv_main47 var8 var6 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Int)) (or (not (and (inv_main41 var6 var5 var2 var4) (and (not (= var8 1)) (and (and (and (and (= var7 var6) (= var0 var5)) (= var1 var2)) (= var3 var4)) (= var8 (h (getnode (read var6 var4)))))))) (inv_main42 var7 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main47 var7 var6 var3 var5) (and (and (and (and (= var4 var7) (= var1 var6)) (= var2 var3)) (= var0 var5)) (= var8 (n (getnode (read var7 var5))))))) (inv_main42 var4 var1 var2 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main46 var6 var5 var2 var4) (and (not (= var0 3)) (and (and (and (and (= var1 var6) (= var3 var5)) (= var7 var2)) (= var8 var4)) (= var0 (h (getnode (read var6 var4)))))))) (inv_main51 var1 var3 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int)) (or (not (inv_main7 var1 var0 var2)) (inv_main7 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 node) (var3 Addr)) (or (not (and (inv_main2 var0) (and (= var3 nullAddr) (and (= var1 (newHeap (alloc var0 (O_node var2)))) (= var3 (newAddr (alloc var0 (O_node var2)))))))) (inv_main7 var1 var3 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 node) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main13 var7 var6 var0 var1) (and (not (= var9 nullAddr)) (and (and (and (and (and (= var5 (newHeap (alloc var3 (O_node var2)))) (= var11 var12)) (= var10 var8)) (= var4 var13)) (= var9 (newAddr (alloc var3 (O_node var2))))) (and (and (and (= var3 (write var7 var1 (O_node (node 1 (n (getnode (read var7 var1))))))) (= var12 var6)) (= var8 var0)) (= var13 var1)))))) (inv_main18 var5 var11 var9 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main24 var7 var6 var3 var5) (and (not (= var2 0)) (and (and (and (and (= var1 var7) (= var4 var6)) (= var8 var3)) (= var0 var5)) (= var9 (n (getnode (read var7 var5)))))))) (inv_main13 var1 var4 var8 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 node)) (or (not (and (inv_main2 var2) (and (not (= var0 0)) (and (not (= var4 nullAddr)) (and (= var1 (newHeap (alloc var2 (O_node var5)))) (= var4 (newAddr (alloc var2 (O_node var5))))))))) (inv_main13 var1 var4 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main12 var4 var3 var0 var2) (not (= var1 0)))) (inv_main27 var4 var3 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (inv_main21 var4 var3 var1 var2 var0)) (inv_main21 var4 var3 var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 node) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main13 var7 var6 var0 var1) (and (= var9 nullAddr) (and (and (and (and (and (= var5 (newHeap (alloc var3 (O_node var2)))) (= var11 var12)) (= var10 var8)) (= var4 var13)) (= var9 (newAddr (alloc var3 (O_node var2))))) (and (and (and (= var3 (write var7 var1 (O_node (node 1 (n (getnode (read var7 var1))))))) (= var12 var6)) (= var8 var0)) (= var13 var1)))))) (inv_main21 var5 var11 var9 var4 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main42 var4 var3 var0 var2) (and (not (= var5 2)) (and (and (and (and (= var1 var4) (= var7 var3)) (= var6 var0)) (= var8 var2)) (= var5 (h (getnode (read var4 var2)))))))) (inv_main46 var1 var7 var6 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main43 var5 var4 var2 var3) (and (and (and (and (= var7 var5) (= var1 var4)) (= var6 var2)) (= var0 var3)) (= var8 (n (getnode (read var5 var3))))))) (inv_main41 var7 var1 var6 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main26 var3 var2 var0 var1) (and (and (and (= var7 (write var3 var1 (O_node (node 3 (n (getnode (read var3 var1))))))) (= var5 var2)) (= var6 var0)) (= var4 var1)))) (inv_main41 var7 var5 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (inv_main35 var3 var2 var0 var1 var4)) (inv_main35 var3 var2 var0 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 node) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr)) (or (not (and (inv_main27 var11 var10 var1 var3) (and (= var13 nullAddr) (and (and (and (and (and (= var0 (newHeap (alloc var6 (O_node var9)))) (= var2 var5)) (= var7 var12)) (= var8 var4)) (= var13 (newAddr (alloc var6 (O_node var9))))) (and (and (and (= var6 (write var11 var3 (O_node (node 2 (n (getnode (read var11 var3))))))) (= var5 var10)) (= var12 var1)) (= var4 var3)))))) (inv_main35 var0 var2 var13 var8 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main32 var3 var2 var0 var1)) (inv_main38 (write var3 var1 (O_node (node (h (getnode (read var3 var1))) var0))) var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main18 var3 var2 var0 var1)) (inv_main24 (write var3 var1 (O_node (node (h (getnode (read var3 var1))) var0))) var2 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main46 var5 var4 var1 var3) (and (= var8 3) (and (and (and (and (= var0 var5) (= var7 var4)) (= var6 var1)) (= var2 var3)) (= var8 (h (getnode (read var5 var3)))))))) (inv_main0 var0 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 node) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr)) (or (not (and (inv_main27 var11 var10 var1 var3) (and (not (= var13 nullAddr)) (and (and (and (and (and (= var0 (newHeap (alloc var6 (O_node var9)))) (= var2 var5)) (= var7 var12)) (= var8 var4)) (= var13 (newAddr (alloc var6 (O_node var9))))) (and (and (and (= var6 (write var11 var3 (O_node (node 2 (n (getnode (read var11 var3))))))) (= var5 var10)) (= var12 var1)) (= var4 var3)))))) (inv_main32 var0 var2 var13 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main13 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main18 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main24 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main27 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main32 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main38 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main26 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main41 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main43 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main42 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main47 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main46 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main51 var3 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr)) (not (and (inv_main0 var1 var0) (not (= (read var1 var2) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/list-2.i.smt2 b/heap-theory-benchmarks/heap/list-2.i.smt2 new file mode 100644 index 00000000..f9b7d113 --- /dev/null +++ b/heap-theory-benchmarks/heap/list-2.i.smt2 @@ -0,0 +1,77 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main24 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main42 var8 var5 var2 var1) (and (= var0 1) (and (and (and (and (= var6 var8) (= var3 var5)) (= var4 var2)) (= var7 var1)) (= var0 (h (getnode (read var8 var1)))))))) (inv_main47 var6 var3 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 node) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main27 var6 var2 var8 var7) (and (not (= var11 nullAddr)) (and (and (and (and (and (= var13 (newHeap (alloc var10 (O_node var5)))) (= var4 var0)) (= var3 var1)) (= var9 var12)) (= var11 (newAddr (alloc var10 (O_node var5))))) (and (and (and (= var10 (write var6 var7 (O_node (node 2 (n (getnode (read var6 var7))))))) (= var0 var2)) (= var1 var8)) (= var12 var7)))))) (inv_main32 var13 var4 var11 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Heap)) (or (not (and (inv_main42 var8 var4 var1 var0) (and (not (= var3 1)) (and (and (and (and (= var7 var8) (= var5 var4)) (= var6 var1)) (= var2 var0)) (= var3 (h (getnode (read var8 var0)))))))) (inv_main46 var7 var5 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main21 var4 var2 var1 var0 var3)) (inv_main21 var4 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 node) (var12 Addr) (var13 Addr)) (or (not (and (inv_main13 var5 var3 var9 var8) (and (= var0 nullAddr) (and (and (and (and (and (= var2 (newHeap (alloc var1 (O_node var11)))) (= var6 var10)) (= var7 var13)) (= var4 var12)) (= var0 (newAddr (alloc var1 (O_node var11))))) (and (and (and (= var1 (write var5 var8 (O_node (node 1 (n (getnode (read var5 var8))))))) (= var10 var3)) (= var13 var9)) (= var12 var8)))))) (inv_main21 var2 var6 var0 var4 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (or (not (inv_main7 var2 var1 var0)) (inv_main7 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 node) (var3 Heap)) (or (not (and (inv_main2 var3) (and (= var0 nullAddr) (and (= var1 (newHeap (alloc var3 (O_node var2)))) (= var0 (newAddr (alloc var3 (O_node var2)))))))) (inv_main7 var1 var0 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main12 var3 var2 var1 var0) (not (= var4 0)))) (inv_main27 var3 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main18 var3 var2 var1 var0)) (inv_main24 (write var3 var0 (O_node (node (h (getnode (read var3 var0))) var1))) var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main41 var8 var6 var1 var0) (and (= var7 2) (and (and (and (and (= var5 var8) (= var3 var6)) (= var2 var1)) (= var4 var0)) (= var7 (h (getnode (read var8 var0)))))))) (inv_main43 var5 var3 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main43 var8 var5 var2 var1) (and (and (and (and (= var6 var8) (= var0 var5)) (= var3 var2)) (= var7 var1)) (= var4 (n (getnode (read var8 var1))))))) (inv_main41 var6 var0 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap)) (or (not (and (inv_main26 var7 var4 var1 var0) (and (and (and (= var5 (write var7 var0 (O_node (node 3 (n (getnode (read var7 var0))))))) (= var6 var4)) (= var3 var1)) (= var2 var0)))) (inv_main41 var5 var6 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main41 var7 var4 var1 var0) (and (not (= var5 2)) (and (and (and (and (= var2 var7) (= var8 var4)) (= var3 var1)) (= var6 var0)) (= var5 (h (getnode (read var7 var0)))))))) (inv_main42 var2 var8 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main47 var8 var4 var1 var0) (and (and (and (and (= var2 var8) (= var6 var4)) (= var5 var1)) (= var3 var0)) (= var7 (n (getnode (read var8 var0))))))) (inv_main42 var2 var6 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main32 var3 var2 var1 var0)) (inv_main38 (write var3 var0 (O_node (node (h (getnode (read var3 var0))) var1))) var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main38 var8 var5 var2 var1) (and (and (and (and (= var3 var8) (= var6 var5)) (= var7 var2)) (= var0 var1)) (= var4 (n (getnode (read var8 var1))))))) (inv_main12 var3 var6 var7 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main24 var8 var6 var1 var0) (and (= var9 0) (and (and (and (and (= var4 var8) (= var3 var6)) (= var2 var1)) (= var7 var0)) (= var5 (n (getnode (read var8 var0)))))))) (inv_main12 var4 var3 var2 var5)))) +(assert (forall ((var0 Int) (var1 node) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (and (inv_main2 var3) (and (= var0 0) (and (not (= var5 nullAddr)) (and (= var2 (newHeap (alloc var3 (O_node var1)))) (= var5 (newAddr (alloc var3 (O_node var1))))))))) (inv_main12 var2 var5 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap)) (or (not (and (inv_main24 var9 var6 var1 var0) (and (not (= var7 0)) (and (and (and (and (= var4 var9) (= var3 var6)) (= var2 var1)) (= var8 var0)) (= var5 (n (getnode (read var9 var0)))))))) (inv_main13 var4 var3 var2 var5)))) +(assert (forall ((var0 node) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main2 var3) (and (not (= var4 0)) (and (not (= var5 nullAddr)) (and (= var1 (newHeap (alloc var3 (O_node var0)))) (= var5 (newAddr (alloc var3 (O_node var0))))))))) (inv_main13 var1 var5 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main12 var4 var2 var1 var0) (= var3 0))) (inv_main26 var4 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main35 var4 var2 var1 var0 var3)) (inv_main35 var4 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 node) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main27 var6 var2 var8 var7) (and (= var11 nullAddr) (and (and (and (and (and (= var13 (newHeap (alloc var10 (O_node var5)))) (= var4 var0)) (= var3 var1)) (= var9 var12)) (= var11 (newAddr (alloc var10 (O_node var5))))) (and (and (and (= var10 (write var6 var7 (O_node (node 2 (n (getnode (read var6 var7))))))) (= var0 var2)) (= var1 var8)) (= var12 var7)))))) (inv_main35 var13 var4 var11 var9 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 node) (var12 Addr) (var13 Addr)) (or (not (and (inv_main13 var5 var3 var9 var8) (and (not (= var0 nullAddr)) (and (and (and (and (and (= var2 (newHeap (alloc var1 (O_node var11)))) (= var6 var10)) (= var7 var13)) (= var4 var12)) (= var0 (newAddr (alloc var1 (O_node var11))))) (and (and (and (= var1 (write var5 var8 (O_node (node 1 (n (getnode (read var5 var8))))))) (= var10 var3)) (= var13 var9)) (= var12 var8)))))) (inv_main18 var2 var6 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main46 var8 var6 var2 var1) (and (not (= var0 3)) (and (and (and (and (= var5 var8) (= var3 var6)) (= var4 var2)) (= var7 var1)) (= var0 (h (getnode (read var8 var1)))))))) (inv_main51 var5 var3 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main13 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main18 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main24 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main27 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main32 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main38 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main26 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main41 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main43 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main42 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main47 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main46 var3 var2 var1 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main51 var3 var2 var1 var0)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/list-ext.i.smt2 b/heap-theory-benchmarks/heap/list-ext.i.smt2 new file mode 100644 index 00000000..c8852598 --- /dev/null +++ b/heap-theory-benchmarks/heap/list-ext.i.smt2 @@ -0,0 +1,90 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main13 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main14 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main30 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main68 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 0 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main50 var7 var9 var1 var3 var12 var8) (and (= var10 1) (and (and (and (and (and (and (= var11 var7) (= var6 var9)) (= var2 var1)) (= var5 var3)) (= var0 var12)) (= var4 var8)) (= var10 (h (getnode (read var7 var8)))))))) (inv_main54 var11 (+ var6 1) var2 var5 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main50 var8 var10 var0 var2 var12 var9) (and (not (= var7 1)) (and (and (and (and (and (and (= var11 var8) (= var6 var10)) (= var5 var0)) (= var4 var2)) (= var3 var12)) (= var1 var9)) (= var7 (h (getnode (read var8 var9)))))))) (inv_main51 var11 var6 var5 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main59 var6 var8 var0 var3 var11 var7) (and (and (and (and (and (and (= var9 var6) (= var12 var8)) (= var4 var0)) (= var2 var3)) (= var10 var11)) (= var5 var7)) (= var1 (n (getnode (read var6 var7))))))) (inv_main51 var9 var12 var4 var2 var10 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Heap) (var15 node) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr)) (or (not (and (inv_main34 var8 var10 var11 var6 var19 var9) (and (not (= var5 nullAddr)) (and (and (and (and (and (and (and (= var16 (newHeap (alloc var14 (O_node var15)))) (= var0 var12)) (= var2 var18)) (= var13 var17)) (= var3 var7)) (= var4 var1)) (= var5 (newAddr (alloc var14 (O_node var15))))) (and (and (and (and (and (= var14 (write var8 var9 (O_node (node 2 (n (getnode (read var8 var9))))))) (= var12 var10)) (= var18 var11)) (= var17 var6)) (= var7 var19)) (= var1 var9)))))) (inv_main38 var16 var0 var2 var13 var5 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (inv_main25 var3 var5 var0 var1 var6 var4 var2)) (inv_main25 var3 var5 var0 var1 var6 var4 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 node) (var10 Int) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr)) (or (not (and (inv_main18 var4 var6 var12 var2 var19 var5) (and (= var3 nullAddr) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var13 (O_node var9)))) (= var10 var17)) (= var0 var16)) (= var1 var14)) (= var18 var8)) (= var15 var7)) (= var3 (newAddr (alloc var13 (O_node var9))))) (and (and (and (and (and (= var13 (write var4 var5 (O_node (node 1 (n (getnode (read var4 var5))))))) (= var17 var6)) (= var16 var12)) (= var14 var2)) (= var8 var19)) (= var7 var5)))))) (inv_main25 var11 var10 var0 var1 var3 var15 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main51 var4 var6 var0 var2 var10 var5) (and (= var9 2) (and (and (and (and (and (and (= var3 var4) (= var12 var6)) (= var8 var0)) (= var7 var2)) (= var11 var10)) (= var1 var5)) (= var9 (h (getnode (read var4 var5)))))))) (inv_main59 var3 var12 (+ var8 1) var7 var11 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr)) (or (not (and (inv_main28 var6 var8 var1 var5 var11 var7) (and (and (and (and (and (and (= var9 var6) (= var0 var8)) (= var10 var1)) (= var12 var5)) (= var2 var11)) (= var4 var7)) (= var3 (n (getnode (read var6 var7))))))) (inv_main13 var9 var0 var10 var12 var2 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 node) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main4 var6 var7 var2) (and (not (= var8 nullAddr)) (and (and (and (= var3 (newHeap (alloc var6 (O_node var4)))) (= var0 var7)) (= var5 var2)) (= var8 (newAddr (alloc var6 (O_node var4)))))))) (inv_main13 var3 var0 var5 var8 var1 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int)) (or (not (and (inv_main56 var5 var7 var2 var3 var10 var6) (and (or (not (= var0 3)) (<= 0 (+ (+ 20 (* (- 1) (+ var9 var12))) (- 1)))) (and (and (and (and (and (and (= var11 var5) (= var9 var7)) (= var12 var2)) (= var1 var3)) (= var4 var10)) (= var8 var6)) (= var0 (h (getnode (read var5 var6)))))))) (inv_main62 var11 var9 var12 var1 var4 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main38 var2 var4 var0 var1 var5 var3)) (inv_main44 (write var2 var3 (O_node (node (h (getnode (read var2 var3))) var5))) var4 var0 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main22 var2 var4 var0 var1 var5 var3)) (inv_main28 (write var2 var3 (O_node (node (h (getnode (read var2 var3))) var5))) var4 var0 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr)) (or (not (and (inv_main51 var8 var10 var1 var5 var11 var9) (and (not (= var7 2)) (and (and (and (and (and (and (= var4 var8) (= var6 var10)) (= var0 var1)) (= var2 var5)) (= var3 var11)) (= var12 var9)) (= var7 (h (getnode (read var8 var9)))))))) (inv_main56 var4 var6 var0 var2 var3 var12)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (inv_main41 var3 var5 var0 var1 var6 var4 var2)) (inv_main41 var3 var5 var0 var1 var6 var4 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Heap) (var15 node) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr)) (or (not (and (inv_main34 var8 var10 var11 var6 var19 var9) (and (= var5 nullAddr) (and (and (and (and (and (and (and (= var16 (newHeap (alloc var14 (O_node var15)))) (= var0 var12)) (= var2 var18)) (= var13 var17)) (= var3 var7)) (= var4 var1)) (= var5 (newAddr (alloc var14 (O_node var15))))) (and (and (and (and (and (= var14 (write var8 var9 (O_node (node 2 (n (getnode (read var8 var9))))))) (= var12 var10)) (= var18 var11)) (= var17 var6)) (= var7 var19)) (= var1 var9)))))) (inv_main41 var16 var0 var2 var13 var5 var4 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main30 var2 var4 var0 var1 var5 var3)) (inv_main46 (write var2 var3 (O_node (node 3 (n (getnode (read var2 var3)))))) var4 var0 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (inv_main9 var2 var3 var0 var1 var4)) (inv_main9 var2 var3 var0 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 node) (var3 Heap) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr)) (or (not (and (inv_main4 var4 var5 var1) (and (= var7 nullAddr) (and (and (and (= var3 (newHeap (alloc var4 (O_node var2)))) (= var0 var5)) (= var6 var1)) (= var7 (newAddr (alloc var4 (O_node var2)))))))) (inv_main9 var3 var0 var6 var7 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 node) (var10 Int) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr)) (or (not (and (inv_main18 var4 var6 var12 var2 var19 var5) (and (not (= var3 nullAddr)) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var13 (O_node var9)))) (= var10 var17)) (= var0 var16)) (= var1 var14)) (= var18 var8)) (= var15 var7)) (= var3 (newAddr (alloc var13 (O_node var9))))) (and (and (and (and (and (= var13 (write var4 var5 (O_node (node 1 (n (getnode (read var4 var5))))))) (= var17 var6)) (= var16 var12)) (= var14 var2)) (= var8 var19)) (= var7 var5)))))) (inv_main22 var11 var10 var0 var1 var3 var15)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main14 var3 var5 var0 var2 var6 var4) (and (not (= var1 0)) (<= 0 (+ (+ 10 (* (- 1) var0)) (- 1)))))) (inv_main34 var3 var5 (+ var0 1) var2 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main13 var3 var5 var1 var2 var6 var4) (and (not (= var0 0)) (<= 0 (+ (+ 10 (* (- 1) var5)) (- 1)))))) (inv_main18 var3 (+ var5 1) var1 var2 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap)) (or (not (and (inv_main54 var6 var8 var1 var4 var10 var7) (and (and (and (and (and (and (= var12 var6) (= var9 var8)) (= var11 var1)) (= var5 var4)) (= var0 var10)) (= var2 var7)) (= var3 (n (getnode (read var6 var7))))))) (inv_main50 var12 var9 var11 var5 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap)) (or (not (and (inv_main46 var5 var7 var2 var3 var10 var6) (and (and (and (and (and (= var11 (write var5 var6 (O_node (node (h (getnode (read var5 var6))) 0)))) (= var9 var7)) (= var1 var2)) (= var4 var3)) (= var8 var10)) (= var0 var6)))) (inv_main50 var11 0 0 var4 var8 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main66 var5 var7 var2 var3 var12 var6) (and (not (= var8 nullAddr)) (and (and (and (and (and (and (= var1 var5) (= var9 var7)) (= var4 var2)) (= var0 var3)) (= var11 var12)) (= var10 var6)) (= var8 (n (getnode (read var5 var6)))))))) (inv_main68 var1 var9 var4 var0 var11 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (and (inv_main14 var2 var4 var0 var1 var5 var3) (not (<= 0 (+ (+ 10 (* (- 1) var0)) (- 1)))))) (inv_main30 var2 var4 var0 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main14 var3 var5 var1 var2 var6 var4) (and (= var0 0) (<= 0 (+ (+ 10 (* (- 1) var1)) (- 1)))))) (inv_main30 var3 var5 var1 var2 var6 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr)) (or (not (and (inv_main56 var8 var10 var2 var4 var12 var9) (and (and (= var0 3) (not (<= 0 (+ (+ 20 (* (- 1) (+ var7 var6))) (- 1))))) (and (and (and (and (and (and (= var5 var8) (= var7 var10)) (= var6 var2)) (= var3 var4)) (= var11 var12)) (= var1 var9)) (= var0 (h (getnode (read var8 var9)))))))) (inv_main66 var5 var7 var6 var3 var11 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main68 var5 var7 var12 var3 var18 var6) (and (and (and (and (and (and (and (= var14 var5) (= var16 var7)) (= var11 var12)) (= var0 var3)) (= var1 var18)) (= var9 var6)) (= var15 (n (getnode (read var5 var6))))) (and (and (and (and (and (= var2 (write var14 var9 defObj)) (= var4 var16)) (= var8 var11)) (= var13 var0)) (= var17 var15)) (= var10 var9))))) (inv_main66 var2 var4 var8 var13 var17 var17)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main44 var6 var8 var1 var2 var11 var7) (and (and (and (and (and (and (= var9 var6) (= var5 var8)) (= var3 var1)) (= var0 var2)) (= var10 var11)) (= var12 var7)) (= var4 (n (getnode (read var6 var7))))))) (inv_main14 var9 var5 var3 var0 var10 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (and (inv_main13 var2 var4 var0 var1 var5 var3) (not (<= 0 (+ (+ 10 (* (- 1) var4)) (- 1)))))) (inv_main14 var2 var4 var0 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main13 var3 var5 var0 var2 var6 var4) (and (= var1 0) (<= 0 (+ (+ 10 (* (- 1) var5)) (- 1)))))) (inv_main14 var3 var5 var0 var2 var6 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main18 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main22 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main28 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main34 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main38 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main44 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main30 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main46 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main50 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main54 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main51 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main59 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main56 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (inv_main62 var2 var4 var0 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main66 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main68 var2 var4 var0 var1 var5 var3) (not (is-O_node (read var2 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/list-ext_1.i.smt2 b/heap-theory-benchmarks/heap/list-ext_1.i.smt2 new file mode 100644 index 00000000..e385b81d --- /dev/null +++ b/heap-theory-benchmarks/heap/list-ext_1.i.smt2 @@ -0,0 +1,90 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main13 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main14 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main30 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main56 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main68 (Heap Int Int Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 0 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main51 var5 var8 var0 var1 var2 var7) (and (not (= var4 2)) (and (and (and (and (and (and (= var3 var5) (= var6 var8)) (= var12 var0)) (= var10 var1)) (= var9 var2)) (= var11 var7)) (= var4 (h (getnode (read var5 var7)))))))) (inv_main56 var3 var6 var12 var10 var9 var11)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main25 var3 var6 var0 var1 var2 var4 var5)) (inv_main25 var3 var6 var0 var1 var2 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 node) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Addr)) (or (not (and (inv_main18 var15 var8 var2 var13 var5 var7) (and (= var9 nullAddr) (and (and (and (and (and (and (and (= var18 (newHeap (alloc var4 (O_node var6)))) (= var11 var14)) (= var1 var12)) (= var17 var10)) (= var16 var0)) (= var3 var19)) (= var9 (newAddr (alloc var4 (O_node var6))))) (and (and (and (and (and (= var4 (write var15 var7 (O_node (node 1 (n (getnode (read var15 var7))))))) (= var14 var8)) (= var12 var2)) (= var10 var13)) (= var0 var5)) (= var19 var7)))))) (inv_main25 var18 var11 var1 var17 var9 var3 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Int)) (or (not (and (inv_main54 var4 var12 var0 var1 var2 var9) (and (and (and (and (and (and (= var10 var4) (= var11 var12)) (= var8 var0)) (= var7 var1)) (= var6 var2)) (= var3 var9)) (= var5 (n (getnode (read var4 var9))))))) (inv_main50 var10 var11 var8 var7 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Addr)) (or (not (and (inv_main46 var5 var9 var0 var2 var3 var7) (and (and (and (and (and (= var8 (write var5 var7 (O_node (node (h (getnode (read var5 var7))) 0)))) (= var1 var9)) (= var4 var0)) (= var11 var2)) (= var10 var3)) (= var6 var7)))) (inv_main50 var8 0 0 var11 var10 var11)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int)) (or (not (and (inv_main51 var5 var10 var1 var2 var3 var8) (and (= var4 2) (and (and (and (and (and (and (= var7 var5) (= var12 var10)) (= var9 var1)) (= var11 var2)) (= var6 var3)) (= var0 var8)) (= var4 (h (getnode (read var5 var8)))))))) (inv_main59 var7 var12 (+ var9 1) var11 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap)) (or (not (and (inv_main50 var6 var11 var1 var2 var3 var9) (and (not (= var5 1)) (and (and (and (and (and (and (= var12 var6) (= var10 var11)) (= var8 var1)) (= var4 var2)) (= var7 var3)) (= var0 var9)) (= var5 (h (getnode (read var6 var9)))))))) (inv_main51 var12 var10 var8 var4 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main59 var7 var10 var1 var3 var4 var9) (and (and (and (and (and (and (= var11 var7) (= var6 var10)) (= var8 var1)) (= var0 var3)) (= var2 var4)) (= var12 var9)) (= var5 (n (getnode (read var7 var9))))))) (inv_main51 var11 var6 var8 var0 var2 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main50 var4 var11 var0 var2 var3 var9) (and (= var8 1) (and (and (and (and (and (and (= var5 var4) (= var10 var11)) (= var7 var0)) (= var6 var2)) (= var1 var3)) (= var12 var9)) (= var8 (h (getnode (read var4 var9)))))))) (inv_main54 var5 (+ var10 1) var7 var6 var1 var12)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main66 var6 var11 var1 var4 var5 var10) (and (not (= var3 nullAddr)) (and (and (and (and (and (and (= var0 var6) (= var8 var11)) (= var9 var1)) (= var7 var4)) (= var2 var5)) (= var12 var10)) (= var3 (n (getnode (read var6 var10)))))))) (inv_main68 var0 var8 var9 var7 var2 var12)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int)) (or (not (and (inv_main14 var4 var6 var0 var1 var2 var5) (and (not (= var3 0)) (<= 0 (+ (+ 10 (* (- 1) var0)) (- 1)))))) (inv_main34 var4 var6 (+ var0 1) var1 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int)) (or (not (and (inv_main56 var6 var10 var2 var3 var4 var8) (and (and (= var9 3) (not (<= 0 (+ (+ (+ var12 var11) (- 20)) (- 1))))) (and (and (and (and (and (and (= var7 var6) (= var12 var10)) (= var11 var2)) (= var0 var3)) (= var1 var4)) (= var5 var8)) (= var9 (h (getnode (read var6 var8)))))))) (inv_main66 var7 var12 var11 var0 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Heap) (var18 Int)) (or (not (and (inv_main68 var16 var11 var1 var14 var3 var7) (and (and (and (and (and (and (and (= var8 var16) (= var0 var11)) (= var10 var1)) (= var15 var14)) (= var5 var3)) (= var2 var7)) (= var9 (n (getnode (read var16 var7))))) (and (and (and (and (and (= var17 (write var8 var2 defObj)) (= var4 var0)) (= var18 var10)) (= var13 var15)) (= var6 var9)) (= var12 var2))))) (inv_main66 var17 var4 var18 var13 var6 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main44 var7 var11 var0 var3 var4 var8) (and (and (and (and (and (and (= var5 var7) (= var9 var11)) (= var6 var0)) (= var12 var3)) (= var1 var4)) (= var2 var8)) (= var10 (n (getnode (read var7 var8))))))) (inv_main14 var5 var9 var6 var12 var1 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (and (inv_main13 var3 var5 var0 var1 var2 var4) (not (<= 0 (+ (+ 10 (* (- 1) var5)) (- 1)))))) (inv_main14 var3 var5 var0 var1 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main13 var3 var6 var0 var1 var2 var5) (and (= var4 0) (<= 0 (+ (+ 10 (* (- 1) var6)) (- 1)))))) (inv_main14 var3 var6 var0 var1 var2 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (inv_main9 var2 var3 var0 var1 var4)) (inv_main9 var2 var3 var0 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 node) (var5 Heap) (var6 Int) (var7 Int)) (or (not (and (inv_main4 var3 var6 var0) (and (= var2 nullAddr) (and (and (and (= var5 (newHeap (alloc var3 (O_node var4)))) (= var7 var6)) (= var1 var0)) (= var2 (newAddr (alloc var3 (O_node var4)))))))) (inv_main9 var5 var7 var1 var2 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (inv_main38 var3 var5 var0 var1 var2 var4)) (inv_main44 (write var3 var4 (O_node (node (h (getnode (read var3 var4))) var2))) var5 var0 var1 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (inv_main41 var3 var6 var0 var1 var2 var5 var4)) (inv_main41 var3 var6 var0 var1 var2 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 node) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Heap) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr)) (or (not (and (inv_main34 var15 var8 var1 var12 var3 var6) (and (= var10 nullAddr) (and (and (and (and (and (and (and (= var16 (newHeap (alloc var14 (O_node var5)))) (= var13 var11)) (= var9 var18)) (= var7 var0)) (= var4 var2)) (= var19 var17)) (= var10 (newAddr (alloc var14 (O_node var5))))) (and (and (and (and (and (= var14 (write var15 var6 (O_node (node 2 (n (getnode (read var15 var6))))))) (= var11 var8)) (= var18 var1)) (= var0 var12)) (= var2 var3)) (= var17 var6)))))) (inv_main41 var16 var13 var9 var7 var10 var19 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (inv_main22 var3 var5 var0 var1 var2 var4)) (inv_main28 (write var3 var4 (O_node (node (h (getnode (read var3 var4))) var2))) var5 var0 var1 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 node) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Addr)) (or (not (and (inv_main18 var15 var8 var2 var13 var5 var7) (and (not (= var9 nullAddr)) (and (and (and (and (and (and (and (= var18 (newHeap (alloc var4 (O_node var6)))) (= var11 var14)) (= var1 var12)) (= var17 var10)) (= var16 var0)) (= var3 var19)) (= var9 (newAddr (alloc var4 (O_node var6))))) (and (and (and (and (and (= var4 (write var15 var7 (O_node (node 1 (n (getnode (read var15 var7))))))) (= var14 var8)) (= var12 var2)) (= var10 var13)) (= var0 var5)) (= var19 var7)))))) (inv_main22 var18 var11 var1 var17 var9 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap)) (or (not (and (inv_main28 var6 var10 var0 var3 var4 var8) (and (and (and (and (and (and (= var12 var6) (= var2 var10)) (= var1 var0)) (= var9 var3)) (= var7 var4)) (= var11 var8)) (= var5 (n (getnode (read var6 var8))))))) (inv_main13 var12 var2 var1 var9 var7 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 node) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main4 var1 var7 var0) (and (not (= var4 nullAddr)) (and (and (and (= var8 (newHeap (alloc var1 (O_node var3)))) (= var6 var7)) (= var2 var0)) (= var4 (newAddr (alloc var1 (O_node var3)))))))) (inv_main13 var8 var6 var2 var4 var5 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int)) (or (not (and (inv_main56 var5 var10 var0 var1 var2 var8) (and (or (not (= var3 3)) (<= 0 (+ (+ (+ var9 var12) (- 20)) (- 1)))) (and (and (and (and (and (and (= var7 var5) (= var9 var10)) (= var12 var0)) (= var6 var1)) (= var4 var2)) (= var11 var8)) (= var3 (h (getnode (read var5 var8)))))))) (inv_main62 var7 var9 var12 var6 var4 var11)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (and (inv_main14 var3 var5 var0 var1 var2 var4) (not (<= 0 (+ (+ 10 (* (- 1) var0)) (- 1)))))) (inv_main30 var3 var5 var0 var1 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main14 var3 var6 var0 var1 var2 var5) (and (= var4 0) (<= 0 (+ (+ 10 (* (- 1) var0)) (- 1)))))) (inv_main30 var3 var6 var0 var1 var2 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (inv_main30 var3 var5 var0 var1 var2 var4)) (inv_main46 (write var3 var4 (O_node (node 3 (n (getnode (read var3 var4)))))) var5 var0 var1 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 node) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Heap) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr)) (or (not (and (inv_main34 var15 var8 var1 var12 var3 var6) (and (not (= var10 nullAddr)) (and (and (and (and (and (and (and (= var16 (newHeap (alloc var14 (O_node var5)))) (= var13 var11)) (= var9 var18)) (= var7 var0)) (= var4 var2)) (= var19 var17)) (= var10 (newAddr (alloc var14 (O_node var5))))) (and (and (and (and (and (= var14 (write var15 var6 (O_node (node 2 (n (getnode (read var15 var6))))))) (= var11 var8)) (= var18 var1)) (= var0 var12)) (= var2 var3)) (= var17 var6)))))) (inv_main38 var16 var13 var9 var7 var10 var19)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int)) (or (not (and (inv_main13 var3 var6 var0 var1 var2 var4) (and (not (= var5 0)) (<= 0 (+ (+ 10 (* (- 1) var6)) (- 1)))))) (inv_main18 var3 (+ var6 1) var0 var1 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main18 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main22 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main28 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main34 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main38 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main44 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main30 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main46 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main50 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main54 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main51 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main59 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main56 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (inv_main62 var3 var5 var0 var1 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main66 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int)) (not (and (inv_main68 var3 var5 var0 var1 var2 var4) (not (is-O_node (read var3 var4))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/list-ext_flag_1.i.smt2 b/heap-theory-benchmarks/heap/list-ext_flag_1.i.smt2 new file mode 100644 index 00000000..5b11e29a --- /dev/null +++ b/heap-theory-benchmarks/heap/list-ext_flag_1.i.smt2 @@ -0,0 +1,90 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (flag Int) (n Addr)) + ) +)) +(declare-fun inv_main13 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main19 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main20 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main3 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main37 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main9 (Heap Addr Addr Addr Int) Bool) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (= var3 emptyHeap)) (inv_main3 var3 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main56 var0 var5 var4 var3 var8) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var7 var0) (= var10 var5)) (= var2 var4)) (= var9 var3)) (= var1 var8)) (= var6 (n (getnode (read var0 var5)))))))) (inv_main58 var7 var10 var2 var9 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var1 var6 var5 var4 var9) (and (= var7 1) (and (and (and (and (and (= var10 var1) (= var0 var6)) (= var8 var5)) (= var2 var4)) (= var3 var9)) (= var7 (h (getnode (read var1 var6)))))))) (inv_main41 var10 var0 var8 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int)) (or (not (and (inv_main43 var1 var7 var5 var4 var10) (and (= var3 2) (and (and (and (and (and (= var9 var1) (= var8 var7)) (= var2 var5)) (= var6 var4)) (= var0 var10)) (= var3 (h (getnode (read var1 var7)))))))) (inv_main41 var9 var8 var2 var6 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int)) (or (not (inv_main29 var0 var4 var2 var1 var5 var3)) (inv_main29 var0 var4 var2 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 node) (var14 Addr) (var15 Addr) (var16 Heap)) (or (not (and (inv_main22 var2 var14 var12 var11 var7) (and (and (= var1 nullAddr) (and (and (and (and (and (= var5 (newHeap (alloc var16 (O_node var13)))) (= var9 var10)) (= var4 var15)) (= var6 var8)) (= var3 var0)) (= var1 (newAddr (alloc var16 (O_node var13)))))) (and (and (and (and (= var16 (write var2 var14 (O_node (node 1 (flag (getnode (read var2 var14))) (n (getnode (read var2 var14))))))) (= var10 var14)) (= var15 var12)) (= var8 var11)) (= var0 var7))))) (inv_main29 var5 var9 var4 var1 var3 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 node) (var15 Addr) (var16 Int)) (or (not (and (inv_main23 var1 var13 var12 var11 var6) (and (and (= var7 nullAddr) (and (and (and (and (and (= var10 (newHeap (alloc var9 (O_node var14)))) (= var5 var8)) (= var4 var15)) (= var3 var0)) (= var16 var2)) (= var7 (newAddr (alloc var9 (O_node var14)))))) (and (and (and (and (= var9 (write var1 var13 (O_node (node 2 (flag (getnode (read var1 var13))) (n (getnode (read var1 var13))))))) (= var8 var13)) (= var15 var12)) (= var0 var11)) (= var2 var6))))) (inv_main29 var10 var5 var4 var7 var16 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int)) (or (not (inv_main20 var0 var3 var2 var1 var5)) (inv_main19 (write var0 var3 (O_node (node (h (getnode (read var0 var3))) var4 (n (getnode (read var0 var3)))))) var3 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main39 var0 var3 var2 var1 var4) (not (= (flag (getnode (read var0 var3))) 0)))) (inv_main42 var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main37 var1 var5 var4 var3 var9) (and (= var7 3) (and (and (and (and (and (= var2 var1) (= var10 var5)) (= var8 var4)) (= var6 var3)) (= var0 var9)) (= var7 (h (getnode (read var1 var5)))))))) (inv_main38 var2 var10 var8 var6 var0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main38 var1 var6 var5 var4 var8) (and (and (= var9 3) (not (<= 0 (+ (+ var10 (- 20)) (- 1))))) (and (and (and (and (and (= var0 var1) (= var3 var6)) (= var2 var5)) (= var7 var4)) (= var10 var8)) (= var9 (h (getnode (read var1 var6)))))))) (inv_main56 var0 var2 var2 var7 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr)) (or (not (and (inv_main58 var1 var12 var11 var10 var6) (and (and (and (and (and (and (= var7 var1) (= var4 var12)) (= var3 var11)) (= var5 var10)) (= var2 var6)) (= var15 (n (getnode (read var1 var12))))) (and (and (and (and (= var9 (write var7 var4 defObj)) (= var13 var4)) (= var0 var3)) (= var8 var15)) (= var14 var2))))) (inv_main56 var9 var8 var0 var8 var14)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main19 var0 var3 var2 var1 var4) (= (flag (getnode (read var0 var3))) 0))) (inv_main23 var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 node)) (or (not (and (inv_main22 var3 var14 var12 var11 var6) (and (and (not (= var8 nullAddr)) (and (and (and (and (and (= var4 (newHeap (alloc var0 (O_node var16)))) (= var2 var1)) (= var9 var5)) (= var15 var13)) (= var7 var10)) (= var8 (newAddr (alloc var0 (O_node var16)))))) (and (and (and (and (= var0 (write var3 var14 (O_node (node 1 (flag (getnode (read var3 var14))) (n (getnode (read var3 var14))))))) (= var1 var14)) (= var5 var12)) (= var13 var11)) (= var10 var6))))) (inv_main26 var4 var2 var9 var8 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int) (var7 node) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main23 var1 var11 var10 var9 var6) (and (and (not (= var15 nullAddr)) (and (and (and (and (and (= var3 (newHeap (alloc var5 (O_node var7)))) (= var12 var0)) (= var8 var13)) (= var4 var2)) (= var14 var16)) (= var15 (newAddr (alloc var5 (O_node var7)))))) (and (and (and (and (= var5 (write var1 var11 (O_node (node 2 (flag (getnode (read var1 var11))) (n (getnode (read var1 var11))))))) (= var0 var11)) (= var13 var10)) (= var2 var9)) (= var16 var6))))) (inv_main26 var3 var12 var8 var15 var14)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main9 var0 var3 var2 var1 var4)) (inv_main9 var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 node) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main3 var2 var7 var5 var4) (and (= var0 nullAddr) (and (and (and (and (= var9 (newHeap (alloc var2 (O_node var6)))) (= var8 var7)) (= var3 var5)) (= var1 var4)) (= var0 (newAddr (alloc var2 (O_node var6)))))))) (inv_main9 var9 var8 var0 var1 1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main34 var0 var4 var3 var2 var9) (and (and (and (and (= var6 (write var0 var4 (O_node (node (h (getnode (read var0 var4))) (flag (getnode (read var0 var4))) 0)))) (= var8 var4)) (= var7 var3)) (= var5 var2)) (= var1 var9)))) (inv_main37 var6 var7 var7 var5 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main41 var0 var5 var3 var2 var10) (and (and (and (and (and (= var8 var0) (= var1 var5)) (= var7 var3)) (= var6 var2)) (= var4 var10)) (= var9 (n (getnode (read var0 var5))))))) (inv_main37 var8 var9 var7 var6 (+ var4 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main26 var0 var3 var2 var1 var4)) (inv_main32 (write var0 var3 (O_node (node (h (getnode (read var0 var3))) (flag (getnode (read var0 var3))) var1))) var3 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var0 var7 var6 var5 var9) (and (not (= var4 1)) (and (and (and (and (and (= var10 var0) (= var1 var7)) (= var2 var6)) (= var3 var5)) (= var8 var9)) (= var4 (h (getnode (read var0 var7)))))))) (inv_main64 var10 var1 var2 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int)) (or (not (and (inv_main43 var1 var5 var3 var2 var8) (and (not (= var10 2)) (and (and (and (and (and (= var7 var1) (= var4 var5)) (= var0 var3)) (= var9 var2)) (= var6 var8)) (= var10 (h (getnode (read var1 var5)))))))) (inv_main64 var7 var4 var0 var9 var6)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int)) (or (not (and (inv_main38 var0 var4 var3 var2 var8) (and (or (not (= var5 3)) (<= 0 (+ (+ var10 (- 20)) (- 1)))) (and (and (and (and (and (= var1 var0) (= var6 var4)) (= var9 var3)) (= var7 var2)) (= var10 var8)) (= var5 (h (getnode (read var0 var4)))))))) (inv_main64 var1 var6 var9 var7 var10)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main39 var0 var3 var2 var1 var4) (= (flag (getnode (read var0 var3))) 0))) (inv_main43 var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr)) (or (not (and (inv_main37 var1 var6 var4 var3 var9) (and (not (= var5 3)) (and (and (and (and (and (= var7 var1) (= var10 var6)) (= var2 var4)) (= var0 var3)) (= var8 var9)) (= var5 (h (getnode (read var1 var6)))))))) (inv_main39 var7 var10 var2 var0 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main13 var0 var3 var2 var1 var4) (not (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1)))))) (inv_main14 var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main13 var1 var4 var3 var2 var5) (and (= var0 0) (<= 0 (+ (+ 20 (* (- 1) var5)) (- 1)))))) (inv_main14 var1 var4 var3 var2 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main19 var0 var3 var2 var1 var4) (not (= (flag (getnode (read var0 var3))) 0)))) (inv_main22 var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int)) (or (not (and (inv_main32 var1 var8 var7 var6 var10) (and (and (and (and (and (= var2 var1) (= var5 var8)) (= var9 var7)) (= var0 var6)) (= var3 var10)) (= var4 (n (getnode (read var1 var8))))))) (inv_main13 var2 var4 var9 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 node) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main3 var2 var7 var5 var4) (and (not (= var0 nullAddr)) (and (and (and (and (= var9 (newHeap (alloc var2 (O_node var6)))) (= var8 var7)) (= var3 var5)) (= var1 var4)) (= var0 (newAddr (alloc var2 (O_node var6)))))))) (inv_main13 var9 var0 var0 var1 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int)) (or (not (and (inv_main13 var0 var3 var2 var1 var5) (and (not (= var4 0)) (<= 0 (+ (+ 20 (* (- 1) var5)) (- 1)))))) (inv_main20 var0 var3 var2 var1 (+ var5 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main14 var0 var3 var2 var1 var4)) (inv_main34 (write var0 var3 (O_node (node 3 (flag (getnode (read var0 var3))) (n (getnode (read var0 var3)))))) var3 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main20 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main19 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main22 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main23 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main26 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main32 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main14 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main34 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main37 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main39 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main42 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main43 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main41 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main38 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main56 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main58 var0 var3 var2 var1 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int)) (not (inv_main64 var0 var3 var2 var1 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/list_and_tree_cnstr-1.i.smt2 b/heap-theory-benchmarks/heap/list_and_tree_cnstr-1.i.smt2 new file mode 100644 index 00000000..eb372487 --- /dev/null +++ b/heap-theory-benchmarks/heap/list_and_tree_cnstr-1.i.smt2 @@ -0,0 +1,169 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0) (TreeNode 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (O_TreeNode (getTreeNode TreeNode)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) + ( + (TreeNode (left Addr) (right Addr)) + ) +)) +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main102 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main103 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main107 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(declare-fun inv_main63 (Heap Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main68 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main69 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main74 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main77 (Heap Addr Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main80 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main82 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main88 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main91 (Heap Addr Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main94 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main97 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main98 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main99 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main46 var2 var0 var3 var4 var1) (not (= var1 nullAddr)))) (inv_main49 var2 var0 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main46 var3 var1 var7 var8 var2) (and (not (= var4 0)) (and (= var2 nullAddr) (and (and (and (and (= var9 var3) (= var5 var1)) (= var6 var7)) (= var0 var8)) (= var4 (right (getTreeNode (read var3 var7))))))))) (inv_main49 var9 var5 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr)) (or (not (and (inv_main98 var12 var11 var2 var7 var6 var5 var10) (and (not (= var13 1)) (and (and (and (and (and (and (and (= var4 var12) (= var9 var11)) (= var0 var2)) (= var14 var7)) (= var1 var6)) (= var3 var5)) (= var8 var10)) (= var13 (h (getnode (read var12 var10)))))))) (inv_main102 var4 var9 var0 var14 var1 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr)) (or (not (and (inv_main98 var10 var9 var2 var6 var5 var4 var7) (and (= var8 1) (and (and (and (and (and (and (and (= var13 var10) (= var12 var9)) (= var3 var2)) (= var0 var6)) (= var11 var5)) (= var1 var4)) (= var14 var7)) (= var8 (h (getnode (read var10 var7)))))))) (inv_main103 var13 var12 var3 var0 var11 var1 var14)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main4 var1 var0 var2)) (inv_main5 (write var1 var0 (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var1 var0)))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (inv_main91 var1 var0 var2 var5 var4 var3 var7 var6)) (inv_main91 var1 var0 var2 var5 var4 var3 var7 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 node) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr)) (or (not (and (inv_main83 var18 var17 var6 var10 var9 var8 var15) (and (= var11 nullAddr) (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var2 (O_node var5)))) (= var4 var3)) (= var19 var13)) (= var12 var7)) (= var0 var22)) (= var20 var14)) (= var16 var21)) (= var11 (newAddr (alloc var2 (O_node var5))))) (and (and (and (and (and (and (= var2 (write var18 var15 (O_node (node 2 (n (getnode (read var18 var15))))))) (= var3 var17)) (= var13 var6)) (= var7 var10)) (= var22 var9)) (= var14 var8)) (= var21 var15)))))) (inv_main91 var1 var4 var19 var12 var0 var11 var16 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 node) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr)) (or (not (and (inv_main83 var18 var17 var6 var10 var9 var8 var15) (and (not (= var11 nullAddr)) (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var2 (O_node var5)))) (= var4 var3)) (= var19 var13)) (= var12 var7)) (= var0 var22)) (= var20 var14)) (= var16 var21)) (= var11 (newAddr (alloc var2 (O_node var5))))) (and (and (and (and (and (and (= var2 (write var18 var15 (O_node (node 2 (n (getnode (read var18 var15))))))) (= var3 var17)) (= var13 var6)) (= var7 var10)) (= var22 var9)) (= var14 var8)) (= var21 var15)))))) (inv_main88 var1 var4 var19 var12 var0 var11 var16)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Heap)) (or (not (and (inv_main94 var12 var10 var3 var6 var5 var4 var8) (and (and (and (and (and (and (and (= var14 var12) (= var9 var10)) (= var0 var3)) (= var13 var6)) (= var7 var5)) (= var2 var4)) (= var11 var8)) (= var1 (n (getnode (read var12 var8))))))) (inv_main68 var14 var9 var0 var13 var7 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main80 var11 var10 var2 var5 var4 var3 var8) (and (= var12 0) (and (and (and (and (and (and (and (= var9 var11) (= var1 var10)) (= var14 var2)) (= var13 var5)) (= var0 var4)) (= var15 var3)) (= var6 var8)) (= var7 (n (getnode (read var11 var8)))))))) (inv_main68 var9 var1 var14 var13 var0 var15 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 node) (var9 Addr) (var10 Heap) (var11 Addr)) (or (not (and (inv_main39 var4 var2 var6 var9) (and (and (= var1 0) (and (not (= var5 nullAddr)) (and (and (and (and (= var10 (newHeap (alloc var4 (O_node var8)))) (= var3 var2)) (= var11 var6)) (= var7 var9)) (= var5 (newAddr (alloc var4 (O_node var8))))))) (= var2 nullAddr)))) (inv_main68 var10 var3 var11 var7 var5 var0 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main68 var2 var1 var3 var6 var5 var4 var7) (not (= var0 0)))) (inv_main83 var2 var1 var3 var6 var5 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main35 var1 var0 var2)) (inv_main37 (write var1 (right (getTreeNode (read var1 var2))) (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var1 (right (getTreeNode (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main74 var1 var0 var2 var5 var4 var3 var6)) (inv_main80 (write var1 var6 (O_node (node (h (getnode (read var1 var6))) var3))) var0 var2 var5 var4 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main29 var1 var0 var2)) (inv_main21 (write var1 (left (getTreeNode (read var1 var2))) (O_TreeNode (TreeNode (left (getTreeNode (read var1 (left (getTreeNode (read var1 var2)))))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main11 var1 var0 var4) (and (= var3 0) (and (and (and (= var5 var1) (= var2 var0)) (= var6 var4)) (or (and (= (left (getTreeNode (read var1 var4))) nullAddr) (= var3 1)) (and (not (= (left (getTreeNode (read var1 var4))) nullAddr)) (= var3 0))))))) (inv_main21 var5 var2 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main11 var3 var1 var4) (and (= var5 0) (and (not (= var7 0)) (and (and (and (= var0 var3) (= var6 var1)) (= var2 var4)) (or (and (= (left (getTreeNode (read var3 var4))) nullAddr) (= var7 1)) (and (not (= (left (getTreeNode (read var3 var4))) nullAddr)) (= var7 0)))))))) (inv_main21 var0 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 node) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Heap)) (or (not (and (inv_main69 var16 var15 var3 var6 var5 var4 var12) (and (not (= var9 nullAddr)) (and (and (and (and (and (and (and (and (= var22 (newHeap (alloc var10 (O_node var8)))) (= var7 var11)) (= var19 var0)) (= var1 var2)) (= var18 var17)) (= var14 var20)) (= var13 var21)) (= var9 (newAddr (alloc var10 (O_node var8))))) (and (and (and (and (and (and (= var10 (write var16 var12 (O_node (node 1 (n (getnode (read var16 var12))))))) (= var11 var15)) (= var0 var3)) (= var2 var6)) (= var17 var5)) (= var20 var4)) (= var21 var12)))))) (inv_main74 var22 var7 var19 var1 var18 var9 var13)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main50 var3 var2 var4 var6) (and (and (and (and (= var8 var3) (= var5 var2)) (= var1 var4)) (= var7 var6)) (= var0 (left (getTreeNode (read var3 var4))))))) (inv_main43 var8 var5 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main51 var2 var0 var4 var6) (and (and (and (and (= var1 var2) (= var5 var0)) (= var3 var4)) (= var7 var6)) (= var8 (right (getTreeNode (read var2 var4))))))) (inv_main43 var1 var5 var8 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main39 var1 var0 var4 var6) (and (not (= var0 nullAddr)) (and (and (and (= var2 var1) (= var3 var0)) (= var5 var4)) (= var7 nullAddr))))) (inv_main43 var2 var3 var3 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main63 var1 var0 var3 var5 var4 var2)) (inv_main63 var1 var0 var3 var5 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 node) (var9 Heap)) (or (not (and (inv_main39 var3 var2 var5 var6) (and (and (= var0 nullAddr) (and (and (and (and (= var9 (newHeap (alloc var3 (O_node var8)))) (= var7 var2)) (= var1 var5)) (= var4 var6)) (= var0 (newAddr (alloc var3 (O_node var8)))))) (= var2 nullAddr)))) (inv_main63 var9 var7 var1 var4 var0 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (inv_main77 var1 var0 var2 var5 var4 var3 var7 var6)) (inv_main77 var1 var0 var2 var5 var4 var3 var7 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 node) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Heap)) (or (not (and (inv_main69 var16 var15 var3 var6 var5 var4 var12) (and (= var9 nullAddr) (and (and (and (and (and (and (and (and (= var22 (newHeap (alloc var10 (O_node var8)))) (= var7 var11)) (= var19 var0)) (= var1 var2)) (= var18 var17)) (= var14 var20)) (= var13 var21)) (= var9 (newAddr (alloc var10 (O_node var8))))) (and (and (and (and (and (and (= var10 (write var16 var12 (O_node (node 1 (n (getnode (read var16 var12))))))) (= var11 var15)) (= var0 var3)) (= var2 var6)) (= var17 var5)) (= var20 var4)) (= var21 var12)))))) (inv_main77 var22 var7 var19 var1 var18 var9 var13 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main27 var1 var0 var2)) (inv_main29 (write var1 (left (getTreeNode (read var1 var2))) (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var1 (left (getTreeNode (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main55 var1 var0 var2 var3) (= var2 (left (getTreeNode (read var1 var3)))))) (inv_main57 var1 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main55 var1 var0 var2 var3) (not (= var2 (left (getTreeNode (read var1 var3))))))) (inv_main58 var1 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main88 var1 var0 var2 var5 var4 var3 var6)) (inv_main94 (write var1 var6 (O_node (node (h (getnode (read var1 var6))) var3))) var0 var2 var5 var4 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main13 var3 var1 var6 var4) (and (= var7 0) (and (not (= var2 0)) (and (not (= var4 nullAddr)) (and (and (and (= var0 var3) (= var5 var1)) (= var8 var6)) (= var2 (right (getTreeNode (read var3 var6)))))))))) (inv_main17 var0 var5 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main80 var12 var11 var2 var5 var4 var3 var9) (and (not (= var7 0)) (and (and (and (and (and (and (and (= var10 var12) (= var1 var11)) (= var14 var2)) (= var13 var5)) (= var0 var4)) (= var15 var3)) (= var6 var9)) (= var8 (n (getnode (read var12 var9)))))))) (inv_main69 var10 var1 var14 var13 var0 var15 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 node) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main39 var4 var2 var6 var10) (and (and (not (= var1 0)) (and (not (= var0 nullAddr)) (and (and (and (and (= var8 (newHeap (alloc var4 (O_node var5)))) (= var9 var2)) (= var3 var6)) (= var7 var10)) (= var0 (newAddr (alloc var4 (O_node var5))))))) (= var2 nullAddr)))) (inv_main69 var8 var9 var3 var7 var0 var11 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 TreeNode) (var7 Int) (var8 Int)) (or (not (and (inv_main11 var3 var1 var4) (and (not (= var7 0)) (and (not (= var8 0)) (and (and (and (= var0 var3) (= var5 var1)) (= var2 var4)) (or (and (= (left (getTreeNode (read var3 var4))) nullAddr) (= var8 1)) (and (not (= (left (getTreeNode (read var3 var4))) nullAddr)) (= var8 0)))))))) (inv_main28 (newHeap (alloc var0 (O_TreeNode var6))) var5 var2 (newAddr (alloc var0 (O_TreeNode var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main10 var1 var0 var2)) (inv_main13 var1 var0 var2 (left (getTreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main36 var1 var0 var2 var3)) (inv_main35 (write var1 var2 (O_TreeNode (TreeNode (left (getTreeNode (read var1 var2))) var3))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main43 var1 var0 var2 var3)) (inv_main46 var1 var0 var2 var3 (left (getTreeNode (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main68 var2 var1 var3 var6 var5 var4 var7) (= var0 0))) (inv_main82 var2 var1 var3 var6 var5 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr)) (or (not (and (inv_main102 var10 var9 var1 var5 var4 var3 var7) (and (not (= var6 3)) (and (and (and (and (and (and (and (= var12 var10) (= var8 var9)) (= var13 var1)) (= var14 var5)) (= var11 var4)) (= var0 var3)) (= var2 var7)) (= var6 (h (getnode (read var10 var7)))))))) (inv_main107 var12 var8 var13 var14 var11 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap)) (or (not (and (inv_main99 var10 var9 var4 var7 var6 var5 var8) (and (and (and (and (and (and (and (= var14 var10) (= var0 var9)) (= var1 var4)) (= var12 var7)) (= var3 var6)) (= var2 var5)) (= var11 var8)) (= var13 (n (getnode (read var10 var8))))))) (inv_main97 var14 var0 var1 var12 var3 var2 var13)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr)) (or (not (and (inv_main82 var9 var8 var1 var4 var3 var2 var6) (and (and (and (and (and (and (= var12 (write var9 var6 (O_node (node 3 (n (getnode (read var9 var6))))))) (= var0 var8)) (= var7 var1)) (= var5 var4)) (= var13 var3)) (= var11 var2)) (= var10 var6)))) (inv_main97 var12 var0 var7 var5 var13 var11 var13)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Int)) (or (not (and (inv_main97 var11 var10 var2 var6 var5 var4 var7) (and (= var14 2) (and (and (and (and (and (and (and (= var9 var11) (= var8 var10)) (= var0 var2)) (= var1 var6)) (= var3 var5)) (= var13 var4)) (= var12 var7)) (= var14 (h (getnode (read var11 var7)))))))) (inv_main99 var9 var8 var0 var1 var3 var13 var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main13 var1 var0 var3 var2) (= var2 nullAddr))) (inv_main11 var1 var0 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main13 var3 var1 var6 var4) (and (= var2 0) (and (not (= var4 nullAddr)) (and (and (and (= var0 var3) (= var5 var1)) (= var7 var6)) (= var2 (right (getTreeNode (read var3 var6))))))))) (inv_main11 var0 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main57 var3 var1 var4 var5) (and (and (and (= var6 (write var3 var5 (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var3 var5))))))) (= var2 var1)) (= var7 var4)) (= var0 var5)))) (inv_main39 (write var6 var7 defObj) var2 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main58 var3 var2 var5 var7) (and (and (and (= var1 (write var3 var7 (O_TreeNode (TreeNode (left (getTreeNode (read var3 var7))) nullAddr)))) (= var6 var2)) (= var4 var5)) (= var0 var7)))) (inv_main39 (write var1 var4 defObj) var6 var4 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main46 var9 var7 var4 var5 var8) (and (and (= var6 nullAddr) (and (= var1 0) (and (= var8 nullAddr) (and (and (and (and (= var13 var9) (= var2 var7)) (= var3 var4)) (= var6 var5)) (= var1 (right (getTreeNode (read var9 var4)))))))) (and (and (and (= var0 var13) (= var12 nullAddr)) (= var11 var3)) (= var10 var6))))) (inv_main39 (write var0 var11 defObj) var12 var11 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr)) (or (not (and (inv_main6 var1 var0 var3) (and (= var6 0) (and (and (= var5 var1) (= var7 var0)) (= var2 nullAddr))))) (inv_main39 var5 var7 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main16 var2 var1 var4) (and (and (and (= var6 var2) (= var5 var1)) (= var3 var4)) (= var0 (left (getTreeNode (read var2 var4))))))) (inv_main10 var6 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main17 var2 var1 var4) (and (and (and (= var5 var2) (= var3 var1)) (= var0 var4)) (= var6 (right (getTreeNode (read var2 var4))))))) (inv_main10 var5 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main6 var1 var0 var2) (not (= var3 0)))) (inv_main10 var1 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main28 var1 var0 var2 var3)) (inv_main27 (write var1 var2 (O_TreeNode (TreeNode var3 (right (getTreeNode (read var1 var2)))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main49 var1 var0 var2 var3) (= (left (getTreeNode (read var1 var2))) nullAddr))) (inv_main51 var1 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main46 var3 var1 var7 var8 var2) (and (not (= var0 nullAddr)) (and (= var4 0) (and (= var2 nullAddr) (and (and (and (and (= var9 var3) (= var5 var1)) (= var6 var7)) (= var0 var8)) (= var4 (right (getTreeNode (read var3 var7)))))))))) (inv_main55 var9 var5 var6 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main13 var3 var1 var6 var4) (and (not (= var7 0)) (and (not (= var2 0)) (and (not (= var4 nullAddr)) (and (and (and (= var0 var3) (= var5 var1)) (= var8 var6)) (= var2 (right (getTreeNode (read var3 var6)))))))))) (inv_main16 var0 var5 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 TreeNode)) (or (not (and (inv_main21 var2 var1 var3) (and (not (= var0 0)) (and (not (= var5 0)) (and (and (and (= var4 var2) (= var6 var1)) (= var7 var3)) (or (and (= (right (getTreeNode (read var2 var3))) nullAddr) (= var5 1)) (and (not (= (right (getTreeNode (read var2 var3))) nullAddr)) (= var5 0)))))))) (inv_main36 (newHeap (alloc var4 (O_TreeNode var8))) var6 var7 (newAddr (alloc var4 (O_TreeNode var8))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TreeNode)) (or (not (inv_main3 var0)) (inv_main4 (newHeap (alloc var0 (O_TreeNode var2))) (newAddr (alloc var0 (O_TreeNode var2))) var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main5 var1 var0 var2)) (inv_main6 (write var1 var0 (O_TreeNode (TreeNode (left (getTreeNode (read var1 var0))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main37 var1 var0 var2)) (inv_main6 (write var1 (right (getTreeNode (read var1 var2))) (O_TreeNode (TreeNode (left (getTreeNode (read var1 (right (getTreeNode (read var1 var2)))))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main21 var3 var1 var4) (and (= var2 0) (and (and (and (= var0 var3) (= var6 var1)) (= var5 var4)) (or (and (= (right (getTreeNode (read var3 var4))) nullAddr) (= var2 1)) (and (not (= (right (getTreeNode (read var3 var4))) nullAddr)) (= var2 0))))))) (inv_main6 var0 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr)) (or (not (and (inv_main21 var2 var1 var3) (and (= var0 0) (and (not (= var5 0)) (and (and (and (= var4 var2) (= var6 var1)) (= var7 var3)) (or (and (= (right (getTreeNode (read var2 var3))) nullAddr) (= var5 1)) (and (not (= (right (getTreeNode (read var2 var3))) nullAddr)) (= var5 0)))))))) (inv_main6 var4 var6 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main49 var1 var0 var2 var3) (not (= (left (getTreeNode (read var1 var2))) nullAddr)))) (inv_main50 var1 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr)) (or (not (and (inv_main97 var10 var9 var0 var3 var2 var1 var7) (and (not (= var8 2)) (and (and (and (and (and (and (and (= var13 var10) (= var12 var9)) (= var5 var0)) (= var4 var3)) (= var6 var2)) (= var14 var1)) (= var11 var7)) (= var8 (h (getnode (read var10 var7)))))))) (inv_main98 var13 var12 var5 var4 var6 var14 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr)) (or (not (and (inv_main103 var10 var9 var2 var6 var5 var4 var8) (and (and (and (and (and (and (and (= var13 var10) (= var7 var9)) (= var0 var2)) (= var1 var6)) (= var14 var5)) (= var12 var4)) (= var11 var8)) (= var3 (n (getnode (read var10 var8))))))) (inv_main98 var13 var7 var0 var1 var14 var12 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main4 var1 var0 var2) (not (is-O_TreeNode (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main5 var1 var0 var2) (not (is-O_TreeNode (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main10 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main13 var1 var0 var3 var2) (and (not (= var2 nullAddr)) (not (is-O_TreeNode (read var1 var3)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main16 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main17 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main11 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main28 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main27 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main27 var1 var0 var2) (not (is-O_TreeNode (read var1 (left (getTreeNode (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main29 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main29 var1 var0 var2) (not (is-O_TreeNode (read var1 (left (getTreeNode (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main21 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main36 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main35 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main35 var1 var0 var2) (not (is-O_TreeNode (read var1 (right (getTreeNode (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main37 var1 var0 var2) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main37 var1 var0 var2) (not (is-O_TreeNode (read var1 (right (getTreeNode (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main43 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main46 var2 var0 var3 var4 var1) (and (= var1 nullAddr) (not (is-O_TreeNode (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main49 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main50 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main51 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main55 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main57 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main58 var1 var0 var2 var3) (not (is-O_TreeNode (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main69 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main74 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main80 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main83 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main88 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main94 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main82 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main97 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main99 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main98 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main103 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main102 var1 var0 var2 var5 var4 var3 var6) (not (is-O_node (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (inv_main107 var1 var0 var2 var5 var4 var3 var6)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/list_flag-1.i.smt2 b/heap-theory-benchmarks/heap/list_flag-1.i.smt2 new file mode 100644 index 00000000..0f588b87 --- /dev/null +++ b/heap-theory-benchmarks/heap/list_flag-1.i.smt2 @@ -0,0 +1,69 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main11 (Heap Int Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Int Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main39 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Int Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Heap)) (or (not (and (inv_main35 var10 var5 var3 var2 var6) (and (= var0 1) (and (and (and (and (and (= var7 var10) (= var8 var5)) (= var1 var3)) (= var4 var2)) (= var9 var6)) (= var0 (h (getnode (read var10 var3)))))))) (inv_main39 var7 var8 var1 var4 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap)) (or (not (and (inv_main14 var5 var2 var1 var0 var3) (and (not (= var2 0)) (not (= var4 0))))) (inv_main19 var5 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (inv_main26 var5 var3 var1 var0 var4 var2)) (inv_main26 var5 var3 var1 var0 var4 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 node) (var16 Int)) (or (not (and (inv_main19 var4 var11 var10 var9 var12) (and (and (= var1 nullAddr) (and (and (and (and (and (= var2 (newHeap (alloc var7 (O_node var15)))) (= var16 var0)) (= var13 var8)) (= var6 var3)) (= var14 var5)) (= var1 (newAddr (alloc var7 (O_node var15)))))) (and (and (and (and (= var7 (write var4 var10 (O_node (node 1 (n (getnode (read var4 var10))))))) (= var0 var11)) (= var8 var10)) (= var3 var9)) (= var5 var12))))) (inv_main26 var2 var16 var13 var6 var1 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 node) (var6 Int) (var7 Heap) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main20 var7 var14 var13 var12 var15) (and (and (= var4 nullAddr) (and (and (and (and (and (= var3 (newHeap (alloc var8 (O_node var5)))) (= var1 var6)) (= var16 var10)) (= var0 var11)) (= var9 var2)) (= var4 (newAddr (alloc var8 (O_node var5)))))) (and (and (and (and (= var8 (write var7 var13 (O_node (node 2 (n (getnode (read var7 var13))))))) (= var6 var14)) (= var10 var13)) (= var11 var12)) (= var2 var15))))) (inv_main26 var3 var1 var16 var0 var4 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 node) (var16 Addr)) (or (not (and (inv_main19 var4 var12 var10 var9 var13) (and (and (not (= var11 nullAddr)) (and (and (and (and (and (= var5 (newHeap (alloc var6 (O_node var15)))) (= var8 var0)) (= var3 var1)) (= var7 var16)) (= var2 var14)) (= var11 (newAddr (alloc var6 (O_node var15)))))) (and (and (and (and (= var6 (write var4 var10 (O_node (node 1 (n (getnode (read var4 var10))))))) (= var0 var12)) (= var1 var10)) (= var16 var9)) (= var14 var13))))) (inv_main23 var5 var8 var3 var7 var11)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main20 var4 var9 var8 var7 var10) (and (and (not (= var15 nullAddr)) (and (and (and (and (and (= var12 (newHeap (alloc var6 (O_node var0)))) (= var3 var5)) (= var11 var1)) (= var2 var14)) (= var16 var13)) (= var15 (newAddr (alloc var6 (O_node var0)))))) (and (and (and (and (= var6 (write var4 var8 (O_node (node 2 (n (getnode (read var4 var8))))))) (= var5 var9)) (= var1 var8)) (= var14 var7)) (= var13 var10))))) (inv_main23 var12 var3 var11 var2 var15)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (inv_main11 var5 var3 var2 var1 var4 var0)) (inv_main11 var5 var3 var2 var1 var4 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 node) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap)) (or (not (and (inv_main2 var11) (and (= var7 nullAddr) (and (and (and (and (and (= var0 (newHeap (alloc var11 (O_node var5)))) (= var2 var6)) (= var8 var1)) (= var9 var4)) (= var3 var10)) (= var7 (newAddr (alloc var11 (O_node var5)))))))) (inv_main11 var0 var2 var8 var7 var3 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main29 var10 var6 var5 var4 var7) (and (and (and (and (and (= var1 var10) (= var3 var6)) (= var2 var5)) (= var9 var4)) (= var0 var7)) (= var8 (n (getnode (read var10 var5))))))) (inv_main14 var1 var3 var8 var9 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 node) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int)) (or (not (and (inv_main2 var10) (and (not (= var0 nullAddr)) (and (and (and (and (and (= var5 (newHeap (alloc var10 (O_node var6)))) (= var4 var8)) (= var1 var11)) (= var9 var3)) (= var2 var7)) (= var0 (newAddr (alloc var10 (O_node var6)))))))) (inv_main14 var5 var4 var0 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main33 var10 var6 var5 var4 var7) (and (not (= var8 3)) (and (and (and (and (and (= var3 var10) (= var9 var6)) (= var0 var5)) (= var1 var4)) (= var2 var7)) (= var8 (h (getnode (read var10 var5)))))))) (inv_main42 var3 var9 var0 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main34 var9 var6 var5 var4 var7) (and (not (= var3 2)) (and (and (and (and (and (= var0 var9) (= var2 var6)) (= var8 var5)) (= var1 var4)) (= var10 var7)) (= var3 (h (getnode (read var9 var5)))))))) (inv_main33 var0 var2 var8 var1 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Heap)) (or (not (and (inv_main35 var10 var6 var4 var3 var7) (and (not (= var2 1)) (and (and (and (and (and (= var9 var10) (= var5 var6)) (= var8 var4)) (= var0 var3)) (= var1 var7)) (= var2 (h (getnode (read var10 var4)))))))) (inv_main33 var9 var5 var8 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Heap)) (or (not (and (inv_main34 var10 var6 var5 var4 var7) (and (= var1 2) (and (and (and (and (and (= var8 var10) (= var9 var6)) (= var3 var5)) (= var0 var4)) (= var2 var7)) (= var1 (h (getnode (read var10 var5)))))))) (inv_main36 var8 var9 var3 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap)) (or (not (and (inv_main14 var5 var2 var1 var0 var3) (and (= var2 0) (not (= var4 0))))) (inv_main20 var5 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main39 var10 var5 var3 var2 var6) (and (and (and (and (and (= var8 var10) (= var7 var5)) (= var0 var3)) (= var4 var2)) (= var1 var6)) (= var9 (n (getnode (read var10 var3))))))) (inv_main35 var8 var7 var9 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Heap)) (or (not (and (inv_main15 var9 var6 var4 var3 var7) (and (= var5 0) (and (and (and (and (= var8 (write var9 var4 (O_node (node 3 (n (getnode (read var9 var4))))))) (= var5 var6)) (= var2 var4)) (= var1 var3)) (= var0 var7))))) (inv_main35 var8 var5 var1 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap)) (or (not (and (inv_main36 var10 var5 var3 var2 var6) (and (and (and (and (and (= var9 var10) (= var8 var5)) (= var4 var3)) (= var0 var2)) (= var1 var6)) (= var7 (n (getnode (read var10 var3))))))) (inv_main34 var9 var8 var7 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Heap)) (or (not (and (inv_main15 var9 var6 var4 var3 var7) (and (not (= var5 0)) (and (and (and (and (= var8 (write var9 var4 (O_node (node 3 (n (getnode (read var9 var4))))))) (= var5 var6)) (= var2 var4)) (= var1 var3)) (= var0 var7))))) (inv_main34 var8 var5 var1 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (or (not (inv_main23 var4 var2 var1 var0 var3)) (inv_main29 (write var4 var1 (O_node (node (h (getnode (read var4 var1))) var3))) var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap)) (or (not (and (inv_main14 var5 var2 var1 var0 var3) (= var4 0))) (inv_main15 var5 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main19 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main20 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main23 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main29 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main15 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main34 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main36 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main35 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main39 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (and (inv_main33 var4 var2 var1 var0 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (not (inv_main42 var4 var2 var1 var0 var3)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/list_flag-2.i.smt2 b/heap-theory-benchmarks/heap/list_flag-2.i.smt2 new file mode 100644 index 00000000..9fa926a4 --- /dev/null +++ b/heap-theory-benchmarks/heap/list_flag-2.i.smt2 @@ -0,0 +1,69 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main11 (Heap Int Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main19 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Int Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main39 (Heap Int Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Int Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main23 var1 var4 var3 var0 var2)) (inv_main29 (write var1 var3 (O_node (node (h (getnode (read var1 var3))) var2))) var4 var3 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int)) (or (not (and (inv_main35 var3 var8 var7 var2 var6) (and (= var4 2) (and (and (and (and (and (= var0 var3) (= var10 var8)) (= var5 var7)) (= var9 var2)) (= var1 var6)) (= var4 (h (getnode (read var3 var7)))))))) (inv_main39 var0 var10 var5 var9 var1)))) +(assert (forall ((var0 Int) (var1 node) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Addr)) (or (not (and (inv_main19 var3 var12 var6 var11 var5) (and (and (not (= var13 nullAddr)) (and (and (and (and (and (= var10 (newHeap (alloc var14 (O_node var1)))) (= var0 var9)) (= var2 var7)) (= var16 var4)) (= var8 var15)) (= var13 (newAddr (alloc var14 (O_node var1)))))) (and (and (and (and (= var14 (write var3 var6 (O_node (node 1 (n (getnode (read var3 var6))))))) (= var9 var12)) (= var7 var6)) (= var4 var11)) (= var15 var5))))) (inv_main23 var10 var0 var2 var16 var13)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 node) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main20 var3 var13 var5 var12 var4) (and (and (not (= var14 nullAddr)) (and (and (and (and (and (= var10 (newHeap (alloc var0 (O_node var7)))) (= var9 var16)) (= var2 var8)) (= var15 var6)) (= var11 var1)) (= var14 (newAddr (alloc var0 (O_node var7)))))) (and (and (and (and (= var0 (write var3 var5 (O_node (node 2 (n (getnode (read var3 var5))))))) (= var16 var13)) (= var8 var5)) (= var6 var12)) (= var1 var4))))) (inv_main23 var10 var9 var2 var15 var14)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main14 var1 var5 var4 var0 var3) (= var2 0))) (inv_main15 var1 var5 var4 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr)) (or (not (and (inv_main29 var3 var8 var7 var1 var6) (and (and (and (and (and (= var2 var3) (= var9 var8)) (= var5 var7)) (= var4 var1)) (= var0 var6)) (= var10 (n (getnode (read var3 var7))))))) (inv_main14 var2 var9 var10 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 node) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main2 var5) (and (not (= var0 nullAddr)) (and (and (and (and (and (= var4 (newHeap (alloc var5 (O_node var3)))) (= var8 var2)) (= var11 var9)) (= var10 var7)) (= var6 var1)) (= var0 (newAddr (alloc var5 (O_node var3)))))))) (inv_main14 var4 var8 var0 var0 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main39 var4 var9 var8 var3 var7) (and (and (and (and (and (= var2 var4) (= var6 var9)) (= var5 var8)) (= var0 var3)) (= var1 var7)) (= var10 (n (getnode (read var4 var8))))))) (inv_main35 var2 var6 var10 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main15 var1 var4 var3 var0 var2) (and (= var9 0) (and (and (and (and (= var6 (write var1 var3 (O_node (node 3 (n (getnode (read var1 var3))))))) (= var9 var4)) (= var5 var3)) (= var7 var0)) (= var8 var2))))) (inv_main35 var6 var9 var7 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (or (not (and (inv_main34 var3 var7 var6 var1 var5) (and (not (= var2 1)) (and (and (and (and (and (= var4 var3) (= var10 var7)) (= var9 var6)) (= var8 var1)) (= var0 var5)) (= var2 (h (getnode (read var3 var6)))))))) (inv_main33 var4 var10 var9 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main35 var1 var7 var6 var0 var5) (and (not (= var4 2)) (and (and (and (and (and (= var3 var1) (= var9 var7)) (= var8 var6)) (= var10 var0)) (= var2 var5)) (= var4 (h (getnode (read var1 var6)))))))) (inv_main33 var3 var9 var8 var10 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main11 var1 var5 var4 var0 var3 var2)) (inv_main11 var1 var5 var4 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 node) (var11 Int)) (or (not (and (inv_main2 var1) (and (= var7 nullAddr) (and (and (and (and (and (= var6 (newHeap (alloc var1 (O_node var10)))) (= var5 var8)) (= var0 var2)) (= var4 var11)) (= var3 var9)) (= var7 (newAddr (alloc var1 (O_node var10)))))))) (inv_main11 var6 var5 var0 var7 var3 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int)) (or (not (and (inv_main34 var5 var8 var7 var2 var6) (and (= var10 1) (and (and (and (and (and (= var3 var5) (= var1 var8)) (= var4 var7)) (= var9 var2)) (= var0 var6)) (= var10 (h (getnode (read var5 var7)))))))) (inv_main36 var3 var1 var4 var9 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main36 var2 var7 var6 var0 var5) (and (and (and (and (and (= var4 var2) (= var8 var7)) (= var10 var6)) (= var1 var0)) (= var3 var5)) (= var9 (n (getnode (read var2 var6))))))) (inv_main34 var4 var8 var9 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main15 var1 var4 var3 var0 var2) (and (not (= var9 0)) (and (and (and (and (= var6 (write var1 var3 (O_node (node 3 (n (getnode (read var1 var3))))))) (= var9 var4)) (= var5 var3)) (= var7 var0)) (= var8 var2))))) (inv_main34 var6 var9 var7 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main14 var1 var5 var4 var0 var3) (and (= var5 0) (not (= var2 0))))) (inv_main20 var1 var5 var4 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main33 var3 var7 var6 var2 var5) (and (not (= var4 3)) (and (and (and (and (and (= var8 var3) (= var10 var7)) (= var1 var6)) (= var0 var2)) (= var9 var5)) (= var4 (h (getnode (read var3 var6)))))))) (inv_main42 var8 var10 var1 var0 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main14 var1 var5 var4 var0 var3) (and (not (= var5 0)) (not (= var2 0))))) (inv_main19 var1 var5 var4 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int)) (or (not (inv_main26 var1 var4 var3 var0 var2 var5)) (inv_main26 var1 var4 var3 var0 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 node) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Heap)) (or (not (and (inv_main19 var1 var14 var3 var10 var2) (and (and (= var7 nullAddr) (and (and (and (and (and (= var8 (newHeap (alloc var16 (O_node var11)))) (= var0 var15)) (= var9 var6)) (= var4 var12)) (= var13 var5)) (= var7 (newAddr (alloc var16 (O_node var11)))))) (and (and (and (and (= var16 (write var1 var3 (O_node (node 1 (n (getnode (read var1 var3))))))) (= var15 var14)) (= var6 var3)) (= var12 var10)) (= var5 var2))))) (inv_main26 var8 var0 var9 var4 var7 1)))) +(assert (forall ((var0 node) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main20 var1 var13 var4 var12 var3) (and (and (= var2 nullAddr) (and (and (and (and (and (= var8 (newHeap (alloc var6 (O_node var0)))) (= var7 var9)) (= var10 var15)) (= var11 var5)) (= var16 var14)) (= var2 (newAddr (alloc var6 (O_node var0)))))) (and (and (and (and (= var6 (write var1 var4 (O_node (node 2 (n (getnode (read var1 var4))))))) (= var9 var13)) (= var15 var4)) (= var5 var12)) (= var14 var3))))) (inv_main26 var8 var7 var10 var11 var2 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main19 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main20 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main23 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main29 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main15 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main34 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main36 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main35 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main39 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main33 var1 var4 var3 var0 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (inv_main42 var1 var4 var3 var0 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/list_search-1.i.smt2 b/heap-theory-benchmarks/heap/list_search-1.i.smt2 new file mode 100644 index 00000000..00973139 --- /dev/null +++ b/heap-theory-benchmarks/heap/list_search-1.i.smt2 @@ -0,0 +1,90 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (list 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_list (getlist list)) + (defObj) + ) + ( + (list (key Int) (next Addr)) + ) +)) +(declare-fun inv_main13 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main17 (Heap Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main23 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main27 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main31 (Heap Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main37 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main42 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main45 (Heap Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main51 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main55 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main59 (Heap Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main61 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main65 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main68 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main73 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Addr Addr Addr Int) Bool) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (= var1 emptyHeap) (= var3 var0))) (inv_main4 var1 var3 var5 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr)) (or (not (and (inv_main65 var4 var3 var5 var2 var0 var6 var1) (= var6 nullAddr))) (inv_main61 var4 var3 var5 var2 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Heap)) (or (not (and (inv_main65 var5 var17 var19 var18 var1 var9 var2) (and (and (= var15 0) (and (not (= var9 nullAddr)) (and (and (and (and (and (and (and (= var22 var5) (= var20 var17)) (= var13 var19)) (= var6 var18)) (= var14 var1)) (= var3 var9)) (= var16 var2)) (= var8 (key (getlist (read var5 var9))))))) (and (and (and (and (and (and (and (= var4 var22) (= var21 var20)) (= var0 var13)) (= var7 var6)) (= var12 var14)) (= var10 var3)) (= var11 var16)) (or (and (not (= var8 var16)) (= var15 1)) (and (= var8 var16) (= var15 0))))))) (inv_main61 var4 var21 var0 var7 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 list) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Heap)) (or (not (and (inv_main41 var6 var15 var17 var16 var3 var19 var7) (and (and (and (and (and (and (and (and (= var22 (newHeap (alloc var10 (O_list var12)))) (= var9 var20)) (= var18 var5)) (= var21 var8)) (= var11 var14)) (= var13 var8)) (= var2 3)) (= var0 (newAddr (alloc var10 (O_list var12))))) (and (and (and (and (and (and (= var10 (write var6 var19 (O_list (list (key (getlist (read var6 var19))) nullAddr)))) (= var1 var15)) (= var5 var17)) (= var8 var16)) (= var14 var3)) (= var20 var19)) (= var4 var7))))) (inv_main51 var22 var9 var18 var21 var11 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 list) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Addr) (var23 Heap)) (or (not (and (inv_main45 var5 var15 var17 var16 var3 var21 var6 var4) (and (and (and (and (and (and (and (and (= var23 (newHeap (alloc var9 (O_list var14)))) (= var18 var11)) (= var2 var8)) (= var0 var22)) (= var1 var12)) (= var19 var22)) (= var13 3)) (= var7 (newAddr (alloc var9 (O_list var14))))) (and (and (and (and (and (and (= var9 (write var5 var21 (O_list (list (key (getlist (read var5 var21))) var4)))) (= var10 var15)) (= var8 var17)) (= var22 var16)) (= var12 var3)) (= var11 var21)) (= var20 var6))))) (inv_main51 var23 var18 var2 var0 var1 var7 var13)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main37 var2 var6 var9 var7 var0 var11 var3) (and (= var8 nullAddr) (and (and (and (and (and (and (= var1 (write var2 var11 (O_list (list var3 (next (getlist (read var2 var11))))))) (= var8 var6)) (= var10 var9)) (= var4 var7)) (= var12 var0)) (= var13 var11)) (= var5 var3))))) (inv_main41 var1 var8 var10 var4 var12 var13 var5)))) +(assert (forall ((var0 list) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Int)) (or (not (and (inv_main27 var7 var17 var20 var18 var4 var21 var9) (and (and (and (and (and (and (and (and (= var16 (newHeap (alloc var11 (O_list var0)))) (= var19 var10)) (= var14 var22)) (= var5 var3)) (= var13 var6)) (= var1 var3)) (= var15 1)) (= var8 (newAddr (alloc var11 (O_list var0))))) (and (and (and (and (and (and (= var11 (write var7 var21 (O_list (list (key (getlist (read var7 var21))) nullAddr)))) (= var12 var17)) (= var22 var20)) (= var3 var18)) (= var6 var4)) (= var10 var21)) (= var2 var9))))) (inv_main37 var16 var19 var14 var5 var13 var8 var15)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 list) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Heap) (var22 Addr) (var23 Addr)) (or (not (and (inv_main31 var5 var16 var19 var17 var4 var22 var8 var13) (and (and (and (and (and (and (and (and (= var21 (newHeap (alloc var11 (O_list var10)))) (= var12 var20)) (= var0 var1)) (= var6 var23)) (= var14 var2)) (= var9 var23)) (= var7 1)) (= var15 (newAddr (alloc var11 (O_list var10))))) (and (and (and (and (and (and (= var11 (write var5 var22 (O_list (list (key (getlist (read var5 var22))) var13)))) (= var3 var16)) (= var1 var19)) (= var23 var17)) (= var2 var4)) (= var20 var22)) (= var18 var8))))) (inv_main37 var21 var12 var0 var6 var14 var15 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main23 var3 var7 var9 var8 var2 var11 var5) (and (not (= var13 nullAddr)) (and (and (and (and (and (and (= var6 (write var3 var11 (O_list (list var5 (next (getlist (read var3 var11))))))) (= var13 var7)) (= var12 var9)) (= var4 var8)) (= var0 var2)) (= var10 var11)) (= var1 var5))))) (inv_main28 var6 var13 var12 var4 var0 var10 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main51 var6 var10 var12 var11 var5 var1 var8) (and (not (= var0 nullAddr)) (and (and (and (and (and (and (= var3 (write var6 var1 (O_list (list var8 (next (getlist (read var6 var1))))))) (= var0 var10)) (= var4 var12)) (= var13 var11)) (= var9 var5)) (= var2 var1)) (= var7 var8))))) (inv_main56 var3 var0 var4 var13 var9 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 list)) (or (not (and (inv_main4 var3 var8 var10 var9 var1) (and (and (and (and (and (and (and (= var7 (newHeap (alloc var3 (O_list var13)))) (= var12 var8)) (= var11 var10)) (= var4 var9)) (= var2 var1)) (= var0 var9)) (= var6 2)) (= var5 (newAddr (alloc var3 (O_list var13))))))) (inv_main9 var7 var12 var11 var4 var2 var5 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main14 var3 var8 var11 var9 var2 var13 var12) (and (and (and (and (and (and (= var6 (write var3 var13 (O_list (list var12 (next (getlist (read var3 var13))))))) (= var5 var8)) (= var0 var11)) (= var1 var9)) (= var4 var2)) (= var10 var13)) (= var7 var12)))) (inv_main17 var6 var5 var0 var1 var4 var10 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr)) (or (not (and (inv_main68 var2 var9 var11 var10 var0 var3 var1) (and (and (and (and (and (and (and (= var6 var2) (= var14 var9)) (= var13 var11)) (= var5 var10)) (= var8 var0)) (= var12 var3)) (= var7 var1)) (= var4 (next (getlist (read var2 var3))))))) (inv_main65 var6 var14 var13 var5 var8 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main55 var4 var10 var12 var11 var3 var0 var5) (and (and (and (and (and (and (= var7 (write var4 var0 (O_list (list (key (getlist (read var4 var0))) nullAddr)))) (= var6 var10)) (= var8 var12)) (= var1 var11)) (= var9 var3)) (= var13 var0)) (= var2 var5)))) (inv_main65 var7 var13 var8 var1 var9 var13 2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap)) (or (not (and (inv_main59 var4 var9 var11 var10 var3 var0 var5 var6) (and (and (and (and (and (and (= var14 (write var4 var0 (O_list (list (key (getlist (read var4 var0))) var6)))) (= var8 var9)) (= var1 var11)) (= var2 var10)) (= var12 var3)) (= var7 var0)) (= var13 var5)))) (inv_main65 var14 var7 var1 var2 var12 var7 2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (and (inv_main37 var4 var9 var11 var10 var2 var12 var5) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (= var0 (write var4 var12 (O_list (list var5 (next (getlist (read var4 var12))))))) (= var6 var9)) (= var8 var11)) (= var1 var10)) (= var7 var2)) (= var13 var12)) (= var3 var5))))) (inv_main42 var0 var6 var8 var1 var7 var13 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main56 var4 var10 var12 var11 var3 var0 var6) (and (and (and (and (and (and (= var9 (write var4 var0 (O_list (list var6 (next (getlist (read var4 var0))))))) (= var1 var10)) (= var2 var12)) (= var7 var11)) (= var5 var3)) (= var13 var0)) (= var8 var6)))) (inv_main59 var9 var1 var2 var7 var5 var13 var8 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int)) (or (not (and (inv_main42 var3 var7 var9 var8 var1 var10 var4) (and (and (and (and (and (and (= var0 (write var3 var10 (O_list (list var4 (next (getlist (read var3 var10))))))) (= var12 var7)) (= var2 var9)) (= var5 var8)) (= var11 var1)) (= var6 var10)) (= var13 var4)))) (inv_main45 var0 var12 var2 var5 var11 var6 var13 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Heap)) (or (not (and (inv_main65 var5 var15 var17 var16 var2 var9 var3) (and (and (not (= var6 0)) (and (not (= var9 nullAddr)) (and (and (and (and (and (and (and (= var22 var5) (= var19 var15)) (= var12 var17)) (= var7 var16)) (= var13 var2)) (= var4 var9)) (= var14 var3)) (= var8 (key (getlist (read var5 var9))))))) (and (and (and (and (and (and (and (= var11 var22) (= var0 var19)) (= var1 var12)) (= var21 var7)) (= var18 var13)) (= var20 var4)) (= var10 var14)) (or (and (not (= var8 var14)) (= var6 1)) (and (= var8 var14) (= var6 0))))))) (inv_main68 var11 var0 var1 var21 var18 var20 var10)))) +(assert (forall ((var0 Addr) (var1 list) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Int) (var21 Heap) (var22 Addr)) (or (not (and (inv_main13 var4 var14 var16 var15 var2 var22 var19) (and (and (and (and (and (and (and (and (= var5 (newHeap (alloc var21 (O_list var1)))) (= var9 var3)) (= var8 var20)) (= var12 var17)) (= var10 var0)) (= var6 var17)) (= var18 5)) (= var13 (newAddr (alloc var21 (O_list var1))))) (and (and (and (and (and (and (= var21 (write var4 var22 (O_list (list (key (getlist (read var4 var22))) nullAddr)))) (= var11 var14)) (= var20 var16)) (= var17 var15)) (= var0 var2)) (= var3 var22)) (= var7 var19))))) (inv_main23 var5 var9 var8 var12 var10 var13 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 list) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Heap) (var23 Addr)) (or (not (and (inv_main17 var6 var15 var17 var16 var4 var23 var21 var0) (and (and (and (and (and (and (and (and (= var7 (newHeap (alloc var22 (O_list var3)))) (= var1 var19)) (= var10 var14)) (= var2 var20)) (= var12 var8)) (= var11 var20)) (= var18 5)) (= var5 (newAddr (alloc var22 (O_list var3))))) (and (and (and (and (and (and (= var22 (write var6 var23 (O_list (list (key (getlist (read var6 var23))) var0)))) (= var9 var15)) (= var14 var17)) (= var20 var16)) (= var8 var4)) (= var19 var23)) (= var13 var21))))) (inv_main23 var7 var1 var10 var2 var12 var5 var18)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main28 var3 var8 var10 var9 var2 var11 var5) (and (and (and (and (and (and (= var13 (write var3 var11 (O_list (list var5 (next (getlist (read var3 var11))))))) (= var7 var8)) (= var4 var10)) (= var6 var9)) (= var0 var2)) (= var12 var11)) (= var1 var5)))) (inv_main31 var13 var7 var4 var6 var0 var12 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main9 var4 var8 var11 var9 var3 var13 var12) (and (not (= var0 nullAddr)) (and (and (and (and (and (and (= var6 (write var4 var13 (O_list (list var12 (next (getlist (read var4 var13))))))) (= var0 var8)) (= var10 var11)) (= var5 var9)) (= var2 var3)) (= var1 var13)) (= var7 var12))))) (inv_main14 var6 var0 var10 var5 var2 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr)) (or (not (and (inv_main23 var5 var7 var9 var8 var2 var13 var6) (and (= var0 nullAddr) (and (and (and (and (and (and (= var12 (write var5 var13 (O_list (list var6 (next (getlist (read var5 var13))))))) (= var0 var7)) (= var1 var9)) (= var10 var8)) (= var4 var2)) (= var3 var13)) (= var11 var6))))) (inv_main27 var12 var0 var1 var10 var4 var3 var11)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main9 var2 var7 var9 var8 var1 var13 var12) (and (= var4 nullAddr) (and (and (and (and (and (and (= var5 (write var2 var13 (O_list (list var12 (next (getlist (read var2 var13))))))) (= var4 var7)) (= var0 var9)) (= var3 var8)) (= var11 var1)) (= var6 var13)) (= var10 var12))))) (inv_main13 var5 var4 var0 var3 var11 var6 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main61 var3 var2 var4 var1 var0) (not (= var2 nullAddr)))) (inv_main73 var3 var2 var4 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main73 var4 var12 var15 var13 var2) (and (not (= var8 nullAddr)) (and (and (and (and (and (and (= var10 var4) (= var0 var12)) (= var14 var15)) (= var1 var13)) (= var6 var2)) (= var5 (next (getlist (read var4 var12))))) (and (and (and (and (and (= var11 (write var10 var0 defObj)) (= var9 var0)) (= var3 var14)) (= var7 var1)) (= var16 var6)) (= var8 var5)))))) (inv_main73 var11 var8 var3 var7 var16)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main51 var3 var9 var11 var10 var2 var0 var4) (and (= var8 nullAddr) (and (and (and (and (and (and (= var1 (write var3 var0 (O_list (list var4 (next (getlist (read var3 var0))))))) (= var8 var9)) (= var12 var11)) (= var13 var10)) (= var5 var2)) (= var7 var0)) (= var6 var4))))) (inv_main55 var1 var8 var12 var13 var5 var7 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main9 var3 var2 var4 var1 var0 var6 var5) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main13 var3 var2 var4 var1 var0 var6 var5) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main14 var3 var2 var4 var1 var0 var6 var5) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main17 var4 var3 var5 var2 var1 var7 var6 var0) (not (is-O_list (read var4 var7))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main23 var3 var2 var4 var1 var0 var6 var5) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main27 var3 var2 var4 var1 var0 var6 var5) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main28 var3 var2 var4 var1 var0 var6 var5) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main31 var4 var3 var5 var2 var1 var7 var6 var0) (not (is-O_list (read var4 var7))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main37 var3 var2 var5 var1 var0 var6 var4) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main41 var3 var2 var5 var1 var0 var6 var4) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main42 var3 var2 var5 var1 var0 var6 var4) (not (is-O_list (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr)) (not (and (inv_main45 var4 var3 var6 var2 var0 var7 var5 var1) (not (is-O_list (read var4 var7))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main51 var4 var3 var5 var2 var1 var0 var6) (not (is-O_list (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main55 var4 var3 var5 var2 var1 var0 var6) (not (is-O_list (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main56 var4 var3 var5 var2 var1 var0 var6) (not (is-O_list (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int)) (not (and (inv_main59 var5 var4 var6 var3 var2 var1 var7 var0) (not (is-O_list (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr)) (not (and (inv_main65 var4 var3 var5 var2 var0 var6 var1) (and (not (= var6 nullAddr)) (not (is-O_list (read var4 var6)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr)) (not (and (inv_main68 var4 var3 var5 var2 var0 var6 var1) (not (is-O_list (read var4 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (not (and (inv_main61 var3 var2 var4 var1 var0) (not (is-O_list (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (not (and (inv_main61 var3 var2 var4 var1 var0) (not (= (key (getlist (read var3 var0))) 1)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (not (and (inv_main73 var3 var2 var4 var1 var0) (not (is-O_list (read var3 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/list_search-2.i.smt2 b/heap-theory-benchmarks/heap/list_search-2.i.smt2 new file mode 100644 index 00000000..d6cfca0a --- /dev/null +++ b/heap-theory-benchmarks/heap/list_search-2.i.smt2 @@ -0,0 +1,116 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (list 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_list (getlist list)) + (defObj) + ) + ( + (list (key Int) (next Addr)) + ) +)) +(declare-fun inv_main100 (Heap Int Addr Int Addr Addr) Bool) +(declare-fun inv_main13 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main27 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main30 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main32 (Heap Int Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main41 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main42 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Int Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main5 (Heap Int Addr Int Addr Addr) Bool) +(declare-fun inv_main55 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main58 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main60 (Heap Int Addr Int Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main62 (Heap Int Addr Int Addr Addr) Bool) +(declare-fun inv_main65 (Heap Int Addr Int Addr Addr) Bool) +(declare-fun inv_main67 (Heap Int Addr Int Addr Addr) Bool) +(declare-fun inv_main71 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main74 (Heap Int Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main86 (Heap Int Addr Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main87 (Heap Int Addr Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main88 (Heap Int Addr Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main90 (Heap Int Addr Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main95 (Heap Int Addr Int Addr Addr Addr Addr Addr) Bool) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (and (= var2 emptyHeap) (= var5 0)) (= var4 var0))) (inv_main5 var2 var5 var4 var3 0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 list) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Int)) (or (not (and (inv_main30 var15 var18 var6 var3 var21 var1 var23 var20) (and (and (= var5 nullAddr) (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var7 (O_list var2)))) (= var25 var4)) (= var5 var16)) (= var24 var8)) (= var22 var10)) (= var13 var0)) (= var19 var10)) (= var17 1)) (= var9 (newAddr (alloc var7 (O_list var2)))))) (and (and (and (and (and (and (and (= var7 (write var15 var23 (O_list (list (key (getlist (read var15 var23))) nullAddr)))) (= var4 var18)) (= var14 var6)) (= var8 var3)) (= var10 var21)) (= var0 var1)) (= var16 var23)) (= var12 var20))))) (inv_main41 var11 var25 var5 var24 var22 var13 var9 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 list) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Heap) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Int) (var26 Addr)) (or (not (and (inv_main32 var14 var18 var9 var5 var22 var1 var23 var21 var15) (and (and (= var20 nullAddr) (and (and (and (and (and (and (and (and (= var8 (newHeap (alloc var16 (O_list var6)))) (= var25 var17)) (= var20 var24)) (= var13 var19)) (= var4 var12)) (= var11 var26)) (= var3 var12)) (= var10 1)) (= var7 (newAddr (alloc var16 (O_list var6)))))) (and (and (and (and (and (and (and (= var16 (write var14 var23 (O_list (list (key (getlist (read var14 var23))) var15)))) (= var17 var18)) (= var2 var9)) (= var19 var5)) (= var12 var22)) (= var26 var1)) (= var24 var23)) (= var0 var21))))) (inv_main41 var8 var25 var20 var13 var4 var11 var7 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Int) (var24 Int) (var25 list)) (or (not (and (inv_main16 var14 var19 var7 var5 var22 var1 var16 var8) (and (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var4 (O_list var25)))) (= var24 var2)) (= var12 var10)) (= var0 var13)) (= var21 var6)) (= var15 var3)) (= var9 var6)) (= var23 5)) (= var18 (newAddr (alloc var4 (O_list var25)))))) (and (and (and (and (and (and (and (= var4 (write var14 var16 (O_list (list (key (getlist (read var14 var16))) nullAddr)))) (= var2 var19)) (= var17 var7)) (= var13 var5)) (= var6 var22)) (= var3 var1)) (= var10 var16)) (= var20 var8))))) (inv_main28 var11 var24 var12 var0 var21 var15 var18 var23)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 list) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Int) (var26 Heap)) (or (not (and (inv_main18 var16 var19 var7 var2 var23 var1 var18 var9 var14) (and (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (and (= var26 (newHeap (alloc var3 (O_list var4)))) (= var24 var6)) (= var12 var0)) (= var8 var20)) (= var21 var17)) (= var11 var15)) (= var13 var17)) (= var5 5)) (= var22 (newAddr (alloc var3 (O_list var4)))))) (and (and (and (and (and (and (and (= var3 (write var16 var18 (O_list (list (key (getlist (read var16 var18))) var14)))) (= var6 var19)) (= var10 var7)) (= var20 var2)) (= var17 var23)) (= var15 var1)) (= var0 var18)) (= var25 var9))))) (inv_main28 var26 var24 var12 var8 var21 var11 var22 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 list) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int) (var23 Heap) (var24 Addr) (var25 Addr)) (or (not (and (inv_main44 var13 var16 var6 var4 var20 var0 var11 var9) (and (and (= var24 nullAddr) (and (and (and (and (and (and (and (and (= var23 (newHeap (alloc var2 (O_list var8)))) (= var5 var15)) (= var24 var19)) (= var22 var1)) (= var12 var3)) (= var7 var18)) (= var10 var3)) (= var17 3)) (= var25 (newAddr (alloc var2 (O_list var8)))))) (and (and (and (and (and (and (and (= var2 (write var13 var11 (O_list (list (key (getlist (read var13 var11))) nullAddr)))) (= var15 var16)) (= var21 var6)) (= var1 var4)) (= var3 var20)) (= var18 var0)) (= var19 var11)) (= var14 var9))))) (inv_main55 var23 var5 var24 var22 var12 var7 var25 var17)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 list) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Int) (var24 Addr) (var25 Addr) (var26 Int)) (or (not (and (inv_main46 var12 var18 var4 var2 var21 var0 var10 var7 var3) (and (and (= var22 nullAddr) (and (and (and (and (and (and (and (and (= var16 (newHeap (alloc var6 (O_list var11)))) (= var17 var26)) (= var22 var25)) (= var19 var23)) (= var15 var20)) (= var8 var14)) (= var13 var20)) (= var1 3)) (= var24 (newAddr (alloc var6 (O_list var11)))))) (and (and (and (and (and (and (and (= var6 (write var12 var10 (O_list (list (key (getlist (read var12 var10))) var3)))) (= var26 var18)) (= var5 var4)) (= var23 var2)) (= var20 var21)) (= var14 var0)) (= var25 var10)) (= var9 var7))))) (inv_main55 var16 var17 var22 var19 var15 var8 var24 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (or (not (inv_main27 var1 var3 var4 var2 var6 var0 var7 var5)) (inv_main30 (write var1 var7 (O_list (list var5 (next (getlist (read var1 var7)))))) var3 var4 var2 var6 var0 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap)) (or (not (and (inv_main87 var11 var13 var6 var5 var14 var0 var7 var4) (and (= var3 var10) (and (and (and (and (and (and (and (and (= var16 var11) (= var2 var13)) (= var8 var6)) (= var9 var5)) (= var12 var14)) (= var15 var0)) (= var10 var7)) (= var1 var4)) (= var3 (next (getlist (read var11 var4)))))))) (inv_main86 var16 var2 var8 var9 var12 var15 var10 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main88 var12 var13 var7 var5 var14 var2 var8 var4) (and (and (and (and (and (and (and (and (= var0 var12) (= var9 var13)) (= var15 var7)) (= var1 var5)) (= var10 var14)) (= var16 var2)) (= var6 var8)) (= var3 var4)) (= var11 (next (getlist (read var12 var8))))))) (inv_main86 var0 var9 var11 var1 var10 var16 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (inv_main55 var1 var4 var5 var3 var7 var0 var2 var6)) (inv_main58 (write var1 var2 (O_list (list var6 (next (getlist (read var1 var2)))))) var4 var5 var3 var7 var0 var2 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 list) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr)) (or (not (and (inv_main5 var12 var13 var6 var5 var15 var2) (and (not (= var9 nullAddr)) (and (and (and (and (and (and (and (and (= var8 (newHeap (alloc var12 (O_list var11)))) (= var7 var13)) (= var9 var6)) (= var1 var5)) (= var4 var15)) (= var3 var2)) (= var14 var15)) (= var0 2)) (= var10 (newAddr (alloc var12 (O_list var11)))))))) (inv_main14 var8 var7 var9 var1 var4 var3 var10 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Heap) (var21 Addr) (var22 Addr) (var23 Int) (var24 Addr) (var25 Addr)) (or (not (and (inv_main71 var14 var19 var4 var2 var21 var1 var6 var11) (and (and (not (= var16 0)) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (and (= var20 var14) (= var18 var19)) (= var9 var4)) (= var7 var2)) (= var10 var21)) (= var24 var1)) (= var17 var6)) (= var13 var11)) (= var23 (key (getlist (read var14 var6))))))) (and (and (and (and (and (and (and (and (= var3 var20) (= var8 var18)) (= var22 var9)) (= var12 var7)) (= var25 var10)) (= var5 var24)) (= var15 var17)) (= var0 var13)) (or (and (not (= var23 var13)) (= var16 1)) (and (= var23 var13) (= var16 0))))))) (inv_main74 var3 var8 var22 var12 var25 var5 var15 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main74 var9 var11 var6 var3 var12 var1 var7 var8) (and (and (and (and (and (and (and (and (= var0 var9) (= var2 var11)) (= var13 var6)) (= var5 var3)) (= var4 var12)) (= var14 var1)) (= var15 var7)) (= var16 var8)) (= var10 (next (getlist (read var9 var7))))))) (inv_main71 var0 var2 var13 var5 var4 var14 var10 var16)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main62 var1 var3 var4 var2 var5 var0) (= var5 nullAddr))) (inv_main71 var1 var3 var4 var2 var5 var0 var4 2)))) +(assert (forall ((var0 Addr) (var1 list) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Heap)) (or (not (and (inv_main30 var17 var19 var9 var5 var22 var2 var23 var21) (and (and (not (= var10 nullAddr)) (and (and (and (and (and (and (and (and (= var25 (newHeap (alloc var11 (O_list var1)))) (= var15 var8)) (= var10 var18)) (= var3 var12)) (= var20 var14)) (= var4 var0)) (= var24 var14)) (= var6 1)) (= var7 (newAddr (alloc var11 (O_list var1)))))) (and (and (and (and (and (and (and (= var11 (write var17 var23 (O_list (list (key (getlist (read var17 var23))) nullAddr)))) (= var8 var19)) (= var16 var9)) (= var12 var5)) (= var14 var22)) (= var0 var2)) (= var18 var23)) (= var13 var21))))) (inv_main42 var25 var15 var10 var3 var20 var4 var7 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Heap) (var14 Int) (var15 list) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr)) (or (not (and (inv_main32 var11 var16 var4 var3 var20 var1 var23 var19 var12) (and (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var13 (O_list var15)))) (= var5 var14)) (= var6 var24)) (= var21 var18)) (= var10 var7)) (= var8 var26)) (= var22 var7)) (= var17 1)) (= var25 (newAddr (alloc var13 (O_list var15)))))) (and (and (and (and (and (and (and (= var13 (write var11 var23 (O_list (list (key (getlist (read var11 var23))) var12)))) (= var14 var16)) (= var2 var4)) (= var18 var3)) (= var7 var20)) (= var26 var1)) (= var24 var23)) (= var0 var19))))) (inv_main42 var9 var5 var6 var21 var10 var8 var25 var17)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main62 var1 var3 var4 var2 var5 var0) (not (= var5 nullAddr)))) (inv_main65 var1 var3 var4 var2 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main87 var12 var13 var6 var5 var14 var0 var7 var4) (and (not (= var1 var8)) (and (and (and (and (and (and (and (and (= var9 var12) (= var2 var13)) (= var15 var6)) (= var3 var5)) (= var16 var14)) (= var11 var0)) (= var8 var7)) (= var10 var4)) (= var1 (next (getlist (read var12 var4)))))))) (inv_main90 var9 var2 var15 var3 var16 var11 var8 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int)) (or (not (and (inv_main28 var8 var9 var5 var4 var13 var0 var14 var12) (and (and (and (and (and (and (and (= var7 (write var8 var14 (O_list (list var12 (next (getlist (read var8 var14))))))) (= var11 var9)) (= var1 var5)) (= var15 var4)) (= var2 var13)) (= var3 var0)) (= var10 var14)) (= var6 var12)))) (inv_main32 var7 var11 var1 var15 var2 var3 var10 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Heap) (var18 Int) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 list)) (or (not (and (inv_main44 var17 var20 var8 var6 var23 var2 var15 var12) (and (and (not (= var13 nullAddr)) (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var4 (O_list var25)))) (= var16 var19)) (= var13 var22)) (= var7 var3)) (= var11 var5)) (= var14 var21)) (= var1 var5)) (= var10 3)) (= var0 (newAddr (alloc var4 (O_list var25)))))) (and (and (and (and (and (and (and (= var4 (write var17 var15 (O_list (list (key (getlist (read var17 var15))) nullAddr)))) (= var19 var20)) (= var24 var8)) (= var3 var6)) (= var5 var23)) (= var21 var2)) (= var22 var15)) (= var18 var12))))) (inv_main56 var9 var16 var13 var7 var11 var14 var0 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Heap) (var11 list) (var12 Int) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Addr) (var26 Int)) (or (not (and (inv_main46 var15 var18 var6 var4 var21 var0 var14 var9 var5) (and (and (not (= var13 nullAddr)) (and (and (and (and (and (and (and (and (= var10 (newHeap (alloc var8 (O_list var11)))) (= var1 var26)) (= var13 var25)) (= var16 var24)) (= var22 var20)) (= var23 var17)) (= var3 var20)) (= var19 3)) (= var2 (newAddr (alloc var8 (O_list var11)))))) (and (and (and (and (and (and (and (= var8 (write var15 var14 (O_list (list (key (getlist (read var15 var14))) var5)))) (= var26 var18)) (= var7 var6)) (= var24 var4)) (= var20 var21)) (= var17 var0)) (= var25 var14)) (= var12 var9))))) (inv_main56 var10 var1 var13 var16 var22 var23 var2 var19)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main71 var1 var3 var4 var2 var5 var0 var6 var7) (= var6 nullAddr))) (inv_main67 var1 var3 var4 var2 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int) (var20 Int) (var21 Heap) (var22 Addr) (var23 Int) (var24 Int) (var25 Addr)) (or (not (and (inv_main71 var15 var19 var4 var3 var22 var1 var5 var12) (and (and (= var23 0) (and (not (= var5 nullAddr)) (and (and (and (and (and (and (and (and (= var21 var15) (= var18 var19)) (= var10 var4)) (= var6 var3)) (= var11 var22)) (= var25 var1)) (= var17 var5)) (= var14 var12)) (= var24 (key (getlist (read var15 var5))))))) (and (and (and (and (and (and (and (and (= var7 var21) (= var13 var18)) (= var8 var10)) (= var9 var6)) (= var0 var11)) (= var2 var25)) (= var16 var17)) (= var20 var14)) (or (and (not (= var24 var14)) (= var23 1)) (and (= var24 var14) (= var23 0))))))) (inv_main67 var7 var13 var8 var9 var0 var16)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Heap) (var16 Addr) (var17 list) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Int) (var24 Int) (var25 Int)) (or (not (and (inv_main16 var15 var19 var7 var4 var22 var0 var16 var8) (and (and (= var14 nullAddr) (and (and (and (and (and (and (and (and (= var12 (newHeap (alloc var3 (O_list var17)))) (= var24 var1)) (= var14 var11)) (= var23 var13)) (= var5 var6)) (= var10 var2)) (= var9 var6)) (= var25 5)) (= var21 (newAddr (alloc var3 (O_list var17)))))) (and (and (and (and (and (and (and (= var3 (write var15 var16 (O_list (list (key (getlist (read var15 var16))) nullAddr)))) (= var1 var19)) (= var18 var7)) (= var13 var4)) (= var6 var22)) (= var2 var0)) (= var11 var16)) (= var20 var8))))) (inv_main27 var12 var24 var14 var23 var5 var10 var21 var25)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 list) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Int) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Int) (var26 Int)) (or (not (and (inv_main18 var17 var20 var8 var4 var24 var1 var19 var10 var14) (and (and (= var6 nullAddr) (and (and (and (and (and (and (and (and (= var13 (newHeap (alloc var5 (O_list var2)))) (= var9 var7)) (= var6 var0)) (= var26 var21)) (= var23 var18)) (= var22 var16)) (= var12 var18)) (= var3 5)) (= var15 (newAddr (alloc var5 (O_list var2)))))) (and (and (and (and (and (and (and (= var5 (write var17 var19 (O_list (list (key (getlist (read var17 var19))) var14)))) (= var7 var20)) (= var11 var8)) (= var21 var4)) (= var18 var24)) (= var16 var1)) (= var0 var19)) (= var25 var10))))) (inv_main27 var13 var9 var6 var26 var23 var22 var15 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int)) (or (not (and (inv_main100 var3 var7 var8 var4 var9 var2) (and (not (= var5 nullAddr)) (and (and (and (and (and (and (= var1 var3) (= var12 var7)) (= var6 var8)) (= var10 var4)) (= var11 var9)) (= var0 var2)) (= var5 (next (getlist (read var3 var9)))))))) (inv_main100 var1 var12 var6 var10 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr)) (or (not (and (inv_main95 var17 var20 var5 var4 var21 var0 var6 var3 var10) (and (not (= var16 nullAddr)) (and (and (and (and (and (and (and (and (= var9 (write var17 var3 (O_list (list (key (getlist (read var17 var3))) var10)))) (= var13 var20)) (= var23 var5)) (= var2 var4)) (= var11 var21)) (= var8 var0)) (= var24 var6)) (= var18 var3)) (and (and (and (and (and (and (and (= var15 (write var9 var24 defObj)) (= var14 var13)) (= var16 var23)) (= var19 var2)) (= var22 var11)) (= var1 var8)) (= var12 var24)) (= var7 var18)))))) (inv_main100 var15 var14 var16 var19 var16 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (inv_main41 var2 var4 var5 var3 var6 var0 var1 var7)) (inv_main44 (write var2 var1 (O_list (list var7 (next (getlist (read var2 var1)))))) var4 var5 var3 var6 var0 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap)) (or (not (and (inv_main90 var7 var9 var4 var2 var12 var0 var5 var1) (and (and (and (and (and (and (and (and (= var16 var7) (= var13 var9)) (= var3 var4)) (= var10 var2)) (= var11 var12)) (= var6 var0)) (= var14 var5)) (= var8 var1)) (= var15 (next (getlist (read var7 var1))))))) (inv_main87 var16 var13 var3 var10 var11 var6 var14 var15)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main67 var1 var3 var4 var2 var5 var0) (not (= var4 var0)))) (inv_main87 var1 var3 var4 var2 var5 var0 var0 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 list) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr)) (or (not (and (inv_main5 var12 var13 var6 var5 var15 var2) (and (= var9 nullAddr) (and (and (and (and (and (and (and (and (= var8 (newHeap (alloc var12 (O_list var11)))) (= var7 var13)) (= var9 var6)) (= var1 var5)) (= var4 var15)) (= var3 var2)) (= var14 var15)) (= var0 2)) (= var10 (newAddr (alloc var12 (O_list var11)))))))) (inv_main13 var8 var7 var9 var1 var4 var3 var10 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main42 var9 var12 var3 var2 var14 var0 var7 var4) (and (and (and (and (and (and (and (= var6 (write var9 var7 (O_list (list var4 (next (getlist (read var9 var7))))))) (= var5 var12)) (= var15 var3)) (= var8 var2)) (= var13 var14)) (= var10 var0)) (= var1 var7)) (= var11 var4)))) (inv_main46 var6 var5 var15 var8 var13 var10 var1 var11 var15)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr)) (or (not (and (inv_main14 var7 var10 var3 var2 var11 var0 var8 var4) (and (and (and (and (and (and (and (= var14 (write var7 var8 (O_list (list var4 (next (getlist (read var7 var8))))))) (= var1 var10)) (= var6 var3)) (= var5 var2)) (= var15 var11)) (= var12 var0)) (= var9 var8)) (= var13 var4)))) (inv_main18 var14 var1 var6 var5 var15 var12 var9 var13 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main67 var1 var3 var4 var2 var5 var0) (= var4 var0))) (inv_main88 var1 var3 var4 var2 var5 var0 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main86 var1 var4 var5 var3 var7 var0 var6 var2)) (inv_main95 var1 var4 var5 var3 var7 var0 var6 var2 (next (getlist (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (inv_main13 var1 var4 var5 var3 var7 var0 var2 var6)) (inv_main16 (write var1 var2 (O_list (list var6 (next (getlist (read var1 var2)))))) var4 var5 var3 var7 var0 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main65 var1 var5 var6 var2 var7 var0) (and (and (and (and (and (and (= var11 var1) (= var8 var5)) (= var12 var6)) (= var9 var2)) (= var4 var7)) (= var3 var0)) (= var10 (next (getlist (read var1 var7))))))) (inv_main62 var11 var8 var12 var9 var10 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int)) (or (not (and (inv_main58 var8 var10 var4 var3 var13 var0 var9 var12) (and (and (and (and (and (and (and (= var1 (write var8 var9 (O_list (list (key (getlist (read var8 var9))) nullAddr)))) (= var15 var10)) (= var7 var4)) (= var6 var3)) (= var2 var13)) (= var11 var0)) (= var14 var9)) (= var5 var12)))) (inv_main62 var1 var15 var14 var6 var14 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main60 var12 var14 var8 var6 var16 var2 var13 var15 var9) (and (and (and (and (and (and (and (= var5 (write var12 var13 (O_list (list (key (getlist (read var12 var13))) var9)))) (= var10 var14)) (= var1 var8)) (= var7 var6)) (= var0 var16)) (= var11 var2)) (= var4 var13)) (= var3 var15)))) (inv_main62 var5 var10 var4 var7 var4 var11)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr)) (or (not (and (inv_main56 var9 var12 var5 var3 var15 var1 var10 var14) (and (and (and (and (and (and (and (= var0 (write var9 var10 (O_list (list var14 (next (getlist (read var9 var10))))))) (= var13 var12)) (= var2 var5)) (= var7 var3)) (= var6 var15)) (= var11 var1)) (= var8 var10)) (= var4 var14)))) (inv_main60 var0 var13 var2 var7 var6 var11 var8 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main13 var1 var4 var5 var3 var7 var0 var2 var6) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main16 var1 var4 var5 var3 var7 var0 var2 var6) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main14 var1 var4 var5 var3 var7 var0 var2 var6) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main18 var2 var5 var6 var4 var8 var1 var3 var7 var0) (not (is-O_list (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main27 var1 var3 var4 var2 var6 var0 var7 var5) (not (is-O_list (read var1 var7))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main30 var1 var3 var4 var2 var6 var0 var7 var5) (not (is-O_list (read var1 var7))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main28 var1 var3 var4 var2 var6 var0 var7 var5) (not (is-O_list (read var1 var7))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main32 var1 var4 var5 var3 var7 var0 var8 var6 var2) (not (is-O_list (read var1 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main41 var2 var4 var5 var3 var6 var0 var1 var7) (not (is-O_list (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main44 var2 var4 var5 var3 var6 var0 var1 var7) (not (is-O_list (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main42 var2 var4 var5 var3 var6 var0 var1 var7) (not (is-O_list (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (not (and (inv_main46 var2 var5 var6 var3 var7 var0 var1 var8 var4) (not (is-O_list (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main55 var1 var4 var5 var3 var7 var0 var2 var6) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main58 var1 var4 var5 var3 var7 var0 var2 var6) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main56 var1 var4 var5 var3 var7 var0 var2 var6) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main60 var1 var4 var5 var3 var8 var0 var2 var6 var7) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main65 var1 var3 var4 var2 var5 var0) (not (is-O_list (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main71 var1 var3 var4 var2 var5 var0 var6 var7) (and (not (= var6 nullAddr)) (not (is-O_list (read var1 var6)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main74 var1 var3 var4 var2 var5 var0 var6 var7) (not (is-O_list (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main67 var1 var3 var4 var2 var5 var0) (not (is-O_list (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main67 var1 var3 var4 var2 var5 var0) (not (= (key (getlist (read var1 var0))) 2)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main87 var1 var4 var5 var3 var7 var0 var6 var2) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main90 var1 var4 var5 var3 var7 var0 var6 var2) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main88 var1 var4 var5 var3 var7 var0 var6 var2) (not (is-O_list (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main86 var1 var4 var5 var3 var7 var0 var6 var2) (not (is-O_list (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main95 var1 var4 var5 var3 var7 var0 var6 var2 var8) (not (is-O_list (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main100 var1 var3 var4 var2 var5 var0) (not (is-O_list (read var1 var5))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/lockfree-3.1.i.smt2 b/heap-theory-benchmarks/heap/lockfree-3.1.i.smt2 new file mode 100644 index 00000000..33d0aa26 --- /dev/null +++ b/heap-theory-benchmarks/heap/lockfree-3.1.i.smt2 @@ -0,0 +1,75 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (cell 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_cell (getcell cell)) + (defObj) + ) + ( + (cell (data Int) (next Addr)) + ) +)) +(declare-fun inv_main0 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main20 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Int Int Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Int Int Addr Addr Addr Addr Addr Int Int) Bool) +(declare-fun inv_main51 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main60 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main64 (Heap Addr Int Int Addr Addr Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main69 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(assert (forall ((var0 Addr) (var1 Addr)) (inv_main2 emptyHeap var0 1 1 nullAddr nullAddr var1 nullAddr nullAddr))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main60 var8 var11 var12 var17 var3 var10 var14 var13 var2 var5) (and (and (and (and (and (and (and (and (and (and (= var15 var8) (= var9 var11)) (= var0 var12)) (= var1 var17)) (= var20 var3)) (= var16 var10)) (= var18 var14)) (= var7 var13)) (= var6 var2)) (= var19 var5)) (= var4 (data (getcell (read var8 var13))))))) (inv_main64 var15 var9 var0 var1 var20 var16 var18 var7 var6 var4 var18)))) +(assert (forall ((var0 cell) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Int)) (or (not (and (inv_main16 var10 var12 var14 var18 var5 var11 var16 var15 var4 var9) (and (and (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var10 (O_cell var0)))) (= var19 var12)) (= var17 (+ var9 1))) (= var20 var18)) (= var3 var5)) (= var13 var11)) (= var2 var16)) (= var1 var15)) (= var7 var4)) (= var8 (newAddr (alloc var10 (O_cell var0))))) (= var9 1)))) (inv_main18 var6 var19 var17 var20 var3 var8 var2 var1 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap)) (or (not (and (inv_main9 var11 var2 var5 var8 var4 var1 var7 var6 var3 var10) (and (= var9 0) (not (= var10 0))))) (inv_main42 var11 var2 var5 var8 var4 var1 var7 var6 var3 var0 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (= var8 2))) (inv_main22 var9 var1 (+ var8 1) var7 var3 var0 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (= var8 5))) (inv_main60 var10 var1 var4 (+ var8 1) var3 var0 var7 var6 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (= var8 1))) (inv_main2 var10 var1 var4 (+ var8 1) var3 var0 var7 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main51 var8 var12 var14 var19 var1 var11 var16 var15 var0 var4) (and (and (and (and (and (and (and (and (and (and (= var17 var8) (= var3 var12)) (= var13 var14)) (= var6 var19)) (= var20 var1)) (= var18 var11)) (= var9 var16)) (= var5 var15)) (= var7 var0)) (= var2 var4)) (= var10 (next (getcell (read var8 var15))))))) (inv_main2 var17 var3 var13 var6 var20 var18 var9 var5 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int)) (or (not (and (inv_main64 var7 var11 var13 var20 var3 var10 var17 var15 var2 var4 var8) (and (and (and (and (and (and (and (and (and (= var9 (write var7 var15 (O_cell (cell (data (getcell (read var7 var15))) var8)))) (= var0 var11)) (= var1 var13)) (= var5 var20)) (= var16 var3)) (= var12 var10)) (= var6 var17)) (= var19 var15)) (= var18 var2)) (= var14 var4)))) (inv_main2 var9 var0 var1 1 var16 var12 var19 var19 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (and (= var6 nullAddr) (= var8 2)))) (inv_main2 var10 var1 var4 1 var3 var0 var7 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (and (not (= var6 nullAddr)) (= var8 2)))) (inv_main2 var10 var1 var4 (+ var8 1) var3 var0 var7 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (and (= var1 var6) (= var8 4)))) (inv_main2 var10 var2 var4 (+ var8 1) var3 var0 var7 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (and (not (= var1 var6)) (= var8 4)))) (inv_main2 var10 var1 var4 1 var3 var0 var7 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Int)) (or (not (and (inv_main20 var9 var11 var12 var15 var4 var10 var14 var13 var3) (and (and (and (and (and (and (and (and (= var8 (write var9 var10 (O_cell (cell (data (getcell (read var9 var10))) nullAddr)))) (= var0 var11)) (= var6 var12)) (= var17 var15)) (= var5 var4)) (= var1 var10)) (= var16 var14)) (= var2 var13)) (= var7 var3)))) (inv_main2 var8 var0 var6 var17 var5 var1 var16 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Int)) (or (not (and (inv_main22 var6 var9 var11 var16 var2 var8 var14 var13 var1) (and (and (and (and (and (and (and (and (= var15 (write var6 var8 (O_cell (cell 4 (next (getcell (read var6 var8))))))) (= var5 var9)) (= var17 var11)) (= var3 var16)) (= var12 var2)) (= var0 var8)) (= var10 var14)) (= var4 var13)) (= var7 var1)))) (inv_main2 var15 var5 var17 var3 var12 var0 var10 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (= var8 3))) (inv_main2 var9 var1 (+ var8 1) var7 var1 var0 var6 var5 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main29 var7 var10 var12 var18 var3 var9 var14 var13 var2 var17) (and (and (and (and (and (and (and (and (= var5 (write var7 var9 (O_cell (cell (data (getcell (read var7 var9))) var17)))) (= var6 var10)) (= var0 var12)) (= var1 var18)) (= var11 var3)) (= var15 var9)) (= var16 var14)) (= var4 var13)) (= var8 var2)))) (inv_main2 var5 var6 var0 var1 var11 var15 var16 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (= var8 6))) (inv_main2 var9 var1 1 var7 var3 var0 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (and (= var1 var3) (= var8 5)))) (inv_main2 var9 var0 (+ var8 1) var7 var3 var0 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (and (not (= var1 var3)) (= var8 5)))) (inv_main2 var9 var1 3 var7 var3 var0 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main9 var10 var1 var4 var8 var3 var0 var6 var5 var2 var9) (and (not (= var7 0)) (not (= var9 0))))) (inv_main16 var10 var1 var4 var8 var3 var0 var6 var5 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (inv_main18 var8 var1 var4 var7 var3 var0 var6 var5 var2)) (inv_main20 (write var8 var0 (O_cell (cell 0 (next (getcell (read var8 var0)))))) var1 var4 var7 var3 var0 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Int) (var30 Int) (var31 Addr) (var32 Addr) (var33 Addr) (var34 Addr) (var35 Heap) (var36 Addr) (var37 Int) (var38 Addr) (var39 Addr) (var40 Heap) (var41 Addr) (var42 Addr) (var43 Heap) (var44 Addr) (var45 Int) (var46 Int) (var47 Int) (var48 Addr) (var49 Addr) (var50 Int) (var51 Addr) (var52 Int) (var53 Addr) (var54 Addr)) (or (not (and (inv_main9 var43 var20 var50 var30 var6 var19 var26 var24 var5 var15) (and (and (and (and (and (and (= var26 nullAddr) (and (and (and (and (and (and (and (and (= var2 var43) (= var53 nullAddr)) (= var1 var50)) (= var4 var30)) (= var17 var6)) (= var48 var19)) (= var42 var26)) (= var51 var24)) (= var13 var5))) (and (and (and (and (and (and (and (and (= var40 var2) (= var36 var53)) (= var16 var1)) (= var11 var4)) (= var49 nullAddr)) (= var18 var48)) (= var22 var42)) (= var32 var51)) (= var3 var13))) (and (and (and (and (and (and (and (and (= var35 var40) (= var8 var36)) (= var46 var16)) (= var29 var11)) (= var0 var49)) (= var28 nullAddr)) (= var25 var22)) (= var33 var32)) (= var12 var3))) (and (and (and (and (and (and (and (and (= var7 var35) (= var27 var8)) (= var52 var46)) (= var47 var29)) (= var31 var0)) (= var34 var28)) (= var44 var25)) (= var39 nullAddr)) (= var14 var12))) (and (and (and (and (and (and (and (and (= var10 var7) (= var21 var27)) (= var37 var52)) (= var45 var47)) (= var23 var31)) (= var38 var34)) (= var54 var44)) (= var9 var39)) (= var41 nullAddr))) (= var15 0)))) (and (or (not (not (= var54 nullAddr))) (inv_main0 var10 var21 var37 var45 var23 var38 var54 var9 var41 1)) (or (not (= var54 nullAddr)) (inv_main0 var10 var21 var37 var45 var23 var38 var54 var9 var41 0)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Addr) (var26 Addr) (var27 Int) (var28 Addr) (var29 Heap) (var30 Int) (var31 Addr) (var32 Addr) (var33 Int) (var34 Int) (var35 Int) (var36 Addr) (var37 Addr) (var38 Heap) (var39 Addr) (var40 Addr) (var41 Addr) (var42 Addr) (var43 Addr) (var44 Addr) (var45 Heap) (var46 Addr) (var47 Addr) (var48 Int) (var49 Addr) (var50 Int) (var51 Addr) (var52 Addr) (var53 Addr) (var54 Addr) (var55 Addr) (var56 Int) (var57 Addr) (var58 Int) (var59 Addr) (var60 Heap) (var61 Addr) (var62 Addr) (var63 Addr) (var64 Addr) (var65 Addr) (var66 Addr) (var67 Addr) (var68 Int) (var69 Int) (var70 Addr) (var71 Addr) (var72 Int) (var73 Addr)) (or (not (and (inv_main69 var29 var10 var35 var56 var4 var9 var53 var52 var43) (and (and (and (and (and (and (= var0 nullAddr) (and (and (and (and (and (and (and (and (= var38 var5) (= var44 nullAddr)) (= var12 var50)) (= var48 var72)) (= var14 var71)) (= var3 var6)) (= var55 var0)) (= var42 var39)) (= var22 var21))) (and (and (and (and (and (and (and (and (= var16 var38) (= var25 var44)) (= var58 var12)) (= var33 var48)) (= var70 nullAddr)) (= var65 var3)) (= var32 var55)) (= var66 var42)) (= var20 var22))) (and (and (and (and (and (and (and (and (= var45 var16) (= var51 var25)) (= var68 var58)) (= var24 var33)) (= var18 var70)) (= var26 nullAddr)) (= var67 var32)) (= var23 var66)) (= var57 var20))) (and (and (and (and (and (and (and (and (= var60 var45) (= var61 var51)) (= var13 var68)) (= var69 var24)) (= var62 var18)) (= var49 var26)) (= var28 var67)) (= var19 nullAddr)) (= var15 var57))) (and (and (and (and (and (and (and (and (= var1 var60) (= var64 var61)) (= var27 var13)) (= var11 var69)) (= var46 var62)) (= var31 var49)) (= var63 var28)) (= var7 var19)) (= var36 nullAddr))) (and (and (and (and (and (and (and (and (and (and (= var8 var29) (= var40 var10)) (= var34 var35)) (= var30 var56)) (= var37 var4)) (= var41 var9)) (= var47 var53)) (= var59 var52)) (= var17 var43)) (= var2 (next (getcell (read var29 var53))))) (and (and (and (and (and (and (and (and (and (= var5 (write var8 var47 defObj)) (= var54 var40)) (= var50 var34)) (= var72 var30)) (= var71 var37)) (= var6 var41)) (= var73 var47)) (= var39 var59)) (= var21 var17)) (= var0 var2)))))) (and (or (not (not (= var63 nullAddr))) (inv_main0 var1 var64 var27 var11 var46 var31 var63 var7 var36 1)) (or (not (= var63 nullAddr)) (inv_main0 var1 var64 var27 var11 var46 var31 var63 var7 var36 0)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main9 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (and (not (= var6 nullAddr)) (= var8 0)))) (inv_main69 var9 var1 var4 var7 var3 var0 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int) (var21 Int) (var22 Int) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Int) (var28 Addr)) (or (not (and (inv_main69 var19 var10 var22 var16 var4 var9 var13 var12 var3) (and (not (= var1 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var7 var19) (= var25 var10)) (= var21 var22)) (= var20 var16)) (= var24 var4)) (= var0 var9)) (= var8 var13)) (= var17 var12)) (= var14 var3)) (= var5 (next (getcell (read var19 var13))))) (and (and (and (and (and (and (and (and (and (= var2 (write var7 var8 defObj)) (= var15 var25)) (= var11 var21)) (= var27 var20)) (= var26 var24)) (= var6 var0)) (= var28 var8)) (= var23 var17)) (= var18 var14)) (= var1 var5)))))) (inv_main69 var2 var15 var11 var27 var26 var6 var1 var23 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (or (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (= var8 4))) (inv_main29 var9 var1 (+ var8 1) var7 var3 var0 var6 var5 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (= var8 3))) (inv_main51 var10 var1 var4 (+ var8 1) var3 var0 var7 var6 var2 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main2 var6 var10 var11 var16 var4 var9 var13 var12 var3) (and (not (= var0 0)) (and (and (and (and (and (and (and (and (and (= var5 var6) (= var14 var10)) (= var2 var11)) (= var18 var16)) (= var8 var4)) (= var7 var9)) (= var1 var13)) (= var17 var12)) (= var15 var3)) (or (and (not (= 1 var11)) (= var0 1)) (and (= 1 var11) (= var0 0))))))) (inv_main9 var5 var14 var2 var18 var8 var7 var1 var17 var15 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Heap) (var25 Addr) (var26 Addr) (var27 Int) (var28 Heap)) (or (not (and (inv_main2 var24 var11 var27 var16 var3 var10 var14 var13 var2) (and (not (= var17 0)) (and (and (= var15 0) (and (and (and (and (and (and (and (and (and (= var1 var24) (= var4 var11)) (= var8 var27)) (= var7 var16)) (= var25 var3)) (= var26 var10)) (= var19 var14)) (= var22 var13)) (= var9 var2)) (or (and (not (= 1 var27)) (= var15 1)) (and (= 1 var27) (= var15 0))))) (and (and (and (and (and (and (and (and (and (= var28 var1) (= var6 var4)) (= var21 var8)) (= var0 var7)) (= var23 var25)) (= var12 var26)) (= var5 var19)) (= var18 var22)) (= var20 var9)) (or (and (not (= 1 var7)) (= var17 1)) (and (= 1 var7) (= var17 0)))))))) (inv_main9 var28 var6 var21 var0 var23 var12 var5 var18 var20 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Addr) (var25 Heap) (var26 Addr) (var27 Addr) (var28 Int) (var29 Heap)) (or (not (and (inv_main2 var25 var12 var28 var17 var3 var11 var15 var14 var2) (and (= var18 0) (and (and (= var16 0) (and (and (and (and (and (and (and (and (and (= var1 var25) (= var4 var12)) (= var8 var28)) (= var7 var17)) (= var26 var3)) (= var27 var11)) (= var20 var15)) (= var23 var14)) (= var9 var2)) (or (and (not (= 1 var28)) (= var16 1)) (and (= 1 var28) (= var16 0))))) (and (and (and (and (and (and (and (and (and (= var29 var1) (= var6 var4)) (= var22 var8)) (= var0 var7)) (= var24 var26)) (= var13 var27)) (= var5 var20)) (= var19 var23)) (= var21 var9)) (or (and (not (= 1 var7)) (= var18 1)) (and (= 1 var7) (= var18 0)))))))) (inv_main9 var29 var6 var22 var0 var24 var13 var5 var19 var21 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (not (and (inv_main18 var8 var1 var4 var7 var3 var0 var6 var5 var2) (not (is-O_cell (read var8 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (not (and (inv_main20 var8 var1 var4 var7 var3 var0 var6 var5 var2) (not (is-O_cell (read var8 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (not (and (inv_main22 var8 var1 var4 var7 var3 var0 var6 var5 var2) (not (is-O_cell (read var8 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap)) (not (and (inv_main29 var9 var1 var4 var8 var3 var0 var6 var5 var2 var7) (not (is-O_cell (read var9 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap)) (not (and (inv_main16 var9 var1 var4 var7 var3 var0 var6 var5 var2 var8) (and (and (and (and (and (not (= var8 1)) (not (= var8 2))) (not (= var8 3))) (not (= var8 4))) (not (= var8 5))) (not (= var8 6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap)) (not (and (inv_main51 var9 var1 var4 var8 var3 var0 var7 var6 var2 var5) (not (is-O_cell (read var9 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap)) (not (and (inv_main60 var9 var1 var4 var8 var3 var0 var7 var6 var2 var5) (not (is-O_cell (read var9 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr)) (not (and (inv_main64 var9 var1 var4 var8 var3 var0 var7 var6 var2 var5 var10) (not (is-O_cell (read var9 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (not (and (inv_main42 var10 var1 var4 var9 var3 var0 var7 var6 var2 var5 var8) (and (and (and (and (not (= var8 1)) (not (= var8 2))) (not (= var8 3))) (not (= var8 4))) (not (= var8 5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (not (and (inv_main69 var8 var1 var4 var7 var3 var0 var6 var5 var2) (not (is-O_cell (read var8 var6))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap)) (not (and (inv_main0 var10 var2 var5 var9 var4 var1 var8 var6 var3 var0) (not (= (read var10 var7) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/lockfree-3.2.i.smt2 b/heap-theory-benchmarks/heap/lockfree-3.2.i.smt2 new file mode 100644 index 00000000..3f6c6b6b --- /dev/null +++ b/heap-theory-benchmarks/heap/lockfree-3.2.i.smt2 @@ -0,0 +1,75 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (cell 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_cell (getcell cell)) + (defObj) + ) + ( + (cell (data Int) (next Addr)) + ) +)) +(declare-fun inv_main0 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main20 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Int Int Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Int Int Addr Addr Addr Addr Addr Int Int) Bool) +(declare-fun inv_main51 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main60 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main64 (Heap Addr Int Int Addr Addr Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main69 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(assert (forall ((var0 Addr) (var1 Addr)) (inv_main2 emptyHeap var1 1 1 nullAddr nullAddr var0 nullAddr nullAddr))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main9 var7 var4 var5 var11 var8 var6 var3 var1 var0 var10) (and (= var9 0) (not (= var10 0))))) (inv_main42 var7 var4 var5 var11 var8 var6 var3 var1 var0 var2 var11)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr)) (or (not (and (inv_main60 var6 var4 var12 var19 var14 var13 var3 var11 var0 var10) (and (and (and (and (and (and (and (and (and (and (= var15 var6) (= var9 var4)) (= var1 var12)) (= var2 var19)) (= var20 var14)) (= var16 var13)) (= var17 var3)) (= var8 var11)) (= var7 var0)) (= var18 var10)) (= var5 (data (getcell (read var6 var11))))))) (inv_main64 var15 var9 var1 var2 var20 var16 var17 var8 var7 var5 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (= var0 1))) (inv_main2 var8 var5 var6 (+ var0 1) var9 var7 var4 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main51 var5 var2 var14 var19 var16 var15 var1 var12 var0 var11) (and (and (and (and (and (and (and (and (and (and (= var17 var5) (= var4 var2)) (= var13 var14)) (= var7 var19)) (= var20 var16)) (= var18 var15)) (= var9 var1)) (= var6 var12)) (= var8 var0)) (= var3 var11)) (= var10 (next (getcell (read var5 var12))))))) (inv_main2 var17 var4 var13 var7 var20 var18 var9 var6 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int)) (or (not (and (inv_main64 var5 var4 var15 var20 var17 var16 var3 var13 var0 var12 var11) (and (and (and (and (and (and (and (and (and (= var19 (write var5 var13 (O_cell (cell (data (getcell (read var5 var13))) var11)))) (= var10 var4)) (= var7 var15)) (= var1 var20)) (= var9 var17)) (= var14 var16)) (= var18 var3)) (= var8 var13)) (= var2 var0)) (= var6 var12)))) (inv_main2 var19 var10 var7 1 var9 var14 var8 var8 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (= var3 nullAddr) (= var0 2)))) (inv_main2 var8 var5 var6 1 var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (not (= var3 nullAddr)) (= var0 2)))) (inv_main2 var8 var5 var6 (+ var0 1) var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (= var5 var3) (= var0 4)))) (inv_main2 var8 var1 var6 (+ var0 1) var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (not (= var5 var3)) (= var0 4)))) (inv_main2 var8 var5 var6 1 var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int)) (or (not (and (inv_main20 var6 var5 var12 var17 var14 var13 var4 var10 var0) (and (and (and (and (and (and (and (and (= var16 (write var6 var13 (O_cell (cell (data (getcell (read var6 var13))) nullAddr)))) (= var3 var5)) (= var7 var12)) (= var8 var17)) (= var11 var14)) (= var15 var13)) (= var9 var4)) (= var2 var10)) (= var1 var0)))) (inv_main2 var16 var3 var7 var8 var11 var15 var9 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int)) (or (not (and (inv_main22 var4 var2 var8 var17 var11 var9 var1 var6 var0) (and (and (and (and (and (and (and (and (= var16 (write var4 var9 (O_cell (cell 4 (next (getcell (read var4 var9))))))) (= var13 var2)) (= var3 var8)) (= var10 var17)) (= var12 var11)) (= var5 var9)) (= var14 var1)) (= var15 var6)) (= var7 var0)))) (inv_main2 var16 var13 var3 var10 var12 var5 var14 var15 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 3))) (inv_main2 var6 var3 (+ var8 1) var9 var3 var5 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr)) (or (not (and (inv_main29 var7 var5 var13 var17 var15 var14 var4 var12 var1 var9) (and (and (and (and (and (and (and (and (= var0 (write var7 var14 (O_cell (cell (data (getcell (read var7 var14))) var9)))) (= var8 var5)) (= var11 var13)) (= var2 var17)) (= var10 var15)) (= var18 var14)) (= var6 var4)) (= var3 var12)) (= var16 var1)))) (inv_main2 var0 var8 var11 var2 var10 var18 var6 var3 var16)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 6))) (inv_main2 var6 var3 1 var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (= var3 var7) (= var8 5)))) (inv_main2 var6 var5 (+ var8 1) var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (not (= var3 var7)) (= var8 5)))) (inv_main2 var6 var3 3 var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (= var0 3))) (inv_main51 var8 var5 var6 (+ var0 1) var9 var7 var4 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Int) (var27 Addr) (var28 Int) (var29 Addr) (var30 Addr) (var31 Addr) (var32 Addr) (var33 Addr) (var34 Addr) (var35 Addr) (var36 Int) (var37 Heap) (var38 Addr) (var39 Addr) (var40 Addr) (var41 Heap) (var42 Addr) (var43 Addr) (var44 Addr) (var45 Int) (var46 Heap) (var47 Int) (var48 Int) (var49 Addr) (var50 Int) (var51 Addr) (var52 Addr) (var53 Addr) (var54 Int)) (or (not (and (inv_main9 var9 var8 var20 var54 var23 var21 var7 var43 var0 var36) (and (and (and (and (and (and (= var7 nullAddr) (and (and (and (and (and (and (and (and (= var2 var9) (= var53 nullAddr)) (= var17 var20)) (= var47 var54)) (= var27 var23)) (= var22 var21)) (= var42 var7)) (= var15 var43)) (= var49 var0))) (and (and (and (and (and (and (and (and (= var46 var2) (= var30 var53)) (= var48 var17)) (= var26 var47)) (= var33 nullAddr)) (= var29 var22)) (= var32 var42)) (= var24 var15)) (= var25 var49))) (and (and (and (and (and (and (and (and (= var41 var46) (= var44 var30)) (= var13 var48)) (= var6 var26)) (= var31 var33)) (= var14 nullAddr)) (= var4 var32)) (= var16 var24)) (= var19 var25))) (and (and (and (and (and (and (and (and (= var5 var41) (= var35 var44)) (= var50 var13)) (= var18 var6)) (= var3 var31)) (= var38 var14)) (= var39 var4)) (= var34 nullAddr)) (= var51 var19))) (and (and (and (and (and (and (and (and (= var37 var5) (= var12 var35)) (= var45 var50)) (= var28 var18)) (= var52 var3)) (= var11 var38)) (= var40 var39)) (= var1 var34)) (= var10 nullAddr))) (= var36 0)))) (and (or (not (not (= var40 nullAddr))) (inv_main0 var37 var12 var45 var28 var52 var11 var40 var1 var10 1)) (or (not (= var40 nullAddr)) (inv_main0 var37 var12 var45 var28 var52 var11 var40 var1 var10 0)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Heap) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Int) (var23 Heap) (var24 Int) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Int) (var31 Addr) (var32 Addr) (var33 Int) (var34 Addr) (var35 Addr) (var36 Addr) (var37 Addr) (var38 Int) (var39 Addr) (var40 Addr) (var41 Addr) (var42 Heap) (var43 Addr) (var44 Addr) (var45 Addr) (var46 Int) (var47 Addr) (var48 Int) (var49 Heap) (var50 Int) (var51 Heap) (var52 Addr) (var53 Addr) (var54 Addr) (var55 Int) (var56 Addr) (var57 Addr) (var58 Addr) (var59 Heap) (var60 Addr) (var61 Addr) (var62 Addr) (var63 Heap) (var64 Addr) (var65 Addr) (var66 Addr) (var67 Addr) (var68 Addr) (var69 Addr) (var70 Addr) (var71 Addr) (var72 Int) (var73 Int)) (or (not (and (inv_main69 var5 var4 var16 var73 var56 var54 var45 var69 var41) (and (and (and (and (and (and (= var58 nullAddr) (and (and (and (and (and (and (and (and (= var59 var51) (= var7 nullAddr)) (= var38 var19)) (= var55 var6)) (= var68 var35)) (= var14 var15)) (= var71 var58)) (= var13 var57)) (= var18 var32))) (and (and (and (and (and (and (and (and (= var42 var59) (= var53 var7)) (= var50 var38)) (= var24 var55)) (= var28 nullAddr)) (= var64 var14)) (= var9 var71)) (= var61 var13)) (= var25 var18))) (and (and (and (and (and (and (and (and (= var63 var42) (= var3 var53)) (= var30 var50)) (= var20 var24)) (= var47 var28)) (= var21 nullAddr)) (= var65 var9)) (= var11 var61)) (= var29 var25))) (and (and (and (and (and (and (and (and (= var49 var63) (= var40 var3)) (= var46 var30)) (= var48 var20)) (= var37 var47)) (= var44 var21)) (= var34 var65)) (= var27 nullAddr)) (= var67 var29))) (and (and (and (and (and (and (and (and (= var23 var49) (= var2 var40)) (= var72 var46)) (= var22 var48)) (= var43 var37)) (= var8 var44)) (= var26 var34)) (= var31 var27)) (= var60 nullAddr))) (and (and (and (and (and (and (and (and (and (and (= var17 var5) (= var12 var4)) (= var0 var16)) (= var33 var73)) (= var10 var56)) (= var62 var54)) (= var36 var45)) (= var1 var69)) (= var70 var41)) (= var52 (next (getcell (read var5 var45))))) (and (and (and (and (and (and (and (and (and (= var51 (write var17 var36 defObj)) (= var39 var12)) (= var19 var0)) (= var6 var33)) (= var35 var10)) (= var15 var62)) (= var66 var36)) (= var57 var1)) (= var32 var70)) (= var58 var52)))))) (and (or (not (not (= var26 nullAddr))) (inv_main0 var23 var2 var72 var22 var43 var8 var26 var31 var60 1)) (or (not (= var26 nullAddr)) (inv_main0 var23 var2 var72 var22 var43 var8 var26 var31 var60 0)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main2 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (= var3 nullAddr)))) (inv_main9 var6 var3 var4 var8 var7 var5 var2 var1 var0 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int)) (or (not (and (inv_main2 var5 var3 var14 var18 var16 var15 var2 var13 var0) (and (not (= var17 0)) (and (= var3 nullAddr) (and (and (and (and (and (and (and (and (and (= var1 var5) (= var6 var3)) (= var9 var14)) (= var8 var18)) (= var11 var16)) (= var12 var15)) (= var4 var2)) (= var7 var13)) (= var10 var0)) (or (and (not (= 1 var18)) (= var17 1)) (and (= 1 var18) (= var17 0)))))))) (inv_main9 var1 var6 var9 var8 var11 var12 var4 var7 var10 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int)) (or (not (and (inv_main2 var5 var3 var15 var19 var17 var16 var2 var14 var0) (and (= var18 0) (and (= var3 nullAddr) (and (and (and (and (and (and (and (and (and (= var1 var5) (= var6 var3)) (= var10 var15)) (= var9 var19)) (= var12 var17)) (= var13 var16)) (= var4 var2)) (= var8 var14)) (= var11 var0)) (or (and (not (= 1 var19)) (= var18 1)) (and (= 1 var19) (= var18 0)))))))) (inv_main9 var1 var6 var10 var9 var12 var13 var4 var8 var11 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main9 var6 var3 var4 var10 var7 var5 var2 var1 var0 var8) (and (not (= var9 0)) (not (= var8 0))))) (inv_main16 var6 var3 var4 var10 var7 var5 var2 var1 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 cell) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main16 var7 var5 var12 var19 var14 var13 var4 var9 var1 var15) (and (and (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var7 (O_cell var3)))) (= var0 var5)) (= var17 (+ var15 1))) (= var11 var19)) (= var2 var14)) (= var20 var13)) (= var10 var4)) (= var8 var9)) (= var18 var1)) (= var16 (newAddr (alloc var7 (O_cell var3))))) (= var15 1)))) (inv_main18 var6 var0 var17 var11 var2 var16 var10 var8 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 4))) (inv_main29 var6 var3 (+ var8 1) var9 var7 var5 var2 var1 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main9 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (not (= var2 nullAddr)) (= var8 0)))) (inv_main69 var6 var3 var4 var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Int) (var27 Addr) (var28 Int)) (or (not (and (inv_main69 var6 var5 var14 var28 var16 var15 var4 var22 var1) (and (not (= var18 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var13 var6) (= var10 var5)) (= var2 var14)) (= var26 var28)) (= var8 var16)) (= var20 var15)) (= var27 var4)) (= var3 var22)) (= var23 var1)) (= var11 (next (getcell (read var6 var4))))) (and (and (and (and (and (and (and (and (and (= var9 (write var13 var27 defObj)) (= var0 var10)) (= var19 var2)) (= var7 var26)) (= var25 var8)) (= var12 var20)) (= var21 var27)) (= var17 var3)) (= var24 var23)) (= var18 var11)))))) (inv_main69 var9 var0 var19 var7 var25 var12 var18 var17 var24)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (= var0 5))) (inv_main60 var8 var5 var6 (+ var0 1) var9 var7 var4 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 2))) (inv_main22 var6 var3 (+ var8 1) var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (inv_main18 var6 var3 var4 var8 var7 var5 var2 var1 var0)) (inv_main20 (write var6 var5 (O_cell (cell 0 (next (getcell (read var6 var5)))))) var3 var4 var8 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main18 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main20 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main22 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main29 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (and (and (and (and (not (= var8 1)) (not (= var8 2))) (not (= var8 3))) (not (= var8 4))) (not (= var8 5))) (not (= var8 6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int)) (not (and (inv_main51 var7 var4 var5 var9 var8 var6 var3 var2 var0 var1) (not (is-O_cell (read var7 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int)) (not (and (inv_main60 var7 var4 var5 var9 var8 var6 var3 var2 var0 var1) (not (is-O_cell (read var7 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (not (and (inv_main64 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (not (is-O_cell (read var8 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (and (and (and (not (= var0 1)) (not (= var0 2))) (not (= var0 3))) (not (= var0 4))) (not (= var0 5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main69 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (not (and (inv_main0 var8 var4 var6 var10 var9 var7 var3 var2 var0 var1) (not (= (read var8 var5) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/lockfree-3.3.i.smt2 b/heap-theory-benchmarks/heap/lockfree-3.3.i.smt2 new file mode 100644 index 00000000..061746fb --- /dev/null +++ b/heap-theory-benchmarks/heap/lockfree-3.3.i.smt2 @@ -0,0 +1,75 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (cell 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_cell (getcell cell)) + (defObj) + ) + ( + (cell (data Int) (next Addr)) + ) +)) +(declare-fun inv_main0 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main18 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main20 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Int Int Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Int Int Addr Addr Addr Addr Addr Int Int) Bool) +(declare-fun inv_main51 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main60 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main64 (Heap Addr Int Int Addr Addr Addr Addr Addr Int Addr) Bool) +(declare-fun inv_main69 (Heap Addr Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Int Addr Addr Addr Addr Addr Int) Bool) +(assert (forall ((var0 Addr) (var1 Addr)) (inv_main2 emptyHeap var1 1 1 nullAddr nullAddr var0 nullAddr nullAddr))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main9 var7 var4 var5 var11 var8 var6 var3 var1 var0 var10) (and (= var9 0) (not (= var10 0))))) (inv_main42 var7 var4 var5 var11 var8 var6 var3 var1 var0 var2 var11)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr)) (or (not (and (inv_main60 var6 var4 var12 var19 var14 var13 var3 var11 var0 var10) (and (and (and (and (and (and (and (and (and (and (= var15 var6) (= var9 var4)) (= var1 var12)) (= var2 var19)) (= var20 var14)) (= var16 var13)) (= var17 var3)) (= var8 var11)) (= var7 var0)) (= var18 var10)) (= var5 (data (getcell (read var6 var11))))))) (inv_main64 var15 var9 var1 var2 var20 var16 var17 var8 var7 var5 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (= var0 1))) (inv_main2 var8 var5 var6 (+ var0 1) var9 var7 var4 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main51 var5 var2 var14 var19 var16 var15 var1 var12 var0 var11) (and (and (and (and (and (and (and (and (and (and (= var17 var5) (= var4 var2)) (= var13 var14)) (= var7 var19)) (= var20 var16)) (= var18 var15)) (= var9 var1)) (= var6 var12)) (= var8 var0)) (= var3 var11)) (= var10 (next (getcell (read var5 var12))))))) (inv_main2 var17 var4 var13 var7 var20 var18 var9 var6 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int)) (or (not (and (inv_main64 var5 var4 var15 var20 var17 var16 var3 var13 var0 var12 var11) (and (and (and (and (and (and (and (and (and (= var19 (write var5 var13 (O_cell (cell (data (getcell (read var5 var13))) var11)))) (= var10 var4)) (= var7 var15)) (= var1 var20)) (= var9 var17)) (= var14 var16)) (= var18 var3)) (= var8 var13)) (= var2 var0)) (= var6 var12)))) (inv_main2 var19 var10 var7 1 var9 var14 var8 var8 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (= var3 nullAddr) (= var0 2)))) (inv_main2 var8 var5 var6 1 var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (not (= var3 nullAddr)) (= var0 2)))) (inv_main2 var8 var5 var6 (+ var0 1) var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (= var5 var3) (= var0 4)))) (inv_main2 var8 var1 var6 (+ var0 1) var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (not (= var5 var3)) (= var0 4)))) (inv_main2 var8 var5 var6 1 var9 var7 var4 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int)) (or (not (and (inv_main20 var6 var5 var12 var17 var14 var13 var4 var10 var0) (and (and (and (and (and (and (and (and (= var16 (write var6 var13 (O_cell (cell (data (getcell (read var6 var13))) nullAddr)))) (= var3 var5)) (= var7 var12)) (= var8 var17)) (= var11 var14)) (= var15 var13)) (= var9 var4)) (= var2 var10)) (= var1 var0)))) (inv_main2 var16 var3 var7 var8 var11 var15 var9 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int)) (or (not (and (inv_main22 var4 var2 var8 var17 var11 var9 var1 var6 var0) (and (and (and (and (and (and (and (and (= var16 (write var4 var9 (O_cell (cell 4 (next (getcell (read var4 var9))))))) (= var13 var2)) (= var3 var8)) (= var10 var17)) (= var12 var11)) (= var5 var9)) (= var14 var1)) (= var15 var6)) (= var7 var0)))) (inv_main2 var16 var13 var3 var10 var12 var5 var14 var15 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 3))) (inv_main2 var6 var3 (+ var8 1) var9 var3 var5 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr)) (or (not (and (inv_main29 var7 var5 var13 var17 var15 var14 var4 var12 var1 var9) (and (and (and (and (and (and (and (and (= var0 (write var7 var14 (O_cell (cell (data (getcell (read var7 var14))) var9)))) (= var8 var5)) (= var11 var13)) (= var2 var17)) (= var10 var15)) (= var18 var14)) (= var6 var4)) (= var3 var12)) (= var16 var1)))) (inv_main2 var0 var8 var11 var2 var10 var18 var6 var3 var16)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 6))) (inv_main2 var6 var3 1 var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (= var3 var7) (= var8 5)))) (inv_main2 var6 var5 (+ var8 1) var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (not (= var3 var7)) (= var8 5)))) (inv_main2 var6 var3 3 var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (= var0 3))) (inv_main51 var8 var5 var6 (+ var0 1) var9 var7 var4 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Int) (var27 Addr) (var28 Int) (var29 Addr) (var30 Addr) (var31 Addr) (var32 Addr) (var33 Addr) (var34 Addr) (var35 Addr) (var36 Int) (var37 Heap) (var38 Addr) (var39 Addr) (var40 Addr) (var41 Heap) (var42 Addr) (var43 Addr) (var44 Addr) (var45 Int) (var46 Heap) (var47 Int) (var48 Int) (var49 Addr) (var50 Int) (var51 Addr) (var52 Addr) (var53 Addr) (var54 Int)) (or (not (and (inv_main9 var9 var8 var20 var54 var23 var21 var7 var43 var0 var36) (and (and (and (and (and (and (= var7 nullAddr) (and (and (and (and (and (and (and (and (= var2 var9) (= var53 nullAddr)) (= var17 var20)) (= var47 var54)) (= var27 var23)) (= var22 var21)) (= var42 var7)) (= var15 var43)) (= var49 var0))) (and (and (and (and (and (and (and (and (= var46 var2) (= var30 var53)) (= var48 var17)) (= var26 var47)) (= var33 nullAddr)) (= var29 var22)) (= var32 var42)) (= var24 var15)) (= var25 var49))) (and (and (and (and (and (and (and (and (= var41 var46) (= var44 var30)) (= var13 var48)) (= var6 var26)) (= var31 var33)) (= var14 nullAddr)) (= var4 var32)) (= var16 var24)) (= var19 var25))) (and (and (and (and (and (and (and (and (= var5 var41) (= var35 var44)) (= var50 var13)) (= var18 var6)) (= var3 var31)) (= var38 var14)) (= var39 var4)) (= var34 nullAddr)) (= var51 var19))) (and (and (and (and (and (and (and (and (= var37 var5) (= var12 var35)) (= var45 var50)) (= var28 var18)) (= var52 var3)) (= var11 var38)) (= var40 var39)) (= var1 var34)) (= var10 nullAddr))) (= var36 0)))) (and (or (not (not (= var40 nullAddr))) (inv_main0 var37 var12 var45 var28 var52 var11 var40 var1 var10 1)) (or (not (= var40 nullAddr)) (inv_main0 var37 var12 var45 var28 var52 var11 var40 var1 var10 0)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Heap) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Int) (var23 Heap) (var24 Int) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Int) (var31 Addr) (var32 Addr) (var33 Int) (var34 Addr) (var35 Addr) (var36 Addr) (var37 Addr) (var38 Int) (var39 Addr) (var40 Addr) (var41 Addr) (var42 Heap) (var43 Addr) (var44 Addr) (var45 Addr) (var46 Int) (var47 Addr) (var48 Int) (var49 Heap) (var50 Int) (var51 Heap) (var52 Addr) (var53 Addr) (var54 Addr) (var55 Int) (var56 Addr) (var57 Addr) (var58 Addr) (var59 Heap) (var60 Addr) (var61 Addr) (var62 Addr) (var63 Heap) (var64 Addr) (var65 Addr) (var66 Addr) (var67 Addr) (var68 Addr) (var69 Addr) (var70 Addr) (var71 Addr) (var72 Int) (var73 Int)) (or (not (and (inv_main69 var5 var4 var16 var73 var56 var54 var45 var69 var41) (and (and (and (and (and (and (= var58 nullAddr) (and (and (and (and (and (and (and (and (= var59 var51) (= var7 nullAddr)) (= var38 var19)) (= var55 var6)) (= var68 var35)) (= var14 var15)) (= var71 var58)) (= var13 var57)) (= var18 var32))) (and (and (and (and (and (and (and (and (= var42 var59) (= var53 var7)) (= var50 var38)) (= var24 var55)) (= var28 nullAddr)) (= var64 var14)) (= var9 var71)) (= var61 var13)) (= var25 var18))) (and (and (and (and (and (and (and (and (= var63 var42) (= var3 var53)) (= var30 var50)) (= var20 var24)) (= var47 var28)) (= var21 nullAddr)) (= var65 var9)) (= var11 var61)) (= var29 var25))) (and (and (and (and (and (and (and (and (= var49 var63) (= var40 var3)) (= var46 var30)) (= var48 var20)) (= var37 var47)) (= var44 var21)) (= var34 var65)) (= var27 nullAddr)) (= var67 var29))) (and (and (and (and (and (and (and (and (= var23 var49) (= var2 var40)) (= var72 var46)) (= var22 var48)) (= var43 var37)) (= var8 var44)) (= var26 var34)) (= var31 var27)) (= var60 nullAddr))) (and (and (and (and (and (and (and (and (and (and (= var17 var5) (= var12 var4)) (= var0 var16)) (= var33 var73)) (= var10 var56)) (= var62 var54)) (= var36 var45)) (= var1 var69)) (= var70 var41)) (= var52 (next (getcell (read var5 var45))))) (and (and (and (and (and (and (and (and (and (= var51 (write var17 var36 defObj)) (= var39 var12)) (= var19 var0)) (= var6 var33)) (= var35 var10)) (= var15 var62)) (= var66 var36)) (= var57 var1)) (= var32 var70)) (= var58 var52)))))) (and (or (not (not (= var26 nullAddr))) (inv_main0 var23 var2 var72 var22 var43 var8 var26 var31 var60 1)) (or (not (= var26 nullAddr)) (inv_main0 var23 var2 var72 var22 var43 var8 var26 var31 var60 0)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main2 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (= var3 nullAddr)))) (inv_main9 var6 var3 var4 var8 var7 var5 var2 var1 var0 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int)) (or (not (and (inv_main2 var5 var3 var14 var18 var16 var15 var2 var13 var0) (and (not (= var17 0)) (and (= var3 nullAddr) (and (and (and (and (and (and (and (and (and (= var1 var5) (= var6 var3)) (= var9 var14)) (= var8 var18)) (= var11 var16)) (= var12 var15)) (= var4 var2)) (= var7 var13)) (= var10 var0)) (or (and (not (= 1 var14)) (= var17 1)) (and (= 1 var14) (= var17 0)))))))) (inv_main9 var1 var6 var9 var8 var11 var12 var4 var7 var10 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int)) (or (not (and (inv_main2 var5 var3 var15 var19 var17 var16 var2 var14 var0) (and (= var18 0) (and (= var3 nullAddr) (and (and (and (and (and (and (and (and (and (= var1 var5) (= var6 var3)) (= var10 var15)) (= var9 var19)) (= var12 var17)) (= var13 var16)) (= var4 var2)) (= var8 var14)) (= var11 var0)) (or (and (not (= 1 var15)) (= var18 1)) (and (= 1 var15) (= var18 0)))))))) (inv_main9 var1 var6 var10 var9 var12 var13 var4 var8 var11 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main9 var6 var3 var4 var10 var7 var5 var2 var1 var0 var8) (and (not (= var9 0)) (not (= var8 0))))) (inv_main16 var6 var3 var4 var10 var7 var5 var2 var1 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 cell) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main16 var7 var5 var12 var19 var14 var13 var4 var9 var1 var15) (and (and (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var7 (O_cell var3)))) (= var0 var5)) (= var17 (+ var15 1))) (= var11 var19)) (= var2 var14)) (= var20 var13)) (= var10 var4)) (= var8 var9)) (= var18 var1)) (= var16 (newAddr (alloc var7 (O_cell var3))))) (= var15 1)))) (inv_main18 var6 var0 var17 var11 var2 var16 var10 var8 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 4))) (inv_main29 var6 var3 (+ var8 1) var9 var7 var5 var2 var1 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main9 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (not (= var2 nullAddr)) (= var8 0)))) (inv_main69 var6 var3 var4 var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Int) (var27 Addr) (var28 Int)) (or (not (and (inv_main69 var6 var5 var14 var28 var16 var15 var4 var22 var1) (and (not (= var18 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var13 var6) (= var10 var5)) (= var2 var14)) (= var26 var28)) (= var8 var16)) (= var20 var15)) (= var27 var4)) (= var3 var22)) (= var23 var1)) (= var11 (next (getcell (read var6 var4))))) (and (and (and (and (and (and (and (and (and (= var9 (write var13 var27 defObj)) (= var0 var10)) (= var19 var2)) (= var7 var26)) (= var25 var8)) (= var12 var20)) (= var21 var27)) (= var17 var3)) (= var24 var23)) (= var18 var11)))))) (inv_main69 var9 var0 var19 var7 var25 var12 var18 var17 var24)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (= var0 5))) (inv_main60 var8 var5 var6 (+ var0 1) var9 var7 var4 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (= var8 2))) (inv_main22 var6 var3 (+ var8 1) var9 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (inv_main18 var6 var3 var4 var8 var7 var5 var2 var1 var0)) (inv_main20 (write var6 var5 (O_cell (cell 0 (next (getcell (read var6 var5)))))) var3 var4 var8 var7 var5 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main18 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main20 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main22 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main29 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (not (is-O_cell (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int)) (not (and (inv_main16 var6 var3 var4 var9 var7 var5 var2 var1 var0 var8) (and (and (and (and (and (not (= var8 1)) (not (= var8 2))) (not (= var8 3))) (not (= var8 4))) (not (= var8 5))) (not (= var8 6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int)) (not (and (inv_main51 var7 var4 var5 var9 var8 var6 var3 var2 var0 var1) (not (is-O_cell (read var7 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int)) (not (and (inv_main60 var7 var4 var5 var9 var8 var6 var3 var2 var0 var1) (not (is-O_cell (read var7 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (not (and (inv_main64 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (not (is-O_cell (read var8 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (not (and (inv_main42 var8 var5 var6 var10 var9 var7 var4 var3 var1 var2 var0) (and (and (and (and (not (= var0 1)) (not (= var0 2))) (not (= var0 3))) (not (= var0 4))) (not (= var0 5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main69 var6 var3 var4 var8 var7 var5 var2 var1 var0) (not (is-O_cell (read var6 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (not (and (inv_main0 var8 var4 var6 var10 var9 var7 var3 var2 var0 var1) (not (= (read var8 var5) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/min_max.i.smt2 b/heap-theory-benchmarks/heap/min_max.i.smt2 new file mode 100644 index 00000000..43b02127 --- /dev/null +++ b/heap-theory-benchmarks/heap/min_max.i.smt2 @@ -0,0 +1,63 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (val Int)) + ) +)) +(declare-fun inv_main10 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main11 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main14 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main22 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main23 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main26 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main27 (Heap Addr Int Int Addr) Bool) +(declare-fun inv_main4 (Heap Addr Int Int) Bool) +(declare-fun inv_main9 (Heap Addr Int Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Addr)) (or (not (and (inv_main26 var8 var0 var6 var3 var5) (and (not (= var10 nullAddr)) (and (and (and (and (and (= var9 var8) (= var2 var0)) (= var4 var6)) (= var1 var3)) (= var7 var5)) (= var10 (next (getnode (read var8 var5)))))))) (inv_main21 var9 var2 var4 var1 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int)) (or (not (and (inv_main4 var3 var0 var2 var1) (and (not (= var0 nullAddr)) (= var4 0)))) (inv_main21 var3 var0 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap)) (or (not (and (inv_main21 var9 var0 var8 var5 var7) (and (<= 0 (+ (+ var1 (* (- 1) var2)) (- 1))) (and (and (and (and (and (= var10 var9) (= var3 var0)) (= var1 var8)) (= var4 var5)) (= var6 var7)) (= var2 (val (getnode (read var9 var7)))))))) (inv_main23 var10 var3 var1 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main13 var4 var0 var3 var1 var2) (<= 0 (+ (+ (val (getnode (read var4 var2))) (* (- 1) var1)) (- 1))))) (inv_main17 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr)) (or (not (and (inv_main9 var8 var1 var7 var2 var4) (and (and (and (and (= var5 (write var8 var4 (O_node (node var1 (val (getnode (read var8 var4))))))) (= var9 var1)) (= var0 var7)) (= var3 var2)) (= var6 var4)))) (inv_main11 var5 var6 var0 var3 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr)) (or (not (and (inv_main14 var8 var2 var7 var4 var6) (and (and (and (and (and (= var1 var8) (= var3 var2)) (= var0 var7)) (= var5 var4)) (= var10 var6)) (= var9 (val (getnode (read var8 var6))))))) (inv_main13 var1 var3 var9 var5 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main11 var4 var0 var3 var1 var2) (not (<= 0 (+ (+ var3 (* (- 1) (val (getnode (read var4 var2))))) (- 1)))))) (inv_main13 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 node) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main4 var8 var0 var6 var1) (and (and (and (and (and (= var5 (newHeap (alloc var8 (O_node var7)))) (= var3 var0)) (= var10 var6)) (= var4 var1)) (= var9 (newAddr (alloc var8 (O_node var7))))) (not (= var2 0))))) (inv_main10 var5 var3 var10 var4 var9)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int)) (or (not (and (inv_main22 var9 var1 var8 var4 var6) (and (<= 0 (+ (+ var10 (* (- 1) var7)) (- 1))) (and (and (and (and (and (= var3 var9) (= var2 var1)) (= var0 var8)) (= var7 var4)) (= var5 var6)) (= var10 (val (getnode (read var9 var6)))))))) (inv_main27 var3 var2 var0 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main11 var4 var0 var3 var1 var2) (<= 0 (+ (+ var3 (* (- 1) (val (getnode (read var4 var2))))) (- 1))))) (inv_main14 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap)) (or (not (inv_main10 var5 var0 var4 var2 var3)) (inv_main9 (write var5 var3 (O_node (node (next (getnode (read var5 var3))) var1))) var0 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Heap)) (or (not (and (inv_main17 var9 var0 var7 var3 var4) (and (and (and (and (and (= var10 var9) (= var8 var0)) (= var6 var7)) (= var2 var3)) (= var1 var4)) (= var5 (val (getnode (read var9 var4))))))) (inv_main4 var10 var8 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main13 var4 var0 var3 var1 var2) (not (<= 0 (+ (+ (val (getnode (read var4 var2))) (* (- 1) var1)) (- 1)))))) (inv_main4 var4 var0 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (and (inv_main2 var2) (and (= var0 var2) (= var1 nullAddr)))) (inv_main4 var0 var1 2147483647 (- 2147483647))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main23 var4 var0 var3 var1 var2)) (inv_main22 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr)) (or (not (and (inv_main21 var9 var2 var8 var5 var6) (and (not (<= 0 (+ (+ var4 (* (- 1) var7)) (- 1)))) (and (and (and (and (and (= var1 var9) (= var0 var2)) (= var4 var8)) (= var3 var5)) (= var10 var6)) (= var7 (val (getnode (read var9 var6)))))))) (inv_main22 var1 var0 var4 var3 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main27 var4 var0 var3 var1 var2)) (inv_main26 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int)) (or (not (and (inv_main22 var9 var1 var8 var4 var6) (and (not (<= 0 (+ (+ var10 (* (- 1) var0)) (- 1)))) (and (and (and (and (and (= var2 var9) (= var7 var1)) (= var5 var8)) (= var0 var4)) (= var3 var6)) (= var10 (val (getnode (read var9 var6)))))))) (inv_main26 var2 var7 var5 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main10 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main9 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main11 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main14 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main13 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main17 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main21 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main23 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main22 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main27 var4 var0 var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main26 var4 var0 var3 var1 var2) (not (is-O_node (read var4 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/quick_sort_split.i.smt2 b/heap-theory-benchmarks/heap/quick_sort_split.i.smt2 new file mode 100644 index 00000000..3151eeee --- /dev/null +++ b/heap-theory-benchmarks/heap/quick_sort_split.i.smt2 @@ -0,0 +1,80 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (expected_list Int) (value Int) (next Addr)) + ) +)) +(declare-fun inv_main17 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main18 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main24 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main25 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main26 (Heap Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (or (not (inv_main24 var3 var2 var1 var5 var4 var0 var6)) (inv_main25 (write var3 var6 (O_node (node (expected_list (getnode (read var3 var6))) (value (getnode (read var3 var6))) var2))) var2 var1 var5 var4 var0 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main32 var1 var0 var3 var2 var4) (and (not (= var2 nullAddr)) (= var3 nullAddr)))) (inv_main47 var1 var0 var3 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main48 var4 var2 var7 var6 var8) (and (not (= var1 nullAddr)) (and (and (and (and (and (= var10 var4) (= var9 var2)) (= var0 var7)) (= var5 var6)) (= var3 var8)) (= var1 (next (getnode (read var4 var6)))))))) (inv_main47 var10 var9 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main33 var4 var1 var9 var8 var10) (and (<= 0 var3) (and (and (and (and (and (= var7 var4) (= var6 var1)) (= var2 var9)) (= var5 var8)) (= var0 var10)) (= var3 (value (getnode (read var4 var10)))))))) (inv_main36 var7 var6 var2 var5 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main33 var1 var0 var9 var8 var10) (and (not (<= 0 var2)) (and (and (and (and (and (= var6 var1) (= var7 var0)) (= var5 var9)) (= var4 var8)) (= var3 var10)) (= var2 (value (getnode (read var1 var10)))))))) (inv_main36 var6 var7 var5 var4 var3 var5)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Addr) (var4 Heap)) (or (not (and (inv_main6 var4 var3) (and (not (<= 0 (+ (* (- 1) var2) (- 1)))) (not (= var0 0))))) (inv_main24 (newHeap (alloc var4 (O_node var1))) var3 var2 1 var2 1 (newAddr (alloc var4 (O_node var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main43 var1 var0 var3 var2 var4)) (inv_main42 var1 var0 var3 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main41 var4 var2 var7 var6 var8) (and (= var9 (- 1)) (and (and (and (and (and (= var0 var4) (= var3 var2)) (= var1 var7)) (= var5 var6)) (= var10 var8)) (= var9 (expected_list (getnode (read var4 var7)))))))) (inv_main42 var0 var3 var1 var5 var10)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main37 var1 var8 var12 var11 var13 var6 var7) (and (not (= var10 nullAddr)) (and (and (and (and (and (and (= var0 (write var1 var13 (O_node (node (expected_list (getnode (read var1 var13))) (value (getnode (read var1 var13))) var6)))) (= var2 var8)) (= var3 var12)) (= var5 var11)) (= var4 var13)) (= var9 var6)) (= var10 var7))))) (inv_main33 var0 var2 var3 var5 var10)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main6 var6 var5) (and (and (and (not (= var7 nullAddr)) (and (and (and (= var1 var0) (= var7 var8)) (= var4 var9)) (= var3 nullAddr))) (and (and (= var0 var6) (= var8 var5)) (= var9 nullAddr))) (= var2 0)))) (inv_main33 var1 var7 var4 var3 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main19 var5 var4 var2 var13 var12 var11 var9) (and (and (and (and (and (and (= var1 (write var5 var9 (O_node (node var11 (value (getnode (read var5 var9))) (next (getnode (read var5 var9))))))) (= var7 var4)) (= var6 var2)) (= var0 var13)) (= var8 var12)) (= var10 var11)) (= var3 var9)))) (inv_main6 var1 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main26 var5 var4 var3 var12 var11 var0 var7) (and (and (and (and (and (and (= var10 (write var5 var7 (O_node (node var0 (value (getnode (read var5 var7))) (next (getnode (read var5 var7))))))) (= var2 var4)) (= var1 var3)) (= var9 var12)) (= var13 var11)) (= var8 var0)) (= var6 var7)))) (inv_main6 var10 var6)))) +(assert (forall ((var0 Heap)) (or (not (inv_main2 var0)) (inv_main6 var0 nullAddr)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main47 var4 var3 var8 var7 var9) (and (not (= var6 1)) (and (and (and (and (and (= var0 var4) (= var1 var3)) (= var2 var8)) (= var10 var7)) (= var5 var9)) (= var6 (expected_list (getnode (read var4 var7)))))))) (inv_main49 var0 var1 var2 var10 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main32 var1 var0 var3 var2 var4) (not (= var3 nullAddr)))) (inv_main41 var1 var0 var3 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 node)) (or (not (and (inv_main6 var2 var1) (and (<= 0 (+ (* (- 1) var3) (- 1))) (not (= var0 0))))) (inv_main17 (newHeap (alloc var2 (O_node var4))) var1 var3 1 var3 (- 1) (newAddr (alloc var2 (O_node var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main41 var2 var0 var7 var6 var8) (and (not (= var3 (- 1))) (and (and (and (and (and (= var1 var2) (= var4 var0)) (= var10 var7)) (= var5 var6)) (= var9 var8)) (= var3 (expected_list (getnode (read var2 var7)))))))) (inv_main43 var1 var4 var10 var5 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main36 var2 var1 var4 var3 var5 var0)) (inv_main37 var2 var1 var4 var3 var5 var0 (next (getnode (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main49 var1 var0 var3 var2 var4)) (inv_main48 var1 var0 var3 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main47 var3 var1 var7 var6 var8) (and (= var5 1) (and (and (and (and (and (= var10 var3) (= var4 var1)) (= var2 var7)) (= var9 var6)) (= var0 var8)) (= var5 (expected_list (getnode (read var3 var6)))))))) (inv_main48 var10 var4 var2 var9 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main18 var3 var2 var1 var6 var5 var4 var0)) (inv_main19 (write var3 var0 (O_node (node (expected_list (getnode (read var3 var0))) var5 (next (getnode (read var3 var0)))))) var2 var1 var6 var5 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main17 var3 var2 var1 var6 var5 var4 var0)) (inv_main18 (write var3 var0 (O_node (node (expected_list (getnode (read var3 var0))) (value (getnode (read var3 var0))) var2))) var2 var1 var6 var5 var4 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (or (not (inv_main25 var3 var2 var1 var5 var4 var0 var6)) (inv_main26 (write var3 var6 (O_node (node (expected_list (getnode (read var3 var6))) var4 (next (getnode (read var3 var6)))))) var2 var1 var5 var4 var0 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main42 var3 var1 var6 var5 var7) (and (and (and (and (and (= var8 var3) (= var10 var1)) (= var4 var6)) (= var9 var5)) (= var0 var7)) (= var2 (next (getnode (read var3 var6))))))) (inv_main32 var8 var10 var2 var9 var0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main37 var1 var8 var12 var11 var13 var6 var7) (and (= var10 nullAddr) (and (and (and (and (and (and (= var0 (write var1 var13 (O_node (node (expected_list (getnode (read var1 var13))) (value (getnode (read var1 var13))) var6)))) (= var2 var8)) (= var3 var12)) (= var5 var11)) (= var4 var13)) (= var9 var6)) (= var10 var7))))) (inv_main32 var0 var2 var3 var5 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main6 var4 var3) (and (and (and (= var2 nullAddr) (and (and (and (= var7 var6) (= var2 var8)) (= var9 var5)) (= var1 nullAddr))) (and (and (= var6 var4) (= var8 var3)) (= var5 nullAddr))) (= var0 0)))) (inv_main32 var7 var2 var9 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main17 var3 var2 var1 var6 var5 var4 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main18 var3 var2 var1 var6 var5 var4 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main19 var3 var2 var1 var6 var5 var4 var0) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main24 var3 var2 var1 var5 var4 var0 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main25 var3 var2 var1 var5 var4 var0 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (not (and (inv_main26 var3 var2 var1 var5 var4 var0 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main33 var1 var0 var3 var2 var4) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main36 var2 var1 var4 var3 var5 var0) (not (is-O_node (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main37 var3 var2 var5 var4 var6 var0 var1) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main41 var1 var0 var3 var2 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (inv_main43 var1 var0 var3 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main42 var1 var0 var3 var2 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main47 var1 var0 var3 var2 var4) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (inv_main49 var1 var0 var3 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main48 var1 var0 var3 var2 var4) (not (is-O_node (read var1 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/simple-2.i.smt2 b/heap-theory-benchmarks/heap/simple-2.i.smt2 new file mode 100644 index 00000000..1d44644c --- /dev/null +++ b/heap-theory-benchmarks/heap/simple-2.i.smt2 @@ -0,0 +1,59 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main24 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main12 var3 var2 var0 var1)) (inv_main26 (write var3 var1 (O_node (node 1 (n (getnode (read var3 var1)))))) var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main24 var6 var5 var2 var4) (and (= var3 0) (and (and (and (and (= var7 var6) (= var9 var5)) (= var0 var2)) (= var1 var4)) (= var8 (n (getnode (read var6 var4)))))))) (inv_main12 var7 var9 var0 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 node)) (or (not (and (inv_main2 var2) (and (= var3 0) (and (not (= var0 nullAddr)) (and (= var4 (newHeap (alloc var2 (O_node var5)))) (= var0 (newAddr (alloc var2 (O_node var5))))))))) (inv_main12 var4 var0 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int)) (or (not (inv_main7 var1 var0 var2)) (inv_main7 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 node)) (or (not (and (inv_main2 var1) (and (= var2 nullAddr) (and (= var0 (newHeap (alloc var1 (O_node var3)))) (= var2 (newAddr (alloc var1 (O_node var3)))))))) (inv_main7 var0 var2 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (inv_main30 var5 var4 var1 var3) (and (= var8 1) (and (and (and (and (= var7 var5) (= var2 var4)) (= var6 var1)) (= var0 var3)) (= var8 (h (getnode (read var5 var3)))))))) (inv_main31 var7 var2 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 node) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Heap) (var13 Addr)) (or (not (and (inv_main13 var11 var10 var3 var5) (and (not (= var4 nullAddr)) (and (and (and (and (and (= var12 (newHeap (alloc var6 (O_node var7)))) (= var13 var9)) (= var1 var0)) (= var8 var2)) (= var4 (newAddr (alloc var6 (O_node var7))))) (and (and (and (= var6 (write var11 var5 (O_node (node 1 (n (getnode (read var11 var5))))))) (= var9 var10)) (= var0 var3)) (= var2 var5)))))) (inv_main18 var12 var13 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main24 var6 var5 var3 var4) (and (not (= var2 0)) (and (and (and (and (= var7 var6) (= var9 var5)) (= var0 var3)) (= var1 var4)) (= var8 (n (getnode (read var6 var4)))))))) (inv_main13 var7 var9 var0 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 node)) (or (not (and (inv_main2 var1) (and (not (= var3 0)) (and (not (= var0 nullAddr)) (and (= var4 (newHeap (alloc var1 (O_node var5)))) (= var0 (newAddr (alloc var1 (O_node var5))))))))) (inv_main13 var4 var0 var2 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (inv_main21 var4 var3 var1 var2 var0)) (inv_main21 var4 var3 var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 node) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Heap) (var13 Addr)) (or (not (and (inv_main13 var11 var10 var3 var5) (and (= var4 nullAddr) (and (and (and (and (and (= var12 (newHeap (alloc var6 (O_node var7)))) (= var13 var9)) (= var1 var0)) (= var8 var2)) (= var4 (newAddr (alloc var6 (O_node var7))))) (and (and (and (= var6 (write var11 var5 (O_node (node 1 (n (getnode (read var11 var5))))))) (= var9 var10)) (= var0 var3)) (= var2 var5)))))) (inv_main21 var12 var13 var4 var8 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main18 var3 var2 var0 var1)) (inv_main24 (write var3 var1 (O_node (node (h (getnode (read var3 var1))) var0))) var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main31 var3 var2 var0 var1) (and (= var5 nullAddr) (and (and (and (and (= var8 var3) (= var7 var2)) (= var4 var0)) (= var6 var1)) (= var5 (n (getnode (read var3 var1)))))))) (inv_main0 var8 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main26 var4 var3 var0 var2) (and (= var1 nullAddr) (and (and (and (= var7 (write var4 var2 (O_node (node (h (getnode (read var4 var2))) 0)))) (= var1 var3)) (= var6 var0)) (= var5 var2))))) (inv_main0 var7 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main31 var3 var2 var0 var1) (and (not (= var5 nullAddr)) (and (and (and (and (= var8 var3) (= var7 var2)) (= var4 var0)) (= var6 var1)) (= var5 (n (getnode (read var3 var1)))))))) (inv_main30 var8 var7 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main26 var4 var3 var0 var2) (and (not (= var1 nullAddr)) (and (and (and (= var7 (write var4 var2 (O_node (node (h (getnode (read var4 var2))) 0)))) (= var1 var3)) (= var6 var0)) (= var5 var2))))) (inv_main30 var7 var1 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main30 var7 var6 var3 var5) (and (not (= var4 1)) (and (and (and (and (= var2 var7) (= var1 var6)) (= var8 var3)) (= var0 var5)) (= var4 (h (getnode (read var7 var5)))))))) (inv_main32 var2 var1 var8 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main13 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main18 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main24 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main12 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main26 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main30 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main32 var3 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main31 var3 var2 var0 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (not (and (inv_main0 var2 var1) (not (= (read var2 var0) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/simple-ext.i.smt2 b/heap-theory-benchmarks/heap/simple-ext.i.smt2 new file mode 100644 index 00000000..5bb950da --- /dev/null +++ b/heap-theory-benchmarks/heap/simple-ext.i.smt2 @@ -0,0 +1,62 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main12 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main35 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main13 var3 var4 var2 var0 var1)) (inv_main29 (write var3 var0 (O_node (node var1 (n (getnode (read var3 var0)))))) var4 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main12 var3 var4 var2 var0 var1) (not (<= 0 (+ (+ 30 (* (- 1) var1)) (- 1)))))) (inv_main13 var3 var4 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main12 var4 var5 var3 var0 var1) (and (= var2 0) (<= 0 (+ (+ 30 (* (- 1) var1)) (- 1)))))) (inv_main13 var4 var5 var3 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main20 var3 var4 var2 var0 var1)) (inv_main26 (write var3 var0 (O_node (node (h (getnode (read var3 var0))) var2))) var4 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (inv_main23 var3 var5 var2 var0 var1 var4)) (inv_main23 var3 var5 var2 var0 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 node) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int)) (or (not (and (inv_main14 var1 var3 var0 var10 var11) (and (= var13 nullAddr) (and (and (and (and (and (and (= var2 (newHeap (alloc var15 (O_node var9)))) (= var8 var14)) (= var5 var7)) (= var12 var6)) (= var16 var4)) (= var13 (newAddr (alloc var15 (O_node var9))))) (and (and (and (and (= var15 (write var1 var10 (O_node (node var11 (n (getnode (read var1 var10))))))) (= var14 var3)) (= var7 var0)) (= var6 var10)) (= var4 var11)))))) (inv_main23 var2 var8 var13 var12 var16 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main26 var7 var9 var5 var0 var1) (and (and (and (and (and (= var2 var7) (= var6 var9)) (= var10 var5)) (= var8 var0)) (= var4 var1)) (= var3 (n (getnode (read var7 var0))))))) (inv_main12 var2 var6 var10 var3 (+ var4 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 node) (var3 Heap) (var4 Addr)) (or (not (and (inv_main2 var3) (and (not (= var4 nullAddr)) (and (= var0 (newHeap (alloc var3 (O_node var2)))) (= var4 (newAddr (alloc var3 (O_node var2)))))))) (inv_main12 var0 var4 var1 var4 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap)) (or (not (and (inv_main34 var6 var7 var5 var1 var2) (and (not (= var4 1)) (and (and (and (and (and (= var10 var6) (= var0 var7)) (= var3 var5)) (= var8 var1)) (= var9 var2)) (= var4 (h (getnode (read var6 var1)))))))) (inv_main36 var10 var0 var3 var8 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 node) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int)) (or (not (and (inv_main14 var1 var3 var0 var10 var11) (and (not (= var13 nullAddr)) (and (and (and (and (and (and (= var2 (newHeap (alloc var15 (O_node var9)))) (= var8 var14)) (= var5 var7)) (= var12 var6)) (= var16 var4)) (= var13 (newAddr (alloc var15 (O_node var9))))) (and (and (and (and (= var15 (write var1 var10 (O_node (node var11 (n (getnode (read var1 var10))))))) (= var14 var3)) (= var7 var0)) (= var6 var10)) (= var4 var11)))))) (inv_main20 var2 var8 var13 var12 var16)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main29 var6 var7 var5 var0 var1) (and (not (= var2 nullAddr)) (and (and (and (and (= var9 (write var6 var0 (O_node (node (h (getnode (read var6 var0))) 0)))) (= var2 var7)) (= var3 var5)) (= var8 var0)) (= var4 var1))))) (inv_main34 var9 var2 var3 var2 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main35 var5 var6 var4 var0 var1) (and (not (= var9 nullAddr)) (and (and (and (and (and (= var2 var5) (= var10 var6)) (= var3 var4)) (= var7 var0)) (= var8 var1)) (= var9 (n (getnode (read var5 var0)))))))) (inv_main34 var2 var10 var3 var9 (+ var8 1))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr)) (or (not (and (inv_main34 var8 var10 var6 var0 var2) (and (= var9 1) (and (and (and (and (and (= var1 var8) (= var7 var10)) (= var4 var6)) (= var3 var0)) (= var5 var2)) (= var9 (h (getnode (read var8 var0)))))))) (inv_main35 var1 var7 var4 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr)) (or (not (inv_main7 var1 var2 var0)) (inv_main7 var1 var2 var0)))) +(assert (forall ((var0 node) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main2 var2) (and (= var3 nullAddr) (and (= var1 (newHeap (alloc var2 (O_node var0)))) (= var3 (newAddr (alloc var2 (O_node var0)))))))) (inv_main7 var1 var3 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main12 var4 var5 var3 var0 var1) (and (not (= var2 0)) (<= 0 (+ (+ 30 (* (- 1) var1)) (- 1)))))) (inv_main14 var4 var5 var3 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main44 var2 var4 var1 var6 var8) (and (not (= var3 nullAddr)) (and (and (and (and (and (and (= var0 var2) (= var11 var4)) (= var15 var1)) (= var9 var6)) (= var5 var8)) (= var10 (n (getnode (read var2 var6))))) (and (and (and (and (and (= var12 (write var0 var9 defObj)) (= var16 var11)) (= var7 var15)) (= var14 var9)) (= var13 var5)) (= var3 var10)))))) (inv_main44 var12 var16 var7 var3 var13)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main29 var6 var7 var5 var0 var1) (and (not (= var2 nullAddr)) (and (= var2 nullAddr) (and (and (and (and (= var9 (write var6 var0 (O_node (node (h (getnode (read var6 var0))) 0)))) (= var2 var7)) (= var3 var5)) (= var8 var0)) (= var4 var1)))))) (inv_main44 var9 var2 var3 var2 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main35 var5 var6 var4 var0 var1) (and (not (= var10 nullAddr)) (and (= var9 nullAddr) (and (and (and (and (and (= var2 var5) (= var10 var6)) (= var3 var4)) (= var7 var0)) (= var8 var1)) (= var9 (n (getnode (read var5 var0))))))))) (inv_main44 var2 var10 var3 var10 (+ var8 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main14 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main20 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main26 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main13 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main29 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main34 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (inv_main36 var3 var4 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main35 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main44 var3 var4 var2 var0 var1) (not (is-O_node (read var3 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/simple-ext_1.i.smt2 b/heap-theory-benchmarks/heap/simple-ext_1.i.smt2 new file mode 100644 index 00000000..28f224e7 --- /dev/null +++ b/heap-theory-benchmarks/heap/simple-ext_1.i.smt2 @@ -0,0 +1,62 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main12 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main35 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Heap)) (or (not (and (inv_main44 var15 var12 var0 var11 var13) (and (not (= var4 nullAddr)) (and (and (and (and (and (and (= var14 var15) (= var3 var12)) (= var2 var0)) (= var5 var11)) (= var10 var13)) (= var9 (n (getnode (read var15 var11))))) (and (and (and (and (= var8 (write var14 var5 defObj)) (= var1 var3)) (= var4 var9)) (= var7 var5)) (= var6 var10)))))) (inv_main44 var8 var1 var4 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Heap)) (or (not (and (inv_main29 var9 var5 var0 var4 var6) (and (not (= var3 nullAddr)) (and (= var3 nullAddr) (and (and (and (and (= var7 (write var9 var4 (O_node (node (h (getnode (read var9 var4))) 0)))) (= var3 var5)) (= var1 var0)) (= var8 var4)) (= var2 var6)))))) (inv_main44 var7 var3 var1 var3 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main35 var10 var5 var1 var4 var6) (and (not (= var7 nullAddr)) (and (= var0 nullAddr) (and (and (and (and (and (= var3 var10) (= var7 var5)) (= var9 var1)) (= var8 var4)) (= var2 var6)) (= var0 (n (getnode (read var10 var4))))))))) (inv_main44 var3 var7 var9 var7 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main13 var4 var2 var0 var1 var3)) (inv_main29 (write var4 var1 (O_node (node var3 (n (getnode (read var4 var1)))))) var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main12 var4 var2 var0 var1 var3) (not (<= 0 (+ (+ 30 (* (- 1) var3)) (- 1)))))) (inv_main13 var4 var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap)) (or (not (and (inv_main12 var5 var3 var0 var2 var4) (and (= var1 0) (<= 0 (+ (+ 30 (* (- 1) var4)) (- 1)))))) (inv_main13 var5 var3 var0 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (or (not (inv_main7 var2 var1 var0)) (inv_main7 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 node) (var3 Heap)) (or (not (and (inv_main2 var3) (and (= var0 nullAddr) (and (= var1 (newHeap (alloc var3 (O_node var2)))) (= var0 (newAddr (alloc var3 (O_node var2)))))))) (inv_main7 var1 var0 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap)) (or (not (and (inv_main34 var10 var6 var0 var5 var7) (and (= var3 var9) (and (and (and (and (and (= var4 var10) (= var2 var6)) (= var1 var0)) (= var8 var5)) (= var9 var7)) (= var3 (h (getnode (read var10 var5)))))))) (inv_main35 var4 var2 var1 var8 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (or (not (and (inv_main12 var5 var2 var0 var1 var3) (and (not (= var4 0)) (<= 0 (+ (+ 30 (* (- 1) var3)) (- 1)))))) (inv_main14 var5 var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main20 var4 var2 var0 var1 var3)) (inv_main26 (write var4 var1 (O_node (node (h (getnode (read var4 var1))) var0))) var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main26 var8 var4 var1 var3 var5) (and (and (and (and (and (= var2 var8) (= var6 var4)) (= var0 var1)) (= var9 var3)) (= var10 var5)) (= var7 (n (getnode (read var8 var3))))))) (inv_main12 var2 var6 var0 var7 (+ var10 1))))) +(assert (forall ((var0 Addr) (var1 node) (var2 Addr) (var3 Heap) (var4 Heap)) (or (not (and (inv_main2 var4) (and (not (= var2 nullAddr)) (and (= var3 (newHeap (alloc var4 (O_node var1)))) (= var2 (newAddr (alloc var4 (O_node var1)))))))) (inv_main12 var3 var2 var0 var2 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 node) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Heap) (var16 Addr)) (or (not (and (inv_main14 var15 var9 var0 var8 var10) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (= var11 (newHeap (alloc var13 (O_node var5)))) (= var16 var1)) (= var14 var2)) (= var3 var7)) (= var12 var4)) (= var6 (newAddr (alloc var13 (O_node var5))))) (and (and (and (and (= var13 (write var15 var8 (O_node (node var10 (n (getnode (read var15 var8))))))) (= var1 var9)) (= var2 var0)) (= var7 var8)) (= var4 var10)))))) (inv_main20 var11 var16 var6 var3 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Heap)) (or (not (and (inv_main29 var9 var5 var0 var4 var6) (and (not (= var3 nullAddr)) (and (and (and (and (= var7 (write var9 var4 (O_node (node (h (getnode (read var9 var4))) 0)))) (= var3 var5)) (= var1 var0)) (= var8 var4)) (= var2 var6))))) (inv_main34 var7 var3 var1 var3 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main35 var10 var5 var1 var4 var6) (and (not (= var0 nullAddr)) (and (and (and (and (and (= var3 var10) (= var7 var5)) (= var9 var1)) (= var8 var4)) (= var2 var6)) (= var0 (n (getnode (read var10 var4)))))))) (inv_main34 var3 var7 var9 var0 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int)) (or (not (and (inv_main34 var9 var2 var0 var1 var3) (and (not (= var10 var4)) (and (and (and (and (and (= var6 var9) (= var7 var2)) (= var8 var0)) (= var5 var1)) (= var4 var3)) (= var10 (h (getnode (read var9 var1)))))))) (inv_main36 var6 var7 var8 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int)) (or (not (inv_main23 var4 var2 var0 var1 var3 var5)) (inv_main23 var4 var2 var0 var1 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 node) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Heap) (var16 Addr)) (or (not (and (inv_main14 var15 var9 var0 var8 var10) (and (= var6 nullAddr) (and (and (and (and (and (and (= var11 (newHeap (alloc var13 (O_node var5)))) (= var16 var1)) (= var14 var2)) (= var3 var7)) (= var12 var4)) (= var6 (newAddr (alloc var13 (O_node var5))))) (and (and (and (and (= var13 (write var15 var8 (O_node (node var10 (n (getnode (read var15 var8))))))) (= var1 var9)) (= var2 var0)) (= var7 var8)) (= var4 var10)))))) (inv_main23 var11 var16 var6 var3 var12 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main14 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main20 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main26 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main13 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main29 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main34 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main36 var4 var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main35 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main44 var4 var2 var0 var1 var3) (not (is-O_node (read var4 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/simple_and_skiplist_2lvl-1.i.smt2 b/heap-theory-benchmarks/heap/simple_and_skiplist_2lvl-1.i.smt2 new file mode 100644 index 00000000..9f43390b --- /dev/null +++ b/heap-theory-benchmarks/heap/simple_and_skiplist_2lvl-1.i.smt2 @@ -0,0 +1,153 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (sl_item 0) (sl 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_sl_item (getsl_item sl_item)) + (O_sl (getsl sl)) + (O_node (getnode node)) + (defObj) + ) + ( + (sl_item (n1 Addr) (n2 Addr)) + ) + ( + (sl (head Addr) (tail Addr)) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main25 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main63 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main69 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(declare-fun inv_main71 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main77 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main79 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main80 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main82 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main85 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main91 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main93 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main94 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main97 (Heap Addr Addr Addr Addr Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Addr)) (or (not (and (inv_main72 var19 var0 var7 var14 var18 var6 var5 var2 var8 var10) (and (not (= var13 0)) (and (not (= var11 0)) (and (and (and (and (and (and (and (and (and (= var12 var19) (= var9 var0)) (= var17 var7)) (= var20 var14)) (= var1 var18)) (= var15 var6)) (= var4 var5)) (= var3 var2)) (= var16 var8)) (or (and (not (= var10 (n2 (getsl_item (read var19 var2))))) (= var11 1)) (and (= var10 (n2 (getsl_item (read var19 var2)))) (= var11 0)))))))) (inv_main71 var12 var9 var17 var20 var1 var15 var4 var3 var16)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 node) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main14 var13 var0 var3 var11) (and (not (= var4 nullAddr)) (and (and (and (and (and (= var2 (newHeap (alloc var1 (O_node var10)))) (= var8 var7)) (= var12 var6)) (= var5 var9)) (= var4 (newAddr (alloc var1 (O_node var10))))) (and (and (and (= var1 (write var13 var11 (O_node (node 1 (n (getnode (read var13 var11))))))) (= var7 var0)) (= var6 var3)) (= var9 var11)))))) (inv_main19 var2 var8 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (inv_main48 var5 var0 var4 var2 var1 var3)) (inv_main46 (write var5 (head (getsl (read var5 var1))) (O_sl_item (sl_item (n1 (getsl_item (read var5 (head (getsl (read var5 var1)))))) var3))) var0 var4 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (inv_main69 var8 var0 var5 var2 var7 var4 var3 var1 var6)) (inv_main72 var8 var0 var5 var2 var7 var4 var3 var1 var6 (n1 (getsl_item (read var8 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (inv_main44 var4 var0 var3 var2 var1)) (inv_main47 var4 var0 var3 var2 var1 (tail (getsl (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 sl_item) (var3 Addr) (var4 Addr) (var5 Addr) (var6 sl) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Heap)) (or (not (and (inv_main32 var15 var0 var4 var12) (and (and (and (and (and (and (= var9 (newHeap (alloc var14 (O_sl var6)))) (= var3 var1)) (= var11 var7)) (= var13 var5)) (= var8 (newAddr (alloc var14 (O_sl var6))))) (= var5 nullAddr)) (and (and (and (and (= var14 var15) (= var1 var0)) (= var7 var4)) (= var10 var12)) (= var5 (n (getnode (read var15 var12)))))))) (inv_main43 (newHeap (alloc var9 (O_sl_item var2))) var3 var11 var13 var8 (newAddr (alloc var9 (O_sl_item var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 sl) (var3 Addr) (var4 Addr) (var5 Addr) (var6 sl_item) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Heap) (var14 Addr)) (or (not (and (inv_main27 var13 var0 var8 var11) (and (and (and (and (and (and (= var10 (newHeap (alloc var12 (O_sl var2)))) (= var3 var9)) (= var1 var14)) (= var7 var9)) (= var4 (newAddr (alloc var12 (O_sl var2))))) (= var9 nullAddr)) (and (and (and (= var12 (write var13 var11 (O_node (node (h (getnode (read var13 var11))) 0)))) (= var9 var0)) (= var14 var8)) (= var5 var11))))) (inv_main43 (newHeap (alloc var10 (O_sl_item var6))) var3 var1 var7 var4 (newAddr (alloc var10 (O_sl_item var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main79 var18 var0 var4 var13 var16 var3 var2 var1 var6) (and (not (= var9 0)) (and (and (and (and (and (and (and (and (= var10 (write var18 var2 (O_sl_item (sl_item var6 (n2 (getsl_item (read var18 var2))))))) (= var8 var0)) (= var17 var4)) (= var14 var13)) (= var11 var16)) (= var15 var3)) (= var5 var2)) (= var7 var1)) (= var12 var6))))) (inv_main82 var10 var8 var17 var14 var11 var15 var5 var7 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main91 var6 var0 var3 var2 var4 var5 var1) (not (= (head (getsl (read var6 var5))) nullAddr)))) (inv_main93 var6 var0 var3 var2 var4 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (inv_main82 var8 var0 var5 var2 var7 var4 var3 var1 var6)) (inv_main86 var8 var0 var5 var2 var7 var4 var3 var1 var6 (n2 (getsl_item (read var8 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 sl_item) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Heap) (var30 Addr)) (or (not (and (inv_main72 var15 var16 var20 var26 var14 var19 var5 var2 var22 var24) (and (and (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var29 (O_sl_item var9)))) (= var0 var28)) (= var21 var4)) (= var25 var1)) (= var18 var27)) (= var13 var17)) (= var23 var30)) (= var7 var10)) (= var11 var3)) (= var12 (newAddr (alloc var29 (O_sl_item var9))))) (and (= var8 0) (and (and (and (and (and (and (and (and (and (= var29 var15) (= var28 var16)) (= var4 var20)) (= var1 var26)) (= var27 var14)) (= var17 var19)) (= var30 var5)) (= var10 var2)) (= var3 var22)) (or (and (not (= var24 (n2 (getsl_item (read var15 var2))))) (= var8 1)) (and (= var24 (n2 (getsl_item (read var15 var2)))) (= var8 0)))))))) (inv_main77 var6 var0 var21 var25 var18 var13 var23 var7 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 sl_item) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Heap) (var28 Addr) (var29 Addr) (var30 Addr) (var31 Addr)) (or (not (and (inv_main72 var17 var18 var23 var28 var15 var22 var8 var4 var24 var26) (and (and (and (and (and (and (and (and (and (and (= var3 (newHeap (alloc var27 (O_sl_item var9)))) (= var10 var25)) (= var19 var29)) (= var21 var0)) (= var16 var20)) (= var14 var12)) (= var31 var6)) (= var7 var5)) (= var2 var13)) (= var30 (newAddr (alloc var27 (O_sl_item var9))))) (and (= var1 0) (and (not (= var11 0)) (and (and (and (and (and (and (and (and (and (= var27 var17) (= var25 var18)) (= var29 var23)) (= var0 var28)) (= var20 var15)) (= var12 var22)) (= var6 var8)) (= var5 var4)) (= var13 var24)) (or (and (not (= var26 (n2 (getsl_item (read var17 var4))))) (= var11 1)) (and (= var26 (n2 (getsl_item (read var17 var4)))) (= var11 0))))))))) (inv_main77 var3 var10 var19 var21 var16 var14 var31 var7 var30)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Heap) (var20 Addr)) (or (not (and (inv_main64 var19 var0 var7 var14 var17 var6 var5 var3 var8 var20) (and (not (= var18 0)) (and (not (= var11 0)) (and (and (and (and (and (and (and (and (and (= var1 var19) (= var10 var0)) (= var12 var7)) (= var9 var14)) (= var2 var17)) (= var4 var6)) (= var16 var5)) (= var13 var3)) (= var15 var8)) (or (and (not (= var20 (tail (getsl (read var19 var6))))) (= var11 1)) (and (= var20 (tail (getsl (read var19 var6)))) (= var11 0)))))))) (inv_main63 var1 var10 var12 var9 var2 var4 var16 var13 var15)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main31 var8 var0 var7 var4) (and (not (= var2 2)) (and (and (and (and (= var3 var8) (= var1 var0)) (= var6 var7)) (= var5 var4)) (= var2 (h (getnode (read var8 var4)))))))) (inv_main33 var3 var1 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main71 var18 var0 var9 var14 var16 var8 var7 var5 var10) (and (and (and (and (and (and (and (and (and (= var1 var18) (= var17 var0)) (= var4 var9)) (= var6 var14)) (= var11 var16)) (= var13 var8)) (= var3 var7)) (= var12 var5)) (= var2 var10)) (= var15 (n1 (getsl_item (read var18 var7))))))) (inv_main69 var1 var17 var4 var6 var11 var13 var15 var12 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr)) (or (not (and (inv_main64 var17 var0 var8 var15 var16 var7 var6 var5 var9 var19) (and (= var1 0) (and (and (and (and (and (and (and (and (and (= var2 var17) (= var14 var0)) (= var10 var8)) (= var4 var15)) (= var3 var16)) (= var13 var7)) (= var12 var6)) (= var11 var5)) (= var18 var9)) (or (and (not (= var19 (tail (getsl (read var17 var7))))) (= var1 1)) (and (= var19 (tail (getsl (read var17 var7)))) (= var1 0))))))) (inv_main69 var2 var14 var10 var4 var3 var13 var11 var11 var18)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Addr)) (or (not (and (inv_main64 var19 var0 var8 var15 var18 var6 var5 var3 var9 var20) (and (= var7 0) (and (not (= var12 0)) (and (and (and (and (and (and (and (and (and (= var1 var19) (= var11 var0)) (= var13 var8)) (= var10 var15)) (= var2 var18)) (= var4 var6)) (= var17 var5)) (= var14 var3)) (= var16 var9)) (or (and (not (= var20 (tail (getsl (read var19 var6))))) (= var12 1)) (and (= var20 (tail (getsl (read var19 var6)))) (= var12 0)))))))) (inv_main69 var1 var11 var13 var10 var2 var4 var14 var14 var16)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (inv_main45 var5 var0 var4 var3 var1 var2)) (inv_main44 (write var5 var1 (O_sl (sl (head (getsl (read var5 var1))) var2))) var0 var4 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (inv_main80 var9 var0 var6 var2 var8 var4 var3 var1 var7 var5)) (inv_main79 (write var9 var7 (O_sl_item (sl_item var5 (n2 (getsl_item (read var9 var7)))))) var0 var6 var2 var8 var4 var3 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (inv_main60 var8 var0 var5 var2 var7 var4 var3 var1 var6)) (inv_main64 var8 var0 var5 var2 var7 var4 var3 var1 var6 (n2 (getsl_item (read var8 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main32 var8 var0 var4 var3) (and (not (= var5 nullAddr)) (and (and (and (and (= var6 var8) (= var1 var0)) (= var7 var4)) (= var2 var3)) (= var5 (n (getnode (read var8 var3)))))))) (inv_main31 var6 var1 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main27 var6 var0 var4 var2) (and (not (= var5 nullAddr)) (and (and (and (= var3 (write var6 var2 (O_node (node (h (getnode (read var6 var2))) 0)))) (= var5 var0)) (= var7 var4)) (= var1 var2))))) (inv_main31 var3 var5 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main22 var4 var0 var2 var1 var3)) (inv_main22 var4 var0 var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 node) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main14 var13 var0 var3 var11) (and (= var4 nullAddr) (and (and (and (and (and (= var2 (newHeap (alloc var1 (O_node var10)))) (= var8 var7)) (= var12 var6)) (= var5 var9)) (= var4 (newAddr (alloc var1 (O_node var10))))) (and (and (and (= var1 (write var13 var11 (O_node (node 1 (n (getnode (read var13 var11))))))) (= var7 var0)) (= var6 var3)) (= var9 var11)))))) (inv_main22 var2 var8 var4 var5 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap)) (or (not (and (inv_main97 var14 var0 var4 var9 var12 var13 var7 var10) (and (and (and (and (and (and (= var1 (write var14 var13 (O_sl (sl var10 (tail (getsl (read var14 var13))))))) (= var8 var0)) (= var6 var4)) (= var11 var9)) (= var3 var12)) (= var5 var13)) (= var2 var7)))) (inv_main91 (write var1 var2 defObj) var8 var6 var11 var3 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main51 var6 var0 var4 var2 var5) (= var1 0))) (inv_main91 var6 var0 var4 var2 var5 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (inv_main47 var5 var0 var3 var2 var1 var4)) (inv_main48 (write var5 (head (getsl (read var5 var1))) (O_sl_item (sl_item var4 (n2 (getsl_item (read var5 (head (getsl (read var5 var1))))))))) var0 var3 var2 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Heap)) (or (not (and (inv_main59 var17 var0 var8 var12 var15 var6 var5 var2 var9) (and (and (and (and (and (and (and (and (and (= var18 var17) (= var13 var0)) (= var14 var8)) (= var10 var12)) (= var4 var15)) (= var3 var6)) (= var16 var5)) (= var11 var2)) (= var7 var9)) (= var1 (head (getsl (read var17 var6))))))) (inv_main60 var18 var13 var14 var10 var4 var3 var16 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main63 var18 var0 var5 var13 var17 var4 var3 var1 var7) (and (and (and (and (and (and (and (and (and (= var2 var18) (= var12 var0)) (= var10 var5)) (= var15 var13)) (= var14 var17)) (= var11 var4)) (= var8 var3)) (= var16 var1)) (= var9 var7)) (= var6 (n2 (getsl_item (read var18 var1))))))) (inv_main60 var2 var12 var10 var15 var14 var11 var8 var6 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main51 var8 var0 var6 var5 var7) (not (= var4 0)))) (inv_main59 var8 var0 var6 var5 var7 var7 var1 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (inv_main94 var6 var0 var3 var2 var4 var5 var1)) (inv_main97 var6 var0 var3 var2 var4 var5 var1 (n1 (getsl_item (read var6 (head (getsl (read var6 var5)))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Heap)) (or (not (and (inv_main11 var8 var0 var6 var3) (and (= var1 0) (and (and (and (= var7 (write var8 var0 (O_node (node 2 (n (getnode (read var8 var0))))))) (= var5 var0)) (= var2 var6)) (= var4 var3))))) (inv_main13 var7 var5 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main25 var8 var0 var5 var4) (and (= var9 0) (and (and (and (and (= var6 var8) (= var3 var0)) (= var7 var5)) (= var1 var4)) (= var2 (n (getnode (read var8 var4)))))))) (inv_main13 var6 var3 var7 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main13 var3 var0 var2 var1)) (inv_main27 (write var3 var1 (O_node (node 2 (n (getnode (read var3 var1)))))) var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main19 var3 var0 var2 var1)) (inv_main25 (write var3 var1 (O_node (node (h (getnode (read var3 var1))) var2))) var0 var2 var1)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap)) (or (not (and (inv_main2 var3) (and (not (= var1 nullAddr)) (and (= var4 (newHeap (alloc var3 (O_node var0)))) (= var1 (newAddr (alloc var3 (O_node var0)))))))) (inv_main11 var4 var1 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (inv_main46 var4 var0 var3 var2 var1)) (inv_main50 (write var4 (tail (getsl (read var4 var1))) (O_sl_item (sl_item nullAddr (n2 (getsl_item (read var4 (tail (getsl (read var4 var1))))))))) var0 var3 var2 var1 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main31 var8 var0 var3 var2) (and (= var7 2) (and (and (and (and (= var5 var8) (= var1 var0)) (= var4 var3)) (= var6 var2)) (= var7 (h (getnode (read var8 var2)))))))) (inv_main32 var5 var1 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (inv_main86 var9 var0 var6 var2 var8 var4 var3 var1 var7 var5)) (inv_main85 (write var9 var7 (O_sl_item (sl_item (n1 (getsl_item (read var9 var7))) var5))) var0 var6 var2 var8 var4 var3 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (inv_main77 var8 var0 var5 var2 var7 var4 var3 var1 var6)) (inv_main80 var8 var0 var5 var2 var7 var4 var3 var1 var6 (n1 (getsl_item (read var8 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main50 var10 var0 var9 var8 var1 var3) (and (and (and (and (= var6 (write var10 (tail (getsl (read var10 var1))) (O_sl_item (sl_item (n1 (getsl_item (read var10 (tail (getsl (read var10 var1)))))) var3)))) (= var2 var0)) (= var5 var9)) (= var7 var8)) (= var4 var1)))) (inv_main51 var6 var2 var5 var7 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap)) (or (not (and (inv_main85 var14 var0 var5 var11 var13 var4 var3 var2 var6) (and (and (and (and (and (= var8 (write var14 var2 (O_sl_item (sl_item (n1 (getsl_item (read var14 var2))) var6)))) (= var12 var0)) (= var9 var5)) (= var1 var11)) (= var10 var13)) (= var7 var4)))) (inv_main51 var8 var12 var9 var1 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main79 var18 var0 var4 var13 var16 var3 var2 var1 var6) (and (= var9 0) (and (and (and (and (and (and (and (and (= var10 (write var18 var2 (O_sl_item (sl_item var6 (n2 (getsl_item (read var18 var2))))))) (= var8 var0)) (= var17 var4)) (= var14 var13)) (= var11 var16)) (= var15 var3)) (= var5 var2)) (= var7 var1)) (= var12 var6))))) (inv_main51 var10 var8 var17 var14 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 sl_item) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Heap)) (or (not (and (inv_main43 var11 var0 var7 var5 var1 var4) (and (and (and (and (= var10 (write var11 var1 (O_sl (sl var4 (tail (getsl (read var11 var1))))))) (= var3 var0)) (= var2 var7)) (= var8 var5)) (= var9 var1)))) (inv_main45 (newHeap (alloc var10 (O_sl_item var6))) var3 var2 var8 var9 (newAddr (alloc var10 (O_sl_item var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap)) (or (not (and (inv_main93 var14 var0 var5 var9 var11 var13 var8) (and (and (and (and (and (and (and (= var3 var14) (= var4 var0)) (= var7 var5)) (= var2 var9)) (= var6 var11)) (= var10 var13)) (= var12 var8)) (= var1 (head (getsl (read var14 var13))))))) (inv_main94 var3 var4 var7 var2 var6 var10 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap)) (or (not (inv_main7 var2 var0 var1)) (inv_main7 var2 var0 var1)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Heap) (var3 Heap)) (or (not (and (inv_main2 var3) (and (= var1 nullAddr) (and (= var2 (newHeap (alloc var3 (O_node var0)))) (= var1 (newAddr (alloc var3 (O_node var0)))))))) (inv_main7 var2 var1 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main11 var8 var0 var4 var2) (and (not (= var6 0)) (and (and (and (= var5 (write var8 var0 (O_node (node 2 (n (getnode (read var8 var0))))))) (= var1 var0)) (= var3 var4)) (= var7 var2))))) (inv_main14 var5 var1 var3 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Heap)) (or (not (and (inv_main25 var9 var0 var6 var5) (and (not (= var3 0)) (and (and (and (and (= var7 var9) (= var4 var0)) (= var8 var6)) (= var1 var5)) (= var2 (n (getnode (read var9 var5)))))))) (inv_main14 var7 var4 var8 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main11 var3 var0 var2 var1) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main14 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main19 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main25 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main13 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main27 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main31 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (inv_main33 var3 var0 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main32 var3 var0 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main43 var5 var0 var4 var3 var1 var2) (not (is-O_sl (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main45 var5 var0 var4 var3 var1 var2) (not (is-O_sl (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main44 var4 var0 var3 var2 var1) (not (is-O_sl (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main47 var5 var0 var3 var2 var1 var4) (not (is-O_sl (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main47 var5 var0 var3 var2 var1 var4) (not (is-O_sl_item (read var5 (head (getsl (read var5 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main48 var5 var0 var4 var2 var1 var3) (not (is-O_sl (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main48 var5 var0 var4 var2 var1 var3) (not (is-O_sl_item (read var5 (head (getsl (read var5 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main46 var4 var0 var3 var2 var1) (not (is-O_sl (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main46 var4 var0 var3 var2 var1) (not (is-O_sl_item (read var4 (tail (getsl (read var4 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main50 var5 var0 var4 var3 var1 var2) (not (is-O_sl (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (inv_main50 var5 var0 var4 var3 var1 var2) (not (is-O_sl_item (read var5 (tail (getsl (read var5 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main59 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl (read var8 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main60 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr)) (not (and (inv_main64 var8 var0 var5 var2 var7 var4 var3 var1 var6 var9) (not (is-O_sl (read var8 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main63 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main69 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (not (and (inv_main72 var9 var0 var6 var3 var8 var5 var4 var2 var7 var1) (not (is-O_sl_item (read var9 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main71 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main77 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (not (and (inv_main80 var9 var0 var6 var2 var8 var4 var3 var1 var7 var5) (not (is-O_sl_item (read var9 var7))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main79 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main82 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (not (and (inv_main86 var9 var0 var6 var2 var8 var4 var3 var1 var7 var5) (not (is-O_sl_item (read var9 var7))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (not (and (inv_main85 var8 var0 var5 var2 var7 var4 var3 var1 var6) (not (is-O_sl_item (read var8 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (not (and (inv_main91 var6 var0 var3 var2 var4 var5 var1) (not (is-O_sl (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (not (and (inv_main93 var6 var0 var3 var2 var4 var5 var1) (not (is-O_sl (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (not (and (inv_main94 var6 var0 var3 var2 var4 var5 var1) (not (is-O_sl (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (not (and (inv_main94 var6 var0 var3 var2 var4 var5 var1) (not (is-O_sl_item (read var6 (head (getsl (read var6 var5)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap)) (not (and (inv_main97 var7 var0 var4 var2 var5 var6 var1 var3) (not (is-O_sl (read var7 var6))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/simple_and_skiplist_2lvl-2.i.smt2 b/heap-theory-benchmarks/heap/simple_and_skiplist_2lvl-2.i.smt2 new file mode 100644 index 00000000..eb64bb6d --- /dev/null +++ b/heap-theory-benchmarks/heap/simple_and_skiplist_2lvl-2.i.smt2 @@ -0,0 +1,150 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0) (sl_item 0) (sl 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (O_sl_item (getsl_item sl_item)) + (O_sl (getsl sl)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) + ( + (sl_item (n1 Addr) (n2 Addr)) + ) + ( + (sl (head Addr) (tail Addr)) + ) +)) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main24 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main62 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main63 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main68 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(declare-fun inv_main70 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main79 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main81 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main84 (Heap Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main85 (Heap Addr Addr Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main90 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main92 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main93 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Addr Addr Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 node) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main13 var4 var2 var8 var1) (and (not (= var13 nullAddr)) (and (and (and (and (and (= var10 (newHeap (alloc var3 (O_node var0)))) (= var6 var12)) (= var11 var7)) (= var5 var9)) (= var13 (newAddr (alloc var3 (O_node var0))))) (and (and (and (= var3 (write var4 var1 (O_node (node 1 (n (getnode (read var4 var1))))))) (= var12 var2)) (= var7 var8)) (= var9 var1)))))) (inv_main18 var10 var6 var13 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main43 var2 var1 var4 var0 var3)) (inv_main46 var2 var1 var4 var0 var3 (tail (getsl (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr)) (or (not (and (inv_main92 var6 var3 var10 var0 var11 var7 var1) (and (and (and (and (and (and (and (= var13 var6) (= var9 var3)) (= var8 var10)) (= var14 var0)) (= var4 var11)) (= var5 var7)) (= var2 var1)) (= var12 (head (getsl (read var6 var7))))))) (inv_main93 var13 var9 var8 var14 var4 var5 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main68 var2 var1 var6 var0 var7 var3 var8 var4 var5)) (inv_main71 var2 var1 var6 var0 var7 var3 var8 var4 var5 (n1 (getsl_item (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main96 var6 var5 var10 var1 var11 var8 var2 var7) (and (and (and (and (and (and (= var9 (write var6 var8 (O_sl (sl var7 (tail (getsl (read var6 var8))))))) (= var0 var5)) (= var14 var10)) (= var3 var1)) (= var4 var11)) (= var12 var8)) (= var13 var2)))) (inv_main90 (write var9 var13 defObj) var0 var14 var3 var4 var12 var13)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main50 var4 var2 var5 var1 var6) (= var3 0))) (inv_main90 var4 var2 var5 var1 var6 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main50 var6 var2 var7 var0 var8) (not (= var1 0)))) (inv_main58 var6 var2 var7 var0 var8 var8 var5 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 sl) (var10 Addr) (var11 sl_item) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap)) (or (not (and (inv_main31 var3 var1 var7 var0) (and (and (and (and (and (and (= var15 (newHeap (alloc var2 (O_sl var9)))) (= var14 var5)) (= var10 var13)) (= var4 var6)) (= var8 (newAddr (alloc var2 (O_sl var9))))) (= var6 nullAddr)) (and (and (and (and (= var2 var3) (= var5 var1)) (= var13 var7)) (= var12 var0)) (= var6 (n (getnode (read var3 var0)))))))) (inv_main42 (newHeap (alloc var15 (O_sl_item var11))) var14 var10 var4 var8 (newAddr (alloc var15 (O_sl_item var11))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 sl) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 sl_item) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main26 var3 var2 var5 var0) (and (and (and (and (and (and (= var1 (newHeap (alloc var7 (O_sl var6)))) (= var14 var9)) (= var12 var10)) (= var8 var9)) (= var4 (newAddr (alloc var7 (O_sl var6))))) (= var9 nullAddr)) (and (and (and (= var7 (write var3 var0 (O_node (node (h (getnode (read var3 var0))) 0)))) (= var9 var2)) (= var10 var5)) (= var13 var0))))) (inv_main42 (newHeap (alloc var1 (O_sl_item var11))) var14 var12 var8 var4 (newAddr (alloc var1 (O_sl_item var11))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 sl_item) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main42 var5 var3 var10 var1 var8 var9) (and (and (and (and (= var0 (write var5 var8 (O_sl (sl var9 (tail (getsl (read var5 var8))))))) (= var7 var3)) (= var2 var10)) (= var11 var1)) (= var6 var8)))) (inv_main44 (newHeap (alloc var0 (O_sl_item var4))) var7 var2 var11 var6 (newAddr (alloc var0 (O_sl_item var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main30 var4 var2 var8 var0) (and (= var7 1) (and (and (and (and (= var1 var4) (= var6 var2)) (= var5 var8)) (= var3 var0)) (= var7 (h (getnode (read var4 var0)))))))) (inv_main31 var1 var6 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main81 var2 var1 var6 var0 var7 var3 var8 var4 var5)) (inv_main85 var2 var1 var6 var0 var7 var3 var8 var4 var5 (n2 (getsl_item (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (inv_main79 var3 var1 var7 var0 var8 var4 var9 var5 var6 var2)) (inv_main78 (write var3 var6 (O_sl_item (sl_item var2 (n2 (getsl_item (read var3 var6)))))) var1 var7 var0 var8 var4 var9 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main12 var2 var1 var3 var0)) (inv_main26 (write var2 var0 (O_node (node 1 (n (getnode (read var2 var0)))))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main24 var5 var3 var8 var0) (and (= var6 0) (and (and (and (and (= var9 var5) (= var4 var3)) (= var1 var8)) (= var7 var0)) (= var2 (n (getnode (read var5 var0)))))))) (inv_main12 var9 var4 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 node) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (and (inv_main2 var3) (and (= var5 0) (and (not (= var4 nullAddr)) (and (= var1 (newHeap (alloc var3 (O_node var2)))) (= var4 (newAddr (alloc var3 (O_node var2))))))))) (inv_main12 var1 var4 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main59 var2 var1 var6 var0 var7 var3 var8 var4 var5)) (inv_main63 var2 var1 var6 var0 var7 var3 var8 var4 var5 (n2 (getsl_item (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main45 var2 var1 var4 var0 var3)) (inv_main49 (write var2 (tail (getsl (read var2 var3))) (O_sl_item (sl_item nullAddr (n2 (getsl_item (read var2 (tail (getsl (read var2 var3))))))))) var1 var4 var0 var3 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (inv_main21 var2 var1 var4 var0 var3)) (inv_main21 var2 var1 var4 var0 var3)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main13 var4 var2 var8 var1) (and (= var13 nullAddr) (and (and (and (and (and (= var10 (newHeap (alloc var3 (O_node var0)))) (= var6 var12)) (= var11 var7)) (= var5 var9)) (= var13 (newAddr (alloc var3 (O_node var0))))) (and (and (and (= var3 (write var4 var1 (O_node (node 1 (n (getnode (read var4 var1))))))) (= var12 var2)) (= var7 var8)) (= var9 var1)))))) (inv_main21 var10 var6 var13 var5 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main44 var3 var1 var5 var0 var4 var2)) (inv_main43 (write var3 var4 (O_sl (sl (head (getsl (read var3 var4))) var2))) var1 var5 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main47 var2 var1 var5 var0 var4 var3)) (inv_main45 (write var2 (head (getsl (read var2 var4))) (O_sl_item (sl_item (n1 (getsl_item (read var2 (head (getsl (read var2 var4)))))) var3))) var1 var5 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (inv_main85 var2 var1 var7 var0 var8 var3 var9 var4 var5 var6)) (inv_main84 (write var2 var5 (O_sl_item (sl_item (n1 (getsl_item (read var2 var5))) var6))) var1 var7 var0 var8 var3 var9 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main78 var4 var2 var7 var0 var8 var12 var9 var5 var13) (and (not (= var16 0)) (and (and (and (and (and (and (and (and (= var3 (write var4 var9 (O_sl_item (sl_item var13 (n2 (getsl_item (read var4 var9))))))) (= var17 var2)) (= var15 var7)) (= var1 var0)) (= var10 var8)) (= var6 var12)) (= var18 var9)) (= var14 var5)) (= var11 var13))))) (inv_main81 var3 var17 var15 var1 var10 var6 var18 var14 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main30 var6 var3 var8 var1) (and (not (= var5 1)) (and (and (and (and (= var4 var6) (= var7 var3)) (= var2 var8)) (= var0 var1)) (= var5 (h (getnode (read var6 var1)))))))) (inv_main32 var4 var7 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main58 var5 var4 var8 var0 var9 var14 var11 var7 var16) (and (and (and (and (and (and (and (and (and (= var13 var5) (= var12 var4)) (= var2 var8)) (= var3 var0)) (= var18 var9)) (= var15 var14)) (= var17 var11)) (= var1 var7)) (= var6 var16)) (= var10 (head (getsl (read var5 var14))))))) (inv_main59 var13 var12 var2 var3 var18 var15 var17 var10 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main62 var4 var3 var7 var2 var8 var15 var9 var6 var18) (and (and (and (and (and (and (and (and (and (= var11 var4) (= var10 var3)) (= var0 var7)) (= var1 var2)) (= var5 var8)) (= var14 var15)) (= var12 var9)) (= var13 var6)) (= var17 var18)) (= var16 (n2 (getsl_item (read var4 var6))))))) (inv_main59 var11 var10 var0 var1 var5 var14 var12 var16 var17)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main18 var2 var1 var3 var0)) (inv_main24 (write var2 var0 (O_node (node (h (getnode (read var2 var0))) var3))) var1 var3 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main63 var7 var4 var13 var2 var14 var17 var15 var8 var18 var1) (and (not (= var5 0)) (and (not (= var6 0)) (and (and (and (and (and (and (and (and (and (= var0 var7) (= var19 var4)) (= var12 var13)) (= var9 var2)) (= var20 var14)) (= var11 var17)) (= var16 var15)) (= var10 var8)) (= var3 var18)) (or (and (not (= var1 (tail (getsl (read var7 var17))))) (= var6 1)) (and (= var1 (tail (getsl (read var7 var17)))) (= var6 0)))))))) (inv_main62 var0 var19 var12 var9 var20 var11 var16 var10 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main76 var2 var1 var6 var0 var7 var3 var8 var4 var5)) (inv_main79 var2 var1 var6 var0 var7 var3 var8 var4 var5 (n1 (getsl_item (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main90 var3 var2 var5 var0 var6 var4 var1) (not (= (head (getsl (read var3 var4))) nullAddr)))) (inv_main92 var3 var2 var5 var0 var6 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main70 var5 var3 var10 var0 var11 var15 var12 var7 var16) (and (and (and (and (and (and (and (and (and (= var18 var5) (= var13 var3)) (= var6 var10)) (= var9 var0)) (= var1 var11)) (= var17 var15)) (= var14 var12)) (= var4 var7)) (= var8 var16)) (= var2 (n1 (getsl_item (read var5 var12))))))) (inv_main68 var18 var13 var6 var9 var1 var17 var2 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Heap)) (or (not (and (inv_main63 var6 var5 var9 var2 var10 var16 var11 var7 var18 var1) (and (= var13 0) (and (and (and (and (and (and (and (and (and (= var19 var6) (= var14 var5)) (= var17 var9)) (= var12 var2)) (= var0 var10)) (= var15 var16)) (= var8 var11)) (= var4 var7)) (= var3 var18)) (or (and (not (= var1 (tail (getsl (read var6 var16))))) (= var13 1)) (and (= var1 (tail (getsl (read var6 var16)))) (= var13 0))))))) (inv_main68 var19 var14 var17 var12 var0 var15 var4 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main63 var6 var4 var13 var2 var14 var17 var15 var7 var18 var1) (and (= var12 0) (and (not (= var5 0)) (and (and (and (and (and (and (and (and (and (= var0 var6) (= var19 var4)) (= var11 var13)) (= var8 var2)) (= var20 var14)) (= var10 var17)) (= var16 var15)) (= var9 var7)) (= var3 var18)) (or (and (not (= var1 (tail (getsl (read var6 var17))))) (= var5 1)) (and (= var1 (tail (getsl (read var6 var17)))) (= var5 0)))))))) (inv_main68 var0 var19 var11 var8 var20 var10 var9 var9 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 sl_item) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Heap) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Addr)) (or (not (and (inv_main71 var5 var20 var24 var17 var9 var15 var11 var21 var26 var25) (and (and (and (and (and (and (and (and (and (and (= var22 (newHeap (alloc var4 (O_sl_item var8)))) (= var10 var3)) (= var19 var16)) (= var0 var13)) (= var28 var30)) (= var14 var29)) (= var23 var6)) (= var12 var2)) (= var7 var27)) (= var1 (newAddr (alloc var4 (O_sl_item var8))))) (and (= var18 0) (and (and (and (and (and (and (and (and (and (= var4 var5) (= var3 var20)) (= var16 var24)) (= var13 var17)) (= var30 var9)) (= var29 var15)) (= var6 var11)) (= var2 var21)) (= var27 var26)) (or (and (not (= var25 (n2 (getsl_item (read var5 var21))))) (= var18 1)) (and (= var25 (n2 (getsl_item (read var5 var21)))) (= var18 0)))))))) (inv_main76 var22 var10 var19 var0 var28 var14 var23 var12 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 sl_item) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Heap) (var22 Addr) (var23 Int) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Addr) (var31 Addr)) (or (not (and (inv_main71 var4 var17 var22 var15 var9 var12 var11 var18 var28 var26) (and (and (and (and (and (and (and (and (and (and (= var2 (newHeap (alloc var21 (O_sl_item var5)))) (= var7 var6)) (= var14 var8)) (= var10 var30)) (= var20 var27)) (= var19 var25)) (= var31 var29)) (= var1 var0)) (= var3 var16)) (= var24 (newAddr (alloc var21 (O_sl_item var5))))) (and (= var23 0) (and (not (= var13 0)) (and (and (and (and (and (and (and (and (and (= var21 var4) (= var6 var17)) (= var8 var22)) (= var30 var15)) (= var27 var9)) (= var25 var12)) (= var29 var11)) (= var0 var18)) (= var16 var28)) (or (and (not (= var26 (n2 (getsl_item (read var4 var18))))) (= var13 1)) (and (= var26 (n2 (getsl_item (read var4 var18)))) (= var13 0))))))))) (inv_main76 var2 var7 var14 var10 var20 var19 var31 var1 var24)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main31 var3 var1 var8 var0) (and (not (= var7 nullAddr)) (and (and (and (and (= var2 var3) (= var4 var1)) (= var6 var8)) (= var5 var0)) (= var7 (n (getnode (read var3 var0)))))))) (inv_main30 var2 var4 var6 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr)) (or (not (and (inv_main26 var5 var2 var7 var1) (and (not (= var3 nullAddr)) (and (and (and (= var0 (write var5 var1 (O_node (node (h (getnode (read var5 var1))) 0)))) (= var3 var2)) (= var4 var7)) (= var6 var1))))) (inv_main30 var0 var3 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main46 var2 var1 var4 var0 var3 var5)) (inv_main47 (write var2 (head (getsl (read var2 var3))) (O_sl_item (sl_item var5 (n2 (getsl_item (read var2 (head (getsl (read var2 var3))))))))) var1 var4 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (or (not (inv_main7 var2 var1 var0)) (inv_main7 var2 var1 var0)))) +(assert (forall ((var0 node) (var1 Heap) (var2 Addr) (var3 Heap)) (or (not (and (inv_main2 var1) (and (= var2 nullAddr) (and (= var3 (newHeap (alloc var1 (O_node var0)))) (= var2 (newAddr (alloc var1 (O_node var0)))))))) (inv_main7 var3 var2 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main49 var6 var4 var9 var0 var7 var3) (and (and (and (and (= var2 (write var6 (tail (getsl (read var6 var7))) (O_sl_item (sl_item (n1 (getsl_item (read var6 (tail (getsl (read var6 var7)))))) var3)))) (= var1 var4)) (= var8 var9)) (= var10 var0)) (= var5 var7)))) (inv_main50 var2 var1 var8 var10 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap)) (or (not (and (inv_main84 var2 var1 var5 var0 var6 var10 var8 var3 var13) (and (and (and (and (and (= var14 (write var2 var3 (O_sl_item (sl_item (n1 (getsl_item (read var2 var3))) var13)))) (= var7 var1)) (= var4 var5)) (= var12 var0)) (= var9 var6)) (= var11 var10)))) (inv_main50 var14 var7 var4 var12 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main78 var4 var2 var8 var0 var9 var13 var10 var5 var14) (and (= var6 0) (and (and (and (and (and (and (and (and (= var3 (write var4 var10 (O_sl_item (sl_item var14 (n2 (getsl_item (read var4 var10))))))) (= var17 var2)) (= var16 var8)) (= var1 var0)) (= var11 var9)) (= var7 var13)) (= var18 var10)) (= var15 var5)) (= var12 var14))))) (inv_main50 var3 var17 var16 var1 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr)) (or (not (and (inv_main71 var4 var3 var9 var1 var10 var15 var11 var5 var17 var13) (and (not (= var18 0)) (and (not (= var16 0)) (and (and (and (and (and (and (and (and (and (= var8 var4) (= var6 var3)) (= var7 var9)) (= var20 var1)) (= var14 var10)) (= var12 var15)) (= var19 var11)) (= var0 var5)) (= var2 var17)) (or (and (not (= var13 (n2 (getsl_item (read var4 var5))))) (= var16 1)) (and (= var13 (n2 (getsl_item (read var4 var5)))) (= var16 0)))))))) (inv_main70 var8 var6 var7 var20 var14 var12 var19 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main24 var6 var4 var8 var0) (and (not (= var3 0)) (and (and (and (and (= var9 var6) (= var5 var4)) (= var1 var8)) (= var7 var0)) (= var2 (n (getnode (read var6 var0)))))))) (inv_main13 var9 var5 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 node) (var3 Int) (var4 Heap) (var5 Addr)) (or (not (and (inv_main2 var4) (and (not (= var3 0)) (and (not (= var5 nullAddr)) (and (= var1 (newHeap (alloc var4 (O_node var2)))) (= var5 (newAddr (alloc var4 (O_node var2))))))))) (inv_main13 var1 var5 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main93 var3 var2 var5 var0 var6 var4 var1)) (inv_main96 var3 var2 var5 var0 var6 var4 var1 (n1 (getsl_item (read var3 (head (getsl (read var3 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main13 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main18 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main24 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main12 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main30 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main32 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main31 var2 var1 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main42 var2 var1 var5 var0 var3 var4) (not (is-O_sl (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main44 var3 var1 var5 var0 var4 var2) (not (is-O_sl (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main43 var2 var1 var4 var0 var3) (not (is-O_sl (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main46 var2 var1 var4 var0 var3 var5) (not (is-O_sl (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main46 var2 var1 var4 var0 var3 var5) (not (is-O_sl_item (read var2 (head (getsl (read var2 var3)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main47 var2 var1 var5 var0 var4 var3) (not (is-O_sl (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main47 var2 var1 var5 var0 var4 var3) (not (is-O_sl_item (read var2 (head (getsl (read var2 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main45 var2 var1 var4 var0 var3) (not (is-O_sl (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main45 var2 var1 var4 var0 var3) (not (is-O_sl_item (read var2 (tail (getsl (read var2 var3)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main49 var3 var2 var5 var0 var4 var1) (not (is-O_sl (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main49 var3 var2 var5 var0 var4 var1) (not (is-O_sl_item (read var3 (tail (getsl (read var3 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main58 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main59 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main63 var3 var2 var7 var1 var8 var4 var9 var5 var6 var0) (not (is-O_sl (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main62 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main68 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main71 var3 var2 var7 var0 var8 var4 var9 var5 var6 var1) (not (is-O_sl_item (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main70 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main76 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main79 var3 var1 var7 var0 var8 var4 var9 var5 var6 var2) (not (is-O_sl_item (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main78 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main81 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main85 var2 var1 var7 var0 var8 var3 var9 var4 var5 var6) (not (is-O_sl_item (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main84 var2 var1 var6 var0 var7 var3 var8 var4 var5) (not (is-O_sl_item (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main90 var3 var2 var5 var0 var6 var4 var1) (not (is-O_sl (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main92 var3 var2 var5 var0 var6 var4 var1) (not (is-O_sl (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main93 var3 var2 var5 var0 var6 var4 var1) (not (is-O_sl (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main93 var3 var2 var5 var0 var6 var4 var1) (not (is-O_sl_item (read var3 (head (getsl (read var3 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main96 var3 var2 var6 var0 var7 var5 var1 var4) (not (is-O_sl (read var3 var5))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/simple_built_from_end.i.smt2 b/heap-theory-benchmarks/heap/simple_built_from_end.i.smt2 new file mode 100644 index 00000000..bc36580d --- /dev/null +++ b/heap-theory-benchmarks/heap/simple_built_from_end.i.smt2 @@ -0,0 +1,42 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr) Bool) +(declare-fun inv_main20 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr Addr) Bool) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (= var1 emptyHeap)) (inv_main4 var1 var0 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main19 var4 var2 var1) (and (not (= var6 nullAddr)) (and (and (and (= var0 var4) (= var3 var2)) (= var5 var1)) (= var6 (n (getnode (read var4 var1)))))))) (inv_main18 var0 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main4 var3 var1 var0) (and (not (= var0 nullAddr)) (= var2 0)))) (inv_main18 var3 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main18 var6 var4 var3) (and (= var2 1) (and (and (and (= var1 var6) (= var5 var4)) (= var0 var3)) (= var2 (h (getnode (read var6 var3)))))))) (inv_main19 var1 var5 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main18 var6 var4 var3) (and (not (= var0 1)) (and (and (and (= var1 var6) (= var2 var4)) (= var5 var3)) (= var0 (h (getnode (read var6 var3)))))))) (inv_main20 var1 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main10 var2 var1 var0)) (inv_main16 (write var2 var1 (O_node (node 1 (n (getnode (read var2 var1)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (inv_main13 var2 var1 var0 var3)) (inv_main13 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 node) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main4 var7 var2 var1) (and (= var6 nullAddr) (and (and (and (and (= var3 (newHeap (alloc var7 (O_node var5)))) (= var8 var2)) (= var0 var1)) (= var6 (newAddr (alloc var7 (O_node var5))))) (not (= var4 0)))))) (inv_main13 var3 var6 var0 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap)) (or (not (and (inv_main16 var5 var2 var1) (and (and (= var3 (write var5 var2 (O_node (node (h (getnode (read var5 var2))) var1)))) (= var4 var2)) (= var0 var1)))) (inv_main4 var3 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 node) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main4 var7 var2 var1) (and (not (= var6 nullAddr)) (and (and (and (and (= var3 (newHeap (alloc var7 (O_node var5)))) (= var8 var2)) (= var0 var1)) (= var6 (newAddr (alloc var7 (O_node var5))))) (not (= var4 0)))))) (inv_main10 var3 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main10 var2 var1 var0) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main16 var2 var1 var0) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main18 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main20 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main19 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/simple_search_value-1.i.smt2 b/heap-theory-benchmarks/heap/simple_search_value-1.i.smt2 new file mode 100644 index 00000000..34d54260 --- /dev/null +++ b/heap-theory-benchmarks/heap/simple_search_value-1.i.smt2 @@ -0,0 +1,63 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main12 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main35 (Heap Addr Addr Addr Int Int Int) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr Int Int Int) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr Int Int Int) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Int Int Int) Bool) +(declare-fun inv_main7 (Heap Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main13 var1 var0 var2 var3 var4)) (inv_main29 (write var1 var3 (O_node (node var4 (n (getnode (read var1 var3)))))) var0 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main20 var1 var0 var2 var3 var4)) (inv_main26 (write var1 var3 (O_node (node (h (getnode (read var1 var3))) var2))) var0 var2 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main12 var2 var1 var3 var4 var5) (and (= var0 0) (not (<= 0 (+ (+ 10 (* (- 1) var5)) (- 1))))))) (inv_main13 var2 var1 var3 var4 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int)) (or (not (and (inv_main26 var2 var1 var5 var6 var9) (and (and (and (and (and (= var0 var2) (= var8 var1)) (= var4 var5)) (= var7 var6)) (= var10 var9)) (= var3 (n (getnode (read var2 var6))))))) (inv_main12 var0 var8 var4 var3 (+ var10 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 node) (var3 Addr) (var4 Heap)) (or (not (and (inv_main2 var0) (and (not (= var3 nullAddr)) (and (= var4 (newHeap (alloc var0 (O_node var2)))) (= var3 (newAddr (alloc var0 (O_node var2)))))))) (inv_main12 var4 var3 var1 var3 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (or (not (inv_main7 var2 var1 var0)) (inv_main7 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 node) (var2 Heap) (var3 Addr)) (or (not (and (inv_main2 var0) (and (= var3 nullAddr) (and (= var2 (newHeap (alloc var0 (O_node var1)))) (= var3 (newAddr (alloc var0 (O_node var1)))))))) (inv_main7 var2 var3 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int)) (or (not (and (inv_main40 var1 var0 var3 var4 var6 var14 var7) (and (not (= var10 nullAddr)) (and (and (and (and (and (and (and (= var12 var1) (= var5 var0)) (= var9 var3)) (= var11 var4)) (= var13 var6)) (= var8 var14)) (= var2 var7)) (= var10 (n (getnode (read var1 var4)))))))) (inv_main35 var12 var5 var9 var10 var13 var8 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr)) (or (not (and (inv_main29 var2 var1 var5 var6 var8) (and (not (= var4 nullAddr)) (and (and (and (and (= var7 (write var2 var6 (O_node (node (h (getnode (read var2 var6))) 0)))) (= var4 var1)) (= var3 var5)) (= var9 var6)) (= var0 var8))))) (inv_main35 var7 var4 var3 var4 var0 0 0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int)) (or (not (and (inv_main40 var1 var0 var3 var4 var6 var14 var7) (and (and (or (= var2 0) (= var8 0)) (= var10 nullAddr)) (and (and (and (and (and (and (and (= var12 var1) (= var5 var0)) (= var9 var3)) (= var11 var4)) (= var13 var6)) (= var8 var14)) (= var2 var7)) (= var10 (n (getnode (read var1 var4)))))))) (inv_main46 var12 var5 var9 var10 var13 var8 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr)) (or (not (and (inv_main29 var2 var1 var5 var6 var8) (and (= var4 nullAddr) (and (and (and (and (= var7 (write var2 var6 (O_node (node (h (getnode (read var2 var6))) 0)))) (= var4 var1)) (= var3 var5)) (= var9 var6)) (= var0 var8))))) (inv_main46 var7 var4 var3 var4 var0 0 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int)) (or (not (and (inv_main36 var4 var0 var8 var9 var10 var14 var11) (and (= var2 6) (and (and (and (and (and (and (and (= var5 var4) (= var12 var0)) (= var6 var8)) (= var13 var9)) (= var1 var10)) (= var3 var14)) (= var7 var11)) (= var2 (h (getnode (read var4 var9)))))))) (inv_main40 var5 var12 var6 var13 var1 var3 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main36 var2 var1 var4 var5 var8 var14 var9) (and (not (= var13 6)) (and (and (and (and (and (and (and (= var10 var2) (= var12 var1)) (= var7 var4)) (= var6 var5)) (= var3 var8)) (= var0 var14)) (= var11 var9)) (= var13 (h (getnode (read var2 var5)))))))) (inv_main40 var10 var12 var7 var6 var3 var0 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int)) (or (not (and (inv_main35 var3 var1 var6 var7 var8 var14 var9) (and (= var5 2) (and (and (and (and (and (and (and (= var12 var3) (= var10 var1)) (= var0 var6)) (= var13 var7)) (= var11 var8)) (= var2 var14)) (= var4 var9)) (= var5 (h (getnode (read var3 var7)))))))) (inv_main36 var12 var10 var0 var13 var11 1 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int)) (or (not (and (inv_main35 var1 var0 var2 var3 var7 var14 var8) (and (not (= var9 2)) (and (and (and (and (and (and (and (= var13 var1) (= var4 var0)) (= var11 var2)) (= var6 var3)) (= var5 var7)) (= var10 var14)) (= var12 var8)) (= var9 (h (getnode (read var1 var3)))))))) (inv_main36 var13 var4 var11 var6 var5 var10 var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main12 var1 var0 var2 var3 var4) (<= 0 (+ (+ 10 (* (- 1) var4)) (- 1))))) (inv_main14 var1 var0 var2 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main12 var1 var0 var3 var4 var5) (and (not (= var2 0)) (not (<= 0 (+ (+ 10 (* (- 1) var5)) (- 1))))))) (inv_main14 var1 var0 var3 var4 var5)))) +(assert (forall ((var0 Addr) (var1 node) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main14 var5 var3 var7 var8 var12) (and (not (= var2 nullAddr)) (and (and (and (and (and (and (= var11 (newHeap (alloc var10 (O_node var1)))) (= var16 var6)) (= var15 var13)) (= var14 var0)) (= var4 var9)) (= var2 (newAddr (alloc var10 (O_node var1))))) (and (and (and (and (= var10 (write var5 var8 (O_node (node var12 (n (getnode (read var5 var8))))))) (= var6 var3)) (= var13 var7)) (= var0 var8)) (= var9 var12)))))) (inv_main20 var11 var16 var2 var14 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main23 var1 var0 var3 var4 var5 var2)) (inv_main23 var1 var0 var3 var4 var5 var2)))) +(assert (forall ((var0 Addr) (var1 node) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main14 var5 var3 var7 var8 var12) (and (= var2 nullAddr) (and (and (and (and (and (and (= var11 (newHeap (alloc var10 (O_node var1)))) (= var16 var6)) (= var15 var13)) (= var14 var0)) (= var4 var9)) (= var2 (newAddr (alloc var10 (O_node var1))))) (and (and (and (and (= var10 (write var5 var8 (O_node (node var12 (n (getnode (read var5 var8))))))) (= var6 var3)) (= var13 var7)) (= var0 var8)) (= var9 var12)))))) (inv_main23 var11 var16 var2 var14 var4 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main14 var1 var0 var2 var3 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main20 var1 var0 var2 var3 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main26 var1 var0 var2 var3 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main13 var1 var0 var2 var3 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (not (and (inv_main29 var1 var0 var2 var3 var4) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main35 var1 var0 var2 var3 var4 var6 var5) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main36 var1 var0 var2 var3 var4 var6 var5) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main40 var1 var0 var2 var3 var4 var6 var5) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (inv_main46 var1 var0 var2 var3 var4 var6 var5)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-01-2.i.smt2 b/heap-theory-benchmarks/heap/sll-01-2.i.smt2 new file mode 100644 index 00000000..1a0fd74d --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-01-2.i.smt2 @@ -0,0 +1,160 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (inner Addr)) + ) +)) +(declare-fun inv_main10 (Heap Addr) Bool) +(declare-fun inv_main103 (Heap Addr Addr) Bool) +(declare-fun inv_main106 (Heap Addr Addr) Bool) +(declare-fun inv_main109 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr) Bool) +(declare-fun inv_main111 (Heap Addr Addr) Bool) +(declare-fun inv_main114 (Heap Addr Addr) Bool) +(declare-fun inv_main116 (Heap Addr Addr) Bool) +(declare-fun inv_main121 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr) Bool) +(declare-fun inv_main19 (Heap Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr) Bool) +(declare-fun inv_main69 (Heap Addr Addr Int) Bool) +(declare-fun inv_main7 (Heap Addr) Bool) +(declare-fun inv_main70 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main81 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main93 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main98 (Heap Addr Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main109 var1 var0 var2) (= nullAddr (inner (getTSLL (read var1 var2)))))) (inv_main114 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main106 var5 var3 var8) (and (not (= nullAddr var1)) (and (and (and (and (= var4 var5) (= var9 var3)) (= var7 var8)) (= var2 (next (getTSLL (read var5 var3))))) (and (and (= var0 (write var4 var9 defObj)) (= var6 var9)) (= var1 var2)))))) (inv_main103 var0 var1 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main96 var5 var2 var10 var0 var1) (and (not (= nullAddr var7)) (and (= nullAddr var8) (and (and (and (and (and (= var6 var5) (= var7 var2)) (= var4 var10)) (= var3 var0)) (= var9 var1)) (= var8 (next (getTSLL (read var5 var10))))))))) (inv_main103 var6 var7 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main26 var4 var3 var5) (and (not (= nullAddr var2)) (and (= nullAddr var2) (and (not (= nullAddr var2)) (and (= var1 0) (and (and (= var6 var4) (= var2 var3)) (= var0 nullAddr)))))))) (inv_main103 var6 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main109 var1 var0 var2) (not (= nullAddr (inner (getTSLL (read var1 var2))))))) (inv_main116 var1 var0 var2)))) +(assert (forall ((var0 TSLL) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Heap)) (or (not (and (inv_main3 var3 var1) (and (= var4 0) (and (not (= var2 nullAddr)) (and (= var5 (write var3 var1 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var3 var1))))))) (= var2 var1)))))) (inv_main15 (newHeap (alloc var5 (O_TSLL var0))) var2 (newAddr (alloc var5 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main45 var1 var0 var2)) (inv_main56 var1 var0 var2 (inner (getTSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main26 var4 var3 var5) (and (= nullAddr var2) (and (= var1 0) (and (and (= var6 var4) (= var2 var3)) (= var0 nullAddr)))))) (inv_main64 var6 var2 var2)))) +(assert (forall ((var0 TSLL) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main26 var2 var1 var3) (not (= var4 0)))) (inv_main31 (newHeap (alloc var2 (O_TSLL var0))) var1 var3 (newAddr (alloc var2 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main86 var6 var4 var8 var1 var3) (and (= var7 1) (and (and (and (and (and (= var5 var6) (= var10 var4)) (= var9 var8)) (= var7 var1)) (= var2 var3)) (= var0 (inner (getTSLL (read var6 var3)))))))) (inv_main93 var5 var10 var9 var7 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var2 var4 var0 var1) (and (<= 0 (+ 1 (* (- 1) var0))) (= nullAddr var1)))) (inv_main96 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var2 var4 var0 var1) (and (= nullAddr var1) (and (= var0 0) (not (= nullAddr var1)))))) (inv_main78 var3 var2 var4 1 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var2 var4 var0 var1) (and (= nullAddr var1) (and (not (= var0 0)) (not (= nullAddr var1)))))) (inv_main78 var3 var2 var4 2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main49 var1 var0 var2)) (inv_main51 (write var1 (inner (getTSLL (read var1 var2))) (O_TSLL (TSLL nullAddr (inner (getTSLL (read var1 (inner (getTSLL (read var1 var2))))))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main103 var1 var0 var4) (and (not (= nullAddr var6)) (and (not (= nullAddr var6)) (and (and (and (= var3 var1) (= var5 var0)) (= var2 var4)) (= var6 (inner (getTSLL (read var1 var0))))))))) (inv_main109 var3 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main10 var1 var0)) (inv_main21 var1 var0 (inner (getTSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main15 var2 var0 var1)) (inv_main14 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) var1))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main50 var1 var0 var2 var3)) (inv_main49 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) var3))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main56 var1 var0 var3 var2) (not (= var2 nullAddr)))) (inv_main26 var1 var0 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main56 var5 var2 var8 var7) (and (and (not (= var6 0)) (and (= var7 nullAddr) (and (and (and (= var0 var5) (= var1 var2)) (= var3 var8)) (= var10 (inner (getTSLL (read var5 var8))))))) (and (and (and (= var4 var0) (= var9 var1)) (= var11 var3)) (or (and (= var10 nullAddr) (= var6 1)) (and (not (= var10 nullAddr)) (= var6 0))))))) (inv_main26 var4 var9 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main21 var2 var1 var0) (not (= var0 nullAddr)))) (inv_main26 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (inv_main21 var4 var2 var0) (and (and (not (= var8 0)) (and (= var0 nullAddr) (and (and (= var7 var4) (= var6 var2)) (= var1 (inner (getTSLL (read var4 var2))))))) (and (and (= var5 var7) (= var3 var6)) (or (and (= var1 nullAddr) (= var8 1)) (and (not (= var1 nullAddr)) (= var8 0))))))) (inv_main26 var5 var3 var3)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main30 var3 var0 var5) (and (and (and (= var2 var3) (= var6 var0)) (= var4 var5)) (= var1 (next (getTSLL (read var3 var5))))))) (inv_main32 var2 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main3 var1 var0) (and (= var3 nullAddr) (and (= var2 (write var1 var0 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var1 var0))))))) (= var3 var0))))) (inv_main7 var2 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var2 var4 var0 var1) (and (not (= nullAddr var1)) (and (= var0 0) (not (= nullAddr var1)))))) (inv_main76 var3 var2 var4 1 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var2 var4 var0 var1) (and (not (= nullAddr var1)) (and (not (= var0 0)) (not (= nullAddr var1)))))) (inv_main76 var3 var2 var4 2 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap)) (or (not (and (inv_main3 var3 var1) (and (not (= var0 0)) (and (not (= var2 nullAddr)) (and (= var4 (write var3 var1 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var3 var1))))))) (= var2 var1)))))) (inv_main11 var4 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var2 var4 var0 var1) (and (not (<= 0 (+ 1 (* (- 1) var0)))) (= nullAddr var1)))) (inv_main98 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main103 var1 var0 var4) (and (= nullAddr var6) (and (and (and (= var3 var1) (= var5 var0)) (= var2 var4)) (= var6 (inner (getTSLL (read var1 var0)))))))) (inv_main106 var3 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main114 var4 var3 var5) (and (= nullAddr (next (getTSLL (read var4 var5)))) (and (and (= var2 (write var4 var5 defObj)) (= var1 var3)) (= var0 var5))))) (inv_main106 var2 var1 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main14 var1 var0)) (inv_main16 (write var1 (inner (getTSLL (read var1 var0))) (O_TSLL (TSLL nullAddr (inner (getTSLL (read var1 (inner (getTSLL (read var1 var0))))))))) var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main81 var3 var2 var4 var0 var1) (= nullAddr (next (getTSLL (read var3 var1)))))) (inv_main86 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (and (inv_main114 var1 var0 var2) (not (= nullAddr (next (getTSLL (read var1 var2))))))) (inv_main121 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main32 var2 var1 var4) (and (= nullAddr var3) (and (and (= var5 (write var2 var4 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var2 var4))))))) (= var0 var1)) (= var3 var4))))) (inv_main37 var5 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main11 var1 var0)) (inv_main10 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) nullAddr))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main16 var1 var0)) (inv_main10 (write var1 (inner (getTSLL (read var1 var0))) (O_TSLL (TSLL (next (getTSLL (read var1 (inner (getTSLL (read var1 var0)))))) nullAddr))) var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main46 var1 var0 var2)) (inv_main45 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main51 var1 var0 var2)) (inv_main45 (write var1 (inner (getTSLL (read var1 var2))) (O_TSLL (TSLL (next (getTSLL (read var1 (inner (getTSLL (read var1 var2)))))) nullAddr))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main21 var4 var2 var0) (and (and (= var7 0) (and (= var0 nullAddr) (and (and (= var8 var4) (= var6 var2)) (= var1 (inner (getTSLL (read var4 var2))))))) (and (and (= var5 var8) (= var3 var6)) (or (and (= var1 nullAddr) (= var7 1)) (and (not (= var1 nullAddr)) (= var7 0))))))) (inv_main19 var5 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main32 var3 var1 var5) (and (not (= var0 0)) (and (not (= var4 nullAddr)) (and (not (= nullAddr var4)) (and (and (= var6 (write var3 var5 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var3 var5))))))) (= var2 var1)) (= var4 var5))))))) (inv_main46 var6 var2 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main76 var3 var2 var4 var0 var1) (= nullAddr (inner (getTSLL (read var3 var1)))))) (inv_main81 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main32 var2 var0 var4) (and (= var3 nullAddr) (and (not (= nullAddr var3)) (and (and (= var5 (write var2 var4 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var2 var4))))))) (= var1 var0)) (= var3 var4)))))) (inv_main42 var5 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main103 var1 var0 var4) (and (= nullAddr var6) (and (not (= nullAddr var6)) (and (and (and (= var3 var1) (= var5 var0)) (= var2 var4)) (= var6 (inner (getTSLL (read var1 var0))))))))) (inv_main111 var3 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main31 var1 var0 var3 var2)) (inv_main30 (write var1 var3 (O_TSLL (TSLL var2 (inner (getTSLL (read var1 var3)))))) var0 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main81 var3 var2 var4 var0 var1) (not (= nullAddr (next (getTSLL (read var3 var1))))))) (inv_main88 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main69 var2 var1 var3 var0)) (inv_main70 var2 var1 var3 var0 (inner (getTSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main93 var6 var3 var9 var1 var2) (and (and (and (and (and (= var4 var6) (= var7 var3)) (= var0 var9)) (= var5 var1)) (= var10 var2)) (= var8 (inner (getTSLL (read var6 var2))))))) (inv_main70 var4 var7 var0 var5 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main86 var6 var4 var8 var1 var3) (and (not (= var7 1)) (and (and (and (and (and (= var5 var6) (= var10 var4)) (= var9 var8)) (= var7 var1)) (= var2 var3)) (= var0 (inner (getTSLL (read var6 var3)))))))) (inv_main70 var5 var10 var9 var7 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main96 var5 var2 var10 var0 var1) (and (not (= nullAddr var8)) (and (and (and (and (and (= var7 var5) (= var6 var2)) (= var4 var10)) (= var3 var0)) (= var9 var1)) (= var8 (next (getTSLL (read var5 var10)))))))) (inv_main69 var7 var6 var8 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main26 var4 var3 var5) (and (not (= nullAddr var2)) (and (not (= nullAddr var2)) (and (= var1 0) (and (and (= var6 var4) (= var2 var3)) (= var0 nullAddr))))))) (inv_main69 var6 var2 var2 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 TSLL) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main32 var3 var1 var6) (and (= var0 0) (and (not (= var5 nullAddr)) (and (not (= nullAddr var5)) (and (and (= var7 (write var3 var6 (O_TSLL (TSLL nullAddr (inner (getTSLL (read var3 var6))))))) (= var2 var1)) (= var5 var6))))))) (inv_main50 (newHeap (alloc var7 (O_TSLL var4))) var2 var5 (newAddr (alloc var7 (O_TSLL var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main76 var3 var2 var4 var0 var1) (not (= nullAddr (inner (getTSLL (read var3 var1))))))) (inv_main83 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr)) (or (not (and (inv_main56 var5 var3 var7 var6) (and (and (= var1 0) (and (= var6 nullAddr) (and (and (and (= var0 var5) (= var2 var3)) (= var4 var7)) (= var10 (inner (getTSLL (read var5 var7))))))) (and (and (and (= var9 var0) (= var8 var2)) (= var11 var4)) (or (and (= var10 nullAddr) (= var1 1)) (and (not (= var10 nullAddr)) (= var1 0))))))) (inv_main54 var9 var8 var11)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (inv_main7 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main11 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main15 var2 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main14 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main14 var1 var0) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main16 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main16 var1 var0) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main10 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main21 var2 var1 var0) (and (= var0 nullAddr) (not (is-O_TSLL (read var2 var1)))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (inv_main19 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main31 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main30 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main32 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main37 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main42 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main46 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main50 var1 var0 var2 var3) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main49 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main49 var1 var0 var2) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main51 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main51 var1 var0 var2) (not (is-O_TSLL (read var1 (inner (getTSLL (read var1 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main45 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main56 var1 var0 var3 var2) (and (= var2 nullAddr) (not (is-O_TSLL (read var1 var3)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main54 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main64 var1 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main69 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (inv_main78 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main76 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (inv_main83 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main81 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (inv_main88 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main86 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main93 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (inv_main98 var3 var2 var4 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main96 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main103 var1 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main111 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main109 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main116 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main114 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main121 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main106 var1 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-circular-1.i.smt2 b/heap-theory-benchmarks/heap/sll-circular-1.i.smt2 new file mode 100644 index 00000000..747e4e3d --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-circular-1.i.smt2 @@ -0,0 +1,89 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (data Int)) + ) +)) +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main26 (Heap Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Int) Bool) +(declare-fun inv_main37 (Heap Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int) Bool) +(declare-fun inv_main42 (Heap Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main50 (Heap Addr Addr Int) Bool) +(declare-fun inv_main55 (Heap Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main38 var2 var1 var3 var0)) (inv_main44 var2 var1 var3 var0 (data (getTSLL (read var2 (next (getTSLL (read var2 var3)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main13 var3 var2 var4 var0) (and (= var6 0) (and (and (and (= var8 (write var3 var4 (O_TSLL (TSLL var2 (data (getTSLL (read var3 var4))))))) (= var1 var2)) (= var5 var4)) (= var7 var0))))) (inv_main16 var8 var1 var5 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main13 var3 var2 var4 var0) (and (= var7 1) (and (not (= var6 0)) (and (and (and (= var8 (write var3 var4 (O_TSLL (TSLL var2 (data (getTSLL (read var3 var4))))))) (= var1 var2)) (= var5 var4)) (= var7 var0)))))) (inv_main16 var8 var1 var5 2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main13 var3 var2 var4 var0) (and (= var7 2) (and (not (= var7 1)) (and (not (= var6 0)) (and (and (and (= var8 (write var3 var4 (O_TSLL (TSLL var2 (data (getTSLL (read var3 var4))))))) (= var1 var2)) (= var5 var4)) (= var7 var0))))))) (inv_main16 var8 var1 var5 3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main50 var3 var2 var4 var0) (and (not (= var6 0)) (and (and (and (and (= var5 var3) (= var8 var2)) (= var1 var4)) (= var7 var0)) (= var6 (data (getTSLL (read var3 var4)))))))) (inv_main55 var5 var1 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main32 var3 var2 var6 var1) (and (= var4 0) (and (and (and (and (= var8 var3) (= var5 var2)) (= var0 var6)) (= var7 var1)) (= var4 (data (getTSLL (read var3 var6)))))))) (inv_main37 var8 var5 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main32 var3 var2 var5 var1) (and (not (= var7 0)) (and (and (and (and (= var6 var3) (= var8 var2)) (= var0 var5)) (= var4 var1)) (= var7 (data (getTSLL (read var3 var5)))))))) (inv_main38 var6 var8 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL var0 (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main40 var3 var2 var5 var1) (and (and (and (and (= var4 var3) (= var8 var2)) (= var0 var5)) (= var6 var1)) (= var7 (next (getTSLL (read var3 var5))))))) (inv_main32 var4 var8 var7 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main29 var3 var2 var6 var0) (and (not (= nullAddr var8)) (and (and (and (and (= var1 var3) (= var7 var2)) (= var5 var6)) (= var4 var0)) (= var8 (next (getTSLL (read var3 var2)))))))) (inv_main32 var1 var7 var8 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main16 var3 var2 var4 var0) (and (= nullAddr var5) (and (and (and (= var1 (write var3 var4 (O_TSLL (TSLL (next (getTSLL (read var3 var4))) var0)))) (= var6 var2)) (= var5 var4)) (= var7 var0))))) (inv_main26 var1 var6 var5 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main37 var2 var1 var5 var0) (and (and (and (and (= var3 var2) (= var6 var1)) (= var4 var5)) (= var8 var0)) (= var7 (next (getTSLL (read var2 var1))))))) (inv_main50 var3 var6 var7 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main55 var3 var2 var4 var0) (and (and (and (and (= var7 var3) (= var8 var2)) (= var1 var4)) (= var5 var0)) (= var6 (next (getTSLL (read var3 var4))))))) (inv_main50 (write var7 var8 defObj) var8 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main12 var3 var2 var4 var0 var1)) (inv_main11 (write var3 var4 (O_TSLL (TSLL var1 (data (getTSLL (read var3 var4)))))) var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 TSLL) (var8 Addr) (var9 Heap)) (or (not (and (inv_main16 var2 var1 var5 var0) (and (not (= var4 0)) (and (not (= nullAddr var3)) (and (and (and (= var9 (write var2 var5 (O_TSLL (TSLL (next (getTSLL (read var2 var5))) var0)))) (= var8 var1)) (= var3 var5)) (= var6 var0)))))) (inv_main12 (newHeap (alloc var9 (O_TSLL var7))) var8 var3 var6 (newAddr (alloc var9 (O_TSLL var7))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 TSLL) (var4 Int) (var5 Addr)) (or (not (and (inv_main4 var1 var0) (and (not (= var4 0)) (and (= var2 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) 0)))) (= var5 var0))))) (inv_main12 (newHeap (alloc var2 (O_TSLL var3))) var5 var5 1 (newAddr (alloc var2 (O_TSLL var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main11 var3 var2 var5 var1) (and (and (and (and (= var6 var3) (= var8 var2)) (= var4 var5)) (= var7 var1)) (= var0 (next (getTSLL (read var3 var5))))))) (inv_main13 var6 var8 var0 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main45 var2 var1 var7 var0 var6) (and (= var9 0) (and (and (and (and (= var3 var2) (= var5 var1)) (= var8 var7)) (= var4 var0)) (or (and (<= 0 (+ (data (getTSLL (read var2 (next (getTSLL (read var2 var7)))))) (* (- 1) var6))) (= var9 1)) (and (not (<= 0 (+ (data (getTSLL (read var2 (next (getTSLL (read var2 var7)))))) (* (- 1) var6)))) (= var9 0))))))) (inv_main42 var3 var5 var8 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main44 var2 var1 var3 var0 var4) (not (= var4 0)))) (inv_main45 var2 var1 var3 var0 (data (getTSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main44 var2 var1 var3 var0 var4) (= var4 0))) (inv_main40 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main45 var2 var1 var7 var0 var6) (and (not (= var9 0)) (and (and (and (and (= var3 var2) (= var5 var1)) (= var8 var7)) (= var4 var0)) (or (and (<= 0 (+ (data (getTSLL (read var2 (next (getTSLL (read var2 var7)))))) (* (- 1) var6))) (= var9 1)) (and (not (<= 0 (+ (data (getTSLL (read var2 (next (getTSLL (read var2 var7)))))) (* (- 1) var6)))) (= var9 0))))))) (inv_main40 var3 var5 var8 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main13 var3 var2 var4 var0) (and (not (= var7 2)) (and (not (= var7 1)) (and (not (= var6 0)) (and (and (and (= var8 (write var3 var4 (O_TSLL (TSLL var2 (data (getTSLL (read var3 var4))))))) (= var1 var2)) (= var5 var4)) (= var7 var0))))))) (inv_main8 var8 var1 var5 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main16 var2 var1 var4 var0) (and (= var5 0) (and (not (= nullAddr var3)) (and (and (and (= var8 (write var2 var4 (O_TSLL (TSLL (next (getTSLL (read var2 var4))) var0)))) (= var7 var1)) (= var3 var4)) (= var6 var0)))))) (inv_main8 var8 var7 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap)) (or (not (and (inv_main4 var2 var1) (and (= var3 0) (and (= var4 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 0)))) (= var0 var1))))) (inv_main8 var4 var0 var0 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main29 var3 var2 var6 var0) (and (= nullAddr var8) (and (and (and (and (= var1 var3) (= var7 var2)) (= var5 var6)) (= var4 var0)) (= var8 (next (getTSLL (read var3 var2)))))))) (inv_main34 var1 var7 var8 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main8 var2 var1 var3 var0)) (inv_main29 (write var2 var3 (O_TSLL (TSLL (next (getTSLL (read var2 var3))) var0))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main12 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main11 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main13 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main16 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main26 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main8 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main29 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main34 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main32 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main38 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main38 var2 var1 var3 var0) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var3)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int)) (not (and (inv_main44 var2 var1 var3 var0 var4) (and (not (= var4 0)) (not (is-O_TSLL (read var2 var3)))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main45 var2 var1 var4 var0 var3) (not (is-O_TSLL (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main45 var2 var1 var4 var0 var3) (not (is-O_TSLL (read var2 (next (getTSLL (read var2 var4)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main42 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main40 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main37 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main50 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main55 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-circular-2.i.smt2 b/heap-theory-benchmarks/heap/sll-circular-2.i.smt2 new file mode 100644 index 00000000..623ee0c1 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-circular-2.i.smt2 @@ -0,0 +1,89 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (data Int)) + ) +)) +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main26 (Heap Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Int) Bool) +(declare-fun inv_main34 (Heap Addr Addr Int) Bool) +(declare-fun inv_main37 (Heap Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int) Bool) +(declare-fun inv_main42 (Heap Addr Addr Int) Bool) +(declare-fun inv_main44 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int Int) Bool) +(declare-fun inv_main50 (Heap Addr Addr Int) Bool) +(declare-fun inv_main55 (Heap Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main50 var3 var1 var8 var7) (and (not (= var2 0)) (and (and (and (and (= var6 var3) (= var4 var1)) (= var5 var8)) (= var0 var7)) (= var2 (data (getTSLL (read var3 var8)))))))) (inv_main55 var6 var5 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (or (not (inv_main8 var1 var0 var3 var2)) (inv_main29 (write var1 var3 (O_TSLL (TSLL (next (getTSLL (read var1 var3))) var2))) var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL var0 (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main13 var3 var1 var8 var6) (and (= var5 0) (and (and (and (= var7 (write var3 var8 (O_TSLL (TSLL var1 (data (getTSLL (read var3 var8))))))) (= var4 var1)) (= var2 var8)) (= var0 var6))))) (inv_main16 var7 var4 var2 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main13 var3 var1 var7 var5) (and (= var0 1) (and (not (= var8 0)) (and (and (and (= var6 (write var3 var7 (O_TSLL (TSLL var1 (data (getTSLL (read var3 var7))))))) (= var4 var1)) (= var2 var7)) (= var0 var5)))))) (inv_main16 var6 var4 var2 2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main13 var3 var1 var7 var5) (and (= var0 2) (and (not (= var0 1)) (and (not (= var8 0)) (and (and (and (= var6 (write var3 var7 (O_TSLL (TSLL var1 (data (getTSLL (read var3 var7))))))) (= var4 var1)) (= var2 var7)) (= var0 var5))))))) (inv_main16 var6 var4 var2 3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main29 var4 var1 var7 var6) (and (= nullAddr var5) (and (and (and (and (= var2 var4) (= var3 var1)) (= var0 var7)) (= var8 var6)) (= var5 (next (getTSLL (read var4 var1)))))))) (inv_main34 var2 var3 var5 var8)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (inv_main12 var2 var0 var4 var3 var1)) (inv_main11 (write var2 var4 (O_TSLL (TSLL var1 (data (getTSLL (read var2 var4)))))) var0 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr)) (or (not (and (inv_main45 var3 var0 var6 var4 var8) (and (not (= var5 0)) (and (and (and (and (= var1 var3) (= var9 var0)) (= var2 var6)) (= var7 var4)) (or (and (<= 0 (+ (+ var8 (* (- 1) (data (getTSLL (read var3 (next (getTSLL (read var3 var6)))))))) (- 1))) (= var5 1)) (and (not (<= 0 (+ (+ var8 (* (- 1) (data (getTSLL (read var3 (next (getTSLL (read var3 var6)))))))) (- 1)))) (= var5 0))))))) (inv_main40 var1 var9 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main44 var2 var0 var4 var3 var1) (not (= var1 0)))) (inv_main45 var2 var0 var4 var3 (data (getTSLL (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main16 var2 var0 var5 var4) (and (= nullAddr var3) (and (and (and (= var7 (write var2 var5 (O_TSLL (TSLL (next (getTSLL (read var2 var5))) var4)))) (= var6 var0)) (= var3 var5)) (= var1 var4))))) (inv_main26 var7 var6 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main44 var2 var0 var4 var3 var1) (= var1 0))) (inv_main42 var2 var0 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr)) (or (not (and (inv_main45 var3 var0 var6 var4 var8) (and (= var5 0) (and (and (and (and (= var1 var3) (= var9 var0)) (= var2 var6)) (= var7 var4)) (or (and (<= 0 (+ (+ var8 (* (- 1) (data (getTSLL (read var3 (next (getTSLL (read var3 var6)))))))) (- 1))) (= var5 1)) (and (not (<= 0 (+ (+ var8 (* (- 1) (data (getTSLL (read var3 (next (getTSLL (read var3 var6)))))))) (- 1)))) (= var5 0))))))) (inv_main42 var1 var9 var2 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main32 var4 var1 var7 var5) (and (not (= var0 0)) (and (and (and (and (= var2 var4) (= var6 var1)) (= var8 var7)) (= var3 var5)) (= var0 (data (getTSLL (read var4 var7)))))))) (inv_main38 var2 var6 var8 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 TSLL) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (and (inv_main16 var3 var1 var8 var7) (and (not (= var9 0)) (and (not (= nullAddr var2)) (and (and (and (= var4 (write var3 var8 (O_TSLL (TSLL (next (getTSLL (read var3 var8))) var7)))) (= var0 var1)) (= var2 var8)) (= var6 var7)))))) (inv_main12 (newHeap (alloc var4 (O_TSLL var5))) var0 var2 var6 (newAddr (alloc var4 (O_TSLL var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 TSLL) (var4 Heap) (var5 Addr)) (or (not (and (inv_main4 var2 var0) (and (not (= var1 0)) (and (= var4 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) 0)))) (= var5 var0))))) (inv_main12 (newHeap (alloc var4 (O_TSLL var3))) var5 var5 1 (newAddr (alloc var4 (O_TSLL var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main37 var3 var1 var7 var5) (and (and (and (and (= var6 var3) (= var2 var1)) (= var0 var7)) (= var8 var5)) (= var4 (next (getTSLL (read var3 var1))))))) (inv_main50 var6 var2 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main55 var5 var2 var7 var6) (and (and (and (and (= var4 var5) (= var1 var2)) (= var0 var7)) (= var8 var6)) (= var3 (next (getTSLL (read var5 var7))))))) (inv_main50 (write var4 var1 defObj) var1 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (or (not (inv_main38 var1 var0 var3 var2)) (inv_main44 var1 var0 var3 var2 (data (getTSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main13 var3 var1 var7 var5) (and (not (= var0 2)) (and (not (= var0 1)) (and (not (= var8 0)) (and (and (and (= var6 (write var3 var7 (O_TSLL (TSLL var1 (data (getTSLL (read var3 var7))))))) (= var4 var1)) (= var2 var7)) (= var0 var5))))))) (inv_main8 var6 var4 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main16 var3 var1 var7 var6) (and (= var8 0) (and (not (= nullAddr var2)) (and (and (and (= var4 (write var3 var7 (O_TSLL (TSLL (next (getTSLL (read var3 var7))) var6)))) (= var0 var1)) (= var2 var7)) (= var5 var6)))))) (inv_main8 var4 var0 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main4 var2 var0) (and (= var4 0) (and (= var1 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) 0)))) (= var3 var0))))) (inv_main8 var1 var3 var3 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main32 var5 var1 var8 var7) (and (= var6 0) (and (and (and (and (= var4 var5) (= var2 var1)) (= var0 var8)) (= var3 var7)) (= var6 (data (getTSLL (read var5 var8)))))))) (inv_main37 var4 var2 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main40 var4 var1 var8 var6) (and (and (and (and (= var5 var4) (= var0 var1)) (= var7 var8)) (= var3 var6)) (= var2 (next (getTSLL (read var4 var8))))))) (inv_main32 var5 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main29 var4 var1 var7 var6) (and (not (= nullAddr var5)) (and (and (and (and (= var2 var4) (= var3 var1)) (= var0 var7)) (= var8 var6)) (= var5 (next (getTSLL (read var4 var1)))))))) (inv_main32 var2 var3 var5 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main11 var5 var1 var7 var6) (and (and (and (and (= var8 var5) (= var0 var1)) (= var4 var7)) (= var3 var6)) (= var2 (next (getTSLL (read var5 var7))))))) (inv_main13 var8 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main12 var2 var0 var4 var3 var1) (not (is-O_TSLL (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main11 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main13 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main16 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (inv_main26 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main8 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main29 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (inv_main34 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main32 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main38 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main38 var1 var0 var3 var2) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main44 var2 var0 var4 var3 var1) (and (not (= var1 0)) (not (is-O_TSLL (read var2 var4)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (not (and (inv_main45 var1 var0 var3 var2 var4) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (not (and (inv_main45 var1 var0 var3 var2 var4) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (inv_main42 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main40 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main37 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main50 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr)) (not (and (inv_main55 var1 var0 var3 var2) (not (is-O_TSLL (read var1 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-optional-1.i.smt2 b/heap-theory-benchmarks/heap/sll-optional-1.i.smt2 new file mode 100644 index 00000000..f95732af --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-optional-1.i.smt2 @@ -0,0 +1,120 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (opt Addr) (data Int)) + ) +)) +(declare-fun inv_main10 (Heap Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr) Bool) +(declare-fun inv_main13 (Heap Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Addr Addr Int) Bool) +(declare-fun inv_main48 (Heap Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main30 var0 var2 var1)) (inv_main17 (write var0 (opt (getTSLL (read var0 var1))) (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 (opt (getTSLL (read var0 var1)))))) (data (getTSLL (read var0 (opt (getTSLL (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main35 var0 var2 var1)) (inv_main17 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) var1 (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main36 var0 var2 var1)) (inv_main17 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) var1 (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main10 var0 var1) (and (= var2 (write var0 (opt (getTSLL (read var0 var1))) (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 (opt (getTSLL (read var0 var1)))))) (data (getTSLL (read var0 (opt (getTSLL (read var0 var1)))))))))) (= var3 var1)))) (inv_main17 var2 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main15 var0 var2) (and (= var1 (write var0 var2 (O_TSLL (TSLL (next (getTSLL (read var0 var2))) var2 (data (getTSLL (read var0 var2))))))) (= var3 var2)))) (inv_main17 var1 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main16 var0 var3) (and (= var1 (write var0 var3 (O_TSLL (TSLL (next (getTSLL (read var0 var3))) var3 (data (getTSLL (read var0 var3))))))) (= var2 var3)))) (inv_main17 var1 var2 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (and (inv_main23 var0 var5 var1) (and (not (= var4 0)) (and (and (= var3 (write var0 var1 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var1))) (data (getTSLL (read var0 var1))))))) (= var2 var5)) (= var6 var1))))) (inv_main26 var3 var2 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main40 var0 var5 var1) (and (not (= var4 nullAddr)) (and (= var6 nullAddr) (and (and (and (= var3 var0) (= var4 var5)) (= var2 var1)) (= var6 (next (getTSLL (read var0 var1))))))))) (inv_main56 var3 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main17 var0 var3 var1) (and (not (= var3 nullAddr)) (and (= var3 nullAddr) (= var2 0))))) (inv_main56 var0 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main60 var0 var6 var1) (and (and (not (= var3 nullAddr)) (and (and (= var5 (write var0 (opt (getTSLL (read var0 var6))) defObj)) (= var7 var6)) (= var4 var1))) (and (and (= var8 (write var5 var7 defObj)) (= var2 var7)) (= var3 var4))))) (inv_main56 var8 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr)) (or (not (and (inv_main57 var0 var5 var1) (and (and (not (= var9 nullAddr)) (and (not (= var7 2)) (and (and (and (= var2 var0) (= var6 var5)) (= var4 var1)) (= var7 (data (getTSLL (read var0 var5))))))) (and (and (= var3 (write var2 var6 defObj)) (= var8 var6)) (= var9 var4))))) (inv_main56 var3 var9 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main39 var0 var2 var1)) (inv_main44 var0 var2 var1 (data (getTSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main13 var0 var1)) (inv_main16 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 0))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 TSLL) (var5 Addr) (var6 Heap)) (or (not (and (inv_main26 var0 var5 var1) (and (and (= var6 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 2)))) (= var2 var5)) (= var3 var1)))) (inv_main31 (newHeap (alloc var6 (O_TSLL var4))) var2 var3 (newAddr (alloc var6 (O_TSLL var4))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 TSLL)) (or (not (and (inv_main6 var0 var3) (and (= var1 (write var0 var3 (O_TSLL (TSLL (next (getTSLL (read var0 var3))) (opt (getTSLL (read var0 var3))) 2)))) (= var2 var3)))) (inv_main11 (newHeap (alloc var1 (O_TSLL var4))) var2 (newAddr (alloc var1 (O_TSLL var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main11 var0 var2 var1)) (inv_main10 (write var0 var2 (O_TSLL (TSLL (next (getTSLL (read var0 var2))) var1 (data (getTSLL (read var0 var2)))))) var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main21 var0 var2 var1) (and (and (and (= var6 var0) (= var5 var2)) (= var4 var1)) (= var3 (next (getTSLL (read var0 var1))))))) (inv_main23 var6 var5 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main22 var0 var3 var1 var2)) (inv_main21 (write var0 var1 (O_TSLL (TSLL var2 (opt (getTSLL (read var0 var1))) (data (getTSLL (read var0 var1)))))) var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main32 var0 var2 var1)) (inv_main35 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 1))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main12 var0 var1)) (inv_main15 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 1))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main40 var0 var5 var1) (and (not (= var6 nullAddr)) (and (and (and (= var3 var0) (= var4 var5)) (= var2 var1)) (= var6 (next (getTSLL (read var0 var1)))))))) (inv_main39 var3 var4 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main17 var0 var3 var1) (and (not (= var3 nullAddr)) (= var2 0)))) (inv_main39 var0 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Heap) (var11 Int)) (or (not (and (inv_main48 var0 var8 var2 var4) (and (and (= var11 0) (and (= var4 0) (and (and (and (= var9 var0) (= var7 var8)) (= var1 var2)) (= var3 (opt (getTSLL (read var0 var2))))))) (and (and (and (= var10 var9) (= var6 var7)) (= var5 var1)) (or (and (= var3 var1) (= var11 1)) (and (not (= var3 var1)) (= var11 0))))))) (inv_main42 var10 var6 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main33 var0 var2 var1)) (inv_main36 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 0))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main56 var0 var5 var2) (and (and (and (= var3 var0) (= var6 var5)) (= var4 var2)) (= var1 (next (getTSLL (read var0 var2))))))) (inv_main57 var3 var6 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main31 var0 var3 var1 var2)) (inv_main30 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) var2 (data (getTSLL (read var0 var1)))))) var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main46 var0 var3 var1 var2) (= var2 0))) (inv_main48 var0 var3 var1 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main46 var0 var5 var1 var3) (and (not (= var3 0)) (and (and (and (= var2 var0) (= var7 var5)) (= var4 var1)) (= var6 (next (getTSLL (read var0 (opt (getTSLL (read var0 var1))))))))))) (and (or (not (= var6 nullAddr)) (inv_main48 var2 var7 var4 1)) (or (not (not (= var6 nullAddr))) (inv_main48 var2 var7 var4 0)))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main3 var0 var4) (and (not (= var1 0)) (and (= var2 (write var0 var4 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var4))) (data (getTSLL (read var0 var4))))))) (= var3 var4))))) (inv_main6 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main3 var0 var4) (and (not (= var5 0)) (and (= var1 0) (and (= var2 (write var0 var4 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var4))) (data (getTSLL (read var0 var4))))))) (= var3 var4)))))) (inv_main12 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main48 var0 var3 var1 var2) (not (= var2 0)))) (inv_main40 var0 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Heap) (var11 Addr)) (or (not (and (inv_main48 var0 var7 var2 var4) (and (and (not (= var9 0)) (and (= var4 0) (and (and (and (= var8 var0) (= var6 var7)) (= var1 var2)) (= var3 (opt (getTSLL (read var0 var2))))))) (and (and (and (= var10 var8) (= var5 var6)) (= var11 var1)) (or (and (= var3 var1) (= var9 1)) (and (not (= var3 var1)) (= var9 0))))))) (inv_main40 var10 var5 var11)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main3 var0 var5) (and (= var4 0) (and (= var1 0) (and (= var3 (write var0 var5 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var5))) (data (getTSLL (read var0 var5))))))) (= var2 var5)))))) (inv_main13 var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main57 var0 var6 var1) (and (= var3 2) (and (and (and (= var4 var0) (= var5 var6)) (= var2 var1)) (= var3 (data (getTSLL (read var0 var6)))))))) (inv_main60 var4 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main44 var0 var3 var1 var2) (not (= var2 2)))) (inv_main46 var0 var3 var1 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main44 var0 var7 var1 var6) (and (= var6 2) (and (and (and (= var3 var0) (= var2 var7)) (= var4 var1)) (= var5 (opt (getTSLL (read var0 var1)))))))) (and (or (not (not (= var5 var4))) (inv_main46 var3 var2 var4 1)) (or (not (= var5 var4)) (inv_main46 var3 var2 var4 0)))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TSLL) (var3 Addr) (var4 Int)) (or (not (and (inv_main17 var0 var3 var1) (not (= var4 0)))) (inv_main22 (newHeap (alloc var0 (O_TSLL var2))) var3 var1 (newAddr (alloc var0 (O_TSLL var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main23 var0 var5 var1) (and (= var3 0) (and (= var7 0) (and (and (= var4 (write var0 var1 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var1))) (data (getTSLL (read var0 var1))))))) (= var2 var5)) (= var6 var1)))))) (inv_main33 var4 var2 var6)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main23 var0 var5 var2) (and (not (= var1 0)) (and (= var7 0) (and (and (= var4 (write var0 var2 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var2))) (data (getTSLL (read var0 var2))))))) (= var3 var5)) (= var6 var2)))))) (inv_main32 var4 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main6 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main11 var0 var2 var1) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main10 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main10 var0 var1) (not (is-O_TSLL (read var0 (opt (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main12 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main15 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main13 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main16 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main22 var0 var3 var1 var2) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main21 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main23 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main26 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main31 var0 var3 var1 var2) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main30 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main30 var0 var2 var1) (not (is-O_TSLL (read var0 (opt (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main32 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main35 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main33 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main36 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main39 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main44 var0 var3 var1 var2) (and (= var2 2) (not (is-O_TSLL (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main46 var0 var3 var1 var2) (and (not (= var2 0)) (not (is-O_TSLL (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main46 var0 var3 var1 var2) (and (not (= var2 0)) (not (is-O_TSLL (read var0 (opt (getTSLL (read var0 var1))))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main48 var0 var3 var1 var2) (and (= var2 0) (not (is-O_TSLL (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main42 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main40 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main56 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main57 var0 var2 var1) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main60 var0 var2 var1) (not (is-O_TSLL (read var0 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-optional-2.i.smt2 b/heap-theory-benchmarks/heap/sll-optional-2.i.smt2 new file mode 100644 index 00000000..1eaa9b6f --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-optional-2.i.smt2 @@ -0,0 +1,111 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (opt Addr) (data Int)) + ) +)) +(declare-fun inv_main10 (Heap Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr) Bool) +(declare-fun inv_main13 (Heap Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr Int) Bool) +(declare-fun inv_main52 (Heap Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int)) (or (not (and (inv_main44 var4 var7 var1 var11) (and (and (not (= var10 0)) (and (= var11 2) (and (and (and (= var0 var4) (= var3 var7)) (= var8 var1)) (= var9 (opt (getTSLL (read var4 var1))))))) (and (and (and (= var6 var0) (= var2 var3)) (= var5 var8)) (or (and (= var9 var8) (= var10 1)) (and (not (= var9 var8)) (= var10 0))))))) (inv_main40 var6 var2 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 TSLL) (var4 Addr)) (or (not (and (inv_main17 var2 var4 var1) (not (= var0 0)))) (inv_main22 (newHeap (alloc var2 (O_TSLL var3))) var4 var1 (newAddr (alloc var2 (O_TSLL var3))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main12 var0 var1)) (inv_main15 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 1))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main3 var0 var2) (and (not (= var4 0)) (and (= var5 0) (and (= var3 (write var0 var2 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var2))) (data (getTSLL (read var0 var2))))))) (= var1 var2)))))) (inv_main12 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main31 var1 var3 var0 var2)) (inv_main30 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) var2 (data (getTSLL (read var1 var0)))))) var3 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main23 var3 var4 var1) (and (= var6 0) (and (= var2 0) (and (and (= var0 (write var3 var1 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var3 var1))) (data (getTSLL (read var3 var1))))))) (= var5 var4)) (= var7 var1)))))) (inv_main33 var0 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (inv_main53 var1 var3 var0) (and (= var4 2) (and (and (and (= var6 var1) (= var2 var3)) (= var5 var0)) (= var4 (data (getTSLL (read var1 var3)))))))) (inv_main56 var6 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main52 var4 var5 var0) (and (and (and (= var2 var4) (= var3 var5)) (= var1 var0)) (= var6 (next (getTSLL (read var4 var0))))))) (inv_main53 var2 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main40 var3 var6 var1) (and (not (= var5 nullAddr)) (and (and (and (= var4 var3) (= var0 var6)) (= var2 var1)) (= var5 (next (getTSLL (read var3 var1)))))))) (inv_main39 var4 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (or (not (and (inv_main17 var2 var3 var0) (and (not (= var3 nullAddr)) (= var1 0)))) (inv_main39 var2 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (and (inv_main3 var0 var3) (and (= var1 0) (and (= var5 0) (and (= var4 (write var0 var3 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 var3))) (data (getTSLL (read var0 var3))))))) (= var2 var3)))))) (inv_main13 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main33 var1 var2 var0)) (inv_main36 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (opt (getTSLL (read var1 var0))) 0))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main22 var2 var3 var1 var0)) (inv_main21 (write var2 var1 (O_TSLL (TSLL var0 (opt (getTSLL (read var2 var1))) (data (getTSLL (read var2 var1)))))) var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main32 var1 var2 var0)) (inv_main35 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (opt (getTSLL (read var1 var0))) 1))) var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main11 var0 var2 var1)) (inv_main10 (write var0 var2 (O_TSLL (TSLL (next (getTSLL (read var0 var2))) var1 (data (getTSLL (read var0 var2)))))) var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main23 var4 var5 var2) (and (not (= var1 0)) (and (= var3 0) (and (and (= var0 (write var4 var2 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var4 var2))) (data (getTSLL (read var4 var2))))))) (= var6 var5)) (= var7 var2)))))) (inv_main32 var0 var6 var7)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main13 var0 var1)) (inv_main16 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 0))) var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main21 var3 var5 var2) (and (and (and (= var1 var3) (= var4 var5)) (= var0 var2)) (= var6 (next (getTSLL (read var3 var2))))))) (inv_main23 var1 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main40 var3 var6 var1) (and (not (= var0 nullAddr)) (and (= var5 nullAddr) (and (and (and (= var4 var3) (= var0 var6)) (= var2 var1)) (= var5 (next (getTSLL (read var3 var1))))))))) (inv_main52 var4 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (or (not (and (inv_main17 var2 var3 var0) (and (not (= var3 nullAddr)) (and (= var3 nullAddr) (= var1 0))))) (inv_main52 var2 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main56 var3 var7 var1) (and (and (not (= var0 nullAddr)) (and (and (= var2 (write var3 (opt (getTSLL (read var3 var7))) defObj)) (= var5 var7)) (= var8 var1))) (and (and (= var6 (write var2 var5 defObj)) (= var4 var5)) (= var0 var8))))) (inv_main52 var6 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Addr)) (or (not (and (inv_main53 var3 var5 var1) (and (and (not (= var9 nullAddr)) (and (not (= var4 2)) (and (and (and (= var8 var3) (= var0 var5)) (= var2 var1)) (= var4 (data (getTSLL (read var3 var5))))))) (and (and (= var7 (write var8 var0 defObj)) (= var6 var0)) (= var9 var2))))) (inv_main52 var7 var9 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main3 var1 var3) (and (not (= var0 0)) (and (= var4 (write var1 var3 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var1 var3))) (data (getTSLL (read var1 var3))))))) (= var2 var3))))) (inv_main6 var4 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main23 var3 var4 var1) (and (not (= var2 0)) (and (and (= var0 (write var3 var1 (O_TSLL (TSLL nullAddr (opt (getTSLL (read var3 var1))) (data (getTSLL (read var3 var1))))))) (= var5 var4)) (= var6 var1))))) (inv_main26 var0 var5 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 TSLL)) (or (not (and (inv_main6 var0 var1) (and (= var2 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) (opt (getTSLL (read var0 var1))) 2)))) (= var3 var1)))) (inv_main11 (newHeap (alloc var2 (O_TSLL var4))) var3 (newAddr (alloc var2 (O_TSLL var4))))))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main44 var1 var2 var0 var3) (not (= var3 2)))) (inv_main42 var1 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int)) (or (not (and (inv_main44 var3 var5 var1 var11) (and (and (= var4 0) (and (= var11 2) (and (and (and (= var0 var3) (= var2 var5)) (= var7 var1)) (= var10 (opt (getTSLL (read var3 var1))))))) (and (and (and (= var8 var0) (= var6 var2)) (= var9 var7)) (or (and (= var10 var7) (= var4 1)) (and (not (= var10 var7)) (= var4 0))))))) (inv_main42 var8 var6 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 TSLL) (var6 Addr)) (or (not (and (inv_main26 var1 var4 var0) (and (and (= var2 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) (opt (getTSLL (read var1 var0))) 2)))) (= var3 var4)) (= var6 var0)))) (inv_main31 (newHeap (alloc var2 (O_TSLL var5))) var3 var6 (newAddr (alloc var2 (O_TSLL var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main30 var1 var2 var0)) (inv_main17 (write var1 (opt (getTSLL (read var1 var0))) (O_TSLL (TSLL nullAddr (opt (getTSLL (read var1 (opt (getTSLL (read var1 var0)))))) (data (getTSLL (read var1 (opt (getTSLL (read var1 var0))))))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main35 var1 var2 var0)) (inv_main17 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) var0 (data (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main36 var1 var2 var0)) (inv_main17 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) var0 (data (getTSLL (read var1 var0)))))) var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main10 var0 var1) (and (= var2 (write var0 (opt (getTSLL (read var0 var1))) (O_TSLL (TSLL nullAddr (opt (getTSLL (read var0 (opt (getTSLL (read var0 var1)))))) (data (getTSLL (read var0 (opt (getTSLL (read var0 var1)))))))))) (= var3 var1)))) (inv_main17 var2 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main15 var0 var3) (and (= var2 (write var0 var3 (O_TSLL (TSLL (next (getTSLL (read var0 var3))) var3 (data (getTSLL (read var0 var3))))))) (= var1 var3)))) (inv_main17 var2 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main16 var0 var1) (and (= var2 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) var1 (data (getTSLL (read var0 var1))))))) (= var3 var1)))) (inv_main17 var2 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main39 var1 var2 var0)) (inv_main44 var1 var2 var0 (data (getTSLL (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main6 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main11 var0 var2 var1) (not (is-O_TSLL (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main10 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main10 var0 var1) (not (is-O_TSLL (read var0 (opt (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main12 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main15 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main13 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main16 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main22 var2 var3 var1 var0) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main21 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main23 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main26 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main31 var1 var3 var0 var2) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main30 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main30 var1 var2 var0) (not (is-O_TSLL (read var1 (opt (getTSLL (read var1 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main32 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main35 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main33 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main36 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main39 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main44 var1 var2 var0 var3) (and (= var3 2) (not (is-O_TSLL (read var1 var0)))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (inv_main42 var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main40 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main52 var1 var2 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main53 var1 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main56 var1 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-queue-1.i.smt2 b/heap-theory-benchmarks/heap/sll-queue-1.i.smt2 new file mode 100644 index 00000000..3671d486 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-queue-1.i.smt2 @@ -0,0 +1,149 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (data Int)) + ) +)) +(declare-fun inv_main103 (Heap Addr Addr Int) Bool) +(declare-fun inv_main106 (Heap Addr Addr Int) Bool) +(declare-fun inv_main109 (Heap Addr Addr Int) Bool) +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main111 (Heap Addr Addr Int) Bool) +(declare-fun inv_main119 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Addr Int) Bool) +(declare-fun inv_main17 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int) Bool) +(declare-fun inv_main23 (Heap Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Int) Bool) +(declare-fun inv_main37 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int) Bool) +(declare-fun inv_main43 (Heap Addr Addr Int) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int) Bool) +(declare-fun inv_main49 (Heap Addr Addr Int) Bool) +(declare-fun inv_main53 (Heap Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Addr Addr Int) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int) Bool) +(declare-fun inv_main61 (Heap Addr Addr Int) Bool) +(declare-fun inv_main63 (Heap Addr Addr Int) Bool) +(declare-fun inv_main68 (Heap Addr Addr Int) Bool) +(declare-fun inv_main7 (Heap Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Addr Addr Int) Bool) +(declare-fun inv_main75 (Heap Addr Addr Int) Bool) +(declare-fun inv_main77 (Heap Addr Addr Int) Bool) +(declare-fun inv_main80 (Heap Addr Addr Int) Bool) +(declare-fun inv_main82 (Heap Addr Addr Int) Bool) +(declare-fun inv_main86 (Heap Addr Addr Int) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int) Bool) +(declare-fun inv_main92 (Heap Addr Addr Int) Bool) +(declare-fun inv_main94 (Heap Addr Addr Int) Bool) +(declare-fun inv_main99 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main61 var1 var5 var4 var0) (and (= var7 nullAddr) (and (and (and (and (= var3 var1) (= var2 var5)) (= var6 var4)) (= var8 var0)) (= var7 (next (getTSLL (read var1 (next (getTSLL (read var1 var5))))))))))) (inv_main68 var3 var2 var6 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (and (= var3 nullAddr) (and (= var0 1) (and (not (= var3 nullAddr)) (= var4 0)))))) (inv_main45 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap)) (or (not (and (inv_main17 var1 var5 var4 var0) (and (and (and (= var7 (write var1 var4 (O_TSLL (TSLL (next (getTSLL (read var1 var4))) 1)))) (= var2 var5)) (= var3 var4)) (= var6 var0)))) (inv_main16 var7 var2 var3 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main20 var3 var5 var4 var0) (and (and (and (= var1 (write var3 var4 (O_TSLL (TSLL (next (getTSLL (read var3 var4))) 2)))) (= var6 var5)) (= var7 var4)) (= var2 var0)))) (inv_main16 var1 var6 var7 2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main13 var3 var5 var4 var0) (and (not (<= 0 (+ var7 (- 2)))) (and (not (= var7 1)) (and (not (= var7 0)) (and (and (and (= var6 (write var3 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var3 var4))))))) (= var1 var5)) (= var2 var4)) (= var7 var0))))))) (inv_main16 var6 var1 var2 var7)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main23 var3 var5 var4 var2) (and (and (and (= var0 (write var3 var4 (O_TSLL (TSLL (next (getTSLL (read var3 var4))) 3)))) (= var6 var5)) (= var7 var4)) (= var1 var2)))) (inv_main16 var0 var6 var7 3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main80 var3 var5 var4 var0) (and (= var7 nullAddr) (and (and (and (and (= var1 var3) (= var2 var5)) (= var8 var4)) (= var6 var0)) (= var7 (next (getTSLL (read var3 (next (getTSLL (read var3 var5))))))))))) (inv_main88 var1 var2 var8 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main56 var1 var5 var4 var0) (and (not (= var6 nullAddr)) (and (and (and (and (= var7 var1) (= var8 var5)) (= var3 var4)) (= var2 var0)) (= var6 (next (getTSLL (read var1 var5)))))))) (inv_main61 var7 var8 var3 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main53 var1 var3 var2 var0) (and (not (= var3 nullAddr)) (= var0 3)))) (inv_main75 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int)) (or (not (and (inv_main106 var9 var6 var5 var1) (and (and (= var3 0) (and (not (= var1 0)) (and (and (and (and (= var7 var9) (= var2 var6)) (= var4 var5)) (= var13 var1)) (= var11 (data (getTSLL (read var9 var5))))))) (and (and (and (and (= var10 var7) (= var8 var2)) (= var12 var4)) (= var0 var13)) (or (and (<= 0 (+ var11 (- 1))) (= var3 1)) (and (not (<= 0 (+ var11 (- 1)))) (= var3 0))))))) (inv_main111 var10 var8 var12 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main92 var4 var6 var5 var1) (and (not (= var0 3)) (and (and (and (and (= var7 var4) (= var3 var6)) (= var8 var5)) (= var2 var1)) (= var0 (data (getTSLL (read var4 (next (getTSLL (read var4 (next (getTSLL (read var4 (next (getTSLL (read var4 var6))))))))))))))))) (inv_main99 var7 var3 var8 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main40 var1 var3 var2 var0) (not (= var0 2)))) (inv_main53 var1 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main61 var4 var6 var5 var1) (and (not (= var2 nullAddr)) (and (and (and (and (= var8 var4) (= var7 var6)) (= var0 var5)) (= var3 var1)) (= var2 (next (getTSLL (read var4 (next (getTSLL (read var4 var6))))))))))) (inv_main53 var8 var7 var0 var3)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main40 var1 var3 var2 var0) (and (not (= var3 nullAddr)) (= var0 2)))) (inv_main56 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (and (= var3 nullAddr) (= var4 0)))) (inv_main37 var1 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main72 var3 var5 var4 var1) (and (and (and (and (= var8 var3) (= var6 var5)) (= var2 var4)) (= var7 var1)) (= var0 (next (getTSLL (read var3 var5))))))) (inv_main103 var8 var6 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main109 var3 var6 var5 var1) (and (and (and (and (= var7 var3) (= var2 var6)) (= var8 var5)) (= var4 var1)) (= var0 (next (getTSLL (read var3 var5))))))) (inv_main103 var7 var2 var0 var4)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main103 var1 var3 var2 var0) (and (not (= var4 0)) (not (= var2 nullAddr))))) (inv_main106 var1 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main86 var2 var5 var4 var1) (and (not (= var7 nullAddr)) (and (and (and (and (= var3 var2) (= var8 var5)) (= var0 var4)) (= var6 var1)) (= var7 (next (getTSLL (read var2 (next (getTSLL (read var2 (next (getTSLL (read var2 var5)))))))))))))) (inv_main92 var3 var8 var0 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr)) (or (not (and (inv_main13 var2 var4 var3 var0) (and (= var6 0) (and (and (and (= var5 (write var2 var3 (O_TSLL (TSLL nullAddr (data (getTSLL (read var2 var3))))))) (= var7 var4)) (= var1 var3)) (= var6 var0))))) (inv_main17 var5 var7 var1 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main80 var2 var6 var5 var0) (and (not (= var1 nullAddr)) (and (and (and (and (= var8 var2) (= var4 var6)) (= var3 var5)) (= var7 var0)) (= var1 (next (getTSLL (read var2 (next (getTSLL (read var2 var6))))))))))) (inv_main86 var8 var4 var3 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main75 var1 var3 var2 var0) (and (= var7 nullAddr) (and (and (and (and (= var4 var1) (= var8 var3)) (= var6 var2)) (= var5 var0)) (= var7 (next (getTSLL (read var1 var3)))))))) (inv_main82 var4 var8 var6 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main16 var1 var3 var2 var0) (and (= var2 nullAddr) (not (= var3 nullAddr))))) (inv_main32 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main13 var3 var5 var4 var0) (and (<= 0 (+ var7 (- 2))) (and (not (= var7 1)) (and (not (= var7 0)) (and (and (and (= var6 (write var3 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var3 var4))))))) (= var1 var5)) (= var2 var4)) (= var7 var0))))))) (inv_main23 var6 var1 var2 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main13 var3 var5 var4 var0) (and (= var7 1) (and (not (= var7 0)) (and (and (and (= var6 (write var3 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var3 var4))))))) (= var1 var5)) (= var2 var4)) (= var7 var0)))))) (inv_main20 var6 var1 var2 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main53 var1 var3 var2 var0) (and (= var3 nullAddr) (= var0 3)))) (inv_main77 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main53 var1 var3 var2 var0) (not (= var0 3)))) (inv_main72 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main92 var3 var5 var4 var1) (and (= var8 3) (and (and (and (and (= var2 var3) (= var7 var5)) (= var6 var4)) (= var0 var1)) (= var8 (data (getTSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 var5))))))))))))))))) (inv_main72 var2 var7 var6 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main12 var2 var4 var3 var0 var1)) (inv_main11 (write var2 var3 (O_TSLL (TSLL var1 (data (getTSLL (read var2 var3)))))) var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 TSLL) (var5 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (not (= var5 0)))) (inv_main12 (newHeap (alloc var1 (O_TSLL var4))) var3 var2 var0 (newAddr (alloc var1 (O_TSLL var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main86 var3 var5 var4 var2) (and (= var1 nullAddr) (and (and (and (and (= var6 var3) (= var8 var5)) (= var7 var4)) (= var0 var2)) (= var1 (next (getTSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 var5)))))))))))))) (inv_main94 var6 var8 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main11 var4 var7 var6 var1) (and (and (and (and (= var8 var4) (= var0 var7)) (= var2 var6)) (= var5 var1)) (= var3 (next (getTSLL (read var4 var6))))))) (inv_main13 var8 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (and (not (= var3 nullAddr)) (and (= var0 1) (and (not (= var3 nullAddr)) (= var4 0)))))) (inv_main43 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main43 var2 var6 var5 var0) (and (= var4 nullAddr) (and (and (and (and (= var1 var2) (= var3 var6)) (= var8 var5)) (= var7 var0)) (= var4 (next (getTSLL (read var2 var6)))))))) (inv_main49 var1 var3 var8 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main106 var1 var3 var2 var0) (= var0 0))) (inv_main109 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main106 var9 var6 var5 var0) (and (and (not (= var8 0)) (and (not (= var0 0)) (and (and (and (and (= var7 var9) (= var1 var6)) (= var4 var5)) (= var13 var0)) (= var10 (data (getTSLL (read var9 var5))))))) (and (and (and (and (= var11 var7) (= var3 var1)) (= var2 var4)) (= var12 var13)) (or (and (<= 0 (+ var10 (- 1))) (= var8 1)) (and (not (<= 0 (+ var10 (- 1)))) (= var8 0))))))) (inv_main109 var11 var3 var2 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main75 var3 var7 var6 var1) (and (not (= var0 nullAddr)) (and (and (and (and (= var4 var3) (= var8 var7)) (= var2 var6)) (= var5 var1)) (= var0 (next (getTSLL (read var3 var7)))))))) (inv_main80 var4 var8 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (and (not (= var0 1)) (and (not (= var3 nullAddr)) (= var4 0))))) (inv_main40 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main43 var2 var4 var3 var0) (and (not (= var6 nullAddr)) (and (and (and (and (= var1 var2) (= var7 var4)) (= var5 var3)) (= var8 var0)) (= var6 (next (getTSLL (read var2 var4)))))))) (inv_main40 var1 var7 var5 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main16 var1 var3 var2 var0) (= var3 nullAddr))) (inv_main28 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main40 var1 var3 var2 var0) (and (= var3 nullAddr) (= var0 2)))) (inv_main58 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main16 var1 var3 var2 var0) (and (not (= var2 nullAddr)) (not (= var3 nullAddr))))) (inv_main7 var1 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main4 var1 var3) (and (= var2 (write var1 var3 (O_TSLL (TSLL (next (getTSLL (read var1 var3))) 0)))) (= var0 var3)))) (inv_main7 var2 var0 var0 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main103 var1 var3 var2 var0) (and (not (= var3 nullAddr)) (= var2 nullAddr)))) (inv_main119 var1 var3 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main103 var1 var3 var2 var0) (and (not (= var3 nullAddr)) (and (= var4 0) (not (= var2 nullAddr)))))) (inv_main119 var1 var3 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int)) (or (not (and (inv_main119 var7 var9 var8 var1) (and (and (not (= var6 nullAddr)) (and (and (and (and (= var4 var7) (= var0 var9)) (= var5 var8)) (= var3 var1)) (= var2 (next (getTSLL (read var7 var9)))))) (and (and (and (= var11 (write var4 var5 defObj)) (= var6 var2)) (= var10 var5)) (= var12 var3))))) (inv_main119 var11 var6 var6 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main56 var2 var7 var6 var1) (and (= var4 nullAddr) (and (and (and (and (= var8 var2) (= var3 var7)) (= var5 var6)) (= var0 var1)) (= var4 (next (getTSLL (read var2 var7)))))))) (inv_main63 var8 var3 var5 var0)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main12 var2 var4 var3 var0 var1) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main11 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main13 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main17 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main20 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main23 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main28 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main32 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main37 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main45 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main43 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main49 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main58 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main56 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main63 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main61 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main61 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main68 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main77 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main75 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main82 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main80 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main80 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main88 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main86 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main86 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main86 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 (next (getTSLL (read var1 var3))))))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main94 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main92 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main92 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main92 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 (next (getTSLL (read var1 var3))))))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main92 var1 var3 var2 var0) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 (next (getTSLL (read var1 (next (getTSLL (read var1 var3)))))))))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main99 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main72 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main106 var1 var3 var2 var0) (and (not (= var0 0)) (not (is-O_TSLL (read var1 var2)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main111 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main109 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main119 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-queue-2.i.smt2 b/heap-theory-benchmarks/heap/sll-queue-2.i.smt2 new file mode 100644 index 00000000..c88f3f33 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-queue-2.i.smt2 @@ -0,0 +1,149 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (data Int)) + ) +)) +(declare-fun inv_main103 (Heap Addr Addr Int) Bool) +(declare-fun inv_main106 (Heap Addr Addr Int) Bool) +(declare-fun inv_main109 (Heap Addr Addr Int) Bool) +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main111 (Heap Addr Addr Int) Bool) +(declare-fun inv_main119 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main16 (Heap Addr Addr Int) Bool) +(declare-fun inv_main17 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int) Bool) +(declare-fun inv_main23 (Heap Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Int) Bool) +(declare-fun inv_main37 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int) Bool) +(declare-fun inv_main43 (Heap Addr Addr Int) Bool) +(declare-fun inv_main45 (Heap Addr Addr Int) Bool) +(declare-fun inv_main49 (Heap Addr Addr Int) Bool) +(declare-fun inv_main53 (Heap Addr Addr Int) Bool) +(declare-fun inv_main56 (Heap Addr Addr Int) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int) Bool) +(declare-fun inv_main61 (Heap Addr Addr Int) Bool) +(declare-fun inv_main63 (Heap Addr Addr Int) Bool) +(declare-fun inv_main68 (Heap Addr Addr Int) Bool) +(declare-fun inv_main7 (Heap Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Addr Addr Int) Bool) +(declare-fun inv_main75 (Heap Addr Addr Int) Bool) +(declare-fun inv_main77 (Heap Addr Addr Int) Bool) +(declare-fun inv_main80 (Heap Addr Addr Int) Bool) +(declare-fun inv_main82 (Heap Addr Addr Int) Bool) +(declare-fun inv_main86 (Heap Addr Addr Int) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int) Bool) +(declare-fun inv_main92 (Heap Addr Addr Int) Bool) +(declare-fun inv_main94 (Heap Addr Addr Int) Bool) +(declare-fun inv_main99 (Heap Addr Addr Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Heap)) (or (not (and (inv_main106 var7 var4 var2 var12) (and (and (= var6 0) (and (not (= var12 0)) (and (and (and (and (= var13 var7) (= var9 var4)) (= var11 var2)) (= var8 var12)) (= var1 (data (getTSLL (read var7 var2))))))) (and (and (and (and (= var0 var13) (= var3 var9)) (= var10 var11)) (= var5 var8)) (or (and (<= 0 (+ var1 (- 1))) (= var6 1)) (and (not (<= 0 (+ var1 (- 1)))) (= var6 0))))))) (inv_main111 var0 var3 var10 var5)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Heap) (var7 Addr)) (or (not (and (inv_main13 var6 var3 var0 var4) (and (= var2 0) (and (and (and (= var5 (write var6 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var6 var0))))))) (= var7 var3)) (= var1 var0)) (= var2 var4))))) (inv_main17 var5 var7 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main53 var3 var1 var0 var2) (not (= var2 3)))) (inv_main72 var3 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main92 var8 var3 var2 var5) (and (not (= var1 3)) (and (and (and (and (= var0 var8) (= var7 var3)) (= var6 var2)) (= var4 var5)) (= var1 (data (getTSLL (read var8 (next (getTSLL (read var8 (next (getTSLL (read var8 (next (getTSLL (read var8 var3))))))))))))))))) (inv_main72 var0 var7 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main40 var3 var1 var0 var2) (and (= var1 nullAddr) (= var2 2)))) (inv_main58 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (or (not (and (inv_main17 var7 var2 var0 var4) (and (and (and (= var3 (write var7 var0 (O_TSLL (TSLL (next (getTSLL (read var7 var0))) 1)))) (= var1 var2)) (= var5 var0)) (= var6 var4)))) (inv_main16 var3 var1 var5 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int)) (or (not (and (inv_main20 var6 var2 var1 var5) (and (and (and (= var3 (write var6 var1 (O_TSLL (TSLL (next (getTSLL (read var6 var1))) 2)))) (= var0 var2)) (= var4 var1)) (= var7 var5)))) (inv_main16 var3 var0 var4 2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Heap)) (or (not (and (inv_main13 var6 var1 var0 var5) (and (not (<= 0 (+ var3 (- 2)))) (and (not (= var3 1)) (and (not (= var3 0)) (and (and (and (= var7 (write var6 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var6 var0))))))) (= var4 var1)) (= var2 var0)) (= var3 var5))))))) (inv_main16 var7 var4 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr)) (or (not (and (inv_main23 var6 var2 var1 var5) (and (and (and (= var0 (write var6 var1 (O_TSLL (TSLL (next (getTSLL (read var6 var1))) 3)))) (= var4 var2)) (= var7 var1)) (= var3 var5)))) (inv_main16 var0 var4 var7 3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main56 var8 var2 var1 var6) (and (= var4 nullAddr) (and (and (and (and (= var0 var8) (= var3 var2)) (= var5 var1)) (= var7 var6)) (= var4 (next (getTSLL (read var8 var2)))))))) (inv_main63 var0 var3 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main103 var3 var1 var0 var2) (and (not (= var1 nullAddr)) (= var0 nullAddr)))) (inv_main119 var3 var1 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main103 var4 var1 var0 var2) (and (not (= var1 nullAddr)) (and (= var3 0) (not (= var0 nullAddr)))))) (inv_main119 var4 var1 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr)) (or (not (and (inv_main119 var10 var4 var2 var7) (and (and (not (= var11 nullAddr)) (and (and (and (and (= var3 var10) (= var5 var4)) (= var0 var2)) (= var1 var7)) (= var12 (next (getTSLL (read var10 var4)))))) (and (and (and (= var8 (write var3 var0 defObj)) (= var11 var12)) (= var6 var0)) (= var9 var1))))) (inv_main119 var8 var11 var11 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Heap)) (or (not (and (inv_main13 var6 var1 var0 var5) (and (= var3 1) (and (not (= var3 0)) (and (and (and (= var7 (write var6 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var6 var0))))))) (= var4 var1)) (= var2 var0)) (= var3 var5)))))) (inv_main20 var7 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main86 var8 var2 var0 var6) (and (not (= var7 nullAddr)) (and (and (and (and (= var4 var8) (= var5 var2)) (= var3 var0)) (= var1 var6)) (= var7 (next (getTSLL (read var8 (next (getTSLL (read var8 (next (getTSLL (read var8 var2)))))))))))))) (inv_main92 var4 var5 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main40 var3 var1 var0 var2) (not (= var2 2)))) (inv_main53 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main61 var6 var1 var0 var5) (and (not (= var7 nullAddr)) (and (and (and (and (= var3 var6) (= var2 var1)) (= var4 var0)) (= var8 var5)) (= var7 (next (getTSLL (read var6 (next (getTSLL (read var6 var1))))))))))) (inv_main53 var3 var2 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main12 var4 var1 var0 var3 var2)) (inv_main11 (write var4 var0 (O_TSLL (TSLL var2 (data (getTSLL (read var4 var0)))))) var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main106 var3 var1 var0 var2) (= var2 0))) (inv_main109 var3 var1 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr)) (or (not (and (inv_main106 var4 var2 var1 var10) (and (and (not (= var3 0)) (and (not (= var10 0)) (and (and (and (and (= var11 var4) (= var7 var2)) (= var8 var1)) (= var5 var10)) (= var0 (data (getTSLL (read var4 var1))))))) (and (and (and (and (= var9 var11) (= var6 var7)) (= var13 var8)) (= var12 var5)) (or (and (<= 0 (+ var0 (- 1))) (= var3 1)) (and (not (<= 0 (+ var0 (- 1)))) (= var3 0))))))) (inv_main109 var9 var6 var13 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main61 var6 var2 var1 var5) (and (= var0 nullAddr) (and (and (and (and (= var8 var6) (= var4 var2)) (= var7 var1)) (= var3 var5)) (= var0 (next (getTSLL (read var6 (next (getTSLL (read var6 var2))))))))))) (inv_main68 var8 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main92 var8 var4 var1 var6) (and (= var5 3) (and (and (and (and (= var3 var8) (= var0 var4)) (= var2 var1)) (= var7 var6)) (= var5 (data (getTSLL (read var8 (next (getTSLL (read var8 (next (getTSLL (read var8 (next (getTSLL (read var8 var4))))))))))))))))) (inv_main99 var3 var0 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Heap)) (or (not (and (inv_main86 var7 var3 var2 var5) (and (= var0 nullAddr) (and (and (and (and (= var8 var7) (= var1 var3)) (= var4 var2)) (= var6 var5)) (= var0 (next (getTSLL (read var7 (next (getTSLL (read var7 (next (getTSLL (read var7 var3)))))))))))))) (inv_main94 var8 var1 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main16 var3 var1 var0 var2) (= var1 nullAddr))) (inv_main28 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap)) (or (not (and (inv_main56 var8 var1 var0 var7) (and (not (= var6 nullAddr)) (and (and (and (and (= var4 var8) (= var5 var1)) (= var3 var0)) (= var2 var7)) (= var6 (next (getTSLL (read var8 var1)))))))) (inv_main61 var4 var5 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main103 var4 var2 var0 var3) (and (not (= var1 0)) (not (= var0 nullAddr))))) (inv_main106 var4 var2 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main40 var3 var1 var0 var2) (and (not (= var1 nullAddr)) (= var2 2)))) (inv_main56 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int)) (or (not (and (inv_main43 var7 var2 var0 var6) (and (= var5 nullAddr) (and (and (and (and (= var4 var7) (= var3 var2)) (= var1 var0)) (= var8 var6)) (= var5 (next (getTSLL (read var7 var2)))))))) (inv_main49 var4 var3 var1 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Heap)) (or (not (and (inv_main13 var6 var1 var0 var5) (and (<= 0 (+ var3 (- 2))) (and (not (= var3 1)) (and (not (= var3 0)) (and (and (and (= var7 (write var6 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var6 var0))))))) (= var4 var1)) (= var2 var0)) (= var3 var5))))))) (inv_main23 var7 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main53 var3 var1 var0 var2) (and (not (= var1 nullAddr)) (= var2 3)))) (inv_main75 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main75 var6 var1 var0 var4) (and (= var2 nullAddr) (and (and (and (and (= var5 var6) (= var8 var1)) (= var3 var0)) (= var7 var4)) (= var2 (next (getTSLL (read var6 var1)))))))) (inv_main82 var5 var8 var3 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var1 var0 var2) (and (not (= var1 nullAddr)) (and (= var2 1) (and (not (= var1 nullAddr)) (= var3 0)))))) (inv_main43 var4 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Heap)) (or (not (and (inv_main72 var8 var2 var0 var5) (and (and (and (and (= var7 var8) (= var3 var2)) (= var4 var0)) (= var1 var5)) (= var6 (next (getTSLL (read var8 var2))))))) (inv_main103 var7 var3 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main109 var8 var3 var0 var6) (and (and (and (and (= var5 var8) (= var7 var3)) (= var4 var0)) (= var2 var6)) (= var1 (next (getTSLL (read var8 var0))))))) (inv_main103 var5 var7 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var1 var0 var2) (and (not (= var2 1)) (and (not (= var1 nullAddr)) (= var3 0))))) (inv_main40 var4 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Heap)) (or (not (and (inv_main43 var7 var1 var0 var5) (and (not (= var3 nullAddr)) (and (and (and (and (= var8 var7) (= var6 var1)) (= var4 var0)) (= var2 var5)) (= var3 (next (getTSLL (read var7 var1)))))))) (inv_main40 var8 var6 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 TSLL) (var4 Int) (var5 Heap)) (or (not (and (inv_main7 var5 var2 var0 var4) (not (= var1 0)))) (inv_main12 (newHeap (alloc var5 (O_TSLL var3))) var2 var0 var4 (newAddr (alloc var5 (O_TSLL var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var1 var0 var2) (and (= var1 nullAddr) (and (= var2 1) (and (not (= var1 nullAddr)) (= var3 0)))))) (inv_main45 var4 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main75 var7 var3 var1 var6) (and (not (= var8 nullAddr)) (and (and (and (and (= var5 var7) (= var0 var3)) (= var2 var1)) (= var4 var6)) (= var8 (next (getTSLL (read var7 var3)))))))) (inv_main80 var5 var0 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main16 var3 var1 var0 var2) (and (not (= var0 nullAddr)) (not (= var1 nullAddr))))) (inv_main7 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap)) (or (not (and (inv_main4 var3 var0) (and (= var1 (write var3 var0 (O_TSLL (TSLL (next (getTSLL (read var3 var0))) 0)))) (= var2 var0)))) (inv_main7 var1 var2 var2 0)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main53 var3 var1 var0 var2) (and (= var1 nullAddr) (= var2 3)))) (inv_main77 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var1 var0 var2) (and (= var1 nullAddr) (= var3 0)))) (inv_main37 var4 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main16 var3 var1 var0 var2) (and (= var0 nullAddr) (not (= var1 nullAddr))))) (inv_main32 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (inv_main80 var7 var1 var0 var4) (and (not (= var6 nullAddr)) (and (and (and (and (= var5 var7) (= var2 var1)) (= var3 var0)) (= var8 var4)) (= var6 (next (getTSLL (read var7 (next (getTSLL (read var7 var1))))))))))) (inv_main86 var5 var2 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main11 var7 var2 var0 var6) (and (and (and (and (= var3 var7) (= var5 var2)) (= var4 var0)) (= var1 var6)) (= var8 (next (getTSLL (read var7 var0))))))) (inv_main13 var3 var5 var8 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main80 var7 var1 var0 var5) (and (= var2 nullAddr) (and (and (and (and (= var4 var7) (= var6 var1)) (= var8 var0)) (= var3 var5)) (= var2 (next (getTSLL (read var7 (next (getTSLL (read var7 var1))))))))))) (inv_main88 var4 var6 var8 var3)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main12 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main11 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main13 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main17 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main20 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main23 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main28 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main32 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main37 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main45 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main43 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main49 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main58 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main56 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main63 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main61 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main61 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main68 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main77 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main75 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main82 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main80 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main80 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main88 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main86 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main86 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main86 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 var1))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main94 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main92 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main92 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main92 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 var1))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main92 var3 var1 var0 var2) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 (next (getTSLL (read var3 var1)))))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main99 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main72 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main106 var3 var1 var0 var2) (and (not (= var2 0)) (not (is-O_TSLL (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main111 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main109 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main119 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-rb-cnstr_1-2.i.smt2 b/heap-theory-benchmarks/heap/sll-rb-cnstr_1-2.i.smt2 new file mode 100644 index 00000000..74715885 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-rb-cnstr_1-2.i.smt2 @@ -0,0 +1,103 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (colour Int)) + ) +)) +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (inv_main6 var5 var0 var1) (and (not (= nullAddr var4)) (and (= var6 0) (and (and (= var3 var5) (= var4 var0)) (= var2 nullAddr)))))) (inv_main26 var3 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main52 var5 var0 var1) (and (and (and (= var4 var5) (= var2 var0)) (= var6 var1)) (= var3 (next (getTSLL (read var5 var0))))))) (inv_main56 (write var4 var2 defObj) var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main38 var2 var0 var1) (= (next (getTSLL (read var2 var1))) nullAddr))) (inv_main46 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main26 var2 var0 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main33 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main51 var2 var0 var1) (= 0 (colour (getTSLL (read var2 var0)))))) (inv_main52 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main44 var3 var0 var1) (and (not (= nullAddr var6)) (and (and (and (= var5 var3) (= var4 var0)) (= var2 var1)) (= var6 (next (getTSLL (read var3 var1)))))))) (inv_main37 var5 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main26 var2 var0 var1) (and (not (= nullAddr var1)) (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main37 var2 var0 var1)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main38 var2 var0 var1) (not (= (next (getTSLL (read var2 var1))) nullAddr)))) (inv_main44 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main19 var4 var0 var1) (and (and (and (= var5 var4) (= var6 var0)) (= var3 var1)) (= var2 (next (getTSLL (read var4 var1))))))) (inv_main21 var5 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 TSLL) (var6 Addr)) (or (not (and (inv_main16 var4 var0 var1) (and (and (= var2 (write var4 var1 (O_TSLL (TSLL (next (getTSLL (read var4 var1))) 0)))) (= var6 var0)) (= var3 var1)))) (inv_main20 (newHeap (alloc var2 (O_TSLL var5))) var6 var3 (newAddr (alloc var2 (O_TSLL var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main11 var2 var0 var1 var3)) (inv_main10 (write var2 var1 (O_TSLL (TSLL var3 (colour (getTSLL (read var2 var1)))))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main37 var2 var0 var1) (= 0 (colour (getTSLL (read var2 var1)))))) (inv_main39 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main51 var2 var0 var1) (not (= 0 (colour (getTSLL (read var2 var0))))))) (inv_main53 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap)) (or (not (and (inv_main41 var6 var0 var1) (and (and (and (= var5 var6) (= var2 var0)) (= var4 var1)) (= var3 (next (getTSLL (read var6 var1))))))) (inv_main38 var5 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main37 var2 var0 var1) (not (= 0 (colour (getTSLL (read var2 var1))))))) (inv_main38 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main20 var3 var0 var1 var2)) (inv_main19 (write var3 var1 (O_TSLL (TSLL var2 (colour (getTSLL (read var3 var1)))))) var0 var1)))) +(assert (forall ((var0 TSLL) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main6 var3 var1 var2) (not (= var4 0)))) (inv_main11 (newHeap (alloc var3 (O_TSLL var0))) var1 var2 (newAddr (alloc var3 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main39 var4 var1 var2) (and (and (and (= var6 var4) (= var0 var1)) (= var3 var2)) (= var5 (next (getTSLL (read var4 var2))))))) (inv_main41 var6 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap) (var9 Heap)) (or (not (and (inv_main56 var8 var1 var2) (and (and (not (= nullAddr var0)) (and (and (and (= var9 var8) (= var7 var1)) (= var5 var2)) (= var3 (next (getTSLL (read var8 var2)))))) (and (and (= var6 (write var9 var5 defObj)) (= var0 var3)) (= var4 var5))))) (inv_main51 var6 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main53 var6 var0 var2) (and (not (= nullAddr var5)) (and (and (and (and (= var9 var6) (= var3 var0)) (= var7 var2)) (= var1 (next (getTSLL (read var6 var0))))) (and (and (= var4 (write var9 var3 defObj)) (= var8 var3)) (= var5 var1)))))) (inv_main51 var4 var5 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main44 var3 var0 var1) (and (not (= nullAddr var5)) (and (= nullAddr var6) (and (and (and (= var4 var3) (= var5 var0)) (= var2 var1)) (= var6 (next (getTSLL (read var3 var1))))))))) (inv_main51 var4 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main26 var2 var0 var1) (and (not (= nullAddr var0)) (and (= nullAddr var1) (= 1 (colour (getTSLL (read var2 var1)))))))) (inv_main51 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main21 var2 var0 var1)) (inv_main23 (write var2 var1 (O_TSLL (TSLL nullAddr (colour (getTSLL (read var2 var1)))))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (colour (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main10 var5 var0 var1) (and (and (and (= var2 var5) (= var4 var0)) (= var3 var1)) (= var6 (next (getTSLL (read var5 var1))))))) (inv_main12 var2 var4 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main12 var4 var1 var2) (and (= var0 0) (and (and (= var6 (write var4 var2 (O_TSLL (TSLL nullAddr (colour (getTSLL (read var4 var2))))))) (= var5 var1)) (= var3 var2))))) (inv_main16 var6 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (inv_main6 var5 var0 var1) (and (= nullAddr var4) (and (= var6 0) (and (and (= var3 var5) (= var4 var0)) (= var2 nullAddr)))))) (inv_main28 var3 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main12 var4 var0 var1) (and (not (= var3 0)) (and (and (= var6 (write var4 var1 (O_TSLL (TSLL nullAddr (colour (getTSLL (read var4 var1))))))) (= var5 var0)) (= var2 var1))))) (inv_main15 var6 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main15 var2 var0 var1)) (inv_main6 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 1))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main23 var2 var0 var1)) (inv_main6 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 1))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main4 var1 var0) (and (= var2 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) 1)))) (= var3 var0)))) (inv_main6 var2 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main11 var2 var0 var1 var3) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main10 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main12 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main15 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main16 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main20 var3 var0 var1 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main19 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main21 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main23 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main28 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main26 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main33 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main39 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main41 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main38 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main46 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main44 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main51 var2 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main52 var2 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main56 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main53 var2 var0 var1) (not (is-O_TSLL (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-rb-sentinel-1.i.smt2 b/heap-theory-benchmarks/heap/sll-rb-sentinel-1.i.smt2 new file mode 100644 index 00000000..5fe6fe02 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-rb-sentinel-1.i.smt2 @@ -0,0 +1,109 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (colour Int)) + ) +)) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(declare-fun inv_main62 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main42 var5 var4 var6 var2) (and (= var1 var8) (and (and (and (and (= var7 var5) (= var1 var4)) (= var3 var6)) (= var0 var2)) (= var8 (next (getTSLL (read var5 var2)))))))) (inv_main48 var7 var1 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main29 var2 var1 var3 var0) (not (= 1 (colour (getTSLL (read var2 var0))))))) (inv_main36 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main46 var2 var1 var3 var0) (not (= 1 (colour (getTSLL (read var2 var0))))))) (inv_main52 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main13 var7 var6 var8 var4) (and (and (and (and (= var3 var7) (= var1 var6)) (= var0 var8)) (= var2 var4)) (= var5 (next (getTSLL (read var7 var4))))))) (inv_main15 var3 var1 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main40 var2 var1 var3 var0) (not (= 0 (colour (getTSLL (read var2 var0))))))) (inv_main41 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main46 var2 var1 var3 var0) (= 1 (colour (getTSLL (read var2 var0)))))) (inv_main41 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main41 var4 var3 var8 var2) (and (not (= var5 var0)) (and (and (and (and (= var7 var4) (= var5 var3)) (= var6 var8)) (= var1 var2)) (= var0 (next (getTSLL (read var4 var2)))))))) (inv_main40 var7 var5 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main29 var2 var1 var3 var0) (and (not (= var1 var0)) (= 1 (colour (getTSLL (read var2 var0))))))) (inv_main40 var2 var1 var3 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 TSLL) (var4 Addr)) (or (not (and (inv_main4 var2 var1) (and (= var0 (write var2 var1 (O_TSLL (TSLL nullAddr (colour (getTSLL (read var2 var1))))))) (= var4 var1)))) (inv_main6 (newHeap (alloc var0 (O_TSLL var3))) var4 (newAddr (alloc var0 (O_TSLL var3))))))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main6 var1 var0 var2)) (inv_main7 (write var1 var2 (O_TSLL (TSLL var0 (colour (getTSLL (read var1 var2)))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main18 var2 var1 var3 var0)) (inv_main9 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) 1))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main26 var2 var1 var3 var0)) (inv_main9 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) 1))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr)) (or (not (and (inv_main7 var3 var2 var5) (and (and (= var4 (write var3 var5 (O_TSLL (TSLL (next (getTSLL (read var3 var5))) 1)))) (= var0 var2)) (= var1 var5)))) (inv_main9 var4 var0 var1 var1)))) +(assert (forall ((var0 Addr) (var1 TSLL) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main9 var3 var2 var5 var0) (not (= var4 0)))) (inv_main14 (newHeap (alloc var3 (O_TSLL var1))) var2 var5 var0 (newAddr (alloc var3 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main57 var2 var1 var3 var0) (not (= 0 (colour (getTSLL (read var2 var3))))))) (inv_main59 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main14 var3 var2 var4 var0 var1)) (inv_main13 (write var3 var0 (O_TSLL (TSLL var1 (colour (getTSLL (read var3 var0)))))) var2 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main22 var5 var4 var8 var2) (and (and (and (and (= var6 var5) (= var0 var4)) (= var1 var8)) (= var7 var2)) (= var3 (next (getTSLL (read var5 var2))))))) (inv_main24 var6 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main9 var2 var1 var4 var0) (and (= var1 var4) (= var3 0)))) (inv_main31 var2 var1 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main9 var2 var1 var4 var0) (and (not (= var1 var4)) (= var3 0)))) (inv_main29 var2 var1 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main24 var2 var1 var3 var0)) (inv_main26 (write var2 var0 (O_TSLL (TSLL var1 (colour (getTSLL (read var2 var0)))))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main62 var7 var6 var8 var3) (and (and (not (= var10 var12)) (and (and (and (and (= var5 var7) (= var1 var6)) (= var0 var8)) (= var9 var3)) (= var4 (next (getTSLL (read var7 var3)))))) (and (and (and (= var11 (write var5 var9 defObj)) (= var10 var1)) (= var12 var4)) (= var2 var9))))) (inv_main57 var11 var10 var12 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main59 var8 var7 var11 var4) (and (not (= var10 var6)) (and (and (and (and (and (= var1 var8) (= var5 var7)) (= var9 var11)) (= var0 var4)) (= var12 (next (getTSLL (read var8 var11))))) (and (and (and (= var3 (write var1 var9 defObj)) (= var10 var5)) (= var2 var9)) (= var6 var12)))))) (inv_main57 var3 var10 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main41 var4 var3 var8 var2) (and (not (= var5 var6)) (and (= var5 var0) (and (and (and (and (= var7 var4) (= var5 var3)) (= var6 var8)) (= var1 var2)) (= var0 (next (getTSLL (read var4 var2))))))))) (inv_main57 var7 var5 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main29 var2 var1 var3 var0) (and (not (= var1 var3)) (and (= var1 var0) (= 1 (colour (getTSLL (read var2 var0)))))))) (inv_main57 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main15 var3 var2 var6 var0) (and (= var1 0) (and (and (and (= var4 (write var3 var0 (O_TSLL (TSLL var2 (colour (getTSLL (read var3 var0))))))) (= var8 var2)) (= var7 var6)) (= var5 var0))))) (inv_main19 var4 var8 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main57 var2 var1 var3 var0) (= 0 (colour (getTSLL (read var2 var3)))))) (inv_main58 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main42 var5 var4 var6 var2) (and (not (= var1 var8)) (and (and (and (and (= var7 var5) (= var1 var4)) (= var3 var6)) (= var0 var2)) (= var8 (next (getTSLL (read var5 var2)))))))) (inv_main46 var7 var1 var3 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main15 var3 var2 var6 var1) (and (not (= var0 0)) (and (and (and (= var4 (write var3 var1 (O_TSLL (TSLL var2 (colour (getTSLL (read var3 var1))))))) (= var8 var2)) (= var7 var6)) (= var5 var1))))) (inv_main18 var4 var8 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main40 var2 var1 var3 var0) (= 0 (colour (getTSLL (read var2 var0)))))) (inv_main42 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main58 var4 var3 var7 var0) (and (and (and (and (= var1 var4) (= var6 var3)) (= var5 var7)) (= var2 var0)) (= var8 (next (getTSLL (read var4 var7))))))) (inv_main62 (write var1 var5 defObj) var6 var5 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TSLL) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main19 var4 var3 var7 var1) (and (and (and (= var0 (write var4 var1 (O_TSLL (TSLL (next (getTSLL (read var4 var1))) 0)))) (= var6 var3)) (= var8 var7)) (= var5 var1)))) (inv_main23 (newHeap (alloc var0 (O_TSLL var2))) var6 var8 var5 (newAddr (alloc var0 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) 1))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main23 var2 var1 var3 var0 var4)) (inv_main22 (write var2 var0 (O_TSLL (TSLL var4 (colour (getTSLL (read var2 var0)))))) var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main6 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main7 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main14 var3 var2 var4 var0 var1) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main13 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main18 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main19 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main23 var2 var1 var3 var0 var4) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main22 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main24 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main31 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main29 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main36 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main40 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main42 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main48 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main46 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main52 var2 var1 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main41 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main57 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main58 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main62 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main59 var2 var1 var3 var0) (not (is-O_TSLL (read var2 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-rb-sentinel-2.i.smt2 b/heap-theory-benchmarks/heap/sll-rb-sentinel-2.i.smt2 new file mode 100644 index 00000000..c016cc49 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-rb-sentinel-2.i.smt2 @@ -0,0 +1,109 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (colour Int)) + ) +)) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(declare-fun inv_main62 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main40 var2 var0 var3 var1) (= 0 (colour (getTSLL (read var2 var1)))))) (inv_main42 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main29 var2 var0 var3 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main36 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL (next (getTSLL (read var1 var0))) 1))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main57 var2 var0 var3 var1) (= 0 (colour (getTSLL (read var2 var3)))))) (inv_main58 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main58 var5 var0 var7 var2) (and (and (and (and (= var8 var5) (= var6 var0)) (= var4 var7)) (= var3 var2)) (= var1 (next (getTSLL (read var5 var7))))))) (inv_main62 (write var8 var4 defObj) var6 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main15 var5 var1 var7 var2) (and (not (= var4 0)) (and (and (and (= var8 (write var5 var2 (O_TSLL (TSLL var1 (colour (getTSLL (read var5 var2))))))) (= var3 var1)) (= var6 var7)) (= var0 var2))))) (inv_main18 var8 var3 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (inv_main6 var1 var0 var2)) (inv_main7 (write var1 var2 (O_TSLL (TSLL var0 (colour (getTSLL (read var1 var2)))))) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (inv_main15 var4 var1 var6 var2) (and (= var8 0) (and (and (and (= var7 (write var4 var2 (O_TSLL (TSLL var1 (colour (getTSLL (read var4 var2))))))) (= var3 var1)) (= var5 var6)) (= var0 var2))))) (inv_main19 var7 var3 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main42 var3 var1 var6 var2) (and (= var0 var5) (and (and (and (and (= var8 var3) (= var0 var1)) (= var7 var6)) (= var4 var2)) (= var5 (next (getTSLL (read var3 var2)))))))) (inv_main48 var8 var0 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main24 var2 var0 var3 var1)) (inv_main26 (write var2 var1 (O_TSLL (TSLL var0 (colour (getTSLL (read var2 var1)))))) var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main57 var2 var0 var3 var1) (not (= 0 (colour (getTSLL (read var2 var3))))))) (inv_main59 var2 var0 var3 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main9 var3 var1 var4 var2) (and (= var1 var4) (= var0 0)))) (inv_main31 var3 var1 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main46 var2 var0 var3 var1) (= 1 (colour (getTSLL (read var2 var1)))))) (inv_main52 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 TSLL) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main19 var3 var0 var7 var1) (and (and (and (= var8 (write var3 var1 (O_TSLL (TSLL (next (getTSLL (read var3 var1))) 0)))) (= var6 var0)) (= var5 var7)) (= var2 var1)))) (inv_main23 (newHeap (alloc var8 (O_TSLL var4))) var6 var5 var2 (newAddr (alloc var8 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main22 var3 var0 var6 var1) (and (and (and (and (= var4 var3) (= var7 var0)) (= var8 var6)) (= var5 var1)) (= var2 (next (getTSLL (read var3 var1))))))) (inv_main24 var4 var7 var8 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main40 var2 var0 var3 var1) (not (= 0 (colour (getTSLL (read var2 var1))))))) (inv_main41 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main46 var2 var0 var3 var1) (not (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main41 var2 var0 var3 var1)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main23 var3 var0 var4 var1 var2)) (inv_main22 (write var3 var1 (O_TSLL (TSLL var2 (colour (getTSLL (read var3 var1)))))) var0 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 TSLL) (var5 Int)) (or (not (and (inv_main9 var2 var0 var3 var1) (not (= var5 0)))) (inv_main14 (newHeap (alloc var2 (O_TSLL var4))) var0 var3 var1 (newAddr (alloc var2 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 TSLL) (var3 Heap) (var4 Addr)) (or (not (and (inv_main4 var1 var0) (and (= var3 (write var1 var0 (O_TSLL (TSLL nullAddr (colour (getTSLL (read var1 var0))))))) (= var4 var0)))) (inv_main6 (newHeap (alloc var3 (O_TSLL var2))) var4 (newAddr (alloc var3 (O_TSLL var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (inv_main14 var2 var0 var3 var1 var4)) (inv_main13 (write var2 var1 (O_TSLL (TSLL var4 (colour (getTSLL (read var2 var1)))))) var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main42 var3 var1 var6 var2) (and (not (= var0 var5)) (and (and (and (and (= var8 var3) (= var0 var1)) (= var7 var6)) (= var4 var2)) (= var5 (next (getTSLL (read var3 var2)))))))) (inv_main46 var8 var0 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main13 var5 var1 var7 var2) (and (and (and (and (= var6 var5) (= var8 var1)) (= var3 var7)) (= var0 var2)) (= var4 (next (getTSLL (read var5 var2))))))) (inv_main15 var6 var8 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main9 var3 var1 var4 var2) (and (not (= var1 var4)) (= var0 0)))) (inv_main29 var3 var1 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main62 var7 var1 var10 var2) (and (and (not (= var12 var4)) (and (and (and (and (= var11 var7) (= var0 var1)) (= var9 var10)) (= var6 var2)) (= var3 (next (getTSLL (read var7 var2)))))) (and (and (and (= var5 (write var11 var6 defObj)) (= var12 var0)) (= var4 var3)) (= var8 var6))))) (inv_main57 var5 var12 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main59 var5 var0 var7 var3) (and (not (= var8 var12)) (and (and (and (and (and (= var11 var5) (= var2 var0)) (= var1 var7)) (= var6 var3)) (= var10 (next (getTSLL (read var5 var7))))) (and (and (and (= var4 (write var11 var1 defObj)) (= var8 var2)) (= var9 var1)) (= var12 var10)))))) (inv_main57 var4 var8 var12 var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main41 var5 var0 var6 var2) (and (not (= var3 var4)) (and (= var3 var8) (and (and (and (and (= var1 var5) (= var3 var0)) (= var4 var6)) (= var7 var2)) (= var8 (next (getTSLL (read var5 var2))))))))) (inv_main57 var1 var3 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main29 var2 var0 var3 var1) (and (not (= var0 var3)) (and (= var0 var1) (= 1 (colour (getTSLL (read var2 var1)))))))) (inv_main57 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main18 var2 var0 var3 var1)) (inv_main9 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 1))) var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main26 var2 var0 var3 var1)) (inv_main9 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 1))) var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main7 var2 var0 var3) (and (and (= var1 (write var2 var3 (O_TSLL (TSLL (next (getTSLL (read var2 var3))) 1)))) (= var4 var0)) (= var5 var3)))) (inv_main9 var1 var4 var5 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main41 var5 var0 var6 var2) (and (not (= var3 var8)) (and (and (and (and (= var1 var5) (= var3 var0)) (= var4 var6)) (= var7 var2)) (= var8 (next (getTSLL (read var5 var2)))))))) (inv_main40 var1 var3 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main29 var2 var0 var3 var1) (and (not (= var0 var1)) (= 1 (colour (getTSLL (read var2 var1))))))) (inv_main40 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main6 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main7 var1 var0 var2) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main14 var2 var0 var3 var1 var4) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main13 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main18 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main19 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main23 var3 var0 var4 var1 var2) (not (is-O_TSLL (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main22 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main24 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main26 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main31 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main29 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main36 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main40 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main42 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main48 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main46 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (inv_main52 var2 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main41 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main57 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main58 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main62 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main59 var2 var0 var3 var1) (not (is-O_TSLL (read var2 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-reverse_simple.i.smt2 b/heap-theory-benchmarks/heap/sll-reverse_simple.i.smt2 new file mode 100644 index 00000000..82918735 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-reverse_simple.i.smt2 @@ -0,0 +1,118 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (data Int)) + ) +)) +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main61 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main65 (Heap Addr Addr Addr Int Int) Bool) +(declare-fun inv_main73 (Heap Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main64 var5 var10 var9 var4 var11 var7) (and (and (and (and (and (and (= var8 var5) (= var1 var10)) (= var0 var9)) (= var12 var4)) (= var2 var11)) (= var6 var7)) (= var3 (next (getTSLL (read var5 var9))))))) (inv_main50 var8 var1 var3 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main46 var5 var7 var6 var4 var3) (and (= var2 nullAddr) (and (and (and (and (= var9 (write var5 var6 (O_TSLL (TSLL var4 (data (getTSLL (read var5 var6))))))) (= var1 var7)) (= var0 var6)) (= var8 var4)) (= var2 var3))))) (inv_main50 var9 var0 var0 var0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main41 var1 var7 var6) (and (and (= var9 nullAddr) (and (and (and (= var0 var5) (= var9 var2)) (= var3 var8)) (= var4 nullAddr))) (and (and (= var5 (write var1 var6 (O_TSLL (TSLL (next (getTSLL (read var1 var6))) 2)))) (= var2 var7)) (= var8 var6))))) (inv_main50 var0 var4 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main35 var5 var7 var6) (and (and (= var9 nullAddr) (and (and (and (= var0 var8) (= var9 var4)) (= var3 var2)) (= var1 nullAddr))) (and (and (= var8 (write var5 (next (getTSLL (read var5 var6))) (O_TSLL (TSLL (next (getTSLL (read var5 (next (getTSLL (read var5 var6)))))) 2)))) (= var4 var7)) (= var2 var6))))) (inv_main50 var0 var1 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main15 var0 var4 var3) (and (= var5 nullAddr) (and (not (= var6 0)) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var4)) (= var5 var3)) (= var7 (next (getTSLL (read var0 var3)))))))))) (inv_main23 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main15 var0 var4 var3) (and (not (= var5 nullAddr)) (and (not (= var6 0)) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var4)) (= var5 var3)) (= var7 (next (getTSLL (read var0 var3)))))))))) (inv_main21 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int)) (or (not (and (inv_main65 var3 var8 var7 var2 var9 var5) (and (and (and (and (and (and (= var0 var3) (= var4 var8)) (= var6 var7)) (= var11 var2)) (= var10 var9)) (= var12 var5)) (= var1 (next (getTSLL (read var3 var7))))))) (inv_main64 var0 var4 var1 var11 var10 var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main59 var3 var8 var7 var2 var11 var4) (and (not (= var9 2)) (and (and (and (and (and (and (= var1 var3) (= var6 var8)) (= var12 var7)) (= var0 var2)) (= var10 var11)) (= var5 var4)) (= var9 (data (getTSLL (read var3 var7)))))))) (inv_main64 var1 var6 var12 var0 var10 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main27 var0 var2 var1)) (inv_main32 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) 1))) var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main15 var1 var3 var2) (and (= var4 nullAddr) (and (= var0 nullAddr) (and (and (and (= var5 var1) (= var6 var3)) (= var4 var2)) (= var0 (next (getTSLL (read var1 var2))))))))) (inv_main29 var5 var6 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main15 var0 var4 var3) (and (= var5 nullAddr) (and (= var6 0) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var4)) (= var5 var3)) (= var7 (next (getTSLL (read var0 var3)))))))))) (inv_main29 var2 var1 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main56 var5 var8 var7 var4 var10 var6) (and (or (not (= var2 2)) (= var1 1)) (and (and (and (and (and (and (= var11 var5) (= var9 var8)) (= var12 var7)) (= var3 var4)) (= var2 var10)) (= var0 var6)) (= var1 (data (getTSLL (read var5 (next (getTSLL (read var5 var7))))))))))) (inv_main59 var11 var9 var12 var3 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main52 var1 var3 var2 var0) (and (and (not (= var5 2)) (not (= var5 2))) (and (and (and (and (= var7 var1) (= var4 var3)) (= var8 var2)) (= var6 var0)) (= var5 (data (getTSLL (read var1 var2)))))))) (inv_main59 var7 var4 var8 var6 var5 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int)) (or (not (and (inv_main59 var3 var7 var6 var2 var8 var4) (and (= var12 2) (and (and (and (and (and (and (= var11 var3) (= var9 var7)) (= var0 var6)) (= var1 var2)) (= var5 var8)) (= var10 var4)) (= var12 (data (getTSLL (read var3 var6)))))))) (inv_main65 var11 var9 var0 var1 var5 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main52 var3 var6 var5 var2) (and (= var1 2) (and (and (and (and (= var4 var3) (= var8 var6)) (= var0 var5)) (= var7 var2)) (= var1 (data (getTSLL (read var3 var5)))))))) (inv_main56 var4 var8 var0 var7 var1 0)))) +(assert (forall ((var0 TSLL) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main14 var1 var5 var4) (and (not (= var2 0)) (and (and (= var7 (write var1 var4 (O_TSLL (TSLL (next (getTSLL (read var1 var4))) 0)))) (= var3 var5)) (= var6 var4))))) (inv_main11 (newHeap (alloc var7 (O_TSLL var0))) var3 var6 (newAddr (alloc var7 (O_TSLL var0))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 TSLL) (var5 Heap)) (or (not (and (inv_main4 var1 var2) (and (not (= var0 0)) (and (= var5 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) 0)))) (= var3 var2))))) (inv_main11 (newHeap (alloc var5 (O_TSLL var4))) var3 var3 (newAddr (alloc var5 (O_TSLL var4))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main50 var1 var3 var2 var0) (and (not (= var3 nullAddr)) (= var2 nullAddr)))) (inv_main73 var1 var3 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main73 var3 var8 var7 var2) (and (and (not (= var1 nullAddr)) (and (and (and (and (= var4 var3) (= var6 var8)) (= var10 var7)) (= var5 var2)) (= var0 (next (getTSLL (read var3 var7)))))) (and (and (and (= var11 (write var4 var6 defObj)) (= var12 var6)) (= var1 var0)) (= var9 var5))))) (inv_main73 var11 var1 var1 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main45 var1 var3 var2 var0)) (inv_main46 var1 var3 var2 var0 (next (getTSLL (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main10 var0 var4 var3) (and (and (and (= var6 var0) (= var5 var4)) (= var2 var3)) (= var1 (next (getTSLL (read var0 var3))))))) (inv_main12 var6 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main46 var5 var7 var6 var4 var3) (and (not (= var2 nullAddr)) (and (and (and (and (= var9 (write var5 var6 (O_TSLL (TSLL var4 (data (getTSLL (read var5 var6))))))) (= var1 var7)) (= var0 var6)) (= var8 var4)) (= var2 var3))))) (inv_main45 var9 var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main41 var5 var7 var6) (and (and (not (= var3 nullAddr)) (and (and (and (= var8 var4) (= var3 var2)) (= var0 var9)) (= var1 nullAddr))) (and (and (= var4 (write var5 var6 (O_TSLL (TSLL (next (getTSLL (read var5 var6))) 2)))) (= var2 var7)) (= var9 var6))))) (inv_main45 var8 var3 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Addr)) (or (not (and (inv_main35 var1 var4 var3) (and (and (not (= var5 nullAddr)) (and (and (and (= var8 var7) (= var5 var2)) (= var6 var0)) (= var9 nullAddr))) (and (and (= var7 (write var1 (next (getTSLL (read var1 var3))) (O_TSLL (TSLL (next (getTSLL (read var1 (next (getTSLL (read var1 var3)))))) 2)))) (= var2 var4)) (= var0 var3))))) (inv_main45 var8 var5 var5 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main39 var0 var2 var1)) (inv_main41 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main37 var2 var4 var3) (and (and (and (= var0 var2) (= var1 var4)) (= var5 var3)) (= var6 (next (getTSLL (read var2 var3))))))) (inv_main39 var0 var1 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 TSLL) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main32 var0 var3 var2) (and (= var1 nullAddr) (and (and (and (= var6 var0) (= var5 var3)) (= var7 var2)) (= var1 (next (getTSLL (read var0 var2)))))))) (inv_main38 (newHeap (alloc var6 (O_TSLL var4))) var5 var7 (newAddr (alloc var6 (O_TSLL var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main12 var0 var2 var1)) (inv_main14 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main11 var1 var3 var2 var0)) (inv_main10 (write var1 var2 (O_TSLL (TSLL var0 (data (getTSLL (read var1 var2)))))) var3 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main56 var5 var8 var7 var4 var10 var6) (and (and (= var2 2) (not (= var1 1))) (and (and (and (and (and (and (= var11 var5) (= var9 var8)) (= var12 var7)) (= var3 var4)) (= var2 var10)) (= var0 var6)) (= var1 (data (getTSLL (read var5 (next (getTSLL (read var5 var7))))))))))) (inv_main61 var11 var9 var12 var3 var2 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main52 var2 var6 var5 var1) (and (and (= var0 2) (not (= var0 2))) (and (and (and (and (= var3 var2) (= var8 var6)) (= var7 var5)) (= var4 var1)) (= var0 (data (getTSLL (read var2 var5)))))))) (inv_main61 var3 var8 var7 var4 var0 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main32 var2 var5 var4) (and (not (= var0 nullAddr)) (and (and (and (= var6 var2) (= var1 var5)) (= var3 var4)) (= var0 (next (getTSLL (read var2 var4)))))))) (inv_main35 var6 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main21 var2 var4 var3) (and (and (and (= var1 var2) (= var0 var4)) (= var6 var3)) (= var5 (next (getTSLL (read var2 var3))))))) (inv_main15 var1 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main14 var2 var5 var4) (and (= var3 0) (and (and (= var6 (write var2 var4 (O_TSLL (TSLL (next (getTSLL (read var2 var4))) 0)))) (= var1 var5)) (= var0 var4))))) (inv_main15 var6 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main4 var1 var2) (and (= var4 0) (and (= var3 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) 0)))) (= var0 var2))))) (inv_main15 var3 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main15 var1 var3 var2) (and (not (= var4 nullAddr)) (and (= var0 nullAddr) (and (and (and (= var5 var1) (= var6 var3)) (= var4 var2)) (= var0 (next (getTSLL (read var1 var2))))))))) (inv_main27 var5 var6 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (or (not (and (inv_main15 var0 var4 var3) (and (not (= var5 nullAddr)) (and (= var6 0) (and (not (= var7 nullAddr)) (and (and (and (= var2 var0) (= var1 var4)) (= var5 var3)) (= var7 (next (getTSLL (read var0 var3)))))))))) (inv_main27 var2 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main50 var1 var3 var2 var0) (not (= var2 nullAddr)))) (inv_main52 var1 var3 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main38 var0 var2 var1 var3)) (inv_main37 (write var0 var1 (O_TSLL (TSLL var3 (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main11 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main10 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main12 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main14 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main15 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main23 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main21 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main29 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main27 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main32 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main38 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main37 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main39 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main41 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main35 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main35 var0 var2 var1) (not (is-O_TSLL (read var0 (next (getTSLL (read var0 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main45 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main46 var2 var4 var3 var1 var0) (not (is-O_TSLL (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main52 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main56 var1 var4 var3 var0 var5 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main56 var1 var4 var3 var0 var5 var2) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3)))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (inv_main61 var1 var4 var3 var0 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main59 var1 var4 var3 var0 var5 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main65 var1 var4 var3 var0 var5 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main64 var1 var4 var3 var0 var5 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main73 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-simple-white-blue-1.i.smt2 b/heap-theory-benchmarks/heap/sll-simple-white-blue-1.i.smt2 new file mode 100644 index 00000000..9677ddc3 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-simple-white-blue-1.i.smt2 @@ -0,0 +1,100 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (data Int)) + ) +)) +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main43 var0 var5 var4) (and (= var6 1) (and (and (and (= var1 var0) (= var2 var5)) (= var3 var4)) (= var6 (data (getTSLL (read var0 var4)))))))) (inv_main49 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main35 var0 var4 var2) (and (not (= var3 1)) (and (and (and (= var1 var0) (= var6 var4)) (= var5 var2)) (= var3 (data (getTSLL (read var0 var2)))))))) (inv_main37 var1 var6 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main53 var0 var2 var1) (not (= var1 nullAddr)))) (inv_main56 var0 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main43 var0 var4 var2) (and (not (= var1 1)) (and (and (and (= var5 var0) (= var6 var4)) (= var3 var2)) (= var1 (data (getTSLL (read var0 var2)))))))) (inv_main44 var5 var6 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 TSLL) (var4 Int)) (or (not (and (inv_main6 var0 var2 var1) (not (= var4 0)))) (inv_main11 (newHeap (alloc var0 (O_TSLL var3))) var2 var1 (newAddr (alloc var0 (O_TSLL var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main26 var1 var6 var5) (and (and (and (= var3 var1) (= var0 var6)) (= var2 var5)) (= var4 (next (getTSLL (read var1 var5))))))) (inv_main23 var3 var0 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr)) (or (not (and (inv_main6 var0 var4 var2) (and (= var3 0) (= var1 0)))) (inv_main23 var0 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main35 var1 var5 var4) (and (= var6 1) (and (and (and (= var0 var1) (= var2 var5)) (= var3 var4)) (= var6 (data (getTSLL (read var1 var4)))))))) (inv_main36 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main10 var1 var6 var4) (and (and (and (= var2 var1) (= var3 var6)) (= var0 var4)) (= var5 (next (getTSLL (read var1 var4))))))) (inv_main12 var2 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main14 var0 var2 var1)) (inv_main6 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main4 var0 var3) (and (= var1 (write var0 var3 (O_TSLL (TSLL (next (getTSLL (read var0 var3))) 0)))) (= var2 var3)))) (inv_main6 var1 var2 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main19 var0 var2 var1)) (inv_main21 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) 1))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 TSLL) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (and (inv_main6 var0 var6 var3) (and (and (and (and (= var4 (newHeap (alloc var0 (O_TSLL var5)))) (= var2 var6)) (= var9 var3)) (= var7 (newAddr (alloc var0 (O_TSLL var5))))) (and (not (= var8 0)) (= var1 0))))) (inv_main19 var4 var2 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main37 var0 var4 var2) (and (and (and (= var5 var0) (= var1 var4)) (= var6 var2)) (= var3 (next (getTSLL (read var0 var2))))))) (inv_main35 var5 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main34 var0 var5 var2 var6) (and (and (= var3 (write var0 var2 (O_TSLL (TSLL var6 (data (getTSLL (read var0 var2))))))) (= var4 var5)) (= var1 var2)))) (inv_main35 var3 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main21 var1 var5 var3) (and (and (= var0 (write var1 var3 (O_TSLL (TSLL var5 (data (getTSLL (read var1 var3))))))) (= var4 var5)) (= var2 var3)))) (inv_main35 var0 var2 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 TSLL) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main24 var0 var6 var4) (and (and (and (= var1 var0) (= var5 var6)) (= var2 var4)) (= var7 (next (getTSLL (read var0 var4))))))) (inv_main33 (newHeap (alloc var1 (O_TSLL var3))) var5 var2 var7 (newAddr (alloc var1 (O_TSLL var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main53 var0 var2 var1) (= var1 nullAddr))) (inv_main0 var0 0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main36 var0 var6 var2) (and (not (= var3 nullAddr)) (and (and (and (= var1 var0) (= var5 var6)) (= var4 var2)) (= var3 (next (getTSLL (read var0 var2)))))))) (inv_main43 var1 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main44 var1 var5 var4) (and (not (= var6 nullAddr)) (and (and (and (= var2 var1) (= var3 var5)) (= var0 var4)) (= var6 (next (getTSLL (read var1 var4)))))))) (inv_main43 var2 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main23 var0 var3 var1) (and (= var2 0) (not (= (next (getTSLL (read var0 var1))) nullAddr))))) (inv_main26 var0 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (and (inv_main23 var0 var2 var1) (= (next (getTSLL (read var0 var1))) nullAddr))) (inv_main24 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (or (not (and (inv_main23 var0 var2 var1) (and (not (= var3 0)) (not (= (next (getTSLL (read var0 var1))) nullAddr))))) (inv_main24 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main12 var0 var2 var1)) (inv_main14 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) 0))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main56 var0 var5 var3) (and (and (and (= var1 var0) (= var2 var5)) (= var6 var3)) (= var4 (next (getTSLL (read var0 var3))))))) (inv_main53 (write var1 var2 defObj) var2 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main36 var0 var6 var2) (and (= var3 nullAddr) (and (and (and (= var1 var0) (= var5 var6)) (= var4 var2)) (= var3 (next (getTSLL (read var0 var2)))))))) (inv_main53 var1 var5 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main44 var1 var5 var4) (and (= var6 nullAddr) (and (and (and (= var2 var1) (= var3 var5)) (= var0 var4)) (= var6 (next (getTSLL (read var1 var4)))))))) (inv_main53 var2 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main11 var0 var2 var1 var3)) (inv_main10 (write var0 var1 (O_TSLL (TSLL var3 (data (getTSLL (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main32 var0 var2 var1 var3)) (inv_main34 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) 1))) var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main33 var0 var3 var1 var4 var2)) (inv_main32 (write var0 var1 (O_TSLL (TSLL var2 (data (getTSLL (read var0 var1)))))) var3 var1 var4)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main11 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main10 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main12 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main14 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main19 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main21 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main23 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main26 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main24 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main33 var0 var3 var1 var4 var2) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main32 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main34 var0 var2 var1 var3) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main35 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main37 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main36 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main43 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (inv_main49 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main44 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main56 var0 var2 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr)) (not (and (inv_main0 var0 var1) (not (= (read var0 var2) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-simple-white-blue-2.i.smt2 b/heap-theory-benchmarks/heap/sll-simple-white-blue-2.i.smt2 new file mode 100644 index 00000000..4dbd6587 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-simple-white-blue-2.i.smt2 @@ -0,0 +1,97 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (data Int)) + ) +)) +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main23 (Heap Addr Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main26 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main32 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr) Bool) +(declare-fun inv_main44 (Heap Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main26 var4 var1 var3) (and (and (and (= var2 var4) (= var5 var1)) (= var0 var3)) (= var6 (next (getTSLL (read var4 var3))))))) (inv_main23 var2 var5 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main6 var3 var1 var2) (and (= var0 0) (= var4 0)))) (inv_main23 var3 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main12 var2 var0 var1)) (inv_main14 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 0))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main23 var2 var0 var1) (= (next (getTSLL (read var2 var1))) nullAddr))) (inv_main24 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (and (inv_main23 var2 var0 var1) (and (not (= var3 0)) (not (= (next (getTSLL (read var2 var1))) nullAddr))))) (inv_main24 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr)) (or (not (and (inv_main35 var4 var0 var3) (and (= var2 1) (and (and (and (= var5 var4) (= var1 var0)) (= var6 var3)) (= var2 (data (getTSLL (read var4 var3)))))))) (inv_main36 var5 var1 var6)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main14 var2 var0 var1)) (inv_main6 (write var2 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var2 var1)))))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr)) (or (not (and (inv_main4 var2 var0) (and (= var1 (write var2 var0 (O_TSLL (TSLL (next (getTSLL (read var2 var0))) 0)))) (= var3 var0)))) (inv_main6 var1 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main11 var3 var0 var2 var1)) (inv_main10 (write var3 var2 (O_TSLL (TSLL var1 (data (getTSLL (read var3 var2)))))) var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 TSLL) (var7 Addr) (var8 Int) (var9 Int)) (or (not (and (inv_main6 var5 var1 var3) (and (and (and (and (= var0 (newHeap (alloc var5 (O_TSLL var6)))) (= var7 var1)) (= var4 var3)) (= var2 (newAddr (alloc var5 (O_TSLL var6))))) (and (not (= var8 0)) (= var9 0))))) (inv_main19 var0 var7 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main32 var3 var1 var2 var0)) (inv_main34 (write var3 (next (getTSLL (read var3 var2))) (O_TSLL (TSLL (next (getTSLL (read var3 (next (getTSLL (read var3 var2)))))) 1))) var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main37 var3 var1 var2) (and (and (and (= var6 var3) (= var5 var1)) (= var0 var2)) (= var4 (next (getTSLL (read var3 var2))))))) (inv_main35 var6 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main34 var5 var2 var4 var1) (and (and (= var3 (write var5 (next (getTSLL (read var5 var4))) (O_TSLL (TSLL var1 (data (getTSLL (read var5 (next (getTSLL (read var5 var4)))))))))) (= var6 var2)) (= var0 var4)))) (inv_main35 var3 var6 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main21 var2 var0 var1) (and (and (= var4 (write var2 var1 (O_TSLL (TSLL var0 (data (getTSLL (read var2 var1))))))) (= var5 var0)) (= var3 var1)))) (inv_main35 var4 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 TSLL) (var7 Addr)) (or (not (and (inv_main24 var5 var1 var4) (and (and (and (= var2 var5) (= var7 var1)) (= var3 var4)) (= var0 (next (getTSLL (read var5 var4))))))) (inv_main33 (newHeap (alloc var2 (O_TSLL var6))) var7 var3 var0 (newAddr (alloc var2 (O_TSLL var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Heap)) (or (not (and (inv_main56 var4 var1 var2) (and (and (not (= var7 nullAddr)) (and (and (and (= var9 var4) (= var5 var1)) (= var0 var2)) (= var3 (next (getTSLL (read var4 var2)))))) (and (and (= var8 (write var9 var5 defObj)) (= var6 var5)) (= var7 var3))))) (inv_main56 var8 var7 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main36 var4 var0 var2) (and (not (= var3 nullAddr)) (and (= var5 nullAddr) (and (and (and (= var1 var4) (= var3 var0)) (= var6 var2)) (= var5 (next (getTSLL (read var4 var2))))))))) (inv_main56 var1 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main44 var4 var0 var3) (and (not (= var2 nullAddr)) (and (= var6 nullAddr) (and (and (and (= var1 var4) (= var2 var0)) (= var5 var3)) (= var6 (next (getTSLL (read var4 var3))))))))) (inv_main56 var1 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (and (inv_main23 var2 var0 var1) (and (= var3 0) (not (= (next (getTSLL (read var2 var1))) nullAddr))))) (inv_main26 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main43 var4 var1 var3) (and (not (= var0 1)) (and (and (and (= var2 var4) (= var5 var1)) (= var6 var3)) (= var0 (data (getTSLL (read var4 var3)))))))) (inv_main49 var2 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main36 var4 var0 var2) (and (not (= var5 nullAddr)) (and (and (and (= var1 var4) (= var3 var0)) (= var6 var2)) (= var5 (next (getTSLL (read var4 var2)))))))) (inv_main43 var1 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main44 var4 var0 var3) (and (not (= var6 nullAddr)) (and (and (and (= var2 var4) (= var1 var0)) (= var5 var3)) (= var6 (next (getTSLL (read var4 var3)))))))) (inv_main43 var2 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 TSLL) (var4 Int)) (or (not (and (inv_main6 var2 var0 var1) (not (= var4 0)))) (inv_main11 (newHeap (alloc var2 (O_TSLL var3))) var0 var1 (newAddr (alloc var2 (O_TSLL var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (inv_main33 var4 var1 var2 var0 var3)) (inv_main32 (write var4 var2 (O_TSLL (TSLL var3 (data (getTSLL (read var4 var2)))))) var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Heap)) (or (not (and (inv_main35 var6 var1 var4) (and (not (= var3 1)) (and (and (and (= var5 var6) (= var2 var1)) (= var0 var4)) (= var3 (data (getTSLL (read var6 var4)))))))) (inv_main37 var5 var2 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main43 var3 var1 var2) (and (= var0 1) (and (and (and (= var6 var3) (= var4 var1)) (= var5 var2)) (= var0 (data (getTSLL (read var3 var2)))))))) (inv_main44 var6 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap)) (or (not (and (inv_main10 var4 var1 var3) (and (and (and (= var6 var4) (= var0 var1)) (= var2 var3)) (= var5 (next (getTSLL (read var4 var3))))))) (inv_main12 var6 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main19 var2 var0 var1)) (inv_main21 (write var2 var1 (O_TSLL (TSLL (next (getTSLL (read var2 var1))) 1))) var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main11 var3 var0 var2 var1) (not (is-O_TSLL (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main10 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main12 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main14 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main19 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main21 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main23 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main26 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main24 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main33 var4 var1 var2 var0 var3) (not (is-O_TSLL (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main32 var3 var1 var2 var0) (not (is-O_TSLL (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main32 var3 var1 var2 var0) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main34 var3 var1 var2 var0) (not (is-O_TSLL (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main34 var3 var1 var2 var0) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main35 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main36 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main43 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main49 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main44 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main56 var2 var0 var1) (not (is-O_TSLL (read var2 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-sorted-1.i.smt2 b/heap-theory-benchmarks/heap/sll-sorted-1.i.smt2 new file mode 100644 index 00000000..cea98fb2 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-sorted-1.i.smt2 @@ -0,0 +1,141 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (data Int)) + ) +)) +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int) Bool) +(declare-fun inv_main21 (Heap Addr Addr Int) Bool) +(declare-fun inv_main25 (Heap Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Int) Bool) +(declare-fun inv_main31 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int) Bool) +(declare-fun inv_main43 (Heap Addr Addr Int) Bool) +(declare-fun inv_main47 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main48 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main62 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main66 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr Int) Bool) +(declare-fun inv_main70 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main72 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main77 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main82 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main95 (Heap Addr Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap)) (or (not (and (inv_main49 var10 var2 var1 var8 var6) (and (not (= var7 nullAddr)) (and (and (and (and (and (= var5 var10) (= var9 var2)) (= var0 var1)) (= var3 var8)) (= var4 var6)) (= var7 (next (getTSLL (read var10 var1)))))))) (inv_main52 var5 var9 var0 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr)) (or (not (and (inv_main31 var3 var1 var0 var2 var4) (= var4 nullAddr))) (inv_main29 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Heap) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr)) (or (not (and (inv_main31 var9 var5 var1 var13 var10) (and (and (= var6 0) (and (not (= var10 nullAddr)) (and (and (and (and (= var11 var9) (= var0 var5)) (= var12 var1)) (= var8 var13)) (= var4 (data (getTSLL (read var9 (next (getTSLL (read var9 var1)))))))))) (and (and (and (and (= var7 var11) (= var2 var0)) (= var14 var12)) (= var3 var8)) (or (and (= var4 0) (= var6 1)) (and (not (= var4 0)) (= var6 0))))))) (inv_main29 var7 var2 var14 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main40 var6 var2 var0 var5) (and (= var1 1) (and (and (and (and (= var3 var6) (= var8 var2)) (= var7 var0)) (= var4 var5)) (= var1 (data (getTSLL (read var6 var0)))))))) (inv_main29 var3 var8 var7 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main52 var4 var1 var0 var3 var2)) (inv_main55 var4 var1 var0 var3 var2 (next (getTSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (inv_main3 var1 var0)) (inv_main4 (write var1 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var1 var0)))))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main47 var4 var1 var0 var3 var2)) (inv_main48 (write var4 var2 (O_TSLL (TSLL (next (getTSLL (read var4 var2))) 1))) var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main86 var8 var2 var0 var6 var4) (and (and (and (and (and (= var1 var8) (= var3 var2)) (= var10 var0)) (= var5 var6)) (= var7 var4)) (= var9 (next (getTSLL (read var8 var0))))))) (inv_main58 var1 var3 var9 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main57 var4 var1 var0 var3 var2) (= var0 nullAddr))) (inv_main58 var4 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main57 var12 var3 var1 var16 var6) (and (and (= var10 0) (and (not (= var1 nullAddr)) (and (and (and (and (and (= var2 var12) (= var15 var3)) (= var4 var1)) (= var8 var16)) (= var5 var6)) (= var13 (data (getTSLL (read var12 var1))))))) (and (and (and (and (and (= var11 var2) (= var7 var15)) (= var0 var4)) (= var9 var8)) (= var14 var5)) (or (and (not (= var13 1)) (= var10 1)) (and (= var13 1) (= var10 0))))))) (inv_main58 var11 var7 var0 var9 var14)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap)) (or (not (and (inv_main40 var8 var2 var0 var7) (and (not (= var6 1)) (and (and (and (and (= var1 var8) (= var5 var2)) (= var4 var0)) (= var3 var7)) (= var6 (data (getTSLL (read var8 var0)))))))) (inv_main43 var1 var5 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int)) (or (not (and (inv_main30 var7 var4 var1 var6) (and (and (and (and (= var3 var7) (= var5 var4)) (= var0 var1)) (= var8 var6)) (= var2 (next (getTSLL (read var7 var1))))))) (inv_main28 var3 var5 var2 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var1 var0 var3) (and (not (= nullAddr var1)) (and (= var2 0) (not (= var3 0)))))) (inv_main28 var4 var1 var1 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main78 var8 var1 var0 var6 var4) (and (= var7 1) (and (and (and (and (and (= var3 var8) (= var2 var1)) (= var5 var0)) (= var10 var6)) (= var9 var4)) (= var7 (data (getTSLL (read var8 var0)))))))) (inv_main82 var3 var2 var5 var10 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (inv_main28 var3 var1 var0 var2)) (inv_main31 var3 var1 var0 var2 (next (getTSLL (read var3 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main78 var8 var2 var1 var7 var5) (and (not (= var3 1)) (and (not (= var0 1)) (and (and (and (and (and (= var10 var8) (= var4 var2)) (= var9 var1)) (= var3 var7)) (= var6 var5)) (= var0 (data (getTSLL (read var8 var1))))))))) (inv_main88 var10 var4 var9 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main58 var4 var1 var0 var3 var2) (not (= var0 nullAddr)))) (inv_main77 var4 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Heap) (var8 Addr)) (or (not (and (inv_main36 var7 var2 var1 var4) (and (and (and (and (= var6 var7) (= var3 var2)) (= var0 var1)) (= var5 var4)) (= var8 (next (getTSLL (read var7 var1))))))) (inv_main40 var6 var3 var8 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main48 var4 var1 var0 var3 var2)) (inv_main49 (write var4 var2 (O_TSLL (TSLL nullAddr (data (getTSLL (read var4 var2)))))) var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var1 var0 var3) (and (= nullAddr var1) (and (= var2 0) (not (= var3 0)))))) (inv_main25 var4 var1 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main58 var4 var1 var0 var3 var2) (and (not (= var1 nullAddr)) (= var0 nullAddr)))) (inv_main95 var4 var1 var1 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr)) (or (not (and (inv_main95 var7 var1 var0 var12 var4) (and (and (not (= var9 nullAddr)) (and (and (and (and (and (= var5 var7) (= var3 var1)) (= var8 var0)) (= var2 var12)) (= var6 var4)) (= var15 (next (getTSLL (read var7 var0)))))) (and (and (and (and (= var11 (write var5 var3 defObj)) (= var10 var3)) (= var9 var15)) (= var13 var2)) (= var14 var6))))) (inv_main95 var11 var9 var9 var13 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap)) (or (not (inv_main55 var5 var1 var0 var4 var3 var2)) (inv_main54 (write var5 var3 (O_TSLL (TSLL var2 (data (getTSLL (read var5 var3)))))) var1 var0 var4 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main78 var8 var2 var1 var7 var5) (and (= var3 1) (and (not (= var0 1)) (and (and (and (and (and (= var10 var8) (= var4 var2)) (= var9 var1)) (= var3 var7)) (= var6 var5)) (= var0 (data (getTSLL (read var8 var1))))))))) (inv_main86 var10 var4 var9 var3 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main62 var10 var2 var1 var9 var6) (and (not (= var0 0)) (and (= var8 0) (and (and (and (and (and (= var7 var10) (= var3 var2)) (= var5 var1)) (= var0 var9)) (= var4 var6)) (= var8 (data (getTSLL (read var10 var1))))))))) (inv_main72 var7 var3 var5 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main62 var8 var2 var0 var6 var4) (and (not (= var7 0)) (and (and (and (and (and (= var3 var8) (= var1 var2)) (= var9 var0)) (= var5 var6)) (= var10 var4)) (= var7 (data (getTSLL (read var8 var0)))))))) (inv_main66 var3 var1 var9 var5 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main59 var10 var3 var0 var7 var5) (and (and (and (and (and (= var1 var10) (= var9 var3)) (= var2 var0)) (= var6 var7)) (= var8 var5)) (= var4 (data (getTSLL (read var10 var0))))))) (inv_main62 var1 var9 var2 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Addr)) (or (not (and (inv_main31 var7 var3 var1 var12 var8) (and (and (not (= var5 0)) (and (not (= var8 nullAddr)) (and (and (and (and (= var9 var7) (= var0 var3)) (= var11 var1)) (= var6 var12)) (= var2 (data (getTSLL (read var7 (next (getTSLL (read var7 var1)))))))))) (and (and (and (and (= var13 var9) (= var4 var0)) (= var14 var11)) (= var10 var6)) (or (and (= var2 0) (= var5 1)) (and (not (= var2 0)) (= var5 0))))))) (inv_main30 var13 var4 var14 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap)) (or (not (and (inv_main49 var10 var2 var0 var8 var4) (and (= var3 nullAddr) (and (and (and (and (and (= var9 var10) (= var1 var2)) (= var7 var0)) (= var5 var8)) (= var6 var4)) (= var3 (next (getTSLL (read var10 var0)))))))) (inv_main51 var9 var1 var7 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main13 var7 var1 var0 var3) (and (= var6 0) (and (= var2 0) (and (and (and (= var4 (write var7 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var7 var0))))))) (= var8 var1)) (= var5 var0)) (= var6 var3)))))) (inv_main21 var4 var8 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap)) (or (not (and (inv_main70 var10 var1 var0 var8 var5) (and (and (and (and (and (= var9 var10) (= var7 var1)) (= var2 var0)) (= var6 var8)) (= var3 var5)) (= var4 (next (getTSLL (read var10 var0))))))) (inv_main57 var9 var7 var4 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Addr)) (or (not (and (inv_main51 var8 var2 var0 var5 var4) (and (and (and (and (= var7 (write var8 var0 (O_TSLL (TSLL var4 (data (getTSLL (read var8 var0))))))) (= var3 var2)) (= var9 var0)) (= var1 var5)) (= var6 var4)))) (inv_main57 var7 var3 var3 0 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Addr)) (or (not (and (inv_main54 var8 var2 var0 var7 var5) (and (and (and (and (= var1 (write var8 var0 (O_TSLL (TSLL var5 (data (getTSLL (read var8 var0))))))) (= var9 var2)) (= var3 var0)) (= var4 var7)) (= var6 var5)))) (inv_main57 var1 var9 var9 0 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr)) (or (not (and (inv_main77 var8 var2 var1 var7 var3) (and (and (and (and (and (= var5 var8) (= var10 var2)) (= var6 var1)) (= var0 var7)) (= var4 var3)) (= var9 (data (getTSLL (read var8 var1))))))) (inv_main78 var5 var10 var6 var9 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 TSLL) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr)) (or (not (and (inv_main29 var8 var1 var0 var5) (and (= var9 nullAddr) (and (and (and (and (= var3 var8) (= var2 var1)) (= var7 var0)) (= var6 var5)) (= var9 (next (getTSLL (read var8 var0)))))))) (inv_main47 (newHeap (alloc var3 (O_TSLL var4))) var2 var7 var6 (newAddr (alloc var3 (O_TSLL var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 TSLL) (var10 Heap)) (or (not (and (inv_main29 var10 var2 var1 var8) (and (= var6 0) (and (not (= var7 nullAddr)) (and (and (and (and (= var0 var10) (= var5 var2)) (= var4 var1)) (= var3 var8)) (= var7 (next (getTSLL (read var10 var1))))))))) (inv_main47 (newHeap (alloc var0 (O_TSLL var9))) var5 var4 var3 (newAddr (alloc var0 (O_TSLL var9))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main57 var9 var4 var1 var14 var7) (and (and (not (= var16 0)) (and (not (= var1 nullAddr)) (and (and (and (and (and (= var3 var9) (= var12 var4)) (= var5 var1)) (= var8 var14)) (= var6 var7)) (= var10 (data (getTSLL (read var9 var1))))))) (and (and (and (and (and (= var11 var3) (= var2 var12)) (= var15 var5)) (= var13 var8)) (= var0 var6)) (or (and (not (= var10 1)) (= var16 1)) (and (= var10 1) (= var16 0))))))) (inv_main59 var11 var2 var15 var13 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap)) (or (not (and (inv_main29 var9 var2 var1 var8) (and (not (= var3 0)) (and (not (= var7 nullAddr)) (and (and (and (and (= var0 var9) (= var6 var2)) (= var5 var1)) (= var4 var8)) (= var7 (next (getTSLL (read var9 var1))))))))) (inv_main36 var0 var6 var5 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main13 var7 var2 var1 var3) (and (not (= var0 0)) (and (and (and (= var4 (write var7 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var7 var1))))))) (= var8 var2)) (= var5 var1)) (= var6 var3))))) (inv_main20 var4 var8 var5 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (and (inv_main13 var7 var1 var0 var3) (and (not (= var6 0)) (and (= var2 0) (and (and (and (= var4 (write var7 var0 (O_TSLL (TSLL nullAddr (data (getTSLL (read var7 var0))))))) (= var8 var1)) (= var5 var0)) (= var6 var3)))))) (inv_main20 var4 var8 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (inv_main12 var4 var2 var0 var3 var1)) (inv_main11 (write var4 var0 (O_TSLL (TSLL var1 (data (getTSLL (read var4 var0)))))) var2 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (inv_main20 var3 var1 var0 var2)) (inv_main7 (write var3 var0 (O_TSLL (TSLL (next (getTSLL (read var3 var0))) 1))) var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (inv_main21 var3 var1 var0 var2)) (inv_main7 (write var3 var0 (O_TSLL (TSLL (next (getTSLL (read var3 var0))) 0))) var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap)) (or (not (and (inv_main4 var3 var2) (and (= var1 (write var3 var2 (O_TSLL (TSLL (next (getTSLL (read var3 var2))) 0)))) (= var0 var2)))) (inv_main7 var1 var0 var0 0)))) +(assert (forall ((var0 TSLL) (var1 Heap)) (or (not (inv_main2 var1)) (inv_main3 (newHeap (alloc var1 (O_TSLL var0))) (newAddr (alloc var1 (O_TSLL var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main11 var8 var2 var0 var6) (and (and (and (and (= var1 var8) (= var4 var2)) (= var5 var0)) (= var3 var6)) (= var7 (next (getTSLL (read var8 var0))))))) (inv_main13 var1 var4 var7 var3)))) +(assert (forall ((var0 Addr) (var1 TSLL) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int)) (or (not (and (inv_main7 var4 var2 var0 var3) (or (not (= var5 0)) (= var3 0)))) (inv_main12 (newHeap (alloc var4 (O_TSLL var1))) var2 var0 var3 (newAddr (alloc var4 (O_TSLL var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main62 var10 var2 var1 var9 var6) (and (= var0 0) (and (= var8 0) (and (and (and (and (and (= var7 var10) (= var3 var2)) (= var5 var1)) (= var0 var9)) (= var4 var6)) (= var8 (data (getTSLL (read var10 var1))))))))) (inv_main70 var7 var3 var5 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main3 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main4 var1 var0) (not (is-O_TSLL (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main12 var4 var2 var0 var3 var1) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main11 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main13 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main20 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main21 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main25 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main28 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr)) (not (and (inv_main31 var3 var1 var0 var2 var4) (and (not (= var4 nullAddr)) (not (is-O_TSLL (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr)) (not (and (inv_main31 var3 var1 var0 var2 var4) (and (not (= var4 nullAddr)) (not (is-O_TSLL (read var3 (next (getTSLL (read var3 var0))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main30 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main29 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main36 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main40 var3 var1 var0 var2) (not (is-O_TSLL (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (inv_main43 var3 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main47 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main48 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main49 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main51 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main52 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap)) (not (and (inv_main55 var5 var1 var0 var4 var3 var2) (not (is-O_TSLL (read var5 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main54 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main57 var4 var1 var0 var3 var2) (and (not (= var0 nullAddr)) (not (is-O_TSLL (read var4 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main59 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main62 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main66 var4 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main72 var4 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main70 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main77 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main78 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main82 var4 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (inv_main88 var4 var1 var0 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main86 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (not (and (inv_main95 var4 var1 var0 var3 var2) (not (is-O_TSLL (read var4 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll-sorted-2.i.smt2 b/heap-theory-benchmarks/heap/sll-sorted-2.i.smt2 new file mode 100644 index 00000000..74526392 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll-sorted-2.i.smt2 @@ -0,0 +1,147 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TSLL 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TSLL (getTSLL TSLL)) + (defObj) + ) + ( + (TSLL (next Addr) (data Int)) + ) +)) +(declare-fun inv_main101 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr Int) Bool) +(declare-fun inv_main12 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int) Bool) +(declare-fun inv_main21 (Heap Addr Addr Int) Bool) +(declare-fun inv_main25 (Heap Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Addr Int) Bool) +(declare-fun inv_main29 (Heap Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Int) Bool) +(declare-fun inv_main31 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr Int) Bool) +(declare-fun inv_main36 (Heap Addr Addr Int) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main42 (Heap Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Addr Addr Int) Bool) +(declare-fun inv_main49 (Heap Addr Addr Int) Bool) +(declare-fun inv_main53 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main61 (Heap Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main63 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main65 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main68 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main84 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main92 (Heap Addr Addr Int Addr) Bool) +(declare-fun inv_main94 (Heap Addr Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main53 var1 var3 var2 var0 var4)) (inv_main54 (write var1 var4 (O_TSLL (TSLL (next (getTSLL (read var1 var4))) 1))) var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main55 var3 var6 var5 var0 var9) (and (not (= var8 nullAddr)) (and (and (and (and (and (= var4 var3) (= var7 var6)) (= var10 var5)) (= var2 var0)) (= var1 var9)) (= var8 (next (getTSLL (read var3 var5)))))))) (inv_main58 var4 var7 var10 var2 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 TSLL) (var5 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (or (not (= var5 0)) (= var0 0)))) (inv_main12 (newHeap (alloc var1 (O_TSLL var4))) var3 var2 var0 (newAddr (alloc var1 (O_TSLL var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main46 var3 var6 var5 var0) (and (not (= var2 1)) (and (and (and (and (= var4 var3) (= var8 var6)) (= var1 var5)) (= var7 var0)) (= var2 (data (getTSLL (read var3 var5)))))))) (inv_main49 var4 var8 var1 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main58 var1 var3 var2 var0 var4)) (inv_main61 var1 var3 var2 var0 var4 (next (getTSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main42 var4 var6 var5 var0) (and (and (and (and (= var1 var4) (= var7 var6)) (= var2 var5)) (= var8 var0)) (= var3 (next (getTSLL (read var4 var5))))))) (inv_main46 var1 var7 var3 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main28 var1 var3 var2 var0)) (inv_main31 var1 var3 var2 var0 (next (getTSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main12 var1 var4 var3 var0 var2)) (inv_main11 (write var1 var3 (O_TSLL (TSLL var2 (data (getTSLL (read var1 var3)))))) var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main65 var2 var5 var4 var0 var9) (and (and (and (and (and (= var8 var2) (= var7 var5)) (= var3 var4)) (= var6 var0)) (= var10 var9)) (= var1 (data (getTSLL (read var2 var4))))))) (inv_main68 var8 var7 var3 var1 var10)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main11 var3 var6 var5 var1) (and (and (and (and (= var7 var3) (= var2 var6)) (= var8 var5)) (= var4 var1)) (= var0 (next (getTSLL (read var3 var5))))))) (inv_main13 var7 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main13 var3 var5 var4 var1) (and (not (= var7 0)) (and (and (and (= var2 (write var3 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var3 var4))))))) (= var6 var5)) (= var8 var4)) (= var0 var1))))) (inv_main20 var2 var6 var8 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main13 var3 var5 var4 var1) (and (not (= var0 0)) (and (= var8 0) (and (and (and (= var2 (write var3 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var3 var4))))))) (= var6 var5)) (= var7 var4)) (= var0 var1)))))) (inv_main20 var2 var6 var7 var0)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_TSLL (TSLL nullAddr (data (getTSLL (read var0 var1)))))) var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main34 var2 var5 var4 var1) (and (and (and (and (= var8 var2) (= var7 var5)) (= var6 var4)) (= var0 var1)) (= var3 (next (getTSLL (read var2 var4))))))) (inv_main28 var8 var7 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (and (not (= nullAddr var3)) (and (= var4 0) (not (= var0 0)))))) (inv_main28 var1 var3 var3 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main92 var2 var6 var5 var0 var9) (and (and (and (and (and (= var7 var2) (= var10 var6)) (= var1 var5)) (= var3 var0)) (= var8 var9)) (= var4 (next (getTSLL (read var2 var5))))))) (inv_main64 var7 var10 var4 var3 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main63 var1 var3 var2 var0 var4) (= var2 nullAddr))) (inv_main64 var1 var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Heap) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main63 var13 var7 var6 var0 var10) (and (and (= var15 0) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var4 var13) (= var11 var7)) (= var1 var6)) (= var8 var0)) (= var3 var10)) (= var14 (data (getTSLL (read var13 var6))))))) (and (and (and (and (and (= var12 var4) (= var9 var11)) (= var2 var1)) (= var5 var8)) (= var16 var3)) (or (and (not (= var14 1)) (= var15 1)) (and (= var14 1) (= var15 0))))))) (inv_main64 var12 var9 var2 var5 var16)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main68 var2 var6 var5 var1 var9) (and (not (= var0 0)) (and (and (and (and (and (= var10 var2) (= var8 var6)) (= var7 var5)) (= var3 var1)) (= var4 var9)) (= var0 (data (getTSLL (read var2 var5)))))))) (inv_main72 var10 var8 var7 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main55 var2 var7 var6 var0 var10) (and (= var5 nullAddr) (and (and (and (and (and (= var8 var2) (= var1 var7)) (= var3 var6)) (= var4 var0)) (= var9 var10)) (= var5 (next (getTSLL (read var2 var6)))))))) (inv_main57 var8 var1 var3 var4 var9)))) +(assert (forall ((var0 Heap) (var1 TSLL)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_TSLL var1))) (newAddr (alloc var0 (O_TSLL var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr)) (or (not (and (inv_main31 var11 var7 var6 var0 var12) (and (and (not (= var5 0)) (and (not (= var12 nullAddr)) (and (and (and (and (= var3 var11) (= var2 var7)) (= var10 var6)) (= var9 var0)) (= var8 (data (getTSLL (read var11 (next (getTSLL (read var11 var6)))))))))) (and (and (and (and (= var1 var3) (= var4 var2)) (= var14 var10)) (= var13 var9)) (or (and (= var8 0) (= var5 1)) (and (not (= var8 0)) (= var5 0))))))) (inv_main30 var1 var4 var14 var13)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main84 var4 var7 var6 var1 var9) (and (= var3 1) (and (= var8 1) (and (and (and (and (and (= var5 var4) (= var0 var7)) (= var2 var6)) (= var3 var1)) (= var10 var9)) (= var8 (data (getTSLL (read var4 var6))))))))) (inv_main92 var5 var0 var2 var3 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 TSLL) (var8 Int) (var9 Addr)) (or (not (and (inv_main29 var2 var4 var3 var0) (and (= var5 nullAddr) (and (and (and (and (= var6 var2) (= var1 var4)) (= var9 var3)) (= var8 var0)) (= var5 (next (getTSLL (read var2 var3)))))))) (inv_main53 (newHeap (alloc var6 (O_TSLL var7))) var1 var9 var8 (newAddr (alloc var6 (O_TSLL var7))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 TSLL) (var10 Addr)) (or (not (and (inv_main29 var6 var8 var7 var1) (and (= var2 0) (and (not (= var5 nullAddr)) (and (and (and (and (= var0 var6) (= var3 var8)) (= var10 var7)) (= var4 var1)) (= var5 (next (getTSLL (read var6 var7))))))))) (inv_main53 (newHeap (alloc var0 (O_TSLL var9))) var3 var10 var4 (newAddr (alloc var0 (O_TSLL var9))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int)) (or (not (and (inv_main83 var4 var6 var5 var1 var9) (and (and (and (and (and (= var7 var4) (= var0 var6)) (= var3 var5)) (= var10 var1)) (= var8 var9)) (= var2 (data (getTSLL (read var4 var5))))))) (inv_main84 var7 var0 var3 var2 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main61 var1 var3 var2 var0 var5 var4)) (inv_main60 (write var1 var5 (O_TSLL (TSLL var4 (data (getTSLL (read var1 var5)))))) var3 var2 var0 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (and (inv_main7 var1 var3 var2 var0) (and (= nullAddr var3) (and (= var4 0) (not (= var0 0)))))) (inv_main25 var1 var3 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main76 var1 var5 var4 var0 var8) (and (and (and (and (and (= var3 var1) (= var2 var5)) (= var10 var4)) (= var9 var0)) (= var7 var8)) (= var6 (next (getTSLL (read var1 var4))))))) (inv_main63 var3 var2 var6 var9 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main57 var4 var6 var5 var2 var8) (and (and (and (and (= var3 (write var4 var5 (O_TSLL (TSLL var8 (data (getTSLL (read var4 var5))))))) (= var0 var6)) (= var9 var5)) (= var1 var2)) (= var7 var8)))) (inv_main63 var3 var0 var0 0 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr)) (or (not (and (inv_main60 var2 var5 var4 var0 var8) (and (and (and (and (= var6 (write var2 var4 (O_TSLL (TSLL var8 (data (getTSLL (read var2 var4))))))) (= var9 var5)) (= var1 var4)) (= var7 var0)) (= var3 var8)))) (inv_main63 var6 var9 var9 0 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main29 var6 var8 var7 var2) (and (not (= var1 0)) (and (not (= var5 nullAddr)) (and (and (and (and (= var0 var6) (= var3 var8)) (= var9 var7)) (= var4 var2)) (= var5 (next (getTSLL (read var6 var7))))))))) (inv_main42 var0 var3 var9 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main68 var1 var6 var5 var0 var10) (and (= var7 0) (and (= var4 0) (and (and (and (and (and (= var2 var1) (= var8 var6)) (= var9 var5)) (= var7 var0)) (= var3 var10)) (= var4 (data (getTSLL (read var1 var5))))))))) (inv_main76 var2 var8 var9 var7 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main30 var3 var8 var7 var2) (and (not (= var4 0)) (and (and (and (and (= var0 var3) (= var1 var8)) (= var6 var7)) (= var5 var2)) (= var4 (data (getTSLL (read var3 var7)))))))) (inv_main36 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main84 var2 var5 var4 var0 var8) (and (not (= var1 1)) (and (and (and (and (and (= var9 var2) (= var7 var5)) (= var10 var4)) (= var3 var0)) (= var6 var8)) (= var1 (data (getTSLL (read var2 var4)))))))) (inv_main88 var9 var7 var10 var3 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (and (inv_main30 var1 var4 var3 var0) (and (= var7 0) (and (and (and (and (= var6 var1) (= var5 var4)) (= var2 var3)) (= var8 var0)) (= var7 (data (getTSLL (read var1 var3)))))))) (inv_main34 var6 var5 var2 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main13 var3 var5 var4 var1) (and (= var0 0) (and (= var8 0) (and (and (and (= var2 (write var3 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var3 var4))))))) (= var6 var5)) (= var7 var4)) (= var0 var1)))))) (inv_main21 var2 var6 var7 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main54 var1 var3 var2 var0 var4)) (inv_main55 (write var1 var4 (O_TSLL (TSLL nullAddr (data (getTSLL (read var1 var4)))))) var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main31 var1 var4 var3 var0 var2) (= var2 nullAddr))) (inv_main29 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main31 var9 var4 var3 var0 var11) (and (and (= var14 0) (and (not (= var11 nullAddr)) (and (and (and (and (= var2 var9) (= var1 var4)) (= var8 var3)) (= var7 var0)) (= var5 (data (getTSLL (read var9 (next (getTSLL (read var9 var3)))))))))) (and (and (and (and (= var10 var2) (= var12 var1)) (= var6 var8)) (= var13 var7)) (or (and (= var5 0) (= var14 1)) (and (not (= var5 0)) (= var14 0))))))) (inv_main29 var10 var12 var6 var13)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int)) (or (not (and (inv_main46 var2 var4 var3 var0) (and (= var8 1) (and (and (and (and (= var5 var2) (= var7 var4)) (= var1 var3)) (= var6 var0)) (= var8 (data (getTSLL (read var2 var3)))))))) (inv_main29 var5 var7 var1 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Int) (var16 Addr)) (or (not (and (inv_main63 var14 var7 var6 var2 var12) (and (and (not (= var10 0)) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var5 var14) (= var13 var7)) (= var3 var6)) (= var9 var2)) (= var4 var12)) (= var15 (data (getTSLL (read var14 var6))))))) (and (and (and (and (and (= var0 var5) (= var16 var13)) (= var11 var3)) (= var8 var9)) (= var1 var4)) (or (and (not (= var15 1)) (= var10 1)) (and (= var15 1) (= var10 0))))))) (inv_main65 var0 var16 var11 var8 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main64 var1 var3 var2 var0 var4) (and (not (= var3 nullAddr)) (= var2 nullAddr)))) (inv_main101 var1 var3 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main101 var13 var4 var3 var0 var8) (and (and (not (= var7 nullAddr)) (and (and (and (and (and (= var5 var13) (= var10 var4)) (= var2 var3)) (= var11 var0)) (= var12 var8)) (= var6 (next (getTSLL (read var13 var3)))))) (and (and (and (and (= var1 (write var5 var10 defObj)) (= var15 var10)) (= var7 var6)) (= var14 var11)) (= var9 var12))))) (inv_main101 var1 var7 var7 var14 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main64 var1 var3 var2 var0 var4) (not (= var2 nullAddr)))) (inv_main83 var1 var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main68 var1 var6 var5 var0 var10) (and (not (= var7 0)) (and (= var4 0) (and (and (and (and (and (= var2 var1) (= var8 var6)) (= var9 var5)) (= var7 var0)) (= var3 var10)) (= var4 (data (getTSLL (read var1 var5))))))))) (inv_main78 var2 var8 var9 var7 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main20 var1 var3 var2 var0)) (inv_main7 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) 1))) var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main21 var1 var3 var2 var0)) (inv_main7 (write var1 var2 (O_TSLL (TSLL (next (getTSLL (read var1 var2))) 0))) var3 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main4 var0 var1) (and (= var2 (write var0 var1 (O_TSLL (TSLL (next (getTSLL (read var0 var1))) 0)))) (= var3 var1)))) (inv_main7 var2 var3 var3 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main84 var4 var7 var6 var1 var9) (and (not (= var3 1)) (and (= var8 1) (and (and (and (and (and (= var5 var4) (= var0 var7)) (= var2 var6)) (= var3 var1)) (= var10 var9)) (= var8 (data (getTSLL (read var4 var6))))))))) (inv_main94 var5 var0 var2 var3 var10)))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_TSLL (read var0 var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main12 var1 var4 var3 var0 var2) (not (is-O_TSLL (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main11 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main13 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main20 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main21 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main25 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main28 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main31 var1 var4 var3 var0 var2) (and (not (= var2 nullAddr)) (not (is-O_TSLL (read var1 var3)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main31 var1 var4 var3 var0 var2) (and (not (= var2 nullAddr)) (not (is-O_TSLL (read var1 (next (getTSLL (read var1 var3))))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main30 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main36 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main34 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main29 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main42 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main46 var1 var3 var2 var0) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (not (inv_main49 var1 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main53 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main54 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main55 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main57 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main58 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main61 var1 var3 var2 var0 var5 var4) (not (is-O_TSLL (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main60 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main63 var1 var3 var2 var0 var4) (and (not (= var2 nullAddr)) (not (is-O_TSLL (read var1 var2)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main65 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main68 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (inv_main72 var1 var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (inv_main78 var1 var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main76 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main83 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main84 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (inv_main88 var1 var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (inv_main94 var1 var3 var2 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main92 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main101 var1 var3 var2 var0 var4) (not (is-O_TSLL (read var1 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2c_append_equal.i.smt2 b/heap-theory-benchmarks/heap/sll2c_append_equal.i.smt2 new file mode 100644 index 00000000..19685eee --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2c_append_equal.i.smt2 @@ -0,0 +1,93 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main58 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main63 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main68 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main83 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main87 (Heap Int Int Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main90 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr)) (or (not (and (inv_main4 var4 var3 var0) (and (not (= nullAddr var10)) (and (and (and (and (and (and (= var8 (newHeap (alloc var4 (O_node var1)))) (= var7 var3)) (= var5 var0)) (= var6 var3)) (= var9 var0)) (= var2 var0)) (= var10 (newAddr (alloc var4 (O_node var1)))))))) (inv_main12 var8 var7 var5 var6 var9 var2 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr)) (or (not (and (inv_main34 var11 var10 var0 var16 var12 var17 var5 var3 var15) (and (and (and (and (and (and (and (and (= var7 (write var11 var15 (O_node (node (next (getnode (read var11 var15))) var3)))) (= var9 var10)) (= var2 var0)) (= var6 var16)) (= var8 var12)) (= var14 var17)) (= var4 var5)) (= var1 var3)) (= var13 var15)))) (inv_main36 var7 var9 var2 var6 var8 var14 var4 var13)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr)) (or (not (and (inv_main83 var12 var8 var0 var11 var14 var10 var3) (and (not (= var2 var6)) (and (and (and (and (and (and (and (= var9 var12) (= var7 var8)) (= var4 var0)) (= var1 var11)) (= var5 var14)) (= var13 var10)) (= var6 var3)) (= var2 (next (getnode (read var12 var3)))))))) (inv_main87 var9 var7 var4 var1 var5 var13 var6 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr)) (or (not (and (inv_main87 var17 var11 var0 var13 var23 var12 var2 var4) (and (not (= var25 var21)) (and (and (and (and (and (and (and (and (and (= var10 var17) (= var1 var11)) (= var5 var0)) (= var18 var13)) (= var16 var23)) (= var20 var12)) (= var19 var2)) (= var24 var4)) (= var15 (next (getnode (read var17 var4))))) (and (and (and (and (and (and (and (and (= var7 (write var10 var24 defObj)) (= var6 var1)) (= var8 var5)) (= var22 var18)) (= var14 var16)) (= var9 var20)) (= var21 var19)) (= var3 var24)) (= var25 var15)))))) (inv_main87 var7 var6 var8 var22 var14 var9 var21 var25)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Heap)) (or (not (and (inv_main63 var14 var10 var0 var12 var7 var6 var13 var4) (and (and (and (and (and (and (and (and (= var16 var14) (= var9 var10)) (= var1 var0)) (= var15 var12)) (= var5 var7)) (= var3 var6)) (= var2 var13)) (= var8 var4)) (= var11 (next (getnode (read var14 var4))))))) (inv_main61 var16 var9 var1 var15 var5 var3 var2 var11)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main55 var13 var10 var1 var11 var9 var8 var3 var4) (and (not (= nullAddr var2)) (and (and (and (and (and (and (and (= var6 (write var13 var4 (O_node (node (next (getnode (read var13 var4))) var3)))) (= var7 var10)) (= var0 var1)) (= var2 var11)) (= var12 var9)) (= var14 var8)) (= var5 var3)) (= var15 var4))))) (inv_main61 var6 var7 var0 var2 var12 var14 var15 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main21 var2 var1 var0 var5 var3 var6 var4) (not (<= 0 (+ (+ var5 (- 1)) (- 1)))))) (inv_main22 var2 var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var2 var1 var0 var5 var3 var6 var4)) (inv_main18 (write var2 var4 (O_node (node nullAddr (data (getnode (read var2 var4)))))) var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)) (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 node) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main21 var9 var8 var0 var14 var10 var15 var5) (and (and (= nullAddr var12) (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var9 (O_node var7)))) (= var2 var8)) (= var6 var0)) (= var4 var14)) (= var16 var10)) (= var1 var15)) (= var3 var5)) (= var13 var10)) (= var12 (newAddr (alloc var9 (O_node var7)))))) (<= 0 (+ (+ var14 (- 1)) (- 1)))))) (inv_main31 var11 var2 var6 var4 var16 var1 var3 var13 var12 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Addr)) (or (not (and (inv_main61 var14 var10 var0 var12 var9 var8 var13 var3) (and (= var15 var11) (and (and (and (and (and (and (and (and (= var5 var14) (= var1 var10)) (= var7 var0)) (= var11 var12)) (= var6 var9)) (= var2 var8)) (= var4 var13)) (= var16 var3)) (= var15 (next (getnode (read var14 var3)))))))) (inv_main62 var5 var1 var7 var11 var6 var2 var4 var16)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main52 var6 var2 var1 var3 var0 var8 var4 var5 var7)) (inv_main52 var6 var2 var1 var3 var0 var8 var4 var5 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 node) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int) (var16 Int) (var17 Int) (var18 Heap) (var19 Int) (var20 Addr) (var21 Heap) (var22 Int)) (or (not (and (inv_main22 var14 var10 var1 var19 var15 var20 var6) (and (and (= nullAddr var7) (and (and (and (and (and (and (and (= var21 (newHeap (alloc var18 (O_node var3)))) (= var16 var11)) (= var22 var17)) (= var5 var12)) (= var4 3)) (= var9 var17)) (= var0 var17)) (= var7 (newAddr (alloc var18 (O_node var3)))))) (and (and (and (and (and (and (= var18 (write var14 var6 (O_node (node var20 (data (getnode (read var14 var6))))))) (= var11 var10)) (= var17 var1)) (= var2 var19)) (= var13 var15)) (= var12 var20)) (= var8 var6))))) (inv_main52 var21 var16 var22 var5 var4 var9 var0 var7 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 node) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int) (var16 Int) (var17 Int) (var18 Heap) (var19 Heap) (var20 Int) (var21 Addr) (var22 Addr)) (or (not (and (inv_main22 var14 var9 var0 var20 var15 var21 var4) (and (and (not (= nullAddr var12)) (and (and (and (and (and (and (and (= var19 (newHeap (alloc var18 (O_node var2)))) (= var6 var10)) (= var5 var17)) (= var22 var11)) (= var16 3)) (= var3 var17)) (= var8 var17)) (= var12 (newAddr (alloc var18 (O_node var2)))))) (and (and (and (and (and (and (= var18 (write var14 var4 (O_node (node var21 (data (getnode (read var14 var4))))))) (= var10 var9)) (= var17 var0)) (= var1 var20)) (= var13 var15)) (= var11 var21)) (= var7 var4))))) (inv_main49 var19 var6 var5 var22 var16 var3 var8 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (inv_main49 var6 var2 var1 var3 var0 var7 var4 var5)) (inv_main55 (write var6 var5 (O_node (node nullAddr (data (getnode (read var6 var5)))))) var2 var1 var3 var0 var7 var4 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main68 var4 var1 var0 var3 var5 var2) (= var0 (data (getnode (read var4 var5)))))) (inv_main71 var4 var1 var0 var3 var5 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main68 var4 var1 var0 var3 var5 var2) (not (= var0 (data (getnode (read var4 var5))))))) (inv_main90 var4 var1 var0 var3 var5 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int)) (or (not (and (inv_main71 var7 var2 var1 var5 var9 var4) (and (not (= (+ var3 1) (+ 1 var12))) (and (= var8 var6) (and (and (and (and (and (and (= var11 var7) (= var12 var2)) (= var0 var1)) (= var6 var5)) (= var10 var9)) (= var3 var4)) (= var8 (next (getnode (read var7 var9))))))))) (inv_main90 var11 var12 var0 var6 var8 (+ var3 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr)) (or (not (and (inv_main36 var10 var8 var1 var14 var11 var15 var5 var4) (and (and (and (and (and (and (and (= var7 (write var10 var4 (O_node (node var15 (data (getnode (read var10 var4))))))) (= var12 var8)) (= var13 var1)) (= var9 var14)) (= var0 var11)) (= var2 var15)) (= var6 var5)) (= var3 var4)))) (inv_main21 var7 var12 var13 (+ var9 (- 1)) var0 var3 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var10 var9 var0 var12 var11 var6 var4) (and (and (and (and (and (and (= var7 (write var10 var4 (O_node (node (next (getnode (read var10 var4))) var6)))) (= var5 var9)) (= var13 var0)) (= var2 var12)) (= var3 var11)) (= var1 var6)) (= var8 var4)))) (inv_main21 var7 var5 var13 var2 var3 var8 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 node) (var10 Int) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main21 var12 var10 var0 var15 var13 var16 var8) (and (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (and (= var2 (newHeap (alloc var12 (O_node var9)))) (= var4 var10)) (= var7 var0)) (= var6 var15)) (= var3 var13)) (= var5 var16)) (= var1 var8)) (= var14 var13)) (= var11 (newAddr (alloc var12 (O_node var9)))))) (<= 0 (+ (+ var15 (- 1)) (- 1)))))) (inv_main28 var2 var4 var7 var6 var3 var5 var1 var14 var11)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap)) (or (not (and (inv_main71 var7 var2 var1 var5 var9 var4) (and (not (= var8 var6)) (and (and (and (and (and (and (= var12 var7) (= var11 var2)) (= var0 var1)) (= var6 var5)) (= var10 var9)) (= var3 var4)) (= var8 (next (getnode (read var7 var9)))))))) (inv_main68 var12 var11 var0 var6 var8 (+ var3 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int)) (or (not (and (inv_main66 var11 var8 var0 var9 var6 var5 var10 var3) (and (and (and (and (and (= var7 (write var11 var10 (O_node (node var9 (data (getnode (read var11 var10))))))) (= var1 var8)) (= var13 var0)) (= var12 var9)) (= var4 var6)) (= var2 var5)))) (inv_main68 var7 var1 var13 var12 var12 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Heap)) (or (not (and (inv_main58 var11 var7 var0 var9 var6 var5 var10) (and (and (and (and (and (and (= var13 (write var11 var10 (O_node (node var10 (data (getnode (read var11 var10))))))) (= var4 var7)) (= var12 var0)) (= var8 var9)) (= var3 var6)) (= var2 var5)) (= var1 var10)))) (inv_main68 var13 var4 var12 var1 var1 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (or (not (inv_main62 var5 var2 var1 var3 var0 var7 var4 var6)) (inv_main66 (write var5 var6 (O_node (node var4 (data (getnode (read var5 var6)))))) var2 var1 var3 var0 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6)) (inv_main34 (write var2 var6 (O_node (node nullAddr (data (getnode (read var2 var6)))))) var1 var0 var7 var3 var8 var5 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)) (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 node) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var5 var2 var0) (and (= nullAddr var3) (and (and (and (and (and (and (= var1 (newHeap (alloc var5 (O_node var7)))) (= var10 var2)) (= var4 var0)) (= var9 var2)) (= var6 var0)) (= var8 var0)) (= var3 (newAddr (alloc var5 (O_node var7)))))))) (inv_main15 var1 var10 var4 var9 var6 var8 var3 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main55 var13 var10 var1 var11 var9 var8 var3 var4) (and (= nullAddr var2) (and (and (and (and (and (and (and (= var6 (write var13 var4 (O_node (node (next (getnode (read var13 var4))) var3)))) (= var7 var10)) (= var0 var1)) (= var2 var11)) (= var12 var9)) (= var14 var8)) (= var5 var3)) (= var15 var4))))) (inv_main58 var6 var7 var0 var2 var12 var14 var15)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int)) (or (not (and (inv_main71 var7 var2 var1 var5 var9 var4) (and (not (= nullAddr var6)) (and (= (+ var3 1) (+ 1 var12)) (and (= var8 var6) (and (and (and (and (and (and (= var11 var7) (= var12 var2)) (= var0 var1)) (= var6 var5)) (= var10 var9)) (= var3 var4)) (= var8 (next (getnode (read var7 var9)))))))))) (inv_main83 var11 var12 var0 var6 var8 (+ var3 1) var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr)) (or (not (and (inv_main61 var12 var9 var1 var10 var6 var5 var11 var3) (and (not (= var4 var2)) (and (and (and (and (and (and (and (and (= var15 var12) (= var8 var9)) (= var7 var1)) (= var2 var10)) (= var14 var6)) (= var13 var5)) (= var0 var11)) (= var16 var3)) (= var4 (next (getnode (read var12 var3)))))))) (inv_main63 var15 var8 var7 var2 var14 var13 var0 var16)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main34 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main36 var2 var1 var0 var6 var3 var7 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main22 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main49 var6 var2 var1 var3 var0 var7 var4 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main55 var6 var2 var1 var3 var0 var7 var4 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (not (and (inv_main58 var5 var2 var1 var3 var0 var6 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main61 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main63 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main62 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main66 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main68 var4 var1 var0 var3 var5 var2) (not (is-O_node (read var4 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main71 var4 var1 var0 var3 var5 var2) (not (is-O_node (read var4 var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr)) (not (and (inv_main83 var5 var2 var0 var4 var6 var3 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (not (and (inv_main87 var6 var2 var0 var5 var7 var4 var1 var3) (not (is-O_node (read var6 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr)) (not (inv_main90 var4 var1 var0 var3 var5 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2c_insert_equal.i.smt2 b/heap-theory-benchmarks/heap/sll2c_insert_equal.i.smt2 new file mode 100644 index 00000000..427cf9e9 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2c_insert_equal.i.smt2 @@ -0,0 +1,99 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Int Int Addr Int) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main69 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main70 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main73 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main88 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main92 (Heap Int Int Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main95 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 node) (var9 Heap) (var10 Int)) (or (not (and (inv_main4 var3 var2 var0) (and (not (= nullAddr var5)) (and (and (and (and (and (and (= var9 (newHeap (alloc var3 (O_node var8)))) (= var6 var2)) (= var10 var0)) (= var1 var2)) (= var4 var0)) (= var7 var0)) (= var5 (newAddr (alloc var3 (O_node var8)))))))) (inv_main12 var9 var6 var10 var1 var4 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr)) (or (not (and (inv_main34 var10 var8 var1 var16 var11 var17 var6 var5 var15) (and (and (and (and (and (and (and (and (= var14 (write var10 var15 (O_node (node (next (getnode (read var10 var15))) var5)))) (= var9 var8)) (= var7 var1)) (= var13 var16)) (= var0 var11)) (= var2 var17)) (= var12 var6)) (= var4 var5)) (= var3 var15)))) (inv_main36 var14 var9 var7 var13 var0 var2 var12 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int)) (or (not (inv_main52 var7 var3 var0 var5 var4 var1 var2 var6 var8 var9)) (inv_main52 var7 var3 var0 var5 var4 var1 var2 var6 var8 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 node) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Heap) (var20 Addr) (var21 Int) (var22 Addr) (var23 Int) (var24 Heap) (var25 Int) (var26 Addr) (var27 Heap) (var28 Int) (var29 Int) (var30 Addr) (var31 Int)) (or (not (and (inv_main22 var27 var23 var0 var11 var28 var30 var5) (and (and (and (= nullAddr var22) (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var19 (O_node var12)))) (= var18 var16)) (= var2 var17)) (= var15 var26)) (= var14 var21)) (= var13 var10)) (= var3 var8)) (= var4 var10)) (= var22 (newAddr (alloc var19 (O_node var12)))))) (and (and (and (and (and (and (= var19 var24) (= var16 var6)) (= var17 var25)) (= var26 var7)) (= var21 3)) (= var10 var25)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var6 (* (- 2) var31)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var6 (* (- 2) var31)))) (- 1)))) (or (not (<= 0 (+ (+ var6 (* (- 2) var31)) (- 1)))) (<= 0 (+ var6 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var6 (* (- 2) var31))) (- 1)))) (<= 0 (+ (* (- 1) var6) (- 1))))) (= var8 var31)))) (and (and (and (and (and (and (= var24 (write var27 var5 (O_node (node var30 (data (getnode (read var27 var5))))))) (= var6 var23)) (= var25 var0)) (= var29 var11)) (= var9 var28)) (= var7 var30)) (= var20 var5))))) (inv_main52 var1 var18 var2 var15 var14 var13 var3 var4 var22 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main21 var2 var1 var0 var5 var3 var6 var4) (not (<= 0 (+ (+ var5 (- 1)) (- 1)))))) (inv_main22 var2 var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var2 var1 var0 var5 var3 var6 var4)) (inv_main18 (write var2 var4 (O_node (node nullAddr (data (getnode (read var2 var4)))))) var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (and (inv_main73 var5 var1 var0 var2 var4 var3) (= var0 (data (getnode (read var5 var4)))))) (inv_main76 var5 var1 var0 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)) (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 node) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main21 var11 var9 var0 var15 var12 var16 var6) (and (and (= nullAddr var5) (and (and (and (and (and (and (and (and (= var4 (newHeap (alloc var11 (O_node var7)))) (= var10 var9)) (= var1 var0)) (= var13 var15)) (= var8 var12)) (= var14 var16)) (= var2 var6)) (= var3 var12)) (= var5 (newAddr (alloc var11 (O_node var7)))))) (<= 0 (+ (+ var15 (- 1)) (- 1)))))) (inv_main31 var4 var10 var1 var13 var8 var14 var2 var3 var5 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main88 var11 var8 var0 var9 var5 var4 var7) (and (not (= var13 var3)) (and (and (and (and (and (and (and (= var10 var11) (= var6 var8)) (= var2 var0)) (= var14 var9)) (= var12 var5)) (= var1 var4)) (= var3 var7)) (= var13 (next (getnode (read var11 var7)))))))) (inv_main92 var10 var6 var2 var14 var12 var1 var3 var13)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int) (var21 Int) (var22 Int) (var23 Addr) (var24 Heap) (var25 Addr)) (or (not (and (inv_main92 var19 var16 var1 var17 var5 var4 var13 var15) (and (not (= var11 var9)) (and (and (and (and (and (and (and (and (and (= var24 var19) (= var2 var16)) (= var22 var1)) (= var3 var17)) (= var10 var5)) (= var21 var4)) (= var12 var13)) (= var6 var15)) (= var23 (next (getnode (read var19 var15))))) (and (and (and (and (and (and (and (and (= var7 (write var24 var6 defObj)) (= var20 var2)) (= var0 var22)) (= var18 var3)) (= var8 var10)) (= var14 var21)) (= var9 var12)) (= var25 var6)) (= var11 var23)))))) (inv_main92 var7 var20 var0 var18 var8 var14 var9 var11)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main59 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (and (not (= var7 nullAddr)) (not (<= 0 (+ var2 (- 1))))))) (inv_main65 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main59 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (and (= var5 nullAddr) (and (= var7 nullAddr) (not (<= 0 (+ var2 (- 1)))))))) (inv_main70 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main59 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (and (not (= var5 nullAddr)) (and (= var7 nullAddr) (not (<= 0 (+ var2 (- 1)))))))) (inv_main69 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (inv_main65 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8)) (inv_main67 (write var6 var7 (O_node (node var9 (data (getnode (read var6 var7)))))) var3 var0 var5 var4 var1 var2 var9 var7 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main76 var7 var2 var0 var3 var6 var5) (and (not (= nullAddr var12)) (and (= (+ var10 1) (+ 1 var11)) (and (= var9 var12) (and (and (and (and (and (and (= var1 var7) (= var11 var2)) (= var8 var0)) (= var12 var3)) (= var4 var6)) (= var10 var5)) (= var9 (next (getnode (read var7 var6)))))))))) (inv_main88 var1 var11 var8 var12 var9 (+ var10 1) var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (inv_main69 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8)) (inv_main71 (write var6 var9 (O_node (node var5 (data (getnode (read var6 var9)))))) var3 var0 var5 var4 var1 var2 var9 var7 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main59 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (<= 0 (+ var2 (- 1))))) (inv_main62 var6 var3 var0 var5 var4 var1 var2 var9 var8 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Int)) (or (not (and (inv_main62 var15 var13 var0 var14 var3 var1 var2 var12 var10 var17) (and (and (and (and (and (and (and (and (and (and (= var4 var15) (= var6 var13)) (= var20 var0)) (= var16 var14)) (= var18 var3)) (= var11 var1)) (= var8 var2)) (= var7 var12)) (= var19 var10)) (= var9 var17)) (= var5 (next (getnode (read var15 var17))))))) (inv_main59 var4 var6 var20 var16 var18 var11 (+ var8 (- 1)) var7 var19 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Heap) (var23 Int) (var24 Int) (var25 Heap) (var26 Int)) (or (not (and (inv_main55 var17 var12 var1 var14 var5 var2 var3 var15 var18) (and (and (and (and (and (and (and (and (and (= var22 var25) (= var11 var10)) (= var24 var4)) (= var9 var6)) (= var0 var26)) (= var16 var23)) (= var13 var7)) (= var8 var19)) (= var21 nullAddr)) (and (and (and (and (and (and (and (and (= var25 (write var17 var18 (O_node (node (next (getnode (read var17 var18))) var15)))) (= var10 var12)) (= var4 var1)) (= var6 var14)) (= var26 var5)) (= var23 var2)) (= var7 var3)) (= var20 var15)) (= var19 var18))))) (inv_main59 var22 var11 var24 var9 var0 var16 var13 var8 var21 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (and (inv_main73 var5 var1 var0 var2 var4 var3) (not (= var0 (data (getnode (read var5 var4))))))) (inv_main95 var5 var1 var0 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main76 var7 var2 var0 var3 var6 var5) (and (not (= (+ var10 1) (+ 1 var11))) (and (= var9 var12) (and (and (and (and (and (and (= var1 var7) (= var11 var2)) (= var8 var0)) (= var12 var3)) (= var4 var6)) (= var10 var5)) (= var9 (next (getnode (read var7 var6))))))))) (inv_main95 var1 var11 var8 var12 var9 (+ var10 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr)) (or (not (and (inv_main36 var10 var7 var0 var13 var11 var14 var3 var2) (and (and (and (and (and (and (and (= var9 (write var10 var2 (O_node (node var14 (data (getnode (read var10 var2))))))) (= var12 var7)) (= var1 var0)) (= var4 var13)) (= var8 var11)) (= var15 var14)) (= var5 var3)) (= var6 var2)))) (inv_main21 var9 var12 var1 (+ var4 (- 1)) var8 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Heap) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var10 var8 var0 var13 var11 var6 var5) (and (and (and (and (and (and (= var9 (write var10 var5 (O_node (node (next (getnode (read var10 var5))) var6)))) (= var12 var8)) (= var3 var0)) (= var7 var13)) (= var4 var11)) (= var1 var6)) (= var2 var5)))) (inv_main21 var9 var12 var3 var7 var4 var2 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 node) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 Heap) (var22 Heap) (var23 Int) (var24 Addr) (var25 Heap) (var26 Int) (var27 Heap) (var28 Int) (var29 Int) (var30 Addr) (var31 Int)) (or (not (and (inv_main22 var25 var20 var0 var6 var26 var30 var1) (and (and (and (not (= nullAddr var14)) (and (and (and (and (and (and (and (and (= var22 (newHeap (alloc var27 (O_node var7)))) (= var10 var28)) (= var5 var19)) (= var8 var24)) (= var9 var12)) (= var11 var15)) (= var18 var17)) (= var13 var15)) (= var14 (newAddr (alloc var27 (O_node var7)))))) (and (and (and (and (and (and (= var27 var21) (= var28 var2)) (= var19 var23)) (= var24 var3)) (= var12 3)) (= var15 var23)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var2 (* (- 2) var31)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var2 (* (- 2) var31)))) (- 1)))) (or (not (<= 0 (+ (+ var2 (* (- 2) var31)) (- 1)))) (<= 0 (+ var2 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var2 (* (- 2) var31))) (- 1)))) (<= 0 (+ (* (- 1) var2) (- 1))))) (= var17 var31)))) (and (and (and (and (and (and (= var21 (write var25 var1 (O_node (node var30 (data (getnode (read var25 var1))))))) (= var2 var20)) (= var23 var0)) (= var29 var6)) (= var4 var26)) (= var3 var30)) (= var16 var1))))) (inv_main49 var22 var10 var5 var8 var9 var11 var18 var13 var14)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main76 var7 var2 var0 var3 var6 var5) (and (not (= var9 var12)) (and (and (and (and (and (and (= var1 var7) (= var11 var2)) (= var8 var0)) (= var12 var3)) (= var4 var6)) (= var10 var5)) (= var9 (next (getnode (read var7 var6)))))))) (inv_main73 var1 var11 var8 var12 var9 (+ var10 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main67 var13 var11 var1 var12 var4 var2 var3 var9 var7 var15) (and (and (and (and (and (and (= var6 (write var13 var9 (O_node (node var15 (data (getnode (read var13 var9))))))) (= var0 var11)) (= var16 var1)) (= var14 var12)) (= var8 var4)) (= var5 var2)) (= var10 var3)))) (inv_main73 var6 var0 var16 var14 var14 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr) (var14 Heap) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr)) (or (not (and (inv_main71 var14 var12 var1 var13 var5 var2 var3 var9 var6 var16) (and (and (and (and (and (and (and (and (and (= var11 (write var14 var13 (O_node (node var9 (data (getnode (read var14 var13))))))) (= var10 var12)) (= var4 var1)) (= var8 var13)) (= var15 var5)) (= var0 var2)) (= var18 var3)) (= var17 var9)) (= var7 var6)) (= var19 var16)))) (inv_main73 var11 var10 var4 var17 var17 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Heap) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int)) (or (not (and (inv_main70 var15 var12 var1 var14 var5 var2 var3 var10 var7 var18) (and (and (and (and (and (and (and (and (and (= var9 (write var15 var10 (O_node (node var10 (data (getnode (read var15 var10))))))) (= var13 var12)) (= var8 var1)) (= var17 var14)) (= var6 var5)) (= var19 var2)) (= var16 var3)) (= var4 var10)) (= var11 var7)) (= var0 var18)))) (inv_main73 var9 var13 var8 var4 var4 0)))) +(assert (forall ((var0 node) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main21 var12 var8 var1 var15 var13 var16 var6) (and (and (not (= nullAddr var2)) (and (and (and (and (and (and (and (and (= var3 (newHeap (alloc var12 (O_node var0)))) (= var7 var8)) (= var4 var1)) (= var11 var15)) (= var10 var13)) (= var14 var16)) (= var5 var6)) (= var9 var13)) (= var2 (newAddr (alloc var12 (O_node var0)))))) (<= 0 (+ (+ var15 (- 1)) (- 1)))))) (inv_main28 var3 var7 var4 var11 var10 var14 var5 var9 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6)) (inv_main34 (write var2 var6 (O_node (node nullAddr (data (getnode (read var2 var6)))))) var1 var0 var7 var3 var8 var5 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)) (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 node) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var3 var1 var0) (and (= nullAddr var7) (and (and (and (and (and (and (= var5 (newHeap (alloc var3 (O_node var8)))) (= var4 var1)) (= var10 var0)) (= var9 var1)) (= var2 var0)) (= var6 var0)) (= var7 (newAddr (alloc var3 (O_node var8)))))))) (inv_main15 var5 var4 var10 var9 var2 var6 var7 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (inv_main49 var7 var3 var0 var5 var4 var1 var2 var6 var8)) (inv_main55 (write var7 var8 (O_node (node nullAddr (data (getnode (read var7 var8)))))) var3 var0 var5 var4 var1 var2 var6 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main34 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main36 var2 var1 var0 var6 var3 var7 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main22 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (not (and (inv_main49 var7 var3 var0 var5 var4 var1 var2 var6 var8) (not (is-O_node (read var7 var8))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (not (and (inv_main55 var7 var3 var0 var5 var4 var1 var2 var6 var8) (not (is-O_node (read var7 var8))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main62 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (not (is-O_node (read var6 var8))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main65 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (not (is-O_node (read var6 var7))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main67 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (not (is-O_node (read var6 var9))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main69 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (not (is-O_node (read var6 var9))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main71 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr)) (not (and (inv_main70 var6 var3 var0 var5 var4 var1 var2 var9 var7 var8) (not (is-O_node (read var6 var9))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main73 var5 var1 var0 var2 var4 var3) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main76 var5 var1 var0 var2 var4 var3) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr)) (not (and (inv_main88 var5 var1 var0 var2 var4 var3 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr)) (not (and (inv_main92 var6 var2 var1 var3 var5 var4 var7 var0) (not (is-O_node (read var6 var0))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (not (inv_main95 var5 var1 var0 var2 var4 var3)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2c_insert_unequal.i.smt2 b/heap-theory-benchmarks/heap/sll2c_insert_unequal.i.smt2 new file mode 100644 index 00000000..6d766f85 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2c_insert_unequal.i.smt2 @@ -0,0 +1,114 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (data Int)) + ) +)) +(declare-fun inv_main103 (Heap Int Int Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main107 (Heap Int Int Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main110 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Int Int Int Int Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Int Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main57 (Heap Int Int Addr Int Int Int Int Int Int Addr) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main64 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main69 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main73 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main75 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main78 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main83 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main88 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main91 (Heap Int Int Addr Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 node) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr)) (or (not (and (inv_main4 var4 var1 var0) (and (not (= nullAddr var10)) (and (and (and (and (and (and (= var9 (newHeap (alloc var4 (O_node var6)))) (= var8 var1)) (= var2 var0)) (= var5 var1)) (= var3 var0)) (= var7 var0)) (= var10 (newAddr (alloc var4 (O_node var6)))))))) (inv_main12 var9 var8 var2 var5 var3 var7 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr)) (or (not (and (inv_main34 var12 var10 var0 var16 var13 var17 var6 var4 var15) (and (and (and (and (and (and (and (and (= var8 (write var12 var15 (O_node (node (next (getnode (read var12 var15))) var4)))) (= var9 var10)) (= var11 var0)) (= var14 var16)) (= var3 var13)) (= var7 var17)) (= var5 var6)) (= var1 var4)) (= var2 var15)))) (inv_main36 var8 var9 var11 var14 var3 var7 var5 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int)) (or (not (and (inv_main78 var11 var7 var1 var8 var16 var5 var10 var2) (and (and (not (= var3 var15)) (not (= (+ var9 1) var0))) (and (and (and (and (and (and (and (and (= var14 var11) (= var13 var7)) (= var6 var1)) (= var15 var8)) (= var4 var16)) (= var0 var5)) (= var12 var10)) (= var9 var2)) (= var3 (next (getnode (read var11 var10)))))))) (inv_main75 var14 var13 var6 var15 var4 var0 var3 (+ var9 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Heap) (var15 Heap) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int) (var20 Int)) (or (not (and (inv_main69 var14 var12 var0 var13 var20 var4 var16 var19 var10 var18 var17 var6) (and (and (and (and (and (and (and (and (= var15 (write var14 var18 (O_node (node var6 (data (getnode (read var14 var18))))))) (= var11 var12)) (= var9 var0)) (= var3 var13)) (= var7 var20)) (= var2 var4)) (= var5 var16)) (= var1 var19)) (= var8 var10)))) (inv_main75 var15 var11 var9 var3 var7 var2 var3 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Int)) (or (not (and (inv_main73 var14 var9 var1 var11 var23 var3 var18 var22 var6 var20 var19 var4) (and (and (and (and (and (and (and (and (and (and (and (= var2 (write var14 var11 (O_node (node var20 (data (getnode (read var14 var11))))))) (= var10 var9)) (= var8 var1)) (= var17 var11)) (= var0 var23)) (= var21 var3)) (= var5 var18)) (= var15 var22)) (= var13 var6)) (= var7 var20)) (= var16 var19)) (= var12 var4)))) (inv_main75 var2 var10 var8 var7 var0 var21 var7 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int) (var23 Int)) (or (not (and (inv_main72 var15 var12 var1 var13 var23 var3 var18 var22 var8 var21 var20 var6) (and (and (and (and (and (and (and (and (and (and (and (= var9 (write var15 var21 (O_node (node var21 (data (getnode (read var15 var21))))))) (= var7 var12)) (= var10 var1)) (= var16 var13)) (= var14 var23)) (= var11 var3)) (= var17 var18)) (= var0 var22)) (= var2 var8)) (= var19 var21)) (= var5 var20)) (= var4 var6)))) (inv_main75 var9 var7 var10 var19 var14 var11 var19 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main83 var10 var6 var0 var7 var16 var4 var9 var1) (and (and (and (and (and (and (and (and (= var2 var10) (= var3 var6)) (= var11 var0)) (= var13 var7)) (= var8 var16)) (= var5 var4)) (= var12 var9)) (= var14 var1)) (= var15 (next (getnode (read var10 var9))))))) (inv_main88 var2 var3 var11 var13 var8 var5 var15 (+ var14 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main91 var11 var8 var0 var9 var16 var4 var10 var1) (and (not (= var14 var7)) (and (and (and (and (and (and (and (and (= var13 var11) (= var12 var8)) (= var5 var0)) (= var7 var9)) (= var2 var16)) (= var15 var4)) (= var3 var10)) (= var6 var1)) (= var14 (next (getnode (read var11 var10)))))))) (inv_main88 var13 var12 var5 var7 var2 var15 var14 (+ var6 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (or (not (inv_main54 var5 var2 var1 var3 var11 var4 var8 var10 var9 var0 var6 var7)) (inv_main54 var5 var2 var1 var3 var11 var4 var8 var10 var9 var0 var6 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 node) (var16 Addr) (var17 Int) (var18 Heap) (var19 Int) (var20 Int) (var21 Addr) (var22 Int) (var23 Heap) (var24 Int) (var25 Int) (var26 Heap) (var27 Int) (var28 Int) (var29 Addr) (var30 Int) (var31 Addr) (var32 Int)) (or (not (and (inv_main22 var26 var22 var0 var8 var27 var29 var4) (and (and (and (= nullAddr var31) (and (and (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var18 (O_node var15)))) (= var17 var10)) (= var24 var30)) (= var16 var2)) (= var13 var9)) (= var20 var1)) (= var3 3)) (= var19 var9)) (= var12 var1)) (= var5 var9)) (= var31 (newAddr (alloc var18 (O_node var15)))))) (and (and (and (and (and (= var18 var23) (= var10 var14)) (= var30 var28)) (= var2 var21)) (= var9 5)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var14 (* (- 2) var32)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var14 (* (- 2) var32)))) (- 1)))) (or (not (<= 0 (+ (+ var14 (* (- 2) var32)) (- 1)))) (<= 0 (+ var14 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var14 (* (- 2) var32))) (- 1)))) (<= 0 (+ (* (- 1) var14) (- 1))))) (= var1 var32)))) (and (and (and (and (and (and (= var23 (write var26 var4 (O_node (node var29 (data (getnode (read var26 var4))))))) (= var14 var22)) (= var28 var0)) (= var25 var8)) (= var6 var27)) (= var21 var29)) (= var7 var4))))) (inv_main54 var11 var17 var24 var16 var13 var20 var3 var19 var12 var5 var31 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main21 var2 var1 var0 var5 var3 var6 var4) (not (<= 0 (+ (+ var5 (- 1)) (- 1)))))) (inv_main22 var2 var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (or (not (and (inv_main61 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (and (= var2 nullAddr) (and (= var7 nullAddr) (not (<= 0 (+ var8 (- 1)))))))) (inv_main72 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var2 var1 var0 var5 var3 var6 var4)) (inv_main18 (write var2 var4 (O_node (node nullAddr (data (getnode (read var2 var4)))))) var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int)) (or (not (and (inv_main78 var11 var7 var1 var8 var16 var5 var10 var2) (and (or (= var3 var15) (= (+ var9 1) var0)) (and (and (and (and (and (and (and (and (= var14 var11) (= var13 var7)) (= var6 var1)) (= var15 var8)) (= var4 var16)) (= var0 var5)) (= var12 var10)) (= var9 var2)) (= var3 (next (getnode (read var11 var10)))))))) (inv_main76 var14 var13 var6 var15 var4 var0 var3 (+ var9 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)) (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 node) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main21 var11 var10 var0 var14 var12 var15 var8) (and (and (= nullAddr var16) (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var11 (O_node var7)))) (= var13 var10)) (= var9 var0)) (= var1 var14)) (= var2 var12)) (= var4 var15)) (= var3 var8)) (= var5 var12)) (= var16 (newAddr (alloc var11 (O_node var7)))))) (<= 0 (+ (+ var14 (- 1)) (- 1)))))) (inv_main31 var6 var13 var9 var1 var2 var4 var3 var5 var16 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (or (not (inv_main67 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)) (inv_main69 (write var4 var7 (O_node (node var9 (data (getnode (read var4 var7)))))) var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (or (not (and (inv_main61 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (and (not (= var2 nullAddr)) (and (= var7 nullAddr) (not (<= 0 (+ var8 (- 1)))))))) (inv_main71 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main75 var6 var2 var0 var3 var7 var4 var5 var1) (not (= var0 (data (getnode (read var6 var5))))))) (inv_main110 var6 var2 var0 var3 var7 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main76 var6 var2 var0 var3 var7 var4 var5 var1) (not (= var7 (data (getnode (read var6 var5))))))) (inv_main110 var6 var2 var0 var3 var7 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main88 var6 var2 var0 var3 var7 var4 var5 var1) (not (= var0 (data (getnode (read var6 var5))))))) (inv_main110 var6 var2 var0 var3 var7 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main91 var11 var8 var0 var9 var16 var4 var10 var1) (and (not (= (+ var6 1) (+ 1 var12))) (and (= var14 var7) (and (and (and (and (and (and (and (and (= var13 var11) (= var12 var8)) (= var5 var0)) (= var7 var9)) (= var2 var16)) (= var15 var4)) (= var3 var10)) (= var6 var1)) (= var14 (next (getnode (read var11 var10))))))))) (inv_main110 var13 var12 var5 var7 var2 var15 var14 (+ var6 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Heap) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Addr) (var23 Int) (var24 Int)) (or (not (and (inv_main64 var15 var13 var1 var14 var24 var5 var17 var23 var10 var22 var20 var6) (and (and (and (and (and (and (and (and (and (and (and (and (= var4 var15) (= var19 var13)) (= var12 var1)) (= var11 var14)) (= var3 var24)) (= var18 var5)) (= var16 var17)) (= var0 var23)) (= var21 var10)) (= var9 var22)) (= var7 var20)) (= var8 var6)) (= var2 (next (getnode (read var15 var6))))))) (inv_main61 var4 var19 var12 var11 var3 var18 var16 var0 (+ var21 (- 1)) var9 var7 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 Int) (var22 Int) (var23 Int) (var24 Int) (var25 Int) (var26 Heap) (var27 Int) (var28 Heap) (var29 Heap) (var30 Addr) (var31 Int) (var32 Int)) (or (not (and (inv_main57 var26 var24 var1 var9 var32 var4 var16 var31 var8 var0 var11) (and (and (and (and (and (and (and (and (and (and (and (= var28 var29) (= var5 var27)) (= var6 var21)) (= var2 var13)) (= var25 var14)) (= var20 var23)) (= var18 var15)) (= var3 var17)) (= var19 var10)) (= var12 var30)) (= var7 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var29 (write var26 var11 (O_node (node (next (getnode (read var26 var11))) var0)))) (= var27 var24)) (= var21 var1)) (= var13 var9)) (= var14 var32)) (= var23 var4)) (= var15 var16)) (= var17 var31)) (= var10 var8)) (= var22 var0)) (= var30 var11))))) (inv_main61 var28 var5 var6 var2 var25 var20 var18 var3 var19 var12 var7 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap) (var14 Heap) (var15 Int) (var16 Int) (var17 Int) (var18 node) (var19 Int) (var20 Int) (var21 Int) (var22 Int) (var23 Addr) (var24 Int) (var25 Heap) (var26 Int) (var27 Int) (var28 Heap) (var29 Int) (var30 Int) (var31 Addr) (var32 Int)) (or (not (and (inv_main22 var28 var24 var0 var11 var29 var31 var2) (and (and (and (not (= nullAddr var5)) (and (and (and (and (and (and (and (and (and (and (= var14 (newHeap (alloc var13 (O_node var18)))) (= var3 var20)) (= var16 var15)) (= var10 var9)) (= var1 var7)) (= var22 var4)) (= var19 3)) (= var27 var7)) (= var6 var4)) (= var21 var7)) (= var5 (newAddr (alloc var13 (O_node var18)))))) (and (and (and (and (and (= var13 var25) (= var20 var17)) (= var15 var30)) (= var9 var23)) (= var7 5)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var17 (* (- 2) var32)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var17 (* (- 2) var32)))) (- 1)))) (or (not (<= 0 (+ (+ var17 (* (- 2) var32)) (- 1)))) (<= 0 (+ var17 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var17 (* (- 2) var32))) (- 1)))) (<= 0 (+ (* (- 1) var17) (- 1))))) (= var4 var32)))) (and (and (and (and (and (and (= var25 (write var28 var2 (O_node (node var31 (data (getnode (read var28 var2))))))) (= var17 var24)) (= var30 var0)) (= var26 var11)) (= var8 var29)) (= var23 var31)) (= var12 var2))))) (inv_main51 var14 var3 var16 var10 var1 var22 var19 var27 var6 var21 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main75 var6 var2 var0 var3 var7 var4 var5 var1) (= var0 (data (getnode (read var6 var5)))))) (inv_main78 var6 var2 var0 var3 var7 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (or (not (and (inv_main61 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (<= 0 (+ var8 (- 1))))) (inv_main64 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var5 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr)) (or (not (and (inv_main36 var9 var8 var0 var13 var10 var14 var7 var6) (and (and (and (and (and (and (and (= var1 (write var9 var6 (O_node (node var14 (data (getnode (read var9 var6))))))) (= var3 var8)) (= var12 var0)) (= var11 var13)) (= var5 var10)) (= var15 var14)) (= var2 var7)) (= var4 var6)))) (inv_main21 var1 var3 var12 (+ var11 (- 1)) var5 var4 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var9 var7 var0 var12 var10 var5 var3) (and (and (and (and (and (and (= var6 (write var9 var3 (O_node (node (next (getnode (read var9 var3))) var5)))) (= var1 var7)) (= var8 var0)) (= var4 var12)) (= var2 var10)) (= var13 var5)) (= var11 var3)))) (inv_main21 var6 var1 var8 var4 var2 var11 var11)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main91 var11 var8 var0 var9 var16 var4 var10 var1) (and (not (= nullAddr var7)) (and (= (+ var6 1) (+ 1 var12)) (and (= var14 var7) (and (and (and (and (and (and (and (and (= var13 var11) (= var12 var8)) (= var5 var0)) (= var7 var9)) (= var2 var16)) (= var15 var4)) (= var3 var10)) (= var6 var1)) (= var14 (next (getnode (read var11 var10)))))))))) (inv_main103 var13 var12 var5 var7 var2 var15 var14 (+ var6 1) var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main88 var6 var2 var0 var3 var7 var4 var5 var1) (= var0 (data (getnode (read var6 var5)))))) (inv_main91 var6 var2 var0 var3 var7 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (or (not (inv_main71 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)) (inv_main73 (write var4 var9 (O_node (node var2 (data (getnode (read var4 var9)))))) var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (or (not (inv_main51 var5 var2 var1 var3 var10 var4 var7 var9 var8 var0 var6)) (inv_main57 (write var5 var6 (O_node (node nullAddr (data (getnode (read var5 var6)))))) var2 var1 var3 var10 var4 var7 var9 var8 var0 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 node) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main21 var11 var10 var0 var14 var12 var15 var7) (and (and (not (= nullAddr var4)) (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var11 (O_node var6)))) (= var16 var10)) (= var13 var0)) (= var2 var14)) (= var8 var12)) (= var5 var15)) (= var3 var7)) (= var1 var12)) (= var4 (newAddr (alloc var11 (O_node var6)))))) (<= 0 (+ (+ var14 (- 1)) (- 1)))))) (inv_main28 var9 var16 var13 var2 var8 var5 var3 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6)) (inv_main34 (write var2 var6 (O_node (node nullAddr (data (getnode (read var2 var6)))))) var1 var0 var7 var3 var8 var5 var4 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main103 var14 var8 var0 var11 var18 var3 var13 var2 var10) (and (not (= var1 var12)) (and (and (and (and (and (and (and (and (and (= var6 var14) (= var4 var8)) (= var17 var0)) (= var7 var11)) (= var5 var18)) (= var16 var3)) (= var9 var13)) (= var15 var2)) (= var12 var10)) (= var1 (next (getnode (read var14 var10)))))))) (inv_main107 var6 var4 var17 var7 var5 var16 var9 var15 var12 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Int) (var26 Int) (var27 Heap) (var28 Heap) (var29 Heap) (var30 Int) (var31 Int)) (or (not (and (inv_main107 var28 var25 var1 var11 var31 var4 var13 var2 var10 var5) (and (not (= var16 var3)) (and (and (and (and (and (and (and (and (and (and (and (= var29 var28) (= var14 var25)) (= var30 var1)) (= var12 var11)) (= var6 var31)) (= var8 var4)) (= var7 var13)) (= var24 var2)) (= var0 var10)) (= var21 var5)) (= var20 (next (getnode (read var28 var5))))) (and (and (and (and (and (and (and (and (and (and (= var27 (write var29 var21 defObj)) (= var15 var14)) (= var17 var30)) (= var22 var12)) (= var26 var6)) (= var9 var8)) (= var19 var7)) (= var18 var24)) (= var3 var0)) (= var23 var21)) (= var16 var20)))))) (inv_main107 var27 var15 var17 var22 var26 var9 var19 var18 var3 var16)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)) (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Heap) (var7 Int) (var8 Addr) (var9 node) (var10 Int)) (or (not (and (inv_main4 var5 var2 var1) (and (= nullAddr var8) (and (and (and (and (and (and (= var6 (newHeap (alloc var5 (O_node var9)))) (= var4 var2)) (= var7 var1)) (= var0 var2)) (= var10 var1)) (= var3 var1)) (= var8 (newAddr (alloc var5 (O_node var9)))))))) (inv_main15 var6 var4 var7 var0 var10 var3 var8 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (or (not (and (inv_main61 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (and (not (= var7 nullAddr)) (not (<= 0 (+ var8 (- 1))))))) (inv_main67 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (and (inv_main76 var6 var2 var0 var3 var7 var4 var5 var1) (= var7 (data (getnode (read var6 var5)))))) (inv_main83 var6 var2 var0 var3 var7 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main34 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main36 var2 var1 var0 var6 var3 var7 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main22 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main51 var5 var2 var1 var3 var10 var4 var7 var9 var8 var0 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main57 var5 var2 var1 var3 var10 var4 var7 var9 var8 var0 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (not (and (inv_main64 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (not (is-O_node (read var4 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (not (and (inv_main67 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (not (is-O_node (read var4 var7))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (not (and (inv_main69 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (not (is-O_node (read var4 var9))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (not (and (inv_main71 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (not (is-O_node (read var4 var9))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (not (and (inv_main73 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int)) (not (and (inv_main72 var4 var1 var0 var2 var11 var3 var6 var10 var8 var9 var7 var5) (not (is-O_node (read var4 var9))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main75 var6 var2 var0 var3 var7 var4 var5 var1) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main78 var6 var2 var0 var3 var7 var4 var5 var1) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main76 var6 var2 var0 var3 var7 var4 var5 var1) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main83 var6 var2 var0 var3 var7 var4 var5 var1) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main88 var6 var2 var0 var3 var7 var4 var5 var1) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main91 var6 var2 var0 var3 var7 var4 var5 var1) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int)) (not (and (inv_main103 var7 var2 var0 var4 var8 var5 var6 var1 var3) (not (is-O_node (read var7 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int)) (not (and (inv_main107 var7 var2 var0 var4 var9 var5 var6 var1 var3 var8) (not (is-O_node (read var7 var8))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (inv_main110 var6 var2 var0 var3 var7 var4 var5 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2c_prepend_equal.i.smt2 b/heap-theory-benchmarks/heap/sll2c_prepend_equal.i.smt2 new file mode 100644 index 00000000..140ac1ec --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2c_prepend_equal.i.smt2 @@ -0,0 +1,93 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main60 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main63 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main67 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main69 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main84 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Int Int Addr Addr Int Addr Addr) Bool) +(declare-fun inv_main91 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 node)) (or (not (and (inv_main4 var7 var3 var1) (and (not (= nullAddr var9)) (and (and (and (and (and (and (= var2 (newHeap (alloc var7 (O_node var10)))) (= var6 var3)) (= var5 var1)) (= var8 var3)) (= var4 var1)) (= var0 var1)) (= var9 (newAddr (alloc var7 (O_node var10)))))))) (inv_main12 var2 var6 var5 var8 var4 var0 var9)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr)) (or (not (and (inv_main34 var10 var9 var0 var16 var11 var17 var5 var3 var15) (and (and (and (and (and (and (and (and (= var8 (write var10 var15 (O_node (node (next (getnode (read var10 var15))) var3)))) (= var2 var9)) (= var6 var0)) (= var7 var16)) (= var13 var11)) (= var4 var17)) (= var12 var5)) (= var14 var3)) (= var1 var15)))) (inv_main36 var8 var2 var6 var7 var13 var4 var12 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int)) (or (not (and (inv_main63 var15 var11 var0 var13 var8 var7 var14 var4) (and (and (and (and (and (and (and (and (= var10 var15) (= var1 var11)) (= var16 var0)) (= var5 var13)) (= var2 var8)) (= var3 var7)) (= var12 var14)) (= var6 var4)) (= var9 (next (getnode (read var15 var4))))))) (inv_main61 var10 var1 var16 var5 var2 var3 var12 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main55 var13 var9 var1 var11 var8 var7 var3 var4) (and (not (= nullAddr var12)) (and (and (and (and (and (and (and (= var6 (write var13 var4 (O_node (node (next (getnode (read var13 var4))) var3)))) (= var0 var9)) (= var2 var1)) (= var12 var11)) (= var14 var8)) (= var15 var7)) (= var10 var3)) (= var5 var4))))) (inv_main61 var6 var0 var2 var12 var14 var15 var5 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main21 var2 var1 var0 var5 var3 var6 var4) (not (<= 0 (+ (+ var5 (- 1)) (- 1)))))) (inv_main22 var2 var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var2 var1 var0 var5 var3 var6 var4)) (inv_main18 (write var2 var4 (O_node (node nullAddr (data (getnode (read var2 var4)))))) var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)) (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 node) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main21 var12 var10 var0 var15 var13 var16 var8) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (and (= var7 (newHeap (alloc var12 (O_node var6)))) (= var4 var10)) (= var9 var0)) (= var3 var15)) (= var11 var13)) (= var2 var16)) (= var1 var8)) (= var5 var13)) (= var14 (newAddr (alloc var12 (O_node var6)))))) (<= 0 (+ (+ var15 (- 1)) (- 1)))))) (inv_main31 var7 var4 var9 var3 var11 var2 var1 var5 var14 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (and (inv_main69 var4 var1 var0 var2 var3 var5) (= var0 (data (getnode (read var4 var3)))))) (inv_main72 var4 var1 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Int)) (or (not (and (inv_main62 var14 var11 var0 var12 var9 var8 var13 var5) (and (and (and (and (and (and (and (= var10 (write var14 var13 (O_node (node var12 (data (getnode (read var14 var13))))))) (= var3 var11)) (= var1 var0)) (= var6 var12)) (= var15 var9)) (= var7 var8)) (= var4 var13)) (= var2 var5)))) (inv_main67 var10 var3 var1 var4 var15 var7 var4 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main61 var13 var9 var0 var11 var8 var7 var12 var3) (and (= var15 var6) (and (and (and (and (and (and (and (and (= var1 var13) (= var5 var9)) (= var10 var0)) (= var6 var11)) (= var2 var8)) (= var4 var7)) (= var16 var12)) (= var14 var3)) (= var15 (next (getnode (read var13 var3)))))))) (inv_main62 var1 var5 var10 var6 var2 var4 var16 var14)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int)) (or (not (inv_main52 var6 var2 var1 var3 var0 var8 var4 var5 var7)) (inv_main52 var6 var2 var1 var3 var0 var8 var4 var5 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 node) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Heap) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Heap) (var22 Int)) (or (not (and (inv_main22 var13 var9 var0 var19 var14 var20 var5) (and (and (= nullAddr var7) (and (and (and (and (and (and (and (= var21 (newHeap (alloc var12 (O_node var6)))) (= var18 var1)) (= var15 var2)) (= var4 var16)) (= var11 3)) (= var3 var2)) (= var22 var2)) (= var7 (newAddr (alloc var12 (O_node var6)))))) (and (and (and (and (and (and (= var12 (write var13 var5 (O_node (node var20 (data (getnode (read var13 var5))))))) (= var1 var9)) (= var2 var0)) (= var10 var19)) (= var17 var14)) (= var16 var20)) (= var8 var5))))) (inv_main52 var21 var18 var15 var4 var11 var3 var22 var7 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Heap) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 node) (var20 Int) (var21 Addr) (var22 Heap)) (or (not (and (inv_main22 var12 var7 var0 var20 var13 var21 var3) (and (and (not (= nullAddr var18)) (and (and (and (and (and (and (and (= var22 (newHeap (alloc var11 (O_node var19)))) (= var10 var1)) (= var14 var2)) (= var16 var15)) (= var6 3)) (= var4 var2)) (= var8 var2)) (= var18 (newAddr (alloc var11 (O_node var19)))))) (and (and (and (and (and (and (= var11 (write var12 var3 (O_node (node var21 (data (getnode (read var12 var3))))))) (= var1 var7)) (= var2 var0)) (= var9 var20)) (= var17 var13)) (= var15 var21)) (= var5 var3))))) (inv_main49 var22 var10 var14 var16 var6 var4 var8 var18)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main55 var13 var9 var1 var11 var8 var7 var3 var4) (and (= nullAddr var12) (and (and (and (and (and (and (and (= var6 (write var13 var4 (O_node (node (next (getnode (read var13 var4))) var3)))) (= var0 var9)) (= var2 var1)) (= var12 var11)) (= var14 var8)) (= var15 var7)) (= var10 var3)) (= var5 var4))))) (inv_main60 var6 var0 var2 var5 var14 var15 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (or (not (inv_main49 var6 var2 var1 var3 var0 var7 var4 var5)) (inv_main55 (write var6 var5 (O_node (node nullAddr (data (getnode (read var6 var5)))))) var2 var1 var3 var0 var7 var4 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main72 var8 var3 var1 var5 var7 var9) (and (not (= var12 var4)) (and (and (and (and (and (and (= var0 var8) (= var6 var3)) (= var11 var1)) (= var4 var5)) (= var2 var7)) (= var10 var9)) (= var12 (next (getnode (read var8 var7)))))))) (inv_main69 var0 var6 var11 var4 var12 (+ var10 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int)) (or (not (and (inv_main60 var6 var2 var1 var3 var0 var12 var5) (and (and (and (and (and (= var11 (write var6 var5 (O_node (node var5 (data (getnode (read var6 var5))))))) (= var8 var2)) (= var10 var1)) (= var4 var3)) (= var7 var0)) (= var9 var12)))) (inv_main69 var11 var8 var10 var4 var4 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main67 var13 var10 var0 var11 var9 var8 var12 var5) (and (and (and (and (and (= var7 (write var13 var5 (O_node (node var12 (data (getnode (read var13 var5))))))) (= var3 var10)) (= var6 var0)) (= var2 var11)) (= var4 var9)) (= var1 var8)))) (inv_main69 var7 var3 var6 var2 var2 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Heap) (var13 Int) (var14 Int) (var15 Addr)) (or (not (and (inv_main36 var10 var8 var1 var14 var11 var15 var6 var5) (and (and (and (and (and (and (and (= var12 (write var10 var5 (O_node (node var15 (data (getnode (read var10 var5))))))) (= var13 var8)) (= var9 var1)) (= var0 var14)) (= var3 var11)) (= var4 var15)) (= var2 var6)) (= var7 var5)))) (inv_main21 var12 var13 var9 (+ var0 (- 1)) var3 var7 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var8 var7 var0 var12 var9 var6 var4) (and (and (and (and (and (and (= var1 (write var8 var4 (O_node (node (next (getnode (read var8 var4))) var6)))) (= var13 var7)) (= var2 var0)) (= var3 var12)) (= var10 var9)) (= var11 var6)) (= var5 var4)))) (inv_main21 var1 var13 var2 var3 var10 var5 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr)) (or (not (and (inv_main84 var12 var9 var1 var10 var11 var4 var2) (and (not (= var14 var7)) (and (and (and (and (and (and (and (= var8 var12) (= var0 var9)) (= var3 var1)) (= var6 var10)) (= var5 var11)) (= var13 var4)) (= var7 var2)) (= var14 (next (getnode (read var12 var2)))))))) (inv_main88 var8 var0 var3 var6 var5 var13 var7 var14)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Addr) (var24 Addr) (var25 Addr)) (or (not (and (inv_main88 var16 var10 var1 var11 var13 var4 var2 var23) (and (not (= var3 var25)) (and (and (and (and (and (and (and (and (and (= var0 var16) (= var5 var10)) (= var17 var1)) (= var15 var11)) (= var19 var13)) (= var18 var4)) (= var14 var2)) (= var24 var23)) (= var7 (next (getnode (read var16 var23))))) (and (and (and (and (and (and (and (and (= var6 (write var0 var24 defObj)) (= var8 var5)) (= var22 var17)) (= var12 var15)) (= var9 var19)) (= var21 var18)) (= var25 var14)) (= var20 var24)) (= var3 var7)))))) (inv_main88 var6 var8 var22 var12 var9 var21 var25 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 node) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main21 var10 var6 var0 var14 var11 var15 var4) (and (and (not (= nullAddr var1)) (and (and (and (and (and (and (and (and (= var13 (newHeap (alloc var10 (O_node var3)))) (= var12 var6)) (= var2 var0)) (= var9 var14)) (= var7 var11)) (= var5 var15)) (= var8 var4)) (= var16 var11)) (= var1 (newAddr (alloc var10 (O_node var3)))))) (<= 0 (+ (+ var14 (- 1)) (- 1)))))) (inv_main28 var13 var12 var2 var9 var7 var5 var8 var16 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6)) (inv_main34 (write var2 var6 (O_node (node nullAddr (data (getnode (read var2 var6)))))) var1 var0 var7 var3 var8 var5 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)) (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 node) (var8 Int) (var9 Heap) (var10 Int)) (or (not (and (inv_main4 var4 var3 var0) (and (= nullAddr var1) (and (and (and (and (and (and (= var9 (newHeap (alloc var4 (O_node var7)))) (= var2 var3)) (= var8 var0)) (= var6 var3)) (= var5 var0)) (= var10 var0)) (= var1 (newAddr (alloc var4 (O_node var7)))))))) (inv_main15 var9 var2 var8 var6 var5 var10 var1 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (and (inv_main69 var4 var1 var0 var2 var3 var5) (not (= var0 (data (getnode (read var4 var3))))))) (inv_main91 var4 var1 var0 var2 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main72 var8 var3 var1 var5 var7 var9) (and (not (= (+ var11 1) (+ 1 var6))) (and (= var12 var4) (and (and (and (and (and (and (= var0 var8) (= var6 var3)) (= var10 var1)) (= var4 var5)) (= var2 var7)) (= var11 var9)) (= var12 (next (getnode (read var8 var7))))))))) (inv_main91 var0 var6 var10 var4 var12 (+ var11 1))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr)) (or (not (and (inv_main72 var8 var3 var1 var5 var7 var9) (and (not (= nullAddr var4)) (and (= (+ var11 1) (+ 1 var6)) (and (= var12 var4) (and (and (and (and (and (and (= var0 var8) (= var6 var3)) (= var10 var1)) (= var4 var5)) (= var2 var7)) (= var11 var9)) (= var12 (next (getnode (read var8 var7)))))))))) (inv_main84 var0 var6 var10 var4 var12 (+ var11 1) var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main61 var13 var10 var1 var11 var7 var6 var12 var3) (and (not (= var4 var15)) (and (and (and (and (and (and (and (and (= var9 var13) (= var8 var10)) (= var2 var1)) (= var15 var11)) (= var14 var7)) (= var0 var6)) (= var16 var12)) (= var5 var3)) (= var4 (next (getnode (read var13 var3)))))))) (inv_main63 var9 var8 var2 var15 var14 var0 var16 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main34 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main36 var2 var1 var0 var6 var3 var7 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main22 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main49 var6 var2 var1 var3 var0 var7 var4 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int)) (not (and (inv_main55 var6 var2 var1 var3 var0 var7 var4 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (not (and (inv_main60 var5 var2 var1 var3 var0 var6 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main61 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main63 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main62 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int)) (not (and (inv_main67 var5 var2 var1 var3 var0 var7 var4 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main69 var4 var1 var0 var2 var3 var5) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main72 var4 var1 var0 var2 var3 var5) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (not (and (inv_main84 var5 var2 var0 var3 var4 var6 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr)) (not (and (inv_main88 var5 var2 var0 var3 var4 var6 var1 var7) (not (is-O_node (read var5 var7))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (not (inv_main91 var4 var1 var0 var2 var3 var5)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2c_remove_all.i.smt2 b/heap-theory-benchmarks/heap/sll2c_remove_all.i.smt2 new file mode 100644 index 00000000..9a7182c9 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2c_remove_all.i.smt2 @@ -0,0 +1,69 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main45 (Heap Int Int Addr Int Int) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main53 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 node)) (or (not (and (inv_main4 var4 var1 var0) (and (not (= nullAddr var8)) (and (and (and (and (and (and (= var5 (newHeap (alloc var4 (O_node var10)))) (= var3 var1)) (= var7 var0)) (= var6 var1)) (= var2 var0)) (= var9 var0)) (= var8 (newAddr (alloc var4 (O_node var10)))))))) (inv_main12 var5 var3 var7 var6 var2 var9 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr)) (or (not (and (inv_main34 var6 var5 var0 var14 var7 var15 var2 var1 var13) (and (and (and (and (and (and (and (and (= var12 (write var6 var13 (O_node (node (next (getnode (read var6 var13))) var1)))) (= var10 var5)) (= var8 var0)) (= var4 var14)) (= var16 var7)) (= var9 var15)) (= var17 var2)) (= var11 var1)) (= var3 var13)))) (inv_main36 var12 var10 var8 var4 var16 var9 var17 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main41 var3 var1 var0 var2 var4) (<= 0 (+ (+ var1 (* (- 1) var4)) (- 1))))) (inv_main45 var3 var1 var0 var2 var4 3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main21 var2 var1 var0 var5 var3 var6 var4) (not (<= 0 (+ (+ var5 (- 1)) (- 1)))))) (inv_main22 var2 var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var2 var1 var0 var5 var3 var6 var4)) (inv_main18 (write var2 var4 (O_node (node nullAddr (data (getnode (read var2 var4)))))) var1 var0 var5 var3 var6 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)) (inv_main31 var3 var2 var0 var8 var4 var9 var6 var5 var7 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 node) (var16 Addr)) (or (not (and (inv_main21 var10 var8 var0 var13 var11 var14 var6) (and (and (= nullAddr var4) (and (and (and (and (and (and (and (and (= var5 (newHeap (alloc var10 (O_node var15)))) (= var7 var8)) (= var2 var0)) (= var12 var13)) (= var3 var11)) (= var1 var14)) (= var16 var6)) (= var9 var11)) (= var4 (newAddr (alloc var10 (O_node var15)))))) (<= 0 (+ (+ var13 (- 1)) (- 1)))))) (inv_main31 var5 var7 var2 var12 var3 var1 var16 var9 var4 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main52 var12 var8 var0 var9 var16 var4 var10 var15) (and (= var1 var14) (and (and (and (and (and (and (and (and (= var2 var12) (= var11 var8)) (= var5 var0)) (= var14 var9)) (= var13 var16)) (= var6 var4)) (= var3 var10)) (= var7 var15)) (= var1 (next (getnode (read var12 var15)))))))) (inv_main53 var2 var11 var5 var14 var13 var6 var3 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Int) (var18 Addr) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Int)) (or (not (and (inv_main53 var16 var12 var1 var14 var23 var7 var15 var22) (and (and (and (and (and (and (and (and (= var4 (write var16 var22 (O_node (node var15 (data (getnode (read var16 var22))))))) (= var20 var12)) (= var17 var1)) (= var6 var14)) (= var19 var23)) (= var11 var7)) (= var2 var15)) (= var18 var22)) (and (and (and (and (and (and (and (= var8 (write var4 var6 defObj)) (= var5 var20)) (= var3 var17)) (= var0 var6)) (= var10 var19)) (= var9 var11)) (= var13 var2)) (= var21 var18))))) (inv_main41 var8 var5 var3 var13 (+ var10 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Heap) (var18 Int) (var19 Heap) (var20 Int) (var21 Heap) (var22 Int) (var23 Int) (var24 Addr) (var25 Int)) (or (not (and (inv_main45 var19 var15 var1 var16 var25 var6) (and (and (and (= var24 var12) (and (and (and (and (and (and (= var17 var19) (= var0 var15)) (= var5 var1)) (= var12 var16)) (= var2 var25)) (= var9 var6)) (= var24 (next (getnode (read var19 var16)))))) (and (and (and (and (and (and (= var21 (write var17 var12 defObj)) (= var8 var0)) (= var20 var5)) (= var11 var12)) (= var23 var2)) (= var18 var9)) (= var14 var24))) (and (and (and (and (and (= var7 var21) (= var13 var8)) (= var22 var20)) (= var3 nullAddr)) (= var10 var23)) (= var4 var18))))) (inv_main41 var7 var13 var22 var3 (+ var10 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main22 var5 var4 var0 var12 var6 var13 var2) (and (and (and (and (and (and (= var9 (write var5 var2 (O_node (node var13 (data (getnode (read var5 var2))))))) (= var1 var4)) (= var7 var0)) (= var3 var12)) (= var10 var6)) (= var8 var13)) (= var11 var2)))) (inv_main41 var9 var1 var7 var8 0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main36 var11 var9 var1 var13 var12 var14 var5 var4) (and (and (and (and (and (and (and (= var0 (write var11 var4 (O_node (node var14 (data (getnode (read var11 var4))))))) (= var15 var9)) (= var8 var1)) (= var3 var13)) (= var2 var12)) (= var7 var14)) (= var10 var5)) (= var6 var4)))) (inv_main21 var0 var15 var8 (+ var3 (- 1)) var2 var6 var10)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var8 var6 var0 var12 var9 var5 var4) (and (and (and (and (and (and (= var1 (write var8 var4 (O_node (node (next (getnode (read var8 var4))) var5)))) (= var10 var6)) (= var3 var0)) (= var2 var12)) (= var11 var9)) (= var13 var5)) (= var7 var4)))) (inv_main21 var1 var10 var3 var2 var11 var7 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main54 var12 var6 var0 var9 var16 var1 var10 var15) (and (and (and (and (and (and (and (and (= var8 var12) (= var2 var6)) (= var5 var0)) (= var14 var9)) (= var13 var16)) (= var4 var1)) (= var11 var10)) (= var7 var15)) (= var3 (next (getnode (read var12 var15))))))) (inv_main52 var8 var2 var5 var14 var13 var4 var11 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int)) (or (not (and (inv_main45 var5 var2 var0 var3 var12 var7) (and (not (= var11 var4)) (and (and (and (and (and (and (= var6 var5) (= var1 var2)) (= var9 var0)) (= var4 var3)) (= var10 var12)) (= var8 var7)) (= var11 (next (getnode (read var5 var3)))))))) (inv_main52 var6 var1 var9 var4 var10 var8 var11 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 node) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int)) (or (not (and (inv_main21 var10 var8 var0 var13 var11 var14 var5) (and (and (not (= nullAddr var15)) (and (and (and (and (and (and (and (and (= var3 (newHeap (alloc var10 (O_node var6)))) (= var12 var8)) (= var9 var0)) (= var4 var13)) (= var2 var11)) (= var1 var14)) (= var7 var5)) (= var16 var11)) (= var15 (newAddr (alloc var10 (O_node var6)))))) (<= 0 (+ (+ var13 (- 1)) (- 1)))))) (inv_main28 var3 var12 var9 var4 var2 var1 var7 var16 var15)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6)) (inv_main34 (write var2 var6 (O_node (node nullAddr (data (getnode (read var2 var6)))))) var1 var0 var7 var3 var8 var5 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)) (inv_main15 var2 var1 var0 var5 var3 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 node) (var10 Int)) (or (not (and (inv_main4 var5 var3 var0) (and (= nullAddr var7) (and (and (and (and (and (and (= var4 (newHeap (alloc var5 (O_node var9)))) (= var1 var3)) (= var2 var0)) (= var10 var3)) (= var8 var0)) (= var6 var0)) (= var7 (newAddr (alloc var5 (O_node var9)))))))) (inv_main15 var4 var1 var2 var10 var8 var6 var7 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main52 var11 var7 var0 var8 var16 var5 var9 var15) (and (not (= var13 var2)) (and (and (and (and (and (and (and (and (= var10 var11) (= var12 var7)) (= var1 var0)) (= var2 var8)) (= var14 var16)) (= var6 var5)) (= var4 var9)) (= var3 var15)) (= var13 (next (getnode (read var11 var15)))))))) (inv_main54 var10 var12 var1 var2 var14 var6 var4 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int)) (or (not (and (inv_main41 var3 var1 var0 var2 var4) (and (not (= nullAddr var2)) (not (<= 0 (+ (+ var1 (* (- 1) var4)) (- 1))))))) (inv_main62 var3 var1 var0 var2 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main28 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (not (and (inv_main34 var2 var1 var0 var7 var3 var8 var5 var4 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main36 var2 var1 var0 var6 var3 var7 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main22 var2 var1 var0 var5 var3 var6 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int)) (not (and (inv_main45 var3 var1 var0 var2 var5 var4) (not (is-O_node (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main52 var4 var1 var0 var2 var7 var5 var3 var6) (not (is-O_node (read var4 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main54 var4 var1 var0 var2 var7 var5 var3 var6) (not (is-O_node (read var4 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main53 var4 var1 var0 var2 var7 var5 var3 var6) (not (is-O_node (read var4 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int)) (not (inv_main62 var3 var1 var0 var2 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2c_remove_all_reverse.i.smt2 b/heap-theory-benchmarks/heap/sll2c_remove_all_reverse.i.smt2 new file mode 100644 index 00000000..82c7b260 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2c_remove_all_reverse.i.smt2 @@ -0,0 +1,73 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main57 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int)) (or (not (inv_main31 var7 var1 var9 var3 var4 var8 var0 var2 var6 var5)) (inv_main31 var7 var1 var9 var3 var4 var8 var0 var2 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 node) (var15 Int) (var16 Int)) (or (not (and (inv_main21 var11 var1 var15 var3 var4 var6 var8) (and (and (= nullAddr var10) (and (and (and (and (and (and (and (and (= var5 (newHeap (alloc var11 (O_node var14)))) (= var0 var1)) (= var12 var15)) (= var9 var3)) (= var13 var4)) (= var7 var6)) (= var2 var8)) (= var16 var4)) (= var10 (newAddr (alloc var11 (O_node var14)))))) (<= 0 (+ (+ var3 (- 1)) (- 1)))))) (inv_main31 var5 var0 var12 var9 var13 var7 var2 var16 var10 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr)) (or (not (and (inv_main62 var7 var0 var9 var10 var6 var4 var13 var3) (and (and (and (and (and (= var12 (write var7 var3 (O_node (node var10 (data (getnode (read var7 var3))))))) (= var2 var0)) (= var11 var9)) (= var8 var10)) (= var1 var6)) (= var5 var4)))) (inv_main43 var12 var2 var11 var8 (+ var1 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Heap) (var16 Heap) (var17 Heap) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 Heap) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr)) (or (not (and (inv_main49 var23 var1 var9 var10 var19 var13 var27) (and (and (and (= var24 var25) (and (= var26 var25) (and (and (and (and (and (and (and (= var17 var23) (= var2 var1)) (= var4 var9)) (= var25 var10)) (= var22 var19)) (= var18 var13)) (= var24 var27)) (= var26 (next (getnode (read var23 var27))))))) (and (and (and (and (and (and (= var16 (write var17 var25 defObj)) (= var0 var2)) (= var12 var4)) (= var7 var25)) (= var21 var22)) (= var5 var18)) (= var14 var24))) (and (and (and (and (and (= var15 var16) (= var11 var0)) (= var6 var12)) (= var20 nullAddr)) (= var8 var21)) (= var3 var5))))) (inv_main43 var15 var11 var6 var20 (+ var8 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main22 var11 var0 var13 var2 var3 var5 var9) (and (and (and (and (and (and (= var4 (write var11 var9 (O_node (node var5 (data (getnode (read var11 var9))))))) (= var12 var0)) (= var1 var13)) (= var6 var2)) (= var8 var3)) (= var10 var5)) (= var7 var9)))) (inv_main43 var4 var12 var1 var10 0)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main4 var5 var0 var8) (and (not (= nullAddr var4)) (and (and (and (and (and (and (= var6 (newHeap (alloc var5 (O_node var1)))) (= var10 var0)) (= var9 var8)) (= var7 var0)) (= var2 var8)) (= var3 var8)) (= var4 (newAddr (alloc var5 (O_node var1)))))))) (inv_main12 var6 var10 var9 var7 var2 var3 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main43 var2 var0 var3 var4 var1) (and (not (= nullAddr var4)) (not (<= 0 (+ (+ var0 (* (- 1) var1)) (- 1))))))) (inv_main66 var2 var0 var3 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int)) (or (not (and (inv_main21 var4 var1 var6 var2 var3 var5 var0) (not (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main22 var4 var1 var6 var2 var3 var5 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main59 var10 var0 var12 var14 var9 var6 var16 var4) (and (and (and (and (and (and (and (and (= var11 var10) (= var13 var0)) (= var8 var12)) (= var3 var14)) (= var2 var9)) (= var15 var6)) (= var1 var16)) (= var7 var4)) (= var5 (next (getnode (read var10 var4))))))) (inv_main57 var11 var13 var8 var3 var2 var15 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main49 var9 var1 var11 var13 var7 var2 var14) (and (not (= var10 var12)) (and (= var0 var12) (and (and (and (and (and (and (and (= var4 var9) (= var3 var1)) (= var5 var11)) (= var12 var13)) (= var8 var7)) (= var6 var2)) (= var10 var14)) (= var0 (next (getnode (read var9 var14))))))))) (inv_main57 var4 var3 var5 var12 var8 var6 var10 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 node) (var15 Addr) (var16 Addr)) (or (not (and (inv_main21 var11 var0 var13 var2 var3 var7 var10) (and (and (not (= nullAddr var6)) (and (and (and (and (and (and (and (and (= var4 (newHeap (alloc var11 (O_node var14)))) (= var12 var0)) (= var5 var13)) (= var8 var2)) (= var9 var3)) (= var15 var7)) (= var16 var10)) (= var1 var3)) (= var6 (newAddr (alloc var11 (O_node var14)))))) (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main28 var4 var12 var5 var8 var9 var15 var16 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (inv_main28 var6 var1 var8 var3 var4 var7 var0 var2 var5)) (inv_main34 (write var6 var5 (O_node (node nullAddr (data (getnode (read var6 var5)))))) var1 var8 var3 var4 var7 var0 var2 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int)) (or (not (inv_main12 var3 var0 var5 var1 var2 var6 var4)) (inv_main18 (write var3 var4 (O_node (node nullAddr (data (getnode (read var3 var4)))))) var0 var5 var1 var2 var6 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main57 var11 var0 var13 var14 var8 var4 var16 var3) (and (= var15 var1) (and (and (and (and (and (and (and (and (= var6 var11) (= var10 var0)) (= var5 var13)) (= var9 var14)) (= var12 var8)) (= var7 var4)) (= var1 var16)) (= var2 var3)) (= var15 (next (getnode (read var11 var3)))))))) (inv_main62 (write var6 var1 defObj) var10 var5 var9 var12 var7 var1 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main51 var7 var0 var10 var11 var5 var4 var14) (and (and (and (and (and (and (and (= var1 var7) (= var8 var0)) (= var3 var10)) (= var2 var11)) (= var9 var5)) (= var6 var4)) (= var12 var14)) (= var13 (next (getnode (read var7 var14))))))) (inv_main49 var1 var8 var3 var2 var9 var6 var13)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr)) (or (not (and (inv_main43 var2 var0 var3 var4 var1) (<= 0 (+ (+ var0 (* (- 1) var1)) (- 1))))) (inv_main49 var2 var0 var3 var4 var1 3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr)) (or (not (and (inv_main57 var11 var0 var12 var13 var9 var5 var16 var2) (and (not (= var14 var7)) (and (and (and (and (and (and (and (and (= var6 var11) (= var3 var0)) (= var8 var12)) (= var1 var13)) (= var10 var9)) (= var4 var5)) (= var7 var16)) (= var15 var2)) (= var14 (next (getnode (read var11 var2)))))))) (inv_main59 var6 var3 var8 var1 var10 var4 var7 var15)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Addr)) (or (not (and (inv_main34 var13 var0 var16 var1 var2 var7 var9 var10 var12) (and (and (and (and (and (and (and (and (= var8 (write var13 var12 (O_node (node (next (getnode (read var13 var12))) var10)))) (= var5 var0)) (= var4 var16)) (= var14 var1)) (= var3 var2)) (= var11 var7)) (= var6 var9)) (= var15 var10)) (= var17 var12)))) (inv_main36 var8 var5 var4 var14 var3 var11 var6 var17)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var3 var0 var6 var1 var2 var7 var4 var5)) (inv_main15 var3 var0 var6 var1 var2 var7 var4 var5)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int)) (or (not (and (inv_main4 var5 var0 var6) (and (= nullAddr var9) (and (and (and (and (and (and (= var8 (newHeap (alloc var5 (O_node var1)))) (= var4 var0)) (= var7 var6)) (= var10 var0)) (= var2 var6)) (= var3 var6)) (= var9 (newAddr (alloc var5 (O_node var1)))))))) (inv_main15 var8 var4 var7 var10 var2 var3 var9 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main36 var13 var0 var15 var3 var4 var6 var10 var8) (and (and (and (and (and (and (and (= var1 (write var13 var8 (O_node (node var6 (data (getnode (read var13 var8))))))) (= var14 var0)) (= var7 var15)) (= var2 var3)) (= var5 var4)) (= var9 var6)) (= var11 var10)) (= var12 var8)))) (inv_main21 var1 var14 var7 (+ var2 (- 1)) var5 var12 var11)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var8 var0 var12 var2 var3 var6 var9) (and (and (and (and (and (and (= var11 (write var8 var9 (O_node (node (next (getnode (read var8 var9))) var6)))) (= var7 var0)) (= var1 var12)) (= var4 var2)) (= var13 var3)) (= var5 var6)) (= var10 var9)))) (inv_main21 var11 var7 var1 var4 var13 var10 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Heap) (var14 Addr)) (or (not (and (inv_main49 var7 var0 var11 var12 var4 var3 var14) (and (not (= var6 var8)) (and (and (and (and (and (and (and (= var13 var7) (= var1 var0)) (= var2 var11)) (= var8 var12)) (= var5 var4)) (= var10 var3)) (= var9 var14)) (= var6 (next (getnode (read var7 var14)))))))) (inv_main51 var13 var1 var2 var8 var5 var10 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main12 var3 var0 var5 var1 var2 var6 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main18 var3 var0 var5 var1 var2 var6 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main28 var6 var1 var8 var3 var4 var7 var0 var2 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (not (and (inv_main34 var6 var1 var8 var3 var4 var7 var0 var2 var5) (not (is-O_node (read var6 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr)) (not (and (inv_main36 var4 var1 var6 var2 var3 var5 var0 var7) (not (is-O_node (read var4 var7))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int)) (not (and (inv_main22 var4 var1 var6 var2 var3 var5 var0) (not (is-O_node (read var4 var0))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main49 var2 var0 var4 var5 var1 var3 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main51 var2 var0 var4 var5 var1 var3 var6) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main57 var2 var0 var5 var6 var1 var4 var7 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main59 var2 var0 var5 var6 var1 var4 var7 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main62 var2 var0 var5 var6 var1 var4 var7 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr)) (not (inv_main66 var2 var0 var3 var4 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2c_update_all.i.smt2 b/heap-theory-benchmarks/heap/sll2c_update_all.i.smt2 new file mode 100644 index 00000000..b03cd14f --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2c_update_all.i.smt2 @@ -0,0 +1,81 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main64 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main79 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main34 var3 var4 var16 var0 var15 var9 var8 var12 var7) (and (and (and (and (and (and (and (and (= var13 (write var3 var7 (O_node (node (next (getnode (read var3 var7))) var12)))) (= var5 var4)) (= var2 var16)) (= var17 var0)) (= var1 var15)) (= var6 var9)) (= var11 var8)) (= var14 var12)) (= var10 var7)))) (inv_main36 var13 var5 var2 var17 var1 var6 var11 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main65 var3 var4 var11 var12 var6 var13 var2 var8) (and (not (<= 0 (+ (+ var7 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (= var10 var3) (= var9 var4)) (= var1 var11)) (= var15 var12)) (= var14 var6)) (= var0 var13)) (= var5 var2)) (= var7 var8)) (= var16 (next (getnode (read var3 var2)))))))) (inv_main64 var10 var9 var1 var15 var14 var0 var16 (+ var7 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main55 var2 var3 var0 var1 var4) (and (not (<= 0 (+ var4 (- 1)))) (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main64 var2 var3 var0 var1 var4 (+ var4 var3) var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (and (inv_main21 var3 var4 var2 var0 var1 var6 var5) (not (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main22 var3 var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr)) (or (not (and (inv_main72 var5 var6 var2 var4 var9 var8) (and (not (= var3 var7)) (and (and (and (and (and (and (= var10 var5) (= var1 var6)) (= var0 var2)) (= var12 var4)) (= var11 var9)) (= var7 var8)) (= var3 (next (getnode (read var5 var8)))))))) (inv_main76 var10 var1 var0 var12 var11 var7 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int) (var21 Int) (var22 Heap)) (or (not (and (inv_main76 var4 var5 var12 var14 var9 var17 var16) (and (not (= var2 var19)) (and (and (and (and (and (and (and (and (= var15 var4) (= var21 var5)) (= var20 var12)) (= var8 var14)) (= var1 var9)) (= var18 var17)) (= var13 var16)) (= var3 (next (getnode (read var4 var16))))) (and (and (and (and (and (and (and (= var22 (write var15 var13 defObj)) (= var11 var21)) (= var7 var20)) (= var10 var8)) (= var0 var1)) (= var19 var18)) (= var6 var13)) (= var2 var3)))))) (inv_main76 var22 var11 var7 var10 var0 var19 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int)) (or (not (and (inv_main51 var6 var7 var13 var15 var11 var17 var3 var2 var1) (and (not (<= 0 (+ (+ var14 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (and (= var0 var6) (= var5 var7)) (= var18 var13)) (= var12 var15)) (= var9 var11)) (= var8 var17)) (= var10 var3)) (= var4 var2)) (= var14 var1)) (= var16 (next (getnode (read var6 var3)))))))) (inv_main50 var0 var5 var18 var12 var9 var8 var16 var4 (+ var14 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main43 var2 var3 var0 var1 var4) (and (not (<= 0 (+ var4 (- 1)))) (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main50 var2 var3 var0 var1 var4 (+ var4 var3) var1 (+ var4 var3) var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main55 var2 var3 var0 var1 var4) (and (not (= nullAddr var1)) (not (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1))))))) (inv_main72 var2 var3 var0 var1 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int)) (or (not (and (inv_main51 var6 var7 var13 var15 var11 var17 var3 var2 var1) (and (<= 0 (+ (+ var14 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (and (= var0 var6) (= var5 var7)) (= var18 var13)) (= var12 var15)) (= var9 var11)) (= var8 var17)) (= var10 var3)) (= var4 var2)) (= var14 var1)) (= var16 (next (getnode (read var6 var3)))))))) (inv_main51 var0 var5 var18 var12 var9 var8 var16 var4 (+ var14 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main43 var2 var3 var0 var1 var4) (and (<= 0 (+ var4 (- 1))) (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main51 var2 var3 var0 var1 var4 (+ var4 var3) var1 (+ var4 var3) var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 node)) (or (not (and (inv_main4 var6 var7 var2) (and (not (= nullAddr var8)) (and (and (and (and (and (and (= var1 (newHeap (alloc var6 (O_node var10)))) (= var0 var7)) (= var4 var2)) (= var9 var7)) (= var5 var2)) (= var3 var2)) (= var8 (newAddr (alloc var6 (O_node var10)))))))) (inv_main12 var1 var0 var4 var9 var5 var3 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main15 var4 var5 var2 var0 var1 var6 var3 var7)) (inv_main15 var4 var5 var2 var0 var1 var6 var3 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 node) (var7 Heap) (var8 Int) (var9 Addr) (var10 Heap)) (or (not (and (inv_main4 var7 var8 var2) (and (= nullAddr var9) (and (and (and (and (and (and (= var10 (newHeap (alloc var7 (O_node var6)))) (= var4 var8)) (= var3 var2)) (= var0 var8)) (= var5 var2)) (= var1 var2)) (= var9 (newAddr (alloc var7 (O_node var6)))))))) (inv_main15 var10 var4 var3 var0 var5 var1 var9 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main50 var5 var6 var12 var13 var8 var16 var3 var1 var0) (and (and (and (and (and (and (and (and (= var11 (write var5 var3 (O_node (node (next (getnode (read var5 var3))) var1)))) (= var4 var6)) (= var9 var12)) (= var10 var13)) (= var15 var8)) (= var7 var16)) (= var14 var3)) (= var2 var1)) (= var17 var0)))) (inv_main43 var11 var4 var9 var10 (+ var15 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Heap)) (or (not (and (inv_main22 var4 var5 var12 var1 var11 var8 var6) (and (and (and (and (and (and (= var13 (write var4 var6 (O_node (node var8 (data (getnode (read var4 var6))))))) (= var7 var5)) (= var10 var12)) (= var2 var1)) (= var0 var11)) (= var9 var8)) (= var3 var6)))) (inv_main43 var13 var7 var10 var9 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap)) (or (not (and (inv_main64 var4 var5 var11 var12 var7 var13 var3 var9) (and (not (= var1 var2)) (and (and (and (and (and (and (= var14 var4) (= var8 var5)) (= var0 var11)) (= var6 var12)) (= var10 var7)) (= var1 var13)) (= var2 (data (getnode (read var4 var3)))))))) (inv_main79 var14 var8 var0 var6 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 node) (var15 Addr) (var16 Addr)) (or (not (and (inv_main21 var3 var4 var12 var1 var11 var8 var5) (and (and (not (= nullAddr var10)) (and (and (and (and (and (and (and (and (= var2 (newHeap (alloc var3 (O_node var14)))) (= var13 var4)) (= var7 var12)) (= var6 var1)) (= var0 var11)) (= var16 var8)) (= var15 var5)) (= var9 var11)) (= var10 (newAddr (alloc var3 (O_node var14)))))) (<= 0 (+ (+ var1 (- 1)) (- 1)))))) (inv_main28 var2 var13 var7 var6 var0 var16 var15 var9 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main65 var3 var4 var11 var12 var6 var13 var2 var8) (and (<= 0 (+ (+ var7 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (= var10 var3) (= var9 var4)) (= var1 var11)) (= var15 var12)) (= var14 var6)) (= var0 var13)) (= var5 var2)) (= var7 var8)) (= var16 (next (getnode (read var3 var2)))))))) (inv_main65 var10 var9 var1 var15 var14 var0 var16 (+ var7 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main55 var2 var3 var0 var1 var4) (and (<= 0 (+ var4 (- 1))) (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main65 var2 var3 var0 var1 var4 (+ var4 var3) var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (or (not (inv_main12 var4 var5 var2 var0 var1 var6 var3)) (inv_main18 (write var4 var3 (O_node (node nullAddr (data (getnode (read var4 var3)))))) var5 var2 var0 var1 var6 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main43 var2 var3 var0 var1 var4) (not (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main55 var2 var3 var0 var1 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main64 var2 var3 var9 var10 var5 var11 var0 var8) (and (= var1 var12) (and (and (and (and (and (and (= var6 var2) (= var4 var3)) (= var14 var9)) (= var7 var10)) (= var13 var5)) (= var1 var11)) (= var12 (data (getnode (read var2 var0)))))))) (inv_main55 var6 var4 var14 var7 (+ var13 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Int)) (or (not (and (inv_main36 var5 var6 var11 var1 var10 var8 var7 var14) (and (and (and (and (and (and (and (= var12 (write var5 var14 (O_node (node var8 (data (getnode (read var5 var14))))))) (= var9 var6)) (= var15 var11)) (= var0 var1)) (= var2 var10)) (= var4 var8)) (= var3 var7)) (= var13 var14)))) (inv_main21 var12 var9 var15 (+ var0 (- 1)) var2 var13 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var4 var5 var10 var1 var9 var12 var3) (and (and (and (and (and (and (= var11 (write var4 var3 (O_node (node (next (getnode (read var4 var3))) var12)))) (= var0 var5)) (= var6 var10)) (= var8 var1)) (= var2 var9)) (= var13 var12)) (= var7 var3)))) (inv_main21 var11 var0 var6 var8 var2 var7 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (inv_main28 var3 var4 var2 var0 var1 var7 var6 var8 var5)) (inv_main34 (write var3 var5 (O_node (node nullAddr (data (getnode (read var3 var5)))))) var4 var2 var0 var1 var7 var6 var8 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main31 var3 var4 var2 var0 var1 var8 var6 var9 var5 var7)) (inv_main31 var3 var4 var2 var0 var1 var8 var6 var9 var5 var7)))) +(assert (forall ((var0 Int) (var1 node) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main21 var4 var5 var12 var0 var11 var8 var7) (and (and (= nullAddr var2) (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var4 (O_node var1)))) (= var9 var5)) (= var14 var12)) (= var15 var0)) (= var16 var11)) (= var13 var8)) (= var10 var7)) (= var3 var11)) (= var2 (newAddr (alloc var4 (O_node var1)))))) (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main31 var6 var9 var14 var15 var16 var13 var10 var3 var2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main12 var4 var5 var2 var0 var1 var6 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int)) (not (and (inv_main18 var4 var5 var2 var0 var1 var6 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (not (and (inv_main28 var3 var4 var2 var0 var1 var7 var6 var8 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int)) (not (and (inv_main34 var3 var4 var2 var0 var1 var7 var6 var8 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main36 var3 var4 var2 var0 var1 var7 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main22 var3 var4 var2 var0 var1 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main51 var5 var6 var2 var4 var8 var7 var3 var1 var0) (not (is-O_node (read var5 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main50 var5 var6 var2 var4 var8 var7 var3 var1 var0) (not (is-O_node (read var5 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main65 var4 var5 var0 var3 var6 var2 var1 var7) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main64 var4 var5 var0 var3 var6 var2 var1 var7) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int)) (not (and (inv_main72 var2 var3 var0 var1 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main76 var2 var3 var0 var1 var6 var5 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int)) (not (inv_main79 var2 var3 var0 var1 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2c_update_all_reverse.i.smt2 b/heap-theory-benchmarks/heap/sll2c_update_all_reverse.i.smt2 new file mode 100644 index 00000000..b0930069 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2c_update_all_reverse.i.smt2 @@ -0,0 +1,81 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Int Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main28 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main34 (Heap Int Int Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main64 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main72 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main76 (Heap Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main79 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main43 var4 var3 var0 var1 var2) (not (<= 0 (+ (+ var2 1) (- 1)))))) (inv_main55 var4 var3 var0 var1 (+ var3 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Int)) (or (not (and (inv_main64 var5 var11 var7 var8 var0 var1 var2 var13) (and (= var10 var6) (and (and (and (and (and (and (= var12 var5) (= var9 var11)) (= var14 var7)) (= var4 var8)) (= var3 var0)) (= var10 var1)) (= var6 (data (getnode (read var5 var2)))))))) (inv_main55 var12 var9 var14 var4 (+ var3 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (or (not (inv_main28 var7 var4 var1 var3 var6 var0 var8 var2 var5)) (inv_main34 (write var7 var5 (O_node (node nullAddr (data (getnode (read var7 var5)))))) var4 var1 var3 var6 var0 var8 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main51 var5 var14 var10 var12 var2 var18 var0 var13 var15) (and (not (<= 0 (+ (+ var16 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (and (= var8 var5) (= var3 var14)) (= var9 var10)) (= var1 var12)) (= var11 var2)) (= var4 var18)) (= var7 var0)) (= var17 var13)) (= var16 var15)) (= var6 (next (getnode (read var5 var0)))))))) (inv_main50 var8 var3 var9 var1 var11 var4 var6 var17 (+ var16 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main43 var4 var3 var0 var1 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 (+ (+ var2 1) (- 1)))))) (inv_main50 var4 var3 var0 var1 var2 (+ var2 var3) var1 (+ var2 var3) var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap)) (or (not (inv_main15 var7 var4 var1 var3 var6 var0 var2 var5)) (inv_main15 var7 var4 var1 var3 var6 var0 var2 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 node) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Int)) (or (not (and (inv_main4 var9 var5 var1) (and (= nullAddr var8) (and (and (and (and (and (and (= var7 (newHeap (alloc var9 (O_node var4)))) (= var0 var5)) (= var6 var1)) (= var2 var5)) (= var3 var1)) (= var10 var1)) (= var8 (newAddr (alloc var9 (O_node var4)))))))) (inv_main15 var7 var0 var6 var2 var3 var10 var8 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr)) (or (not (inv_main31 var8 var4 var1 var3 var7 var0 var9 var2 var5 var6)) (inv_main31 var8 var4 var1 var3 var7 var0 var9 var2 var5 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 node) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main21 var5 var12 var9 var11 var15 var1 var16) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (and (= var6 (newHeap (alloc var5 (O_node var10)))) (= var4 var12)) (= var2 var9)) (= var0 var11)) (= var8 var15)) (= var13 var1)) (= var7 var16)) (= var3 var15)) (= var14 (newAddr (alloc var5 (O_node var10)))))) (<= 0 (+ (+ var11 (- 1)) (- 1)))))) (inv_main31 var6 var4 var2 var0 var8 var13 var7 var3 var14 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (or (not (inv_main12 var6 var4 var1 var3 var5 var0 var2)) (inv_main18 (write var6 var2 (O_node (node nullAddr (data (getnode (read var6 var2)))))) var4 var1 var3 var5 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int)) (or (not (and (inv_main50 var5 var12 var8 var10 var3 var17 var1 var11 var14) (and (and (and (and (and (and (and (and (= var15 (write var5 var1 (O_node (node (next (getnode (read var5 var1))) var11)))) (= var13 var12)) (= var0 var8)) (= var16 var10)) (= var7 var3)) (= var4 var17)) (= var2 var1)) (= var6 var11)) (= var9 var14)))) (inv_main43 var15 var13 var0 var16 (+ var7 (- 1)))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main22 var5 var9 var7 var8 var10 var1 var13) (and (and (and (and (and (and (= var0 (write var5 var13 (O_node (node var1 (data (getnode (read var5 var13))))))) (= var2 var9)) (= var4 var7)) (= var12 var8)) (= var6 var10)) (= var3 var1)) (= var11 var13)))) (inv_main43 var0 var2 var4 var3 (+ var2 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Addr)) (or (not (and (inv_main72 var9 var8 var2 var4 var7 var1) (and (not (= var12 var3)) (and (and (and (and (and (and (= var11 var9) (= var10 var8)) (= var5 var2)) (= var6 var4)) (= var0 var7)) (= var3 var1)) (= var12 (next (getnode (read var9 var1)))))))) (inv_main76 var11 var10 var5 var6 var0 var3 var12)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int)) (or (not (and (inv_main76 var8 var16 var12 var14 var6 var1 var15) (and (not (= var18 var17)) (and (and (and (and (and (and (and (and (= var0 var8) (= var4 var16)) (= var7 var12)) (= var9 var14)) (= var13 var6)) (= var20 var1)) (= var21 var15)) (= var10 (next (getnode (read var8 var15))))) (and (and (and (and (and (and (and (= var3 (write var0 var21 defObj)) (= var2 var4)) (= var22 var7)) (= var19 var9)) (= var5 var13)) (= var17 var20)) (= var11 var21)) (= var18 var10)))))) (inv_main76 var3 var2 var22 var19 var5 var17 var18)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main36 var5 var11 var8 var10 var13 var0 var14 var9) (and (and (and (and (and (and (and (= var4 (write var5 var9 (O_node (node var0 (data (getnode (read var5 var9))))))) (= var1 var11)) (= var12 var8)) (= var2 var10)) (= var15 var13)) (= var6 var0)) (= var3 var14)) (= var7 var9)))) (inv_main21 var4 var1 var12 (+ var2 (- 1)) var15 var7 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main18 var4 var10 var6 var8 var12 var1 var2) (and (and (and (and (and (and (= var11 (write var4 var2 (O_node (node (next (getnode (read var4 var2))) var1)))) (= var5 var10)) (= var13 var6)) (= var3 var8)) (= var9 var12)) (= var7 var1)) (= var0 var2)))) (inv_main21 var11 var5 var13 var3 var9 var0 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main65 var6 var12 var9 var10 var2 var4 var5 var15) (and (<= 0 (+ (+ var0 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (= var7 var6) (= var1 var12)) (= var3 var9)) (= var16 var10)) (= var11 var2)) (= var14 var4)) (= var13 var5)) (= var0 var15)) (= var8 (next (getnode (read var6 var5)))))))) (inv_main65 var7 var1 var3 var16 var11 var14 var8 (+ var0 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main55 var4 var3 var0 var1 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 (+ (+ var2 1) (- 1)))))) (inv_main65 var4 var3 var0 var1 var2 (+ var2 var3) var1 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int) (var9 node) (var10 Int)) (or (not (and (inv_main4 var7 var3 var1) (and (not (= nullAddr var6)) (and (and (and (and (and (and (= var5 (newHeap (alloc var7 (O_node var9)))) (= var8 var3)) (= var2 var1)) (= var4 var3)) (= var10 var1)) (= var0 var1)) (= var6 (newAddr (alloc var7 (O_node var9)))))))) (inv_main12 var5 var8 var2 var4 var10 var0 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main51 var5 var14 var10 var12 var2 var18 var0 var13 var15) (and (<= 0 (+ (+ var16 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (and (= var8 var5) (= var3 var14)) (= var9 var10)) (= var1 var12)) (= var11 var2)) (= var4 var18)) (= var7 var0)) (= var17 var13)) (= var16 var15)) (= var6 (next (getnode (read var5 var0)))))))) (inv_main51 var8 var3 var9 var1 var11 var4 var6 var17 (+ var16 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main43 var4 var3 var0 var1 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 (+ (+ var2 1) (- 1)))))) (inv_main51 var4 var3 var0 var1 var2 (+ var2 var3) var1 (+ var2 var3) var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main65 var6 var12 var9 var10 var2 var4 var5 var15) (and (not (<= 0 (+ (+ var0 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (= var7 var6) (= var1 var12)) (= var3 var9)) (= var16 var10)) (= var11 var2)) (= var14 var4)) (= var13 var5)) (= var0 var15)) (= var8 (next (getnode (read var6 var5)))))))) (inv_main64 var7 var1 var3 var16 var11 var14 var8 (+ var0 (- 1)))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main55 var4 var3 var0 var1 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 (+ (+ var2 1) (- 1)))))) (inv_main64 var4 var3 var0 var1 var2 (+ var2 var3) var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main64 var5 var10 var8 var9 var2 var3 var4 var11) (and (not (= var6 var14)) (and (and (and (and (and (and (= var1 var5) (= var13 var10)) (= var12 var8)) (= var0 var9)) (= var7 var2)) (= var6 var3)) (= var14 (data (getnode (read var5 var4)))))))) (inv_main79 var1 var13 var12 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 node) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main21 var7 var13 var11 var12 var15 var2 var16) (and (and (not (= nullAddr var0)) (and (and (and (and (and (and (and (and (= var3 (newHeap (alloc var7 (O_node var8)))) (= var9 var13)) (= var14 var11)) (= var6 var12)) (= var1 var15)) (= var4 var2)) (= var5 var16)) (= var10 var15)) (= var0 (newAddr (alloc var7 (O_node var8)))))) (<= 0 (+ (+ var12 (- 1)) (- 1)))))) (inv_main28 var3 var9 var14 var6 var1 var4 var5 var10 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr)) (or (not (and (inv_main21 var5 var3 var1 var2 var4 var0 var6) (not (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main22 var5 var3 var1 var2 var4 var0 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (or (not (and (inv_main55 var4 var3 var0 var1 var2) (and (not (= nullAddr var1)) (not (<= 0 (+ (+ var2 1) (- 1))))))) (inv_main72 var4 var3 var0 var1 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr)) (or (not (and (inv_main34 var4 var11 var8 var10 var15 var0 var17 var9 var14) (and (and (and (and (and (and (and (and (= var5 (write var4 var14 (O_node (node (next (getnode (read var4 var14))) var9)))) (= var13 var11)) (= var3 var8)) (= var12 var10)) (= var2 var15)) (= var16 var0)) (= var7 var17)) (= var1 var9)) (= var6 var14)))) (inv_main36 var5 var13 var3 var12 var2 var16 var7 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main12 var6 var4 var1 var3 var5 var0 var2) (not (is-O_node (read var6 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main18 var6 var4 var1 var3 var5 var0 var2) (not (is-O_node (read var6 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (not (and (inv_main28 var7 var4 var1 var3 var6 var0 var8 var2 var5) (not (is-O_node (read var7 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr)) (not (and (inv_main34 var7 var4 var1 var3 var6 var0 var8 var2 var5) (not (is-O_node (read var7 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr)) (not (and (inv_main36 var6 var4 var1 var3 var5 var0 var7 var2) (not (is-O_node (read var6 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr)) (not (and (inv_main22 var5 var3 var1 var2 var4 var0 var6) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int)) (not (and (inv_main51 var7 var5 var1 var2 var4 var8 var0 var3 var6) (not (is-O_node (read var7 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int)) (not (and (inv_main50 var7 var5 var1 var2 var4 var8 var0 var3 var6) (not (is-O_node (read var7 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (not (and (inv_main65 var7 var3 var0 var1 var2 var4 var5 var6) (not (is-O_node (read var7 var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap)) (not (and (inv_main64 var7 var3 var0 var1 var2 var4 var5 var6) (not (is-O_node (read var7 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main72 var5 var4 var1 var2 var3 var0) (not (is-O_node (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main76 var6 var5 var1 var2 var4 var0 var3) (not (is-O_node (read var6 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap)) (not (inv_main79 var4 var3 var0 var1 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2n_append_unequal.i.smt2 b/heap-theory-benchmarks/heap/sll2n_append_unequal.i.smt2 new file mode 100644 index 00000000..5c0b5868 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2n_append_unequal.i.smt2 @@ -0,0 +1,84 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr)) + ) +)) +(declare-fun inv_main10 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main40 (Heap Int Int Addr Int Int Int Int Addr Int) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int Int Int Int Addr) Bool) +(declare-fun inv_main48 (Heap Int Int Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main53 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main57 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main58 (Heap Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Addr Int Addr) Bool) +(declare-fun inv_main74 (Heap Int Int Addr Int Addr Int Addr) Bool) +(declare-fun inv_main77 (Heap Int Int Addr Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 node) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Int)) (or (not (and (inv_main10 var3 var10 var13 var0 var4 var12) (and (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (and (= var14 (newHeap (alloc var3 (O_node var1)))) (= var9 var10)) (= var15 var13)) (= var2 var12)) (= var8 5)) (= var5 3)) (= var6 5)) (= var7 5)) (= var11 (newAddr (alloc var3 (O_node var1)))))) (not (<= 0 (+ var0 (- 1))))))) (inv_main37 var14 var9 var15 var2 var8 var5 var6 var7 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Int) (var21 Addr) (var22 Int) (var23 Addr) (var24 Int) (var25 Int)) (or (not (and (inv_main74 var4 var12 var20 var13 var19 var7 var6 var17) (and (not (= var21 nullAddr)) (and (and (and (and (and (and (and (and (and (= var14 var4) (= var24 var12)) (= var22 var20)) (= var0 var13)) (= var25 var19)) (= var11 var7)) (= var8 var6)) (= var3 var17)) (= var1 (next (getnode (read var4 var17))))) (and (and (and (and (and (and (and (and (= var10 (write var14 var3 defObj)) (= var16 var24)) (= var9 var22)) (= var2 var0)) (= var5 var25)) (= var23 var11)) (= var18 var8)) (= var15 var3)) (= var21 var1)))))) (inv_main74 var10 var16 var9 var2 var5 var23 var18 var21)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main53 var1 var6 var5 var0 var4 var3 var2) (and (and (not (= var0 nullAddr)) (= var2 (+ 1 var6))) (= (next (getnode (read var1 var3))) nullAddr)))) (inv_main74 var1 var6 var5 var0 var4 var3 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main57 var1 var6 var5 var0 var4 var3 var2) (and (and (not (= var0 nullAddr)) (= (+ var2 1) (+ 1 var6))) (= var4 (data (getnode (read var1 var3))))))) (inv_main74 var1 var6 var5 var0 var4 var3 (+ var2 1) var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main23 var2 var7 var12 var1 var3 var10 var15 var11) (and (and (and (and (and (and (and (= var6 (write var2 var11 (O_node (node var15 (next (getnode (read var2 var11))))))) (= var4 var7)) (= var5 var12)) (= var14 var1)) (= var9 var3)) (= var8 var10)) (= var0 var15)) (= var13 var11)))) (inv_main25 var6 var4 var5 var14 var9 var8 var13)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main59 var1 var7 var5 var0 var4 var3 var2 var6) (not (= var5 (data (getnode (read var1 var3))))))) (inv_main77 var1 var7 var5 var0 var4 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main57 var1 var6 var5 var0 var4 var3 var2) (not (= var4 (data (getnode (read var1 var3))))))) (inv_main77 var1 var6 var5 var0 var4 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main53 var1 var6 var5 var0 var4 var3 var2) (and (not (= var2 (+ 1 var6))) (= (next (getnode (read var1 var3))) nullAddr)))) (inv_main77 var1 var6 var5 var0 var4 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main57 var1 var6 var5 var0 var4 var3 var2) (and (not (= (+ var2 1) (+ 1 var6))) (= var4 (data (getnode (read var1 var3))))))) (inv_main77 var1 var6 var5 var0 var4 var3 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (and (inv_main48 var2 var8 var5 var0 var4 var1 var7 var6 var3) (not (= (next (getnode (read var2 var3))) nullAddr)))) (inv_main50 var2 var8 var5 var0 var4 var1 var7 var6 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main20 var1 var8 var4 var0 var5 var2 var7 var3 var6)) (inv_main20 var1 var8 var4 var0 var5 var2 var7 var3 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 node) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Heap)) (or (not (and (inv_main10 var2 var8 var12 var0 var3 var11) (and (and (= nullAddr var5) (and (and (and (and (and (and (and (= var14 (newHeap (alloc var2 (O_node var9)))) (= var4 var8)) (= var1 var12)) (= var7 var0)) (= var6 var3)) (= var10 var11)) (= var13 var3)) (= var5 (newAddr (alloc var2 (O_node var9)))))) (<= 0 (+ var0 (- 1)))))) (inv_main20 var14 var4 var1 var7 var6 var10 var13 var5 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (or (not (inv_main37 var2 var7 var5 var0 var4 var1 var6 var3 var8)) (inv_main43 (write var2 var8 (O_node (node (data (getnode (read var2 var8))) nullAddr))) var7 var5 var0 var4 var1 var6 var3 var8)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main55 var1 var6 var5 var0 var4 var3 var2) (= (next (getnode (read var1 var3))) nullAddr))) (inv_main57 var1 var6 var5 var0 var4 var3 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 node) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main10 var6 var9 var13 var0 var7 var11) (and (and (not (= nullAddr var3)) (and (and (and (and (and (and (and (= var8 (newHeap (alloc var6 (O_node var2)))) (= var4 var9)) (= var12 var13)) (= var14 var0)) (= var10 var7)) (= var1 var11)) (= var5 var7)) (= var3 (newAddr (alloc var6 (O_node var2)))))) (<= 0 (+ var0 (- 1)))))) (inv_main17 var8 var4 var12 var14 var10 var1 var5 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr) (var18 Heap)) (or (not (and (inv_main50 var1 var4 var13 var6 var12 var9 var16 var15 var11) (and (and (and (and (and (and (and (and (and (= var18 var1) (= var14 var4)) (= var7 var13)) (= var2 var6)) (= var8 var12)) (= var0 var9)) (= var10 var16)) (= var3 var15)) (= var17 var11)) (= var5 (next (getnode (read var1 var11))))))) (inv_main48 var18 var14 var7 var2 var8 var0 var10 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr)) (or (not (and (inv_main43 var2 var5 var15 var6 var14 var10 var16 var13 var7) (and (not (= nullAddr var12)) (and (and (and (and (and (and (and (and (= var1 (write var2 var7 (O_node (node var13 (next (getnode (read var2 var7))))))) (= var4 var5)) (= var8 var15)) (= var12 var6)) (= var3 var14)) (= var11 var10)) (= var0 var16)) (= var9 var13)) (= var17 var7))))) (inv_main48 var1 var4 var8 var12 var3 var11 var0 var17 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr)) (or (not (inv_main40 var3 var8 var6 var0 var5 var1 var7 var4 var9 var2)) (inv_main40 var3 var8 var6 var0 var5 var1 var7 var4 var9 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 node) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Heap)) (or (not (and (inv_main10 var3 var7 var13 var1 var6 var12) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (and (= var15 (newHeap (alloc var3 (O_node var2)))) (= var10 var7)) (= var8 var13)) (= var5 var12)) (= var4 5)) (= var0 3)) (= var11 5)) (= var9 5)) (= var14 (newAddr (alloc var3 (O_node var2)))))) (not (<= 0 (+ var1 (- 1))))))) (inv_main40 var15 var10 var8 var5 var4 var0 var11 var9 var14 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main55 var1 var6 var5 var0 var4 var3 var2) (not (= (next (getnode (read var1 var3))) nullAddr)))) (inv_main58 var1 var6 var5 var0 var4 var3 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main17 var1 var7 var4 var0 var5 var2 var6 var3)) (inv_main23 (write var1 var3 (O_node (node (data (getnode (read var1 var3))) nullAddr))) var7 var4 var0 var5 var2 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (inv_main58 var1 var6 var5 var0 var4 var3 var2)) (inv_main59 var1 var6 var5 var0 var4 var3 var2 (next (getnode (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap)) (or (not (and (inv_main25 var2 var6 var11 var1 var4 var10 var12) (and (and (and (and (and (and (= var13 (write var2 var12 (O_node (node (data (getnode (read var2 var12))) var10)))) (= var3 var6)) (= var9 var11)) (= var0 var1)) (= var8 var4)) (= var7 var10)) (= var5 var12)))) (inv_main10 var13 var3 var9 (+ var0 (- 1)) var8 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int)) (or (not (and (inv_main4 var3 var8 var4) (and (and (and (and (and (= var6 var3) (= var5 var8)) (= var0 var4)) (= var2 var8)) (= var7 var4)) (= var1 nullAddr)))) (inv_main10 var6 var5 var0 var2 var7 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (and (inv_main48 var2 var8 var5 var0 var4 var1 var7 var6 var3) (= (next (getnode (read var2 var3))) nullAddr))) (inv_main49 var2 var8 var5 var0 var4 var1 var7 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main53 var1 var6 var5 var0 var4 var3 var2) (not (= (next (getnode (read var1 var3))) nullAddr)))) (inv_main55 var1 var6 var5 var0 var4 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main59 var1 var7 var5 var0 var4 var3 var2 var6) (= var5 (data (getnode (read var1 var3)))))) (inv_main55 var1 var7 var5 var0 var4 var6 (+ var2 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main49 var1 var4 var10 var6 var9 var7 var12 var11 var8) (and (and (and (and (and (and (= var3 (write var1 var8 (O_node (node (data (getnode (read var1 var8))) var11)))) (= var2 var4)) (= var15 var10)) (= var5 var6)) (= var14 var9)) (= var0 var7)) (= var13 var12)))) (inv_main53 var3 var2 var15 var5 var14 var5 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr)) (or (not (and (inv_main43 var2 var5 var15 var6 var14 var10 var16 var13 var7) (and (= nullAddr var12) (and (and (and (and (and (and (and (and (= var1 (write var2 var7 (O_node (node var13 (next (getnode (read var2 var7))))))) (= var4 var5)) (= var8 var15)) (= var12 var6)) (= var3 var14)) (= var11 var10)) (= var0 var16)) (= var9 var13)) (= var17 var7))))) (inv_main53 var1 var4 var8 var17 var3 var17 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main17 var1 var7 var4 var0 var5 var2 var6 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main23 var1 var7 var4 var0 var5 var2 var6 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main25 var1 var6 var3 var0 var4 var2 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (not (and (inv_main37 var2 var7 var5 var0 var4 var1 var6 var3 var8) (not (is-O_node (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (not (and (inv_main43 var2 var7 var5 var0 var4 var1 var6 var3 var8) (not (is-O_node (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main48 var2 var8 var5 var0 var4 var1 var7 var6 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main50 var2 var8 var5 var0 var4 var1 var7 var6 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main49 var2 var8 var5 var0 var4 var1 var7 var6 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main53 var1 var6 var5 var0 var4 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main55 var1 var6 var5 var0 var4 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main58 var1 var6 var5 var0 var4 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main59 var1 var7 var5 var0 var4 var3 var2 var6) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main57 var1 var6 var5 var0 var4 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main74 var2 var7 var6 var0 var5 var4 var3 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (inv_main77 var1 var6 var5 var0 var4 var3 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2n_insert_unequal.i.smt2 b/heap-theory-benchmarks/heap/sll2n_insert_unequal.i.smt2 new file mode 100644 index 00000000..95c56db2 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2n_insert_unequal.i.smt2 @@ -0,0 +1,92 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr)) + ) +)) +(declare-fun inv_main10 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main38 (Heap Int Int Addr Int Int Int Int Int Int Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Int Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main44 (Heap Int Int Addr Int Int Int Int Int Int Addr) Bool) +(declare-fun inv_main48 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main55 (Heap Int Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main60 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main61 (Heap Int Int Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main66 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main71 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main73 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main74 (Heap Int Int Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main86 (Heap Int Int Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main89 (Heap Int Int Addr Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main23 var4 var6 var12 var1 var5 var10 var15 var11) (and (and (and (and (and (and (and (= var2 (write var4 var11 (O_node (node var15 (next (getnode (read var4 var11))))))) (= var3 var6)) (= var13 var12)) (= var8 var1)) (= var14 var5)) (= var7 var10)) (= var9 var15)) (= var0 var11)))) (inv_main25 var2 var3 var13 var8 var14 var7 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int)) (or (not (inv_main38 var4 var10 var7 var0 var6 var8 var5 var3 var2 var1 var9)) (inv_main44 (write var4 var9 (O_node (node (data (getnode (read var4 var9))) nullAddr))) var10 var7 var0 var6 var8 var5 var3 var2 var1 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main20 var1 var8 var4 var0 var5 var2 var7 var3 var6)) (inv_main20 var1 var8 var4 var0 var5 var2 var7 var3 var6)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr)) (or (not (and (inv_main10 var4 var8 var13 var1 var7 var12) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (= var3 (newHeap (alloc var4 (O_node var0)))) (= var5 var8)) (= var11 var13)) (= var2 var1)) (= var10 var7)) (= var9 var12)) (= var6 var7)) (= var14 (newAddr (alloc var4 (O_node var0)))))) (<= 0 (+ var1 (- 1)))))) (inv_main20 var3 var5 var11 var2 var10 var9 var6 var14 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main59 var2 var7 var4 var0 var3 var5 var6 var1) (= var3 (data (getnode (read var2 var6)))))) (inv_main66 var2 var7 var4 var0 var3 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main61 var2 var8 var4 var0 var3 var5 var6 var1 var7) (and (or (= var7 nullAddr) (= (+ var1 1) var5)) (= var4 (data (getnode (read var2 var6))))))) (inv_main59 var2 var8 var4 var0 var3 var5 var7 (+ var1 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Int)) (or (not (and (inv_main54 var6 var11 var19 var12 var18 var9 var8 var3 var15 var17 var14 var7) (and (or (= var2 nullAddr) (= 0 var16)) (and (and (and (and (and (and (and (and (= var4 (write var6 var17 (O_node (node (data (getnode (read var6 var17))) var7)))) (= var5 var11)) (= var13 var19)) (= var2 var12)) (= var10 var18)) (= var16 var9)) (= var0 var8)) (= var20 var3)) (= var1 var15))))) (inv_main59 var4 var5 var13 var2 var10 var16 var2 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 node) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap)) (or (not (and (inv_main10 var2 var5 var13 var1 var3 var12) (and (and (not (= nullAddr var10)) (and (and (and (and (and (and (and (= var14 (newHeap (alloc var2 (O_node var8)))) (= var6 var5)) (= var4 var13)) (= var11 var1)) (= var7 var3)) (= var0 var12)) (= var9 var3)) (= var10 (newAddr (alloc var2 (O_node var8)))))) (<= 0 (+ var1 (- 1)))))) (inv_main17 var14 var6 var4 var11 var7 var0 var9 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Heap) (var22 Int) (var23 Addr) (var24 Addr) (var25 Int) (var26 Addr) (var27 Int) (var28 Int)) (or (not (and (inv_main86 var3 var7 var28 var24 var27 var4 var20 var16 var10) (and (not (= var1 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var11 var3) (= var8 var7)) (= var6 var28)) (= var23 var24)) (= var0 var27)) (= var18 var4)) (= var26 var20)) (= var12 var16)) (= var5 var10)) (= var14 (next (getnode (read var3 var10))))) (and (and (and (and (and (and (and (and (and (= var21 (write var11 var5 defObj)) (= var25 var8)) (= var9 var6)) (= var17 var23)) (= var15 var0)) (= var2 var18)) (= var13 var26)) (= var22 var12)) (= var19 var5)) (= var1 var14)))))) (inv_main86 var21 var25 var9 var17 var15 var2 var13 var22 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main71 var2 var7 var4 var0 var3 var5 var6 var1) (and (not (= var0 nullAddr)) (and (= var1 (+ 1 var7)) (= var6 nullAddr))))) (inv_main86 var2 var7 var4 var0 var3 var5 var6 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int)) (or (not (inv_main41 var5 var11 var8 var0 var7 var9 var6 var3 var2 var1 var10 var4)) (inv_main41 var5 var11 var8 var0 var7 var9 var6 var3 var2 var1 var10 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Int) (var8 node) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Heap) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 Addr) (var24 Int)) (or (not (and (inv_main10 var4 var9 var18 var0 var7 var15) (and (and (and (= nullAddr var11) (and (and (and (and (and (and (and (and (and (and (= var17 (newHeap (alloc var6 (O_node var8)))) (= var22 var2)) (= var12 var16)) (= var23 var20)) (= var14 var13)) (= var21 var3)) (= var19 3)) (= var1 var13)) (= var5 var3)) (= var10 var13)) (= var11 (newAddr (alloc var6 (O_node var8)))))) (and (and (and (and (and (= var6 var4) (= var2 var9)) (= var16 var18)) (= var20 var15)) (= var13 5)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var9 (* (- 2) var24)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var9 (* (- 2) var24)))) (- 1)))) (or (not (<= 0 (+ (+ var9 (* (- 2) var24)) (- 1)))) (<= 0 (+ var9 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var9 (* (- 2) var24))) (- 1)))) (<= 0 (+ (* (- 1) var9) (- 1))))) (= var3 var24)))) (not (<= 0 (+ var0 (- 1))))))) (inv_main41 var17 var22 var12 var23 var14 var21 var19 var1 var5 var10 var11 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main61 var2 var8 var4 var0 var3 var5 var6 var1 var7) (and (and (not (= var7 nullAddr)) (not (= (+ var1 1) var5))) (= var4 (data (getnode (read var2 var6))))))) (inv_main60 var2 var8 var4 var0 var3 var5 var7 (+ var1 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Int)) (or (not (and (inv_main54 var6 var11 var19 var12 var18 var9 var8 var3 var15 var17 var14 var7) (and (and (not (= var2 nullAddr)) (not (= 0 var16))) (and (and (and (and (and (and (and (and (= var4 (write var6 var17 (O_node (node (data (getnode (read var6 var17))) var7)))) (= var5 var11)) (= var13 var19)) (= var2 var12)) (= var10 var18)) (= var16 var9)) (= var0 var8)) (= var20 var3)) (= var1 var15))))) (inv_main60 var4 var5 var13 var2 var10 var16 var2 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 Heap) (var24 Int)) (or (not (and (inv_main51 var4 var12 var22 var16 var21 var9 var7 var1 var19 var20 var18 var6) (and (and (and (and (and (and (and (and (and (and (and (and (= var23 var4) (= var14 var12)) (= var5 var22)) (= var2 var16)) (= var24 var21)) (= var0 var9)) (= var8 var7)) (= var13 var1)) (= var11 var19)) (= var15 var20)) (= var17 var18)) (= var10 var6)) (= var3 (next (getnode (read var4 var6))))))) (inv_main48 var23 var14 var5 var2 var24 var0 var8 var13 (+ var11 (- 1)) var15 var17 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Heap) (var19 Int) (var20 Int) (var21 Int) (var22 Heap) (var23 Int) (var24 Int) (var25 Addr) (var26 Int) (var27 Int) (var28 Int) (var29 Int) (var30 Addr) (var31 Int) (var32 Int)) (or (not (and (inv_main44 var4 var10 var29 var25 var28 var7 var6 var2 var11 var1 var16) (and (and (and (and (and (and (and (and (and (and (and (= var22 var18) (= var24 var5)) (= var19 var27)) (= var0 var12)) (= var13 var15)) (= var20 var14)) (= var32 var26)) (= var21 var23)) (= var17 var8)) (= var30 var9)) (= var3 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var18 (write var4 var16 (O_node (node var1 (next (getnode (read var4 var16))))))) (= var5 var10)) (= var27 var29)) (= var12 var25)) (= var15 var28)) (= var14 var7)) (= var26 var6)) (= var23 var2)) (= var8 var11)) (= var31 var1)) (= var9 var16))))) (inv_main48 var22 var24 var19 var0 var13 var20 var32 var21 var17 var30 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main48 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4) (and (not (= var1 nullAddr)) (not (<= 0 (+ var2 (- 1))))))) (inv_main55 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main61 var2 var8 var4 var0 var3 var5 var6 var1 var7) (not (= var4 (data (getnode (read var2 var6))))))) (inv_main89 var2 var8 var4 var0 var3 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main74 var2 var8 var4 var0 var3 var5 var6 var1 var7) (not (= var4 (data (getnode (read var2 var6))))))) (inv_main89 var2 var8 var4 var0 var3 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main59 var2 var7 var4 var0 var3 var5 var6 var1) (not (= var3 (data (getnode (read var2 var6))))))) (inv_main89 var2 var7 var4 var0 var3 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main71 var2 var7 var4 var0 var3 var5 var6 var1) (and (not (= var1 (+ 1 var7))) (= var6 nullAddr)))) (inv_main89 var2 var7 var4 var0 var3 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main73 var2 var7 var4 var0 var3 var5 var6 var1)) (inv_main74 var2 var7 var4 var0 var3 var5 var6 var1 (next (getnode (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main17 var1 var7 var4 var0 var5 var2 var6 var3)) (inv_main23 (write var1 var3 (O_node (node (data (getnode (read var1 var3))) nullAddr))) var7 var4 var0 var5 var2 var6 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 node) (var24 Int)) (or (not (and (inv_main10 var10 var14 var19 var1 var12 var17) (and (and (and (not (= nullAddr var6)) (and (and (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var5 (O_node var23)))) (= var22 var0)) (= var13 var2)) (= var20 var4)) (= var16 var7)) (= var15 var11)) (= var21 3)) (= var8 var7)) (= var3 var11)) (= var18 var7)) (= var6 (newAddr (alloc var5 (O_node var23)))))) (and (and (and (and (and (= var5 var10) (= var0 var14)) (= var2 var19)) (= var4 var17)) (= var7 5)) (and (and (and (and (<= 0 (+ (+ 2 (* (- 1) (+ var14 (* (- 2) var24)))) (- 1))) (<= 0 (+ (+ 2 (* 1 (+ var14 (* (- 2) var24)))) (- 1)))) (or (not (<= 0 (+ (+ var14 (* (- 2) var24)) (- 1)))) (<= 0 (+ var14 (- 1))))) (or (not (<= 0 (+ (* (- 1) (+ var14 (* (- 2) var24))) (- 1)))) (<= 0 (+ (* (- 1) var14) (- 1))))) (= var11 var24)))) (not (<= 0 (+ var1 (- 1))))))) (inv_main38 var9 var22 var13 var20 var16 var15 var21 var8 var3 var18 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (or (not (and (inv_main74 var2 var8 var4 var0 var3 var5 var6 var1 var7) (= var4 (data (getnode (read var2 var6)))))) (inv_main71 var2 var8 var4 var0 var3 var5 var7 (+ var1 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main66 var5 var10 var15 var11 var14 var6 var7 var0) (and (and (and (and (and (and (and (and (= var1 var5) (= var13 var10)) (= var9 var15)) (= var16 var11)) (= var3 var14)) (= var8 var6)) (= var4 var7)) (= var2 var0)) (= var12 (next (getnode (read var5 var7))))))) (inv_main71 var1 var13 var9 var16 var3 var8 var12 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main60 var2 var7 var4 var0 var3 var5 var6 var1)) (inv_main61 var2 var7 var4 var0 var3 var5 var6 var1 (next (getnode (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main71 var2 var7 var4 var0 var3 var5 var6 var1) (not (= var6 nullAddr)))) (inv_main73 var2 var7 var4 var0 var3 var5 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main48 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4) (<= 0 (+ var2 (- 1))))) (inv_main51 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var4 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (or (not (inv_main55 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4)) (inv_main54 (write var5 var1 (O_node (node (data (getnode (read var5 var1))) var6))) var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main48 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4) (and (= var1 nullAddr) (not (<= 0 (+ var2 (- 1))))))) (inv_main54 var5 var11 var9 var6 var8 var10 var7 var3 var2 var6 var1 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr)) (or (not (and (inv_main25 var4 var8 var11 var0 var6 var10 var13) (and (and (and (and (and (and (= var12 (write var4 var13 (O_node (node (data (getnode (read var4 var13))) var10)))) (= var3 var8)) (= var9 var11)) (= var5 var0)) (= var2 var6)) (= var7 var10)) (= var1 var13)))) (inv_main10 var12 var3 var9 (+ var5 (- 1)) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (and (inv_main4 var1 var7 var2) (and (and (and (and (and (= var0 var1) (= var3 var7)) (= var5 var2)) (= var8 var7)) (= var6 var2)) (= var4 nullAddr)))) (inv_main10 var0 var3 var5 var8 var6 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main17 var1 var7 var4 var0 var5 var2 var6 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main23 var1 var7 var4 var0 var5 var2 var6 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main25 var1 var6 var3 var0 var4 var2 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int)) (not (and (inv_main38 var4 var10 var7 var0 var6 var8 var5 var3 var2 var1 var9) (not (is-O_node (read var4 var9))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int)) (not (and (inv_main44 var4 var10 var7 var0 var6 var8 var5 var3 var2 var1 var9) (not (is-O_node (read var4 var9))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (not (and (inv_main51 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (not (and (inv_main55 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int)) (not (and (inv_main54 var5 var11 var9 var0 var8 var10 var7 var3 var2 var6 var1 var4) (not (is-O_node (read var5 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main60 var2 var7 var4 var0 var3 var5 var6 var1) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (not (and (inv_main61 var2 var8 var4 var0 var3 var5 var6 var1 var7) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main59 var2 var7 var4 var0 var3 var5 var6 var1) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main66 var2 var7 var4 var0 var3 var5 var6 var1) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main73 var2 var7 var4 var0 var3 var5 var6 var1) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int)) (not (and (inv_main74 var2 var8 var4 var0 var3 var5 var6 var1 var7) (not (is-O_node (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int)) (not (and (inv_main86 var3 var8 var5 var0 var4 var6 var7 var2 var1) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (inv_main89 var2 var7 var4 var0 var3 var5 var6 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2n_prepend_equal.i.smt2 b/heap-theory-benchmarks/heap/sll2n_prepend_equal.i.smt2 new file mode 100644 index 00000000..7b2cbc55 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2n_prepend_equal.i.smt2 @@ -0,0 +1,66 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr)) + ) +)) +(declare-fun inv_main10 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main39 (Heap Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main44 (Heap Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main47 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main50 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Addr Int Addr) Bool) +(declare-fun inv_main65 (Heap Int Int Addr Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int) (var11 node) (var12 Int) (var13 Heap) (var14 Int)) (or (not (and (inv_main10 var9 var4 var7 var6 var14 var3) (and (and (not (= nullAddr var8)) (and (and (and (and (and (and (and (= var13 (newHeap (alloc var9 (O_node var11)))) (= var2 var4)) (= var10 var7)) (= var0 var6)) (= var12 var14)) (= var5 var3)) (= var1 var14)) (= var8 (newAddr (alloc var9 (O_node var11)))))) (<= 0 (+ var6 (- 1)))))) (inv_main17 var13 var2 var10 var0 var12 var5 var1 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (or (not (inv_main49 var5 var3 var4 var1 var2 var0)) (inv_main50 var5 var3 var4 var1 var2 var0 (next (getnode (read var5 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int)) (or (not (inv_main39 var7 var4 var5 var0 var2 var6 var8 var1 var3)) (inv_main39 var7 var4 var5 var0 var2 var6 var8 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 node) (var14 Int)) (or (not (and (inv_main10 var9 var4 var7 var6 var14 var3) (and (and (= nullAddr var8) (and (and (and (and (and (and (and (= var0 (newHeap (alloc var9 (O_node var13)))) (= var1 var4)) (= var5 var7)) (= var2 var3)) (= var12 3)) (= var11 var7)) (= var10 var7)) (= var8 (newAddr (alloc var9 (O_node var13)))))) (not (<= 0 (+ var6 (- 1))))))) (inv_main39 var0 var1 var5 var2 var12 var11 var10 var8 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap)) (or (not (inv_main17 var7 var1 var5 var4 var6 var0 var3 var2)) (inv_main23 (write var7 var2 (O_node (node (data (getnode (read var7 var2))) nullAddr))) var1 var5 var4 var6 var0 var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main42 var9 var3 var7 var12 var14 var8 var15 var13) (and (and (and (and (and (and (and (= var0 (write var9 var13 (O_node (node var15 (next (getnode (read var9 var13))))))) (= var2 var3)) (= var6 var7)) (= var5 var12)) (= var10 var14)) (= var11 var8)) (= var4 var15)) (= var1 var13)))) (inv_main44 var0 var2 var6 var5 var10 var11 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int)) (or (not (and (inv_main23 var9 var4 var7 var6 var15 var3 var5 var13) (and (and (and (and (and (and (and (= var10 (write var9 var13 (O_node (node var5 (next (getnode (read var9 var13))))))) (= var1 var4)) (= var11 var7)) (= var0 var6)) (= var12 var15)) (= var2 var3)) (= var14 var5)) (= var8 var13)))) (inv_main25 var10 var1 var11 var0 var12 var2 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Int) (var21 Addr) (var22 Addr)) (or (not (and (inv_main62 var9 var6 var8 var15 var19 var14 var13) (and (not (= var5 nullAddr)) (and (and (and (and (and (and (and (and (= var10 var9) (= var4 var6)) (= var17 var8)) (= var3 var15)) (= var21 var19)) (= var12 var14)) (= var16 var13)) (= var11 (next (getnode (read var9 var13))))) (and (and (and (and (and (and (and (= var2 (write var10 var16 defObj)) (= var20 var4)) (= var18 var17)) (= var0 var3)) (= var22 var21)) (= var7 var12)) (= var1 var16)) (= var5 var11)))))) (inv_main62 var2 var20 var18 var0 var22 var7 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (or (not (and (inv_main47 var5 var3 var4 var1 var2 var0) (and (not (= var1 nullAddr)) (and (= var0 (+ 1 var3)) (= var2 nullAddr))))) (inv_main62 var5 var3 var4 var1 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 node) (var14 Int)) (or (not (and (inv_main10 var7 var2 var6 var5 var14 var0) (and (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (= var3 (newHeap (alloc var7 (O_node var13)))) (= var10 var2)) (= var12 var6)) (= var8 var0)) (= var1 3)) (= var4 var6)) (= var9 var6)) (= var11 (newAddr (alloc var7 (O_node var13)))))) (not (<= 0 (+ var5 (- 1))))))) (inv_main36 var3 var10 var12 var8 var1 var4 var9 var11)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (or (not (and (inv_main47 var5 var3 var4 var1 var2 var0) (not (= var2 nullAddr)))) (inv_main49 var5 var3 var4 var1 var2 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap)) (or (not (and (inv_main50 var6 var4 var5 var1 var3 var0 var2) (not (= var5 (data (getnode (read var6 var3))))))) (inv_main65 var6 var4 var5 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (or (not (and (inv_main47 var5 var3 var4 var1 var2 var0) (and (not (= var0 (+ 1 var3))) (= var2 nullAddr)))) (inv_main65 var5 var3 var4 var1 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int)) (or (not (inv_main36 var6 var3 var4 var0 var2 var5 var7 var1)) (inv_main42 (write var6 var1 (O_node (node (data (getnode (read var6 var1))) nullAddr))) var3 var4 var0 var2 var5 var7 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap)) (or (not (inv_main20 var8 var2 var6 var5 var7 var1 var4 var3 var0)) (inv_main20 var8 var2 var6 var5 var7 var1 var4 var3 var0)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr)) (or (not (and (inv_main10 var10 var6 var9 var8 var13 var4) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var10 (O_node var0)))) (= var3 var6)) (= var2 var9)) (= var1 var8)) (= var7 var13)) (= var5 var4)) (= var12 var13)) (= var14 (newAddr (alloc var10 (O_node var0)))))) (<= 0 (+ var8 (- 1)))))) (inv_main20 var11 var3 var2 var1 var7 var5 var12 var14 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap)) (or (not (and (inv_main50 var6 var4 var5 var1 var3 var0 var2) (= var5 (data (getnode (read var6 var3)))))) (inv_main47 var6 var4 var5 var1 var2 (+ var0 1))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main44 var8 var3 var6 var10 var11 var7 var1) (and (and (and (and (and (and (= var4 (write var8 var1 (O_node (node (data (getnode (read var8 var1))) var10)))) (= var9 var3)) (= var12 var6)) (= var13 var10)) (= var0 var11)) (= var2 var7)) (= var5 var1)))) (inv_main47 var4 var9 var12 var5 var5 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int)) (or (not (and (inv_main25 var7 var4 var6 var5 var13 var2 var3) (and (and (and (and (and (and (= var12 (write var7 var3 (O_node (node (data (getnode (read var7 var3))) var2)))) (= var9 var4)) (= var8 var6)) (= var11 var5)) (= var0 var13)) (= var10 var2)) (= var1 var3)))) (inv_main10 var12 var9 var8 (+ var11 (- 1)) var0 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int)) (or (not (and (inv_main4 var7 var4 var6) (and (and (and (and (and (= var1 var7) (= var0 var4)) (= var8 var6)) (= var3 var4)) (= var2 var6)) (= var5 nullAddr)))) (inv_main10 var1 var0 var8 var3 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap)) (not (and (inv_main17 var7 var1 var5 var4 var6 var0 var3 var2) (not (is-O_node (read var7 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap)) (not (and (inv_main23 var7 var1 var5 var4 var6 var0 var3 var2) (not (is-O_node (read var7 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main25 var6 var2 var4 var3 var5 var0 var1) (not (is-O_node (read var6 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int)) (not (and (inv_main36 var6 var3 var4 var0 var2 var5 var7 var1) (not (is-O_node (read var6 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int)) (not (and (inv_main42 var6 var3 var4 var0 var2 var5 var7 var1) (not (is-O_node (read var6 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main44 var6 var3 var4 var1 var2 var5 var0) (not (is-O_node (read var6 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main49 var5 var3 var4 var1 var2 var0) (not (is-O_node (read var5 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main50 var6 var4 var5 var1 var3 var0 var2) (not (is-O_node (read var6 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap)) (not (and (inv_main62 var6 var4 var5 var2 var3 var1 var0) (not (is-O_node (read var6 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap)) (not (inv_main65 var5 var3 var4 var1 var2 var0)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2n_remove_all_reverse.i.smt2 b/heap-theory-benchmarks/heap/sll2n_remove_all_reverse.i.smt2 new file mode 100644 index 00000000..e61c38f7 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2n_remove_all_reverse.i.smt2 @@ -0,0 +1,57 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr)) + ) +)) +(declare-fun inv_main10 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main30 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main33 (Heap Int Int Addr Int Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main40 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main41 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main43 (Heap Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main49 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var2 var4 var3 var0 var1) (and (not (= nullAddr var0)) (not (<= 0 var1))))) (inv_main49 var2 var4 var3 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main23 var2 var5 var11 var1 var3 var8 var14 var9) (and (and (and (and (and (and (and (= var13 (write var2 var9 (O_node (node var14 (next (getnode (read var2 var9))))))) (= var10 var5)) (= var15 var11)) (= var4 var1)) (= var12 var3)) (= var6 var8)) (= var0 var14)) (= var7 var9)))) (inv_main25 var13 var10 var15 var4 var12 var6 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main20 var1 var8 var4 var0 var5 var2 var7 var3 var6)) (inv_main20 var1 var8 var4 var0 var5 var2 var7 var3 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Int) (var6 node) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main10 var3 var10 var13 var1 var5 var12) (and (and (= nullAddr var11) (and (and (and (and (and (and (and (= var4 (newHeap (alloc var3 (O_node var6)))) (= var2 var10)) (= var8 var13)) (= var9 var1)) (= var0 var5)) (= var7 var12)) (= var14 var5)) (= var11 (newAddr (alloc var3 (O_node var6)))))) (<= 0 (+ var1 (- 1)))))) (inv_main20 var4 var2 var8 var9 var0 var7 var14 var11 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr)) (or (not (and (inv_main43 var4 var6 var15 var7 var13 var9 var2 var0) (and (and (and (and (and (and (and (and (= var1 var4) (= var3 var6)) (= var5 var15)) (= var8 var7)) (= var11 var13)) (= var10 var9)) (= var16 var2)) (= var12 var0)) (= var14 (next (getnode (read var4 var0))))))) (inv_main40 var1 var3 var5 var8 var11 var10 var16 var14)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int)) (or (not (and (inv_main33 var5 var9 var8 var0 var4 var12) (and (and (and (and (and (and (and (= var2 var5) (= var1 var9)) (= var11 var8)) (= var7 var0)) (= var6 var4)) (= var10 var12)) (= var3 nullAddr)) (not (= nullAddr (next (getnode (read var5 var0)))))))) (inv_main40 var2 var1 var11 var7 var6 var10 var3 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (or (not (and (inv_main40 var4 var6 var5 var0 var3 var7 var2 var1) (= (next (getnode (read var4 var1))) nullAddr))) (inv_main41 var4 var6 var5 var0 var3 var7 var2 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 node) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main10 var4 var7 var13 var1 var5 var12) (and (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (= var9 (newHeap (alloc var4 (O_node var6)))) (= var3 var7)) (= var14 var13)) (= var8 var1)) (= var2 var5)) (= var10 var12)) (= var0 var5)) (= var11 (newAddr (alloc var4 (O_node var6)))))) (<= 0 (+ var1 (- 1)))))) (inv_main17 var9 var3 var14 var8 var2 var10 var0 var11)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Heap)) (or (not (and (inv_main41 var6 var10 var18 var12 var16 var13 var3 var1) (and (and (and (and (and (and (and (and (= var4 (write var6 var3 (O_node (node (data (getnode (read var6 var3))) nullAddr)))) (= var9 var10)) (= var8 var18)) (= var7 var12)) (= var17 var16)) (= var5 var13)) (= var15 var3)) (= var19 var1)) (and (and (and (and (and (= var21 (write var4 var19 defObj)) (= var14 var9)) (= var11 var8)) (= var20 var7)) (= var0 var17)) (= var2 var5))))) (inv_main30 var21 var14 var11 var20 (+ var0 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int)) (or (not (and (inv_main33 var2 var6 var14 var7 var11 var8) (and (and (= nullAddr (next (getnode (read var2 var7)))) (and (and (and (and (and (= var13 (write var2 var7 defObj)) (= var12 var6)) (= var10 var14)) (= var5 var7)) (= var4 var11)) (= var3 var8))) (and (and (and (and (and (= var15 var13) (= var1 var12)) (= var0 var10)) (= var16 nullAddr)) (= var9 var4)) (= var17 var3))))) (inv_main30 var15 var1 var0 var16 (+ var9 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (or (not (and (inv_main10 var1 var5 var3 var0 var4 var2) (not (<= 0 (+ var0 (- 1)))))) (inv_main30 var1 var5 var3 var2 (+ var5 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main17 var1 var7 var4 var0 var5 var2 var6 var3)) (inv_main23 (write var1 var3 (O_node (node (data (getnode (read var1 var3))) nullAddr))) var7 var4 var0 var5 var2 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var2 var4 var3 var0 var1) (<= 0 var1))) (inv_main33 var2 var4 var3 var0 var1 3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr)) (or (not (and (inv_main25 var2 var7 var12 var0 var4 var11 var13) (and (and (and (and (and (and (= var3 (write var2 var13 (O_node (node (data (getnode (read var2 var13))) var11)))) (= var8 var7)) (= var6 var12)) (= var9 var0)) (= var10 var4)) (= var5 var11)) (= var1 var13)))) (inv_main10 var3 var8 var6 (+ var9 (- 1)) var10 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (and (inv_main4 var2 var7 var4) (and (and (and (and (and (= var1 var2) (= var5 var7)) (= var3 var4)) (= var0 var7)) (= var8 var4)) (= var6 nullAddr)))) (inv_main10 var1 var5 var3 var0 var8 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (or (not (and (inv_main40 var4 var6 var5 var0 var3 var7 var2 var1) (not (= (next (getnode (read var4 var1))) nullAddr)))) (inv_main43 var4 var6 var5 var0 var3 var7 var1 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main17 var1 var7 var4 var0 var5 var2 var6 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main23 var1 var7 var4 var0 var5 var2 var6 var3) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main25 var1 var6 var3 var0 var4 var2 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main33 var2 var4 var3 var0 var1 var5) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main40 var4 var6 var5 var0 var3 var7 var2 var1) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main43 var4 var6 var5 var0 var3 var7 var2 var1) (not (is-O_node (read var4 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main41 var4 var6 var5 var0 var3 var7 var2 var1) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (not (inv_main49 var2 var4 var3 var0 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2n_update_all.i.smt2 b/heap-theory-benchmarks/heap/sll2n_update_all.i.smt2 new file mode 100644 index 00000000..f459d40a --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2n_update_all.i.smt2 @@ -0,0 +1,66 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr)) + ) +)) +(declare-fun inv_main10 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main30 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main38 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main17 var0 var7 var6 var5 var2 var4 var3 var1)) (inv_main23 (write var0 var1 (O_node (node (data (getnode (read var0 var1))) nullAddr))) var7 var6 var5 var2 var4 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int)) (or (not (and (inv_main59 var4 var8 var6 var11 var15 var12) (and (not (= var17 nullAddr)) (and (and (and (and (and (and (and (= var7 var4) (= var9 var8)) (= var19 var6)) (= var14 var11)) (= var10 var15)) (= var5 var12)) (= var18 (next (getnode (read var4 var12))))) (and (and (and (and (and (and (= var0 (write var7 var5 defObj)) (= var1 var9)) (= var16 var19)) (= var3 var14)) (= var2 var10)) (= var13 var5)) (= var17 var18)))))) (inv_main59 var0 var1 var16 var3 var2 var17)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main42 var1 var4 var3 var0 var2) (and (not (= var0 nullAddr)) (not (<= 0 (+ (+ var4 (* (- 1) var2)) (- 1))))))) (inv_main59 var1 var4 var3 var0 var2 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main52 var2 var8 var6 var9 var14 var0 var10 var12) (and (<= 0 (+ (+ var16 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (= var7 var2) (= var4 var8)) (= var3 var6)) (= var13 var9)) (= var1 var14)) (= var11 var0)) (= var15 var10)) (= var16 var12)) (= var5 (next (getnode (read var2 var10)))))))) (inv_main52 var7 var4 var3 var13 var1 var11 var5 (+ var16 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main42 var1 var4 var3 var0 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 (+ (+ var4 (* (- 1) var2)) (- 1)))))) (inv_main52 var1 var4 var3 var0 var2 (+ var2 var4) var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var1 var4 var3 var0 var2) (not (<= 0 (+ (+ var4 (* (- 1) var2)) (- 1)))))) (inv_main42 var1 var4 var3 var0 0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main51 var2 var5 var4 var6 var13 var1 var7 var11) (and (= var14 var9) (and (and (and (and (and (and (= var0 var2) (= var3 var5)) (= var10 var4)) (= var8 var6)) (= var12 var13)) (= var14 var1)) (= var9 (data (getnode (read var2 var7)))))))) (inv_main42 var0 var3 var10 var8 (+ var12 1))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Heap) (var15 Int) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main38 var2 var8 var6 var11 var15 var4 var13 var16 var18) (and (not (<= 0 (+ (+ var12 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (and (= var14 var2) (= var9 var8)) (= var7 var6)) (= var3 var11)) (= var10 var15)) (= var5 var4)) (= var1 var13)) (= var0 var16)) (= var12 var18)) (= var17 (next (getnode (read var2 var13)))))))) (inv_main37 var14 var9 var7 var3 var10 var5 var17 var0 (+ var12 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var1 var4 var3 var0 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 (+ (+ var4 (* (- 1) var2)) (- 1)))))) (inv_main37 var1 var4 var3 var0 var2 (+ var2 var4) var0 (+ var2 var4) var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main37 var2 var6 var4 var7 var11 var3 var8 var15 var17) (and (and (and (and (and (and (and (and (= var12 (write var2 var8 (O_node (node var15 (next (getnode (read var2 var8))))))) (= var16 var6)) (= var5 var4)) (= var13 var7)) (= var9 var11)) (= var10 var3)) (= var0 var8)) (= var1 var15)) (= var14 var17)))) (inv_main30 var12 var16 var5 var13 (+ var9 1))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (or (not (and (inv_main10 var0 var5 var4 var3 var1 var2) (not (<= 0 (+ var3 (- 1)))))) (inv_main30 var0 var5 var4 var2 0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main51 var4 var7 var5 var9 var14 var3 var12 var13) (and (not (= var8 var0)) (and (and (and (and (and (and (= var6 var4) (= var2 var7)) (= var1 var5)) (= var11 var9)) (= var10 var14)) (= var8 var3)) (= var0 (data (getnode (read var4 var12)))))))) (inv_main62 var6 var2 var1 var11 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int)) (or (not (and (inv_main25 var1 var7 var6 var5 var3 var4 var12) (and (and (and (and (and (and (= var2 (write var1 var12 (O_node (node (data (getnode (read var1 var12))) var4)))) (= var13 var7)) (= var9 var6)) (= var11 var5)) (= var8 var3)) (= var10 var4)) (= var0 var12)))) (inv_main10 var2 var13 var9 (+ var11 (- 1)) var8 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (and (inv_main4 var3 var8 var6) (and (and (and (and (and (= var4 var3) (= var1 var8)) (= var7 var6)) (= var0 var8)) (= var5 var6)) (= var2 nullAddr)))) (inv_main10 var4 var1 var7 var0 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main20 var0 var8 var7 var6 var3 var5 var4 var2 var1)) (inv_main20 var0 var8 var7 var6 var3 var5 var4 var2 var1)))) +(assert (forall ((var0 Int) (var1 node) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main10 var2 var11 var8 var7 var5 var6) (and (and (= nullAddr var9) (and (and (and (and (and (and (and (= var3 (newHeap (alloc var2 (O_node var1)))) (= var13 var11)) (= var0 var8)) (= var12 var7)) (= var10 var5)) (= var4 var6)) (= var14 var5)) (= var9 (newAddr (alloc var2 (O_node var1)))))) (<= 0 (+ var7 (- 1)))))) (inv_main20 var3 var13 var0 var12 var10 var4 var14 var9 1)))) +(assert (forall ((var0 Int) (var1 node) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main10 var3 var8 var7 var6 var4 var5) (and (and (not (= nullAddr var12)) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var3 (O_node var1)))) (= var13 var8)) (= var9 var7)) (= var0 var6)) (= var2 var4)) (= var10 var5)) (= var14 var4)) (= var12 (newAddr (alloc var3 (O_node var1)))))) (<= 0 (+ var6 (- 1)))))) (inv_main17 var11 var13 var9 var0 var2 var10 var14 var12)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Heap) (var15 Int) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main38 var2 var8 var6 var11 var15 var4 var13 var16 var18) (and (<= 0 (+ (+ var12 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (and (= var14 var2) (= var9 var8)) (= var7 var6)) (= var3 var11)) (= var10 var15)) (= var5 var4)) (= var1 var13)) (= var0 var16)) (= var12 var18)) (= var17 (next (getnode (read var2 var13)))))))) (inv_main38 var14 var9 var7 var3 var10 var5 var17 var0 (+ var12 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var1 var4 var3 var0 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 (+ (+ var4 (* (- 1) var2)) (- 1)))))) (inv_main38 var1 var4 var3 var0 var2 (+ var2 var4) var0 (+ var2 var4) var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main52 var2 var8 var6 var9 var14 var0 var10 var12) (and (not (<= 0 (+ (+ var16 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (= var7 var2) (= var4 var8)) (= var3 var6)) (= var13 var9)) (= var1 var14)) (= var11 var0)) (= var15 var10)) (= var16 var12)) (= var5 (next (getnode (read var2 var10)))))))) (inv_main51 var7 var4 var3 var13 var1 var11 var5 (+ var16 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main42 var1 var4 var3 var0 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 (+ (+ var4 (* (- 1) var2)) (- 1)))))) (inv_main51 var1 var4 var3 var0 var2 (+ var2 var4) var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int)) (or (not (and (inv_main23 var2 var10 var9 var8 var5 var7 var6 var4) (and (and (and (and (and (and (and (= var0 (write var2 var4 (O_node (node var6 (next (getnode (read var2 var4))))))) (= var15 var10)) (= var12 var9)) (= var13 var8)) (= var11 var5)) (= var3 var7)) (= var14 var6)) (= var1 var4)))) (inv_main25 var0 var15 var12 var13 var11 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main17 var0 var7 var6 var5 var2 var4 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main23 var0 var7 var6 var5 var2 var4 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main25 var0 var6 var5 var4 var2 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main38 var2 var7 var5 var0 var3 var4 var1 var6 var8) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main37 var2 var7 var5 var0 var3 var4 var1 var6 var8) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main52 var3 var7 var6 var0 var5 var2 var1 var4) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main51 var3 var7 var6 var0 var5 var2 var1 var4) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main59 var2 var5 var4 var0 var3 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (not (inv_main62 var1 var4 var3 var0 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll2n_update_all_reverse.i.smt2 b/heap-theory-benchmarks/heap/sll2n_update_all_reverse.i.smt2 new file mode 100644 index 00000000..be008b49 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll2n_update_all_reverse.i.smt2 @@ -0,0 +1,66 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (next Addr)) + ) +)) +(declare-fun inv_main10 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main20 (Heap Int Int Int Int Addr Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main30 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main37 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main38 (Heap Int Int Addr Int Int Addr Int Int) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main52 (Heap Int Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main59 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 2 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (or (not (inv_main17 var0 var7 var6 var5 var2 var4 var3 var1)) (inv_main23 (write var0 var1 (O_node (node (data (getnode (read var0 var1))) nullAddr))) var7 var6 var5 var2 var4 var3 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Addr)) (or (not (and (inv_main38 var3 var10 var8 var12 var16 var15 var18 var13 var4) (and (not (<= 0 (+ (+ var7 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (and (= var9 var3) (= var5 var10)) (= var11 var8)) (= var6 var12)) (= var17 var16)) (= var0 var15)) (= var2 var18)) (= var1 var13)) (= var7 var4)) (= var14 (next (getnode (read var3 var18)))))))) (inv_main37 var9 var5 var11 var6 var17 var0 var14 var1 (+ var7 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var1 var4 var3 var0 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 var2)))) (inv_main37 var1 var4 var3 var0 var2 (+ var2 var4) var0 (+ var2 var4) var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main51 var4 var8 var7 var10 var14 var3 var6 var13) (and (not (= var1 var5)) (and (and (and (and (and (and (= var2 var4) (= var12 var8)) (= var11 var7)) (= var9 var10)) (= var0 var14)) (= var1 var3)) (= var5 (data (getnode (read var4 var6)))))))) (inv_main62 var2 var12 var11 var9 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Addr)) (or (not (and (inv_main38 var3 var10 var8 var12 var16 var15 var18 var13 var4) (and (<= 0 (+ (+ var7 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (and (= var9 var3) (= var5 var10)) (= var11 var8)) (= var6 var12)) (= var17 var16)) (= var0 var15)) (= var2 var18)) (= var1 var13)) (= var7 var4)) (= var14 (next (getnode (read var3 var18)))))))) (inv_main38 var9 var5 var11 var6 var17 var0 var14 var1 (+ var7 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var1 var4 var3 var0 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 var2)))) (inv_main38 var1 var4 var3 var0 var2 (+ var2 var4) var0 (+ var2 var4) var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Addr) (var17 Addr)) (or (not (and (inv_main37 var2 var8 var6 var9 var14 var13 var17 var10 var4) (and (and (and (and (and (and (and (and (= var7 (write var2 var17 (O_node (node var10 (next (getnode (read var2 var17))))))) (= var15 var8)) (= var11 var6)) (= var12 var9)) (= var0 var14)) (= var1 var13)) (= var16 var17)) (= var5 var10)) (= var3 var4)))) (inv_main30 var7 var15 var11 var12 (+ var0 (- 1)))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (or (not (and (inv_main10 var0 var5 var4 var3 var1 var2) (not (<= 0 (+ var3 (- 1)))))) (inv_main30 var0 var5 var4 var2 (+ var5 (- 1)))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main52 var2 var8 var7 var10 var14 var0 var6 var12) (and (<= 0 (+ (+ var9 (- 1)) (- 1))) (and (and (and (and (and (and (and (and (= var3 var2) (= var13 var8)) (= var1 var7)) (= var11 var10)) (= var5 var14)) (= var16 var0)) (= var4 var6)) (= var9 var12)) (= var15 (next (getnode (read var2 var6)))))))) (inv_main52 var3 var13 var1 var11 var5 var16 var15 (+ var9 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main42 var1 var4 var3 var0 var2) (and (<= 0 (+ var2 (- 1))) (<= 0 var2)))) (inv_main52 var1 var4 var3 var0 var2 (+ var2 var4) var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr)) (or (not (and (inv_main25 var2 var8 var6 var5 var3 var4 var13) (and (and (and (and (and (and (= var10 (write var2 var13 (O_node (node (data (getnode (read var2 var13))) var4)))) (= var12 var8)) (= var9 var6)) (= var0 var5)) (= var11 var3)) (= var1 var4)) (= var7 var13)))) (inv_main10 var10 var12 var9 (+ var0 (- 1)) var11 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int)) (or (not (and (inv_main4 var2 var7 var5) (and (and (and (and (and (= var1 var2) (= var8 var7)) (= var6 var5)) (= var0 var7)) (= var4 var5)) (= var3 nullAddr)))) (inv_main10 var1 var8 var6 var0 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main30 var1 var4 var3 var0 var2) (not (<= 0 var2)))) (inv_main42 var1 var4 var3 var0 (+ var4 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main51 var1 var6 var4 var7 var13 var0 var3 var10) (and (= var5 var2) (and (and (and (and (and (and (= var11 var1) (= var8 var6)) (= var14 var4)) (= var12 var7)) (= var9 var13)) (= var5 var0)) (= var2 (data (getnode (read var1 var3)))))))) (inv_main42 var11 var8 var14 var12 (+ var9 (- 1)))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int)) (or (not (inv_main20 var0 var8 var7 var6 var3 var5 var4 var2 var1)) (inv_main20 var0 var8 var7 var6 var3 var5 var4 var2 var1)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Addr)) (or (not (and (inv_main10 var2 var11 var8 var7 var5 var6) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (= var13 (newHeap (alloc var2 (O_node var0)))) (= var12 var11)) (= var10 var8)) (= var3 var7)) (= var9 var5)) (= var1 var6)) (= var4 var5)) (= var14 (newAddr (alloc var2 (O_node var0)))))) (<= 0 (+ var7 (- 1)))))) (inv_main20 var13 var12 var10 var3 var9 var1 var4 var14 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 node)) (or (not (and (inv_main10 var3 var8 var7 var6 var4 var5) (and (and (not (= nullAddr var1)) (and (and (and (and (and (and (and (= var10 (newHeap (alloc var3 (O_node var14)))) (= var12 var8)) (= var0 var7)) (= var13 var6)) (= var2 var4)) (= var9 var5)) (= var11 var4)) (= var1 (newAddr (alloc var3 (O_node var14)))))) (<= 0 (+ var6 (- 1)))))) (inv_main17 var10 var12 var0 var13 var2 var9 var11 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int)) (or (not (and (inv_main52 var2 var8 var7 var10 var14 var0 var6 var12) (and (not (<= 0 (+ (+ var9 (- 1)) (- 1)))) (and (and (and (and (and (and (and (and (= var3 var2) (= var13 var8)) (= var1 var7)) (= var11 var10)) (= var5 var14)) (= var16 var0)) (= var4 var6)) (= var9 var12)) (= var15 (next (getnode (read var2 var6)))))))) (inv_main51 var3 var13 var1 var11 var5 var16 var15 (+ var9 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main42 var1 var4 var3 var0 var2) (and (not (<= 0 (+ var2 (- 1)))) (<= 0 var2)))) (inv_main51 var1 var4 var3 var0 var2 (+ var2 var4) var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr)) (or (not (and (inv_main59 var4 var7 var6 var10 var13 var5) (and (not (= var19 nullAddr)) (and (and (and (and (and (and (and (= var8 var4) (= var12 var7)) (= var9 var6)) (= var16 var10)) (= var0 var13)) (= var17 var5)) (= var1 (next (getnode (read var4 var5))))) (and (and (and (and (and (and (= var14 (write var8 var17 defObj)) (= var3 var12)) (= var2 var9)) (= var15 var16)) (= var11 var0)) (= var18 var17)) (= var19 var1)))))) (inv_main59 var14 var3 var2 var15 var11 var19)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (or (not (and (inv_main42 var1 var4 var3 var0 var2) (and (not (= var0 nullAddr)) (not (<= 0 var2))))) (inv_main59 var1 var4 var3 var0 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main23 var2 var11 var10 var9 var6 var8 var7 var4) (and (and (and (and (and (and (and (= var13 (write var2 var4 (O_node (node var7 (next (getnode (read var2 var4))))))) (= var14 var11)) (= var12 var10)) (= var3 var9)) (= var1 var6)) (= var15 var8)) (= var5 var7)) (= var0 var4)))) (inv_main25 var13 var14 var12 var3 var1 var15 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main17 var0 var7 var6 var5 var2 var4 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int)) (not (and (inv_main23 var0 var7 var6 var5 var2 var4 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (not (and (inv_main25 var0 var6 var5 var4 var2 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (not (and (inv_main38 var2 var7 var6 var0 var4 var3 var8 var1 var5) (not (is-O_node (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (not (and (inv_main37 var2 var7 var6 var0 var4 var3 var8 var1 var5) (not (is-O_node (read var2 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main52 var3 var7 var6 var0 var4 var1 var5 var2) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (not (and (inv_main51 var3 var7 var6 var0 var4 var1 var5 var2) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (not (and (inv_main59 var1 var5 var4 var0 var3 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Int)) (not (inv_main62 var1 var4 var3 var0 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll_circular_traversal-1.i.smt2 b/heap-theory-benchmarks/heap/sll_circular_traversal-1.i.smt2 new file mode 100644 index 00000000..ad8eb3a0 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll_circular_traversal-1.i.smt2 @@ -0,0 +1,68 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Addr Int) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Int Int Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main27 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main39 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main45 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main54 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main9 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 5 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Heap)) (or (not (and (inv_main39 var12 var1 var2 var0 var5 var6) (and (= var4 var9) (and (and (and (and (and (and (= var11 var12) (= var8 var1)) (= var7 var2)) (= var9 var0)) (= var3 var5)) (= var10 var6)) (= var4 (next (getnode (read var12 var6)))))))) (inv_main42 var11 var8 var7 var9 (+ (+ var3 1) (* (- 1) var8)) var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Heap) (var18 Addr) (var19 Heap)) (or (not (and (inv_main45 var17 var10 var2 var9 var13 var4) (and (not (= var18 var0)) (and (and (not (= var3 var5)) (and (and (and (and (and (and (= var19 var17) (= var16 var10)) (= var7 var2)) (= var5 var9)) (= var8 var13)) (= var3 var4)) (= var12 (next (getnode (read var17 var4)))))) (and (and (and (and (and (and (= var11 (write var19 var3 defObj)) (= var14 var16)) (= var6 var7)) (= var0 var5)) (= var1 var8)) (= var15 var3)) (= var18 var12)))))) (inv_main42 var11 var14 var6 var0 (+ var1 1) var18)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int)) (or (not (and (inv_main45 var8 var1 var2 var0 var4 var5) (and (not (= var10 var9)) (and (= var3 var9) (and (and (and (and (and (and (= var6 var8) (= var12 var1)) (= var7 var2)) (= var9 var0)) (= var11 var4)) (= var3 var5)) (= var10 (next (getnode (read var8 var5))))))))) (inv_main42 var6 var12 var7 var9 (+ var11 1) var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 node) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int)) (or (not (and (inv_main17 var13 var7 var3 var6 var0 var2 var4) (and (and (not (= nullAddr var5)) (and (and (and (and (and (and (and (= var9 (newHeap (alloc var13 (O_node var11)))) (= var14 var7)) (= var8 var3)) (= var1 var6)) (= var15 var0)) (= var10 var2)) (= var12 var4)) (= var5 (newAddr (alloc var13 (O_node var11)))))) (<= 0 (+ (+ var6 (- 1)) (- 1)))))) (inv_main21 var9 var14 var8 var1 var15 var10 var12 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (and (inv_main33 var5 var1 var2 var0 var3 var4) (not (= var2 (data (getnode (read var5 var4))))))) (inv_main54 var5 var1 var2 var0 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (and (inv_main42 var5 var1 var2 var0 var3 var4) (not (= var3 (data (getnode (read var5 var4))))))) (inv_main54 var5 var1 var2 var0 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (inv_main21 var7 var3 var4 var2 var0 var1 var5 var6)) (inv_main27 (write var7 var6 (O_node (node var5 (data (getnode (read var7 var6)))))) var3 var4 var2 var0 var1 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (inv_main36 var5 var1 var2 var0 var3 var4)) (inv_main39 (write var5 var4 (O_node (node (next (getnode (read var5 var4))) var3))) var1 var2 var0 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap)) (or (not (inv_main12 var6 var3 var4 var2 var0 var1 var5)) (inv_main12 var6 var3 var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 node) (var8 Int) (var9 Heap)) (or (not (and (inv_main4 var9 var1 var3) (and (= nullAddr var6) (and (and (and (and (and (= var0 (newHeap (alloc var9 (O_node var7)))) (= var2 var1)) (= var5 var3)) (= var4 var1)) (= var8 var3)) (= var6 (newAddr (alloc var9 (O_node var7)))))))) (inv_main12 var0 var2 var5 var4 var8 var6 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (and (inv_main42 var5 var1 var2 var0 var3 var4) (= var3 (data (getnode (read var5 var4)))))) (inv_main45 var5 var1 var2 var0 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (inv_main17 var6 var3 var4 var2 var0 var1 var5) (not (<= 0 (+ (+ var2 (- 1)) (- 1)))))) (inv_main18 var6 var3 var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Heap)) (or (not (and (inv_main39 var12 var1 var2 var0 var5 var6) (and (not (= var4 var9)) (and (and (and (and (and (and (= var11 var12) (= var8 var1)) (= var7 var2)) (= var9 var0)) (= var3 var5)) (= var10 var6)) (= var4 (next (getnode (read var12 var6)))))))) (inv_main33 var11 var8 var7 var9 (+ var3 1) var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap)) (or (not (and (inv_main18 var13 var8 var3 var7 var0 var2 var5) (and (and (and (and (and (and (= var6 (write var13 var2 (O_node (node var5 (data (getnode (read var13 var2))))))) (= var11 var8)) (= var9 var3)) (= var1 var7)) (= var4 var0)) (= var12 var2)) (= var10 var5)))) (inv_main33 var6 var11 var9 var10 1 var10)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (or (not (inv_main9 var5 var3 var4 var2 var0 var1)) (inv_main15 (write var5 var1 (O_node (node var1 (data (getnode (read var5 var1)))))) var3 var4 var2 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (inv_main24 var8 var4 var5 var3 var0 var2 var6 var7 var1)) (inv_main24 var8 var4 var5 var3 var0 var2 var6 var7 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 node) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Heap)) (or (not (and (inv_main17 var15 var11 var2 var10 var0 var1 var3) (and (and (= nullAddr var9) (and (and (and (and (and (and (and (= var7 (newHeap (alloc var15 (O_node var6)))) (= var5 var11)) (= var13 var2)) (= var8 var10)) (= var4 var0)) (= var12 var1)) (= var14 var3)) (= var9 (newAddr (alloc var15 (O_node var6)))))) (<= 0 (+ (+ var10 (- 1)) (- 1)))))) (inv_main24 var7 var5 var13 var8 var4 var12 var14 var9 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (and (inv_main33 var5 var1 var2 var0 var3 var4) (= var2 (data (getnode (read var5 var4)))))) (inv_main36 var5 var1 var2 var0 var3 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap)) (or (not (and (inv_main27 var15 var11 var4 var10 var0 var1 var7 var13) (and (and (and (and (and (and (and (= var2 (write var15 var13 (O_node (node (next (getnode (read var15 var13))) var0)))) (= var12 var11)) (= var14 var4)) (= var9 var10)) (= var3 var0)) (= var5 var1)) (= var8 var7)) (= var6 var13)))) (inv_main17 var2 var12 var14 (+ var9 (- 1)) var3 var5 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Heap)) (or (not (and (inv_main15 var11 var5 var6 var4 var1 var3) (and (and (and (and (and (= var10 (write var11 var3 (O_node (node (next (getnode (read var11 var3))) var1)))) (= var0 var5)) (= var8 var6)) (= var9 var4)) (= var7 var1)) (= var2 var3)))) (inv_main17 var10 var0 var8 var9 var7 var2 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 node) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Heap)) (or (not (and (inv_main4 var8 var4 var6) (and (not (= nullAddr var3)) (and (and (and (and (and (= var9 (newHeap (alloc var8 (O_node var2)))) (= var0 var4)) (= var7 var6)) (= var5 var4)) (= var1 var6)) (= var3 (newAddr (alloc var8 (O_node var2)))))))) (inv_main9 var9 var0 var7 var5 var1 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main9 var5 var3 var4 var2 var0 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap)) (not (and (inv_main15 var5 var3 var4 var2 var0 var1) (not (is-O_node (read var5 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap)) (not (and (inv_main21 var7 var3 var4 var2 var0 var1 var5 var6) (not (is-O_node (read var7 var6))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap)) (not (and (inv_main27 var7 var3 var4 var2 var0 var1 var5 var6) (not (is-O_node (read var7 var6))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Heap)) (not (and (inv_main18 var6 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var6 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main33 var5 var1 var2 var0 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main36 var5 var1 var2 var0 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main39 var5 var1 var2 var0 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main42 var5 var1 var2 var0 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (inv_main45 var5 var1 var2 var0 var3 var4) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap)) (not (inv_main54 var5 var1 var2 var0 var3 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll_circular_traversal-2.i.smt2 b/heap-theory-benchmarks/heap/sll_circular_traversal-2.i.smt2 new file mode 100644 index 00000000..42abbe0f --- /dev/null +++ b/heap-theory-benchmarks/heap/sll_circular_traversal-2.i.smt2 @@ -0,0 +1,67 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (data Int)) + ) +)) +(declare-fun inv_main12 (Heap Int Int Int Int Addr Int) Bool) +(declare-fun inv_main15 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main17 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main21 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main24 (Heap Int Int Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main27 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main36 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main39 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main4 (Heap Int Int) Bool) +(declare-fun inv_main42 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main45 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main51 (Heap Int Int Addr Int Addr) Bool) +(declare-fun inv_main9 (Heap Int Int Int Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0 5 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (and (inv_main17 var3 var4 var2 var0 var1 var6 var5) (not (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main18 var3 var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main33 var2 var3 var0 var5 var1 var4) (not (= var0 (data (getnode (read var2 var4))))))) (inv_main51 var2 var3 var0 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main42 var2 var3 var0 var5 var1 var4) (not (= var1 (data (getnode (read var2 var4))))))) (inv_main51 var2 var3 var0 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main36 var2 var3 var0 var5 var1 var4)) (inv_main39 (write var2 var4 (O_node (node (next (getnode (read var2 var4))) var1))) var3 var0 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (inv_main9 var3 var4 var2 var0 var1 var5)) (inv_main15 (write var3 var5 (O_node (node var5 (data (getnode (read var3 var5)))))) var4 var2 var0 var1 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main39 var4 var5 var0 var11 var3 var10) (and (= var8 var7) (and (and (and (and (and (and (= var2 var4) (= var9 var5)) (= var12 var0)) (= var7 var11)) (= var6 var3)) (= var1 var10)) (= var8 (next (getnode (read var4 var10)))))))) (inv_main42 var2 var9 var12 var7 (+ (+ var6 1) (* (- 1) var9)) var8)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Heap) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int)) (or (not (and (inv_main45 var2 var3 var12 var16 var1 var7) (and (not (= var17 nullAddr)) (and (and (and (and (and (and (and (= var14 var2) (= var19 var3)) (= var15 var12)) (= var10 var16)) (= var4 var1)) (= var5 var7)) (= var11 (next (getnode (read var2 var7))))) (and (and (and (and (and (and (= var0 (write var14 var5 defObj)) (= var13 var19)) (= var6 var15)) (= var9 var10)) (= var18 var4)) (= var8 var5)) (= var17 var11)))))) (inv_main42 var0 var13 var6 var9 (+ var18 1) var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main39 var4 var5 var0 var11 var3 var10) (and (not (= var8 var7)) (and (and (and (and (and (and (= var2 var4) (= var9 var5)) (= var12 var0)) (= var7 var11)) (= var6 var3)) (= var1 var10)) (= var8 (next (getnode (read var4 var10)))))))) (inv_main33 var2 var9 var12 var7 (+ var6 1) var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int)) (or (not (and (inv_main18 var2 var3 var8 var0 var7 var6 var5) (and (and (and (and (and (and (= var11 (write var2 var6 (O_node (node var5 (data (getnode (read var2 var6))))))) (= var13 var3)) (= var4 var8)) (= var9 var0)) (= var10 var7)) (= var1 var6)) (= var12 var5)))) (inv_main33 var11 var13 var4 var12 1 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main24 var4 var5 var2 var0 var1 var8 var7 var6 var3)) (inv_main24 var4 var5 var2 var0 var1 var8 var7 var6 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 node) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int)) (or (not (and (inv_main17 var1 var2 var11 var0 var10 var8 var5) (and (and (= nullAddr var9) (and (and (and (and (and (and (and (= var13 (newHeap (alloc var1 (O_node var3)))) (= var7 var2)) (= var4 var11)) (= var15 var0)) (= var12 var10)) (= var6 var8)) (= var14 var5)) (= var9 (newAddr (alloc var1 (O_node var3)))))) (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main24 var13 var7 var4 var15 var12 var6 var14 var9 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main33 var2 var3 var0 var5 var1 var4) (= var0 (data (getnode (read var2 var4)))))) (inv_main36 var2 var3 var0 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr)) (or (not (inv_main12 var3 var4 var2 var0 var1 var6 var5)) (inv_main12 var3 var4 var2 var0 var1 var6 var5)))) +(assert (forall ((var0 node) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int)) (or (not (and (inv_main4 var4 var5 var2) (and (= nullAddr var6) (and (and (and (and (and (= var8 (newHeap (alloc var4 (O_node var0)))) (= var1 var5)) (= var9 var2)) (= var3 var5)) (= var7 var2)) (= var6 (newAddr (alloc var4 (O_node var0)))))))) (inv_main12 var8 var1 var9 var3 var7 var6 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (inv_main42 var2 var3 var0 var5 var1 var4) (= var1 (data (getnode (read var2 var4)))))) (inv_main45 var2 var3 var0 var5 var1 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int)) (or (not (and (inv_main27 var5 var6 var11 var0 var10 var8 var7 var14) (and (and (and (and (and (and (and (= var13 (write var5 var14 (O_node (node (next (getnode (read var5 var14))) var10)))) (= var4 var6)) (= var1 var11)) (= var12 var0)) (= var15 var10)) (= var9 var8)) (= var3 var7)) (= var2 var14)))) (inv_main17 var13 var4 var1 (+ var12 (- 1)) var15 var9 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr)) (or (not (and (inv_main15 var5 var6 var2 var0 var1 var11) (and (and (and (and (and (= var4 (write var5 var11 (O_node (node (next (getnode (read var5 var11))) var1)))) (= var8 var6)) (= var3 var2)) (= var7 var0)) (= var10 var1)) (= var9 var11)))) (inv_main17 var4 var8 var3 var7 var10 var9 var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 node) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Addr)) (or (not (and (inv_main17 var3 var4 var10 var0 var9 var7 var6) (and (and (not (= nullAddr var8)) (and (and (and (and (and (and (and (= var14 (newHeap (alloc var3 (O_node var5)))) (= var1 var4)) (= var13 var10)) (= var12 var0)) (= var11 var9)) (= var2 var7)) (= var15 var6)) (= var8 (newAddr (alloc var3 (O_node var5)))))) (<= 0 (+ (+ var0 (- 1)) (- 1)))))) (inv_main21 var14 var1 var13 var12 var11 var2 var15 var8)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main21 var3 var4 var2 var0 var1 var7 var6 var5)) (inv_main27 (write var3 var5 (O_node (node var6 (data (getnode (read var3 var5)))))) var4 var2 var0 var1 var7 var6 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Heap) (var9 node)) (or (not (and (inv_main4 var5 var6 var3) (and (not (= nullAddr var2)) (and (and (and (and (and (= var8 (newHeap (alloc var5 (O_node var9)))) (= var7 var6)) (= var0 var3)) (= var1 var6)) (= var4 var3)) (= var2 (newAddr (alloc var5 (O_node var9)))))))) (inv_main9 var8 var7 var0 var1 var4 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main9 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main15 var3 var4 var2 var0 var1 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main21 var3 var4 var2 var0 var1 var7 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main27 var3 var4 var2 var0 var1 var7 var6 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main18 var3 var4 var2 var0 var1 var6 var5) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main33 var2 var3 var0 var5 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main36 var2 var3 var0 var5 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main39 var2 var3 var0 var5 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main42 var2 var3 var0 var5 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main45 var2 var3 var0 var5 var1 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (inv_main51 var2 var3 var0 var5 var1 var4)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll_length_check-1.i.smt2 b/heap-theory-benchmarks/heap/sll_length_check-1.i.smt2 new file mode 100644 index 00000000..e54a2a43 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll_length_check-1.i.smt2 @@ -0,0 +1,46 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr)) + ) +)) +(declare-fun inv_main11 (Heap Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Int Addr Addr) Bool) +(declare-fun inv_main42 (Heap Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int)) (or (not (and (inv_main15 var2 var8 var9 var6 var3) (and (and (and (and (= var7 (write var2 var3 (O_node (node var6)))) (= var4 var8)) (= var5 var9)) (= var1 var6)) (= var0 var3)))) (inv_main11 var7 var4 (+ var5 (- 1)) var0)))) +(assert (forall ((var0 Heap) (var1 Int)) (or (not (and (inv_main3 var0 var1) (not (<= 0 (+ (+ 32 (* (- 1) var1)) (- 1)))))) (inv_main11 var0 var1 (+ var1 1) nullAddr)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int)) (or (not (and (inv_main3 var1 var2) (and (= var0 0) (<= 0 (+ (+ 32 (* (- 1) var2)) (- 1)))))) (inv_main11 var1 var2 (+ var2 1) nullAddr)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main39 var1 var6 var3 var9) (and (not (= var13 nullAddr)) (and (and (and (and (and (= var8 var1) (= var5 var6)) (= var12 var3)) (= var4 var9)) (= var11 (next (getnode (read var1 var9))))) (and (and (and (and (= var2 (write var8 var4 defObj)) (= var0 var5)) (= var10 var12)) (= var7 var4)) (= var13 var11)))))) (inv_main39 var2 var0 var10 var13)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int)) (or (not (and (inv_main33 var4 var10 var6 var8 var9) (and (not (= var1 nullAddr)) (and (= var2 var7) (and (= var3 nullAddr) (and (and (and (and (and (= var5 var4) (= var2 var10)) (= var1 var6)) (= var0 var8)) (= var7 var9)) (= var3 (next (getnode (read var4 var8)))))))))) (inv_main39 var5 var2 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int)) (or (not (and (inv_main11 var0 var2 var3 var1) (and (not (= var1 nullAddr)) (and (and (= var2 0) (= var1 nullAddr)) (not (<= 0 (+ var3 (- 1)))))))) (inv_main39 var0 var2 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int)) (or (not (and (inv_main3 var0 var2) (and (not (= var1 0)) (<= 0 (+ (+ 32 (* (- 1) var2)) (- 1)))))) (inv_main3 var0 (+ var2 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int)) (or (not (inv_main18 var1 var4 var5 var3 var2 var0)) (inv_main18 var1 var4 var5 var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Heap) (var5 node) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr)) (or (not (and (inv_main11 var3 var7 var8 var6) (and (and (= nullAddr var2) (and (and (and (and (= var4 (newHeap (alloc var3 (O_node var5)))) (= var0 var7)) (= var1 var8)) (= var9 var6)) (= var2 (newAddr (alloc var3 (O_node var5)))))) (<= 0 (+ var8 (- 1)))))) (inv_main18 var4 var0 var1 var9 var2 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int)) (or (not (and (inv_main33 var4 var10 var6 var8 var9) (and (not (= var3 nullAddr)) (and (and (and (and (and (= var5 var4) (= var2 var10)) (= var1 var6)) (= var0 var8)) (= var7 var9)) (= var3 (next (getnode (read var4 var8)))))))) (inv_main33 var5 var2 var1 var3 (+ var7 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int)) (or (not (and (inv_main11 var0 var2 var3 var1) (and (not (= var1 nullAddr)) (not (<= 0 (+ var3 (- 1))))))) (inv_main33 var0 var2 var1 var1 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Int) (var5 Addr) (var6 node) (var7 Int) (var8 Int) (var9 Int)) (or (not (and (inv_main11 var3 var7 var8 var5) (and (and (not (= nullAddr var0)) (and (and (and (and (= var2 (newHeap (alloc var3 (O_node var6)))) (= var9 var7)) (= var4 var8)) (= var1 var5)) (= var0 (newAddr (alloc var3 (O_node var6)))))) (<= 0 (+ var8 (- 1)))))) (inv_main15 var2 var9 var4 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int)) (or (not (and (inv_main33 var4 var10 var6 var8 var9) (and (not (= var2 var7)) (and (= var3 nullAddr) (and (and (and (and (and (= var5 var4) (= var2 var10)) (= var1 var6)) (= var0 var8)) (= var7 var9)) (= var3 (next (getnode (read var4 var8))))))))) (inv_main42 var5 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int)) (or (not (and (inv_main11 var0 var2 var3 var1) (and (and (not (= var2 0)) (= var1 nullAddr)) (not (<= 0 (+ var3 (- 1))))))) (inv_main42 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main15 var0 var3 var4 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int)) (not (and (inv_main33 var0 var4 var1 var2 var3) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int)) (not (and (inv_main39 var0 var3 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (inv_main42 var0 var2 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll_length_check-2.i.smt2 b/heap-theory-benchmarks/heap/sll_length_check-2.i.smt2 new file mode 100644 index 00000000..83c31cbb --- /dev/null +++ b/heap-theory-benchmarks/heap/sll_length_check-2.i.smt2 @@ -0,0 +1,46 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr)) + ) +)) +(declare-fun inv_main11 (Heap Int Int Addr) Bool) +(declare-fun inv_main15 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main18 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Int) Bool) +(declare-fun inv_main39 (Heap Int Addr Addr) Bool) +(declare-fun inv_main42 (Heap Int Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main39 var3 var0 var12 var8) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var13 var3) (= var4 var0)) (= var10 var12)) (= var7 var8)) (= var11 (next (getnode (read var3 var8))))) (and (and (and (and (= var1 (write var13 var7 defObj)) (= var2 var4)) (= var9 var10)) (= var5 var7)) (= var6 var11)))))) (inv_main39 var1 var2 var9 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main33 var4 var1 var10 var8 var5) (and (not (= var2 nullAddr)) (and (= var0 var9) (and (= var6 nullAddr) (and (and (and (and (and (= var7 var4) (= var0 var1)) (= var2 var10)) (= var3 var8)) (= var9 var5)) (= var6 (next (getnode (read var4 var8)))))))))) (inv_main39 var7 var0 var2 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main11 var3 var0 var2 var1) (and (not (= var1 nullAddr)) (and (and (= var0 0) (= var1 nullAddr)) (not (<= 0 (+ var2 (- 1)))))))) (inv_main39 var3 var0 var1 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main33 var4 var1 var10 var8 var5) (and (not (= var0 var9)) (and (= var6 nullAddr) (and (and (and (and (and (= var7 var4) (= var0 var1)) (= var2 var10)) (= var3 var8)) (= var9 var5)) (= var6 (next (getnode (read var4 var8))))))))) (inv_main42 var7 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main11 var3 var0 var2 var1) (and (and (not (= var0 0)) (= var1 nullAddr)) (not (<= 0 (+ var2 (- 1))))))) (inv_main42 var3 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap)) (or (not (and (inv_main3 var2 var0) (and (not (= var1 0)) (<= 0 (+ (+ 32 (* (- 1) var0)) (- 1)))))) (inv_main3 var2 (+ var0 1))))) +(assert (forall ((var0 node) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap)) (or (not (and (inv_main11 var4 var1 var3 var2) (and (and (not (= nullAddr var6)) (and (and (and (and (= var9 (newHeap (alloc var4 (O_node var0)))) (= var7 var1)) (= var5 var3)) (= var8 var2)) (= var6 (newAddr (alloc var4 (O_node var0)))))) (<= 0 (+ var3 (- 1)))))) (inv_main15 var9 var7 var5 var8 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main33 var4 var1 var10 var8 var5) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var9 var4) (= var0 var1)) (= var2 var10)) (= var3 var8)) (= var7 var5)) (= var6 (next (getnode (read var4 var8)))))))) (inv_main33 var9 var0 var2 var6 (+ var7 1))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap)) (or (not (and (inv_main11 var3 var0 var2 var1) (and (not (= var1 nullAddr)) (not (<= 0 (+ var2 (- 1))))))) (inv_main33 var3 var0 var1 var1 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (or (not (and (inv_main15 var4 var0 var3 var1 var8) (and (and (and (and (= var5 (write var4 var8 (O_node (node var1)))) (= var7 var0)) (= var9 var3)) (= var6 var1)) (= var2 var8)))) (inv_main11 var5 var7 (+ var9 (- 1)) var2)))) +(assert (forall ((var0 Int) (var1 Heap)) (or (not (and (inv_main3 var1 var0) (not (<= 0 (+ (+ 32 (* (- 1) var0)) (- 1)))))) (inv_main11 var1 var0 var0 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap)) (or (not (and (inv_main3 var2 var0) (and (= var1 0) (<= 0 (+ (+ 32 (* (- 1) var0)) (- 1)))))) (inv_main11 var2 var0 var0 nullAddr)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (inv_main18 var3 var0 var2 var1 var4 var5)) (inv_main18 var3 var0 var2 var1 var4 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 node) (var4 Int) (var5 Heap) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int)) (or (not (and (inv_main11 var5 var0 var4 var2) (and (and (= nullAddr var1) (and (and (and (and (= var6 (newHeap (alloc var5 (O_node var3)))) (= var7 var0)) (= var9 var4)) (= var8 var2)) (= var1 (newAddr (alloc var5 (O_node var3)))))) (<= 0 (+ var4 (- 1)))))) (inv_main18 var6 var7 var9 var8 var1 1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr)) (not (and (inv_main15 var3 var0 var2 var1 var4) (not (is-O_node (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main33 var1 var0 var4 var3 var2) (not (is-O_node (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main39 var2 var0 var3 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr)) (not (inv_main42 var1 var0 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll_nondet_insert-1.i.smt2 b/heap-theory-benchmarks/heap/sll_nondet_insert-1.i.smt2 new file mode 100644 index 00000000..2fc62624 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll_nondet_insert-1.i.smt2 @@ -0,0 +1,79 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr)) + ) +)) +(declare-fun inv_main15 (Heap Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main30 (Heap Int Addr Int Int Int) Bool) +(declare-fun inv_main36 (Heap Int Addr Int Int) Bool) +(declare-fun inv_main37 (Heap Int Addr Int Int) Bool) +(declare-fun inv_main44 (Heap Int Addr Int Int Int Int Int) Bool) +(declare-fun inv_main49 (Heap Int Addr Int Int Int) Bool) +(declare-fun inv_main58 (Heap Int Addr Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main6 (Heap Int Int Int) Bool) +(declare-fun inv_main63 (Heap Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main65 (Heap Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main68 (Heap Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main79 (Heap Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main85 (Heap Int Addr Int Int Addr) Bool) +(declare-fun inv_main88 (Heap Int Addr Int Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr)) (or (not (and (inv_main79 var9 var8 var14 var5 var13 var11 var6) (and (not (= (+ var3 var0) var12)) (and (= var2 nullAddr) (and (and (and (and (and (and (and (= var10 var9) (= var0 var8)) (= var1 var14)) (= var3 var5)) (= var4 var13)) (= var7 var11)) (= var12 var6)) (= var2 (next (getnode (read var9 var11))))))))) (inv_main88 var10 var0 var1 var3 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr)) (or (not (and (inv_main37 var1 var0 var4 var3 var2) (and (not (= (+ var3 var0) 0)) (= var4 nullAddr)))) (inv_main88 var1 var0 var4 var3 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main30 var1 var0 var5 var3 var4 var6) (and (not (= var2 0)) (<= 0 (+ (+ var4 (* (- 1) var6)) (- 1)))))) (inv_main30 var1 var0 var5 var3 var4 (+ var6 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr)) (or (not (and (inv_main15 var1 var0 var2 var3) (not (<= 0 (+ var2 (- 1)))))) (inv_main30 var1 var0 var3 0 (+ var0 (- 1)) 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr)) (or (not (and (inv_main36 var1 var0 var4 var3 var2) (not (<= 0 (+ (+ var3 (* (- 1) var2)) (- 1)))))) (inv_main37 var1 var0 var4 var3 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr)) (or (not (and (inv_main36 var1 var0 var5 var4 var3) (and (= var2 0) (<= 0 (+ (+ var4 (* (- 1) var3)) (- 1)))))) (inv_main37 var1 var0 var5 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main68 var8 var7 var17 var2 var16 var9 var5 var4 var15 var18 var12) (and (and (and (and (and (and (and (= var1 (write var8 var18 (O_node (node var15)))) (= var14 var7)) (= var6 var17)) (= var13 var2)) (= var10 var16)) (= var0 var9)) (= var11 var5)) (= var3 var4)))) (inv_main36 var1 var14 var6 var13 (+ var10 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr)) (or (not (and (inv_main63 var10 var9 var20 var4 var19 var12 var7 var6 var18 var21 var15) (and (= var17 nullAddr) (and (and (and (and (and (and (and (and (and (and (= var2 (write var10 var18 (O_node (node var15)))) (= var11 var9)) (= var8 var20)) (= var5 var4)) (= var0 var19)) (= var1 var12)) (= var3 var7)) (= var14 var6)) (= var13 var18)) (= var17 var21)) (= var16 var15))))) (inv_main36 var2 var11 var13 var5 (+ var0 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main30 var1 var0 var4 var2 var3 var5) (not (<= 0 (+ (+ var3 (* (- 1) var5)) (- 1)))))) (inv_main36 var1 var0 var4 var5 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Int)) (or (not (and (inv_main30 var1 var0 var4 var2 var3 var6) (and (= var5 0) (<= 0 (+ (+ var3 (* (- 1) var6)) (- 1)))))) (inv_main36 var1 var0 var4 var6 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr)) (or (not (and (inv_main79 var9 var8 var14 var5 var13 var11 var6) (and (not (= var2 nullAddr)) (and (and (and (and (and (and (and (= var10 var9) (= var0 var8)) (= var1 var14)) (= var3 var5)) (= var4 var13)) (= var7 var11)) (= var12 var6)) (= var2 (next (getnode (read var9 var11)))))))) (inv_main79 var10 var0 var1 var3 var4 var2 (+ var12 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr)) (or (not (and (inv_main37 var1 var0 var4 var3 var2) (not (= var4 nullAddr)))) (inv_main79 var1 var0 var4 var3 var2 var4 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 node) (var9 Addr)) (or (not (and (inv_main15 var3 var2 var7 var9) (and (and (not (= nullAddr var5)) (and (and (and (and (= var1 (newHeap (alloc var3 (O_node var8)))) (= var0 var2)) (= var6 (+ var7 (- 1)))) (= var4 var9)) (= var5 (newAddr (alloc var3 (O_node var8)))))) (<= 0 (+ var7 (- 1)))))) (inv_main19 var1 var0 var6 var4 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main19 var3 var2 var5 var7 var8) (and (and (and (and (= var9 (write var3 var8 (O_node (node var7)))) (= var0 var2)) (= var4 var5)) (= var1 var7)) (= var6 var8)))) (inv_main15 var9 var0 var4 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int)) (or (not (and (inv_main6 var1 var0 var2 var3) (not (<= 0 (+ (+ var2 (* (- 1) var3)) (- 1)))))) (inv_main15 var1 var3 var3 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main6 var2 var0 var3 var4) (and (= var1 0) (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main15 var2 var4 var4 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr)) (or (not (and (inv_main63 var11 var10 var20 var4 var19 var12 var8 var7 var17 var21 var15) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var5 (write var11 var17 (O_node (node var15)))) (= var1 var10)) (= var3 var20)) (= var18 var4)) (= var13 var19)) (= var16 var12)) (= var9 var8)) (= var0 var7)) (= var14 var17)) (= var6 var21)) (= var2 var15))))) (inv_main68 var5 var1 var3 var18 var13 var16 var9 var0 var14 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Heap) (var17 Int) (var18 Addr) (var19 Addr)) (or (not (and (inv_main85 var11 var10 var18 var8 var17 var1) (and (not (= var7 nullAddr)) (and (and (and (and (and (and (and (= var4 var11) (= var13 var10)) (= var2 var18)) (= var5 var8)) (= var15 var17)) (= var19 var1)) (= var12 (next (getnode (read var11 var1))))) (and (and (and (and (and (and (= var16 (write var4 var19 defObj)) (= var9 var13)) (= var0 var2)) (= var14 var5)) (= var3 var15)) (= var6 var19)) (= var7 var12)))))) (inv_main85 var16 var9 var0 var14 var3 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr)) (or (not (and (inv_main79 var9 var8 var14 var5 var13 var11 var6) (and (not (= var1 nullAddr)) (and (= (+ var3 var0) var12) (and (= var2 nullAddr) (and (and (and (and (and (and (and (= var10 var9) (= var0 var8)) (= var1 var14)) (= var3 var5)) (= var4 var13)) (= var7 var11)) (= var12 var6)) (= var2 (next (getnode (read var9 var11)))))))))) (inv_main85 var10 var0 var1 var3 var4 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr)) (or (not (and (inv_main37 var1 var0 var4 var3 var2) (and (not (= var4 nullAddr)) (and (= (+ var3 var0) 0) (= var4 nullAddr))))) (inv_main85 var1 var0 var4 var3 var2 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (or (not (and (inv_main44 var1 var0 var7 var6 var5 var2 var4 var3) (not (<= 0 (+ (+ var4 (* (- 1) var3)) (- 1)))))) (inv_main49 var1 var0 var7 var6 var5 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main44 var1 var0 var8 var7 var6 var2 var5 var3) (and (= var4 0) (<= 0 (+ (+ var5 (* (- 1) var3)) (- 1)))))) (inv_main49 var1 var0 var8 var7 var6 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int)) (or (not (inv_main58 var3 var2 var8 var7 var6 var4 var0 var9 var5 var1)) (inv_main58 var3 var2 var8 var7 var6 var4 var0 var9 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 node) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr)) (or (not (and (inv_main49 var9 var8 var15 var4 var14 var10) (and (= nullAddr var6) (and (and (and (and (and (and (and (and (= var2 (newHeap (alloc var9 (O_node var7)))) (= var1 var8)) (= var3 var15)) (= var0 var4)) (= var5 var14)) (= var13 var10)) (= var12 2)) (= var11 var10)) (= var6 (newAddr (alloc var9 (O_node var7)))))))) (inv_main58 var2 var1 var3 var0 var5 var13 var12 var11 var6 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Addr)) (or (not (and (inv_main65 var10 var9 var19 var2 var18 var11 var8 var7 var16 var22 var14) (and (<= 0 (+ var15 (- 1))) (and (and (and (and (and (and (and (and (and (and (and (= var6 var10) (= var21 var9)) (= var20 var19)) (= var5 var2)) (= var13 var18)) (= var4 var11)) (= var12 var8)) (= var15 var7)) (= var3 var16)) (= var0 var22)) (= var17 var14)) (= var1 (next (getnode (read var10 var14)))))))) (inv_main65 var6 var21 var20 var5 var13 var4 var12 (+ var15 (- 1)) var3 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 node) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Heap) (var17 Int) (var18 Int) (var19 Heap) (var20 Int) (var21 Heap) (var22 Int) (var23 Addr) (var24 Int) (var25 Addr)) (or (not (and (inv_main49 var16 var15 var23 var10 var22 var17) (and (and (<= 0 (+ var12 (- 1))) (and (and (and (and (and (and (and (and (and (= var19 var21) (= var11 var9)) (= var14 var25)) (= var2 var3)) (= var24 var1)) (= var20 var7)) (= var8 var18)) (= var12 var4)) (= var13 var0)) (= var6 nullAddr))) (and (not (= nullAddr var0)) (and (and (and (and (and (and (and (and (= var21 (newHeap (alloc var16 (O_node var5)))) (= var9 var15)) (= var25 var23)) (= var3 var10)) (= var1 var22)) (= var7 var17)) (= var18 2)) (= var4 var17)) (= var0 (newAddr (alloc var16 (O_node var5))))))))) (inv_main65 var19 var11 var14 var2 var24 var20 var8 (+ var12 (- 1)) var13 var14 var14)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main6 var2 var0 var3 var4) (and (not (= var1 0)) (<= 0 (+ (+ var3 (* (- 1) var4)) (- 1)))))) (inv_main6 var2 var0 var3 (+ var4 1))))) +(assert (forall ((var0 Heap)) (or (not (inv_main2 var0)) (inv_main6 var0 2 5 2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Addr)) (or (not (and (inv_main65 var10 var9 var19 var2 var18 var11 var8 var7 var16 var22 var14) (and (not (<= 0 (+ var15 (- 1)))) (and (and (and (and (and (and (and (and (and (and (and (= var6 var10) (= var21 var9)) (= var20 var19)) (= var5 var2)) (= var13 var18)) (= var4 var11)) (= var12 var8)) (= var15 var7)) (= var3 var16)) (= var0 var22)) (= var17 var14)) (= var1 (next (getnode (read var10 var14)))))))) (inv_main63 var6 var21 var20 var5 var13 var4 var12 (+ var15 (- 1)) var3 var0 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 node) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Heap) (var15 Int) (var16 Heap) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Addr)) (or (not (and (inv_main49 var14 var13 var21 var8 var20 var15) (and (and (not (<= 0 (+ var9 (- 1)))) (and (and (and (and (and (and (and (and (and (= var2 var16) (= var7 var18)) (= var10 var11)) (= var24 var4)) (= var12 var3)) (= var1 var19)) (= var17 var5)) (= var9 var0)) (= var23 var25)) (= var22 nullAddr))) (and (not (= nullAddr var25)) (and (and (and (and (and (and (and (and (= var16 (newHeap (alloc var14 (O_node var6)))) (= var18 var13)) (= var11 var21)) (= var4 var8)) (= var3 var20)) (= var19 var15)) (= var5 2)) (= var0 var15)) (= var25 (newAddr (alloc var14 (O_node var6))))))))) (inv_main63 var2 var7 var10 var24 var12 var1 var17 (+ var9 (- 1)) var23 var22 var10)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main22 var1 var0 var2 var4 var5 var3)) (inv_main22 var1 var0 var2 var4 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 node) (var9 Addr)) (or (not (and (inv_main15 var2 var1 var5 var7) (and (and (= nullAddr var0) (and (and (and (and (= var6 (newHeap (alloc var2 (O_node var8)))) (= var3 var1)) (= var4 (+ var5 (- 1)))) (= var9 var7)) (= var0 (newAddr (alloc var2 (O_node var8)))))) (<= 0 (+ var5 (- 1)))))) (inv_main22 var6 var3 var4 var9 var0 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (inv_main44 var1 var0 var8 var7 var6 var2 var5 var3) (and (not (= var4 0)) (<= 0 (+ (+ var5 (* (- 1) var3)) (- 1)))))) (inv_main44 var1 var0 var8 var7 var6 var2 var5 (+ var3 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main36 var1 var0 var4 var3 var2) (and (not (= var5 0)) (<= 0 (+ (+ var3 (* (- 1) var2)) (- 1)))))) (inv_main44 var1 var0 var4 var3 var2 0 (+ var2 (+ var0 (- 1))) 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main19 var1 var0 var2 var3 var4) (not (is-O_node (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (not (and (inv_main65 var2 var1 var8 var7 var6 var3 var0 var10 var5 var9 var4) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (not (and (inv_main63 var2 var1 var8 var7 var6 var3 var0 var10 var5 var9 var4) (not (is-O_node (read var2 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (not (and (inv_main68 var2 var1 var8 var7 var6 var3 var0 var10 var5 var9 var4) (not (is-O_node (read var2 var9))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main79 var1 var0 var5 var4 var3 var2 var6) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr)) (not (and (inv_main85 var2 var1 var5 var4 var3 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr)) (not (inv_main88 var1 var0 var4 var3 var2)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll_nondet_insert-2.i.smt2 b/heap-theory-benchmarks/heap/sll_nondet_insert-2.i.smt2 new file mode 100644 index 00000000..49b7eb28 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll_nondet_insert-2.i.smt2 @@ -0,0 +1,76 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr)) + ) +)) +(declare-fun inv_main15 (Heap Int Int Addr) Bool) +(declare-fun inv_main19 (Heap Int Int Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Int Int Addr Addr Int) Bool) +(declare-fun inv_main30 (Heap Int Addr Int Int Int) Bool) +(declare-fun inv_main36 (Heap Int Addr Int Int) Bool) +(declare-fun inv_main42 (Heap Int Addr Int Int Int Int Int) Bool) +(declare-fun inv_main47 (Heap Int Addr Int Int Int) Bool) +(declare-fun inv_main56 (Heap Int Addr Int Int Int Int Int Addr Int) Bool) +(declare-fun inv_main6 (Heap Int Int Int) Bool) +(declare-fun inv_main61 (Heap Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main63 (Heap Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Addr Int Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main77 (Heap Int Addr Int Int Addr Int) Bool) +(declare-fun inv_main83 (Heap Int Addr Int Int Addr) Bool) +(declare-fun inv_main86 (Heap Int Addr Int Int) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int)) (or (not (and (inv_main42 var1 var7 var5 var6 var2 var4 var3 var0) (not (<= 0 (+ (+ var3 (* (- 1) var0)) (- 1)))))) (inv_main47 var1 var7 var5 var6 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int)) (or (not (and (inv_main42 var1 var8 var5 var7 var2 var4 var3 var0) (and (= var6 0) (<= 0 (+ (+ var3 (* (- 1) var0)) (- 1)))))) (inv_main47 var1 var8 var5 var7 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Int)) (or (not (inv_main56 var1 var8 var5 var7 var3 var0 var6 var9 var2 var4)) (inv_main56 var1 var8 var5 var7 var3 var0 var6 var9 var2 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 node) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap)) (or (not (and (inv_main47 var9 var8 var13 var14 var3 var1) (and (= nullAddr var2) (and (and (and (and (and (and (and (and (= var15 (newHeap (alloc var9 (O_node var11)))) (= var4 var8)) (= var6 var13)) (= var12 var14)) (= var0 var3)) (= var5 var1)) (= var7 2)) (= var10 var1)) (= var2 (newAddr (alloc var9 (O_node var11)))))))) (inv_main56 var15 var4 var6 var12 var0 var5 var7 var10 var2 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main6 var2 var0 var1 var4) (and (not (= var3 0)) (<= 0 (+ (+ var1 (* (- 1) var4)) (- 1)))))) (inv_main6 var2 var0 var1 (+ var4 1))))) +(assert (forall ((var0 Heap)) (or (not (inv_main2 var0)) (inv_main6 var0 2 5 2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main30 var0 var6 var3 var5 var1 var4) (and (not (= var2 0)) (<= 0 (+ (+ var1 (* (- 1) var4)) (- 1)))))) (inv_main30 var0 var6 var3 var5 var1 (+ var4 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int)) (or (not (and (inv_main15 var0 var3 var2 var1) (not (<= 0 (+ var2 (- 1)))))) (inv_main30 var0 var3 var1 0 (+ var3 (- 1)) 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main66 var12 var10 var15 var17 var5 var0 var16 var18 var13 var3 var1) (and (and (and (and (and (and (and (= var2 (write var12 var3 (O_node (node var13)))) (= var4 var10)) (= var7 var15)) (= var9 var17)) (= var6 var5)) (= var14 var0)) (= var11 var16)) (= var8 var18)))) (inv_main36 var2 var4 var7 var9 (+ var6 1))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Int) (var18 Addr) (var19 Int) (var20 Int) (var21 Int)) (or (not (and (inv_main61 var12 var8 var18 var20 var6 var1 var19 var21 var14 var5 var2) (and (= var11 nullAddr) (and (and (and (and (and (and (and (and (and (and (= var15 (write var12 var14 (O_node (node var2)))) (= var17 var8)) (= var10 var18)) (= var0 var20)) (= var16 var6)) (= var7 var1)) (= var4 var19)) (= var3 var21)) (= var13 var14)) (= var11 var5)) (= var9 var2))))) (inv_main36 var15 var17 var13 var0 (+ var16 1))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Int)) (or (not (and (inv_main30 var0 var5 var2 var4 var1 var3) (not (<= 0 (+ (+ var1 (* (- 1) var3)) (- 1)))))) (inv_main36 var0 var5 var2 var3 0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int)) (or (not (and (inv_main30 var1 var6 var3 var5 var2 var4) (and (= var0 0) (<= 0 (+ (+ var2 (* (- 1) var4)) (- 1)))))) (inv_main36 var1 var6 var3 var4 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Int)) (or (not (and (inv_main63 var12 var9 var17 var19 var4 var0 var18 var22 var15 var2 var1) (and (not (<= 0 (+ var10 (- 1)))) (and (and (and (and (and (and (and (and (and (and (and (= var16 var12) (= var8 var9)) (= var5 var17)) (= var11 var19)) (= var3 var4)) (= var14 var0)) (= var6 var18)) (= var10 var22)) (= var21 var15)) (= var20 var2)) (= var13 var1)) (= var7 (next (getnode (read var12 var1)))))))) (inv_main61 var16 var8 var5 var11 var3 var14 var6 (+ var10 (- 1)) var21 var20 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 node) (var14 Int) (var15 Addr) (var16 Int) (var17 Heap) (var18 Int) (var19 Addr) (var20 Int) (var21 Int) (var22 Int) (var23 Int) (var24 Int) (var25 Addr)) (or (not (and (inv_main47 var17 var14 var19 var22 var8 var1) (and (and (not (<= 0 (+ var16 (- 1)))) (and (and (and (and (and (and (and (and (and (= var5 var12) (= var6 var7)) (= var15 var9)) (= var21 var3)) (= var0 var10)) (= var18 var20)) (= var2 var24)) (= var16 var23)) (= var11 var4)) (= var25 nullAddr))) (and (not (= nullAddr var4)) (and (and (and (and (and (and (and (and (= var12 (newHeap (alloc var17 (O_node var13)))) (= var7 var14)) (= var9 var19)) (= var3 var22)) (= var10 var8)) (= var20 var1)) (= var24 2)) (= var23 var1)) (= var4 (newAddr (alloc var17 (O_node var13))))))))) (inv_main61 var5 var6 var15 var21 var0 var18 var2 (+ var16 (- 1)) var11 var25 var15)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 Int)) (or (not (and (inv_main61 var12 var11 var15 var18 var5 var1 var17 var21 var14 var4 var2) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (and (and (and (= var0 (write var12 var14 (O_node (node var2)))) (= var19 var11)) (= var10 var15)) (= var7 var18)) (= var20 var5)) (= var9 var1)) (= var13 var17)) (= var8 var21)) (= var3 var14)) (= var6 var4)) (= var16 var2))))) (inv_main66 var0 var19 var10 var7 var20 var9 var13 var8 var3 var6 var16)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int)) (or (not (and (inv_main83 var8 var6 var17 var18 var4 var16) (and (not (= var15 nullAddr)) (and (and (and (and (and (and (and (= var14 var8) (= var13 var6)) (= var9 var17)) (= var0 var18)) (= var11 var4)) (= var7 var16)) (= var5 (next (getnode (read var8 var16))))) (and (and (and (and (and (and (= var2 (write var14 var7 defObj)) (= var19 var13)) (= var12 var9)) (= var1 var0)) (= var3 var11)) (= var10 var7)) (= var15 var5)))))) (inv_main83 var2 var19 var12 var1 var3 var15)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main77 var9 var8 var12 var14 var4 var5 var3) (and (not (= var11 nullAddr)) (and (= (+ var7 var1) var6) (and (= var2 nullAddr) (and (and (and (and (and (and (and (= var0 var9) (= var1 var8)) (= var11 var12)) (= var7 var14)) (= var13 var4)) (= var10 var5)) (= var6 var3)) (= var2 (next (getnode (read var9 var5)))))))))) (inv_main83 var0 var1 var11 var7 var13 var11)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main36 var0 var4 var2 var3 var1) (and (not (= var2 nullAddr)) (and (and (= (+ var3 var4) 0) (= var2 nullAddr)) (not (<= 0 (+ (+ var3 (* (- 1) var1)) (- 1)))))))) (inv_main83 var0 var4 var2 var3 var1 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (or (not (and (inv_main42 var2 var8 var6 var7 var3 var5 var4 var1) (and (not (= var0 0)) (<= 0 (+ (+ var4 (* (- 1) var1)) (- 1)))))) (inv_main42 var2 var8 var6 var7 var3 var5 var4 (+ var1 1))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main36 var0 var4 var2 var3 var1) (<= 0 (+ (+ var3 (* (- 1) var1)) (- 1))))) (inv_main42 var0 var4 var2 var3 var1 0 (+ var1 (+ var4 (- 1))) 0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main77 var9 var8 var12 var14 var4 var5 var3) (and (not (= (+ var7 var1) var6)) (and (= var2 nullAddr) (and (and (and (and (and (and (and (= var0 var9) (= var1 var8)) (= var11 var12)) (= var7 var14)) (= var13 var4)) (= var10 var5)) (= var6 var3)) (= var2 (next (getnode (read var9 var5))))))))) (inv_main86 var0 var1 var11 var7 var13)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main36 var0 var4 var2 var3 var1) (and (and (not (= (+ var3 var4) 0)) (= var2 nullAddr)) (not (<= 0 (+ (+ var3 (* (- 1) var1)) (- 1))))))) (inv_main86 var0 var4 var2 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 node) (var8 Heap) (var9 Int)) (or (not (and (inv_main15 var2 var9 var4 var3) (and (and (not (= nullAddr var6)) (and (and (and (and (= var8 (newHeap (alloc var2 (O_node var7)))) (= var1 var9)) (= var5 (+ var4 (- 1)))) (= var0 var3)) (= var6 (newAddr (alloc var2 (O_node var7)))))) (<= 0 (+ var4 (- 1)))))) (inv_main19 var8 var1 var5 var0 var6)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main77 var9 var8 var12 var14 var4 var5 var3) (and (not (= var2 nullAddr)) (and (and (and (and (and (and (and (= var0 var9) (= var1 var8)) (= var11 var12)) (= var7 var14)) (= var13 var4)) (= var10 var5)) (= var6 var3)) (= var2 (next (getnode (read var9 var5)))))))) (inv_main77 var0 var1 var11 var7 var13 var2 (+ var6 1))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main36 var0 var4 var2 var3 var1) (and (not (= var2 nullAddr)) (not (<= 0 (+ (+ var3 (* (- 1) var1)) (- 1))))))) (inv_main77 var0 var4 var2 var3 var1 var2 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main19 var1 var9 var3 var2 var5) (and (and (and (and (= var8 (write var1 var5 (O_node (node var2)))) (= var6 var9)) (= var0 var3)) (= var4 var2)) (= var7 var5)))) (inv_main15 var8 var6 var0 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int)) (or (not (and (inv_main6 var2 var0 var1 var3) (not (<= 0 (+ (+ var1 (* (- 1) var3)) (- 1)))))) (inv_main15 var2 var3 var3 nullAddr)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int)) (or (not (and (inv_main6 var2 var0 var1 var3) (and (= var4 0) (<= 0 (+ (+ var1 (* (- 1) var3)) (- 1)))))) (inv_main15 var2 var3 var3 nullAddr)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Int) (var19 Int) (var20 Addr) (var21 Addr) (var22 Int)) (or (not (and (inv_main63 var12 var9 var17 var19 var4 var0 var18 var22 var15 var2 var1) (and (<= 0 (+ var10 (- 1))) (and (and (and (and (and (and (and (and (and (and (and (= var16 var12) (= var8 var9)) (= var5 var17)) (= var11 var19)) (= var3 var4)) (= var14 var0)) (= var6 var18)) (= var10 var22)) (= var21 var15)) (= var20 var2)) (= var13 var1)) (= var7 (next (getnode (read var12 var1)))))))) (inv_main63 var16 var8 var5 var11 var3 var14 var6 (+ var10 (- 1)) var21 var7 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 node) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Int) (var25 Addr)) (or (not (and (inv_main47 var15 var12 var20 var24 var5 var0) (and (and (<= 0 (+ var17 (- 1))) (and (and (and (and (and (and (and (and (and (= var10 var9) (= var7 var2)) (= var25 var23)) (= var19 var1)) (= var6 var21)) (= var8 var18)) (= var14 var13)) (= var17 var3)) (= var16 var11)) (= var22 nullAddr))) (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var15 (O_node var4)))) (= var2 var12)) (= var23 var20)) (= var1 var24)) (= var21 var5)) (= var18 var0)) (= var13 2)) (= var3 var0)) (= var11 (newAddr (alloc var15 (O_node var4))))))))) (inv_main63 var10 var7 var25 var19 var6 var8 var14 (+ var17 (- 1)) var16 var25 var25)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int)) (or (not (inv_main22 var0 var5 var2 var1 var3 var4)) (inv_main22 var0 var5 var2 var1 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 node) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main15 var2 var9 var5 var3) (and (and (= nullAddr var0) (and (and (and (and (= var8 (newHeap (alloc var2 (O_node var4)))) (= var6 var9)) (= var1 (+ var5 (- 1)))) (= var7 var3)) (= var0 (newAddr (alloc var2 (O_node var4)))))) (<= 0 (+ var5 (- 1)))))) (inv_main22 var8 var6 var1 var7 var0 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int)) (not (and (inv_main19 var0 var4 var2 var1 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main63 var2 var9 var6 var8 var5 var0 var7 var10 var4 var3 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main61 var2 var9 var6 var8 var5 var0 var7 var10 var4 var3 var1) (not (is-O_node (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main66 var2 var9 var6 var8 var5 var0 var7 var10 var4 var3 var1) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int)) (not (and (inv_main77 var0 var6 var4 var5 var2 var3 var1) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int)) (not (and (inv_main83 var0 var5 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int)) (not (inv_main86 var0 var4 var2 var3 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll_of_sll_nondet_append-1.i.smt2 b/heap-theory-benchmarks/heap/sll_of_sll_nondet_append-1.i.smt2 new file mode 100644 index 00000000..0fdd9ed4 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll_of_sll_nondet_append-1.i.smt2 @@ -0,0 +1,97 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (inner Addr)) + ) +)) +(declare-fun inv_main11 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main26 (Heap Int Int Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main33 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main37 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main40 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Int Int Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main49 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main5 (Heap Int Int Int Int) Bool) +(declare-fun inv_main51 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main56 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main62 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main69 (Heap Int Int Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main72 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main84 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main85 (Heap Int Int Int Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main88 (Heap Int Int Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main92 (Heap Int Int Int Int Addr Addr) Bool) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap)) (or (not (= var2 emptyHeap)) (inv_main5 var2 3 5 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int)) (or (not (and (inv_main85 var7 var17 var14 var3 var2 var1 var8 var12 var10) (and (not (= var0 nullAddr)) (and (and (and (and (and (and (and (and (and (= var5 var7) (= var18 var17)) (= var13 var14)) (= var4 var3)) (= var6 var2)) (= var15 var1)) (= var11 var8)) (= var16 var12)) (= var9 var10)) (= var0 (inner (getnode (read var7 var12)))))))) (inv_main88 var5 var18 var13 var4 var6 var15 var11 var16 var9 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Int) (var29 Int) (var30 Int) (var31 Addr)) (or (not (and (inv_main88 var6 var30 var29 var3 var1 var15 var19 var11 var27 var23) (and (not (= var8 nullAddr)) (and (and (and (and (and (and (and (and (and (and (and (= var9 var6) (= var0 var30)) (= var18 var29)) (= var28 var3)) (= var12 var1)) (= var14 var15)) (= var21 var19)) (= var26 var11)) (= var10 var27)) (= var24 var23)) (= var17 (next (getnode (read var6 var23))))) (and (and (and (and (and (and (and (and (and (and (= var16 (write var9 var24 defObj)) (= var5 var0)) (= var13 var18)) (= var22 var28)) (= var2 var12)) (= var20 var14)) (= var25 var21)) (= var31 var26)) (= var4 var10)) (= var7 var24)) (= var8 var17)))))) (inv_main88 var16 var5 var13 var22 var2 var20 var25 var31 var4 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main69 var5 var18 var16 var2 var1 var0 var10 var9 var14) (and (and (= 3 var11) (= 5 var12)) (and (not (= var11 var12)) (and (= var8 nullAddr) (and (and (and (and (and (and (and (and (and (= var13 var5) (= var17 var18)) (= var4 var16)) (= var11 var2)) (= var15 var1)) (= var3 var0)) (= var6 var10)) (= var7 var9)) (= var12 var14)) (= var8 (next (getnode (read var5 var9)))))))))) (inv_main56 var13 var17 var4 (+ (+ var11 1) 1) var15 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main69 var5 var18 var16 var2 var1 var0 var10 var9 var14) (and (and (= (+ var11 1) var12) (<= 0 (+ (+ var4 (* (- 1) var11)) (- 1)))) (and (or (not (= 3 var11)) (not (= 5 var12))) (and (not (= var11 var12)) (and (= var8 nullAddr) (and (and (and (and (and (and (and (and (and (= var13 var5) (= var17 var18)) (= var4 var16)) (= var11 var2)) (= var15 var1)) (= var3 var0)) (= var6 var10)) (= var7 var9)) (= var12 var14)) (= var8 (next (getnode (read var5 var9))))))))))) (inv_main56 var13 var17 var4 (+ var11 1) var15 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main62 var3 var13 var9 var2 var1 var0 var4) (and (and (= (+ var14 1) 0) (<= 0 (+ (+ var7 (* (- 1) var14)) (- 1)))) (and (not (= var14 0)) (and (= var6 nullAddr) (and (and (and (and (and (and (and (= var5 var3) (= var12 var13)) (= var7 var9)) (= var14 var2)) (= var10 var1)) (= var11 var0)) (= var8 var4)) (= var6 (inner (getnode (read var3 var4)))))))))) (inv_main56 var5 var12 var7 (+ var14 1) var10 var11 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main72 var5 var15 var13 var2 var1 var0 var7 var6) (and (= var12 nullAddr) (and (and (and (and (and (and (and (and (= var11 var5) (= var3 var15)) (= var16 var13)) (= var14 var2)) (= var9 var1)) (= var4 var0)) (= var10 var7)) (= var8 var6)) (= var12 (next (getnode (read var5 var7)))))))) (inv_main56 var11 var3 var16 (+ var14 1) var9 var4 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main56 var3 var6 var4 var2 var1 var0 var5) (and (= var5 nullAddr) (and (not (<= 0 (+ (+ var2 (* (- 1) var4)) (- 1)))) (not (= nullAddr var5)))))) (inv_main56 var3 var6 var4 (+ var2 1) var1 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main8 var3 var5 var4 var2 var1 var0) (not (<= 0 (+ var4 (* (- 1) var2)))))) (inv_main56 var3 var5 var4 var5 var1 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 node) (var19 Heap) (var20 Int) (var21 Int) (var22 Int) (var23 Int) (var24 Int) (var25 Addr)) (or (not (and (inv_main33 var5 var22 var16 var4 var2 var25 var20 var9 var13 var11 var15 var1) (and (and (not (= nullAddr var0)) (and (and (and (and (and (and (and (and (and (and (and (and (= var19 (newHeap (alloc var5 (O_node var18)))) (= var21 var22)) (= var8 var16)) (= var6 var4)) (= var3 var2)) (= var7 var25)) (= var10 var20)) (= var24 var9)) (= var17 var13)) (= var12 var11)) (= var23 var15)) (= var14 var1)) (= var0 (newAddr (alloc var5 (O_node var18)))))) (<= 0 (+ var15 (- 1)))))) (inv_main37 var19 var21 var8 var6 var3 var7 var10 var24 var17 var12 var23 var14 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int)) (or (not (and (inv_main72 var5 var15 var13 var2 var1 var0 var7 var6) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (and (= var11 var5) (= var3 var15)) (= var16 var13)) (= var14 var2)) (= var9 var1)) (= var4 var0)) (= var10 var7)) (= var8 var6)) (= var12 (next (getnode (read var5 var7)))))))) (inv_main62 var11 var3 var16 var14 var9 var4 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main56 var3 var6 var4 var2 var1 var0 var5) (and (not (= var5 nullAddr)) (and (not (<= 0 (+ (+ var2 (* (- 1) var4)) (- 1)))) (not (= nullAddr var5)))))) (inv_main62 var3 var6 var4 var2 var1 var0 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Int) (var18 Int) (var19 Int) (var20 Int)) (or (not (and (inv_main52 var5 var19 var15 var3 var2 var1 var18 var8 var16 var12) (and (and (and (and (and (and (and (and (and (and (= var4 var5) (= var9 var19)) (= var17 var15)) (= var10 var3)) (= var20 var2)) (= var6 var1)) (= var14 var18)) (= var0 var8)) (= var13 var16)) (= var11 var12)) (= var7 (next (getnode (read var5 var12))))))) (inv_main49 var4 var9 var17 var10 var20 var6 var14 var0 var13 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Heap)) (or (not (and (inv_main46 var8 var16 var12 var4 var2 var1 var15 var9 var14) (and (not (= nullAddr var13)) (and (and (and (and (and (and (and (and (= var17 (write var8 var14 (O_node (node nullAddr (inner (getnode (read var8 var14))))))) (= var7 var16)) (= var0 var12)) (= var5 var4)) (= var10 var2)) (= var13 var1)) (= var3 var15)) (= var6 var9)) (= var11 var14))))) (inv_main49 var17 var7 var0 var5 var10 var13 var3 var6 var11 var13)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Int) (var26 Addr) (var27 Heap) (var28 Int)) (or (not (and (inv_main85 var4 var28 var25 var1 var0 var14 var16 var11 var22) (and (not (= var6 nullAddr)) (and (and (= var21 nullAddr) (and (and (and (and (and (and (and (and (and (= var12 (write var27 var9 defObj)) (= var3 var8)) (= var17 var13)) (= var5 var2)) (= var24 var19)) (= var7 var18)) (= var15 var10)) (= var23 var9)) (= var6 var20)) (= var26 var21))) (and (and (and (and (and (and (and (and (and (= var27 var4) (= var8 var28)) (= var13 var25)) (= var2 var1)) (= var19 var0)) (= var18 var14)) (= var10 var16)) (= var9 var11)) (= var20 var22)) (= var21 (inner (getnode (read var4 var11))))))))) (inv_main84 var12 var3 var17 var5 var24 var7 var15 var6)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Int) (var22 Heap) (var23 Int) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Int) (var29 Int) (var30 Addr) (var31 Addr) (var32 Int) (var33 Int) (var34 Addr) (var35 Addr) (var36 Addr) (var37 Int) (var38 Addr) (var39 Int) (var40 Int) (var41 Int)) (or (not (and (inv_main88 var7 var40 var39 var4 var0 var18 var25 var13 var36 var30) (and (not (= var38 nullAddr)) (and (and (= var10 nullAddr) (and (and (and (and (and (and (and (and (and (= var22 (write var17 var2 defObj)) (= var33 var6)) (= var21 var15)) (= var32 var28)) (= var29 var1)) (= var9 var26)) (= var20 var34)) (= var5 var2)) (= var38 var3)) (= var24 var10))) (and (and (and (and (and (and (and (and (and (and (and (= var11 var7) (= var41 var40)) (= var23 var39)) (= var37 var4)) (= var14 var0)) (= var16 var18)) (= var27 var25)) (= var35 var13)) (= var12 var36)) (= var31 var30)) (= var19 (next (getnode (read var7 var30))))) (and (and (and (and (and (and (and (and (and (and (= var17 (write var11 var31 defObj)) (= var6 var41)) (= var15 var23)) (= var28 var37)) (= var1 var14)) (= var26 var16)) (= var34 var27)) (= var2 var35)) (= var3 var12)) (= var8 var31)) (= var10 var19))))))) (inv_main84 var22 var33 var21 var32 var29 var9 var20 var38)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main56 var3 var6 var4 var2 var1 var0 var5) (and (not (= var0 nullAddr)) (= nullAddr var5)))) (inv_main84 var3 var6 var4 var2 var1 var0 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (or (not (and (inv_main49 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3) (= (next (getnode (read var4 var3))) nullAddr))) (inv_main51 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (or (not (and (inv_main49 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3) (not (= (next (getnode (read var4 var3))) nullAddr)))) (inv_main52 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr)) (or (not (inv_main40 var4 var12 var10 var3 var2 var0 var11 var6 var8 var7 var9 var1 var13 var5)) (inv_main40 var4 var12 var10 var3 var2 var0 var11 var6 var8 var7 var9 var1 var13 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 node) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Addr) (var19 Int) (var20 Int) (var21 Int) (var22 Heap) (var23 Int) (var24 Addr) (var25 Addr)) (or (not (and (inv_main33 var7 var20 var17 var4 var2 var0 var19 var11 var15 var13 var16 var1) (and (and (= nullAddr var14) (and (and (and (and (and (and (and (and (and (and (and (and (= var22 (newHeap (alloc var7 (O_node var10)))) (= var9 var20)) (= var21 var17)) (= var23 var4)) (= var12 var2)) (= var24 var0)) (= var3 var19)) (= var8 var11)) (= var5 var15)) (= var25 var13)) (= var6 var16)) (= var18 var1)) (= var14 (newAddr (alloc var7 (O_node var10)))))) (<= 0 (+ var16 (- 1)))))) (inv_main40 var22 var9 var21 var23 var12 var24 var3 var8 var5 var25 var6 var18 var14 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Int) (var23 Int) (var24 Int) (var25 Addr)) (or (not (and (inv_main37 var7 var23 var17 var3 var2 var0 var22 var9 var13 var12 var16 var1 var25) (and (and (and (and (and (and (and (and (and (and (and (and (= var8 (write var7 var25 (O_node (node var1 (inner (getnode (read var7 var25))))))) (= var10 var23)) (= var21 var17)) (= var15 var3)) (= var11 var2)) (= var20 var0)) (= var24 var22)) (= var4 var9)) (= var18 var13)) (= var6 var12)) (= var5 var16)) (= var14 var1)) (= var19 var25)))) (inv_main33 var8 var10 var21 var15 var11 var20 var24 var4 var18 var6 (+ var5 (- 1)) var19)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 node) (var7 Addr) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main11 var4 var15 var11 var2 var1 var0) (and (and (not (= nullAddr var7)) (and (and (and (and (and (and (and (and (and (= var8 (newHeap (alloc var4 (O_node var6)))) (= var9 var15)) (= var5 var11)) (= var3 var2)) (= var14 var1)) (= var13 var0)) (= var17 5)) (= var10 var2)) (= var16 var2)) (= var7 (newAddr (alloc var4 (O_node var6)))))) (and (not (= var12 0)) (<= 0 (+ (+ 10 (* (- 1) var1)) (- 1))))))) (inv_main33 var8 var9 var5 var3 var14 var13 var17 var10 var16 var7 var16 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main84 var4 var7 var5 var2 var1 var0 var6 var3)) (inv_main85 var4 var7 var5 var2 var1 var0 var6 var3 (next (getnode (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main69 var5 var18 var16 var2 var1 var0 var10 var9 var14) (and (not (= var8 nullAddr)) (and (and (and (and (and (and (and (and (and (= var13 var5) (= var17 var18)) (= var4 var16)) (= var11 var2)) (= var15 var1)) (= var3 var0)) (= var6 var10)) (= var7 var9)) (= var12 var14)) (= var8 (next (getnode (read var5 var9)))))))) (inv_main69 var13 var17 var4 var11 var15 var3 var6 var8 (+ var12 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main62 var4 var13 var10 var2 var1 var0 var5) (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (= var11 var4) (= var9 var13)) (= var14 var10)) (= var12 var2)) (= var3 var1)) (= var7 var0)) (= var8 var5)) (= var6 (inner (getnode (read var4 var5)))))))) (inv_main69 var11 var9 var14 var12 var3 var7 var8 var6 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main69 var5 var18 var16 var2 var1 var0 var10 var9 var14) (and (or (not (= (+ var11 1) var12)) (not (<= 0 (+ (+ var4 (* (- 1) var11)) (- 1))))) (and (or (not (= 3 var11)) (not (= 5 var12))) (and (not (= var11 var12)) (and (= var8 nullAddr) (and (and (and (and (and (and (and (and (and (= var13 var5) (= var17 var18)) (= var4 var16)) (= var11 var2)) (= var15 var1)) (= var3 var0)) (= var6 var10)) (= var7 var9)) (= var12 var14)) (= var8 (next (getnode (read var5 var9))))))))))) (inv_main92 var13 var17 var4 var11 var15 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main62 var3 var13 var9 var2 var1 var0 var4) (and (or (not (= (+ var14 1) 0)) (not (<= 0 (+ (+ var7 (* (- 1) var14)) (- 1))))) (and (not (= var14 0)) (and (= var6 nullAddr) (and (and (and (and (and (and (and (= var5 var3) (= var12 var13)) (= var7 var9)) (= var14 var2)) (= var10 var1)) (= var11 var0)) (= var8 var4)) (= var6 (inner (getnode (read var3 var4)))))))))) (inv_main92 var5 var12 var7 var14 var10 var11 var8)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main56 var3 var6 var4 var2 var1 var0 var5) (and (<= 0 (+ (+ var2 (* (- 1) var4)) (- 1))) (not (= nullAddr var5))))) (inv_main92 var3 var6 var4 var2 var1 var0 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (or (not (and (inv_main5 var3 var9 var6 var1 var0) (and (and (and (and (and (= var5 var3) (= var4 var9)) (= var8 var6)) (= var10 var1)) (= var7 var0)) (= var2 nullAddr)))) (inv_main8 var5 var4 var8 var4 var7 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main11 var3 var5 var4 var2 var1 var0) (not (<= 0 (+ (+ 10 (* (- 1) var1)) (- 1)))))) (inv_main8 var3 var5 var4 (+ var2 1) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int)) (or (not (and (inv_main11 var4 var6 var5 var2 var1 var0) (and (= var3 0) (<= 0 (+ (+ 10 (* (- 1) var1)) (- 1)))))) (inv_main8 var4 var6 var5 (+ var2 1) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (or (not (inv_main31 var5 var10 var6 var3 var2 var1 var8 var9 var4 var0 var7)) (inv_main29 (write var5 var0 (O_node (node (next (getnode (read var5 var0))) var7))) var10 var6 var3 var2 var1 var8 var9 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Heap) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int) (var19 Int)) (or (not (and (inv_main29 var8 var18 var15 var3 var1 var0 var17 var9 var13 var11) (and (and (and (and (and (and (and (and (and (= var7 (write var8 var11 (O_node (node nullAddr (inner (getnode (read var8 var11))))))) (= var12 var18)) (= var6 var15)) (= var10 var3)) (= var16 var1)) (= var2 var0)) (= var19 var17)) (= var4 var9)) (= var14 var13)) (= var5 var11)))) (inv_main46 var7 var12 var6 var10 var16 var2 var19 var4 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int)) (or (not (inv_main26 var5 var10 var6 var3 var2 var1 var8 var9 var4 var0 var7)) (inv_main26 var5 var10 var6 var3 var2 var1 var8 var9 var4 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 node) (var15 Addr) (var16 Int) (var17 Int)) (or (not (and (inv_main11 var3 var16 var11 var2 var1 var0) (and (and (= nullAddr var15) (and (and (and (and (and (and (and (and (and (= var9 (newHeap (alloc var3 (O_node var14)))) (= var6 var16)) (= var13 var11)) (= var17 var2)) (= var8 var1)) (= var7 var0)) (= var10 5)) (= var4 var2)) (= var5 var2)) (= var15 (newAddr (alloc var3 (O_node var14)))))) (and (not (= var12 0)) (<= 0 (+ (+ 10 (* (- 1) var1)) (- 1))))))) (inv_main26 var9 var6 var13 var17 var8 var7 var10 var4 var5 var15 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int) (var18 Int)) (or (not (and (inv_main69 var5 var18 var16 var2 var1 var0 var10 var9 var14) (and (= var11 var12) (and (= var8 nullAddr) (and (and (and (and (and (and (and (and (and (= var13 var5) (= var17 var18)) (= var4 var16)) (= var11 var2)) (= var15 var1)) (= var3 var0)) (= var6 var10)) (= var7 var9)) (= var12 var14)) (= var8 (next (getnode (read var5 var9))))))))) (inv_main72 var13 var17 var4 var11 var15 var3 var6 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int)) (or (not (and (inv_main62 var3 var13 var9 var2 var1 var0 var4) (and (= var14 0) (and (= var6 nullAddr) (and (and (and (and (and (and (and (= var5 var3) (= var12 var13)) (= var7 var9)) (= var14 var2)) (= var10 var1)) (= var11 var0)) (= var8 var4)) (= var6 (inner (getnode (read var3 var4))))))))) (inv_main72 var5 var12 var7 var14 var10 var11 var8 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main8 var3 var5 var4 var2 var1 var0) (<= 0 (+ var4 (* (- 1) var2))))) (inv_main11 var3 var5 var4 var2 0 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int) (var17 Int)) (or (not (and (inv_main51 var6 var17 var14 var4 var2 var1 var16 var10 var15 var13) (and (and (and (and (and (and (and (= var9 (write var6 var13 (O_node (node var15 (inner (getnode (read var6 var13))))))) (= var8 var17)) (= var11 var14)) (= var0 var4)) (= var12 var2)) (= var3 var1)) (= var5 var16)) (= var7 var10)))) (inv_main11 var9 var8 var11 var0 (+ var12 1) var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Int) (var15 Int) (var16 Int) (var17 Int)) (or (not (and (inv_main46 var3 var16 var9 var2 var1 var0 var14 var6 var11) (and (= nullAddr var4) (and (and (and (and (and (and (and (and (= var13 (write var3 var11 (O_node (node nullAddr (inner (getnode (read var3 var11))))))) (= var7 var16)) (= var5 var9)) (= var17 var2)) (= var15 var1)) (= var4 var0)) (= var10 var14)) (= var8 var6)) (= var12 var11))))) (inv_main11 var13 var7 var5 var17 (+ var15 1) var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr)) (or (not (and (inv_main33 var6 var10 var7 var3 var2 var1 var8 var9 var4 var0 var5 var11) (not (<= 0 (+ var5 (- 1)))))) (inv_main31 var6 var10 var7 var3 var2 var1 var8 var9 var4 var0 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr)) (not (and (inv_main37 var6 var10 var7 var3 var2 var1 var8 var9 var4 var0 var5 var12 var11) (not (is-O_node (read var6 var11))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main31 var5 var10 var6 var3 var2 var1 var8 var9 var4 var0 var7) (not (is-O_node (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 Int) (var9 Int)) (not (and (inv_main29 var5 var9 var6 var3 var2 var1 var7 var8 var4 var0) (not (is-O_node (read var5 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int)) (not (and (inv_main46 var3 var8 var4 var2 var1 var0 var6 var7 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (not (and (inv_main49 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (not (and (inv_main52 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (not (and (inv_main51 var4 var9 var5 var2 var1 var0 var7 var8 var6 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main62 var3 var6 var4 var2 var1 var0 var5) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main69 var3 var8 var4 var2 var1 var0 var6 var5 var7) (not (is-O_node (read var3 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main72 var3 var7 var5 var2 var1 var0 var6 var4) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main84 var4 var7 var5 var2 var1 var0 var6 var3) (not (is-O_node (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int)) (not (and (inv_main85 var5 var8 var6 var2 var1 var0 var7 var4 var3) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main88 var5 var9 var6 var2 var1 var0 var7 var4 var3 var8) (not (is-O_node (read var5 var8))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int)) (not (inv_main92 var3 var6 var4 var2 var1 var0 var5)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll_of_sll_nondet_append-2.i.smt2 b/heap-theory-benchmarks/heap/sll_of_sll_nondet_append-2.i.smt2 new file mode 100644 index 00000000..19bb23a0 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll_of_sll_nondet_append-2.i.smt2 @@ -0,0 +1,129 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (inner Addr)) + ) +)) +(declare-fun inv_main101 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main108 (Heap Int Int Int Int Addr Addr Addr Int) Bool) +(declare-fun inv_main11 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main111 (Heap Int Int Int Int Addr Addr Int) Bool) +(declare-fun inv_main123 (Heap Int Int Int Int Addr Addr Addr) Bool) +(declare-fun inv_main124 (Heap Int Int Int Int Addr Addr Addr Addr) Bool) +(declare-fun inv_main127 (Heap Int Int Int Int Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main131 (Heap Int Int Int Int Addr Addr) Bool) +(declare-fun inv_main26 (Heap Int Int Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main29 (Heap Int Int Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main31 (Heap Int Int Int Int Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main33 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main37 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main40 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr Addr Int) Bool) +(declare-fun inv_main46 (Heap Int Int Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main49 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main5 (Heap Int Int Int Int) Bool) +(declare-fun inv_main51 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main52 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main65 (Heap Int Int Int Int Addr Int Int Int Addr Int) Bool) +(declare-fun inv_main68 (Heap Int Int Int Int Addr Int Int Int Addr) Bool) +(declare-fun inv_main70 (Heap Int Int Int Int Addr Int Int Int Addr Addr) Bool) +(declare-fun inv_main72 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr) Bool) +(declare-fun inv_main76 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main79 (Heap Int Int Int Int Addr Int Int Int Addr Int Addr Addr Int) Bool) +(declare-fun inv_main8 (Heap Int Int Int Int Addr) Bool) +(declare-fun inv_main85 (Heap Int Int Int Int Addr Int Int Addr) Bool) +(declare-fun inv_main88 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main90 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main91 (Heap Int Int Int Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main95 (Heap Int Int Int Int Addr Addr) Bool) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int)) (or (not (= var1 emptyHeap)) (inv_main5 var1 3 5 var0 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Int) (var19 Addr)) (or (not (and (inv_main68 var3 var12 var0 var5 var15 var17 var11 var1 var2 var13) (and (and (and (and (and (and (and (and (and (= var10 (write var3 var13 (O_node (node nullAddr (inner (getnode (read var3 var13))))))) (= var6 var12)) (= var18 var0)) (= var9 var5)) (= var8 var15)) (= var4 var17)) (= var7 var11)) (= var16 var1)) (= var14 var2)) (= var19 var13)))) (inv_main85 var10 var6 var18 var9 var8 var4 var7 var16 var19)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main108 var4 var12 var1 var7 var13 var14 var3 var0 var18) (and (and (= 3 var6) (= 5 var8)) (and (not (= var6 var8)) (and (= var11 nullAddr) (and (and (and (and (and (and (and (and (and (= var9 var4) (= var2 var12)) (= var10 var1)) (= var6 var7)) (= var5 var13)) (= var15 var14)) (= var17 var3)) (= var16 var0)) (= var8 var18)) (= var11 (next (getnode (read var4 var0)))))))))) (inv_main95 var9 var2 var10 (+ (+ var6 1) 1) var5 var15 var17)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main108 var4 var12 var1 var7 var13 var14 var3 var0 var18) (and (and (= (+ var6 1) var8) (<= 0 (+ (+ var10 (* (- 1) var6)) (- 1)))) (and (or (not (= 3 var6)) (not (= 5 var8))) (and (not (= var6 var8)) (and (= var11 nullAddr) (and (and (and (and (and (and (and (and (and (= var9 var4) (= var2 var12)) (= var10 var1)) (= var6 var7)) (= var5 var13)) (= var15 var14)) (= var17 var3)) (= var16 var0)) (= var8 var18)) (= var11 (next (getnode (read var4 var0))))))))))) (inv_main95 var9 var2 var10 (+ var6 1) var5 var15 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main101 var2 var7 var0 var3 var8 var12 var1) (and (and (= (+ var5 1) 0) (<= 0 (+ (+ var6 (* (- 1) var5)) (- 1)))) (and (not (= var5 0)) (and (= var14 nullAddr) (and (and (and (and (and (and (and (= var11 var2) (= var4 var7)) (= var6 var0)) (= var5 var3)) (= var10 var8)) (= var9 var12)) (= var13 var1)) (= var14 (inner (getnode (read var2 var1)))))))))) (inv_main95 var11 var4 var6 (+ var5 1) var10 var9 var13)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main111 var6 var9 var1 var8 var10 var11 var4 var5) (and (= var14 nullAddr) (and (and (and (and (and (and (and (and (= var7 var6) (= var13 var9)) (= var15 var1)) (= var3 var8)) (= var12 var10)) (= var2 var11)) (= var0 var4)) (= var16 var5)) (= var14 (next (getnode (read var6 var4)))))))) (inv_main95 var7 var13 var15 (+ var3 1) var12 var2 var14)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main95 var2 var3 var0 var6 var4 var5 var1) (and (= var1 nullAddr) (and (not (<= 0 (+ (+ var6 (* (- 1) var0)) (- 1)))) (not (= nullAddr var1)))))) (inv_main95 var2 var3 var0 (+ var6 1) var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Heap)) (or (not (and (inv_main90 var2 var11 var0 var6 var12 var14 var10 var1 var9 var13) (and (and (and (and (and (and (and (= var17 (write var2 var13 (O_node (node var9 (inner (getnode (read var2 var13))))))) (= var7 var11)) (= var8 var0)) (= var16 var6)) (= var15 var12)) (= var5 var14)) (= var3 var10)) (= var4 var1)))) (inv_main95 var17 var7 var8 var7 var15 var5 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr)) (or (not (and (inv_main85 var3 var14 var0 var8 var15 var17 var13 var1 var12) (and (= nullAddr var4) (and (and (and (and (and (and (and (and (= var2 (write var3 var12 (O_node (node nullAddr (inner (getnode (read var3 var12))))))) (= var6 var14)) (= var16 var0)) (= var7 var8)) (= var5 var15)) (= var4 var17)) (= var10 var13)) (= var9 var1)) (= var11 var12))))) (inv_main95 var2 var6 var16 var6 var5 var11 var11)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int)) (or (not (inv_main40 var1 var9 var0 var6 var10 var11 var4 var13 var12 var2 var5 var8 var7 var3)) (inv_main40 var1 var9 var0 var6 var10 var11 var4 var13 var12 var2 var5 var8 var7 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 node) (var21 Int) (var22 Int) (var23 Addr) (var24 Int) (var25 Int)) (or (not (and (inv_main33 var4 var18 var0 var12 var21 var23 var9 var25 var24 var5 var10 var17) (and (and (= nullAddr var15) (and (and (and (and (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var4 (O_node var20)))) (= var22 var18)) (= var7 var0)) (= var3 var12)) (= var6 var21)) (= var16 var23)) (= var14 var9)) (= var13 var25)) (= var1 var24)) (= var8 var5)) (= var2 var10)) (= var19 var17)) (= var15 (newAddr (alloc var4 (O_node var20)))))) (<= 0 (+ var10 (- 1)))))) (inv_main40 var11 var22 var7 var3 var6 var16 var14 var13 var1 var8 var2 var19 var15 1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int)) (or (not (and (inv_main72 var4 var6 var1 var11 var8 var10 var5 var2 var3 var7 var9 var0) (not (<= 0 (+ var9 (- 1)))))) (inv_main70 var4 var6 var1 var11 var8 var10 var5 var2 var3 var7 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Int) (var11 Int)) (or (not (and (inv_main33 var1 var4 var0 var9 var5 var8 var6 var11 var10 var3 var7 var2) (not (<= 0 (+ var7 (- 1)))))) (inv_main31 var1 var4 var0 var9 var5 var8 var6 var11 var10 var3 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main108 var4 var12 var1 var7 var13 var14 var3 var0 var18) (and (= var6 var8) (and (= var11 nullAddr) (and (and (and (and (and (and (and (and (and (= var9 var4) (= var2 var12)) (= var10 var1)) (= var6 var7)) (= var5 var13)) (= var15 var14)) (= var17 var3)) (= var16 var0)) (= var8 var18)) (= var11 (next (getnode (read var4 var0))))))))) (inv_main111 var9 var2 var10 var6 var5 var15 var17 var8)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main101 var2 var7 var0 var3 var8 var12 var1) (and (= var5 0) (and (= var14 nullAddr) (and (and (and (and (and (and (and (= var11 var2) (= var4 var7)) (= var6 var0)) (= var5 var3)) (= var10 var8)) (= var9 var12)) (= var13 var1)) (= var14 (inner (getnode (read var2 var1))))))))) (inv_main111 var11 var4 var6 var5 var10 var9 var13 0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main108 var4 var12 var1 var7 var13 var14 var3 var0 var18) (and (not (= var11 nullAddr)) (and (and (and (and (and (and (and (and (and (= var9 var4) (= var2 var12)) (= var10 var1)) (= var6 var7)) (= var5 var13)) (= var15 var14)) (= var17 var3)) (= var16 var0)) (= var8 var18)) (= var11 (next (getnode (read var4 var0)))))))) (inv_main108 var9 var2 var10 var6 var5 var15 var17 var11 (+ var8 1))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int)) (or (not (and (inv_main101 var4 var8 var0 var7 var10 var11 var3) (and (not (= var5 nullAddr)) (and (and (and (and (and (and (and (= var9 var4) (= var6 var8)) (= var14 var0)) (= var2 var7)) (= var13 var10)) (= var12 var11)) (= var1 var3)) (= var5 (inner (getnode (read var4 var3)))))))) (inv_main108 var9 var6 var14 var2 var13 var12 var1 var5 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main88 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7) (not (= (next (getnode (read var3 var7))) nullAddr)))) (inv_main91 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (or (not (and (inv_main49 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5) (not (= (next (getnode (read var1 var5))) nullAddr)))) (inv_main52 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Int) (var21 Int) (var22 Addr) (var23 Addr) (var24 Int) (var25 Addr)) (or (not (and (inv_main76 var8 var18 var1 var12 var21 var23 var17 var2 var5 var19 var11 var14 var25) (and (and (and (and (and (and (and (and (and (and (and (and (= var6 (write var8 var25 (O_node (node var14 (inner (getnode (read var8 var25))))))) (= var13 var18)) (= var20 var1)) (= var0 var12)) (= var24 var21)) (= var4 var23)) (= var3 var17)) (= var16 var2)) (= var10 var5)) (= var22 var19)) (= var7 var11)) (= var15 var14)) (= var9 var25)))) (inv_main72 var6 var13 var20 var0 var24 var4 var3 var16 var10 var22 (+ var7 (- 1)) var9)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Heap) (var8 node) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main8 var4 var11 var0 var6 var13 var16) (and (and (not (= nullAddr var9)) (and (and (and (and (and (and (and (and (and (= var7 (newHeap (alloc var4 (O_node var8)))) (= var15 var11)) (= var3 var0)) (= var12 var6)) (= var5 var13)) (= var10 var16)) (= var14 5)) (= var2 var11)) (= var1 var11)) (= var9 (newAddr (alloc var4 (O_node var8)))))) (not (<= 0 (+ var0 (* (- 1) var6))))))) (inv_main72 var7 var15 var3 var12 var5 var10 var14 var2 var1 var9 var1 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Heap) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Int) (var21 Int) (var22 Addr) (var23 Int) (var24 node) (var25 Addr)) (or (not (and (inv_main72 var8 var21 var1 var13 var23 var25 var20 var2 var4 var22 var12 var14) (and (and (not (= nullAddr var0)) (and (and (and (and (and (and (and (and (and (and (and (and (= var7 (newHeap (alloc var8 (O_node var24)))) (= var19 var21)) (= var9 var1)) (= var17 var13)) (= var15 var23)) (= var11 var25)) (= var5 var20)) (= var18 var2)) (= var16 var4)) (= var3 var22)) (= var6 var12)) (= var10 var14)) (= var0 (newAddr (alloc var8 (O_node var24)))))) (<= 0 (+ var12 (- 1)))))) (inv_main76 var7 var19 var9 var17 var15 var11 var5 var18 var16 var3 var6 var10 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 node) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Int) (var21 Int) (var22 Addr) (var23 Int) (var24 Int) (var25 Int)) (or (not (and (inv_main33 var5 var19 var1 var14 var20 var22 var10 var25 var24 var6 var11 var18) (and (and (not (= nullAddr var12)) (and (and (and (and (and (and (and (and (and (and (and (and (= var17 (newHeap (alloc var5 (O_node var15)))) (= var2 var19)) (= var4 var1)) (= var3 var14)) (= var13 var20)) (= var0 var22)) (= var21 var10)) (= var8 var25)) (= var9 var24)) (= var7 var6)) (= var23 var11)) (= var16 var18)) (= var12 (newAddr (alloc var5 (O_node var15)))))) (<= 0 (+ var11 (- 1)))))) (inv_main37 var17 var2 var4 var3 var13 var0 var21 var8 var9 var7 var23 var16 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main108 var4 var12 var1 var7 var13 var14 var3 var0 var18) (and (or (not (= (+ var6 1) var8)) (not (<= 0 (+ (+ var10 (* (- 1) var6)) (- 1))))) (and (or (not (= 3 var6)) (not (= 5 var8))) (and (not (= var6 var8)) (and (= var11 nullAddr) (and (and (and (and (and (and (and (and (and (= var9 var4) (= var2 var12)) (= var10 var1)) (= var6 var7)) (= var5 var13)) (= var15 var14)) (= var17 var3)) (= var16 var0)) (= var8 var18)) (= var11 (next (getnode (read var4 var0))))))))))) (inv_main131 var9 var2 var10 var6 var5 var15 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr)) (or (not (and (inv_main101 var2 var7 var0 var3 var8 var12 var1) (and (or (not (= (+ var5 1) 0)) (not (<= 0 (+ (+ var6 (* (- 1) var5)) (- 1))))) (and (not (= var5 0)) (and (= var14 nullAddr) (and (and (and (and (and (and (and (= var11 var2) (= var4 var7)) (= var6 var0)) (= var5 var3)) (= var10 var8)) (= var9 var12)) (= var13 var1)) (= var14 (inner (getnode (read var2 var1)))))))))) (inv_main131 var11 var4 var6 var5 var10 var9 var13)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main95 var2 var3 var0 var6 var4 var5 var1) (and (<= 0 (+ (+ var6 (* (- 1) var0)) (- 1))) (not (= nullAddr var1))))) (inv_main131 var2 var3 var0 var6 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int)) (or (not (and (inv_main52 var2 var14 var1 var6 var16 var18 var3 var20 var7 var17) (and (and (and (and (and (and (and (and (and (and (= var11 var2) (= var4 var14)) (= var8 var1)) (= var0 var6)) (= var10 var16)) (= var9 var18)) (= var12 var3)) (= var13 var20)) (= var19 var7)) (= var5 var17)) (= var15 (next (getnode (read var2 var17))))))) (inv_main49 var11 var4 var8 var0 var10 var9 var12 var13 var19 var15)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Heap) (var15 Int) (var16 Addr) (var17 Int)) (or (not (and (inv_main46 var3 var13 var0 var7 var15 var16 var5 var17 var9) (and (not (= nullAddr var11)) (and (and (and (and (and (and (and (and (= var14 (write var3 var9 (O_node (node nullAddr (inner (getnode (read var3 var9))))))) (= var2 var13)) (= var12 var0)) (= var8 var7)) (= var4 var15)) (= var11 var16)) (= var1 var5)) (= var6 var17)) (= var10 var9))))) (inv_main49 var14 var2 var12 var8 var4 var11 var1 var6 var10 var11)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (or (not (inv_main26 var1 var3 var0 var8 var5 var7 var6 var10 var9 var2 var4)) (inv_main26 var1 var3 var0 var8 var5 var7 var6 var10 var9 var2 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 node) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int)) (or (not (and (inv_main11 var4 var10 var0 var7 var11 var16) (and (and (= nullAddr var3) (and (and (and (and (and (and (and (and (and (= var15 (newHeap (alloc var4 (O_node var9)))) (= var2 var10)) (= var6 var0)) (= var12 var7)) (= var5 var11)) (= var13 var16)) (= var14 5)) (= var17 var7)) (= var8 var7)) (= var3 (newAddr (alloc var4 (O_node var9)))))) (and (not (= var1 0)) (<= 0 (+ (+ 10 (* (- 1) var11)) (- 1))))))) (inv_main26 var15 var2 var6 var12 var5 var13 var14 var17 var8 var3 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (or (not (and (inv_main88 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7) (= (next (getnode (read var3 var7))) nullAddr))) (inv_main90 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Int)) (or (not (and (inv_main111 var6 var9 var1 var8 var10 var11 var4 var5) (and (not (= var14 nullAddr)) (and (and (and (and (and (and (and (and (= var7 var6) (= var13 var9)) (= var15 var1)) (= var3 var8)) (= var12 var10)) (= var2 var11)) (= var0 var4)) (= var16 var5)) (= var14 (next (getnode (read var6 var4)))))))) (inv_main101 var7 var13 var15 var3 var12 var2 var14)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main95 var2 var3 var0 var6 var4 var5 var1) (and (not (= var1 nullAddr)) (and (not (<= 0 (+ (+ var6 (* (- 1) var0)) (- 1)))) (not (= nullAddr var1)))))) (inv_main101 var2 var3 var0 var6 var4 var5 var1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (inv_main79 var3 var9 var0 var5 var11 var12 var8 var1 var2 var10 var4 var6 var13 var7)) (inv_main79 var3 var9 var0 var5 var11 var12 var8 var1 var2 var10 var4 var6 var13 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Heap) (var7 node) (var8 Int) (var9 Int) (var10 Int) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Int) (var21 Int) (var22 Addr) (var23 Addr) (var24 Int) (var25 Addr)) (or (not (and (inv_main72 var6 var21 var1 var10 var24 var25 var20 var2 var5 var22 var9 var17) (and (and (= nullAddr var23) (and (and (and (and (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var6 (O_node var7)))) (= var0 var21)) (= var4 var1)) (= var14 var10)) (= var8 var24)) (= var19 var25)) (= var18 var20)) (= var3 var2)) (= var15 var5)) (= var13 var22)) (= var12 var9)) (= var16 var17)) (= var23 (newAddr (alloc var6 (O_node var7)))))) (<= 0 (+ var9 (- 1)))))) (inv_main79 var11 var0 var4 var14 var8 var19 var18 var3 var15 var13 var12 var16 var23 1)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Heap)) (or (not (and (inv_main5 var3 var4 var1 var7 var6) (and (and (and (and (and (= var10 var3) (= var0 var4)) (= var8 var1)) (= var5 var7)) (= var2 var6)) (= var9 nullAddr)))) (inv_main8 var10 var0 var8 var0 var2 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main11 var1 var2 var0 var5 var3 var4) (not (<= 0 (+ (+ 10 (* (- 1) var3)) (- 1)))))) (inv_main8 var1 var2 var0 (+ var5 1) var3 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main11 var2 var3 var0 var6 var4 var5) (and (= var1 0) (<= 0 (+ (+ 10 (* (- 1) var4)) (- 1)))))) (inv_main8 var2 var3 var0 (+ var6 1) var4 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Int)) (or (not (inv_main65 var3 var5 var0 var9 var7 var8 var4 var1 var2 var6 var10)) (inv_main65 var3 var5 var0 var9 var7 var8 var4 var1 var2 var6 var10)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 node) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main8 var5 var13 var0 var8 var15 var16) (and (and (= nullAddr var4) (and (and (and (and (and (and (and (and (and (= var12 (newHeap (alloc var5 (O_node var7)))) (= var11 var13)) (= var14 var0)) (= var2 var8)) (= var1 var15)) (= var6 var16)) (= var3 5)) (= var10 var13)) (= var9 var13)) (= var4 (newAddr (alloc var5 (O_node var7)))))) (not (<= 0 (+ var0 (* (- 1) var8))))))) (inv_main65 var12 var11 var14 var2 var1 var6 var3 var10 var9 var4 1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int)) (or (not (and (inv_main8 var1 var2 var0 var5 var3 var4) (<= 0 (+ var0 (* (- 1) var5))))) (inv_main11 var1 var2 var0 var5 0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Int)) (or (not (and (inv_main51 var1 var9 var0 var5 var10 var14 var3 var17 var6 var13) (and (and (and (and (and (and (and (= var7 (write var1 var13 (O_node (node var6 (inner (getnode (read var1 var13))))))) (= var2 var9)) (= var12 var0)) (= var4 var5)) (= var16 var10)) (= var15 var14)) (= var8 var3)) (= var11 var17)))) (inv_main11 var7 var2 var12 var4 (+ var16 1) var15)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int)) (or (not (and (inv_main46 var1 var12 var0 var4 var14 var15 var3 var17 var6) (and (= nullAddr var10) (and (and (and (and (and (and (and (and (= var5 (write var1 var6 (O_node (node nullAddr (inner (getnode (read var1 var6))))))) (= var2 var12)) (= var7 var0)) (= var13 var4)) (= var8 var14)) (= var10 var15)) (= var9 var3)) (= var11 var17)) (= var16 var6))))) (inv_main11 var5 var2 var7 var13 (+ var8 1) var16)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Int) (var25 Heap) (var26 Int) (var27 Int) (var28 Addr)) (or (not (and (inv_main124 var15 var5 var1 var24 var7 var28 var14 var3 var19) (and (not (= var4 nullAddr)) (and (and (= var20 nullAddr) (and (and (and (and (and (and (and (and (and (= var25 (write var12 var11 defObj)) (= var26 var27)) (= var8 var18)) (= var13 var10)) (= var22 var17)) (= var6 var2)) (= var9 var21)) (= var23 var11)) (= var4 var0)) (= var16 var20))) (and (and (and (and (and (and (and (and (and (= var12 var15) (= var27 var5)) (= var18 var1)) (= var10 var24)) (= var17 var7)) (= var2 var28)) (= var21 var14)) (= var11 var3)) (= var0 var19)) (= var20 (inner (getnode (read var15 var3))))))))) (inv_main123 var25 var26 var8 var13 var22 var6 var9 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Int) (var26 Addr) (var27 Addr) (var28 Heap) (var29 Int) (var30 Addr) (var31 Heap) (var32 Addr) (var33 Int) (var34 Int) (var35 Heap) (var36 Int) (var37 Addr) (var38 Addr) (var39 Heap) (var40 Addr) (var41 Int)) (or (not (and (inv_main127 var28 var13 var1 var34 var15 var40 var26 var6 var30 var5) (and (not (= var4 nullAddr)) (and (and (= var21 nullAddr) (and (and (and (and (and (and (and (and (and (= var39 (write var35 var2 defObj)) (= var24 var25)) (= var0 var12)) (= var36 var9)) (= var29 var33)) (= var38 var23)) (= var17 var7)) (= var8 var2)) (= var4 var27)) (= var37 var21))) (and (and (and (and (and (and (and (and (and (and (and (= var31 var28) (= var41 var13)) (= var16 var1)) (= var14 var34)) (= var11 var15)) (= var3 var40)) (= var10 var26)) (= var22 var6)) (= var20 var30)) (= var19 var5)) (= var18 (next (getnode (read var28 var5))))) (and (and (and (and (and (and (and (and (and (and (= var35 (write var31 var19 defObj)) (= var25 var41)) (= var12 var16)) (= var9 var14)) (= var33 var11)) (= var23 var3)) (= var7 var10)) (= var2 var22)) (= var27 var20)) (= var32 var19)) (= var21 var18))))))) (inv_main123 var39 var24 var0 var36 var29 var38 var17 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (or (not (and (inv_main95 var2 var3 var0 var6 var4 var5 var1) (and (not (= var5 nullAddr)) (= nullAddr var1)))) (inv_main123 var2 var3 var0 var6 var4 var5 var1 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main124 var4 var14 var0 var10 var16 var18 var2 var6 var7) (and (not (= var17 nullAddr)) (and (and (and (and (and (and (and (and (and (= var9 var4) (= var1 var14)) (= var8 var0)) (= var3 var10)) (= var15 var16)) (= var11 var18)) (= var12 var2)) (= var13 var6)) (= var5 var7)) (= var17 (inner (getnode (read var4 var6)))))))) (inv_main127 var9 var1 var8 var3 var15 var11 var12 var13 var5 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Heap) (var23 Addr) (var24 Addr) (var25 Heap) (var26 Addr) (var27 Int) (var28 Int) (var29 Heap) (var30 Addr) (var31 Int)) (or (not (and (inv_main127 var22 var10 var0 var28 var12 var30 var21 var4 var24 var3) (and (not (= var17 nullAddr)) (and (and (and (and (and (and (and (and (and (and (and (= var25 var22) (= var31 var10)) (= var13 var0)) (= var11 var28)) (= var8 var12)) (= var2 var30)) (= var7 var21)) (= var18 var4)) (= var16 var24)) (= var15 var3)) (= var14 (next (getnode (read var22 var3))))) (and (and (and (and (and (and (and (and (and (and (= var29 (write var25 var15 defObj)) (= var20 var31)) (= var9 var13)) (= var6 var11)) (= var27 var8)) (= var19 var2)) (= var5 var7)) (= var1 var18)) (= var23 var16)) (= var26 var15)) (= var17 var14)))))) (inv_main127 var29 var20 var9 var6 var27 var19 var5 var1 var23 var17)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Int) (var20 Int) (var21 Int) (var22 Int) (var23 Addr) (var24 Int) (var25 Int)) (or (not (and (inv_main37 var5 var19 var2 var12 var21 var23 var8 var25 var24 var6 var9 var18 var16) (and (and (and (and (and (and (and (and (and (and (and (and (= var17 (write var5 var16 (O_node (node var18 (inner (getnode (read var5 var16))))))) (= var22 var19)) (= var10 var2)) (= var15 var12)) (= var14 var21)) (= var3 var23)) (= var1 var8)) (= var4 var25)) (= var20 var24)) (= var11 var6)) (= var0 var9)) (= var13 var18)) (= var7 var16)))) (inv_main33 var17 var22 var10 var15 var14 var3 var1 var4 var20 var11 (+ var0 (- 1)) var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Int) (var8 node) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Int)) (or (not (and (inv_main11 var5 var14 var1 var9 var15 var16) (and (and (not (= nullAddr var10)) (and (and (and (and (and (and (and (and (and (= var12 (newHeap (alloc var5 (O_node var8)))) (= var11 var14)) (= var7 var1)) (= var4 var9)) (= var17 var15)) (= var13 var16)) (= var6 5)) (= var0 var9)) (= var3 var9)) (= var10 (newAddr (alloc var5 (O_node var8)))))) (and (not (= var2 0)) (<= 0 (+ (+ 10 (* (- 1) var15)) (- 1))))))) (inv_main33 var12 var11 var7 var4 var17 var13 var6 var0 var3 var10 var3 nullAddr)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main123 var2 var4 var0 var7 var5 var6 var1 var3)) (inv_main124 var2 var4 var0 var7 var5 var6 var1 var3 (next (getnode (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (or (not (inv_main70 var3 var5 var0 var10 var7 var9 var4 var1 var2 var6 var8)) (inv_main68 (write var3 var6 (O_node (node (next (getnode (read var3 var6))) var8))) var5 var0 var10 var7 var9 var4 var1 var2 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (or (not (and (inv_main49 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5) (= (next (getnode (read var1 var5))) nullAddr))) (inv_main51 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Int) (var19 Int)) (or (not (and (inv_main29 var2 var11 var0 var6 var12 var16 var5 var19 var17 var3) (and (and (and (and (and (and (and (and (and (= var1 (write var2 var3 (O_node (node nullAddr (inner (getnode (read var2 var3))))))) (= var7 var11)) (= var8 var0)) (= var4 var6)) (= var9 var12)) (= var15 var16)) (= var10 var5)) (= var18 var19)) (= var14 var17)) (= var13 var3)))) (inv_main46 var1 var7 var8 var4 var9 var15 var10 var18 var13)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Heap)) (or (not (and (inv_main91 var7 var14 var1 var8 var16 var19 var13 var2 var11 var17) (and (and (and (and (and (and (and (and (and (and (= var20 var7) (= var6 var14)) (= var0 var1)) (= var4 var8)) (= var10 var16)) (= var15 var19)) (= var3 var13)) (= var5 var2)) (= var12 var11)) (= var9 var17)) (= var18 (next (getnode (read var7 var17))))))) (inv_main88 var20 var6 var0 var4 var10 var15 var3 var5 var12 var18)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Int)) (or (not (and (inv_main85 var5 var12 var1 var6 var13 var15 var11 var2 var10) (and (not (= nullAddr var4)) (and (and (and (and (and (and (and (and (= var9 (write var5 var10 (O_node (node nullAddr (inner (getnode (read var5 var10))))))) (= var8 var12)) (= var16 var1)) (= var0 var6)) (= var14 var13)) (= var4 var15)) (= var17 var11)) (= var3 var2)) (= var7 var10))))) (inv_main88 var9 var8 var16 var0 var14 var4 var17 var3 var7 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (or (not (inv_main31 var1 var3 var0 var8 var4 var7 var6 var10 var9 var2 var5)) (inv_main29 (write var1 var2 (O_node (node (next (getnode (read var1 var2))) var5))) var3 var0 var8 var4 var7 var6 var10 var9 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int)) (not (and (inv_main37 var2 var5 var0 var10 var6 var9 var7 var12 var11 var4 var8 var3 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int)) (not (and (inv_main31 var1 var3 var0 var8 var4 var7 var6 var10 var9 var2 var5) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int)) (not (and (inv_main29 var1 var3 var0 var7 var4 var6 var5 var9 var8 var2) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (not (and (inv_main46 var1 var2 var0 var6 var3 var5 var4 var8 var7) (not (is-O_node (read var1 var7))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main49 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main52 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main51 var1 var2 var0 var7 var3 var6 var4 var9 var8 var5) (not (is-O_node (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr)) (not (and (inv_main76 var4 var6 var1 var11 var8 var10 var5 var2 var3 var7 var9 var0 var12) (not (is-O_node (read var4 var12))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int)) (not (and (inv_main70 var3 var5 var0 var10 var7 var9 var4 var1 var2 var6 var8) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main68 var3 var5 var0 var9 var7 var8 var4 var1 var2 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Int)) (not (and (inv_main85 var3 var5 var0 var8 var6 var7 var4 var1 var2) (not (is-O_node (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main88 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7) (not (is-O_node (read var3 var7))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main91 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7) (not (is-O_node (read var3 var7))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int)) (not (and (inv_main90 var3 var5 var0 var9 var6 var8 var4 var1 var2 var7) (not (is-O_node (read var3 var7))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (and (inv_main101 var2 var3 var0 var6 var4 var5 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int)) (not (and (inv_main108 var3 var4 var1 var7 var5 var6 var2 var0 var8) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main111 var3 var4 var0 var7 var5 var6 var1 var2) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main123 var2 var4 var0 var7 var5 var6 var1 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int)) (not (and (inv_main124 var2 var4 var0 var8 var6 var7 var1 var3 var5) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int)) (not (and (inv_main127 var2 var5 var0 var9 var7 var8 var1 var4 var6 var3) (not (is-O_node (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int)) (not (inv_main131 var2 var3 var0 var6 var4 var5 var1)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll_shallow_copy-1.i.smt2 b/heap-theory-benchmarks/heap/sll_shallow_copy-1.i.smt2 new file mode 100644 index 00000000..acfe7ce4 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll_shallow_copy-1.i.smt2 @@ -0,0 +1,40 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr)) + ) +)) +(declare-fun inv_main10 (Heap Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int) Bool) +(declare-fun inv_main25 (Heap Addr) Bool) +(declare-fun inv_main26 (Heap Addr node) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 node) (var6 node) (var7 Heap)) (or (not (and (inv_main2 var0) (and (and (not (= nullAddr var4)) (and (and (= var7 (newHeap (alloc var1 (O_node var6)))) (= var2 var3)) (= var4 (newAddr (alloc var1 (O_node var6)))))) (and (not (= nullAddr var3)) (and (= var1 (newHeap (alloc var0 (O_node var5)))) (= var3 (newAddr (alloc var0 (O_node var5))))))))) (inv_main16 var7 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main16 var0 var2 var1)) (inv_main14 (write var0 var2 (O_node (node var1))) var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (inv_main22 var0 var3 var1 var2)) (inv_main22 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 node) (var3 Addr) (var4 Heap) (var5 node) (var6 Heap) (var7 Addr)) (or (not (and (inv_main2 var0) (and (and (= nullAddr var7) (and (and (= var4 (newHeap (alloc var6 (O_node var2)))) (= var1 var3)) (= var7 (newAddr (alloc var6 (O_node var2)))))) (and (not (= nullAddr var3)) (and (= var6 (newHeap (alloc var0 (O_node var5)))) (= var3 (newAddr (alloc var0 (O_node var5))))))))) (inv_main22 var4 var1 var7 1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main14 var0 var1)) (inv_main26 var0 var1 (getnode (read var0 var1)))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (or (not (inv_main10 var0 var1 var2)) (inv_main10 var0 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 node) (var3 Addr)) (or (not (and (inv_main2 var0) (and (= nullAddr var3) (and (= var1 (newHeap (alloc var0 (O_node var2)))) (= var3 (newAddr (alloc var0 (O_node var2)))))))) (inv_main10 var1 var3 1)))) +(assert (forall ((var0 Heap) (var1 node) (var2 Addr)) (or (not (inv_main26 var0 var2 var1)) (inv_main25 (write var0 var2 (O_node var1)) var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main16 var0 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main14 var0 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 node) (var2 Addr)) (not (and (inv_main26 var0 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main25 var0 var1) (not (is-O_node (read var0 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll_shallow_copy-2.i.smt2 b/heap-theory-benchmarks/heap/sll_shallow_copy-2.i.smt2 new file mode 100644 index 00000000..06c457f1 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll_shallow_copy-2.i.smt2 @@ -0,0 +1,41 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr)) + ) +)) +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main10 (Heap Addr Int) Bool) +(declare-fun inv_main14 (Heap Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int) Bool) +(declare-fun inv_main26 (Heap Addr node) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (or (not (inv_main10 var2 var1 var0)) (inv_main10 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 node) (var2 Addr) (var3 Heap)) (or (not (and (inv_main2 var3) (and (= nullAddr var2) (and (= var0 (newHeap (alloc var3 (O_node var1)))) (= var2 (newAddr (alloc var3 (O_node var1)))))))) (inv_main10 var0 var2 1)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main14 var0 var1)) (inv_main26 var0 var1 (getnode (read var0 (next (getnode (read var0 var1))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main16 var0 var2 var1)) (inv_main14 (write var0 var2 (O_node (node var1))) var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main22 var2 var3 var1 var0)) (inv_main22 var2 var3 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 node) (var4 Addr) (var5 Heap) (var6 node) (var7 Heap)) (or (not (and (inv_main2 var7) (and (and (= nullAddr var0) (and (and (= var1 (newHeap (alloc var5 (O_node var6)))) (= var4 var2)) (= var0 (newAddr (alloc var5 (O_node var6)))))) (and (not (= nullAddr var2)) (and (= var5 (newHeap (alloc var7 (O_node var3)))) (= var2 (newAddr (alloc var7 (O_node var3))))))))) (inv_main22 var1 var4 var0 1)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap)) (or (not (and (inv_main26 var2 var3 var0) (and (and (= var5 (write var2 var3 (O_node var0))) (= var1 var3)) (and (= var6 (write var5 var1 defObj)) (= var4 var1))))) (inv_main0 var6 0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 node) (var5 Addr) (var6 Heap) (var7 node)) (or (not (and (inv_main2 var1) (and (and (not (= nullAddr var5)) (and (and (= var3 (newHeap (alloc var6 (O_node var7)))) (= var0 var2)) (= var5 (newAddr (alloc var6 (O_node var7)))))) (and (not (= nullAddr var2)) (and (= var6 (newHeap (alloc var1 (O_node var4)))) (= var2 (newAddr (alloc var1 (O_node var4))))))))) (inv_main16 var3 var0 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main16 var0 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main14 var0 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main14 var0 var1) (not (is-O_node (read var0 (next (getnode (read var0 var1)))))))))) +(assert (forall ((var0 node) (var1 Heap) (var2 Addr)) (not (and (inv_main26 var1 var2 var0) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr)) (not (and (inv_main0 var0 var1) (not (= (read var0 var2) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll_to_dll_rev-1.i.smt2 b/heap-theory-benchmarks/heap/sll_to_dll_rev-1.i.smt2 new file mode 100644 index 00000000..17eecd85 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll_to_dll_rev-1.i.smt2 @@ -0,0 +1,210 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (prev Addr)) + ) +)) +(declare-fun inv_main100 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main108 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main117 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main120 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main134 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main138 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main142 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main146 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main148 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main153 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main166 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main170 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main174 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main178 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main180 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main185 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main194 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main195 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main196 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main197 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main199 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main209 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main213 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main217 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main221 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main223 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main228 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main241 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main245 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main249 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main253 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main255 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main260 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main269 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main270 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main272 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main282 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main286 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main290 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main294 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main296 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr Addr) Bool) +(declare-fun inv_main301 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main307 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main80 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main84 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main91 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Addr) Bool) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (or (not (= var1 emptyHeap)) (inv_main3 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main286 var0 var10 var7 var9 var5 var1) (and (and (and (and (and (and (= var11 var0) (= var8 var10)) (= var3 var7)) (= var4 var9)) (= var2 var5)) (= var6 var1)) (= var12 (prev (getnode (read var0 var5))))))) (inv_main294 var11 var8 var3 var4 var12 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main296 var1 var10 var7 var9 var6 var2) (and (and (and (and (and (and (= var8 var1) (= var0 var10)) (= var5 var7)) (= var12 var9)) (= var4 var6)) (= var11 var2)) (= var3 (prev (getnode (read var1 var6))))))) (inv_main294 var8 var0 var5 var12 var3 var11)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main53 var0 var7 var6 var4 var3 var2 var1 var5)) (inv_main56 (write var0 var5 (O_node (node nullAddr (prev (getnode (read var0 var5)))))) var7 var6 var4 var3 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main195 var0 var5 var2 var4 var1 var3)) (inv_main197 var0 var5 var2 var4 var1 var3 (prev (getnode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main64 var0 var3 var1 var2) (not (= (prev (getnode (read var0 var3))) nullAddr)))) (inv_main100 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int)) (or (not (and (inv_main56 var0 var14 var13 var5 var11 var10 var9 var12) (and (and (and (and (and (and (and (= var1 (write var0 var12 (O_node (node (next (getnode (read var0 var12))) nullAddr)))) (= var6 var14)) (= var3 var13)) (= var15 var5)) (= var2 var11)) (= var8 var10)) (= var4 var9)) (= var7 var12)))) (inv_main58 var1 var6 var3 var15 var2 var8 var4 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var5 var3 var4 var2 var1) (and (not (= var2 nullAddr)) (not (= var1 var2))))) (inv_main255 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 node) (var18 Addr) (var19 Addr) (var20 Int) (var21 Addr) (var22 Int) (var23 Int) (var24 Addr) (var25 Addr)) (or (not (and (inv_main58 var0 var25 var24 var2 var16 var15 var14 var18) (and (and (not (= var1 nullAddr)) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var4 (O_node var17)))) (= var9 var19)) (= var8 var7)) (= var6 var12)) (= var3 var13)) (= var21 var5)) (= var20 5)) (= var1 (newAddr (alloc var4 (O_node var17)))))) (and (not (= var23 0)) (and (and (and (and (and (and (and (= var4 (write var0 var18 (O_node (node var15 (prev (getnode (read var0 var18))))))) (= var19 var25)) (= var7 var24)) (= var12 var2)) (= var13 var16)) (= var10 var15)) (= var22 var14)) (= var5 var18)))))) (inv_main53 var11 var9 var8 var6 var3 var21 var20 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int) (var19 node) (var20 Int) (var21 Int) (var22 Heap) (var23 Addr) (var24 Int) (var25 Addr) (var26 Int)) (or (not (and (inv_main22 var0 var25 var23 var3 var16 var15 var5 var4) (and (and (and (not (= var13 nullAddr)) (and (and (and (and (and (and (and (= var10 (newHeap (alloc var22 (O_node var19)))) (= var12 var14)) (= var9 var14)) (= var11 var8)) (= var20 var6)) (= var2 var14)) (= var18 5)) (= var13 (newAddr (alloc var22 (O_node var19)))))) (= var26 0)) (and (= var24 0) (and (and (and (and (and (and (and (= var22 (write var0 var4 (O_node (node var15 (prev (getnode (read var0 var4))))))) (= var1 var25)) (= var7 var23)) (= var8 var3)) (= var6 var16)) (= var17 var15)) (= var21 var5)) (= var14 var4)))))) (inv_main53 var10 var12 var9 var11 var20 var2 var18 var13)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 node) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Int) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr)) (or (not (and (inv_main41 var0 var24 var22 var2 var15 var14 var21 var13) (and (and (and (not (= var20 nullAddr)) (and (and (and (and (and (and (and (= var4 (newHeap (alloc var7 (O_node var6)))) (= var19 var10)) (= var1 var9)) (= var16 var8)) (= var12 var3)) (= var5 var10)) (= var11 5)) (= var20 (newAddr (alloc var7 (O_node var6)))))) (= var17 0)) (and (and (and (and (and (and (and (= var7 (write var0 var13 (O_node (node var14 (prev (getnode (read var0 var13))))))) (= var23 var24)) (= var9 var22)) (= var8 var2)) (= var3 var15)) (= var25 var14)) (= var18 var21)) (= var10 var13))))) (inv_main53 var4 var19 var1 var16 var12 var5 var11 var20)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main58 var0 var16 var15 var1 var11 var10 var9 var12) (and (and (not (= var4 nullAddr)) (not (= var13 nullAddr))) (and (= var5 0) (and (and (and (and (and (and (and (= var2 (write var0 var12 (O_node (node var10 (prev (getnode (read var0 var12))))))) (= var13 var16)) (= var4 var15)) (= var7 var1)) (= var8 var11)) (= var6 var10)) (= var14 var9)) (= var3 var12)))))) (inv_main76 var2 var13 var4 var3 var13 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main270 var1 var10 var7 var9 var0 var6) (and (= var3 nullAddr) (and (and (and (and (and (= var8 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))))))) (= var4 var10)) (= var11 var7)) (= var5 var9)) (= var2 var0)) (= var3 var6))))) (inv_main272 var8 var4 var11 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var5 var3 var4 var2 var1) (and (= var4 nullAddr) (= var1 var2)))) (inv_main272 var0 var5 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var5 var3 var4 var2 var1) (and (= var2 nullAddr) (not (= var1 var2))))) (inv_main153 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var5 var3 var4 var1 var2) (and (= var1 nullAddr) (not (= var2 var1))))) (inv_main228 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main64 var0 var3 var1 var2) (= (prev (getnode (read var0 var3))) nullAddr))) (inv_main96 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int)) (or (not (and (inv_main20 var0 var14 var12 var2 var9 var8 var3 var4) (and (and (and (and (and (and (and (= var10 (write var0 var4 (O_node (node (next (getnode (read var0 var4))) nullAddr)))) (= var5 var14)) (= var1 var12)) (= var6 var2)) (= var15 var9)) (= var11 var8)) (= var7 var3)) (= var13 var4)))) (inv_main22 var10 var5 var1 var6 var15 var11 var7 var13)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var10 var7 var9 var3) (and (and (not (= var5 nullAddr)) (not (= var1 nullAddr))) (and (= var8 nullAddr) (and (and (and (and (and (= var2 var0) (= var1 var10)) (= var5 var7)) (= var4 var9)) (= var6 var3)) (= var8 (next (getnode (read var0 var3))))))))) (inv_main138 var2 var1 var5 var4 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main194 var0 var4 var2 var3 var1)) (inv_main195 var0 var4 var2 var3 var1 (next (getnode (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main270 var1 var10 var7 var9 var0 var6) (and (not (= var3 nullAddr)) (and (and (and (and (and (= var8 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))))))) (= var4 var10)) (= var11 var7)) (= var5 var9)) (= var2 var0)) (= var3 var6))))) (inv_main269 var8 var4 var11 var5 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var5 var3 var4 var2 var1) (and (not (= var4 nullAddr)) (= var1 var2)))) (inv_main269 var0 var5 var3 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main197 var0 var6 var3 var5 var2 var4 var1)) (inv_main196 (write var0 var2 (O_node (node var1 (prev (getnode (read var0 var2)))))) var6 var3 var5 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main58 var0 var16 var15 var1 var11 var10 var9 var12) (and (= var13 nullAddr) (and (= var5 0) (and (and (and (and (and (and (and (= var2 (write var0 var12 (O_node (node var10 (prev (getnode (read var0 var12))))))) (= var13 var16)) (= var4 var15)) (= var7 var1)) (= var8 var11)) (= var6 var10)) (= var14 var9)) (= var3 var12)))))) (inv_main72 var2 var13 var4 var3 var13 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main17 var0 var7 var6 var3 var2 var1 var4 var5)) (inv_main20 (write var0 var5 (O_node (node nullAddr (prev (getnode (read var0 var5)))))) var7 var6 var3 var2 var1 var4 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (or (not (inv_main36 var0 var7 var6 var3 var2 var1 var5 var4)) (inv_main39 (write var0 var4 (O_node (node nullAddr (prev (getnode (read var0 var4)))))) var7 var6 var3 var2 var1 var5 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main120 var0 var8 var6 var7 var4 var11) (and (and (and (and (and (= var3 (write var0 var11 (O_node (node (next (getnode (read var0 var11))) var4)))) (= var5 var8)) (= var10 var6)) (= var1 var7)) (= var9 var4)) (= var2 var11)))) (inv_main117 var3 var5 var10 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main96 var0 var3 var1 var2) (= (prev (getnode (read var0 var1))) nullAddr))) (inv_main117 var0 var3 var1 var2 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var5 var3 var4 var2 var1) (and (not (= var2 nullAddr)) (not (= var1 var2))))) (inv_main148 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main199 var0 var3 var1 var2) (= var3 nullAddr))) (inv_main209 var0 var3 var1 var2 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main269 var1 var4 var2 var3 var0)) (inv_main270 var1 var4 var2 var3 var0 (next (getnode (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main96 var0 var3 var1 var2) (not (= (prev (getnode (read var0 var1))) nullAddr)))) (inv_main108 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main84 var0 var5 var3 var4 var1 var2) (and (not (= var1 nullAddr)) (not (= var2 var1))))) (inv_main86 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var5 var3 var4 var2 var1) (and (and (not (= var5 nullAddr)) (not (= var3 nullAddr))) (= var1 var2)))) (inv_main170 var0 var5 var3 var4 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var10 var7 var9 var3) (and (= var1 nullAddr) (and (= var8 nullAddr) (and (and (and (and (and (= var2 var0) (= var1 var10)) (= var5 var7)) (= var4 var9)) (= var6 var3)) (= var8 (next (getnode (read var0 var3))))))))) (inv_main134 var2 var1 var5 var4 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main213 var0 var11 var8 var10 var3 var7) (and (and (and (and (and (and (= var1 var0) (= var12 var11)) (= var5 var8)) (= var4 var10)) (= var2 var3)) (= var9 var7)) (= var6 (prev (getnode (read var0 var3))))))) (inv_main221 var1 var12 var5 var4 var6 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main223 var0 var11 var8 var10 var5 var7) (and (and (and (and (and (and (= var9 var0) (= var2 var11)) (= var6 var8)) (= var1 var10)) (= var4 var5)) (= var3 var7)) (= var12 (prev (getnode (read var0 var5))))))) (inv_main221 var9 var2 var6 var1 var12 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main272 var0 var3 var1 var2) (and (= var1 nullAddr) (not (= var3 nullAddr))))) (inv_main290 var0 var3 var1 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main39 var0 var15 var13 var3 var8 var7 var12 var6) (and (and (and (and (and (and (and (= var5 (write var0 var6 (O_node (node (next (getnode (read var0 var6))) nullAddr)))) (= var2 var15)) (= var14 var13)) (= var10 var3)) (= var1 var8)) (= var4 var7)) (= var11 var12)) (= var9 var6)))) (inv_main41 var5 var2 var14 var10 var1 var4 var11 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main199 var0 var3 var1 var2) (and (= var1 nullAddr) (not (= var3 nullAddr))))) (inv_main217 var0 var3 var1 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var10 var7 var9 var3) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var1 var0) (= var2 var10)) (= var4 var7)) (= var5 var9)) (= var8 var3)) (= var6 (next (getnode (read var0 var3)))))))) (inv_main120 var1 var2 var4 var5 var8 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main272 var0 var3 var1 var2) (= var3 nullAddr))) (inv_main282 var0 var3 var1 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main245 var0 var12 var10 var11 var9 var5) (and (and (and (and (and (and (= var3 var0) (= var7 var12)) (= var4 var10)) (= var6 var11)) (= var8 var9)) (= var1 var5)) (= var2 (next (getnode (read var0 var9))))))) (inv_main253 var3 var7 var4 var6 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr)) (or (not (and (inv_main255 var1 var12 var9 var11 var8 var3) (and (and (and (and (and (and (= var10 var1) (= var7 var12)) (= var6 var9)) (= var5 var11)) (= var4 var8)) (= var2 var3)) (= var0 (next (getnode (read var1 var8))))))) (inv_main253 var10 var7 var6 var5 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr)) (or (not (and (inv_main58 var0 var16 var15 var1 var11 var10 var9 var12) (and (and (= var4 nullAddr) (not (= var13 nullAddr))) (and (= var5 0) (and (and (and (and (and (and (and (= var2 (write var0 var12 (O_node (node var10 (prev (getnode (read var0 var12))))))) (= var13 var16)) (= var4 var15)) (= var7 var1)) (= var8 var11)) (= var6 var10)) (= var14 var9)) (= var3 var12)))))) (inv_main80 var2 var13 var4 var3 var13 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main84 var0 var5 var3 var4 var1 var2) (and (= var1 nullAddr) (not (= var2 var1))))) (inv_main91 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var5 var3 var4 var2 var1) (and (and (= var5 nullAddr) (not (= var3 nullAddr))) (= var1 var2)))) (inv_main174 var0 var5 var3 var4 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main170 var1 var11 var8 var10 var5 var0) (and (and (and (and (and (and (= var3 var1) (= var9 var11)) (= var12 var8)) (= var6 var10)) (= var2 var5)) (= var7 var0)) (= var4 (prev (getnode (read var1 var5))))))) (inv_main178 var3 var9 var12 var6 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main180 var1 var12 var10 var11 var5 var0) (and (and (and (and (and (and (= var3 var1) (= var4 var12)) (= var7 var10)) (= var8 var11)) (= var2 var5)) (= var6 var0)) (= var9 (prev (getnode (read var1 var5))))))) (inv_main178 var3 var4 var7 var8 var9 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var1 var5 var3 var4 var2 var0) (and (not (= var2 nullAddr)) (not (= var0 var2))))) (inv_main180 var1 var5 var3 var4 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main138 var0 var11 var8 var10 var4 var2) (and (and (and (and (and (and (= var6 var0) (= var9 var11)) (= var3 var8)) (= var7 var10)) (= var12 var4)) (= var1 var2)) (= var5 (next (getnode (read var0 var4))))))) (inv_main146 var6 var9 var3 var7 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr)) (or (not (and (inv_main148 var0 var12 var9 var11 var6 var3) (and (and (and (and (and (and (= var10 var0) (= var7 var12)) (= var5 var9)) (= var8 var11)) (= var4 var6)) (= var2 var3)) (= var1 (next (getnode (read var0 var6))))))) (inv_main146 var10 var7 var5 var8 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var1 var5 var3 var4 var2 var0) (and (= var2 nullAddr) (not (= var0 var2))))) (inv_main185 var1 var5 var3 var4 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var5 var3 var4 var2 var1) (and (= var3 nullAddr) (= var1 var2)))) (inv_main166 var0 var5 var3 var4 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var5 var3 var4 var1 var2) (and (and (not (= var5 nullAddr)) (not (= var3 nullAddr))) (= var2 var1)))) (inv_main245 var0 var5 var3 var4 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main307 var0 var13 var11 var12) (and (not (= var3 nullAddr)) (and (and (and (and (and (= var1 var0) (= var5 var13)) (= var9 var11)) (= var7 var12)) (= var10 (prev (getnode (read var0 var12))))) (and (and (and (and (= var8 (write var1 var7 defObj)) (= var6 var5)) (= var4 var9)) (= var2 var7)) (= var3 var10)))))) (inv_main307 var8 var6 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main294 var0 var5 var3 var4 var2 var1) (and (not (= var4 nullAddr)) (= var1 var2)))) (inv_main307 var0 var5 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var10 var7 var9 var3) (and (and (= var5 nullAddr) (not (= var1 nullAddr))) (and (= var8 nullAddr) (and (and (and (and (and (= var2 var0) (= var1 var10)) (= var5 var7)) (= var4 var9)) (= var6 var3)) (= var8 (next (getnode (read var0 var3))))))))) (inv_main142 var2 var1 var5 var4 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main294 var0 var5 var3 var4 var2 var1) (and (not (= var2 nullAddr)) (not (= var1 var2))))) (inv_main296 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var5 var3 var4 var1 var2) (and (and (= var5 nullAddr) (not (= var3 nullAddr))) (= var2 var1)))) (inv_main249 var0 var5 var3 var4 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 node) (var20 Int) (var21 Int) (var22 Heap) (var23 Addr) (var24 Addr) (var25 Int)) (or (not (and (inv_main22 var1 var24 var23 var6 var16 var15 var8 var7) (and (and (not (= var17 nullAddr)) (and (and (and (and (and (and (and (= var12 (newHeap (alloc var22 (O_node var19)))) (= var0 var5)) (= var14 var10)) (= var21 var11)) (= var3 var9)) (= var2 var13)) (= var4 5)) (= var17 (newAddr (alloc var22 (O_node var19)))))) (and (not (= var25 0)) (and (and (and (and (and (and (and (= var22 (write var1 var7 (O_node (node var15 (prev (getnode (read var1 var7))))))) (= var5 var24)) (= var10 var23)) (= var11 var6)) (= var9 var16)) (= var18 var15)) (= var20 var8)) (= var13 var7)))))) (inv_main17 var12 var0 var14 var21 var3 var2 var4 var17)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 node) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap)) (or (not (and (inv_main3 var1 var16 var15) (and (and (not (= var14 nullAddr)) (and (and (and (and (and (and (and (= var6 (newHeap (alloc var17 (O_node var11)))) (= var5 var0)) (= var9 var4)) (= var3 var8)) (= var7 var13)) (= var10 var2)) (= var12 5)) (= var14 (newAddr (alloc var17 (O_node var11)))))) (and (and (and (and (and (= var17 var1) (= var0 var16)) (= var4 var15)) (= var8 1)) (= var13 2)) (= var2 nullAddr))))) (inv_main17 var6 var5 var9 var3 var7 var10 var12 var14)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main294 var0 var5 var3 var4 var2 var1) (and (= var2 nullAddr) (not (= var1 var2))))) (inv_main301 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main196 var1 var10 var7 var9 var6 var8) (and (= var11 nullAddr) (and (and (and (and (and (= var5 (write var1 var6 (O_node (node (next (getnode (read var1 var6))) var8)))) (= var4 var10)) (= var2 var7)) (= var3 var9)) (= var0 var6)) (= var11 var8))))) (inv_main199 var5 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var1 var5 var3 var4 var2 var0) (and (= var4 nullAddr) (= var0 var2)))) (inv_main199 var1 var5 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main84 var0 var5 var3 var4 var1 var2) (= var2 var1))) (inv_main64 var0 var5 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main199 var0 var3 var1 var2) (and (not (= var1 nullAddr)) (not (= var3 nullAddr))))) (inv_main213 var0 var3 var1 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var5 var3 var4 var2 var1) (and (= var2 nullAddr) (not (= var1 var2))))) (inv_main260 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main272 var0 var3 var1 var2) (and (not (= var1 nullAddr)) (not (= var3 nullAddr))))) (inv_main286 var0 var3 var1 var2 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main196 var1 var10 var7 var9 var6 var8) (and (not (= var11 nullAddr)) (and (and (and (and (and (= var5 (write var1 var6 (O_node (node (next (getnode (read var1 var6))) var8)))) (= var4 var10)) (= var2 var7)) (= var3 var9)) (= var0 var6)) (= var11 var8))))) (inv_main194 var5 var4 var2 var3 var11)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var1 var5 var3 var4 var2 var0) (and (not (= var4 nullAddr)) (= var0 var2)))) (inv_main194 var1 var5 var3 var4 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var5 var3 var4 var1 var2) (and (= var3 nullAddr) (= var2 var1)))) (inv_main241 var0 var5 var3 var4 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main76 var0 var11 var9 var10 var1 var8) (and (and (and (and (and (and (= var2 var0) (= var12 var11)) (= var4 var9)) (= var6 var10)) (= var7 var1)) (= var3 var8)) (= var5 (next (getnode (read var0 var1))))))) (inv_main84 var2 var12 var4 var6 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main86 var1 var10 var8 var9 var2 var7) (and (and (and (and (and (and (= var11 var1) (= var0 var10)) (= var6 var8)) (= var3 var9)) (= var12 var2)) (= var5 var7)) (= var4 (next (getnode (read var1 var2))))))) (inv_main84 var11 var0 var6 var3 var4 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 node) (var4 Int) (var5 Addr) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr) (var21 Int) (var22 Int) (var23 Heap) (var24 Addr) (var25 Addr) (var26 Int)) (or (not (and (inv_main22 var0 var25 var24 var4 var19 var18 var6 var5) (and (and (and (not (= var11 nullAddr)) (and (and (and (and (and (and (and (= var7 (newHeap (alloc var23 (O_node var3)))) (= var1 var2)) (= var14 var16)) (= var9 var13)) (= var15 var8)) (= var17 var16)) (= var21 5)) (= var11 (newAddr (alloc var23 (O_node var3)))))) (not (= var10 0))) (and (= var26 0) (and (and (and (and (and (and (and (= var23 (write var0 var5 (O_node (node var18 (prev (getnode (read var0 var5))))))) (= var2 var25)) (= var12 var24)) (= var13 var4)) (= var8 var19)) (= var20 var18)) (= var22 var6)) (= var16 var5)))))) (inv_main36 var7 var1 var14 var9 var15 var17 var21 var11)))) +(assert (forall ((var0 Heap) (var1 node) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int) (var20 Int) (var21 Int) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr)) (or (not (and (inv_main41 var0 var24 var22 var3 var17 var16 var21 var15) (and (and (and (not (= var6 nullAddr)) (and (and (and (and (and (and (and (= var4 (newHeap (alloc var10 (O_node var1)))) (= var12 var23)) (= var18 var13)) (= var9 var11)) (= var8 var5)) (= var2 var7)) (= var14 5)) (= var6 (newAddr (alloc var10 (O_node var1)))))) (not (= var20 0))) (and (and (and (and (and (and (and (= var10 (write var0 var15 (O_node (node var16 (prev (getnode (read var0 var15))))))) (= var23 var24)) (= var13 var22)) (= var11 var3)) (= var5 var17)) (= var25 var16)) (= var19 var21)) (= var7 var15))))) (inv_main36 var4 var12 var18 var9 var8 var2 var14 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var5 var3 var4 var1 var2) (and (not (= var1 nullAddr)) (not (= var2 var1))))) (inv_main223 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main17 var0 var7 var6 var3 var2 var1 var4 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main20 var0 var7 var6 var3 var2 var1 var4 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main22 var0 var7 var6 var3 var2 var1 var5 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main36 var0 var7 var6 var3 var2 var1 var5 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main39 var0 var7 var6 var3 var2 var1 var5 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr)) (not (and (inv_main41 var0 var7 var6 var4 var3 var2 var5 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main53 var0 var7 var6 var4 var3 var2 var1 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main56 var0 var7 var6 var4 var3 var2 var1 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main58 var0 var7 var6 var4 var3 var2 var1 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main72 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main80 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main76 var0 var5 var3 var4 var1 var2) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main91 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main86 var0 var5 var3 var4 var1 var2) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main64 var0 var3 var1 var2) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (inv_main100 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main96 var0 var3 var1 var2) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (inv_main108 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main117 var0 var4 var2 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main120 var0 var4 var2 var3 var1 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main134 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main142 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main138 var0 var5 var3 var4 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main153 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main148 var0 var5 var3 var4 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main166 var1 var5 var3 var4 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main174 var1 var5 var3 var4 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main170 var1 var5 var3 var4 var2 var0) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main185 var1 var5 var3 var4 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main180 var1 var5 var3 var4 var2 var0) (not (is-O_node (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main194 var0 var4 var2 var3 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main195 var0 var5 var2 var4 var1 var3) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main197 var0 var6 var3 var5 var2 var4 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main196 var0 var5 var2 var4 var1 var3) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main209 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main217 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main213 var0 var5 var3 var4 var1 var2) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main228 var0 var5 var3 var4 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main223 var0 var5 var3 var4 var1 var2) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main241 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main249 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main245 var0 var5 var3 var4 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main260 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main255 var0 var5 var3 var4 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main269 var1 var4 var2 var3 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main270 var1 var5 var3 var4 var0 var2) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main282 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main290 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main286 var0 var5 var3 var4 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main301 var0 var5 var3 var4 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main296 var0 var5 var3 var4 var2 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main307 var0 var3 var1 var2) (not (is-O_node (read var0 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/sll_to_dll_rev-2.i.smt2 b/heap-theory-benchmarks/heap/sll_to_dll_rev-2.i.smt2 new file mode 100644 index 00000000..865aef78 --- /dev/null +++ b/heap-theory-benchmarks/heap/sll_to_dll_rev-2.i.smt2 @@ -0,0 +1,209 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (next Addr) (prev Addr)) + ) +)) +(declare-fun inv_main100 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main108 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main117 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main120 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main134 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main138 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main142 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main146 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main148 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main153 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main166 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main170 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main174 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main178 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main180 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main185 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main194 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main195 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main196 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main197 (Heap Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main199 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main20 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main209 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main213 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main217 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main221 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main223 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main228 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main241 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main245 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main249 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main253 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main255 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main260 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main269 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main270 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main272 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main282 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main286 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main290 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main294 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main296 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Addr Addr) Bool) +(declare-fun inv_main301 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main307 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main53 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main80 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main84 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main91 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Addr) Bool) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (= var0 emptyHeap)) (inv_main3 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main84 var0 var3 var4 var2 var5 var1) (and (= var5 nullAddr) (not (= var1 var5))))) (inv_main91 var0 var3 var4 var2 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap)) (or (not (and (inv_main286 var1 var3 var8 var2 var0 var9) (and (and (and (and (and (and (= var12 var1) (= var5 var3)) (= var7 var8)) (= var11 var2)) (= var6 var0)) (= var4 var9)) (= var10 (prev (getnode (read var1 var0))))))) (inv_main294 var12 var5 var7 var11 var10 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap)) (or (not (and (inv_main296 var1 var6 var7 var3 var0 var9) (and (and (and (and (and (and (= var12 var1) (= var10 var6)) (= var5 var7)) (= var8 var3)) (= var11 var0)) (= var4 var9)) (= var2 (prev (getnode (read var1 var0))))))) (inv_main294 var12 var10 var5 var8 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main196 var0 var4 var9 var3 var7 var10) (and (= var1 nullAddr) (and (and (and (and (and (= var8 (write var0 var7 (O_node (node (next (getnode (read var0 var7))) var10)))) (= var6 var4)) (= var11 var9)) (= var2 var3)) (= var5 var7)) (= var1 var10))))) (inv_main199 var8 var6 var11 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var0 var3 var5 var2 var4 var1) (and (= var2 nullAddr) (= var1 var4)))) (inv_main199 var0 var3 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main294 var1 var3 var4 var2 var0 var5) (and (not (= var0 nullAddr)) (not (= var5 var0))))) (inv_main296 var1 var3 var4 var2 var0 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var2 var5 var1 var3 var4) (and (not (= var3 nullAddr)) (not (= var4 var3))))) (inv_main148 var0 var2 var5 var1 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main269 var1 var3 var4 var2 var0)) (inv_main270 var1 var3 var4 var2 var0 (next (getnode (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var2 var5 var1 var3 var4) (and (= var5 nullAddr) (= var4 var3)))) (inv_main166 var0 var2 var5 var1 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main58 var0 var13 var16 var8 var3 var4 var1 var12) (and (and (= var7 nullAddr) (not (= var2 nullAddr))) (and (= var14 0) (and (and (and (and (and (and (and (= var6 (write var0 var12 (O_node (node var4 (prev (getnode (read var0 var12))))))) (= var2 var13)) (= var7 var16)) (= var5 var8)) (= var15 var3)) (= var11 var4)) (= var10 var1)) (= var9 var12)))))) (inv_main80 var6 var2 var7 var9 var2 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var0 var3 var5 var2 var4 var1) (and (not (= var4 nullAddr)) (not (= var1 var4))))) (inv_main180 var0 var3 var5 var2 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main17 var1 var4 var6 var7 var3 var2 var5 var0)) (inv_main20 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0)))))) var4 var6 var7 var3 var2 var5 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main58 var0 var13 var16 var8 var3 var4 var1 var12) (and (and (not (= var7 nullAddr)) (not (= var2 nullAddr))) (and (= var14 0) (and (and (and (and (and (and (and (= var6 (write var0 var12 (O_node (node var4 (prev (getnode (read var0 var12))))))) (= var2 var13)) (= var7 var16)) (= var5 var8)) (= var15 var3)) (= var11 var4)) (= var10 var1)) (= var9 var12)))))) (inv_main76 var6 var2 var7 var9 var2 var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main96 var0 var2 var3 var1) (not (= (prev (getnode (read var0 var3))) nullAddr)))) (inv_main108 var0 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main272 var0 var2 var3 var1) (and (not (= var3 nullAddr)) (not (= var2 nullAddr))))) (inv_main286 var0 var2 var3 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main84 var0 var3 var4 var2 var5 var1) (and (not (= var5 nullAddr)) (not (= var1 var5))))) (inv_main86 var0 var3 var4 var2 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr)) (or (not (and (inv_main58 var0 var13 var16 var8 var3 var4 var1 var12) (and (= var2 nullAddr) (and (= var14 0) (and (and (and (and (and (and (and (= var7 (write var0 var12 (O_node (node var4 (prev (getnode (read var0 var12))))))) (= var2 var13)) (= var6 var16)) (= var5 var8)) (= var15 var3)) (= var11 var4)) (= var10 var1)) (= var9 var12)))))) (inv_main72 var7 var2 var6 var9 var2 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var2 var5 var1 var4 var3) (and (= var4 nullAddr) (not (= var3 var4))))) (inv_main228 var0 var2 var5 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr)) (or (not (and (inv_main307 var0 var9 var12 var2) (and (not (= var13 nullAddr)) (and (and (and (and (and (= var5 var0) (= var8 var9)) (= var3 var12)) (= var1 var2)) (= var4 (prev (getnode (read var0 var2))))) (and (and (and (and (= var7 (write var5 var1 defObj)) (= var11 var8)) (= var6 var3)) (= var10 var1)) (= var13 var4)))))) (inv_main307 var7 var11 var6 var13)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main294 var1 var3 var4 var2 var0 var5) (and (not (= var2 nullAddr)) (= var5 var0)))) (inv_main307 var1 var3 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main270 var1 var4 var8 var3 var0 var11) (and (= var5 nullAddr) (and (and (and (and (and (= var7 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))))))) (= var9 var4)) (= var10 var8)) (= var2 var3)) (= var6 var0)) (= var5 var11))))) (inv_main272 var7 var9 var10 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var3 var5 var2 var1 var4) (and (= var2 nullAddr) (= var4 var1)))) (inv_main272 var0 var3 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main64 var0 var2 var3 var1) (= (prev (getnode (read var0 var2))) nullAddr))) (inv_main96 var0 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main213 var0 var4 var10 var3 var7 var5) (and (and (and (and (and (and (= var11 var0) (= var9 var4)) (= var2 var10)) (= var1 var3)) (= var6 var7)) (= var8 var5)) (= var12 (prev (getnode (read var0 var7))))))) (inv_main221 var11 var9 var2 var1 var12 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr)) (or (not (and (inv_main223 var0 var5 var8 var4 var7 var6) (and (and (and (and (and (and (= var11 var0) (= var12 var5)) (= var3 var8)) (= var10 var4)) (= var1 var7)) (= var9 var6)) (= var2 (prev (getnode (read var0 var7))))))) (inv_main221 var11 var12 var3 var10 var2 var9)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (inv_main53 var0 var4 var6 var7 var3 var2 var1 var5)) (inv_main56 (write var0 var5 (O_node (node nullAddr (prev (getnode (read var0 var5)))))) var4 var6 var7 var3 var2 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var5 var10 var1 var4) (and (and (not (= var9 nullAddr)) (not (= var8 nullAddr))) (and (= var3 nullAddr) (and (and (and (and (and (= var2 var0) (= var8 var5)) (= var9 var10)) (= var7 var1)) (= var6 var4)) (= var3 (next (getnode (read var0 var4))))))))) (inv_main138 var2 var8 var9 var7 var8 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var5 var10 var1 var4) (and (and (= var9 nullAddr) (not (= var8 nullAddr))) (and (= var3 nullAddr) (and (and (and (and (and (= var2 var0) (= var8 var5)) (= var9 var10)) (= var7 var1)) (= var6 var4)) (= var3 (next (getnode (read var0 var4))))))))) (inv_main142 var2 var8 var9 var7 var8 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var2 var5 var1 var4 var3) (and (and (= var2 nullAddr) (not (= var5 nullAddr))) (= var3 var4)))) (inv_main249 var0 var2 var5 var1 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main76 var1 var5 var10 var4 var11 var3) (and (and (and (and (and (and (= var9 var1) (= var0 var5)) (= var8 var10)) (= var2 var4)) (= var7 var11)) (= var6 var3)) (= var12 (next (getnode (read var1 var11))))))) (inv_main84 var9 var0 var8 var2 var12 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main86 var1 var6 var10 var3 var11 var2) (and (and (and (and (and (and (= var7 var1) (= var4 var6)) (= var8 var10)) (= var12 var3)) (= var5 var11)) (= var9 var2)) (= var0 (next (getnode (read var1 var11))))))) (inv_main84 var7 var4 var8 var12 var0 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main196 var0 var4 var9 var3 var7 var10) (and (not (= var1 nullAddr)) (and (and (and (and (and (= var8 (write var0 var7 (O_node (node (next (getnode (read var0 var7))) var10)))) (= var6 var4)) (= var11 var9)) (= var2 var3)) (= var5 var7)) (= var1 var10))))) (inv_main194 var8 var6 var11 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var0 var3 var5 var2 var4 var1) (and (not (= var2 nullAddr)) (= var1 var4)))) (inv_main194 var0 var3 var5 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main270 var1 var4 var8 var3 var0 var11) (and (not (= var5 nullAddr)) (and (and (and (and (and (= var7 (write var1 var0 (O_node (node nullAddr (prev (getnode (read var1 var0))))))) (= var9 var4)) (= var10 var8)) (= var2 var3)) (= var6 var0)) (= var5 var11))))) (inv_main269 var7 var9 var10 var2 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var3 var5 var2 var1 var4) (and (not (= var2 nullAddr)) (= var4 var1)))) (inv_main269 var0 var3 var5 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main170 var1 var8 var11 var4 var9 var2) (and (and (and (and (and (and (= var7 var1) (= var6 var8)) (= var5 var11)) (= var3 var4)) (= var10 var9)) (= var0 var2)) (= var12 (prev (getnode (read var1 var9))))))) (inv_main178 var7 var6 var5 var3 var12 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main180 var0 var7 var11 var5 var8 var1) (and (and (and (and (and (and (= var6 var0) (= var12 var7)) (= var4 var11)) (= var3 var5)) (= var10 var8)) (= var9 var1)) (= var2 (prev (getnode (read var0 var8))))))) (inv_main178 var6 var12 var4 var3 var2 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main84 var0 var3 var4 var2 var5 var1) (= var1 var5))) (inv_main64 var0 var3 var4 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main199 var0 var2 var3 var1) (and (not (= var3 nullAddr)) (not (= var2 nullAddr))))) (inv_main213 var0 var2 var3 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var2 var5 var1 var3 var4) (and (and (not (= var2 nullAddr)) (not (= var5 nullAddr))) (= var4 var3)))) (inv_main170 var0 var2 var5 var1 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main272 var0 var2 var3 var1) (= var2 nullAddr))) (inv_main282 var0 var2 var3 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var0 var5 var10 var1 var4) (and (= var8 nullAddr) (and (= var3 nullAddr) (and (and (and (and (and (= var2 var0) (= var8 var5)) (= var9 var10)) (= var7 var1)) (= var6 var4)) (= var3 (next (getnode (read var0 var4))))))))) (inv_main134 var2 var8 var9 var7 var8 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main199 var0 var2 var3 var1) (and (= var3 nullAddr) (not (= var2 nullAddr))))) (inv_main217 var0 var2 var3 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var2 var5 var1 var3 var4) (and (and (= var2 nullAddr) (not (= var5 nullAddr))) (= var4 var3)))) (inv_main174 var0 var2 var5 var1 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main138 var0 var2 var10 var1 var4 var5) (and (and (and (and (and (and (= var6 var0) (= var8 var2)) (= var12 var10)) (= var7 var1)) (= var9 var4)) (= var3 var5)) (= var11 (next (getnode (read var0 var4))))))) (inv_main146 var6 var8 var12 var7 var11 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main148 var0 var4 var10 var2 var5 var7) (and (and (and (and (and (and (= var8 var0) (= var1 var4)) (= var12 var10)) (= var11 var2)) (= var9 var5)) (= var3 var7)) (= var6 (next (getnode (read var0 var5))))))) (inv_main146 var8 var1 var12 var11 var6 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var2 var5 var1 var4 var3) (and (not (= var4 nullAddr)) (not (= var3 var4))))) (inv_main223 var0 var2 var5 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main64 var0 var2 var3 var1) (not (= (prev (getnode (read var0 var2))) nullAddr)))) (inv_main100 var0 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main20 var0 var10 var13 var7 var3 var4 var12 var8) (and (and (and (and (and (and (and (= var5 (write var0 var8 (O_node (node (next (getnode (read var0 var8))) nullAddr)))) (= var1 var10)) (= var15 var13)) (= var11 var7)) (= var6 var3)) (= var2 var4)) (= var9 var12)) (= var14 var8)))) (inv_main22 var5 var1 var15 var11 var6 var2 var9 var14)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main194 var0 var2 var4 var1 var3)) (inv_main195 var0 var2 var4 var1 var3 (next (getnode (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main178 var0 var3 var5 var2 var4 var1) (and (= var4 nullAddr) (not (= var1 var4))))) (inv_main185 var0 var3 var5 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 node) (var18 Int) (var19 Heap) (var20 Int) (var21 Addr) (var22 Addr) (var23 Heap) (var24 Int) (var25 Addr)) (or (not (and (inv_main22 var0 var16 var22 var11 var5 var6 var18 var13) (and (and (not (= var14 nullAddr)) (and (and (and (and (and (and (and (= var23 (newHeap (alloc var19 (O_node var17)))) (= var21 var15)) (= var8 var25)) (= var7 var24)) (= var1 var4)) (= var3 var10)) (= var20 5)) (= var14 (newAddr (alloc var19 (O_node var17)))))) (and (not (= var2 0)) (and (and (and (and (and (and (and (= var19 (write var0 var13 (O_node (node var6 (prev (getnode (read var0 var13))))))) (= var15 var16)) (= var25 var22)) (= var24 var11)) (= var4 var5)) (= var9 var6)) (= var12 var18)) (= var10 var13)))))) (inv_main17 var23 var21 var8 var7 var1 var3 var20 var14)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 node) (var16 Addr) (var17 Addr)) (or (not (and (inv_main3 var0 var12 var17) (and (and (not (= var3 nullAddr)) (and (and (and (and (and (and (and (= var9 (newHeap (alloc var2 (O_node var15)))) (= var8 var4)) (= var16 var1)) (= var5 var11)) (= var10 var14)) (= var7 var13)) (= var6 5)) (= var3 (newAddr (alloc var2 (O_node var15)))))) (and (and (and (and (and (= var2 var0) (= var4 var12)) (= var1 var17)) (= var11 1)) (= var14 2)) (= var13 nullAddr))))) (inv_main17 var9 var8 var16 var5 var10 var7 var6 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (inv_main35 var0 var4 var6 var7 var3 var2 var5 var1)) (inv_main38 (write var0 var1 (O_node (node nullAddr (prev (getnode (read var0 var1)))))) var4 var6 var7 var3 var2 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main195 var0 var2 var4 var1 var3 var5)) (inv_main197 var0 var2 var4 var1 var3 var5 (prev (getnode (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main272 var0 var2 var3 var1) (and (= var3 nullAddr) (not (= var2 nullAddr))))) (inv_main290 var0 var2 var3 var1 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main294 var1 var3 var4 var2 var0 var5) (and (= var0 nullAddr) (not (= var5 var0))))) (inv_main301 var1 var3 var4 var2 var0 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main199 var0 var2 var3 var1) (= var2 nullAddr))) (inv_main209 var0 var2 var3 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var3 var5 var2 var1 var4) (and (not (= var1 nullAddr)) (not (= var4 var1))))) (inv_main255 var0 var3 var5 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main146 var0 var2 var5 var1 var3 var4) (and (= var3 nullAddr) (not (= var4 var3))))) (inv_main153 var0 var2 var5 var1 var3 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Heap) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 node)) (or (not (and (inv_main40 var1 var19 var23 var11 var3 var4 var10 var16) (and (and (not (= var18 nullAddr)) (and (and (and (and (and (and (and (= var8 (newHeap (alloc var7 (O_node var25)))) (= var5 var15)) (= var21 var20)) (= var2 var12)) (= var17 var24)) (= var14 var15)) (= var9 5)) (= var18 (newAddr (alloc var7 (O_node var25)))))) (and (= var0 0) (and (and (and (and (and (and (and (= var7 (write var1 var16 (O_node (node var4 (prev (getnode (read var1 var16))))))) (= var22 var19)) (= var20 var23)) (= var12 var11)) (= var24 var3)) (= var6 var4)) (= var13 var10)) (= var15 var16)))))) (inv_main53 var8 var5 var21 var2 var17 var14 var9 var18)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 node) (var20 Addr) (var21 Int) (var22 Addr) (var23 Heap) (var24 Int) (var25 Int)) (or (not (and (inv_main58 var0 var20 var22 var12 var3 var4 var1 var18) (and (and (not (= var10 nullAddr)) (and (and (and (and (and (and (and (= var23 (newHeap (alloc var11 (O_node var19)))) (= var17 var2)) (= var7 var9)) (= var25 var6)) (= var14 var21)) (= var5 var13)) (= var8 5)) (= var10 (newAddr (alloc var11 (O_node var19)))))) (and (not (= var24 0)) (and (and (and (and (and (and (and (= var11 (write var0 var18 (O_node (node var4 (prev (getnode (read var0 var18))))))) (= var2 var20)) (= var9 var22)) (= var6 var12)) (= var21 var3)) (= var16 var4)) (= var15 var1)) (= var13 var18)))))) (inv_main53 var23 var17 var7 var25 var14 var5 var8 var10)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main120 var0 var5 var7 var1 var4 var6) (and (and (and (and (and (= var8 (write var0 var6 (O_node (node (next (getnode (read var0 var6))) var4)))) (= var11 var5)) (= var3 var7)) (= var10 var1)) (= var2 var4)) (= var9 var6)))) (inv_main117 var8 var11 var3 var10 var9)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main96 var0 var2 var3 var1) (= (prev (getnode (read var0 var3))) nullAddr))) (inv_main117 var0 var2 var3 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main117 var1 var5 var9 var2 var4) (and (not (= var6 nullAddr)) (and (and (and (and (and (= var3 var1) (= var7 var5)) (= var0 var9)) (= var10 var2)) (= var8 var4)) (= var6 (next (getnode (read var1 var4)))))))) (inv_main120 var3 var7 var0 var10 var8 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var2 var5 var1 var4 var3) (and (= var5 nullAddr) (= var3 var4)))) (inv_main241 var0 var2 var5 var1 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap)) (or (not (and (inv_main245 var0 var5 var11 var2 var1 var6) (and (and (and (and (and (and (= var12 var0) (= var3 var5)) (= var4 var11)) (= var7 var2)) (= var9 var1)) (= var8 var6)) (= var10 (next (getnode (read var0 var1))))))) (inv_main253 var12 var3 var4 var7 var10 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main255 var0 var5 var9 var3 var1 var6) (and (and (and (and (and (and (= var4 var0) (= var2 var5)) (= var10 var9)) (= var12 var3)) (= var8 var1)) (= var11 var6)) (= var7 (next (getnode (read var0 var1))))))) (inv_main253 var4 var2 var10 var12 var7 var11)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int)) (or (not (and (inv_main56 var0 var12 var14 var11 var7 var8 var2 var13) (and (and (and (and (and (and (and (= var6 (write var0 var13 (O_node (node (next (getnode (read var0 var13))) nullAddr)))) (= var5 var12)) (= var10 var14)) (= var1 var11)) (= var9 var7)) (= var4 var8)) (= var15 var2)) (= var3 var13)))) (inv_main58 var6 var5 var10 var1 var9 var4 var15 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main253 var0 var3 var5 var2 var1 var4) (and (= var1 nullAddr) (not (= var4 var1))))) (inv_main260 var0 var3 var5 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Int) (var20 Int) (var21 Heap) (var22 Addr) (var23 Int) (var24 node) (var25 Addr)) (or (not (and (inv_main22 var0 var18 var22 var10 var4 var5 var20 var14) (and (and (not (= var9 nullAddr)) (and (and (and (and (and (and (and (= var3 (newHeap (alloc var21 (O_node var24)))) (= var8 var17)) (= var16 var7)) (= var13 var23)) (= var15 var2)) (= var1 var7)) (= var19 5)) (= var9 (newAddr (alloc var21 (O_node var24)))))) (and (= var12 0) (and (and (and (and (and (and (and (= var21 (write var0 var14 (O_node (node var5 (prev (getnode (read var0 var14))))))) (= var17 var18)) (= var25 var22)) (= var23 var10)) (= var2 var4)) (= var6 var5)) (= var11 var20)) (= var7 var14)))))) (inv_main35 var3 var8 var16 var13 var15 var1 var19 var9)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 node) (var10 Int) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Int) (var20 Int) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Int)) (or (not (and (inv_main40 var1 var21 var24 var12 var3 var4 var10 var17) (and (and (not (= var8 nullAddr)) (and (and (and (and (and (and (and (= var18 (newHeap (alloc var5 (O_node var9)))) (= var0 var23)) (= var11 var22)) (= var20 var13)) (= var15 var25)) (= var7 var16)) (= var2 5)) (= var8 (newAddr (alloc var5 (O_node var9)))))) (and (not (= var19 0)) (and (and (and (and (and (and (and (= var5 (write var1 var17 (O_node (node var4 (prev (getnode (read var1 var17))))))) (= var23 var21)) (= var22 var24)) (= var13 var12)) (= var25 var3)) (= var6 var4)) (= var14 var10)) (= var16 var17)))))) (inv_main35 var18 var0 var11 var20 var15 var7 var2 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main197 var0 var3 var5 var2 var4 var6 var1)) (inv_main196 (write var0 var4 (O_node (node var1 (prev (getnode (read var0 var4)))))) var3 var5 var2 var4 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr)) (or (not (and (inv_main38 var0 var10 var14 var8 var3 var4 var7 var9) (and (and (and (and (and (and (and (= var12 (write var0 var9 (O_node (node (next (getnode (read var0 var9))) nullAddr)))) (= var11 var10)) (= var6 var14)) (= var5 var8)) (= var2 var3)) (= var15 var4)) (= var13 var7)) (= var1 var9)))) (inv_main40 var12 var11 var6 var5 var2 var15 var13 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (and (inv_main221 var0 var2 var5 var1 var4 var3) (and (and (not (= var2 nullAddr)) (not (= var5 nullAddr))) (= var3 var4)))) (inv_main245 var0 var2 var5 var1 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main17 var1 var4 var6 var7 var3 var2 var5 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main20 var1 var4 var6 var7 var3 var2 var5 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main22 var0 var4 var6 var7 var3 var2 var5 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main35 var0 var4 var6 var7 var3 var2 var5 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main38 var0 var4 var6 var7 var3 var2 var5 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main40 var1 var4 var6 var7 var3 var2 var5 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main53 var0 var4 var6 var7 var3 var2 var1 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main56 var0 var4 var6 var7 var3 var2 var1 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main58 var0 var5 var6 var7 var4 var3 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main72 var0 var3 var4 var2 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main80 var0 var3 var4 var2 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main76 var0 var3 var4 var2 var5 var1) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main91 var0 var3 var4 var2 var5 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main86 var0 var3 var4 var2 var5 var1) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main64 var0 var2 var3 var1) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (inv_main100 var0 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main96 var0 var2 var3 var1) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (inv_main108 var0 var2 var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main117 var0 var3 var4 var1 var2) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main120 var0 var3 var5 var1 var2 var4) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main134 var0 var2 var5 var1 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main142 var0 var2 var5 var1 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main138 var0 var2 var5 var1 var3 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main153 var0 var2 var5 var1 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main148 var0 var2 var5 var1 var3 var4) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main166 var0 var3 var5 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main174 var0 var3 var5 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main170 var0 var3 var5 var2 var4 var1) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main185 var0 var3 var5 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main180 var0 var3 var5 var2 var4 var1) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main194 var0 var2 var4 var1 var3) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main195 var0 var2 var4 var1 var3 var5) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main197 var0 var3 var5 var2 var4 var6 var1) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main196 var0 var2 var4 var1 var3 var5) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main209 var0 var2 var5 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main217 var0 var2 var5 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main213 var0 var2 var5 var1 var4 var3) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main228 var0 var2 var5 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main223 var0 var2 var5 var1 var4 var3) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main241 var0 var3 var5 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main249 var0 var3 var5 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main245 var0 var3 var5 var2 var1 var4) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main260 var0 var3 var5 var2 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main255 var0 var3 var5 var2 var1 var4) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main269 var1 var3 var4 var2 var0) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main270 var1 var3 var4 var2 var0 var5) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main282 var1 var3 var4 var2 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main290 var1 var3 var4 var2 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main286 var1 var3 var4 var2 var0 var5) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (inv_main301 var1 var3 var4 var2 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main296 var1 var3 var4 var2 var0 var5) (not (is-O_node (read var1 var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main307 var0 var2 var3 var1) (not (is-O_node (read var0 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/splice-1.i.smt2 b/heap-theory-benchmarks/heap/splice-1.i.smt2 new file mode 100644 index 00000000..984344d8 --- /dev/null +++ b/heap-theory-benchmarks/heap/splice-1.i.smt2 @@ -0,0 +1,84 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main16 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main21 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main30 (Heap Int Addr Addr Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr)) (or (not (and (inv_main67 var3 var5 var11 var16 var18 var4 var15 var8 var7) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (and (and (= var17 var3) (= var10 var5)) (= var0 var11)) (= var14 var16)) (= var6 var18)) (= var2 var4)) (= var1 var15)) (= var13 var8)) (= var9 var7)) (= var12 (n (getnode (read var3 var7)))))))) (inv_main66 var17 var10 var0 var14 var6 var2 var1 var13 var12)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main59 var2 var5 var14 var17 var18 var4 var15 var9 var8) (and (not (= var0 nullAddr)) (and (= var16 nullAddr) (and (and (and (and (and (and (and (and (and (= var1 var2) (= var10 var5)) (= var7 var14)) (= var12 var17)) (= var13 var18)) (= var0 var4)) (= var6 var15)) (= var11 var9)) (= var3 var8)) (= var16 (n (getnode (read var2 var8))))))))) (inv_main66 var1 var10 var7 var12 var13 var0 var6 var11 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr)) (or (not (and (inv_main43 var4 var6 var10 var15 var18 var5 var13 var9 var8) (and (not (= var17 nullAddr)) (and (= var1 nullAddr) (and (= var14 3) (and (and (and (and (and (and (and (and (and (= var16 var4) (= var11 var6)) (= var12 var10)) (= var0 var15)) (= var1 var18)) (= var17 var5)) (= var7 var13)) (= var3 var9)) (= var2 var8)) (= var14 (h (getnode (read var4 var8)))))))))) (inv_main66 var16 var11 var12 var0 var1 var17 var7 var3 var17)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main16 var4 var6 var1 var3 var9 var5 var2 var8 var7) (= var0 0))) (inv_main17 var4 var6 var1 var3 var9 var5 var2 var8 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Heap) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Heap) (var29 Addr) (var30 Addr) (var31 Addr) (var32 Addr) (var33 Addr) (var34 Addr) (var35 Addr) (var36 Int)) (or (not (and (inv_main35 var7 var8 var13 var18 var21 var26 var31 var29 var11) (and (and (and (not (= var9 3)) (and (and (and (and (and (and (and (and (and (= var28 var7) (= var36 var8)) (= var23 var13)) (= var15 var18)) (= var3 var21)) (= var27 var26)) (= var25 var31)) (= var30 var29)) (= var22 var11)) (= var9 (h (getnode (read var7 var13)))))) (and (and (and (and (and (and (and (and (= var19 var28) (= var17 1)) (= var35 var23)) (= var34 var15)) (= var6 nullAddr)) (= var33 var27)) (= var1 var25)) (= var32 var30)) (= var24 var22))) (and (and (and (and (and (and (and (and (= var14 var19) (= var5 var17)) (= var12 var35)) (= var0 var34)) (= var20 var6)) (= var2 nullAddr)) (= var4 var1)) (= var10 var32)) (= var16 var24))))) (inv_main43 var14 var5 var12 var0 var20 var2 var4 var10 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr)) (or (not (and (inv_main50 var3 var5 var9 var13 var17 var4 var11 var7 var6) (and (and (and (and (and (and (and (and (= var15 (write var3 var13 (O_node (node (h (getnode (read var3 var13))) var17)))) (= var8 var5)) (= var0 var9)) (= var1 var13)) (= var12 var17)) (= var16 var4)) (= var14 var11)) (= var2 var7)) (= var10 var6)))) (inv_main43 var15 0 var0 var1 var1 var16 var14 var2 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr)) (or (not (and (inv_main51 var3 var6 var10 var14 var17 var5 var13 var8 var7) (and (and (and (and (and (and (and (and (= var11 (write var3 var14 (O_node (node (h (getnode (read var3 var14))) var5)))) (= var15 var6)) (= var16 var10)) (= var12 var14)) (= var0 var17)) (= var4 var5)) (= var2 var13)) (= var9 var8)) (= var1 var7)))) (inv_main43 var11 1 var16 var12 var0 var12 var2 var9 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main43 var1 var3 var7 var14 var17 var2 var11 var6 var5) (and (not (= var4 3)) (and (and (and (and (and (and (and (and (and (= var0 var1) (= var9 var3)) (= var15 var7)) (= var13 var14)) (= var10 var17)) (= var8 var2)) (= var16 var11)) (= var12 var6)) (= var18 var5)) (= var4 (h (getnode (read var1 var5)))))))) (inv_main47 var0 var9 var15 var18 var10 var8 var16 var12 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (inv_main30 var3 var5 var0 var2 var9 var4 var1 var8 var7 var6)) (inv_main30 var3 var5 var0 var2 var9 var4 var1 var8 var7 var6)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 node) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Int) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr)) (or (not (and (inv_main21 var2 var3 var7 var12 var14 var18 var25 var21 var5) (and (and (= var16 nullAddr) (and (and (and (and (and (and (and (and (and (= var0 (newHeap (alloc var1 (O_node var17)))) (= var22 0)) (= var20 var24)) (= var9 var8)) (= var28 var11)) (= var26 var10)) (= var27 var23)) (= var13 var19)) (= var15 var4)) (= var16 (newAddr (alloc var1 (O_node var17)))))) (and (and (and (and (and (and (and (and (= var1 (write var2 var5 (O_node (node 1 (n (getnode (read var2 var5))))))) (= var6 var3)) (= var24 var7)) (= var8 var12)) (= var11 var14)) (= var10 var18)) (= var23 var25)) (= var19 var21)) (= var4 var5))))) (inv_main30 var0 var22 var20 var16 var28 var26 var27 var13 var15 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Heap) (var27 node) (var28 Addr)) (or (not (and (inv_main22 var6 var7 var11 var12 var16 var19 var24 var20 var9) (and (and (= var5 nullAddr) (and (and (and (and (and (and (and (and (and (= var1 (newHeap (alloc var26 (O_node var27)))) (= var15 1)) (= var28 var23)) (= var14 var22)) (= var21 var25)) (= var10 var0)) (= var18 var17)) (= var8 var13)) (= var2 var4)) (= var5 (newAddr (alloc var26 (O_node var27)))))) (and (and (and (and (and (and (and (and (= var26 (write var6 var9 (O_node (node 2 (n (getnode (read var6 var9))))))) (= var3 var7)) (= var23 var11)) (= var22 var12)) (= var25 var16)) (= var0 var19)) (= var17 var24)) (= var13 var20)) (= var4 var9))))) (inv_main30 var1 var15 var28 var5 var21 var10 var18 var8 var2 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main17 var3 var5 var0 var2 var8 var4 var1 var7 var6)) (inv_main35 (write var3 var6 (O_node (node 3 (n (getnode (read var3 var6)))))) var5 var0 var2 var8 var4 var1 var7 var6)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main58 var5 var7 var11 var14 var17 var6 var12 var9 var8) (and (= var1 2) (and (and (and (and (and (and (and (and (and (= var0 var5) (= var2 var7)) (= var18 var11)) (= var13 var14)) (= var15 var17)) (= var10 var6)) (= var4 var12)) (= var3 var9)) (= var16 var8)) (= var1 (h (getnode (read var5 var8)))))))) (inv_main59 var0 var2 var18 var13 var15 var10 var4 var3 var16)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main58 var0 var3 var10 var15 var18 var2 var13 var5 var4) (and (not (= var9 2)) (and (and (and (and (and (and (and (and (and (= var1 var0) (= var8 var3)) (= var17 var10)) (= var16 var15)) (= var7 var18)) (= var12 var2)) (= var6 var13)) (= var11 var5)) (= var14 var4)) (= var9 (h (getnode (read var0 var4)))))))) (inv_main72 var1 var8 var17 var16 var7 var12 var6 var11 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr)) (or (not (and (inv_main66 var3 var5 var9 var13 var18 var4 var11 var7 var6) (and (not (= var17 1)) (and (and (and (and (and (and (and (and (and (= var12 var3) (= var2 var5)) (= var16 var9)) (= var10 var13)) (= var8 var18)) (= var1 var4)) (= var15 var11)) (= var14 var7)) (= var0 var6)) (= var17 (h (getnode (read var3 var6)))))))) (inv_main72 var12 var2 var16 var10 var8 var1 var15 var14 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr)) (or (not (and (inv_main33 var5 var7 var11 var15 var18 var6 var14 var9 var8) (and (and (and (and (and (and (and (and (and (= var17 var5) (= var13 var7)) (= var3 var11)) (= var0 var15)) (= var12 var18)) (= var16 var6)) (= var10 var14)) (= var1 var9)) (= var4 var8)) (= var2 (n (getnode (read var5 var8))))))) (inv_main16 var17 var13 var3 var0 var12 var16 var10 var1 var2)))) +(assert (forall ((var0 Addr) (var1 node) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap)) (or (not (and (inv_main3 var6 var8) (and (not (= var3 nullAddr)) (and (and (= var10 (newHeap (alloc var6 (O_node var1)))) (= var9 var8)) (= var3 (newAddr (alloc var6 (O_node var1)))))))) (inv_main16 var10 var9 var3 var0 var7 var2 var5 var4 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main16 var4 var6 var1 var3 var9 var5 var2 var8 var7) (and (not (= var6 0)) (not (= var0 0))))) (inv_main21 var4 var6 var1 var3 var9 var5 var2 var8 var7)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Heap) (var22 Addr) (var23 Addr) (var24 Addr) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr)) (or (not (and (inv_main21 var3 var4 var9 var14 var16 var20 var28 var24 var6) (and (and (not (= var18 nullAddr)) (and (and (and (and (and (and (and (and (and (= var21 (newHeap (alloc var2 (O_node var0)))) (= var13 0)) (= var17 var27)) (= var19 var10)) (= var15 var12)) (= var1 var11)) (= var22 var26)) (= var8 var23)) (= var25 var5)) (= var18 (newAddr (alloc var2 (O_node var0)))))) (and (and (and (and (and (and (and (and (= var2 (write var3 var6 (O_node (node 1 (n (getnode (read var3 var6))))))) (= var7 var4)) (= var27 var9)) (= var10 var14)) (= var12 var16)) (= var11 var20)) (= var26 var28)) (= var23 var24)) (= var5 var6))))) (inv_main27 var21 var13 var17 var18 var15 var1 var22 var8 var25)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Addr) (var25 node) (var26 Addr) (var27 Addr) (var28 Heap)) (or (not (and (inv_main22 var3 var4 var8 var9 var14 var17 var26 var20 var6) (and (and (not (= var11 nullAddr)) (and (and (and (and (and (and (and (and (and (= var7 (newHeap (alloc var28 (O_node var25)))) (= var5 1)) (= var24 var23)) (= var21 var22)) (= var15 var27)) (= var12 var0)) (= var18 var16)) (= var13 var10)) (= var19 var2)) (= var11 (newAddr (alloc var28 (O_node var25)))))) (and (and (and (and (and (and (and (and (= var28 (write var3 var6 (O_node (node 2 (n (getnode (read var3 var6))))))) (= var1 var4)) (= var23 var8)) (= var22 var9)) (= var27 var14)) (= var0 var17)) (= var16 var26)) (= var10 var20)) (= var2 var6))))) (inv_main27 var7 var5 var24 var11 var15 var12 var18 var13 var19)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (inv_main27 var3 var5 var0 var2 var8 var4 var1 var7 var6)) (inv_main33 (write var3 var6 (O_node (node (h (getnode (read var3 var6))) var2))) var5 var0 var2 var8 var4 var1 var7 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main16 var4 var6 var1 var3 var9 var5 var2 var8 var7) (and (= var6 0) (not (= var0 0))))) (inv_main22 var4 var6 var1 var3 var9 var5 var2 var8 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main47 var4 var6 var11 var15 var17 var5 var14 var8 var7) (and (= var13 0) (and (and (and (and (and (and (and (and (and (= var1 var4) (= var13 var6)) (= var3 var11)) (= var18 var15)) (= var16 var17)) (= var9 var5)) (= var2 var14)) (= var10 var8)) (= var12 var7)) (= var0 (n (getnode (read var4 var7)))))))) (inv_main51 var1 var13 var3 var18 var16 var9 var2 var10 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Int)) (or (not (inv_main8 var1 var2 var0 var3)) (inv_main8 var1 var2 var0 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 node) (var3 Addr) (var4 Heap) (var5 Int)) (or (not (and (inv_main3 var4 var5) (and (= var3 nullAddr) (and (and (= var0 (newHeap (alloc var4 (O_node var2)))) (= var1 var5)) (= var3 (newAddr (alloc var4 (O_node var2)))))))) (inv_main8 var0 var1 var3 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main59 var2 var5 var14 var17 var18 var4 var15 var9 var8) (and (not (= var16 nullAddr)) (and (and (and (and (and (and (and (and (and (= var1 var2) (= var10 var5)) (= var7 var14)) (= var12 var17)) (= var13 var18)) (= var0 var4)) (= var6 var15)) (= var11 var9)) (= var3 var8)) (= var16 (n (getnode (read var2 var8)))))))) (inv_main58 var1 var10 var7 var12 var13 var0 var6 var11 var16)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr)) (or (not (and (inv_main43 var4 var6 var10 var15 var18 var5 var13 var9 var8) (and (not (= var1 nullAddr)) (and (= var14 3) (and (and (and (and (and (and (and (and (and (= var16 var4) (= var11 var6)) (= var12 var10)) (= var0 var15)) (= var1 var18)) (= var17 var5)) (= var7 var13)) (= var3 var9)) (= var2 var8)) (= var14 (h (getnode (read var4 var8))))))))) (inv_main58 var16 var11 var12 var0 var1 var17 var7 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main66 var3 var6 var12 var16 var18 var5 var15 var11 var10) (and (= var14 1) (and (and (and (and (and (and (and (and (and (= var9 var3) (= var4 var6)) (= var0 var12)) (= var8 var16)) (= var13 var18)) (= var7 var5)) (= var1 var15)) (= var2 var11)) (= var17 var10)) (= var14 (h (getnode (read var3 var10)))))))) (inv_main67 var9 var4 var0 var8 var13 var7 var1 var2 var17)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main47 var4 var6 var11 var15 var17 var5 var14 var8 var7) (and (not (= var13 0)) (and (and (and (and (and (and (and (and (and (= var1 var4) (= var13 var6)) (= var3 var11)) (= var18 var15)) (= var16 var17)) (= var9 var5)) (= var2 var14)) (= var10 var8)) (= var12 var7)) (= var0 (n (getnode (read var4 var7)))))))) (inv_main50 var1 var13 var3 var18 var16 var9 var2 var10 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main21 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main22 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main27 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main33 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main17 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main35 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main43 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main47 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main50 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main51 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main58 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main59 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main66 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (and (inv_main67 var3 var5 var0 var2 var8 var4 var1 var7 var6) (not (is-O_node (read var3 var6))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (not (inv_main72 var3 var5 var0 var2 var8 var4 var1 var7 var6)))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/splice-2.i.smt2 b/heap-theory-benchmarks/heap/splice-2.i.smt2 new file mode 100644 index 00000000..14f48bb5 --- /dev/null +++ b/heap-theory-benchmarks/heap/splice-2.i.smt2 @@ -0,0 +1,90 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (h Int) (n Addr)) + ) +)) +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main16 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main21 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main22 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main27 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main3 (Heap Int) Bool) +(declare-fun inv_main30 (Heap Int Addr Addr Addr Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main33 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main35 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main43 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main50 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main64 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Int Addr Addr Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Int Addr Int) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main64 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (= var5 nullAddr)))) (inv_main66 var0 var6 var2 var1 var4 var8 var7 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr)) (or (not (and (inv_main16 var0 var7 var2 var1 var5 var9 var8 var3 var6) (and (= var7 0) (not (= var4 0))))) (inv_main22 var0 var7 var2 var1 var5 var9 var8 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr)) (or (not (and (inv_main16 var0 var7 var2 var1 var5 var9 var8 var3 var6) (and (not (= var7 0)) (not (= var4 0))))) (inv_main21 var0 var7 var2 var1 var5 var9 var8 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main43 var8 var6 var10 var1 var3 var17 var7 var11 var5) (and (not (= var2 3)) (and (and (and (and (and (and (and (and (and (= var9 var8) (= var16 var6)) (= var14 var10)) (= var18 var1)) (= var4 var3)) (= var15 var17)) (= var12 var7)) (= var13 var11)) (= var0 var5)) (= var2 (h (getnode (read var8 var5)))))))) (inv_main47 var9 var16 var14 var0 var4 var15 var12 var13 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main47 var12 var6 var13 var0 var4 var18 var8 var15 var5) (and (not (= var2 0)) (and (and (and (and (and (and (and (and (and (= var10 var12) (= var2 var6)) (= var11 var13)) (= var1 var0)) (= var14 var4)) (= var3 var18)) (= var9 var8)) (= var17 var15)) (= var7 var5)) (= var16 (n (getnode (read var12 var5)))))))) (inv_main50 var10 var2 var11 var1 var14 var3 var9 var17 var16)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr) (var24 Int) (var25 Heap) (var26 Int) (var27 Addr) (var28 Addr) (var29 Addr) (var30 Heap) (var31 Addr) (var32 Int) (var33 Addr) (var34 Int) (var35 Addr) (var36 Addr)) (or (not (and (inv_main35 var30 var26 var12 var20 var7 var19 var28 var31 var10) (and (and (and (not (= var32 3)) (and (and (and (and (and (and (and (and (and (= var25 var30) (= var24 var26)) (= var29 var12)) (= var21 var20)) (= var8 var7)) (= var3 var19)) (= var15 var28)) (= var17 var31)) (= var16 var10)) (= var32 (h (getnode (read var30 var12)))))) (and (and (and (and (and (and (and (and (= var2 var25) (= var34 1)) (= var23 var29)) (= var36 var21)) (= var13 nullAddr)) (= var18 var3)) (= var5 var15)) (= var11 var17)) (= var1 var16))) (and (and (and (and (and (and (and (and (= var4 var2) (= var6 var34)) (= var9 var23)) (= var14 var36)) (= var33 var13)) (= var27 nullAddr)) (= var22 var5)) (= var0 var11)) (= var35 var1))))) (inv_main43 var4 var6 var9 var14 var33 var27 var22 var0 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Addr)) (or (not (and (inv_main50 var7 var5 var9 var1 var3 var17 var6 var10 var4) (and (and (and (and (and (and (and (and (= var14 (write var7 var1 (O_node (node (h (getnode (read var7 var1))) var3)))) (= var2 var5)) (= var12 var9)) (= var13 var1)) (= var0 var3)) (= var8 var17)) (= var15 var6)) (= var16 var10)) (= var11 var4)))) (inv_main43 var14 0 var12 var13 var13 var8 var15 var16 var11)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr)) (or (not (and (inv_main51 var12 var9 var13 var1 var7 var16 var11 var14 var8) (and (and (and (and (and (and (and (and (= var5 (write var12 var1 (O_node (node (h (getnode (read var12 var1))) var16)))) (= var10 var9)) (= var0 var13)) (= var6 var1)) (= var17 var7)) (= var3 var16)) (= var4 var11)) (= var2 var14)) (= var15 var8)))) (inv_main43 var5 1 var0 var6 var17 var6 var4 var2 var15)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 node) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Heap) (var24 Addr) (var25 Addr) (var26 Heap) (var27 Addr) (var28 Addr)) (or (not (and (inv_main21 var23 var18 var11 var15 var6 var13 var20 var24 var9) (and (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (and (and (= var16 (newHeap (alloc var26 (O_node var14)))) (= var3 0)) (= var17 var19)) (= var4 var7)) (= var5 var10)) (= var8 var28)) (= var1 var25)) (= var21 var22)) (= var2 var27)) (= var12 (newAddr (alloc var26 (O_node var14)))))) (and (and (and (and (and (and (and (and (= var26 (write var23 var9 (O_node (node 1 (n (getnode (read var23 var9))))))) (= var0 var18)) (= var19 var11)) (= var7 var15)) (= var10 var6)) (= var28 var13)) (= var25 var20)) (= var22 var24)) (= var27 var9))))) (inv_main27 var16 var3 var17 var12 var5 var8 var1 var21 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Heap) (var20 Addr) (var21 Heap) (var22 Addr) (var23 Addr) (var24 node) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr)) (or (not (and (inv_main22 var21 var17 var7 var13 var4 var12 var20 var23 var6) (and (and (not (= var5 nullAddr)) (and (and (and (and (and (and (and (and (and (= var19 (newHeap (alloc var14 (O_node var24)))) (= var1 1)) (= var16 var9)) (= var11 var2)) (= var22 var0)) (= var15 var10)) (= var25 var8)) (= var18 var28)) (= var26 var27)) (= var5 (newAddr (alloc var14 (O_node var24)))))) (and (and (and (and (and (and (and (and (= var14 (write var21 var6 (O_node (node 2 (n (getnode (read var21 var6))))))) (= var3 var17)) (= var9 var7)) (= var2 var13)) (= var0 var4)) (= var10 var12)) (= var8 var20)) (= var28 var23)) (= var27 var6))))) (inv_main27 var19 var1 var16 var5 var22 var15 var25 var18 var26)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr)) (or (not (inv_main30 var0 var7 var2 var1 var4 var9 var8 var3 var6 var5)) (inv_main30 var0 var7 var2 var1 var4 var9 var8 var3 var6 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 node) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Heap) (var22 Addr) (var23 Addr) (var24 Heap) (var25 Addr) (var26 Addr) (var27 Addr) (var28 Addr)) (or (not (and (inv_main21 var21 var16 var9 var13 var2 var12 var18 var22 var6) (and (and (= var19 nullAddr) (and (and (and (and (and (and (and (and (and (= var11 (newHeap (alloc var24 (O_node var15)))) (= var4 0)) (= var28 var17)) (= var25 var3)) (= var5 var7)) (= var8 var27)) (= var14 var23)) (= var1 var20)) (= var10 var26)) (= var19 (newAddr (alloc var24 (O_node var15)))))) (and (and (and (and (and (and (and (and (= var24 (write var21 var6 (O_node (node 1 (n (getnode (read var21 var6))))))) (= var0 var16)) (= var17 var9)) (= var3 var13)) (= var7 var2)) (= var27 var12)) (= var23 var18)) (= var20 var22)) (= var26 var6))))) (inv_main30 var11 var4 var28 var19 var5 var8 var14 var1 var10 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Addr) (var20 Int) (var21 Int) (var22 Addr) (var23 Heap) (var24 Addr) (var25 Addr) (var26 Addr) (var27 node) (var28 Addr)) (or (not (and (inv_main22 var23 var20 var7 var16 var3 var15 var22 var24 var4) (and (and (= var14 nullAddr) (and (and (and (and (and (and (and (and (and (= var12 (newHeap (alloc var18 (O_node var27)))) (= var21 1)) (= var19 var9)) (= var5 var1)) (= var11 var0)) (= var13 var10)) (= var25 var8)) (= var17 var28)) (= var6 var26)) (= var14 (newAddr (alloc var18 (O_node var27)))))) (and (and (and (and (and (and (and (and (= var18 (write var23 var4 (O_node (node 2 (n (getnode (read var23 var4))))))) (= var2 var20)) (= var9 var7)) (= var1 var16)) (= var0 var3)) (= var10 var15)) (= var8 var22)) (= var28 var24)) (= var26 var4))))) (inv_main30 var12 var21 var19 var14 var11 var13 var25 var17 var6 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main66 var10 var7 var12 var1 var4 var18 var9 var13 var6) (and (= var8 2) (and (and (and (and (and (and (and (and (and (= var5 var10) (= var2 var7)) (= var3 var12)) (= var17 var1)) (= var14 var4)) (= var16 var18)) (= var11 var9)) (= var0 var13)) (= var15 var6)) (= var8 (h (getnode (read var10 var6)))))))) (inv_main67 var5 var2 var3 var17 var14 var16 var11 var0 var15)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr)) (or (not (and (inv_main35 var12 var8 var13 var0 var4 var17 var9 var15 var7) (and (= var2 3) (and (and (and (and (and (and (and (and (and (= var16 var12) (= var10 var8)) (= var6 var13)) (= var3 var0)) (= var11 var4)) (= var5 var17)) (= var18 var9)) (= var1 var15)) (= var14 var7)) (= var2 (h (getnode (read var12 var13)))))))) (inv_main0 var16 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (and (inv_main64 var0 var6 var2 var1 var4 var8 var7 var3 var5) (= var5 nullAddr))) (inv_main0 var0 0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (inv_main27 var0 var6 var2 var1 var4 var8 var7 var3 var5)) (inv_main33 (write var0 var5 (O_node (node (h (getnode (read var0 var5))) var1))) var6 var2 var1 var4 var8 var7 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main58 var9 var5 var10 var0 var3 var17 var7 var12 var4) (and (not (= var16 1)) (and (and (and (and (and (and (and (and (and (= var13 var9) (= var6 var5)) (= var11 var10)) (= var14 var0)) (= var8 var3)) (= var1 var17)) (= var2 var7)) (= var18 var12)) (= var15 var4)) (= var16 (h (getnode (read var9 var4)))))))) (inv_main72 var13 var6 var11 var14 var8 var1 var2 var18 var15)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main66 var11 var9 var12 var2 var5 var18 var10 var14 var8) (and (not (= var13 2)) (and (and (and (and (and (and (and (and (and (= var3 var11) (= var16 var9)) (= var15 var12)) (= var0 var2)) (= var17 var5)) (= var7 var18)) (= var4 var10)) (= var1 var14)) (= var6 var8)) (= var13 (h (getnode (read var11 var8)))))))) (inv_main72 var3 var16 var15 var0 var17 var7 var4 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main47 var12 var6 var13 var0 var4 var18 var8 var15 var5) (and (= var2 0) (and (and (and (and (and (and (and (and (and (= var10 var12) (= var2 var6)) (= var11 var13)) (= var1 var0)) (= var14 var4)) (= var3 var18)) (= var9 var8)) (= var17 var15)) (= var7 var5)) (= var16 (n (getnode (read var12 var5)))))))) (inv_main51 var10 var2 var11 var1 var14 var3 var9 var17 var16)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (or (not (inv_main17 var0 var6 var2 var1 var4 var8 var7 var3 var5)) (inv_main35 (write var0 var5 (O_node (node 3 (n (getnode (read var0 var5)))))) var6 var2 var1 var4 var8 var7 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main59 var11 var7 var13 var0 var4 var18 var8 var14 var6) (and (not (= var12 nullAddr)) (and (and (and (and (and (and (and (and (and (= var2 var11) (= var5 var7)) (= var10 var13)) (= var16 var0)) (= var3 var4)) (= var15 var18)) (= var1 var8)) (= var17 var14)) (= var9 var6)) (= var12 (n (getnode (read var11 var6)))))))) (inv_main58 var2 var5 var10 var16 var3 var15 var1 var17 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main43 var10 var8 var11 var0 var5 var17 var9 var12 var7) (and (not (= var14 nullAddr)) (and (= var16 3) (and (and (and (and (and (and (and (and (and (= var15 var10) (= var6 var8)) (= var3 var11)) (= var2 var0)) (= var14 var5)) (= var1 var17)) (= var13 var9)) (= var4 var12)) (= var18 var7)) (= var16 (h (getnode (read var10 var7))))))))) (inv_main58 var15 var6 var3 var2 var14 var1 var13 var4 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr)) (or (not (and (inv_main33 var10 var6 var12 var0 var4 var18 var7 var14 var5) (and (and (and (and (and (and (and (and (and (= var17 var10) (= var9 var6)) (= var1 var12)) (= var2 var0)) (= var3 var4)) (= var8 var18)) (= var13 var7)) (= var11 var14)) (= var15 var5)) (= var16 (n (getnode (read var10 var5))))))) (inv_main16 var17 var9 var1 var2 var3 var8 var13 var11 var16)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 node) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr)) (or (not (and (inv_main3 var0 var9) (and (not (= var5 nullAddr)) (and (and (= var1 (newHeap (alloc var0 (O_node var3)))) (= var2 var9)) (= var5 (newAddr (alloc var0 (O_node var3)))))))) (inv_main16 var1 var2 var5 var8 var6 var4 var10 var7 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr)) (or (not (and (inv_main16 var0 var7 var2 var1 var5 var9 var8 var3 var6) (= var4 0))) (inv_main17 var0 var7 var2 var1 var5 var9 var8 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Int)) (or (not (inv_main8 var0 var3 var1 var2)) (inv_main8 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 node) (var4 Int) (var5 Int)) (or (not (and (inv_main3 var0 var5) (and (= var1 nullAddr) (and (and (= var2 (newHeap (alloc var0 (O_node var3)))) (= var4 var5)) (= var1 (newAddr (alloc var0 (O_node var3)))))))) (inv_main8 var2 var4 var1 1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main58 var14 var7 var15 var0 var5 var18 var10 var16 var6) (and (= var13 1) (and (and (and (and (and (and (and (and (and (= var11 var14) (= var3 var7)) (= var2 var15)) (= var17 var0)) (= var1 var5)) (= var4 var18)) (= var9 var10)) (= var8 var16)) (= var12 var6)) (= var13 (h (getnode (read var14 var6)))))))) (inv_main59 var11 var3 var2 var17 var1 var4 var9 var8 var12)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main67 var11 var8 var13 var2 var6 var18 var9 var15 var7) (and (and (and (and (and (and (and (and (and (= var4 var11) (= var3 var8)) (= var14 var13)) (= var12 var2)) (= var10 var6)) (= var0 var18)) (= var1 var9)) (= var5 var15)) (= var16 var7)) (= var17 (n (getnode (read var11 var7))))))) (inv_main64 var4 var3 var14 var12 var10 var0 var1 var5 var17)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main59 var11 var7 var13 var0 var4 var18 var8 var14 var6) (and (= var12 nullAddr) (and (and (and (and (and (and (and (and (and (= var2 var11) (= var5 var7)) (= var10 var13)) (= var16 var0)) (= var3 var4)) (= var15 var18)) (= var1 var8)) (= var17 var14)) (= var9 var6)) (= var12 (n (getnode (read var11 var6)))))))) (inv_main64 var2 var5 var10 var16 var3 var15 var1 var17 var15)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Addr) (var18 Addr)) (or (not (and (inv_main43 var10 var8 var11 var0 var5 var17 var9 var12 var7) (and (= var14 nullAddr) (and (= var16 3) (and (and (and (and (and (and (and (and (and (= var15 var10) (= var6 var8)) (= var3 var11)) (= var2 var0)) (= var14 var5)) (= var1 var17)) (= var13 var9)) (= var4 var12)) (= var18 var7)) (= var16 (h (getnode (read var10 var7))))))))) (inv_main64 var15 var6 var3 var2 var14 var1 var13 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main21 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main22 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main27 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main33 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main17 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main35 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main43 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main47 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main50 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main51 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main58 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main59 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main66 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (and (inv_main67 var0 var6 var2 var1 var4 var8 var7 var3 var5) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr)) (not (inv_main72 var0 var6 var2 var1 var4 var8 var7 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr)) (not (and (inv_main0 var0 var1) (not (= (read var0 var2) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/split_list_test05-1.i.smt2 b/heap-theory-benchmarks/heap/split_list_test05-1.i.smt2 new file mode 100644 index 00000000..ae90c83c --- /dev/null +++ b/heap-theory-benchmarks/heap/split_list_test05-1.i.smt2 @@ -0,0 +1,695 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node_t 0) (list_t 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node_t (getnode_t node_t)) + (O_list_t (getlist_t list_t)) + (defObj) + ) + ( + (node_t (data Int) (prev Addr) (next Addr)) + ) + ( + (list_t (first Addr) (last Addr)) + ) +)) +(declare-fun inv_main10 (Heap Addr Int Int) Bool) +(declare-fun inv_main100 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main101 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main103 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main106 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main107 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main108 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main110 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main111 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main112 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main113 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main118 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main119 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main120 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main121 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main123 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main126 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main127 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main128 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main130 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main131 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main132 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main133 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main137 (Heap Addr Int Int) Bool) +(declare-fun inv_main144 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main145 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main146 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main147 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main149 (Heap Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main152 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main153 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main154 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main156 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main157 (Heap Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main158 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main159 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main165 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main166 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main167 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main168 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main17 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main170 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main173 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main174 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main175 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main177 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main178 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main179 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main18 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main180 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main185 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main186 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main187 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main188 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main19 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main190 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main193 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main194 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main195 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main197 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main198 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main199 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main200 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main205 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main206 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main207 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main208 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main210 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main213 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main214 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main215 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main217 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main218 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main219 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main22 (Heap Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main220 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main225 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main226 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main227 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main228 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main230 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main233 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main234 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main235 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main237 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main238 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main239 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main240 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main245 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main246 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main247 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main248 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main25 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main250 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main253 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main254 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main255 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main257 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main258 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main259 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main26 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main260 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main265 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main266 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main267 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main268 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main27 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main270 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main273 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main274 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main275 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main277 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main278 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main279 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main280 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main281 (Heap Addr Int) Bool) +(declare-fun inv_main284 (Heap Addr Int Int) Bool) +(declare-fun inv_main29 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main291 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main292 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main293 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main294 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main296 (Heap Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main299 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main3 (Heap Addr) Bool) +(declare-fun inv_main30 (Heap Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main300 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main301 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main303 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main304 (Heap Addr Int Int Addr Int Addr Addr) Bool) +(declare-fun inv_main305 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main306 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main308 (Heap Addr Int Addr) Bool) +(declare-fun inv_main31 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main311 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main312 (Heap Addr Int Addr Addr Addr) Bool) +(declare-fun inv_main315 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main317 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main319 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main32 (Heap Addr Int Int Addr Int Addr) Bool) +(declare-fun inv_main321 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main323 (Heap Addr Int Addr Addr Addr Int) Bool) +(declare-fun inv_main335 (Heap Addr Int Addr Addr Int) Bool) +(declare-fun inv_main341 (Heap Addr Int Addr Addr Int) Bool) +(declare-fun inv_main342 (Heap Addr Int Addr Addr Int Addr) Bool) +(declare-fun inv_main345 (Heap Addr Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main347 (Heap Addr Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main349 (Heap Addr Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main351 (Heap Addr Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main353 (Heap Addr Int Addr Addr Int Addr Int) Bool) +(declare-fun inv_main361 (Heap Addr Int Addr Addr Int) Bool) +(declare-fun inv_main367 (Heap Addr Int Addr Addr Int) Bool) +(declare-fun inv_main38 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main39 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main4 (Heap Addr) Bool) +(declare-fun inv_main40 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main41 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main43 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main47 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main48 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main50 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main51 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main53 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main58 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main59 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main60 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main61 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main63 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main66 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main67 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main68 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main70 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main71 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main72 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main73 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main78 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main79 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main80 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main81 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main83 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main86 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main87 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main88 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main90 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main91 (Heap Addr Int Addr Int Addr Addr) Bool) +(declare-fun inv_main92 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main93 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main98 (Heap Addr Int Addr Int Addr) Bool) +(declare-fun inv_main99 (Heap Addr Int Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 node_t) (var11 Addr) (var12 Addr)) (or (not (and (inv_main255 var3 var9 var2 var8 var6 var12) (and (and (and (and (and (= var4 (write var3 var12 (O_node_t (node_t (data (getnode_t (read var3 var12))) (prev (getnode_t (read var3 var12))) nullAddr)))) (= var7 var9)) (= var0 var2)) (= var5 var8)) (= var1 var6)) (= var11 var12)))) (inv_main265 (newHeap (alloc var4 (O_node_t var10))) var7 var0 var7 62 (newAddr (alloc var4 (O_node_t var10))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Addr) (var10 node_t) (var11 Addr)) (or (not (and (inv_main260 var2 var9 var1 var8 var6 var11) (and (and (and (and (= var7 (write var2 var8 (O_list_t (list_t (first (getlist_t (read var2 var8))) var11)))) (= var0 var9)) (= var5 var1)) (= var4 var8)) (= var3 var6)))) (inv_main265 (newHeap (alloc var7 (O_node_t var10))) var0 var5 var0 62 (newAddr (alloc var7 (O_node_t var10))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Int) (var19 Addr) (var20 Int)) (or (not (and (inv_main210 var11 var6 var10 var15 var20 var16 var1) (and (and (not (= var3 0)) (and (= var1 nullAddr) (and (and (and (and (and (and (= var2 var11) (= var9 var6)) (= var5 var10)) (= var0 var15)) (= var18 var20)) (= var8 var16)) (= var19 (last (getlist_t (read var11 var15))))))) (and (and (and (and (and (and (= var17 var2) (= var4 var9)) (= var13 var5)) (= var12 var0)) (= var14 var18)) (= var7 var8)) (or (and (= var19 nullAddr) (= var3 1)) (and (not (= var19 nullAddr)) (= var3 0))))))) (inv_main208 var17 var4 var13 var12 var14 var7)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Heap) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Addr) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main250 var10 var7 var9 var15 var1 var20 var5) (and (and (not (= var16 0)) (and (= var5 nullAddr) (and (and (and (and (and (and (= var12 var10) (= var2 var7)) (= var14 var9)) (= var6 var15)) (= var11 var1)) (= var4 var20)) (= var18 (last (getlist_t (read var10 var15))))))) (and (and (and (and (and (and (= var8 var12) (= var19 var2)) (= var17 var14)) (= var3 var6)) (= var0 var11)) (= var13 var4)) (or (and (= var18 nullAddr) (= var16 1)) (and (not (= var18 nullAddr)) (= var16 0))))))) (inv_main248 var8 var19 var17 var3 var0 var13)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main254 var1 var4 var0 var3 var2 var5)) (inv_main255 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) nullAddr (next (getnode_t (read var1 var5)))))) var4 var0 var3 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main20 var2 var4 var1 var6 var0 var3 var5)) (inv_main25 (write var2 var0 (O_list_t (list_t var5 (last (getlist_t (read var2 var0)))))) var4 var1 var6 var0 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main25 var2 var4 var1 var6 var0 var3 var5)) (inv_main26 (write var2 var0 (O_list_t (list_t (first (getlist_t (read var2 var0))) var5))) var4 var1 var6 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main131 var1 var4 var0 var6 var2 var5 var3)) (inv_main130 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) var3 (next (getnode_t (read var1 var5)))))) var4 var0 var6 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main90 var2 var5 var1 var4 var3 var0)) (inv_main92 (write var2 var0 (O_node_t (node_t (data (getnode_t (read var2 var0))) (prev (getnode_t (read var2 var0))) nullAddr))) var5 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main292 var1 var5 var0 var6 var4 var2 var3)) (inv_main296 var1 var5 var0 var6 var4 var2 var3 (first (getlist_t (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main71 var3 var5 var2 var4 var1 var0 var6)) (inv_main70 (write var3 var0 (O_node_t (node_t (data (getnode_t (read var3 var0))) var6 (next (getnode_t (read var3 var0)))))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main110 var1 var4 var0 var5 var2 var3)) (inv_main112 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) (prev (getnode_t (read var1 var3))) nullAddr))) var4 var0 var5 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (inv_main218 var1 var6 var0 var3 var5 var4 var2)) (inv_main217 (write var1 var4 (O_node_t (node_t (data (getnode_t (read var1 var4))) var2 (next (getnode_t (read var1 var4)))))) var6 var0 var3 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main81 var2 var5 var1 var4 var3 var0)) (inv_main86 (write var2 var4 (O_list_t (list_t var0 (last (getlist_t (read var2 var4)))))) var5 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main250 var1 var5 var0 var3 var2 var6 var4) (not (= var4 nullAddr)))) (inv_main247 var1 var5 var0 var3 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Heap) (var20 Addr)) (or (not (and (inv_main250 var11 var9 var10 var15 var3 var20 var6) (and (and (= var1 0) (and (= var6 nullAddr) (and (and (and (and (and (and (= var13 var11) (= var4 var9)) (= var14 var10)) (= var7 var15)) (= var12 var3)) (= var5 var20)) (= var18 (last (getlist_t (read var11 var15))))))) (and (and (and (and (and (and (= var19 var13) (= var16 var4)) (= var8 var14)) (= var0 var7)) (= var17 var12)) (= var2 var5)) (or (and (= var18 nullAddr) (= var1 1)) (and (not (= var18 nullAddr)) (= var1 0))))))) (inv_main247 var19 var16 var8 var0 var17 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main63 var3 var6 var2 var4 var1 var0 var5) (not (= var5 nullAddr)))) (inv_main60 var3 var6 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main63 var13 var7 var12 var2 var0 var10 var17) (and (and (= var5 0) (and (= var17 nullAddr) (and (and (and (and (and (and (= var4 var13) (= var20 var7)) (= var15 var12)) (= var18 var2)) (= var6 var0)) (= var3 var10)) (= var9 (last (getlist_t (read var13 var2))))))) (and (and (and (and (and (and (= var8 var4) (= var19 var20)) (= var11 var15)) (= var16 var18)) (= var1 var6)) (= var14 var3)) (or (and (= var9 nullAddr) (= var5 1)) (and (not (= var9 nullAddr)) (= var5 0))))))) (inv_main60 var8 var19 var11 var16 var1 var14)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main72 var3 var5 var2 var4 var1 var0)) (inv_main73 (write var3 (last (getlist_t (read var3 var4))) (O_node_t (node_t (data (getnode_t (read var3 (last (getlist_t (read var3 var4)))))) (prev (getnode_t (read var3 (last (getlist_t (read var3 var4)))))) var0))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (inv_main304 var1 var6 var0 var7 var4 var2 var3 var5)) (inv_main303 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) var5 (next (getnode_t (read var1 var3)))))) var6 var0 var7 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main91 var2 var6 var1 var4 var3 var0 var5)) (inv_main90 (write var2 var0 (O_node_t (node_t (data (getnode_t (read var2 var0))) var5 (next (getnode_t (read var2 var0)))))) var6 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main39 var1 var3 var0 var2 var5 var4)) (inv_main43 var1 var3 var0 var2 var5 var4 (first (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main107 var1 var4 var0 var5 var2 var3)) (inv_main108 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) nullAddr (next (getnode_t (read var1 var3)))))) var4 var0 var5 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main158 var1 var4 var0 var2 var6 var3 var5)) (inv_main159 (write var1 (last (getlist_t (read var1 var6))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var6)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var6)))))) var5))) var4 var0 var2 var6 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main217 var1 var5 var0 var2 var4 var3)) (inv_main219 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) (prev (getnode_t (read var1 var3))) nullAddr))) var5 var0 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main19 var2 var4 var1 var6 var0 var3 var5)) (inv_main30 var2 var4 var1 var6 var0 var3 var5 (last (getlist_t (read var2 var0))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main257 var1 var4 var0 var3 var2 var5)) (inv_main259 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) (prev (getnode_t (read var1 var5))) nullAddr))) var4 var0 var3 var2 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main63 var14 var9 var13 var3 var0 var12 var17) (and (and (not (= var2 0)) (and (= var17 nullAddr) (and (and (and (and (and (and (= var5 var14) (= var20 var9)) (= var16 var13)) (= var19 var3)) (= var8 var0)) (= var4 var12)) (= var11 (last (getlist_t (read var14 var3))))))) (and (and (and (and (and (and (= var6 var5) (= var15 var20)) (= var10 var16)) (= var18 var19)) (= var1 var8)) (= var7 var4)) (or (and (= var11 nullAddr) (= var2 1)) (and (not (= var11 nullAddr)) (= var2 0))))))) (inv_main61 var6 var15 var10 var18 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main317 var2 var5 var1 var0 var4 var3 var6) (= var6 0))) (inv_main319 var2 var5 var1 var0 var4 var3 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int)) (or (not (and (inv_main317 var9 var5 var8 var0 var2 var1 var13) (and (not (= var13 0)) (and (and (and (and (and (and (= var11 var9) (= var12 var5)) (= var10 var8)) (= var7 var0)) (= var6 var2)) (= var4 var1)) (= var3 (data (getnode_t (read var9 (next (getnode_t (read var9 (next (getnode_t (read var9 var1)))))))))))))) (and (or (not (= var3 101)) (inv_main319 var11 var12 var10 var7 var6 var4 1)) (or (not (not (= var3 101))) (inv_main319 var11 var12 var10 var7 var6 var4 0)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main265 var1 var2 var0 var5 var4 var3)) (inv_main266 (write var1 var3 (O_node_t (node_t var4 (prev (getnode_t (read var1 var3))) (next (getnode_t (read var1 var3)))))) var2 var0 var5 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main193 var1 var3 var0 var4 var5 var2)) (inv_main194 (write var1 var4 (O_list_t (list_t (first (getlist_t (read var1 var4))) var2))) var3 var0 var4 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Int) (var14 Heap) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Int) (var20 Heap)) (or (not (and (inv_main270 var14 var7 var13 var10 var9 var8 var12) (and (and (not (= var6 0)) (and (= var12 nullAddr) (and (and (and (and (and (and (= var20 var14) (= var3 var7)) (= var11 var13)) (= var18 var10)) (= var17 var9)) (= var2 var8)) (= var15 (last (getlist_t (read var14 var10))))))) (and (and (and (and (and (and (= var4 var20) (= var1 var3)) (= var5 var11)) (= var0 var18)) (= var19 var17)) (= var16 var2)) (or (and (= var15 nullAddr) (= var6 1)) (and (not (= var15 nullAddr)) (= var6 0))))))) (inv_main268 var4 var1 var5 var0 var19 var16)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main121 var1 var3 var0 var5 var2 var4)) (inv_main126 (write var1 var5 (O_list_t (list_t var4 (last (getlist_t (read var1 var5)))))) var3 var0 var5 var2 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main103 var1 var5 var0 var6 var2 var3 var4) (not (= var4 nullAddr)))) (inv_main100 var1 var5 var0 var6 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Int) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Heap) (var20 Addr)) (or (not (and (inv_main103 var12 var9 var11 var20 var14 var6 var8) (and (and (= var4 0) (and (= var8 nullAddr) (and (and (and (and (and (and (= var17 var12) (= var16 var9)) (= var2 var11)) (= var13 var20)) (= var10 var14)) (= var5 var6)) (= var1 (last (getlist_t (read var12 var20))))))) (and (and (and (and (and (and (= var19 var17) (= var0 var16)) (= var15 var2)) (= var3 var13)) (= var7 var10)) (= var18 var5)) (or (and (= var1 nullAddr) (= var4 1)) (and (not (= var1 nullAddr)) (= var4 0))))))) (inv_main100 var19 var0 var15 var3 var7 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (= var5 0))) (inv_main341 var3 var6 var2 var1 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Heap) (var20 Int) (var21 Heap) (var22 Addr) (var23 Heap)) (or (not (and (inv_main353 var19 var10 var18 var1 var4 var11 var0 var20) (and (= var5 0) (and (and (not (= var20 0)) (and (and (and (and (and (and (and (= var23 var19) (= var22 var10)) (= var7 var18)) (= var12 var1)) (= var17 var4)) (= var8 var11)) (= var16 var0)) (= var3 (data (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 var0))))))))))))))))))))) (and (and (and (and (and (and (and (= var21 var23) (= var2 var22)) (= var6 var7)) (= var14 var12)) (= var15 var17)) (= var9 var8)) (= var13 var16)) (or (and (= var3 62) (= var5 1)) (and (not (= var3 62)) (= var5 0)))))))) (inv_main341 var21 var2 var6 var14 var15 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main106 var1 var4 var0 var5 var2 var3)) (inv_main107 (write var1 var5 (O_list_t (list_t (first (getlist_t (read var1 var5))) var3))) var4 var0 var5 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main205 var1 var5 var0 var2 var4 var3)) (inv_main206 (write var1 var3 (O_node_t (node_t var4 (prev (getnode_t (read var1 var3))) (next (getnode_t (read var1 var3)))))) var5 var0 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main51 var1 var4 var0 var3 var6 var5 var2)) (inv_main50 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) var2 (next (getnode_t (read var1 var5)))))) var4 var0 var3 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main270 var2 var3 var1 var6 var5 var4 var0) (not (= var0 nullAddr)))) (inv_main267 var2 var3 var1 var6 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int) (var14 Int) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Int) (var19 Addr) (var20 Heap)) (or (not (and (inv_main270 var12 var5 var11 var8 var7 var6 var10) (and (and (= var4 0) (and (= var10 nullAddr) (and (and (and (and (and (and (= var20 var12) (= var3 var5)) (= var9 var11)) (= var19 var8)) (= var18 var7)) (= var1 var6)) (= var15 (last (getlist_t (read var12 var8))))))) (and (and (and (and (and (and (= var16 var20) (= var17 var3)) (= var14 var9)) (= var2 var19)) (= var13 var18)) (= var0 var1)) (or (and (= var15 nullAddr) (= var4 1)) (and (not (= var15 nullAddr)) (= var4 0))))))) (inv_main267 var16 var17 var14 var2 var13 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main144 var1 var4 var0 var2 var6 var3 var5)) (inv_main145 (write var1 var5 (O_node_t (node_t var3 (prev (getnode_t (read var1 var5))) (next (getnode_t (read var1 var5)))))) var4 var0 var2 var6 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main67 var3 var5 var2 var4 var1 var0)) (inv_main68 (write var3 var0 (O_node_t (node_t (data (getnode_t (read var3 var0))) nullAddr (next (getnode_t (read var3 var0)))))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main210 var1 var6 var0 var3 var5 var4 var2) (not (= var2 nullAddr)))) (inv_main207 var1 var6 var0 var3 var5 var4)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int) (var13 Heap) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Int) (var20 Addr)) (or (not (and (inv_main210 var13 var6 var12 var14 var19 var15 var3) (and (and (= var0 0) (and (= var3 nullAddr) (and (and (and (and (and (and (= var4 var13) (= var11 var6)) (= var5 var12)) (= var2 var14)) (= var16 var19)) (= var10 var15)) (= var17 (last (getlist_t (read var13 var14))))))) (and (and (and (and (and (and (= var7 var4) (= var8 var11)) (= var1 var5)) (= var20 var2)) (= var9 var16)) (= var18 var10)) (or (and (= var17 nullAddr) (= var0 1)) (and (not (= var17 nullAddr)) (= var0 0))))))) (inv_main207 var7 var8 var1 var20 var9 var18)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main132 var1 var3 var0 var5 var2 var4)) (inv_main133 (write var1 (last (getlist_t (read var1 var5))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var5)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var5)))))) var4))) var3 var0 var5 var2 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main168 var1 var4 var0 var2 var3 var5)) (inv_main173 (write var1 var2 (O_list_t (list_t var5 (last (getlist_t (read var1 var2)))))) var4 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main43 var1 var3 var0 var2 var6 var5 var4) (not (= var4 nullAddr)))) (inv_main40 var1 var3 var0 var2 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int)) (or (not (and (inv_main43 var9 var6 var8 var5 var20 var19 var7) (and (and (= var13 0) (and (= var7 nullAddr) (and (and (and (and (and (and (= var10 var9) (= var1 var6)) (= var14 var8)) (= var18 var5)) (= var3 var20)) (= var16 var19)) (= var17 (last (getlist_t (read var9 var5))))))) (and (and (and (and (and (and (= var4 var10) (= var15 var1)) (= var12 var14)) (= var11 var18)) (= var2 var3)) (= var0 var16)) (or (and (= var17 nullAddr) (= var13 1)) (and (not (= var17 nullAddr)) (= var13 0))))))) (inv_main40 var4 var15 var12 var11 var2 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 node_t) (var15 Addr)) (or (not (and (inv_main27 var9 var4 var8 var6 var0 var3 var15) (and (= var5 0) (and (and (and (and (and (and (= var12 (write var9 var15 (O_node_t (node_t (data (getnode_t (read var9 var15))) (prev (getnode_t (read var9 var15))) nullAddr)))) (= var13 var4)) (= var11 var8)) (= var1 var6)) (= var7 var0)) (= var10 var3)) (= var2 var15))))) (inv_main38 (newHeap (alloc var12 (O_node_t var14))) var13 var11 var13 60 (newAddr (alloc var12 (O_node_t var14))))))) +(assert (forall ((var0 Addr) (var1 node_t) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr)) (or (not (and (inv_main32 var10 var6 var9 var8 var0 var4 var14) (and (= var7 0) (and (and (and (and (and (= var12 (write var10 var0 (O_list_t (list_t (first (getlist_t (read var10 var0))) var14)))) (= var3 var6)) (= var2 var9)) (= var11 var8)) (= var13 var0)) (= var5 var4))))) (inv_main38 (newHeap (alloc var12 (O_node_t var1))) var3 var2 var3 60 (newAddr (alloc var12 (O_node_t var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main112 var1 var4 var0 var5 var2 var3)) (inv_main113 (write var1 (last (getlist_t (read var1 var5))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var5)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var5)))))) var3))) var4 var0 var5 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr)) (or (not (inv_main178 var1 var5 var0 var2 var4 var6 var3)) (inv_main177 (write var1 var6 (O_node_t (node_t (data (getnode_t (read var1 var6))) var3 (next (getnode_t (read var1 var6)))))) var5 var0 var2 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 node_t) (var11 Addr) (var12 Int)) (or (not (and (inv_main88 var3 var11 var2 var6 var5 var1) (and (and (and (and (and (= var7 (write var3 var1 (O_node_t (node_t (data (getnode_t (read var3 var1))) (prev (getnode_t (read var3 var1))) nullAddr)))) (= var4 var11)) (= var9 var2)) (= var0 var6)) (= var12 var5)) (= var8 var1)))) (inv_main98 (newHeap (alloc var7 (O_node_t var10))) var4 var9 var4 100 (newAddr (alloc var7 (O_node_t var10))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 node_t)) (or (not (and (inv_main93 var2 var8 var1 var5 var4 var0) (and (and (and (and (= var10 (write var2 var5 (O_list_t (list_t (first (getlist_t (read var2 var5))) var0)))) (= var9 var8)) (= var6 var1)) (= var7 var5)) (= var3 var4)))) (inv_main98 (newHeap (alloc var10 (O_node_t var11))) var9 var6 var9 100 (newAddr (alloc var10 (O_node_t var11))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main66 var3 var5 var2 var4 var1 var0)) (inv_main67 (write var3 var4 (O_list_t (list_t (first (getlist_t (read var3 var4))) var0))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main46 var1 var3 var0 var2 var5 var4)) (inv_main47 (write var1 var2 (O_list_t (list_t (first (getlist_t (read var1 var2))) var4))) var3 var0 var2 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main126 var1 var3 var0 var5 var2 var4)) (inv_main127 (write var1 var5 (O_list_t (list_t (first (getlist_t (read var1 var5))) var4))) var3 var0 var5 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main80 var2 var5 var1 var4 var3 var0)) (inv_main91 var2 var5 var1 var4 var3 var0 (last (getlist_t (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main26 var2 var4 var1 var6 var0 var3 var5)) (inv_main27 (write var2 var5 (O_node_t (node_t (data (getnode_t (read var2 var5))) nullAddr (next (getnode_t (read var2 var5)))))) var4 var1 var6 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main166 var1 var4 var0 var2 var3 var5)) (inv_main170 var1 var4 var0 var2 var3 var5 (first (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main293 var1 var5 var0 var6 var4 var2 var3)) (inv_main304 var1 var5 var0 var6 var4 var2 var3 (last (getlist_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main233 var1 var3 var0 var4 var2 var5)) (inv_main234 (write var1 var4 (O_list_t (list_t (first (getlist_t (read var1 var4))) var5))) var3 var0 var4 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 node_t)) (or (not (and (inv_main68 var4 var10 var3 var8 var2 var0) (and (and (and (and (and (= var6 (write var4 var0 (O_node_t (node_t (data (getnode_t (read var4 var0))) (prev (getnode_t (read var4 var0))) nullAddr)))) (= var1 var10)) (= var5 var3)) (= var11 var8)) (= var9 var2)) (= var7 var0)))) (inv_main78 (newHeap (alloc var6 (O_node_t var12))) var1 var5 var1 97 (newAddr (alloc var6 (O_node_t var12))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Int) (var4 Heap) (var5 Heap) (var6 node_t) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main73 var4 var9 var3 var7 var2 var0) (and (and (and (and (= var5 (write var4 var7 (O_list_t (list_t (first (getlist_t (read var4 var7))) var0)))) (= var10 var9)) (= var8 var3)) (= var11 var7)) (= var1 var2)))) (inv_main78 (newHeap (alloc var5 (O_node_t var6))) var10 var8 var10 97 (newAddr (alloc var5 (O_node_t var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main130 var1 var3 var0 var5 var2 var4)) (inv_main132 (write var1 var4 (O_node_t (node_t (data (getnode_t (read var1 var4))) (prev (getnode_t (read var1 var4))) nullAddr))) var3 var0 var5 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main315 var2 var6 var1 var0 var4 var3 var5) (not (= var5 60)))) (inv_main317 var2 var6 var1 var0 var4 var3 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Heap)) (or (not (and (inv_main315 var11 var7 var10 var1 var3 var2 var6) (and (= var6 60) (and (and (and (and (and (and (= var13 var11) (= var5 var7)) (= var4 var10)) (= var12 var1)) (= var0 var3)) (= var9 var2)) (= var8 (data (getnode_t (read var11 (next (getnode_t (read var11 var2))))))))))) (and (or (not (= var8 104)) (inv_main317 var13 var5 var4 var12 var0 var9 1)) (or (not (not (= var8 104))) (inv_main317 var13 var5 var4 var12 var0 var9 0)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main277 var1 var2 var0 var5 var4 var3)) (inv_main279 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) (prev (getnode_t (read var1 var3))) nullAddr))) var2 var0 var5 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main294 var1 var5 var0 var6 var4 var2 var3)) (inv_main299 (write var1 var4 (O_list_t (list_t var3 (last (getlist_t (read var1 var4)))))) var5 var0 var6 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main312 var2 var5 var1 var0 var4 var3)) (inv_main315 var2 var5 var1 var0 var4 var3 (data (getnode_t (read var2 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main99 var1 var4 var0 var5 var2 var3)) (inv_main103 var1 var4 var0 var5 var2 var3 (first (getlist_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main127 var1 var3 var0 var5 var2 var4)) (inv_main128 (write var1 var4 (O_node_t (node_t (data (getnode_t (read var1 var4))) nullAddr (next (getnode_t (read var1 var4)))))) var3 var0 var5 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main342 var3 var5 var2 var1 var4 var6 var0)) (inv_main345 var3 var5 var2 var1 var4 var6 var0 (data (getnode_t (read var3 var0))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main165 var1 var4 var0 var2 var3 var5)) (inv_main166 (write var1 var5 (O_node_t (node_t var3 (prev (getnode_t (read var1 var5))) (next (getnode_t (read var1 var5)))))) var4 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int)) (or (not (and (inv_main10 var1 var2 var0 var4) (or (= var4 60) (= var4 62)))) (inv_main10 var1 var2 var0 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Addr) (var15 Addr)) (or (not (and (inv_main27 var9 var6 var8 var7 var1 var5 var15) (and (not (= var0 0)) (and (and (and (and (and (and (= var13 (write var9 var15 (O_node_t (node_t (data (getnode_t (read var9 var15))) (prev (getnode_t (read var9 var15))) nullAddr)))) (= var14 var6)) (= var12 var8)) (= var2 var7)) (= var10 var1)) (= var11 var5)) (= var3 var15))))) (inv_main10 var13 var14 var12 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Addr)) (or (not (and (inv_main32 var9 var5 var8 var6 var0 var3 var14) (and (not (= var13 0)) (and (and (and (and (and (= var11 (write var9 var0 (O_list_t (list_t (first (getlist_t (read var9 var0))) var14)))) (= var2 var5)) (= var1 var8)) (= var10 var6)) (= var12 var0)) (= var4 var3))))) (inv_main10 var11 var2 var1 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int)) (or (not (and (inv_main4 var1 var4) (and (= var3 (write var1 var4 (O_list_t (list_t (first (getlist_t (read var1 var4))) nullAddr)))) (= var0 var4)))) (inv_main10 var3 var0 var2 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 node_t) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr)) (or (not (and (inv_main235 var3 var8 var2 var11 var7 var12) (and (and (and (and (and (= var6 (write var3 var12 (O_node_t (node_t (data (getnode_t (read var3 var12))) (prev (getnode_t (read var3 var12))) nullAddr)))) (= var10 var8)) (= var1 var2)) (= var9 var11)) (= var0 var7)) (= var4 var12)))) (inv_main245 (newHeap (alloc var6 (O_node_t var5))) var10 var1 var10 121 (newAddr (alloc var6 (O_node_t var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Heap) (var4 Addr) (var5 node_t) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main240 var1 var8 var0 var10 var6 var11) (and (and (and (and (= var3 (write var1 var10 (O_list_t (list_t (first (getlist_t (read var1 var10))) var11)))) (= var4 var8)) (= var7 var0)) (= var9 var10)) (= var2 var6)))) (inv_main245 (newHeap (alloc var3 (O_node_t var5))) var4 var7 var4 121 (newAddr (alloc var3 (O_node_t var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main60 var3 var5 var2 var4 var1 var0)) (inv_main71 var3 var5 var2 var4 var1 var0 (last (getlist_t (read var3 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main274 var1 var2 var0 var5 var4 var3)) (inv_main275 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) nullAddr (next (getnode_t (read var1 var3)))))) var2 var0 var5 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main308 var4 var7 var3 var2) (and (and (and (and (= var8 var4) (= var1 var7)) (= var6 var3)) (= var5 var2)) (= var0 (next (getnode_t (read var4 var2))))))) (inv_main312 var8 var1 var6 var5 var0 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Heap) (var14 Addr) (var15 Addr)) (or (not (and (inv_main311 var12 var9 var11 var1 var3) (and (and (not (= var6 nullAddr)) (and (and (and (and (and (= var13 var12) (= var5 var9)) (= var2 var11)) (= var15 var1)) (= var8 var3)) (= var14 (next (getnode_t (read var12 var1)))))) (and (and (and (and (= var0 (write var13 var15 defObj)) (= var7 var5)) (= var10 var2)) (= var6 var15)) (= var4 var14))))) (inv_main312 var0 var7 var10 var4 var4 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main206 var1 var5 var0 var2 var4 var3)) (inv_main210 var1 var5 var0 var2 var4 var3 (first (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main86 var2 var5 var1 var4 var3 var0)) (inv_main87 (write var2 var4 (O_list_t (list_t (first (getlist_t (read var2 var4))) var0))) var5 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main291 var1 var5 var0 var6 var4 var2 var3)) (inv_main292 (write var1 var3 (O_node_t (node_t var2 (prev (getnode_t (read var1 var3))) (next (getnode_t (read var1 var3)))))) var5 var0 var6 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Int) (var11 Int) (var12 Int) (var13 Heap) (var14 Heap) (var15 Addr) (var16 Heap) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main190 var13 var7 var12 var8 var9 var15 var5) (and (and (not (= var17 0)) (and (= var5 nullAddr) (and (and (and (and (and (and (= var16 var13) (= var0 var7)) (= var10 var12)) (= var3 var8)) (= var11 var9)) (= var20 var15)) (= var4 (last (getlist_t (read var13 var8))))))) (and (and (and (and (and (and (= var14 var16) (= var19 var0)) (= var1 var10)) (= var6 var3)) (= var2 var11)) (= var18 var20)) (or (and (= var4 nullAddr) (= var17 1)) (and (not (= var4 nullAddr)) (= var17 0))))))) (inv_main188 var14 var19 var1 var6 var2 var18)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main258 var1 var4 var0 var3 var2 var6 var5)) (inv_main257 (write var1 var6 (O_node_t (node_t (data (getnode_t (read var1 var6))) var5 (next (getnode_t (read var1 var6)))))) var4 var0 var3 var2 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main98 var1 var4 var0 var5 var2 var3)) (inv_main99 (write var1 var3 (O_node_t (node_t var2 (prev (getnode_t (read var1 var3))) (next (getnode_t (read var1 var3)))))) var4 var0 var5 var2 var3)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 node_t) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main215 var2 var10 var1 var6 var9 var7) (and (and (and (and (and (= var8 (write var2 var7 (O_node_t (node_t (data (getnode_t (read var2 var7))) (prev (getnode_t (read var2 var7))) nullAddr)))) (= var5 var10)) (= var11 var1)) (= var12 var6)) (= var0 var9)) (= var4 var7)))) (inv_main225 (newHeap (alloc var8 (O_node_t var3))) var5 var11 var5 100 (newAddr (alloc var8 (O_node_t var3))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 node_t) (var8 Int) (var9 Addr) (var10 Heap) (var11 Addr)) (or (not (and (inv_main220 var3 var9 var2 var5 var8 var6) (and (and (and (and (= var10 (write var3 var5 (O_list_t (list_t (first (getlist_t (read var3 var5))) var6)))) (= var11 var9)) (= var0 var2)) (= var4 var5)) (= var1 var8)))) (inv_main225 (newHeap (alloc var10 (O_node_t var7))) var11 var0 var11 100 (newAddr (alloc var10 (O_node_t var7))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main213 var1 var5 var0 var2 var4 var3)) (inv_main214 (write var1 var2 (O_list_t (list_t (first (getlist_t (read var1 var2))) var3))) var5 var0 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main321 var2 var5 var1 var0 var4 var3 var6) (= var6 0))) (inv_main323 var2 var5 var1 var0 var4 var3 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int)) (or (not (and (inv_main321 var10 var5 var9 var0 var2 var1 var12) (and (not (= var12 0)) (and (and (and (and (and (and (= var8 var10) (= var3 var5)) (= var4 var9)) (= var7 var0)) (= var11 var2)) (= var6 var1)) (= var13 (data (getnode_t (read var10 (next (getnode_t (read var10 (next (getnode_t (read var10 (next (getnode_t (read var10 (next (getnode_t (read var10 var1)))))))))))))))))))) (and (or (not (= var13 100)) (inv_main323 var8 var3 var4 var7 var11 var6 1)) (or (not (not (= var13 100))) (inv_main323 var8 var3 var4 var7 var11 var6 0)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main185 var1 var3 var0 var4 var5 var2)) (inv_main186 (write var1 var2 (O_node_t (node_t var5 (prev (getnode_t (read var1 var2))) (next (getnode_t (read var1 var2)))))) var3 var0 var4 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main92 var2 var5 var1 var4 var3 var0)) (inv_main93 (write var2 (last (getlist_t (read var2 var4))) (O_node_t (node_t (data (getnode_t (read var2 (last (getlist_t (read var2 var4)))))) (prev (getnode_t (read var2 (last (getlist_t (read var2 var4)))))) var0))) var5 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main267 var1 var2 var0 var5 var4 var3)) (inv_main278 var1 var2 var0 var5 var4 var3 (last (getlist_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 node_t) (var12 Heap)) (or (not (and (inv_main175 var2 var9 var1 var6 var8 var10) (and (and (and (and (and (= var12 (write var2 var10 (O_node_t (node_t (data (getnode_t (read var2 var10))) (prev (getnode_t (read var2 var10))) nullAddr)))) (= var7 var9)) (= var4 var1)) (= var3 var6)) (= var0 var8)) (= var5 var10)))) (inv_main185 (newHeap (alloc var12 (O_node_t var11))) var7 var4 var7 98 (newAddr (alloc var12 (O_node_t var11))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 node_t) (var10 Addr) (var11 Addr)) (or (not (and (inv_main180 var2 var8 var1 var4 var6 var10) (and (and (and (and (= var0 (write var2 var4 (O_list_t (list_t (first (getlist_t (read var2 var4))) var10)))) (= var11 var8)) (= var3 var1)) (= var5 var4)) (= var7 var6)))) (inv_main185 (newHeap (alloc var0 (O_node_t var9))) var11 var3 var11 98 (newAddr (alloc var0 (O_node_t var9))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int) (var18 Addr) (var19 Heap) (var20 Addr)) (or (not (and (inv_main103 var15 var9 var14 var20 var17 var4 var8) (and (and (not (= var7 0)) (and (= var8 nullAddr) (and (and (and (and (and (and (= var19 var15) (= var18 var9)) (= var1 var14)) (= var16 var20)) (= var13 var17)) (= var2 var4)) (= var0 (last (getlist_t (read var15 var20))))))) (and (and (and (and (and (and (= var6 var19) (= var12 var18)) (= var11 var1)) (= var5 var16)) (= var10 var13)) (= var3 var2)) (or (and (= var0 nullAddr) (= var7 1)) (and (not (= var0 nullAddr)) (= var7 0))))))) (inv_main101 var6 var12 var11 var5 var10 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main156 var1 var4 var0 var2 var6 var3 var5)) (inv_main158 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) (prev (getnode_t (read var1 var5))) nullAddr))) var4 var0 var2 var6 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main78 var2 var5 var1 var4 var3 var0)) (inv_main79 (write var2 var0 (O_node_t (node_t var3 (prev (getnode_t (read var2 var0))) (next (getnode_t (read var2 var0)))))) var5 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int)) (or (not (and (inv_main137 var1 var3 var0 var2) (or (= var2 60) (= var2 62)))) (inv_main137 var1 var3 var0 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int) (var14 Int) (var15 Addr)) (or (not (and (inv_main154 var12 var7 var11 var2 var9 var14 var15) (and (not (= var8 0)) (and (and (and (and (and (and (= var4 (write var12 var15 (O_node_t (node_t (data (getnode_t (read var12 var15))) (prev (getnode_t (read var12 var15))) nullAddr)))) (= var10 var7)) (= var0 var11)) (= var6 var2)) (= var1 var9)) (= var5 var14)) (= var3 var15))))) (inv_main137 var4 var10 var0 var13)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Heap) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Int)) (or (not (and (inv_main159 var8 var4 var7 var1 var6 var12 var13) (and (not (= var0 0)) (and (and (and (and (and (= var10 (write var8 var6 (O_list_t (list_t (first (getlist_t (read var8 var6))) var13)))) (= var3 var4)) (= var14 var7)) (= var2 var1)) (= var5 var6)) (= var11 var12))))) (inv_main137 var10 var3 var14 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Int)) (or (not (and (inv_main128 var3 var8 var2 var11 var6 var10) (and (and (and (and (and (= var4 (write var3 var10 (O_node_t (node_t (data (getnode_t (read var3 var10))) (prev (getnode_t (read var3 var10))) nullAddr)))) (= var1 var8)) (= var9 var2)) (= var5 var11)) (= var7 var6)) (= var0 var10)))) (inv_main137 var4 var1 var9 var12)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main133 var2 var8 var1 var11 var6 var10) (and (and (and (and (= var5 (write var2 var11 (O_list_t (list_t (first (getlist_t (read var2 var11))) var10)))) (= var7 var8)) (= var3 var1)) (= var9 var11)) (= var4 var6)))) (inv_main137 var5 var7 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main225 var1 var3 var0 var4 var2 var5)) (inv_main226 (write var1 var5 (O_node_t (node_t var2 (prev (getnode_t (read var1 var5))) (next (getnode_t (read var1 var5)))))) var3 var0 var4 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main345 var3 var6 var2 var1 var5 var7 var0 var4) (not (= var4 60)))) (inv_main347 var3 var6 var2 var1 var5 var7 var0 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Heap) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main345 var12 var7 var11 var1 var4 var8 var0 var3) (and (= var3 60) (and (and (and (and (and (and (and (= var10 var12) (= var9 var7)) (= var6 var11)) (= var5 var1)) (= var14 var4)) (= var15 var8)) (= var2 var0)) (= var13 (data (getnode_t (read var12 (next (getnode_t (read var12 var0))))))))))) (and (or (not (= var13 98)) (inv_main347 var10 var9 var6 var5 var14 var15 var2 1)) (or (not (not (= var13 98))) (inv_main347 var10 var9 var6 var5 var14 var15 var2 0)))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Heap) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Int) (var13 Int) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Int)) (or (not (and (inv_main43 var8 var4 var7 var3 var20 var19 var6) (and (and (not (= var14 0)) (and (= var6 nullAddr) (and (and (and (and (and (and (= var9 var8) (= var1 var4)) (= var12 var7)) (= var17 var3)) (= var2 var20)) (= var15 var19)) (= var16 (last (getlist_t (read var8 var3))))))) (and (and (and (and (and (and (= var0 var9) (= var10 var1)) (= var13 var12)) (= var18 var17)) (= var5 var2)) (= var11 var15)) (or (and (= var16 nullAddr) (= var14 1)) (and (not (= var16 nullAddr)) (= var14 0))))))) (inv_main41 var0 var10 var13 var18 var5 var11)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main198 var1 var4 var0 var5 var6 var2 var3)) (inv_main197 (write var1 var2 (O_node_t (node_t (data (getnode_t (read var1 var2))) var3 (next (getnode_t (read var1 var2)))))) var4 var0 var5 var6 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Int) (var13 Heap) (var14 Addr) (var15 Heap) (var16 Addr) (var17 Addr) (var18 Int) (var19 Addr) (var20 Int)) (or (not (and (inv_main230 var13 var8 var12 var9 var7 var19 var1) (and (and (not (= var4 0)) (and (= var1 nullAddr) (and (and (and (and (and (and (= var10 var13) (= var17 var8)) (= var20 var12)) (= var16 var9)) (= var18 var7)) (= var6 var19)) (= var11 (last (getlist_t (read var13 var9))))))) (and (and (and (and (and (and (= var15 var10) (= var0 var17)) (= var3 var20)) (= var2 var16)) (= var5 var18)) (= var14 var6)) (or (and (= var11 nullAddr) (= var4 1)) (and (not (= var11 nullAddr)) (= var4 0))))))) (inv_main228 var15 var0 var3 var2 var5 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Int) (var19 Heap) (var20 Int) (var21 Heap) (var22 Addr) (var23 Heap)) (or (not (and (inv_main353 var19 var10 var18 var1 var4 var11 var0 var20) (and (not (= var5 0)) (and (and (not (= var20 0)) (and (and (and (and (and (and (and (= var23 var19) (= var22 var10)) (= var7 var18)) (= var12 var1)) (= var17 var4)) (= var8 var11)) (= var16 var0)) (= var3 (data (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 (next (getnode_t (read var19 var0))))))))))))))))))))) (and (and (and (and (and (and (and (= var21 var23) (= var2 var22)) (= var6 var7)) (= var14 var12)) (= var15 var17)) (= var9 var8)) (= var13 var16)) (or (and (= var3 62) (= var5 1)) (and (not (= var3 62)) (= var5 0)))))))) (inv_main361 var21 var2 var6 var14 var15 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Heap) (var18 Int)) (or (not (and (inv_main361 var12 var7 var11 var0 var1 var8) (and (<= 0 (+ (+ 6 (* (- 1) (+ var16 1))) (- 1))) (and (and (and (and (and (and (and (= var15 var12) (= var14 var7)) (= var18 var11)) (= var9 var0)) (= var3 var1)) (= var4 var8)) (= var6 (next (getnode_t (read var12 var0))))) (and (and (and (and (and (= var17 (write var15 var9 defObj)) (= var10 var14)) (= var5 var18)) (= var2 var9)) (= var13 var6)) (= var16 var4)))))) (inv_main361 var17 var10 var5 var13 var13 (+ var16 1))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main31 var2 var4 var1 var6 var0 var3 var5)) (inv_main32 (write var2 (last (getlist_t (read var2 var0))) (O_node_t (node_t (data (getnode_t (read var2 (last (getlist_t (read var2 var0)))))) (prev (getnode_t (read var2 (last (getlist_t (read var2 var0)))))) var5))) var4 var1 var6 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main207 var1 var5 var0 var2 var4 var3)) (inv_main218 var1 var5 var0 var2 var4 var3 (last (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main246 var1 var4 var0 var3 var2 var5)) (inv_main250 var1 var4 var0 var3 var2 var5 (first (getlist_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Heap)) (or (not (and (inv_main296 var15 var7 var14 var10 var20 var18 var19 var22) (and (and (not (= var17 0)) (and (= var22 nullAddr) (and (and (and (and (and (and (and (= var1 var15) (= var16 var7)) (= var0 var14)) (= var5 var10)) (= var21 var20)) (= var8 var18)) (= var4 var19)) (= var13 (last (getlist_t (read var15 var20))))))) (and (and (and (and (and (and (and (= var23 var1) (= var6 var16)) (= var2 var0)) (= var3 var5)) (= var11 var21)) (= var12 var8)) (= var9 var4)) (or (and (= var13 nullAddr) (= var17 1)) (and (not (= var13 nullAddr)) (= var17 0))))))) (inv_main294 var23 var6 var2 var3 var11 var12 var9)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main247 var1 var4 var0 var3 var2 var5)) (inv_main258 var1 var4 var0 var3 var2 var5 (last (getlist_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 node_t) (var4 Addr)) (or (not (and (inv_main137 var1 var4 var0 var2) (and (not (= var2 60)) (not (= var2 62))))) (inv_main144 (newHeap (alloc var1 (O_node_t var3))) var4 var0 var2 var4 var2 (newAddr (alloc var1 (O_node_t var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (= var6 0))) (inv_main311 var2 var5 var1 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Heap) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Addr)) (or (not (and (inv_main323 var14 var8 var13 var0 var3 var2 var18) (and (= var17 0) (and (and (not (= var18 0)) (and (and (and (and (and (and (= var15 var14) (= var11 var8)) (= var16 var13)) (= var12 var0)) (= var5 var3)) (= var10 var2)) (= var7 (data (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 var2))))))))))))))))))))) (and (and (and (and (and (and (= var9 var15) (= var4 var11)) (= var19 var16)) (= var6 var12)) (= var1 var5)) (= var20 var10)) (or (and (= var7 62) (= var17 1)) (and (not (= var7 62)) (= var17 0)))))))) (inv_main311 var9 var4 var19 var6 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main259 var1 var4 var0 var3 var2 var5)) (inv_main260 (write var1 (last (getlist_t (read var1 var3))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var3)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var3)))))) var5))) var4 var0 var3 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main40 var1 var3 var0 var2 var5 var4)) (inv_main51 var1 var3 var0 var2 var5 var4 (last (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Int) (var14 Int) (var15 Addr) (var16 Int) (var17 Int) (var18 Addr)) (or (not (and (inv_main341 var11 var5 var10 var0 var2 var6) (and (and (and (and (and (and (and (= var4 var11) (= var9 var5)) (= var17 var10)) (= var8 var0)) (= var12 var2)) (= var16 var6)) (= var3 (next (getnode_t (read var11 var0))))) (and (and (and (and (and (= var1 (write var4 var8 defObj)) (= var18 var9)) (= var13 var17)) (= var7 var8)) (= var15 var3)) (= var14 var16))))) (inv_main342 var1 var18 var13 var15 var15 var14 var15)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main335 var13 var7 var12 var0 var3 var8) (and (not (<= 0 (+ (+ 6 (* (- 1) (+ var2 1))) (- 1)))) (and (and (and (and (and (and (and (= var4 var13) (= var16 var7)) (= var14 var12)) (= var5 var0)) (= var10 var3)) (= var9 var8)) (= var18 (next (getnode_t (read var13 var0))))) (and (and (and (and (and (= var6 (write var4 var5 defObj)) (= var15 var16)) (= var11 var14)) (= var1 var5)) (= var17 var18)) (= var2 var9)))))) (inv_main342 var6 var15 var11 var17 var17 (+ var2 1) var17)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main303 var1 var5 var0 var6 var4 var2 var3)) (inv_main305 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) (prev (getnode_t (read var1 var3))) nullAddr))) var5 var0 var6 var4 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main253 var1 var4 var0 var3 var2 var5)) (inv_main254 (write var1 var3 (O_list_t (list_t (first (getlist_t (read var1 var3))) var5))) var4 var0 var3 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main59 var3 var5 var2 var4 var1 var0)) (inv_main63 var3 var5 var2 var4 var1 var0 (first (getlist_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (inv_main30 var2 var5 var1 var7 var0 var4 var6 var3)) (inv_main29 (write var2 var6 (O_node_t (node_t (data (getnode_t (read var2 var6))) var3 (next (getnode_t (read var2 var6)))))) var5 var1 var7 var0 var4 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main197 var1 var3 var0 var4 var5 var2)) (inv_main199 (write var1 var2 (O_node_t (node_t (data (getnode_t (read var1 var2))) (prev (getnode_t (read var1 var2))) nullAddr))) var3 var0 var4 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main3 var0 var1)) (inv_main4 (write var0 var1 (O_list_t (list_t nullAddr (last (getlist_t (read var0 var1)))))) var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Int) (var16 Addr) (var17 Heap) (var18 Int) (var19 Addr) (var20 Int) (var21 Int) (var22 Int) (var23 Addr)) (or (not (and (inv_main149 var9 var4 var8 var2 var6 var15 var19 var10) (and (and (not (= var5 0)) (and (= var10 nullAddr) (and (and (and (and (and (and (and (= var13 var9) (= var12 var4)) (= var11 var8)) (= var22 var2)) (= var0 var6)) (= var18 var15)) (= var1 var19)) (= var23 (last (getlist_t (read var9 var6))))))) (and (and (and (and (and (and (and (= var17 var13) (= var16 var12)) (= var20 var11)) (= var21 var22)) (= var7 var0)) (= var3 var18)) (= var14 var1)) (or (and (= var23 nullAddr) (= var5 1)) (and (not (= var23 nullAddr)) (= var5 0))))))) (inv_main147 var17 var16 var20 var21 var7 var3 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Int) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int) (var21 Addr) (var22 Int) (var23 Addr)) (or (not (and (inv_main22 var12 var6 var11 var9 var1 var5 var23 var4) (and (and (not (= var3 0)) (and (= var4 nullAddr) (and (and (and (and (and (and (and (= var10 var12) (= var18 var6)) (= var13 var11)) (= var22 var9)) (= var14 var1)) (= var16 var5)) (= var15 var23)) (= var2 (last (getlist_t (read var12 var1))))))) (and (and (and (and (and (and (and (= var19 var10) (= var0 var18)) (= var8 var13)) (= var20 var22)) (= var17 var14)) (= var7 var16)) (= var21 var15)) (or (and (= var2 nullAddr) (= var3 1)) (and (not (= var2 nullAddr)) (= var3 0))))))) (inv_main20 var19 var0 var8 var20 var17 var7 var21)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main152 var1 var4 var0 var2 var6 var3 var5)) (inv_main153 (write var1 var6 (O_list_t (list_t (first (getlist_t (read var1 var6))) var5))) var4 var0 var2 var6 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main187 var1 var3 var0 var4 var5 var2)) (inv_main198 var1 var3 var0 var4 var5 var2 (last (getlist_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main146 var1 var4 var0 var2 var6 var3 var5)) (inv_main157 var1 var4 var0 var2 var6 var3 var5 (last (getlist_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main227 var1 var3 var0 var4 var2 var5)) (inv_main238 var1 var3 var0 var4 var2 var5 (last (getlist_t (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main351 var3 var6 var2 var1 var4 var7 var0 var5) (= var5 0))) (inv_main353 var3 var6 var2 var1 var4 var7 var0 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Heap) (var15 Int)) (or (not (and (inv_main351 var10 var5 var9 var1 var2 var6 var0 var13) (and (not (= var13 0)) (and (and (and (and (and (and (and (= var14 var10) (= var8 var5)) (= var3 var9)) (= var4 var1)) (= var7 var2)) (= var15 var6)) (= var11 var0)) (= var12 (data (getnode_t (read var10 (next (getnode_t (read var10 (next (getnode_t (read var10 (next (getnode_t (read var10 (next (getnode_t (read var10 var0)))))))))))))))))))) (and (or (not (= var12 121)) (inv_main353 var14 var8 var3 var4 var7 var15 var11 1)) (or (not (not (= var12 121))) (inv_main353 var14 var8 var3 var4 var7 var15 var11 0)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (inv_main278 var1 var2 var0 var6 var5 var3 var4)) (inv_main277 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) var4 (next (getnode_t (read var1 var3)))))) var2 var0 var6 var5 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main149 var1 var5 var0 var3 var7 var4 var6 var2) (not (= var2 nullAddr)))) (inv_main146 var1 var5 var0 var3 var7 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Int) (var7 Heap) (var8 Addr) (var9 Int) (var10 Addr) (var11 Addr) (var12 Heap) (var13 Int) (var14 Int) (var15 Int) (var16 Int) (var17 Addr) (var18 Addr) (var19 Heap) (var20 Int) (var21 Addr) (var22 Addr) (var23 Int)) (or (not (and (inv_main149 var7 var3 var6 var2 var4 var14 var17 var8) (and (and (= var23 0) (and (= var8 nullAddr) (and (and (and (and (and (and (and (= var12 var7) (= var11 var3)) (= var9 var6)) (= var20 var2)) (= var0 var4)) (= var16 var14)) (= var1 var17)) (= var21 (last (getlist_t (read var7 var4))))))) (and (and (and (and (and (and (and (= var19 var12) (= var18 var11)) (= var13 var9)) (= var15 var20)) (= var22 var0)) (= var5 var16)) (= var10 var1)) (or (and (= var21 nullAddr) (= var23 1)) (and (not (= var21 nullAddr)) (= var23 0))))))) (inv_main146 var19 var18 var13 var15 var22 var5 var10)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main299 var1 var5 var0 var6 var4 var2 var3)) (inv_main300 (write var1 var4 (O_list_t (list_t (first (getlist_t (read var1 var4))) var3))) var5 var0 var6 var4 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main266 var1 var2 var0 var5 var4 var3)) (inv_main270 var1 var2 var0 var5 var4 var3 (first (getlist_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap) (var19 Addr) (var20 Addr)) (or (not (and (inv_main170 var12 var7 var11 var3 var4 var19 var6) (and (and (not (= var10 0)) (and (= var6 nullAddr) (and (and (and (and (and (and (= var9 var12) (= var15 var7)) (= var2 var11)) (= var14 var3)) (= var13 var4)) (= var1 var19)) (= var20 (last (getlist_t (read var12 var3))))))) (and (and (and (and (and (and (= var18 var9) (= var16 var15)) (= var0 var2)) (= var8 var14)) (= var5 var13)) (= var17 var1)) (or (and (= var20 nullAddr) (= var10 1)) (and (not (= var20 nullAddr)) (= var10 0))))))) (inv_main168 var18 var16 var0 var8 var5 var17)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main335 var13 var7 var12 var0 var3 var8) (and (<= 0 (+ (+ 6 (* (- 1) (+ var2 1))) (- 1))) (and (and (and (and (and (and (and (= var4 var13) (= var16 var7)) (= var14 var12)) (= var5 var0)) (= var10 var3)) (= var9 var8)) (= var18 (next (getnode_t (read var13 var0))))) (and (and (and (and (and (= var6 (write var4 var5 defObj)) (= var15 var16)) (= var11 var14)) (= var1 var5)) (= var17 var18)) (= var2 var9)))))) (inv_main335 var6 var15 var11 var17 var17 (+ var2 1))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Int) (var14 Heap) (var15 Heap) (var16 Int) (var17 Int) (var18 Int) (var19 Int) (var20 Addr)) (or (not (and (inv_main323 var14 var8 var13 var0 var3 var2 var18) (and (not (= var17 0)) (and (and (not (= var18 0)) (and (and (and (and (and (and (= var15 var14) (= var11 var8)) (= var16 var13)) (= var12 var0)) (= var5 var3)) (= var10 var2)) (= var7 (data (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 (next (getnode_t (read var14 var2))))))))))))))))))))) (and (and (and (and (and (and (= var9 var15) (= var4 var11)) (= var19 var16)) (= var6 var12)) (= var1 var5)) (= var20 var10)) (or (and (= var7 62) (= var17 1)) (and (not (= var7 62)) (= var17 0)))))))) (inv_main335 var9 var4 var19 var6 var1 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap) (var14 Addr) (var15 Int) (var16 Int) (var17 Heap) (var18 Heap) (var19 Int) (var20 Addr)) (or (not (and (inv_main83 var17 var10 var16 var4 var3 var0 var9) (and (and (not (= var7 0)) (and (= var9 nullAddr) (and (and (and (and (and (and (= var13 var17) (= var8 var10)) (= var2 var16)) (= var12 var4)) (= var5 var3)) (= var11 var0)) (= var20 (last (getlist_t (read var17 var4))))))) (and (and (and (and (and (and (= var18 var13) (= var1 var8)) (= var15 var2)) (= var14 var12)) (= var19 var5)) (= var6 var11)) (or (and (= var20 nullAddr) (= var7 1)) (and (not (= var20 nullAddr)) (= var7 0))))))) (inv_main81 var18 var1 var15 var14 var19 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main153 var1 var4 var0 var2 var6 var3 var5)) (inv_main154 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) nullAddr (next (getnode_t (read var1 var5)))))) var4 var0 var2 var6 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main173 var1 var4 var0 var2 var3 var5)) (inv_main174 (write var1 var2 (O_list_t (list_t (first (getlist_t (read var1 var2))) var5))) var4 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main38 var1 var3 var0 var2 var5 var4)) (inv_main39 (write var1 var4 (O_node_t (node_t var5 (prev (getnode_t (read var1 var4))) (next (getnode_t (read var1 var4)))))) var3 var0 var2 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main273 var1 var2 var0 var5 var4 var3)) (inv_main274 (write var1 var5 (O_list_t (list_t (first (getlist_t (read var1 var5))) var3))) var2 var0 var5 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main111 var1 var4 var0 var6 var2 var3 var5)) (inv_main110 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) var5 (next (getnode_t (read var1 var3)))))) var4 var0 var6 var2 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Heap) (var6 Int) (var7 Int) (var8 Addr) (var9 Addr) (var10 node_t) (var11 Addr) (var12 Int) (var13 Heap) (var14 Int) (var15 Addr)) (or (not (and (inv_main154 var13 var8 var12 var3 var9 var14 var15) (and (= var2 0) (and (and (and (and (and (and (= var5 (write var13 var15 (O_node_t (node_t (data (getnode_t (read var13 var15))) (prev (getnode_t (read var13 var15))) nullAddr)))) (= var11 var8)) (= var0 var12)) (= var7 var3)) (= var1 var9)) (= var6 var14)) (= var4 var15))))) (inv_main165 (newHeap (alloc var5 (O_node_t var10))) var11 var0 var11 60 (newAddr (alloc var5 (O_node_t var10))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Heap) (var8 node_t) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Int)) (or (not (and (inv_main159 var7 var3 var6 var0 var5 var12 var13) (and (= var9 0) (and (and (and (and (and (= var10 (write var7 var5 (O_list_t (list_t (first (getlist_t (read var7 var5))) var13)))) (= var2 var3)) (= var14 var6)) (= var1 var0)) (= var4 var5)) (= var11 var12))))) (inv_main165 (newHeap (alloc var10 (O_node_t var8))) var2 var14 var2 60 (newAddr (alloc var10 (O_node_t var8))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main41 var1 var3 var0 var2 var5 var4)) (inv_main46 (write var1 var2 (O_list_t (list_t var4 (last (getlist_t (read var1 var2)))))) var3 var0 var2 var5 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main230 var2 var4 var1 var5 var3 var6 var0) (not (= var0 nullAddr)))) (inv_main227 var2 var4 var1 var5 var3 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Int)) (or (not (and (inv_main230 var11 var6 var10 var7 var5 var19 var0) (and (and (= var1 0) (and (= var0 nullAddr) (and (and (and (and (and (and (= var8 var11) (= var14 var6)) (= var20 var10)) (= var13 var7)) (= var18 var5)) (= var4 var19)) (= var9 (last (getlist_t (read var11 var7))))))) (and (and (and (and (and (and (= var15 var8) (= var2 var14)) (= var17 var20)) (= var3 var13)) (= var16 var18)) (= var12 var4)) (or (and (= var9 nullAddr) (= var1 1)) (and (not (= var9 nullAddr)) (= var1 0))))))) (inv_main227 var15 var2 var17 var3 var16 var12)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main18 var2 var4 var1 var6 var0 var3 var5)) (inv_main22 var2 var4 var1 var6 var0 var3 var5 (first (getlist_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main22 var2 var5 var1 var7 var0 var4 var6 var3) (not (= var3 nullAddr)))) (inv_main19 var2 var5 var1 var7 var0 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Int) (var18 Addr) (var19 Addr) (var20 Addr) (var21 Heap) (var22 Int) (var23 Addr)) (or (not (and (inv_main22 var12 var6 var11 var8 var0 var4 var23 var3) (and (and (= var13 0) (and (= var3 nullAddr) (and (and (and (and (and (and (and (= var9 var12) (= var18 var6)) (= var10 var11)) (= var22 var8)) (= var15 var0)) (= var17 var4)) (= var16 var23)) (= var2 (last (getlist_t (read var12 var0))))))) (and (and (and (and (and (and (and (= var21 var9) (= var20 var18)) (= var1 var10)) (= var5 var22)) (= var19 var15)) (= var7 var17)) (= var14 var16)) (or (and (= var2 nullAddr) (= var13 1)) (and (not (= var2 nullAddr)) (= var13 0))))))) (inv_main19 var21 var20 var1 var5 var19 var7 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Addr) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Addr) (var14 Heap) (var15 Addr) (var16 Int) (var17 Addr) (var18 Int)) (or (not (and (inv_main367 var10 var6 var9 var0 var3 var7) (and (not (= var15 nullAddr)) (and (and (and (and (and (and (and (= var2 var10) (= var13 var6)) (= var16 var9)) (= var4 var0)) (= var1 var3)) (= var5 var7)) (= var8 (next (getnode_t (read var10 var0))))) (and (and (and (and (and (= var14 (write var2 var4 defObj)) (= var17 var13)) (= var12 var16)) (= var11 var4)) (= var15 var8)) (= var18 var5)))))) (inv_main367 var14 var17 var12 var15 var15 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Heap) (var18 Int)) (or (not (and (inv_main361 var12 var7 var11 var0 var1 var8) (and (not (= var14 nullAddr)) (and (not (<= 0 (+ (+ 6 (* (- 1) (+ var16 1))) (- 1)))) (and (and (and (and (and (and (and (= var15 var12) (= var13 var7)) (= var18 var11)) (= var9 var0)) (= var3 var1)) (= var4 var8)) (= var6 (next (getnode_t (read var12 var0))))) (and (and (and (and (and (= var17 (write var15 var9 defObj)) (= var10 var13)) (= var5 var18)) (= var2 var9)) (= var14 var6)) (= var16 var4))))))) (inv_main367 var17 var10 var5 var14 var14 (+ var16 1))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr)) (or (not (inv_main281 var1 var2 var0)) (inv_main308 var1 var2 var0 (first (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main101 var1 var4 var0 var5 var2 var3)) (inv_main106 (write var1 var5 (O_list_t (list_t var3 (last (getlist_t (read var1 var5)))))) var4 var0 var5 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main174 var1 var4 var0 var2 var3 var5)) (inv_main175 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) nullAddr (next (getnode_t (read var1 var5)))))) var4 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main118 var1 var3 var0 var5 var2 var4)) (inv_main119 (write var1 var4 (O_node_t (node_t var2 (prev (getnode_t (read var1 var4))) (next (getnode_t (read var1 var4)))))) var3 var0 var5 var2 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main145 var1 var4 var0 var2 var6 var3 var5)) (inv_main149 var1 var4 var0 var2 var6 var3 var5 (first (getlist_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main188 var1 var3 var0 var4 var5 var2)) (inv_main193 (write var1 var4 (O_list_t (list_t var2 (last (getlist_t (read var1 var4)))))) var3 var0 var4 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Int) (var11 Int) (var12 Int) (var13 Int) (var14 Heap) (var15 Addr) (var16 Int) (var17 Int) (var18 Int) (var19 Addr) (var20 Addr)) (or (not (and (inv_main123 var14 var8 var13 var9 var16 var19 var7) (and (and (not (= var12 0)) (and (= var7 nullAddr) (and (and (and (and (and (and (= var4 var14) (= var3 var8)) (= var11 var13)) (= var2 var9)) (= var10 var16)) (= var6 var19)) (= var1 (last (getlist_t (read var14 var9))))))) (and (and (and (and (and (and (= var0 var4) (= var20 var3)) (= var18 var11)) (= var15 var2)) (= var17 var10)) (= var5 var6)) (or (and (= var1 nullAddr) (= var12 1)) (and (not (= var1 nullAddr)) (= var12 0))))))) (inv_main121 var0 var20 var18 var15 var17 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 node_t)) (or (not (and (inv_main284 var1 var2 var0 var3) (and (not (= var3 60)) (not (= var3 62))))) (inv_main291 (newHeap (alloc var1 (O_node_t var4))) var2 var0 var3 var2 var3 (newAddr (alloc var1 (O_node_t var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main29 var2 var4 var1 var6 var0 var3 var5)) (inv_main31 (write var2 var5 (O_node_t (node_t (data (getnode_t (read var2 var5))) (prev (getnode_t (read var2 var5))) nullAddr))) var4 var1 var6 var0 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 node_t) (var4 Int)) (or (not (and (inv_main10 var1 var2 var0 var4) (and (not (= var4 60)) (not (= var4 62))))) (inv_main17 (newHeap (alloc var1 (O_node_t var3))) var2 var0 var4 var2 var4 (newAddr (alloc var1 (O_node_t var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main100 var1 var4 var0 var5 var2 var3)) (inv_main111 var1 var4 var0 var5 var2 var3 (last (getlist_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main268 var1 var2 var0 var5 var4 var3)) (inv_main273 (write var1 var5 (O_list_t (list_t var3 (last (getlist_t (read var1 var5)))))) var2 var0 var5 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main237 var1 var3 var0 var4 var2 var5)) (inv_main239 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) (prev (getnode_t (read var1 var5))) nullAddr))) var3 var0 var4 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main186 var1 var3 var0 var4 var5 var2)) (inv_main190 var1 var3 var0 var4 var5 var2 (first (getlist_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr) (var10 node_t) (var11 Addr) (var12 Int)) (or (not (and (inv_main195 var2 var6 var1 var7 var8 var4) (and (and (and (and (and (= var5 (write var2 var4 (O_node_t (node_t (data (getnode_t (read var2 var4))) (prev (getnode_t (read var2 var4))) nullAddr)))) (= var3 var6)) (= var12 var1)) (= var11 var7)) (= var0 var8)) (= var9 var4)))) (inv_main205 (newHeap (alloc var5 (O_node_t var10))) var3 var12 var3 111 (newAddr (alloc var5 (O_node_t var10))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Heap) (var6 Addr) (var7 node_t) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Int)) (or (not (and (inv_main200 var2 var9 var1 var10 var11 var4) (and (and (and (and (= var5 (write var2 var10 (O_list_t (list_t (first (getlist_t (read var2 var10))) var4)))) (= var6 var9)) (= var3 var1)) (= var8 var10)) (= var0 var11)))) (inv_main205 (newHeap (alloc var5 (O_node_t var7))) var6 var3 var6 111 (newAddr (alloc var5 (O_node_t var7))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 node_t) (var11 Addr) (var12 Int)) (or (not (and (inv_main108 var2 var9 var1 var11 var3 var7) (and (and (and (and (and (= var8 (write var2 var7 (O_node_t (node_t (data (getnode_t (read var2 var7))) (prev (getnode_t (read var2 var7))) nullAddr)))) (= var4 var9)) (= var12 var1)) (= var5 var11)) (= var0 var3)) (= var6 var7)))) (inv_main118 (newHeap (alloc var8 (O_node_t var10))) var4 var12 var4 62 (newAddr (alloc var8 (O_node_t var10))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 node_t) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Int) (var11 Int)) (or (not (and (inv_main113 var1 var7 var0 var8 var3 var4) (and (and (and (and (= var9 (write var1 var8 (O_list_t (list_t (first (getlist_t (read var1 var8))) var4)))) (= var2 var7)) (= var11 var0)) (= var6 var8)) (= var10 var3)))) (inv_main118 (newHeap (alloc var9 (O_node_t var5))) var2 var11 var2 62 (newAddr (alloc var9 (O_node_t var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main167 var1 var4 var0 var2 var3 var5)) (inv_main178 var1 var4 var0 var2 var3 var5 (last (getlist_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main50 var1 var3 var0 var2 var5 var4)) (inv_main52 (write var1 var4 (O_node_t (node_t (data (getnode_t (read var1 var4))) (prev (getnode_t (read var1 var4))) nullAddr))) var3 var0 var2 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (or (not (and (inv_main296 var1 var6 var0 var7 var4 var2 var3 var5) (not (= var5 nullAddr)))) (inv_main293 var1 var6 var0 var7 var4 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Heap) (var14 Int) (var15 Addr) (var16 Int) (var17 Heap) (var18 Addr) (var19 Int) (var20 Addr) (var21 Addr) (var22 Addr) (var23 Addr)) (or (not (and (inv_main296 var17 var9 var16 var11 var21 var19 var20 var23) (and (and (= var3 0) (and (= var23 nullAddr) (and (and (and (and (and (and (and (= var1 var17) (= var18 var9)) (= var0 var16)) (= var6 var11)) (= var22 var21)) (= var10 var19)) (= var5 var20)) (= var15 (last (getlist_t (read var17 var21))))))) (and (and (and (and (and (and (and (= var13 var1) (= var4 var18)) (= var2 var0)) (= var14 var6)) (= var12 var22)) (= var8 var10)) (= var7 var5)) (or (and (= var15 nullAddr) (= var3 1)) (and (not (= var15 nullAddr)) (= var3 0))))))) (inv_main293 var13 var4 var2 var14 var12 var8 var7)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main248 var1 var4 var0 var3 var2 var5)) (inv_main253 (write var1 var3 (O_list_t (list_t var5 (last (getlist_t (read var1 var3)))))) var4 var0 var3 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main234 var1 var3 var0 var4 var2 var5)) (inv_main235 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) nullAddr (next (getnode_t (read var1 var5)))))) var3 var0 var4 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main58 var3 var5 var2 var4 var1 var0)) (inv_main59 (write var3 var0 (O_node_t (node_t var1 (prev (getnode_t (read var3 var0))) (next (getnode_t (read var3 var0)))))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Heap) (var1 list_t)) (or (not (inv_main2 var0)) (inv_main3 (newHeap (alloc var0 (O_list_t var1))) (newAddr (alloc var0 (O_list_t var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main170 var1 var5 var0 var2 var3 var6 var4) (not (= var4 nullAddr)))) (inv_main167 var1 var5 var0 var2 var3 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Heap) (var13 Addr) (var14 Int) (var15 Addr) (var16 Addr) (var17 Heap) (var18 Addr) (var19 Addr) (var20 Addr)) (or (not (and (inv_main170 var12 var7 var11 var3 var4 var19 var6) (and (and (= var0 0) (and (= var6 nullAddr) (and (and (and (and (and (and (= var10 var12) (= var16 var7)) (= var2 var11)) (= var15 var3)) (= var14 var4)) (= var1 var19)) (= var20 (last (getlist_t (read var12 var3))))))) (and (and (and (and (and (and (= var17 var10) (= var13 var16)) (= var9 var2)) (= var5 var15)) (= var8 var14)) (= var18 var1)) (or (and (= var20 nullAddr) (= var0 1)) (and (not (= var20 nullAddr)) (= var0 0))))))) (inv_main167 var17 var13 var9 var5 var8 var18)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Int) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Int)) (or (not (and (inv_main301 var9 var6 var8 var7 var12 var10 var11) (and (= var14 0) (and (and (and (and (and (and (= var0 (write var9 var11 (O_node_t (node_t (data (getnode_t (read var9 var11))) (prev (getnode_t (read var9 var11))) nullAddr)))) (= var13 var6)) (= var5 var8)) (= var1 var7)) (= var4 var12)) (= var2 var10)) (= var3 var11))))) (inv_main281 var0 var13 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Heap) (var9 Addr) (var10 Int) (var11 Int) (var12 Addr) (var13 Addr)) (or (not (and (inv_main306 var8 var5 var7 var6 var13 var11 var12) (and (= var2 0) (and (and (and (and (and (= var0 (write var8 var13 (O_list_t (list_t (first (getlist_t (read var8 var13))) var12)))) (= var3 var5)) (= var1 var7)) (= var10 var6)) (= var9 var13)) (= var4 var11))))) (inv_main281 var0 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main17 var2 var4 var1 var6 var0 var3 var5)) (inv_main18 (write var2 var5 (O_node_t (node_t var3 (prev (getnode_t (read var2 var5))) (next (getnode_t (read var2 var5)))))) var4 var1 var6 var0 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main347 var3 var6 var2 var1 var4 var7 var0 var5) (= var5 0))) (inv_main349 var3 var6 var2 var1 var4 var7 var0 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Addr) (var10 Int) (var11 Int) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main347 var12 var9 var11 var2 var4 var10 var1 var7) (and (not (= var7 0)) (and (and (and (and (and (and (and (= var3 var12) (= var14 var9)) (= var0 var11)) (= var15 var2)) (= var13 var4)) (= var5 var10)) (= var6 var1)) (= var8 (data (getnode_t (read var12 (next (getnode_t (read var12 (next (getnode_t (read var12 var1)))))))))))))) (and (or (not (= var8 111)) (inv_main349 var3 var14 var0 var15 var13 var5 var6 1)) (or (not (not (= var8 111))) (inv_main349 var3 var14 var0 var15 var13 var5 var6 0)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main177 var1 var4 var0 var2 var3 var5)) (inv_main179 (write var1 var5 (O_node_t (node_t (data (getnode_t (read var1 var5))) (prev (getnode_t (read var1 var5))) nullAddr))) var4 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main194 var1 var3 var0 var4 var5 var2)) (inv_main195 (write var1 var2 (O_node_t (node_t (data (getnode_t (read var1 var2))) nullAddr (next (getnode_t (read var1 var2)))))) var3 var0 var4 var5 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main300 var1 var5 var0 var6 var4 var2 var3)) (inv_main301 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) nullAddr (next (getnode_t (read var1 var3)))))) var5 var0 var6 var4 var2 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main52 var1 var3 var0 var2 var5 var4)) (inv_main53 (write var1 (last (getlist_t (read var1 var2))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var2)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var2)))))) var4))) var3 var0 var2 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main208 var1 var5 var0 var2 var4 var3)) (inv_main213 (write var1 var2 (O_list_t (list_t var3 (last (getlist_t (read var1 var2)))))) var5 var0 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main214 var1 var5 var0 var2 var4 var3)) (inv_main215 (write var1 var3 (O_node_t (node_t (data (getnode_t (read var1 var3))) nullAddr (next (getnode_t (read var1 var3)))))) var5 var0 var2 var4 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main319 var3 var6 var2 var1 var5 var4 var0) (= var0 0))) (inv_main321 var3 var6 var2 var1 var5 var4 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Int) (var10 Int) (var11 Heap) (var12 Addr) (var13 Addr)) (or (not (and (inv_main319 var11 var8 var10 var1 var3 var2 var0) (and (not (= var0 0)) (and (and (and (and (and (and (= var7 var11) (= var5 var8)) (= var9 var10)) (= var13 var1)) (= var12 var3)) (= var6 var2)) (= var4 (data (getnode_t (read var11 (next (getnode_t (read var11 (next (getnode_t (read var11 (next (getnode_t (read var11 var2))))))))))))))))) (and (or (not (= var4 97)) (inv_main321 var7 var5 var9 var13 var12 var6 1)) (or (not (not (= var4 97))) (inv_main321 var7 var5 var9 var13 var12 var6 0)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main199 var1 var3 var0 var4 var5 var2)) (inv_main200 (write var1 (last (getlist_t (read var1 var4))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var4)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var4)))))) var2))) var3 var0 var4 var5 var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main120 var1 var3 var0 var5 var2 var4)) (inv_main131 var1 var3 var0 var5 var2 var4 (last (getlist_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main119 var1 var3 var0 var5 var2 var4)) (inv_main123 var1 var3 var0 var5 var2 var4 (first (getlist_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main47 var1 var3 var0 var2 var5 var4)) (inv_main48 (write var1 var4 (O_node_t (node_t (data (getnode_t (read var1 var4))) nullAddr (next (getnode_t (read var1 var4)))))) var3 var0 var2 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main238 var1 var4 var0 var5 var3 var6 var2)) (inv_main237 (write var1 var6 (O_node_t (node_t (data (getnode_t (read var1 var6))) var2 (next (getnode_t (read var1 var6)))))) var4 var0 var5 var3 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (inv_main147 var1 var4 var0 var2 var6 var3 var5)) (inv_main152 (write var1 var6 (O_list_t (list_t var5 (last (getlist_t (read var1 var6)))))) var4 var0 var2 var6 var3 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main228 var1 var3 var0 var4 var2 var5)) (inv_main233 (write var1 var4 (O_list_t (list_t var5 (last (getlist_t (read var1 var4)))))) var3 var0 var4 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (inv_main305 var1 var5 var0 var6 var4 var2 var3)) (inv_main306 (write var1 (last (getlist_t (read var1 var4))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var4)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var4)))))) var3))) var5 var0 var6 var4 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main87 var2 var5 var1 var4 var3 var0)) (inv_main88 (write var2 var0 (O_node_t (node_t (data (getnode_t (read var2 var0))) nullAddr (next (getnode_t (read var2 var0)))))) var5 var1 var4 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main279 var1 var2 var0 var5 var4 var3)) (inv_main280 (write var1 (last (getlist_t (read var1 var5))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var5)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var5)))))) var3))) var2 var0 var5 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (inv_main157 var2 var5 var1 var3 var7 var4 var6 var0)) (inv_main156 (write var2 var6 (O_node_t (node_t (data (getnode_t (read var2 var6))) var0 (next (getnode_t (read var2 var6)))))) var5 var1 var3 var7 var4 var6)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main179 var1 var4 var0 var2 var3 var5)) (inv_main180 (write var1 (last (getlist_t (read var1 var2))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var2)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var2)))))) var5))) var4 var0 var2 var3 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int)) (or (not (and (inv_main284 var2 var3 var1 var4) (or (= var4 60) (= var4 62)))) (inv_main284 var2 var3 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main301 var10 var7 var9 var8 var14 var12 var13) (and (not (= var11 0)) (and (and (and (and (and (and (= var0 (write var10 var13 (O_node_t (node_t (data (getnode_t (read var10 var13))) (prev (getnode_t (read var10 var13))) nullAddr)))) (= var15 var7)) (= var6 var9)) (= var2 var8)) (= var5 var14)) (= var3 var12)) (= var4 var13))))) (inv_main284 var0 var15 var6 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr) (var7 Int) (var8 Int) (var9 Heap) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Addr)) (or (not (and (inv_main306 var9 var6 var8 var7 var14 var12 var13) (and (not (= var0 0)) (and (and (and (and (and (= var1 (write var9 var14 (O_list_t (list_t (first (getlist_t (read var9 var14))) var13)))) (= var3 var6)) (= var2 var8)) (= var11 var7)) (= var10 var14)) (= var5 var12))))) (inv_main284 var1 var3 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main275 var2 var9 var1 var12 var11 var10) (and (and (and (and (and (= var6 (write var2 var10 (O_node_t (node_t (data (getnode_t (read var2 var10))) (prev (getnode_t (read var2 var10))) nullAddr)))) (= var5 var9)) (= var8 var1)) (= var4 var12)) (= var7 var11)) (= var0 var10)))) (inv_main284 var6 var5 var8 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Int) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr)) (or (not (and (inv_main280 var4 var6 var3 var11 var9 var7) (and (and (and (and (= var10 (write var4 var11 (O_list_t (list_t (first (getlist_t (read var4 var11))) var7)))) (= var1 var6)) (= var5 var3)) (= var0 var11)) (= var8 var9)))) (inv_main284 var10 var1 var5 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main83 var2 var6 var1 var4 var3 var0 var5) (not (= var5 nullAddr)))) (inv_main80 var2 var6 var1 var4 var3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Heap) (var16 Int) (var17 Int) (var18 Heap) (var19 Int) (var20 Addr)) (or (not (and (inv_main83 var18 var11 var17 var5 var4 var0 var10) (and (and (= var19 0) (and (= var10 nullAddr) (and (and (and (and (and (and (= var15 var18) (= var8 var11)) (= var3 var17)) (= var13 var5)) (= var6 var4)) (= var12 var0)) (= var20 (last (getlist_t (read var18 var5))))))) (and (and (and (and (and (and (= var9 var15) (= var14 var8)) (= var7 var3)) (= var1 var13)) (= var16 var6)) (= var2 var12)) (or (and (= var20 nullAddr) (= var19 1)) (and (not (= var20 nullAddr)) (= var19 0))))))) (inv_main80 var9 var14 var7 var1 var16 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (inv_main79 var2 var5 var1 var4 var3 var0)) (inv_main83 var2 var5 var1 var4 var3 var0 (first (getlist_t (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (or (not (and (inv_main190 var1 var4 var0 var5 var6 var2 var3) (not (= var3 nullAddr)))) (inv_main187 var1 var4 var0 var5 var6 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Int) (var10 Addr) (var11 Int) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 Int) (var18 Heap) (var19 Addr) (var20 Addr)) (or (not (and (inv_main190 var15 var8 var14 var10 var11 var16 var6) (and (and (= var5 0) (and (= var6 nullAddr) (and (and (and (and (and (and (= var18 var15) (= var2 var8)) (= var12 var14)) (= var3 var10)) (= var13 var11)) (= var19 var16)) (= var4 (last (getlist_t (read var15 var10))))))) (and (and (and (and (and (and (= var0 var18) (= var20 var2)) (= var9 var12)) (= var7 var3)) (= var17 var13)) (= var1 var19)) (or (and (= var4 nullAddr) (= var5 1)) (and (not (= var4 nullAddr)) (= var5 0))))))) (inv_main187 var0 var20 var9 var7 var17 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main239 var1 var3 var0 var4 var2 var5)) (inv_main240 (write var1 (last (getlist_t (read var1 var4))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var4)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var4)))))) var5))) var3 var0 var4 var2 var5)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main61 var3 var5 var2 var4 var1 var0)) (inv_main66 (write var3 var4 (O_list_t (list_t var0 (last (getlist_t (read var3 var4)))))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (or (not (inv_main219 var1 var5 var0 var2 var4 var3)) (inv_main220 (write var1 (last (getlist_t (read var1 var2))) (O_node_t (node_t (data (getnode_t (read var1 (last (getlist_t (read var1 var2)))))) (prev (getnode_t (read var1 (last (getlist_t (read var1 var2)))))) var3))) var5 var0 var2 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (or (not (inv_main70 var3 var5 var2 var4 var1 var0)) (inv_main72 (write var3 var0 (O_node_t (node_t (data (getnode_t (read var3 var0))) (prev (getnode_t (read var3 var0))) nullAddr))) var5 var2 var4 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 node_t) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Int) (var12 Addr)) (or (not (and (inv_main48 var1 var8 var0 var6 var11 var10) (and (and (and (and (and (= var9 (write var1 var10 (O_node_t (node_t (data (getnode_t (read var1 var10))) (prev (getnode_t (read var1 var10))) nullAddr)))) (= var7 var8)) (= var2 var0)) (= var12 var6)) (= var3 var11)) (= var5 var10)))) (inv_main58 (newHeap (alloc var9 (O_node_t var4))) var7 var2 var7 104 (newAddr (alloc var9 (O_node_t var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 node_t) (var10 Addr) (var11 Int)) (or (not (and (inv_main53 var2 var7 var1 var5 var11 var10) (and (and (and (and (= var0 (write var2 var5 (O_list_t (list_t (first (getlist_t (read var2 var5))) var10)))) (= var4 var7)) (= var6 var1)) (= var3 var5)) (= var8 var11)))) (inv_main58 (newHeap (alloc var0 (O_node_t var9))) var4 var6 var4 104 (newAddr (alloc var0 (O_node_t var9))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main245 var1 var4 var0 var3 var2 var5)) (inv_main246 (write var1 var5 (O_node_t (node_t var2 (prev (getnode_t (read var1 var5))) (next (getnode_t (read var1 var5)))))) var4 var0 var3 var2 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (inv_main226 var1 var3 var0 var4 var2 var5)) (inv_main230 var1 var3 var0 var4 var2 var5 (first (getlist_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main123 var1 var4 var0 var6 var3 var5 var2) (not (= var2 nullAddr)))) (inv_main120 var1 var4 var0 var6 var3 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Int) (var12 Int) (var13 Addr) (var14 Int) (var15 Heap) (var16 Int) (var17 Int) (var18 Addr) (var19 Addr) (var20 Heap)) (or (not (and (inv_main123 var15 var7 var14 var9 var17 var19 var5) (and (and (= var16 0) (and (= var5 nullAddr) (and (and (and (and (and (and (= var3 var15) (= var2 var7)) (= var12 var14)) (= var1 var9)) (= var11 var17)) (= var4 var19)) (= var0 (last (getlist_t (read var15 var9))))))) (and (and (and (and (and (and (= var20 var3) (= var10 var2)) (= var8 var12)) (= var13 var1)) (= var6 var11)) (= var18 var4)) (or (and (= var0 nullAddr) (= var16 1)) (and (not (= var0 nullAddr)) (= var16 0))))))) (inv_main120 var20 var10 var8 var13 var6 var18)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (or (not (and (inv_main349 var3 var6 var2 var1 var4 var7 var0 var5) (= var5 0))) (inv_main351 var3 var6 var2 var1 var4 var7 var0 0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Int) (var12 Heap) (var13 Int) (var14 Addr) (var15 Int)) (or (not (and (inv_main349 var12 var7 var11 var1 var2 var8 var0 var6) (and (not (= var6 0)) (and (and (and (and (and (and (and (= var3 var12) (= var5 var7)) (= var13 var11)) (= var10 var1)) (= var14 var2)) (= var15 var8)) (= var4 var0)) (= var9 (data (getnode_t (read var12 (next (getnode_t (read var12 (next (getnode_t (read var12 (next (getnode_t (read var12 var0))))))))))))))))) (and (or (not (= var9 100)) (inv_main351 var3 var5 var13 var10 var14 var15 var4 1)) (or (not (not (= var9 100))) (inv_main351 var3 var5 var13 var10 var14 var15 var4 0)))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main3 var0 var1) (not (is-O_list_t (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main4 var0 var1) (not (is-O_list_t (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main17 var2 var4 var1 var6 var0 var3 var5) (not (is-O_node_t (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main18 var2 var4 var1 var6 var0 var3 var5) (not (is-O_list_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main22 var2 var5 var1 var7 var0 var4 var6 var3) (and (= var3 nullAddr) (not (is-O_list_t (read var2 var0)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main20 var2 var4 var1 var6 var0 var3 var5) (not (is-O_list_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main25 var2 var4 var1 var6 var0 var3 var5) (not (is-O_list_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main26 var2 var4 var1 var6 var0 var3 var5) (not (is-O_node_t (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main27 var2 var4 var1 var6 var0 var3 var5) (not (is-O_node_t (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main19 var2 var4 var1 var6 var0 var3 var5) (not (is-O_list_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main30 var2 var5 var1 var7 var0 var4 var6 var3) (not (is-O_node_t (read var2 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main29 var2 var4 var1 var6 var0 var3 var5) (not (is-O_node_t (read var2 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main31 var2 var4 var1 var6 var0 var3 var5) (not (is-O_list_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main31 var2 var4 var1 var6 var0 var3 var5) (not (is-O_node_t (read var2 (last (getlist_t (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main32 var2 var4 var1 var6 var0 var3 var5) (not (is-O_list_t (read var2 var0))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main38 var1 var3 var0 var2 var5 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main39 var1 var3 var0 var2 var5 var4) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main43 var1 var3 var0 var2 var6 var5 var4) (and (= var4 nullAddr) (not (is-O_list_t (read var1 var2)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main41 var1 var3 var0 var2 var5 var4) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main46 var1 var3 var0 var2 var5 var4) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main47 var1 var3 var0 var2 var5 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main48 var1 var3 var0 var2 var5 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main40 var1 var3 var0 var2 var5 var4) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main51 var1 var4 var0 var3 var6 var5 var2) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main50 var1 var3 var0 var2 var5 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main52 var1 var3 var0 var2 var5 var4) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main52 var1 var3 var0 var2 var5 var4) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var2)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main53 var1 var3 var0 var2 var5 var4) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main58 var3 var5 var2 var4 var1 var0) (not (is-O_node_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main59 var3 var5 var2 var4 var1 var0) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main63 var3 var6 var2 var4 var1 var0 var5) (and (= var5 nullAddr) (not (is-O_list_t (read var3 var4)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main61 var3 var5 var2 var4 var1 var0) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main66 var3 var5 var2 var4 var1 var0) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main67 var3 var5 var2 var4 var1 var0) (not (is-O_node_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main68 var3 var5 var2 var4 var1 var0) (not (is-O_node_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main60 var3 var5 var2 var4 var1 var0) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main71 var3 var5 var2 var4 var1 var0 var6) (not (is-O_node_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main70 var3 var5 var2 var4 var1 var0) (not (is-O_node_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main72 var3 var5 var2 var4 var1 var0) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main72 var3 var5 var2 var4 var1 var0) (not (is-O_node_t (read var3 (last (getlist_t (read var3 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr)) (not (and (inv_main73 var3 var5 var2 var4 var1 var0) (not (is-O_list_t (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main78 var2 var5 var1 var4 var3 var0) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main79 var2 var5 var1 var4 var3 var0) (not (is-O_list_t (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main83 var2 var6 var1 var4 var3 var0 var5) (and (= var5 nullAddr) (not (is-O_list_t (read var2 var4)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main81 var2 var5 var1 var4 var3 var0) (not (is-O_list_t (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main86 var2 var5 var1 var4 var3 var0) (not (is-O_list_t (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main87 var2 var5 var1 var4 var3 var0) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main88 var2 var5 var1 var4 var3 var0) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main80 var2 var5 var1 var4 var3 var0) (not (is-O_list_t (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main91 var2 var6 var1 var4 var3 var0 var5) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main90 var2 var5 var1 var4 var3 var0) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main92 var2 var5 var1 var4 var3 var0) (not (is-O_list_t (read var2 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main92 var2 var5 var1 var4 var3 var0) (not (is-O_node_t (read var2 (last (getlist_t (read var2 var4)))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main93 var2 var5 var1 var4 var3 var0) (not (is-O_list_t (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main98 var1 var4 var0 var5 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main99 var1 var4 var0 var5 var2 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main103 var1 var5 var0 var6 var2 var3 var4) (and (= var4 nullAddr) (not (is-O_list_t (read var1 var6)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main101 var1 var4 var0 var5 var2 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main106 var1 var4 var0 var5 var2 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main107 var1 var4 var0 var5 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main108 var1 var4 var0 var5 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main100 var1 var4 var0 var5 var2 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main111 var1 var4 var0 var6 var2 var3 var5) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main110 var1 var4 var0 var5 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main112 var1 var4 var0 var5 var2 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main112 var1 var4 var0 var5 var2 var3) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var5)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main113 var1 var4 var0 var5 var2 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main118 var1 var3 var0 var5 var2 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main119 var1 var3 var0 var5 var2 var4) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main123 var1 var4 var0 var6 var3 var5 var2) (and (= var2 nullAddr) (not (is-O_list_t (read var1 var6)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main121 var1 var3 var0 var5 var2 var4) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main126 var1 var3 var0 var5 var2 var4) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main127 var1 var3 var0 var5 var2 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main128 var1 var3 var0 var5 var2 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main120 var1 var3 var0 var5 var2 var4) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main131 var1 var4 var0 var6 var2 var5 var3) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main130 var1 var3 var0 var5 var2 var4) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main132 var1 var3 var0 var5 var2 var4) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main132 var1 var3 var0 var5 var2 var4) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var5)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main133 var1 var3 var0 var5 var2 var4) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main144 var1 var4 var0 var2 var6 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main145 var1 var4 var0 var2 var6 var3 var5) (not (is-O_list_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main149 var1 var5 var0 var3 var7 var4 var6 var2) (and (= var2 nullAddr) (not (is-O_list_t (read var1 var7)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main147 var1 var4 var0 var2 var6 var3 var5) (not (is-O_list_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main152 var1 var4 var0 var2 var6 var3 var5) (not (is-O_list_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main153 var1 var4 var0 var2 var6 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main154 var1 var4 var0 var2 var6 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main146 var1 var4 var0 var2 var6 var3 var5) (not (is-O_list_t (read var1 var6))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr)) (not (and (inv_main157 var2 var5 var1 var3 var7 var4 var6 var0) (not (is-O_node_t (read var2 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main156 var1 var4 var0 var2 var6 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main158 var1 var4 var0 var2 var6 var3 var5) (not (is-O_list_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main158 var1 var4 var0 var2 var6 var3 var5) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var6)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main159 var1 var4 var0 var2 var6 var3 var5) (not (is-O_list_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main165 var1 var4 var0 var2 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main166 var1 var4 var0 var2 var3 var5) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main170 var1 var5 var0 var2 var3 var6 var4) (and (= var4 nullAddr) (not (is-O_list_t (read var1 var2)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main168 var1 var4 var0 var2 var3 var5) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main173 var1 var4 var0 var2 var3 var5) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main174 var1 var4 var0 var2 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main175 var1 var4 var0 var2 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main167 var1 var4 var0 var2 var3 var5) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr)) (not (and (inv_main178 var1 var5 var0 var2 var4 var6 var3) (not (is-O_node_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main177 var1 var4 var0 var2 var3 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main179 var1 var4 var0 var2 var3 var5) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main179 var1 var4 var0 var2 var3 var5) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var2)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr)) (not (and (inv_main180 var1 var4 var0 var2 var3 var5) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main185 var1 var3 var0 var4 var5 var2) (not (is-O_node_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main186 var1 var3 var0 var4 var5 var2) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main190 var1 var4 var0 var5 var6 var2 var3) (and (= var3 nullAddr) (not (is-O_list_t (read var1 var5)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main188 var1 var3 var0 var4 var5 var2) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main193 var1 var3 var0 var4 var5 var2) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main194 var1 var3 var0 var4 var5 var2) (not (is-O_node_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main195 var1 var3 var0 var4 var5 var2) (not (is-O_node_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main187 var1 var3 var0 var4 var5 var2) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main198 var1 var4 var0 var5 var6 var2 var3) (not (is-O_node_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main197 var1 var3 var0 var4 var5 var2) (not (is-O_node_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main199 var1 var3 var0 var4 var5 var2) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main199 var1 var3 var0 var4 var5 var2) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var4)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main200 var1 var3 var0 var4 var5 var2) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main205 var1 var5 var0 var2 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main206 var1 var5 var0 var2 var4 var3) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main210 var1 var6 var0 var3 var5 var4 var2) (and (= var2 nullAddr) (not (is-O_list_t (read var1 var3)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main208 var1 var5 var0 var2 var4 var3) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main213 var1 var5 var0 var2 var4 var3) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main214 var1 var5 var0 var2 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main215 var1 var5 var0 var2 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main207 var1 var5 var0 var2 var4 var3) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main218 var1 var6 var0 var3 var5 var4 var2) (not (is-O_node_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main217 var1 var5 var0 var2 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main219 var1 var5 var0 var2 var4 var3) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main219 var1 var5 var0 var2 var4 var3) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var2)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main220 var1 var5 var0 var2 var4 var3) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main225 var1 var3 var0 var4 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main226 var1 var3 var0 var4 var2 var5) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main230 var2 var4 var1 var5 var3 var6 var0) (and (= var0 nullAddr) (not (is-O_list_t (read var2 var5)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main228 var1 var3 var0 var4 var2 var5) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main233 var1 var3 var0 var4 var2 var5) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main234 var1 var3 var0 var4 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main235 var1 var3 var0 var4 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main227 var1 var3 var0 var4 var2 var5) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main238 var1 var4 var0 var5 var3 var6 var2) (not (is-O_node_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main237 var1 var3 var0 var4 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main239 var1 var3 var0 var4 var2 var5) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main239 var1 var3 var0 var4 var2 var5) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var4)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main240 var1 var3 var0 var4 var2 var5) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main245 var1 var4 var0 var3 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main246 var1 var4 var0 var3 var2 var5) (not (is-O_list_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main250 var1 var5 var0 var3 var2 var6 var4) (and (= var4 nullAddr) (not (is-O_list_t (read var1 var3)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main248 var1 var4 var0 var3 var2 var5) (not (is-O_list_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main253 var1 var4 var0 var3 var2 var5) (not (is-O_list_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main254 var1 var4 var0 var3 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main255 var1 var4 var0 var3 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main247 var1 var4 var0 var3 var2 var5) (not (is-O_list_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main258 var1 var4 var0 var3 var2 var6 var5) (not (is-O_node_t (read var1 var6))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main257 var1 var4 var0 var3 var2 var5) (not (is-O_node_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main259 var1 var4 var0 var3 var2 var5) (not (is-O_list_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main259 var1 var4 var0 var3 var2 var5) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var3)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main260 var1 var4 var0 var3 var2 var5) (not (is-O_list_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main265 var1 var2 var0 var5 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main266 var1 var2 var0 var5 var4 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main270 var2 var3 var1 var6 var5 var4 var0) (and (= var0 nullAddr) (not (is-O_list_t (read var2 var6)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main268 var1 var2 var0 var5 var4 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main273 var1 var2 var0 var5 var4 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main274 var1 var2 var0 var5 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main275 var1 var2 var0 var5 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main267 var1 var2 var0 var5 var4 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main278 var1 var2 var0 var6 var5 var3 var4) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main277 var1 var2 var0 var5 var4 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main279 var1 var2 var0 var5 var4 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main279 var1 var2 var0 var5 var4 var3) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var5)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main280 var1 var2 var0 var5 var4 var3) (not (is-O_list_t (read var1 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main291 var1 var5 var0 var6 var4 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main292 var1 var5 var0 var6 var4 var2 var3) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main296 var1 var6 var0 var7 var4 var2 var3 var5) (and (= var5 nullAddr) (not (is-O_list_t (read var1 var4)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main294 var1 var5 var0 var6 var4 var2 var3) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main299 var1 var5 var0 var6 var4 var2 var3) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main300 var1 var5 var0 var6 var4 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main301 var1 var5 var0 var6 var4 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main293 var1 var5 var0 var6 var4 var2 var3) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main304 var1 var6 var0 var7 var4 var2 var3 var5) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main303 var1 var5 var0 var6 var4 var2 var3) (not (is-O_node_t (read var1 var3))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main305 var1 var5 var0 var6 var4 var2 var3) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main305 var1 var5 var0 var6 var4 var2 var3) (not (is-O_node_t (read var1 (last (getlist_t (read var1 var4)))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main306 var1 var5 var0 var6 var4 var2 var3) (not (is-O_list_t (read var1 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr)) (not (and (inv_main281 var1 var2 var0) (not (is-O_list_t (read var1 var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr)) (not (and (inv_main308 var2 var3 var1 var0) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main312 var2 var5 var1 var0 var4 var3) (not (is-O_node_t (read var2 var3))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main315 var2 var6 var1 var0 var4 var3 var5) (and (= var5 60) (not (is-O_node_t (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr)) (not (and (inv_main315 var2 var6 var1 var0 var4 var3 var5) (and (= var5 60) (not (is-O_node_t (read var2 (next (getnode_t (read var2 var3))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main317 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main317 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 var3))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main317 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3)))))))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main319 var3 var6 var2 var1 var5 var4 var0) (and (not (= var0 0)) (not (is-O_node_t (read var3 var4)))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main319 var3 var6 var2 var1 var5 var4 var0) (and (not (= var0 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 var4))))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main319 var3 var6 var2 var1 var5 var4 var0) (and (not (= var0 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var4)))))))))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (not (and (inv_main319 var3 var6 var2 var1 var5 var4 var0) (and (not (= var0 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var4))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main321 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main321 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 var3))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main321 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3)))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main321 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main321 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3)))))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 var3)))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 var3))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3)))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3)))))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main323 var2 var5 var1 var0 var4 var3 var6) (and (not (= var6 0)) (not (is-O_node_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 (next (getnode_t (read var2 var3))))))))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (inv_main311 var2 var4 var1 var0 var3) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main335 var2 var4 var1 var0 var3 var5) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main342 var3 var5 var2 var1 var4 var6 var0) (not (is-O_node_t (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main345 var3 var6 var2 var1 var5 var7 var0 var4) (and (= var4 60) (not (is-O_node_t (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Int)) (not (and (inv_main345 var3 var6 var2 var1 var5 var7 var0 var4) (and (= var4 60) (not (is-O_node_t (read var3 (next (getnode_t (read var3 var0))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main347 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main347 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 var0))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main347 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0)))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main349 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main349 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 var0))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main349 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0)))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main349 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main351 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main351 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 var0))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main351 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0)))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main351 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main351 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0)))))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 var0)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 var0))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0)))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0)))))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Int)) (not (and (inv_main353 var3 var6 var2 var1 var4 var7 var0 var5) (and (not (= var5 0)) (not (is-O_node_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 (next (getnode_t (read var3 var0))))))))))))))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main341 var2 var4 var1 var0 var3 var5) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main361 var2 var4 var1 var0 var3 var5) (not (is-O_node_t (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main367 var2 var4 var1 var0 var3 var5) (not (is-O_node_t (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/test-0019_1-1.i.smt2 b/heap-theory-benchmarks/heap/test-0019_1-1.i.smt2 new file mode 100644 index 00000000..f7e501fb --- /dev/null +++ b/heap-theory-benchmarks/heap/test-0019_1-1.i.smt2 @@ -0,0 +1,38 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TData 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TData (getTData TData)) + (defObj) + ) + ( + (TData (lo Addr) (hi Addr)) + ) +)) +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main10 (Heap TData Int) Bool) +(declare-fun inv_main12 (Heap TData Int) Bool) +(declare-fun inv_main18 (Heap TData Int Addr Addr) Bool) +(declare-fun inv_main22 (Heap TData Int Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap TData) Bool) +(assert (forall ((var0 Heap) (var1 TData)) (or (not (= var0 emptyHeap)) (inv_main3 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 TData) (var10 TData) (var11 TData) (var12 Addr) (var13 Addr)) (or (not (and (inv_main22 var0 var10 var5 var12 var13 var4) (and (and (and (and (and (and (= var7 var0) (= var11 (TData nullAddr (hi var10)))) (= var8 var5)) (= var6 var12)) (= var2 var13)) (not (<= 0 (+ var4 (* (- 1) (getInt (read var0 var13))))))) (and (and (= var3 var7) (= var9 (TData (lo var11) nullAddr))) (= var1 var8))))) (inv_main0 var3 0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int) (var9 TData) (var10 Int) (var11 TData) (var12 Int) (var13 Int) (var14 Int) (var15 Heap) (var16 Addr) (var17 TData) (var18 TData) (var19 Addr) (var20 TData) (var21 Addr) (var22 Addr) (var23 Addr)) (or (not (and (inv_main22 var1 var17 var12 var19 var23 var10) (and (and (and (and (and (and (and (= var7 var15) (= var11 (TData nullAddr (hi var18)))) (= var13 var14)) (= var16 var0)) (= var6 var22)) (and (<= 0 (+ var10 (* (- 1) (getInt (read var1 var23))))) (and (and (and (and (= var5 (write var1 var19 defObj)) (= var20 var17)) (= var8 var12)) (= var4 var19)) (= var21 var23)))) (and (and (and (and (= var15 (write var5 var21 defObj)) (= var18 var20)) (= var14 var8)) (= var0 var4)) (= var22 var21))) (and (and (= var3 var7) (= var9 (TData (lo var11) nullAddr))) (= var2 var13))))) (inv_main0 var3 0)))) +(assert (forall ((var0 TData) (var1 Int) (var2 Heap) (var3 Int) (var4 TData) (var5 TData) (var6 Heap) (var7 Addr) (var8 Heap) (var9 Int)) (or (not (and (inv_main12 var2 var5 var1) (and (and (and (and (= var6 var8) (= var4 var0)) (= var9 1)) (= var7 (lo var0))) (and (and (= var8 (write var2 (hi var5) (O_Int 8))) (= var0 var5)) (= var3 var1))))) (inv_main18 var6 var4 var9 var7 (hi var4))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TData) (var3 TData) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Heap) (var9 Int) (var10 TData) (var11 Int) (var12 Heap) (var13 Addr) (var14 TData)) (or (not (and (inv_main3 var0 var10) (and (and (and (and (and (= var8 (newHeap (alloc var12 (O_Int var5)))) (= var2 var3)) (= var4 var9)) (= var1 (newAddr (alloc var12 (O_Int var5))))) (and (and (and (= var7 (newHeap (alloc var0 (O_Int var6)))) (= var14 var10)) (= var11 1)) (= var13 (newAddr (alloc var0 (O_Int var6)))))) (and (and (= var12 var7) (= var3 (TData var13 (hi var14)))) (= var9 var11))))) (inv_main10 var8 (TData (lo var2) var1) var4)))) +(assert (forall ((var0 Heap) (var1 TData) (var2 Addr) (var3 Int) (var4 Addr)) (or (not (inv_main18 var0 var1 var3 var2 var4)) (inv_main22 var0 var1 var3 var2 var4 (getInt (read var0 var2)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 TData)) (or (not (inv_main10 var1 var2 var0)) (inv_main12 (write var1 (lo var2) (O_Int 4)) var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 TData)) (not (and (inv_main10 var1 var2 var0) (not (is-O_Int (read var1 (lo var2)))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 TData)) (not (and (inv_main12 var1 var2 var0) (not (is-O_Int (read var1 (hi var2)))))))) +(assert (forall ((var0 Heap) (var1 TData) (var2 Addr) (var3 Int) (var4 Addr)) (not (and (inv_main18 var0 var1 var3 var2 var4) (not (is-O_Int (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 TData) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr)) (not (and (inv_main22 var0 var1 var4 var3 var5 var2) (not (is-O_Int (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int)) (not (and (inv_main0 var0 var2) (not (= (read var0 var1) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/test-0019_1-2.i.smt2 b/heap-theory-benchmarks/heap/test-0019_1-2.i.smt2 new file mode 100644 index 00000000..2e2450fc --- /dev/null +++ b/heap-theory-benchmarks/heap/test-0019_1-2.i.smt2 @@ -0,0 +1,34 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TData 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TData (getTData TData)) + (defObj) + ) + ( + (TData (lo Addr) (hi Addr)) + ) +)) +(declare-fun inv_main10 (Heap TData Int) Bool) +(declare-fun inv_main12 (Heap TData Int) Bool) +(declare-fun inv_main18 (Heap TData TData Addr Addr) Bool) +(declare-fun inv_main22 (Heap TData TData Addr Addr Int) Bool) +(declare-fun inv_main3 (Heap TData) Bool) +(assert (forall ((var0 Heap) (var1 TData)) (or (not (= var0 emptyHeap)) (inv_main3 var0 var1)))) +(assert (forall ((var0 TData) (var1 Int) (var2 Heap)) (or (not (inv_main10 var2 var0 var1)) (inv_main12 (write var2 (lo var0) (O_Int 4)) var0 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 TData) (var4 Heap) (var5 TData) (var6 Int) (var7 Heap) (var8 TData) (var9 TData)) (or (not (and (inv_main12 var7 var3 var6) (and (and (and (and (= var4 var0) (= var9 var8)) (= var5 var8)) (= var1 (lo var8))) (and (and (= var0 (write var7 (hi var3) (O_Int 8))) (= var8 var3)) (= var2 var6))))) (inv_main18 var4 var9 var5 var1 (hi var5))))) +(assert (forall ((var0 TData) (var1 Addr) (var2 Int) (var3 Heap) (var4 Heap) (var5 TData) (var6 Heap) (var7 Int) (var8 TData) (var9 Addr) (var10 Int) (var11 Int) (var12 TData) (var13 Heap) (var14 Int)) (or (not (and (inv_main3 var13 var0) (and (and (and (and (and (= var6 (newHeap (alloc var4 (O_Int var7)))) (= var5 var8)) (= var2 var11)) (= var1 (newAddr (alloc var4 (O_Int var7))))) (and (and (and (= var3 (newHeap (alloc var13 (O_Int var14)))) (= var12 var0)) (= var10 1)) (= var9 (newAddr (alloc var13 (O_Int var14)))))) (and (and (= var4 var3) (= var8 (TData var9 (hi var12)))) (= var11 var10))))) (inv_main10 var6 (TData (lo var5) var1) var2)))) +(assert (forall ((var0 TData) (var1 TData) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (inv_main18 var4 var0 var1 var3 var2)) (inv_main22 var4 var0 var1 var3 var2 (getInt (read var4 var3)))))) +(assert (forall ((var0 TData) (var1 Int) (var2 Heap)) (not (and (inv_main10 var2 var0 var1) (not (is-O_Int (read var2 (lo var0)))))))) +(assert (forall ((var0 TData) (var1 Int) (var2 Heap)) (not (and (inv_main12 var2 var0 var1) (not (is-O_Int (read var2 (hi var0)))))))) +(assert (forall ((var0 TData) (var1 TData) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main18 var4 var0 var1 var3 var2) (not (is-O_Int (read var4 var3))))))) +(assert (forall ((var0 TData) (var1 TData) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int)) (not (and (inv_main22 var4 var0 var1 var3 var2 var5) (not (is-O_Int (read var4 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/test-0232-1.i.smt2 b/heap-theory-benchmarks/heap/test-0232-1.i.smt2 new file mode 100644 index 00000000..bbd53cf9 --- /dev/null +++ b/heap-theory-benchmarks/heap/test-0232-1.i.smt2 @@ -0,0 +1,48 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (item 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_item (getitem item)) + (defObj) + ) + ( + (item (next Addr) (data Addr)) + ) +)) +(declare-fun inv_main0 (Heap Int) Bool) +(declare-fun inv_main10 (Heap Addr Int Addr) Bool) +(declare-fun inv_main12 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main20 (Heap Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (and (inv_main14 var1 var0) (= var0 nullAddr))) (inv_main0 var1 0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main10 var3 var1 var0 var2) (not (= (next (getitem (read var3 var2))) nullAddr)))) (inv_main12 var3 var1 var0 var2 (data (getitem (read var3 (next (getitem (read var3 var2)))))))))) +(assert (forall ((var0 Int) (var1 item) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main10 var4 var2 var0 var3) (= (next (getitem (read var4 var3))) nullAddr))) (inv_main12 (newHeap (alloc var4 (O_item var1))) var2 var0 var3 (newAddr (alloc var4 (O_item var1))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main12 var9 var5 var2 var7 var1) (and (not (= var4 nullAddr)) (and (= var0 0) (and (and (and (= var6 (write var9 var7 (O_item (item (next (getitem (read var9 var7))) var1)))) (= var8 var5)) (= var3 var2)) (= var4 var7)))))) (inv_main15 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Heap)) (or (not (and (inv_main15 var7 var2) (and (and (and (= var6 var7) (= var1 var2)) (= var4 (next (getitem (read var7 var2))))) (and (and (= var5 (write var6 var1 defObj)) (= var3 var1)) (= var0 var4))))) (inv_main14 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap)) (or (not (and (inv_main20 var7 var4) (and (and (and (= var6 var7) (= var0 var4)) (= var5 (next (getitem (read var7 var4))))) (and (and (= var1 (write var6 var0 defObj)) (= var3 var0)) (= var2 var5))))) (inv_main14 var1 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Int) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr) (var9 Heap)) (or (not (and (inv_main12 var9 var5 var2 var7 var1) (and (= var4 nullAddr) (and (= var0 0) (and (and (and (= var6 (write var9 var7 (O_item (item (next (getitem (read var9 var7))) var1)))) (= var8 var5)) (= var3 var2)) (= var4 var7)))))) (inv_main14 var6 var4)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main9 var3 var1 var0 var2)) (inv_main10 (write var3 var2 (O_item (item var1 (data (getitem (read var3 var2)))))) var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (and (inv_main14 var1 var0) (not (= var0 nullAddr)))) (inv_main20 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 item) (var3 Heap)) (or (not (and (inv_main2 var3) (and (= var0 var3) (= var1 nullAddr)))) (inv_main9 (newHeap (alloc var0 (O_item var2))) var1 1 (newAddr (alloc var0 (O_item var2))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 item) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main12 var10 var4 var1 var8 var0) (and (not (= var7 0)) (and (and (and (= var6 (write var10 var8 (O_item (item (next (getitem (read var10 var8))) var0)))) (= var9 var4)) (= var3 var1)) (= var2 var8))))) (inv_main9 (newHeap (alloc var6 (O_item var5))) var2 1 (newAddr (alloc var6 (O_item var5))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main9 var3 var1 var0 var2) (not (is-O_item (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main10 var3 var1 var0 var2) (not (is-O_item (read var3 var2))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main10 var3 var1 var0 var2) (and (not (= (next (getitem (read var3 var2))) nullAddr)) (not (is-O_item (read var3 var2)))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main10 var3 var1 var0 var2) (and (not (= (next (getitem (read var3 var2))) nullAddr)) (not (is-O_item (read var3 (next (getitem (read var3 var2))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main12 var4 var2 var1 var3 var0) (not (is-O_item (read var4 var3))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main15 var1 var0) (not (is-O_item (read var1 var0))))))) +(assert (forall ((var0 Addr) (var1 Heap)) (not (and (inv_main20 var1 var0) (not (is-O_item (read var1 var0))))))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (not (and (inv_main0 var2 var0) (not (= (read var2 var1) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/test-0232-2.i.smt2 b/heap-theory-benchmarks/heap/test-0232-2.i.smt2 new file mode 100644 index 00000000..edec2a8c --- /dev/null +++ b/heap-theory-benchmarks/heap/test-0232-2.i.smt2 @@ -0,0 +1,46 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (item 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_item (getitem item)) + (defObj) + ) + ( + (item (next Addr) (data Addr)) + ) +)) +(declare-fun inv_main10 (Heap Addr Int Addr) Bool) +(declare-fun inv_main12 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 item)) (or (not (and (inv_main2 var2) (and (= var0 var2) (= var1 nullAddr)))) (inv_main9 (newHeap (alloc var0 (O_item var3))) var1 1 (newAddr (alloc var0 (O_item var3))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Int) (var6 item) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main12 var4 var10 var5 var9 var0) (and (not (= var8 0)) (and (and (and (= var1 (write var4 var9 (O_item (item (next (getitem (read var4 var9))) var0)))) (= var7 var10)) (= var3 var5)) (= var2 var9))))) (inv_main9 (newHeap (alloc var1 (O_item var6))) var2 1 (newAddr (alloc var1 (O_item var6))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr)) (or (not (inv_main9 var0 var3 var1 var2)) (inv_main10 (write var0 var2 (O_item (item var3 (data (getitem (read var0 var2)))))) var3 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main17 var3 var8 var1) (and (not (= var6 nullAddr)) (and (and (and (= var4 (write var3 (data (getitem (read var3 var8))) defObj)) (= var2 var8)) (= var7 var1)) (and (and (= var5 (write var4 var2 defObj)) (= var0 var2)) (= var6 var7)))))) (inv_main21 var5 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main21 var1 var7) (and (not (= var4 nullAddr)) (and (and (and (= var6 var1) (= var5 var7)) (= var2 (next (getitem (read var1 var7))))) (and (and (= var3 (write var6 var5 defObj)) (= var0 var5)) (= var4 var2)))))) (inv_main21 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (and (inv_main12 var4 var9 var5 var7 var0) (and (not (= var3 nullAddr)) (and (= var3 nullAddr) (and (= var8 0) (and (and (and (= var1 (write var4 var7 (O_item (item (next (getitem (read var4 var7))) var0)))) (= var6 var9)) (= var2 var5)) (= var3 var7))))))) (inv_main21 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr)) (or (not (and (inv_main10 var0 var3 var1 var2) (not (= (next (getitem (read var0 var2))) nullAddr)))) (inv_main12 var0 var3 var1 var2 (data (getitem (read var0 (next (getitem (read var0 var2)))))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 item) (var3 Addr) (var4 Addr)) (or (not (and (inv_main10 var0 var4 var1 var3) (= (next (getitem (read var0 var3))) nullAddr))) (inv_main12 (newHeap (alloc var0 (O_item var2))) var4 var1 var3 (newAddr (alloc var0 (O_item var2))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Addr) (var8 Int) (var9 Addr)) (or (not (and (inv_main12 var4 var9 var5 var7 var0) (and (not (= var3 nullAddr)) (and (= var8 0) (and (and (and (= var1 (write var4 var7 (O_item (item (next (getitem (read var4 var7))) var0)))) (= var6 var9)) (= var2 var5)) (= var3 var7)))))) (inv_main15 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main15 var0 var1)) (inv_main17 var0 var1 (next (getitem (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr)) (not (and (inv_main9 var0 var3 var1 var2) (not (is-O_item (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr)) (not (and (inv_main10 var0 var3 var1 var2) (not (is-O_item (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr)) (not (and (inv_main10 var0 var3 var1 var2) (and (not (= (next (getitem (read var0 var2))) nullAddr)) (not (is-O_item (read var0 var2)))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr)) (not (and (inv_main10 var0 var3 var1 var2) (and (not (= (next (getitem (read var0 var2))) nullAddr)) (not (is-O_item (read var0 (next (getitem (read var0 var2))))))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr)) (not (and (inv_main12 var1 var4 var2 var3 var0) (not (is-O_item (read var1 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main15 var0 var1) (not (is-O_item (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr)) (not (and (inv_main17 var1 var2 var0) (not (is-O_item (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main21 var0 var1) (not (is-O_item (read var0 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/test-0232-3.i.smt2 b/heap-theory-benchmarks/heap/test-0232-3.i.smt2 new file mode 100644 index 00000000..190f28da --- /dev/null +++ b/heap-theory-benchmarks/heap/test-0232-3.i.smt2 @@ -0,0 +1,50 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (item 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_item (getitem item)) + (defObj) + ) + ( + (item (next Addr) (data Addr)) + ) +)) +(declare-fun inv_main10 (Heap Addr Int Addr) Bool) +(declare-fun inv_main12 (Heap Addr Int Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main21 (Heap Addr) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr)) (or (not (and (inv_main12 var0 var9 var8 var4 var2) (and (not (= var6 nullAddr)) (and (= var5 0) (and (and (and (= var7 (write var0 var4 (O_item (item (next (getitem (read var0 var4))) var2)))) (= var3 var9)) (= var1 var8)) (= var6 var4)))))) (inv_main15 var7 var6)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (and (inv_main21 var1 var4) (and (= var0 nullAddr) (and (and (= var2 var1) (= var3 var4)) (= var0 (next (getitem (read var1 var4)))))))) (inv_main24 var2 var3 var0)))) +(assert (forall ((var0 item) (var1 Heap) (var2 Addr) (var3 Heap)) (or (not (and (inv_main2 var1) (and (= var3 var1) (= var2 nullAddr)))) (inv_main9 (newHeap (alloc var3 (O_item var0))) var2 1 (newAddr (alloc var3 (O_item var0))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 item) (var8 Heap) (var9 Int) (var10 Addr)) (or (not (and (inv_main12 var0 var10 var9 var5 var2) (and (not (= var4 0)) (and (and (and (= var8 (write var0 var5 (O_item (item (next (getitem (read var0 var5))) var2)))) (= var3 var10)) (= var1 var9)) (= var6 var5))))) (inv_main9 (newHeap (alloc var8 (O_item var7))) var6 1 (newAddr (alloc var8 (O_item var7))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (inv_main15 var0 var1)) (inv_main17 var0 var1 (next (getitem (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main17 var0 var8 var7) (and (not (= var4 nullAddr)) (and (and (and (= var2 (write var0 (data (getitem (read var0 var8))) defObj)) (= var3 var8)) (= var5 var7)) (and (and (= var1 (write var2 var3 defObj)) (= var6 var3)) (= var4 var5)))))) (inv_main21 var1 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr)) (or (not (and (inv_main24 var0 var8 var5) (and (not (= var4 nullAddr)) (and (and (and (= var6 (write var7 var3 defObj)) (= var1 var3)) (= var4 var2)) (and (and (= var7 (write var0 (data (getitem (read var0 var8))) defObj)) (= var3 var8)) (= var2 var5)))))) (inv_main21 var6 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main21 var0 var7) (and (not (= var1 nullAddr)) (and (and (and (= var4 (write var3 var6 defObj)) (= var2 var6)) (= var1 var5)) (and (not (= var5 nullAddr)) (and (and (= var3 var0) (= var6 var7)) (= var5 (next (getitem (read var0 var7)))))))))) (inv_main21 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr)) (or (not (and (inv_main12 var0 var9 var8 var4 var2) (and (not (= var6 nullAddr)) (and (= var6 nullAddr) (and (= var5 0) (and (and (and (= var7 (write var0 var4 (O_item (item (next (getitem (read var0 var4))) var2)))) (= var3 var9)) (= var1 var8)) (= var6 var4))))))) (inv_main21 var7 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (and (inv_main10 var0 var3 var2 var1) (not (= (next (getitem (read var0 var1))) nullAddr)))) (inv_main12 var0 var3 var2 var1 (data (getitem (read var0 (next (getitem (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 item) (var2 Addr) (var3 Int) (var4 Addr)) (or (not (and (inv_main10 var0 var4 var3 var2) (= (next (getitem (read var0 var2))) nullAddr))) (inv_main12 (newHeap (alloc var0 (O_item var1))) var4 var3 var2 (newAddr (alloc var0 (O_item var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (or (not (inv_main9 var0 var3 var2 var1)) (inv_main10 (write var0 var1 (O_item (item var3 (data (getitem (read var0 var1)))))) var3 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main9 var0 var3 var2 var1) (not (is-O_item (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main10 var0 var3 var2 var1) (not (is-O_item (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main10 var0 var3 var2 var1) (and (not (= (next (getitem (read var0 var1))) nullAddr)) (not (is-O_item (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr)) (not (and (inv_main10 var0 var3 var2 var1) (and (not (= (next (getitem (read var0 var1))) nullAddr)) (not (is-O_item (read var0 (next (getitem (read var0 var1))))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr)) (not (and (inv_main12 var0 var4 var3 var2 var1) (not (is-O_item (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main15 var0 var1) (not (is-O_item (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main17 var0 var2 var1) (not (is-O_item (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr)) (not (and (inv_main21 var0 var1) (not (is-O_item (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main24 var0 var2 var1) (not (is-O_item (read var0 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/test-0232_1-1.i.smt2 b/heap-theory-benchmarks/heap/test-0232_1-1.i.smt2 new file mode 100644 index 00000000..7c259394 --- /dev/null +++ b/heap-theory-benchmarks/heap/test-0232_1-1.i.smt2 @@ -0,0 +1,55 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (item 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_item (getitem item)) + (defObj) + ) + ( + (item (next Addr) (data Addr)) + ) +)) +(declare-fun inv_main0 (Heap Int Int) Bool) +(declare-fun inv_main13 (Heap Int Addr Int Int Addr) Bool) +(declare-fun inv_main14 (Heap Int Addr Int Int Addr) Bool) +(declare-fun inv_main16 (Heap Int Addr Int Int Addr Addr) Bool) +(declare-fun inv_main2 (Heap Int) Bool) +(declare-fun inv_main20 (Heap Int Addr Int) Bool) +(declare-fun inv_main23 (Heap Int Addr Int) Bool) +(declare-fun inv_main24 (Heap Int Addr Int) Bool) +(declare-fun inv_main30 (Heap Int Addr Int) Bool) +(assert (inv_main2 emptyHeap 0)) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (inv_main24 var1 var3 var2 var0)) (inv_main23 (write var1 (data (getitem (read var1 var2))) defObj) var3 var2 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int)) (or (not (and (inv_main16 var1 var4 var11 var10 var9 var3 var7) (and (not (<= 0 (+ (* (- 1) (+ var13 1)) (- 1)))) (and (<= 0 (+ (+ var13 1) (- 1))) (and (= var0 0) (and (and (and (and (and (= var5 (write var1 var3 (O_item (item (next (getitem (read var1 var3))) var7)))) (= var6 var4)) (= var2 var11)) (= var13 var10)) (= var8 var9)) (= var12 var3))))))) (inv_main23 var5 var6 var12 (+ var13 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main16 var0 var6 var16 var15 var13 var2 var11) (and (not (<= 0 (+ (* (- 1) var5) (- 1)))) (and (<= 0 (+ var5 (- 1))) (and (and (and (= var3 0) (not (= var9 0))) (and (and (and (and (= var10 var7) (= var8 var4)) (= var14 var17)) (= var5 (+ var18 1))) (or (and (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1))) (= var3 1)) (and (not (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1)))) (= var3 0))))) (and (and (and (and (and (= var7 (write var0 var2 (O_item (item (next (getitem (read var0 var2))) var11)))) (= var4 var6)) (= var1 var16)) (= var18 var15)) (= var12 var13)) (= var17 var2))))))) (inv_main23 var10 var8 var14 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (inv_main13 var2 var5 var3 var1 var0 var4)) (inv_main14 (write var2 var4 (O_item (item var3 (data (getitem (read var2 var4)))))) var5 var3 var1 var0 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main20 var1 var3 var2 var0) (<= 0 (+ var0 (- 1))))) (inv_main30 var1 var3 var2 var0)))) +(assert (forall ((var0 item) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int) (var14 Int) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int) (var19 Int)) (or (not (and (inv_main16 var1 var5 var16 var14 var13 var4 var10) (and (and (and (not (= var15 0)) (not (= var8 0))) (and (and (and (and (= var11 var6) (= var9 var7)) (= var3 var17)) (= var18 (+ var19 1))) (or (and (<= 0 (+ (+ 20 (* (- 1) var7)) (- 1))) (= var15 1)) (and (not (<= 0 (+ (+ 20 (* (- 1) var7)) (- 1)))) (= var15 0))))) (and (and (and (and (and (= var6 (write var1 var4 (O_item (item (next (getitem (read var1 var4))) var10)))) (= var7 var5)) (= var2 var16)) (= var19 var14)) (= var12 var13)) (= var17 var4))))) (inv_main13 (newHeap (alloc var11 (O_item var0))) (+ var9 1) var3 var18 2 (newAddr (alloc var11 (O_item var0))))))) +(assert (forall ((var0 Heap) (var1 item) (var2 Addr) (var3 Heap) (var4 Int) (var5 Int)) (or (not (and (inv_main2 var3 var5) (and (and (= var0 var3) (= var4 var5)) (= var2 nullAddr)))) (inv_main13 (newHeap (alloc var0 (O_item var1))) (+ var4 1) var2 0 2 (newAddr (alloc var0 (O_item var1))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int)) (or (not (and (inv_main16 var1 var4 var11 var10 var9 var3 var7) (and (<= 0 (+ (* (- 1) (+ var13 1)) (- 1))) (and (<= 0 (+ (+ var13 1) (- 1))) (and (= var0 0) (and (and (and (and (and (= var5 (write var1 var3 (O_item (item (next (getitem (read var1 var3))) var7)))) (= var6 var4)) (= var2 var11)) (= var13 var10)) (= var8 var9)) (= var12 var3))))))) (inv_main24 var5 var6 var12 (+ var13 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main16 var0 var6 var16 var15 var13 var2 var11) (and (<= 0 (+ (* (- 1) var5) (- 1))) (and (<= 0 (+ var5 (- 1))) (and (and (and (= var3 0) (not (= var9 0))) (and (and (and (and (= var10 var7) (= var8 var4)) (= var14 var17)) (= var5 (+ var18 1))) (or (and (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1))) (= var3 1)) (and (not (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1)))) (= var3 0))))) (and (and (and (and (and (= var7 (write var0 var2 (O_item (item (next (getitem (read var0 var2))) var11)))) (= var4 var6)) (= var1 var16)) (= var18 var15)) (= var12 var13)) (= var17 var2))))))) (inv_main24 var10 var8 var14 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (or (not (and (inv_main20 var1 var3 var2 var0) (not (<= 0 (+ var0 (- 1)))))) (inv_main0 var1 var3 0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Addr) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int)) (or (not (and (inv_main23 var1 var5 var12 var10) (and (and (and (and (and (= var7 var1) (= var6 var5)) (= var9 var12)) (= var4 var10)) (= var2 (next (getitem (read var1 var12))))) (and (and (and (and (= var0 (write var7 var9 defObj)) (= var8 var6)) (= var3 var9)) (= var13 var4)) (= var11 var2))))) (inv_main20 var0 var8 var11 (+ var13 (- 1)))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Heap) (var7 Addr) (var8 Int) (var9 Addr) (var10 Addr) (var11 Heap) (var12 Int) (var13 Int)) (or (not (and (inv_main30 var2 var4 var10 var8) (and (and (and (and (and (= var6 var2) (= var13 var4)) (= var9 var10)) (= var5 var8)) (= var3 (next (getitem (read var2 var10))))) (and (and (and (and (= var11 (write var6 var9 defObj)) (= var12 var13)) (= var7 var9)) (= var1 var5)) (= var0 var3))))) (inv_main20 var11 var12 var0 (+ var1 (- 1)))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Int) (var7 Addr) (var8 Int) (var9 Int) (var10 Int) (var11 Addr) (var12 Addr) (var13 Int)) (or (not (and (inv_main16 var1 var4 var11 var10 var9 var3 var7) (and (not (<= 0 (+ (+ var13 1) (- 1)))) (and (= var0 0) (and (and (and (and (and (= var5 (write var1 var3 (O_item (item (next (getitem (read var1 var3))) var7)))) (= var6 var4)) (= var2 var11)) (= var13 var10)) (= var8 var9)) (= var12 var3)))))) (inv_main20 var5 var6 var12 (+ var13 1))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Int) (var5 Int) (var6 Int) (var7 Heap) (var8 Int) (var9 Int) (var10 Heap) (var11 Addr) (var12 Int) (var13 Int) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Int)) (or (not (and (inv_main16 var0 var6 var16 var15 var13 var2 var11) (and (not (<= 0 (+ var5 (- 1)))) (and (and (and (= var3 0) (not (= var9 0))) (and (and (and (and (= var10 var7) (= var8 var4)) (= var14 var17)) (= var5 (+ var18 1))) (or (and (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1))) (= var3 1)) (and (not (<= 0 (+ (+ 20 (* (- 1) var4)) (- 1)))) (= var3 0))))) (and (and (and (and (and (= var7 (write var0 var2 (O_item (item (next (getitem (read var0 var2))) var11)))) (= var4 var6)) (= var1 var16)) (= var18 var15)) (= var12 var13)) (= var17 var2)))))) (inv_main20 var10 var8 var14 var5)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (or (not (and (inv_main14 var2 var5 var3 var1 var0 var4) (not (= (next (getitem (read var2 var4))) nullAddr)))) (inv_main16 var2 var5 var3 var1 var0 var4 (data (getitem (read var2 (next (getitem (read var2 var4)))))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 item)) (or (not (and (inv_main14 var2 var5 var3 var1 var0 var4) (= (next (getitem (read var2 var4))) nullAddr))) (inv_main16 (newHeap (alloc var2 (O_item var6))) var5 var3 var1 var0 var4 (newAddr (alloc var2 (O_item var6))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main13 var2 var5 var3 var1 var0 var4) (not (is-O_item (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main14 var2 var5 var3 var1 var0 var4) (not (is-O_item (read var2 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main14 var2 var5 var3 var1 var0 var4) (and (not (= (next (getitem (read var2 var4))) nullAddr)) (not (is-O_item (read var2 var4)))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int)) (not (and (inv_main14 var2 var5 var3 var1 var0 var4) (and (not (= (next (getitem (read var2 var4))) nullAddr)) (not (is-O_item (read var2 (next (getitem (read var2 var4))))))))))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Int)) (not (and (inv_main16 var3 var6 var4 var2 var1 var5 var0) (not (is-O_item (read var3 var5))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main24 var1 var3 var2 var0) (not (is-O_item (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main23 var1 var3 var2 var0) (not (is-O_item (read var1 var2))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Int)) (not (and (inv_main30 var1 var3 var2 var0) (not (is-O_item (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int)) (not (and (inv_main0 var0 var3 var1) (not (= (read var0 var2) defObj)))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/tree-3.i.smt2 b/heap-theory-benchmarks/heap/tree-3.i.smt2 new file mode 100644 index 00000000..07b39b09 --- /dev/null +++ b/heap-theory-benchmarks/heap/tree-3.i.smt2 @@ -0,0 +1,119 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (left Addr) (right Addr) (parent Addr) (value Int)) + ) +)) +(declare-fun inv_main13 (Heap Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main23 (Heap Addr Addr Int) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr) Bool) +(declare-fun inv_main39 (Heap Addr Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr) Bool) +(declare-fun inv_main66 (Heap Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main70 (Heap Addr Addr) Bool) +(declare-fun inv_main74 (Heap Addr Addr) Bool) +(declare-fun inv_main85 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main92 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main93 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main94 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main97 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main99 (Heap Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main92 var2 var0 var1 var3) (not (= (left (getnode (read var2 var1))) nullAddr)))) (inv_main94 var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main37 var2 var1 var0)) (inv_main38 (write var2 (left (getnode (read var2 var0))) (O_node (node (left (getnode (read var2 (left (getnode (read var2 var0)))))) nullAddr (parent (getnode (read var2 (left (getnode (read var2 var0)))))) (value (getnode (read var2 (left (getnode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main34 var2 var1 var0)) (inv_main37 (write var2 (left (getnode (read var2 var0))) (O_node (node nullAddr (right (getnode (read var2 (left (getnode (read var2 var0)))))) (parent (getnode (read var2 (left (getnode (read var2 var0)))))) (value (getnode (read var2 (left (getnode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main94 var2 var0 var1 var3)) (inv_main93 (write var2 (left (getnode (read var2 var1))) defObj) var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main92 var2 var0 var1 var3) (= (left (getnode (read var2 var1))) nullAddr))) (inv_main93 var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main13 var2 var1 var0)) (inv_main16 (write var2 var0 (O_node (node nullAddr (right (getnode (read var2 var0))) (parent (getnode (read var2 var0))) (value (getnode (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main70 var4 var1 var3) (and (not (= var5 nullAddr)) (and (and (and (= var2 var4) (= var6 var1)) (= var0 var3)) (= var5 (parent (getnode (read var4 var3)))))))) (inv_main58 var2 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main27 var2 var1 var0) (and (and (not (= var1 nullAddr)) (not (= var1 nullAddr))) (and (not (= var1 nullAddr)) (= var0 nullAddr))))) (inv_main58 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main39 var2 var1 var0)) (inv_main40 (write var2 (left (getnode (read var2 var0))) (O_node (node (left (getnode (read var2 (left (getnode (read var2 var0)))))) (right (getnode (read var2 (left (getnode (read var2 var0)))))) var0 (value (getnode (read var2 (left (getnode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main59 var2 var0 var1) (= (value (getnode (read var2 var1))) 0))) (inv_main74 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main97 var6 var0 var2 var7) (and (and (and (= var4 (write var6 (right (getnode (read var6 var2))) defObj)) (= var5 var0)) (= var3 var2)) (= var1 var7)))) (inv_main99 var4 var5 var3 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main93 var2 var0 var1 var3) (= (right (getnode (read var2 var1))) nullAddr))) (inv_main99 var2 var0 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Heap)) (or (not (and (inv_main19 var6 var3 var2) (and (= var4 0) (and (and (= var5 (write var6 var3 (O_node (node (left (getnode (read var6 var3))) (right (getnode (read var6 var3))) var2 (value (getnode (read var6 var3))))))) (= var0 var3)) (= var1 var2))))) (inv_main23 var5 var0 var1 1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main19 var6 var4 var3) (and (not (= var2 0)) (and (and (= var1 (write var6 var4 (O_node (node (left (getnode (read var6 var4))) (right (getnode (read var6 var4))) var3 (value (getnode (read var6 var4))))))) (= var0 var4)) (= var5 var3))))) (inv_main23 var1 var0 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int)) (or (not (and (inv_main16 var4 var3 var2) (and (= var6 0) (and (= var1 nullAddr) (and (and (= var0 (write var4 var2 (O_node (node (left (getnode (read var4 var2))) var3 (parent (getnode (read var4 var2))) (value (getnode (read var4 var2))))))) (= var1 var3)) (= var5 var2)))))) (inv_main23 var0 var1 var5 1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Int)) (or (not (and (inv_main16 var4 var3 var2) (and (not (= var6 0)) (and (= var1 nullAddr) (and (and (= var0 (write var4 var2 (O_node (node (left (getnode (read var4 var2))) var3 (parent (getnode (read var4 var2))) (value (getnode (read var4 var2))))))) (= var1 var3)) (= var5 var2)))))) (inv_main23 var0 var1 var5 var6)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Heap)) (or (not (and (inv_main23 var5 var3 var2 var4) (and (and (and (= var7 (write var5 var2 (O_node (node (left (getnode (read var5 var2))) (right (getnode (read var5 var2))) (parent (getnode (read var5 var2))) var4)))) (= var6 var3)) (= var1 var2)) (= var0 var4)))) (inv_main7 var7 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (and (inv_main2 var2) (and (= var0 var2) (= var1 nullAddr)))) (inv_main7 var0 var1 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap) (var6 Int)) (or (not (and (inv_main60 var4 var0 var3) (and (not (= var6 42)) (and (and (and (= var5 var4) (= var1 var0)) (= var2 var3)) (= var6 (value (getnode (read var4 (left (getnode (read var4 var3))))))))))) (inv_main66 var5 var1 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main27 var2 var1 var0) (and (= var1 nullAddr) (and (not (= var1 nullAddr)) (= var0 nullAddr))))) (inv_main54 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main38 var2 var1 var0)) (inv_main39 (write var2 (left (getnode (read var2 var0))) (O_node (node (left (getnode (read var2 (left (getnode (read var2 var0)))))) (right (getnode (read var2 (left (getnode (read var2 var0)))))) (parent (getnode (read var2 (left (getnode (read var2 var0)))))) 42))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (inv_main16 var5 var3 var2) (and (not (= var4 nullAddr)) (and (and (= var1 (write var5 var2 (O_node (node (left (getnode (read var5 var2))) var3 (parent (getnode (read var5 var2))) (value (getnode (read var5 var2))))))) (= var4 var3)) (= var0 var2))))) (inv_main19 var1 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main58 var2 var0 var1) (not (= (left (getnode (read var2 var1))) nullAddr)))) (inv_main60 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main86 var5 var0 var1 var7) (and (and (and (and (= var8 var5) (= var6 var0)) (= var3 var1)) (= var2 var7)) (= var4 (right (getnode (read var5 var1))))))) (inv_main85 var8 var6 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Heap)) (or (not (and (inv_main70 var7 var1 var6) (and (and (and (and (= var10 var4) (= var5 var9)) (= var3 var9)) (= var2 nullAddr)) (and (= var8 nullAddr) (and (and (and (= var4 var7) (= var9 var1)) (= var0 var6)) (= var8 (parent (getnode (read var7 var6))))))))) (inv_main85 var10 var5 var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main27 var4 var3 var2) (and (and (and (and (= var0 var4) (= var1 var3)) (= var6 var3)) (= var5 nullAddr)) (and (and (= var3 nullAddr) (not (= var3 nullAddr))) (and (not (= var3 nullAddr)) (= var2 nullAddr)))))) (inv_main85 var0 var1 var6 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main59 var2 var0 var1) (not (= (value (getnode (read var2 var1))) 0)))) (inv_main70 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main93 var2 var0 var1 var3) (not (= (right (getnode (read var2 var1))) nullAddr)))) (inv_main97 var2 var0 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Heap)) (or (not (and (inv_main85 var6 var0 var3 var7) (and (not (= var5 nullAddr)) (and (and (and (and (= var8 var6) (= var1 var0)) (= var2 var3)) (= var4 var7)) (= var5 (right (getnode (read var6 var3)))))))) (inv_main86 var8 var1 var2 var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main33 var6 var5 var4 var1) (and (not (= var3 nullAddr)) (and (and (= var0 (write var6 var4 (O_node (node var1 (right (getnode (read var6 var4))) (parent (getnode (read var6 var4))) (value (getnode (read var6 var4))))))) (= var2 var5)) (= var3 var4))))) (inv_main34 var0 var2 var3)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main27 var3 var2 var1) (not (= var1 nullAddr)))) (inv_main33 (newHeap (alloc var3 (O_node var0))) var2 var1 (newAddr (alloc var3 (O_node var0))))))) +(assert (forall ((var0 node) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Int)) (or (not (and (inv_main7 var6 var4 var3) (and (not (= var7 nullAddr)) (and (and (and (and (= var2 (newHeap (alloc var6 (O_node var0)))) (= var1 var4)) (= var5 var3)) (= var7 (newAddr (alloc var6 (O_node var0))))) (not (= var8 0)))))) (inv_main13 var2 var1 var7)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main7 var3 var2 var1) (and (not (= var1 nullAddr)) (= var0 0)))) (inv_main28 var3 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main58 var2 var0 var1) (= (left (getnode (read var2 var1))) nullAddr))) (inv_main59 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main60 var5 var0 var4) (and (= var1 42) (and (and (and (= var3 var5) (= var2 var0)) (= var6 var4)) (= var1 (value (getnode (read var5 (left (getnode (read var5 var4))))))))))) (inv_main59 var3 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main28 var2 var1 var0)) (inv_main27 (write var2 var0 (O_node (node (left (getnode (read var2 var0))) (right (getnode (read var2 var0))) nullAddr (value (getnode (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main40 var6 var5 var4) (and (and (and (= var3 var6) (= var0 var5)) (= var2 var4)) (= var1 (right (getnode (read var6 var4))))))) (inv_main27 var3 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main7 var3 var2 var1) (and (= var1 nullAddr) (= var0 0)))) (inv_main27 var3 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main99 var6 var0 var2 var8) (and (not (= var5 nullAddr)) (and (and (and (and (= var1 var6) (= var3 var0)) (= var4 var2)) (= var7 var8)) (= var5 (parent (getnode (read var6 var2)))))))) (inv_main92 var1 var3 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main85 var6 var0 var2 var7) (and (not (= var8 nullAddr)) (and (= var4 nullAddr) (and (and (and (and (= var3 var6) (= var5 var0)) (= var8 var2)) (= var1 var7)) (= var4 (right (getnode (read var6 var2))))))))) (inv_main92 var3 var5 var8 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main13 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main16 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main19 var2 var1 var0) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap)) (not (and (inv_main23 var3 var1 var0 var2) (not (is-O_node (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main28 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main33 var3 var2 var1 var0) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main34 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main34 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main38 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main38 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main39 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main39 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main40 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main54 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main58 var2 var0 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main60 var2 var0 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main60 var2 var0 var1) (not (is-O_node (read var2 (left (getnode (read var2 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main66 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main59 var2 var0 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main74 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main70 var2 var0 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main85 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main86 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main92 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main94 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main93 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main97 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main99 var2 var0 var1 var3) (not (is-O_node (read var2 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/tree-4.i.smt2 b/heap-theory-benchmarks/heap/tree-4.i.smt2 new file mode 100644 index 00000000..bcb750c6 --- /dev/null +++ b/heap-theory-benchmarks/heap/tree-4.i.smt2 @@ -0,0 +1,117 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (left Addr) (right Addr) (parent Addr) (value Int)) + ) +)) +(declare-fun inv_main13 (Heap Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main19 (Heap Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Int) Bool) +(declare-fun inv_main24 (Heap Addr Addr) Bool) +(declare-fun inv_main25 (Heap Addr Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main31 (Heap Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr) Bool) +(declare-fun inv_main63 (Heap Addr Addr) Bool) +(declare-fun inv_main67 (Heap Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr) Bool) +(declare-fun inv_main82 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main89 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main90 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main91 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main94 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main96 (Heap Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap)) (or (not (and (inv_main30 var6 var3 var2 var0) (and (not (= var1 nullAddr)) (and (and (= var5 (write var6 var2 (O_node (node var0 (right (getnode (read var6 var2))) (parent (getnode (read var6 var2))) (value (getnode (read var6 var2))))))) (= var4 var3)) (= var1 var2))))) (inv_main31 var5 var4 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main82 var6 var4 var2 var8) (and (not (= var1 nullAddr)) (and (and (and (and (= var3 var6) (= var7 var4)) (= var0 var2)) (= var5 var8)) (= var1 (right (getnode (read var6 var2)))))))) (inv_main83 var3 var7 var0 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 node) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main7 var5 var2 var1) (and (not (= var7 nullAddr)) (and (and (and (and (= var8 (newHeap (alloc var5 (O_node var4)))) (= var0 var2)) (= var6 var1)) (= var7 (newAddr (alloc var5 (O_node var4))))) (not (= var3 0)))))) (inv_main13 var8 var0 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main24 var2 var1 var0) (and (= var1 nullAddr) (and (not (= var1 nullAddr)) (= var0 nullAddr))))) (inv_main51 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main31 var2 var1 var0)) (inv_main34 (write var2 (left (getnode (read var2 var0))) (O_node (node nullAddr (right (getnode (read var2 (left (getnode (read var2 var0)))))) (parent (getnode (read var2 (left (getnode (read var2 var0)))))) (value (getnode (read var2 (left (getnode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Heap) (var7 Int)) (or (not (and (inv_main22 var6 var4 var3 var7) (and (and (and (= var0 (write var6 var3 (O_node (node (left (getnode (read var6 var3))) (right (getnode (read var6 var3))) (parent (getnode (read var6 var3))) var7)))) (= var1 var4)) (= var2 var3)) (= var5 var7)))) (inv_main7 var0 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap)) (or (not (and (inv_main2 var1) (and (= var2 var1) (= var0 nullAddr)))) (inv_main7 var2 var0 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main67 var5 var1 var0) (and (not (= var6 nullAddr)) (and (and (and (= var3 var5) (= var4 var1)) (= var2 var0)) (= var6 (parent (getnode (read var5 var0)))))))) (inv_main55 var3 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main24 var2 var1 var0) (and (and (not (= var1 nullAddr)) (not (= var1 nullAddr))) (and (not (= var1 nullAddr)) (= var0 nullAddr))))) (inv_main55 var2 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main90 var2 var1 var0 var3) (not (= (right (getnode (read var2 var0))) nullAddr)))) (inv_main94 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr)) (or (not (and (inv_main57 var5 var3 var0) (and (not (= var4 42)) (and (and (and (= var2 var5) (= var6 var3)) (= var1 var0)) (= var4 (value (getnode (read var5 (left (getnode (read var5 var0))))))))))) (inv_main63 var2 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main89 var2 var1 var0 var3) (not (= (left (getnode (read var2 var0))) nullAddr)))) (inv_main91 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main91 var2 var1 var0 var3)) (inv_main90 (write var2 (left (getnode (read var2 var0))) defObj) var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main89 var2 var1 var0 var3) (= (left (getnode (read var2 var0))) nullAddr))) (inv_main90 var2 var1 var0 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main96 var7 var2 var0 var8) (and (not (= var3 nullAddr)) (and (and (and (and (= var4 var7) (= var5 var2)) (= var6 var0)) (= var1 var8)) (= var3 (parent (getnode (read var7 var0)))))))) (inv_main89 var4 var5 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main82 var5 var3 var1 var8) (and (not (= var2 nullAddr)) (and (= var0 nullAddr) (and (and (and (and (= var6 var5) (= var4 var3)) (= var2 var1)) (= var7 var8)) (= var0 (right (getnode (read var5 var1))))))))) (inv_main89 var6 var4 var2 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main55 var2 var1 var0) (= (left (getnode (read var2 var0))) nullAddr))) (inv_main56 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (inv_main57 var5 var4 var1) (and (= var6 42) (and (and (and (= var0 var5) (= var2 var4)) (= var3 var1)) (= var6 (value (getnode (read var5 (left (getnode (read var5 var1))))))))))) (inv_main56 var0 var2 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main56 var2 var1 var0) (= (value (getnode (read var2 var0))) 0))) (inv_main71 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main35 var2 var1 var0)) (inv_main36 (write var2 (left (getnode (read var2 var0))) (O_node (node (left (getnode (read var2 (left (getnode (read var2 var0)))))) (right (getnode (read var2 (left (getnode (read var2 var0)))))) (parent (getnode (read var2 (left (getnode (read var2 var0)))))) 42))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main13 var2 var1 var0)) (inv_main16 (write var2 var0 (O_node (node nullAddr (right (getnode (read var2 var0))) (parent (getnode (read var2 var0))) (value (getnode (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr)) (or (not (and (inv_main94 var5 var4 var3 var7) (and (and (and (= var2 (write var5 (right (getnode (read var5 var3))) defObj)) (= var0 var4)) (= var1 var3)) (= var6 var7)))) (inv_main96 var2 var0 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (and (inv_main90 var2 var1 var0 var3) (= (right (getnode (read var2 var0))) nullAddr))) (inv_main96 var2 var1 var0 var0)))) +(assert (forall ((var0 node) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main24 var3 var2 var1) (not (= var1 nullAddr)))) (inv_main30 (newHeap (alloc var3 (O_node var0))) var2 var1 (newAddr (alloc var3 (O_node var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main55 var2 var1 var0) (not (= (left (getnode (read var2 var0))) nullAddr)))) (inv_main57 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main7 var3 var2 var1) (and (not (= var1 nullAddr)) (= var0 0)))) (inv_main25 var3 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (and (inv_main56 var2 var1 var0) (not (= (value (getnode (read var2 var0))) 0)))) (inv_main67 var2 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main83 var6 var3 var1 var8) (and (and (and (and (= var0 var6) (= var2 var3)) (= var4 var1)) (= var7 var8)) (= var5 (right (getnode (read var6 var1))))))) (inv_main82 var0 var2 var5 var7)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main67 var8 var3 var0) (and (and (and (and (= var10 var5) (= var1 var7)) (= var2 var7)) (= var6 nullAddr)) (and (= var9 nullAddr) (and (and (and (= var5 var8) (= var7 var3)) (= var4 var0)) (= var9 (parent (getnode (read var8 var0))))))))) (inv_main82 var10 var1 var2 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main24 var5 var3 var2) (and (and (and (and (= var0 var5) (= var1 var3)) (= var6 var3)) (= var4 nullAddr)) (and (and (= var3 nullAddr) (not (= var3 nullAddr))) (and (not (= var3 nullAddr)) (= var2 nullAddr)))))) (inv_main82 var0 var1 var6 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main36 var2 var1 var0)) (inv_main37 (write var2 (left (getnode (read var2 var0))) (O_node (node (left (getnode (read var2 (left (getnode (read var2 var0)))))) (right (getnode (read var2 (left (getnode (read var2 var0)))))) var0 (value (getnode (read var2 (left (getnode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main25 var2 var1 var0)) (inv_main24 (write var2 var0 (O_node (node (left (getnode (read var2 var0))) (right (getnode (read var2 var0))) nullAddr (value (getnode (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main37 var2 var1 var0) (and (and (and (= var6 var2) (= var4 var1)) (= var5 var0)) (= var3 (right (getnode (read var2 var0))))))) (inv_main24 var6 var4 var3)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main7 var3 var2 var1) (and (= var1 nullAddr) (= var0 0)))) (inv_main24 var3 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main34 var2 var1 var0)) (inv_main35 (write var2 (left (getnode (read var2 var0))) (O_node (node (left (getnode (read var2 (left (getnode (read var2 var0)))))) nullAddr (parent (getnode (read var2 (left (getnode (read var2 var0)))))) (value (getnode (read var2 (left (getnode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Heap)) (or (not (and (inv_main16 var4 var3 var2) (and (not (= var1 nullAddr)) (and (and (= var5 (write var4 var2 (O_node (node (left (getnode (read var4 var2))) var3 (parent (getnode (read var4 var2))) (value (getnode (read var4 var2))))))) (= var1 var3)) (= var0 var2))))) (inv_main19 var5 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main19 var6 var4 var3) (and (and (= var2 (write var6 var4 (O_node (node (left (getnode (read var6 var4))) (right (getnode (read var6 var4))) var3 (value (getnode (read var6 var4))))))) (= var1 var4)) (= var5 var3)))) (inv_main22 var2 var1 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (inv_main16 var5 var4 var3) (and (= var1 nullAddr) (and (and (= var2 (write var5 var3 (O_node (node (left (getnode (read var5 var3))) var4 (parent (getnode (read var5 var3))) (value (getnode (read var5 var3))))))) (= var1 var4)) (= var0 var3))))) (inv_main22 var2 var1 var0 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main13 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main16 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main19 var2 var1 var0) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int)) (not (and (inv_main22 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main25 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main30 var3 var2 var1 var0) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main31 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main31 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main34 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main34 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main35 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main35 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main36 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main36 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main51 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main55 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main57 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main57 var2 var1 var0) (not (is-O_node (read var2 (left (getnode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main63 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main56 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (inv_main71 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main67 var2 var1 var0) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main82 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main83 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main89 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main91 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main90 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main94 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main96 var2 var1 var0 var3) (not (is-O_node (read var2 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/tree_cnstr.i.smt2 b/heap-theory-benchmarks/heap/tree_cnstr.i.smt2 new file mode 100644 index 00000000..3286105b --- /dev/null +++ b/heap-theory-benchmarks/heap/tree_cnstr.i.smt2 @@ -0,0 +1,108 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TreeNode 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TreeNode (getTreeNode TreeNode)) + (defObj) + ) + ( + (TreeNode (left Addr) (right Addr)) + ) +)) +(declare-fun inv_main10 (Heap Addr Addr) Bool) +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main13 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main16 (Heap Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main21 (Heap Addr Addr) Bool) +(declare-fun inv_main27 (Heap Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr) Bool) +(declare-fun inv_main3 (Heap) Bool) +(declare-fun inv_main35 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap Addr Addr) Bool) +(declare-fun inv_main43 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main55 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main3 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main35 var2 var1 var0)) (inv_main37 (write var2 (right (getTreeNode (read var2 var0))) (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var2 (right (getTreeNode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main5 var2 var1 var0)) (inv_main6 (write var2 var1 (O_TreeNode (TreeNode (left (getTreeNode (read var2 var1))) nullAddr))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main37 var2 var1 var0)) (inv_main6 (write var2 (right (getTreeNode (read var2 var0))) (O_TreeNode (TreeNode (left (getTreeNode (read var2 (right (getTreeNode (read var2 var0)))))) nullAddr))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Heap)) (or (not (and (inv_main21 var5 var4 var3) (and (= var2 0) (and (and (and (= var6 var5) (= var0 var4)) (= var1 var3)) (or (and (= (right (getTreeNode (read var5 var3))) nullAddr) (= var2 1)) (and (not (= (right (getTreeNode (read var5 var3))) nullAddr)) (= var2 0))))))) (inv_main6 var6 var0 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Int) (var6 Addr) (var7 Heap)) (or (not (and (inv_main21 var4 var3 var2) (and (= var0 0) (and (not (= var5 0)) (and (and (and (= var7 var4) (= var1 var3)) (= var6 var2)) (or (and (= (right (getTreeNode (read var4 var2))) nullAddr) (= var5 1)) (and (not (= (right (getTreeNode (read var4 var2))) nullAddr)) (= var5 0)))))))) (inv_main6 var7 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main10 var2 var1 var0)) (inv_main13 var2 var1 var0 (left (getTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main50 var3 var2 var1 var0) (and (and (and (and (= var4 var3) (= var8 var2)) (= var6 var1)) (= var5 var0)) (= var7 (left (getTreeNode (read var3 var1))))))) (inv_main43 var4 var8 var7 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main51 var4 var3 var2 var0) (and (and (and (and (= var6 var4) (= var7 var3)) (= var1 var2)) (= var8 var0)) (= var5 (right (getTreeNode (read var4 var2))))))) (inv_main43 var6 var7 var5 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Heap)) (or (not (and (inv_main6 var7 var6 var5) (and (and (and (not (= var8 nullAddr)) (and (and (and (= var10 var9) (= var1 var8)) (= var0 var4)) (= var3 nullAddr))) (= var2 0)) (and (and (= var9 var7) (= var8 var6)) (= var4 nullAddr))))) (inv_main43 var10 var1 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr)) (or (not (and (inv_main57 var3 var9 var10 var1) (and (and (and (not (= var0 nullAddr)) (and (and (and (= var14 var2) (= var11 var0)) (= var13 var6)) (= var15 nullAddr))) (and (and (and (= var2 (write var5 var7 defObj)) (= var0 var12)) (= var6 var7)) (= var4 var8))) (and (and (and (= var5 (write var3 var1 (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var3 var1))))))) (= var12 var9)) (= var7 var10)) (= var8 var1))))) (inv_main43 var14 var11 var11 var15)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main58 var4 var11 var12 var0) (and (and (and (not (= var7 nullAddr)) (and (and (and (= var3 var5) (= var13 var7)) (= var8 var1)) (= var2 nullAddr))) (and (and (and (= var5 (write var10 var15 defObj)) (= var7 var6)) (= var1 var15)) (= var9 var14))) (and (and (and (= var10 (write var4 var0 (O_TreeNode (TreeNode (left (getTreeNode (read var4 var0))) nullAddr)))) (= var6 var11)) (= var15 var12)) (= var14 var0))))) (inv_main43 var3 var13 var13 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Heap) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Heap) (var17 Addr) (var18 Addr) (var19 Addr) (var20 Heap) (var21 Addr)) (or (not (and (inv_main46 var3 var17 var18 var0 var12) (and (and (and (and (not (= var14 nullAddr)) (and (and (and (= var4 var16) (= var10 var14)) (= var11 var1)) (= var21 nullAddr))) (and (and (and (= var16 (write var20 var15 defObj)) (= var14 var9)) (= var1 var15)) (= var2 var7))) (and (= var19 nullAddr) (and (= var8 0) (and (= var12 nullAddr) (and (and (and (and (= var5 var3) (= var6 var17)) (= var13 var18)) (= var19 var0)) (= var8 (right (getTreeNode (read var3 var18))))))))) (and (and (and (= var20 var5) (= var9 nullAddr)) (= var15 var13)) (= var7 var19))))) (inv_main43 var4 var10 var10 var21)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main4 var2 var1 var0)) (inv_main5 (write var2 var1 (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var2 var1)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main55 var3 var2 var1 var0) (not (= var1 (left (getTreeNode (read var3 var0))))))) (inv_main58 var3 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main28 var2 var1 var0 var3)) (inv_main27 (write var2 var0 (O_TreeNode (TreeNode var3 (right (getTreeNode (read var2 var0)))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main29 var2 var1 var0)) (inv_main21 (write var2 (left (getTreeNode (read var2 var0))) (O_TreeNode (TreeNode (left (getTreeNode (read var2 (left (getTreeNode (read var2 var0)))))) nullAddr))) var1 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr)) (or (not (and (inv_main11 var5 var4 var3) (and (= var1 0) (and (and (and (= var0 var5) (= var2 var4)) (= var6 var3)) (or (and (= (left (getTreeNode (read var5 var3))) nullAddr) (= var1 1)) (and (not (= (left (getTreeNode (read var5 var3))) nullAddr)) (= var1 0))))))) (inv_main21 var0 var2 var6)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main11 var7 var6 var5) (and (= var1 0) (and (not (= var2 0)) (and (and (and (= var3 var7) (= var0 var6)) (= var4 var5)) (or (and (= (left (getTreeNode (read var7 var5))) nullAddr) (= var2 1)) (and (not (= (left (getTreeNode (read var7 var5))) nullAddr)) (= var2 0)))))))) (inv_main21 var3 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main49 var3 var2 var1 var0) (= (left (getTreeNode (read var3 var1))) nullAddr))) (inv_main51 var3 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main49 var3 var2 var1 var0) (not (= (left (getTreeNode (read var3 var1))) nullAddr)))) (inv_main50 var3 var2 var1 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main13 var3 var2 var1 var0) (= var0 nullAddr))) (inv_main11 var3 var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (and (inv_main13 var6 var5 var4 var0) (and (= var7 0) (and (not (= var0 nullAddr)) (and (and (and (= var2 var6) (= var1 var5)) (= var3 var4)) (= var7 (right (getTreeNode (read var6 var4))))))))) (inv_main11 var2 var1 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main43 var3 var2 var1 var0)) (inv_main46 var3 var2 var1 var0 (left (getTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main46 var5 var4 var3 var2 var0) (and (not (= var6 nullAddr)) (and (= var9 0) (and (= var0 nullAddr) (and (and (and (and (= var7 var5) (= var8 var4)) (= var1 var3)) (= var6 var2)) (= var9 (right (getTreeNode (read var5 var3)))))))))) (inv_main55 var7 var8 var1 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main13 var7 var6 var5 var0) (and (not (= var3 0)) (and (not (= var8 0)) (and (not (= var0 nullAddr)) (and (and (and (= var2 var7) (= var1 var6)) (= var4 var5)) (= var8 (right (getTreeNode (read var7 var5)))))))))) (inv_main16 var2 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main55 var3 var2 var1 var0) (= var1 (left (getTreeNode (read var3 var0)))))) (inv_main57 var3 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 TreeNode) (var6 Int) (var7 Addr) (var8 Heap)) (or (not (and (inv_main21 var4 var3 var2) (and (not (= var0 0)) (and (not (= var6 0)) (and (and (and (= var8 var4) (= var1 var3)) (= var7 var2)) (or (and (= (right (getTreeNode (read var4 var2))) nullAddr) (= var6 1)) (and (not (= (right (getTreeNode (read var4 var2))) nullAddr)) (= var6 0)))))))) (inv_main36 (newHeap (alloc var8 (O_TreeNode var5))) var1 var7 (newAddr (alloc var8 (O_TreeNode var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (inv_main36 var3 var2 var1 var0)) (inv_main35 (write var3 var1 (O_TreeNode (TreeNode (left (getTreeNode (read var3 var1))) var0))) var2 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (and (inv_main46 var4 var3 var2 var1 var0) (not (= var0 nullAddr)))) (inv_main49 var4 var3 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main46 var5 var4 var3 var2 var0) (and (not (= var9 0)) (and (= var0 nullAddr) (and (and (and (and (= var7 var5) (= var8 var4)) (= var1 var3)) (= var6 var2)) (= var9 (right (getTreeNode (read var5 var3))))))))) (inv_main49 var7 var8 var1 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main27 var2 var1 var0)) (inv_main29 (write var2 (left (getTreeNode (read var2 var0))) (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var2 (left (getTreeNode (read var2 var0))))))))) var1 var0)))) +(assert (forall ((var0 Addr) (var1 TreeNode) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (inv_main11 var7 var6 var5) (and (not (= var8 0)) (and (not (= var2 0)) (and (and (and (= var3 var7) (= var0 var6)) (= var4 var5)) (or (and (= (left (getTreeNode (read var7 var5))) nullAddr) (= var2 1)) (and (not (= (left (getTreeNode (read var7 var5))) nullAddr)) (= var2 0)))))))) (inv_main28 (newHeap (alloc var3 (O_TreeNode var1))) var0 var4 (newAddr (alloc var3 (O_TreeNode var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr)) (or (not (and (inv_main13 var6 var5 var4 var0) (and (= var7 0) (and (not (= var8 0)) (and (not (= var0 nullAddr)) (and (and (and (= var2 var6) (= var1 var5)) (= var3 var4)) (= var8 (right (getTreeNode (read var6 var4)))))))))) (inv_main17 var2 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main16 var4 var3 var2) (and (and (and (= var0 var4) (= var1 var3)) (= var6 var2)) (= var5 (left (getTreeNode (read var4 var2))))))) (inv_main10 var0 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (inv_main17 var4 var3 var2) (and (and (and (= var0 var4) (= var1 var3)) (= var6 var2)) (= var5 (right (getTreeNode (read var4 var2))))))) (inv_main10 var0 var1 var5)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (inv_main6 var3 var2 var1) (not (= var0 0)))) (inv_main10 var3 var2 var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 TreeNode)) (or (not (inv_main3 var1)) (inv_main4 (newHeap (alloc var1 (O_TreeNode var2))) (newAddr (alloc var1 (O_TreeNode var2))) var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main4 var2 var1 var0) (not (is-O_TreeNode (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main5 var2 var1 var0) (not (is-O_TreeNode (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main10 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main13 var3 var2 var1 var0) (and (not (= var0 nullAddr)) (not (is-O_TreeNode (read var3 var1)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main16 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main17 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main11 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main28 var2 var1 var0 var3) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main27 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main27 var2 var1 var0) (not (is-O_TreeNode (read var2 (left (getTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main29 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main29 var2 var1 var0) (not (is-O_TreeNode (read var2 (left (getTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main21 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main36 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main35 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main35 var2 var1 var0) (not (is-O_TreeNode (read var2 (right (getTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var1 var0) (not (is-O_TreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (not (and (inv_main37 var2 var1 var0) (not (is-O_TreeNode (read var2 (right (getTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main43 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (inv_main46 var4 var3 var2 var1 var0) (and (= var0 nullAddr) (not (is-O_TreeNode (read var4 var2)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main49 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main50 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main51 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main55 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main57 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (inv_main58 var3 var2 var1 var0) (not (is-O_TreeNode (read var3 var0))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/tree_max.c.smt2 b/heap-theory-benchmarks/heap/tree_max.c.smt2 new file mode 100644 index 00000000..7a73e0fe --- /dev/null +++ b/heap-theory-benchmarks/heap/tree_max.c.smt2 @@ -0,0 +1,138 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (left Addr) (right Addr)) + ) +)) +(declare-fun check0 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check1 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check10 (Heap Addr Int Heap Addr Int Addr Int) Bool) +(declare-fun check2 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check3 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check4 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check5 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check6 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check7 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check8 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check9 (Heap Addr Int Heap Addr Int Addr Int) Bool) +(declare-fun check_post (Heap Addr Int Heap) Bool) +(declare-fun check_pre (Heap Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main3 (Heap) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Addr Int) Bool) +(declare-fun max0 (Heap Addr Heap Addr) Bool) +(declare-fun max1 (Heap Addr Heap Addr Int) Bool) +(declare-fun max10 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max11 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max12 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max13 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max14 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max15 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max3 (Heap Addr Heap Addr) Bool) +(declare-fun max4 (Heap Addr Heap Addr) Bool) +(declare-fun max5 (Heap Addr Heap Addr Int) Bool) +(declare-fun max6 (Heap Addr Heap Addr Int Addr) Bool) +(declare-fun max7 (Heap Addr Heap Addr Int Int) Bool) +(declare-fun max8 (Heap Addr Heap Addr Int Int Addr) Bool) +(declare-fun max9 (Heap Addr Heap Addr Int Int Int) Bool) +(declare-fun max_post (Heap Addr Heap Int) Bool) +(declare-fun max_pre (Heap Addr) Bool) +(declare-fun nondet_tree0 (Heap Heap) Bool) +(declare-fun nondet_tree1 (Heap Heap Addr) Bool) +(declare-fun nondet_tree10 (Heap Heap Addr) Bool) +(declare-fun nondet_tree11 (Heap Heap Addr) Bool) +(declare-fun nondet_tree12 (Heap Heap Addr) Bool) +(declare-fun nondet_tree3 (Heap Heap) Bool) +(declare-fun nondet_tree4 (Heap Heap) Bool) +(declare-fun nondet_tree5 (Heap Heap) Bool) +(declare-fun nondet_tree6 (Heap Heap Addr) Bool) +(declare-fun nondet_tree7 (Heap Heap Addr) Bool) +(declare-fun nondet_tree8 (Heap Heap Addr) Bool) +(declare-fun nondet_tree9 (Heap Heap Addr) Bool) +(declare-fun nondet_tree_post (Heap Heap Addr) Bool) +(declare-fun nondet_tree_pre (Heap) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap)) (or (not (inv_main2 var0)) (inv_main3 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Heap)) (or (not (and (inv_main3 var2) (nondet_tree_post var2 var1 var0))) (inv_main7 var1 var0 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var4 var2 var0) (max_post var4 var0 var1 var3))) (inv_main9 var1 var2 var3 var2 var3)))) +(assert (forall ((var0 Heap)) (or (not (inv_main3 var0)) (nondet_tree_pre var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap)) (or (not (inv_main7 var2 var1 var0)) (max_pre var2 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Heap) (var4 Int)) (or (not (inv_main9 var3 var1 var4 var0 var2)) (check_pre var3 var0 var2)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Heap)) (or (not (check_pre var2 var1 var0)) (check0 var2 var1 var0 var2 var1 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (check0 var5 var4 var2 var1 var3 var0) (not (= var4 nullAddr)))) (check3 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (and (check0 var5 var4 var2 var1 var3 var0) (= var4 nullAddr))) (check4 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check3 var5 var4 var2 var1 var3 var0)) (check5 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check5 var5 var4 var2 var1 var3 var0)) (check8 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (check8 var5 var4 var2 var1 var3 var0) (not (= var6 0)))) (check6 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Int)) (or (not (and (check8 var5 var4 var2 var1 var3 var0) (= var6 0))) (check7 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check6 var5 var4 var2 var1 var3 var0)) (check9 var5 var4 var2 var1 var3 var0 (left (getnode (read var5 var4))) var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (check9 var8 var7 var4 var2 var6 var1 var3 var0) (check_post var8 var3 var0 var5))) (check2 var5 var7 var4 var2 var6 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check7 var5 var4 var2 var1 var3 var0)) (check10 var5 var4 var2 var1 var3 var0 (right (getnode (read var5 var4))) var2)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Heap) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (check10 var7 var6 var4 var3 var5 var0 var8 var2) (check_post var7 var8 var2 var1))) (check2 var1 var6 var4 var3 var5 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check4 var5 var4 var2 var1 var3 var0)) (check2 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check2 var5 var4 var2 var1 var3 var0)) (check1 var5 var4 var2 var1 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (check1 var5 var4 var2 var1 var3 var0)) (check_post var1 var3 var0 var5)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (check3 var5 var4 var2 var1 var3 var0) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (check3 var5 var4 var2 var1 var3 var0) (not (<= 0 (+ var2 (* (- 1) (data (getnode (read var5 var4))))))))))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (check6 var5 var4 var2 var1 var3 var0) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (check9 var7 var6 var4 var2 var5 var1 var3 var0)) (check_pre var7 var3 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (not (and (check7 var5 var4 var2 var1 var3 var0) (not (is-O_node (read var5 var4))))))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr)) (or (not (check10 var6 var5 var3 var2 var4 var0 var7 var1)) (check_pre var6 var7 var1)))) +(assert (forall ((var0 Addr) (var1 Heap)) (or (not (max_pre var1 var0)) (max0 var1 var0 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (max0 var3 var1 var0 var2) (= var1 nullAddr))) (max3 var3 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (and (max0 var3 var1 var0 var2) (not (= var1 nullAddr)))) (max4 var3 var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (max3 var3 var1 var0 var2)) (max1 var3 var1 var0 var2 (- 2147483648))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap)) (or (not (max4 var3 var1 var0 var2)) (max5 var3 var1 var0 var2 (data (getnode (read var3 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (or (not (max5 var4 var2 var0 var3 var1)) (max6 var4 var2 var0 var3 var1 (left (getnode (read var4 var2))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap)) (or (not (and (max6 var7 var4 var1 var6 var3 var2) (max_post var7 var2 var0 var5))) (max7 var0 var4 var1 var6 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (or (not (max7 var5 var2 var0 var4 var1 var3)) (max8 var5 var2 var0 var4 var1 var3 (right (getnode (read var5 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Heap) (var8 Int)) (or (not (and (max8 var7 var2 var0 var6 var1 var5 var4) (max_post var7 var4 var3 var8))) (max9 var3 var2 var0 var6 var1 var5 var8)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (max9 var6 var3 var1 var5 var2 var4 var0) (and (<= 0 (+ var4 (* (- 1) var2))) (<= 0 (+ var4 (* (- 1) var0)))))) (max11 var6 var3 var1 var5 var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (max9 var6 var3 var1 var5 var2 var4 var0) (or (not (<= 0 (+ var4 (* (- 1) var2)))) (not (<= 0 (+ var4 (* (- 1) var0))))))) (max12 var6 var3 var1 var5 var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (max11 var6 var3 var1 var5 var2 var4 var0)) (max1 var6 var3 var1 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (max12 var6 var3 var1 var5 var2 var4 var0)) (max10 var6 var3 var1 var5 var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (max10 var6 var3 var1 var5 var2 var4 var0) (and (<= 0 (+ var0 (* (- 1) var2))) (<= 0 (+ var0 (* (- 1) var4)))))) (max14 var6 var3 var1 var5 var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (and (max10 var6 var3 var1 var5 var2 var4 var0) (or (not (<= 0 (+ var0 (* (- 1) var2)))) (not (<= 0 (+ var0 (* (- 1) var4))))))) (max15 var6 var3 var1 var5 var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (max14 var6 var3 var1 var5 var2 var4 var0)) (max1 var6 var3 var1 var5 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (max15 var6 var3 var1 var5 var2 var4 var0)) (max13 var6 var3 var1 var5 var2 var4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (max13 var6 var3 var1 var5 var2 var4 var0)) (max1 var6 var3 var1 var5 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Heap)) (or (not (max1 var4 var1 var0 var3 var2)) (max_post var0 var3 var4 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap)) (not (and (max4 var3 var1 var0 var2) (not (is-O_node (read var3 var1))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap)) (not (and (max5 var4 var2 var0 var3 var1) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap)) (or (not (max6 var5 var3 var0 var4 var2 var1)) (max_pre var5 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Int) (var4 Addr) (var5 Heap)) (not (and (max7 var5 var2 var0 var4 var1 var3) (not (is-O_node (read var5 var2))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap)) (or (not (max8 var6 var2 var0 var5 var1 var4 var3)) (max_pre var6 var3)))) +(assert (forall ((var0 Heap)) (or (not (nondet_tree_pre var0)) (nondet_tree0 var0 var0)))) +(assert (forall ((var0 Heap) (var1 Heap)) (or (not (nondet_tree0 var1 var0)) (nondet_tree5 var1 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap)) (or (not (and (nondet_tree5 var2 var0) (not (= var1 0)))) (nondet_tree3 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap)) (or (not (and (nondet_tree5 var2 var0) (= var1 0))) (nondet_tree4 var2 var0)))) +(assert (forall ((var0 Heap) (var1 Heap)) (or (not (nondet_tree3 var1 var0)) (nondet_tree1 var1 var0 0)))) +(assert (forall ((var0 Heap) (var1 node) (var2 Heap)) (or (not (nondet_tree4 var2 var0)) (nondet_tree6 (newHeap (alloc var2 (O_node var1))) var0 (newAddr (alloc var2 (O_node var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree6 var2 var0 var1)) (nondet_tree8 var2 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Heap)) (or (not (nondet_tree8 var3 var0 var2)) (nondet_tree7 (write var3 var2 (O_node (node var1 (left (getnode (read var3 var2))) (right (getnode (read var3 var2)))))) var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree7 var2 var0 var1)) (nondet_tree10 var2 var0 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Heap)) (or (not (and (nondet_tree10 var4 var1 var2) (nondet_tree_post var4 var3 var0))) (nondet_tree9 (write var4 var2 (O_node (node (data (getnode (read var4 var2))) var0 (right (getnode (read var4 var2)))))) var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree9 var2 var0 var1)) (nondet_tree12 var2 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (nondet_tree12 var3 var0 var2) (nondet_tree_post var3 var1 var4))) (nondet_tree11 (write var3 var2 (O_node (node (data (getnode (read var3 var2))) (left (getnode (read var3 var2))) var4))) var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree11 var2 var0 var1)) (nondet_tree1 var2 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr)) (or (not (nondet_tree1 var1 var0 var2)) (nondet_tree_post var0 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (not (and (nondet_tree8 var2 var0 var1) (not (is-O_node (read var2 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree10 var2 var0 var1)) (nondet_tree_pre var2)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Heap)) (not (and (and (nondet_tree10 var4 var1 var2) (nondet_tree_post var4 var3 var0)) (not (is-O_node (read var4 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree12 var2 var0 var1)) (nondet_tree_pre var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (and (nondet_tree12 var3 var0 var2) (nondet_tree_post var3 var1 var4)) (not (is-O_node (read var3 var2))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/tree_max_incorrect.c.smt2 b/heap-theory-benchmarks/heap/tree_max_incorrect.c.smt2 new file mode 100644 index 00000000..defd4ab6 --- /dev/null +++ b/heap-theory-benchmarks/heap/tree_max_incorrect.c.smt2 @@ -0,0 +1,126 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status unsat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (node 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_node (getnode node)) + (defObj) + ) + ( + (node (data Int) (left Addr) (right Addr)) + ) +)) +(declare-fun check0 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check1 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check10 (Heap Addr Int Heap Addr Int Addr Int) Bool) +(declare-fun check2 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check3 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check4 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check5 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check6 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check7 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check8 (Heap Addr Int Heap Addr Int) Bool) +(declare-fun check9 (Heap Addr Int Heap Addr Int Addr Int) Bool) +(declare-fun check_post (Heap Addr Int Heap) Bool) +(declare-fun check_pre (Heap Addr Int) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main3 (Heap) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Int Addr Int) Bool) +(declare-fun max0 (Heap Addr Heap Addr) Bool) +(declare-fun max1 (Heap Addr Heap Addr Int) Bool) +(declare-fun max10 (Heap Addr Heap Addr Int Int) Bool) +(declare-fun max3 (Heap Addr Heap Addr) Bool) +(declare-fun max4 (Heap Addr Heap Addr) Bool) +(declare-fun max5 (Heap Addr Heap Addr Addr) Bool) +(declare-fun max6 (Heap Addr Heap Addr Int) Bool) +(declare-fun max7 (Heap Addr Heap Addr Int Addr) Bool) +(declare-fun max8 (Heap Addr Heap Addr Int Int) Bool) +(declare-fun max9 (Heap Addr Heap Addr Int Int) Bool) +(declare-fun max_post (Heap Addr Heap Int) Bool) +(declare-fun max_pre (Heap Addr) Bool) +(declare-fun nondet_tree0 (Heap Heap) Bool) +(declare-fun nondet_tree1 (Heap Heap Addr) Bool) +(declare-fun nondet_tree10 (Heap Heap Addr) Bool) +(declare-fun nondet_tree11 (Heap Heap Addr) Bool) +(declare-fun nondet_tree12 (Heap Heap Addr) Bool) +(declare-fun nondet_tree3 (Heap Heap) Bool) +(declare-fun nondet_tree4 (Heap Heap) Bool) +(declare-fun nondet_tree5 (Heap Heap) Bool) +(declare-fun nondet_tree6 (Heap Heap Addr) Bool) +(declare-fun nondet_tree7 (Heap Heap Addr) Bool) +(declare-fun nondet_tree8 (Heap Heap Addr) Bool) +(declare-fun nondet_tree9 (Heap Heap Addr) Bool) +(declare-fun nondet_tree_post (Heap Heap Addr) Bool) +(declare-fun nondet_tree_pre (Heap) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (and (inv_main3 var0) (nondet_tree_post var0 var2 var1))) (inv_main7 var2 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Int) (var4 Heap)) (or (not (and (inv_main7 var0 var1 var2) (max_post var0 var2 var4 var3))) (inv_main9 var4 var1 var3 var1 var3)))) +(assert (forall ((var0 Heap)) (or (not (inv_main2 var0)) (inv_main3 var0)))) +(assert (forall ((var0 Heap)) (or (not (inv_main3 var0)) (nondet_tree_pre var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main7 var0 var1 var2)) (max_pre var0 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int)) (or (not (inv_main9 var0 var3 var4 var2 var1)) (check_pre var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Addr)) (or (not (check_pre var0 var2 var1)) (check0 var0 var2 var1 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (and (check0 var0 var5 var4 var1 var2 var3) (not (= var5 nullAddr)))) (check3 var0 var5 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (and (check0 var0 var5 var4 var1 var2 var3) (= var5 nullAddr))) (check4 var0 var5 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check3 var0 var5 var4 var1 var2 var3)) (check5 var0 var5 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check5 var0 var5 var4 var1 var2 var3)) (check8 var0 var5 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr)) (or (not (and (check8 var0 var6 var5 var1 var3 var4) (not (= var2 0)))) (check6 var0 var6 var5 var1 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Int) (var3 Addr) (var4 Int) (var5 Int) (var6 Addr)) (or (not (and (check8 var0 var6 var5 var1 var3 var4) (= var2 0))) (check7 var0 var6 var5 var1 var3 var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check6 var0 var5 var4 var1 var2 var3)) (check9 var0 var5 var4 var1 var2 var3 (left (getnode (read var0 var5))) var4)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap) (var5 Int) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (check9 var0 var8 var6 var2 var3 var5 var1 var7) (check_post var0 var1 var7 var4))) (check2 var4 var8 var6 var2 var3 var5)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check7 var0 var5 var4 var1 var2 var3)) (check10 var0 var5 var4 var1 var2 var3 (right (getnode (read var0 var5))) var4)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Heap) (var3 Addr) (var4 Int) (var5 Addr) (var6 Int) (var7 Int) (var8 Addr)) (or (not (and (check10 var0 var8 var7 var2 var5 var6 var3 var4) (check_post var0 var3 var4 var1))) (check2 var1 var8 var7 var2 var5 var6)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check4 var0 var5 var4 var1 var2 var3)) (check2 var0 var5 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check2 var0 var5 var4 var1 var2 var3)) (check1 var0 var5 var4 var1 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (or (not (check1 var0 var5 var4 var1 var2 var3)) (check_post var1 var2 var3 var0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (not (and (check3 var0 var5 var4 var1 var2 var3) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (not (and (check3 var0 var5 var4 var1 var2 var3) (not (<= 0 (+ var4 (* (- 1) (data (getnode (read var0 var5))))))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (not (and (check6 var0 var5 var4 var1 var2 var3) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Int) (var5 Int) (var6 Int) (var7 Addr)) (or (not (check9 var0 var7 var5 var2 var3 var4 var1 var6)) (check_pre var0 var1 var6)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Int) (var5 Addr)) (not (and (check7 var0 var5 var4 var1 var2 var3) (not (is-O_node (read var0 var5))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Addr) (var5 Int) (var6 Int) (var7 Addr)) (or (not (check10 var0 var7 var6 var1 var4 var5 var2 var3)) (check_pre var0 var2 var3)))) +(assert (forall ((var0 Heap) (var1 Addr)) (or (not (max_pre var0 var1)) (max0 var0 var1 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (max0 var0 var3 var1 var2) (= var3 nullAddr))) (max3 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (max0 var0 var3 var1 var2) (not (= var3 nullAddr)))) (max4 var0 var3 var1 var2)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (max3 var0 var3 var1 var2)) (max1 var0 var3 var1 var2 (- 2147483648))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (max4 var0 var3 var1 var2)) (max5 var0 var3 var1 var2 (left (getnode (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Int) (var4 Heap) (var5 Addr) (var6 Addr)) (or (not (and (max5 var0 var6 var1 var5 var2) (max_post var0 var2 var4 var3))) (max6 var4 var6 var1 var5 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (max6 var0 var4 var2 var3 var1)) (max7 var0 var4 var2 var3 var1 (right (getnode (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr)) (or (not (and (max7 var0 var7 var3 var6 var1 var4) (max_post var0 var4 var2 var5))) (max8 var2 var7 var3 var6 var1 var5)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (max8 var0 var5 var2 var4 var1 var3) (<= 0 (+ var1 (* (- 1) var3))))) (max9 var0 var5 var2 var4 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (and (max8 var0 var5 var2 var4 var1 var3) (not (<= 0 (+ var1 (* (- 1) var3)))))) (max10 var0 var5 var2 var4 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (max9 var0 var5 var2 var4 var1 var3)) (max1 var0 var5 var2 var4 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr)) (or (not (max10 var0 var5 var2 var4 var1 var3)) (max1 var0 var5 var2 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (or (not (max1 var0 var4 var2 var3 var1)) (max_post var2 var3 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (max4 var0 var3 var1 var2) (not (is-O_node (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (max5 var0 var4 var1 var3 var2)) (max_pre var0 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr)) (not (and (max6 var0 var4 var2 var3 var1) (not (is-O_node (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr)) (or (not (max7 var0 var5 var2 var4 var1 var3)) (max_pre var0 var3)))) +(assert (forall ((var0 Heap)) (or (not (nondet_tree_pre var0)) (nondet_tree0 var0 var0)))) +(assert (forall ((var0 Heap) (var1 Heap)) (or (not (nondet_tree0 var0 var1)) (nondet_tree5 var0 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap)) (or (not (and (nondet_tree5 var0 var2) (not (= var1 0)))) (nondet_tree3 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap)) (or (not (and (nondet_tree5 var0 var2) (= var1 0))) (nondet_tree4 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Heap)) (or (not (nondet_tree3 var0 var1)) (nondet_tree1 var0 var1 0)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 node)) (or (not (nondet_tree4 var0 var1)) (nondet_tree6 (newHeap (alloc var0 (O_node var2))) var1 (newAddr (alloc var0 (O_node var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree6 var0 var2 var1)) (nondet_tree8 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Int)) (or (not (nondet_tree8 var0 var2 var1)) (nondet_tree7 (write var0 var1 (O_node (node var3 (left (getnode (read var0 var1))) (right (getnode (read var0 var1)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree7 var0 var2 var1)) (nondet_tree10 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr)) (or (not (and (nondet_tree10 var0 var3 var1) (nondet_tree_post var0 var2 var4))) (nondet_tree9 (write var0 var1 (O_node (node (data (getnode (read var0 var1))) var4 (right (getnode (read var0 var1)))))) var3 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree9 var0 var2 var1)) (nondet_tree12 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap)) (or (not (and (nondet_tree12 var0 var2 var1) (nondet_tree_post var0 var4 var3))) (nondet_tree11 (write var0 var1 (O_node (node (data (getnode (read var0 var1))) (left (getnode (read var0 var1))) var3))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree11 var0 var2 var1)) (nondet_tree1 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr)) (or (not (nondet_tree1 var0 var1 var2)) (nondet_tree_post var1 var0 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (not (and (nondet_tree8 var0 var2 var1) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree10 var0 var2 var1)) (nondet_tree_pre var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr)) (not (and (and (nondet_tree10 var0 var3 var1) (nondet_tree_post var0 var2 var4)) (not (is-O_node (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap)) (or (not (nondet_tree12 var0 var2 var1)) (nondet_tree_pre var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Heap)) (not (and (and (nondet_tree12 var0 var2 var1) (nondet_tree_post var0 var4 var3)) (not (is-O_node (read var0 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/tree_of_cslls.i.smt2 b/heap-theory-benchmarks/heap/tree_of_cslls.i.smt2 new file mode 100644 index 00000000..2fe1a34b --- /dev/null +++ b/heap-theory-benchmarks/heap/tree_of_cslls.i.smt2 @@ -0,0 +1,170 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TListNode 0) (TTreeNode 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TListNode (getTListNode TListNode)) + (O_TTreeNode (getTTreeNode TTreeNode)) + (defObj) + ) + ( + (TListNode (next Addr)) + ) + ( + (TTreeNode (left Addr) (right Addr) (list Addr)) + ) +)) +(declare-fun inv_main11 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main15 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main2 (Heap) Bool) +(declare-fun inv_main22 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main25 (Heap Addr Addr Addr Int) Bool) +(declare-fun inv_main28 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main33 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main34 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main47 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main49 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main52 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main57 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main59 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main60 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main67 (Heap Addr Addr Addr Addr Int) Bool) +(declare-fun inv_main70 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main71 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main72 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main75 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main76 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main78 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main79 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main8 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main80 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main81 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main82 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main83 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main86 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main9 (Heap Addr Addr Addr Addr) Bool) +(assert (inv_main2 emptyHeap)) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main34 var3 var1 var2 var4 var0)) (inv_main49 (write var3 var0 (O_TTreeNode (TTreeNode nullAddr (right (getTTreeNode (read var3 var0))) (list (getTTreeNode (read var3 var0)))))) var1 var2 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (inv_main52 var4 var1 var2 var5 var0 var3)) (inv_main51 (write var4 var0 (O_TTreeNode (TTreeNode (left (getTTreeNode (read var4 var0))) (right (getTTreeNode (read var4 var0))) var3))) var1 var2 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Int) (var11 Addr)) (or (not (and (inv_main67 var9 var1 var5 var11 var6 var10) (and (not (= nullAddr var0)) (and (= var3 0) (and (= var10 0) (and (and (and (and (and (= var8 var9) (= var7 var1)) (= var2 var5)) (= var4 var11)) (= var0 var6)) (or (and (not (= nullAddr (right (getTTreeNode (read var9 var5))))) (= var3 1)) (and (= nullAddr (right (getTTreeNode (read var9 var5)))) (= var3 0))))))))) (inv_main76 var8 var7 var2 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Int) (var11 Addr) (var12 TListNode) (var13 Addr) (var14 Addr) (var15 Addr)) (or (not (and (inv_main11 var7 var2 var4 var8 var11) (and (and (and (and (and (and (= var1 (newHeap (alloc var9 (O_TListNode var12)))) (= var6 var15)) (= var5 var3)) (= var0 var13)) (= var14 (newAddr (alloc var9 (O_TListNode var12))))) (not (= var10 0))) (and (and (and (= var9 (write var7 (list (getTTreeNode (read var7 var2))) (O_TListNode (TListNode var11)))) (= var15 var2)) (= var3 var4)) (= var13 var8))))) (inv_main15 var1 var6 var5 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Int) (var8 Heap) (var9 Heap) (var10 Addr) (var11 Addr) (var12 TListNode) (var13 Addr) (var14 Addr)) (or (not (and (inv_main17 var9 var0 var4 var11) (and (and (and (and (and (and (= var5 (newHeap (alloc var8 (O_TListNode var12)))) (= var6 var14)) (= var13 var2)) (= var1 var3)) (= var10 (newAddr (alloc var8 (O_TListNode var12))))) (not (= var7 0))) (and (and (and (= var8 (write var9 (list (getTTreeNode (read var9 var0))) (O_TListNode (TListNode var11)))) (= var14 var0)) (= var2 var4)) (= var3 var11))))) (inv_main15 var5 var6 var13 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var0 var1 var4 var2) (not (= nullAddr (left (getTTreeNode (read var3 var1))))))) (inv_main71 var3 var0 var1 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main82 var4 var1 var2 var5 var3 var0) (= var0 (next (getTListNode (read var4 (list (getTTreeNode (read var4 var2))))))))) (inv_main80 var4 var1 var2 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main18 var3 var1 var2 var4 var0)) (inv_main17 (write var3 var4 (O_TListNode (TListNode var0))) var1 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main40 var3 var1 var2 var4 var0)) (inv_main34 (write var3 var2 (O_TTreeNode (TTreeNode var0 (right (getTTreeNode (read var3 var2))) (list (getTTreeNode (read var3 var2)))))) var1 var2 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main47 var3 var1 var2 var4 var0)) (inv_main34 (write var3 var2 (O_TTreeNode (TTreeNode (left (getTTreeNode (read var3 var2))) var0 (list (getTTreeNode (read var3 var2)))))) var1 var2 var4 var0)))) +(assert (forall ((var0 TListNode) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Addr) (var8 Addr)) (or (not (and (inv_main6 var6 var1 var4 var7) (and (and (and (= var3 (write var6 var1 (O_TTreeNode (TTreeNode (left (getTTreeNode (read var6 var1))) nullAddr (list (getTTreeNode (read var6 var1))))))) (= var2 var1)) (= var5 var4)) (= var8 var7)))) (inv_main9 (newHeap (alloc var3 (O_TListNode var0))) var2 var5 var8 (newAddr (alloc var3 (O_TListNode var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main64 var3 var0 var1 var4 var2)) (and (or (not (not (= nullAddr (left (getTTreeNode (read var3 var1)))))) (inv_main67 var3 var0 var1 var4 var2 1)) (or (not (= nullAddr (left (getTTreeNode (read var3 var1))))) (inv_main67 var3 var0 var1 var4 var2 0)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 TTreeNode) (var12 Heap) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main33 var12 var4 var6 var13 var3) (and (and (and (and (and (and (= var18 (newHeap (alloc var5 (O_TTreeNode var11)))) (= var17 var14)) (= var1 var16)) (= var10 var9)) (= var7 var8)) (= var0 (newAddr (alloc var5 (O_TTreeNode var11))))) (and (not (= var2 0)) (and (not (= var15 0)) (and (and (and (and (and (= var5 var12) (= var14 var4)) (= var16 var6)) (= var9 var13)) (= var8 var3)) (or (and (= nullAddr (left (getTTreeNode (read var12 var6)))) (= var15 1)) (and (not (= nullAddr (left (getTTreeNode (read var12 var6))))) (= var15 0))))))))) (inv_main40 var18 var17 var1 var10 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main57 var3 var1 var2 var4 var0)) (inv_main60 var3 var1 var2 var4 var0 (next (getTListNode (read var3 (list (getTTreeNode (read var3 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main33 var9 var3 var6 var10 var2) (and (= var4 0) (and (and (and (and (and (= var0 var9) (= var8 var3)) (= var5 var6)) (= var7 var10)) (= var1 var2)) (or (and (= nullAddr (left (getTTreeNode (read var9 var6)))) (= var4 1)) (and (not (= nullAddr (left (getTTreeNode (read var9 var6))))) (= var4 0))))))) (inv_main36 var0 var8 var5 var7 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Addr)) (or (not (and (inv_main33 var9 var1 var5 var10 var0) (and (= var8 0) (and (not (= var3 0)) (and (and (and (and (and (= var2 var9) (= var11 var1)) (= var4 var5)) (= var7 var10)) (= var6 var0)) (or (and (= nullAddr (left (getTTreeNode (read var9 var5)))) (= var3 1)) (and (not (= nullAddr (left (getTTreeNode (read var9 var5))))) (= var3 0)))))))) (inv_main36 var2 var11 var4 var7 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (inv_main60 var4 var1 var3 var5 var0 var2)) (inv_main59 (write var4 var5 (O_TListNode (TListNode var2))) var1 var3 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main25 var3 var1 var2 var5 var4) (= var4 0))) (inv_main33 var3 var1 var2 var5 var0)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Heap) (var7 Int) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main25 var6 var2 var3 var8 var7) (and (= var1 0) (and (not (= var7 0)) (and (and (and (and (= var4 var6) (= var9 var2)) (= var5 var3)) (= var0 var8)) (or (and (not (= nullAddr (right (getTTreeNode (read var6 var3))))) (= var1 1)) (and (= nullAddr (right (getTTreeNode (read var6 var3)))) (= var1 0)))))))) (inv_main33 var4 var9 var5 var0 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main70 var3 var0 var1 var4 var2) (= nullAddr (left (getTTreeNode (read var3 var1)))))) (inv_main72 var3 var0 var1 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main83 var3 var0 var1 var4 var2)) (inv_main86 var3 var0 var1 var4 var2 (next (getTListNode (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main75 var3 var0 var1 var4 var2)) (inv_main82 var3 var0 var1 var4 var2 (list (getTTreeNode (read var3 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main81 var7 var1 var4 var9 var5) (and (and (and (and (and (= var0 var7) (= var3 var1)) (= var2 var4)) (= var8 var9)) (= var10 var5)) (= var6 (next (getTListNode (read var7 (list (getTTreeNode (read var7 var4)))))))))) (inv_main83 var0 var3 var2 var6 var10)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main76 var3 var0 var1 var4 var2) (= var1 (left (getTTreeNode (read var3 var2)))))) (inv_main78 var3 var0 var1 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main71 var9 var0 var5 var10 var6) (and (and (and (and (and (= var7 var9) (= var8 var0)) (= var2 var5)) (= var4 var10)) (= var3 var6)) (= var1 (left (getTTreeNode (read var9 var5))))))) (inv_main64 var7 var8 var1 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main72 var7 var0 var3 var8 var4) (and (and (and (and (and (= var1 var7) (= var5 var0)) (= var2 var3)) (= var6 var8)) (= var10 var4)) (= var9 (right (getTTreeNode (read var7 var3))))))) (inv_main64 var1 var5 var9 var6 var10)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Heap)) (or (not (and (inv_main80 var8 var2 var5 var9 var6) (and (and (not (= nullAddr var10)) (and (and (and (and (= var13 (write var8 (list (getTTreeNode (read var8 var5))) defObj)) (= var0 var2)) (= var4 var5)) (= var12 var9)) (= var3 var6))) (and (and (and (= var1 (write var13 var4 defObj)) (= var10 var0)) (= var11 var4)) (= var7 var12))))) (inv_main64 var1 var10 var10 var7 nullAddr)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main12 var3 var1 var2 var4) (and (not (= nullAddr var1)) (= var0 0)))) (inv_main64 var3 var1 var1 var4 nullAddr)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 TTreeNode) (var4 Heap) (var5 Heap)) (or (not (and (inv_main2 var5) (and (= var4 (newHeap (alloc var5 (O_TTreeNode var3)))) (= var1 (newAddr (alloc var5 (O_TTreeNode var3))))))) (inv_main5 var4 var1 var0 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 TTreeNode) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main49 var9 var1 var5 var10 var0) (and (and (and (and (= var4 (write var9 var0 (O_TTreeNode (TTreeNode (left (getTTreeNode (read var9 var0))) nullAddr (list (getTTreeNode (read var9 var0))))))) (= var7 var1)) (= var6 var5)) (= var3 var10)) (= var8 var0)))) (inv_main52 (newHeap (alloc var4 (O_TTreeNode var2))) var7 var6 var3 var8 (newAddr (alloc var4 (O_TTreeNode var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main5 var2 var0 var1 var3)) (inv_main6 (write var2 var0 (O_TTreeNode (TTreeNode nullAddr (right (getTTreeNode (read var2 var0))) (list (getTTreeNode (read var2 var0)))))) var0 var1 var3)))) +(assert (forall ((var0 TTreeNode) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Int) (var10 Addr) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr) (var18 Heap)) (or (not (and (inv_main36 var11 var4 var6 var12 var3) (and (and (and (and (and (and (= var2 (newHeap (alloc var18 (O_TTreeNode var0)))) (= var5 var13)) (= var17 var10)) (= var1 var7)) (= var16 var15)) (= var14 (newAddr (alloc var18 (O_TTreeNode var0))))) (and (not (= var9 0)) (and (not (= var8 0)) (and (and (and (and (and (= var18 var11) (= var13 var4)) (= var10 var6)) (= var7 var12)) (= var15 var3)) (or (and (= nullAddr (right (getTTreeNode (read var11 var6)))) (= var8 1)) (and (not (= nullAddr (right (getTTreeNode (read var11 var6))))) (= var8 0))))))))) (inv_main47 var2 var5 var17 var1 var14)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main8 var2 var0 var1 var3)) (inv_main11 var2 var0 var1 var3 (list (getTTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (or (not (and (inv_main67 var3 var0 var1 var5 var2 var4) (not (= var4 0)))) (inv_main70 var3 var0 var1 var5 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Int) (var11 Addr)) (or (not (and (inv_main67 var9 var1 var5 var11 var6 var10) (and (not (= var3 0)) (and (= var10 0) (and (and (and (and (and (= var8 var9) (= var7 var1)) (= var2 var5)) (= var4 var11)) (= var0 var6)) (or (and (not (= nullAddr (right (getTTreeNode (read var9 var5))))) (= var3 1)) (and (= nullAddr (right (getTTreeNode (read var9 var5)))) (= var3 0)))))))) (inv_main70 var8 var7 var2 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Heap)) (or (not (and (inv_main36 var8 var2 var6 var9 var1) (and (= var5 0) (and (and (and (and (and (= var10 var8) (= var0 var2)) (= var3 var6)) (= var4 var9)) (= var7 var1)) (or (and (= nullAddr (right (getTTreeNode (read var8 var6)))) (= var5 1)) (and (not (= nullAddr (right (getTTreeNode (read var8 var6))))) (= var5 0))))))) (inv_main12 var10 var0 var3 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr)) (or (not (and (inv_main36 var9 var3 var5 var10 var2) (and (= var1 0) (and (not (= var7 0)) (and (and (and (and (and (= var4 var9) (= var11 var3)) (= var8 var5)) (= var6 var10)) (= var0 var2)) (or (and (= nullAddr (right (getTTreeNode (read var9 var5)))) (= var7 1)) (and (not (= nullAddr (right (getTTreeNode (read var9 var5))))) (= var7 0)))))))) (inv_main12 var4 var11 var8 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Int) (var9 Heap) (var10 Addr) (var11 Heap)) (or (not (and (inv_main54 var9 var3 var6 var10 var2 var5) (and (= var8 0) (and (and (and (and (= var11 (write var9 (list (getTTreeNode (read var9 var2))) (O_TListNode (TListNode var5)))) (= var1 var3)) (= var4 var6)) (= var7 var10)) (= var0 var2))))) (inv_main12 var11 var1 var4 var7)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Int) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr)) (or (not (and (inv_main59 var9 var3 var5 var10 var2) (and (= var6 0) (and (and (and (and (= var1 (write var9 (list (getTTreeNode (read var9 var3))) (O_TListNode (TListNode var10)))) (= var7 var3)) (= var8 var5)) (= var4 var10)) (= var0 var2))))) (inv_main12 var1 var7 var8 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main11 var7 var3 var4 var8 var2) (and (= var1 0) (and (and (and (= var6 (write var7 (list (getTTreeNode (read var7 var3))) (O_TListNode (TListNode var2)))) (= var0 var3)) (= var5 var4)) (= var9 var8))))) (inv_main12 var6 var0 var5 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Int) (var5 Addr) (var6 Heap) (var7 Heap) (var8 Addr)) (or (not (and (inv_main17 var7 var0 var2 var8) (and (= var4 0) (and (and (and (= var6 (write var7 (list (getTTreeNode (read var7 var0))) (O_TListNode (TListNode var8)))) (= var5 var0)) (= var3 var2)) (= var1 var8))))) (inv_main12 var6 var5 var3 var1)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main76 var3 var0 var1 var4 var2) (not (= var1 (left (getTTreeNode (read var3 var2))))))) (inv_main79 var3 var0 var1 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Addr) (var3 Addr) (var4 Int) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main25 var7 var2 var3 var9 var8) (and (= var4 0) (and (not (= var1 0)) (and (not (= var8 0)) (and (and (and (and (= var5 var7) (= var10 var2)) (= var6 var3)) (= var0 var9)) (or (and (not (= nullAddr (right (getTTreeNode (read var7 var3))))) (= var1 1)) (and (= nullAddr (right (getTTreeNode (read var7 var3)))) (= var1 0))))))))) (inv_main29 var5 var10 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main22 var2 var0 var1 var3)) (and (or (not (not (= nullAddr (left (getTTreeNode (read var2 var1)))))) (inv_main25 var2 var0 var1 var3 1)) (or (not (= nullAddr (left (getTTreeNode (read var2 var1))))) (inv_main25 var2 var0 var1 var3 0)))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 TListNode) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Heap) (var12 Addr) (var13 Addr) (var14 Addr) (var15 Int) (var16 Addr) (var17 Addr) (var18 Addr)) (or (not (and (inv_main54 var10 var4 var7 var12 var3 var6) (and (and (and (and (and (and (and (= var2 (newHeap (alloc var11 (O_TListNode var5)))) (= var8 var1)) (= var9 var0)) (= var14 var18)) (= var17 var16)) (= var13 (newAddr (alloc var11 (O_TListNode var5))))) (not (= var15 0))) (and (and (and (and (= var11 (write var10 (list (getTTreeNode (read var10 var3))) (O_TListNode (TListNode var6)))) (= var1 var4)) (= var0 var7)) (= var18 var12)) (= var16 var3))))) (inv_main57 var2 var8 var9 var13 var17)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr) (var9 Addr) (var10 Heap) (var11 Heap) (var12 Addr) (var13 TListNode) (var14 Addr) (var15 Addr) (var16 Addr) (var17 Addr)) (or (not (and (inv_main59 var10 var3 var6 var12 var2) (and (and (and (and (and (and (and (= var11 (newHeap (alloc var1 (O_TListNode var13)))) (= var0 var15)) (= var8 var4)) (= var16 var9)) (= var5 var14)) (= var17 (newAddr (alloc var1 (O_TListNode var13))))) (not (= var7 0))) (and (and (and (and (= var1 (write var10 (list (getTTreeNode (read var10 var3))) (O_TListNode (TListNode var12)))) (= var15 var3)) (= var4 var6)) (= var9 var12)) (= var14 var2))))) (inv_main57 var11 var0 var8 var17 var5)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main51 var3 var1 var2 var4 var0)) (inv_main54 var3 var1 var2 var4 var0 (list (getTTreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main9 var3 var0 var2 var4 var1)) (inv_main8 (write var3 var0 (O_TTreeNode (TTreeNode (left (getTTreeNode (read var3 var0))) (right (getTTreeNode (read var3 var0))) var1))) var0 var2 var4)))) +(assert (forall ((var0 Addr) (var1 Int) (var2 Int) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Int) (var9 Addr) (var10 Addr)) (or (not (and (inv_main25 var7 var3 var4 var9 var8) (and (not (= var2 0)) (and (not (= var1 0)) (and (not (= var8 0)) (and (and (and (and (= var5 var7) (= var10 var3)) (= var6 var4)) (= var0 var9)) (or (and (not (= nullAddr (right (getTTreeNode (read var7 var4))))) (= var1 1)) (and (= nullAddr (right (getTTreeNode (read var7 var4)))) (= var1 0))))))))) (inv_main28 var5 var10 var6 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main28 var7 var1 var3 var8) (and (and (and (and (= var2 var7) (= var6 var1)) (= var5 var3)) (= var4 var8)) (= var0 (left (getTTreeNode (read var7 var3))))))) (inv_main22 var2 var6 var0 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Heap) (var8 Addr)) (or (not (and (inv_main29 var7 var3 var4 var8) (and (and (and (and (= var5 var7) (= var2 var3)) (= var0 var4)) (= var1 var8)) (= var6 (right (getTTreeNode (read var7 var4))))))) (inv_main22 var5 var2 var6 var1)))) +(assert (forall ((var0 Int) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (and (inv_main12 var3 var1 var2 var4) (not (= var0 0)))) (inv_main22 var3 var1 var1 var4)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (or (not (and (inv_main82 var4 var1 var2 var5 var3 var0) (not (= var0 (next (getTListNode (read var4 (list (getTTreeNode (read var4 var2)))))))))) (inv_main81 var4 var1 var2 var5 var3)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (or (not (inv_main15 var2 var0 var1 var3)) (inv_main18 var2 var0 var1 var3 (next (getTListNode (read var2 (list (getTTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main78 var3 var0 var1 var4 var2)) (inv_main75 (write var3 var2 (O_TTreeNode (TTreeNode nullAddr (right (getTTreeNode (read var3 var2))) (list (getTTreeNode (read var3 var2)))))) var0 var1 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (or (not (inv_main79 var3 var0 var1 var4 var2)) (inv_main75 (write var3 var2 (O_TTreeNode (TTreeNode (left (getTTreeNode (read var3 var2))) nullAddr (list (getTTreeNode (read var3 var2)))))) var0 var1 var4 var2)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Heap) (var10 Int) (var11 Addr)) (or (not (and (inv_main67 var9 var1 var5 var11 var6 var10) (and (= nullAddr var0) (and (= var3 0) (and (= var10 0) (and (and (and (and (and (= var8 var9) (= var7 var1)) (= var2 var5)) (= var4 var11)) (= var0 var6)) (or (and (not (= nullAddr (right (getTTreeNode (read var9 var5))))) (= var3 1)) (and (= nullAddr (right (getTTreeNode (read var9 var5)))) (= var3 0))))))))) (inv_main75 var8 nullAddr var2 var4 var0)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap) (var9 Addr) (var10 Addr)) (or (not (and (inv_main86 var8 var1 var5 var10 var6 var0) (and (and (and (and (= var4 (write var8 (list (getTTreeNode (read var8 var5))) (O_TListNode (TListNode var0)))) (= var7 var1)) (= var3 var5)) (= var2 var10)) (= var9 var6)))) (inv_main75 (write var4 var2 defObj) var7 var3 var2 var9)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main5 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main6 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main9 var3 var0 var2 var4 var1) (not (is-O_TTreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main8 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main11 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main11 var3 var1 var2 var4 var0) (not (is-O_TListNode (read var3 (list (getTTreeNode (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main15 var2 var0 var1 var3) (not (is-O_TListNode (read var2 (list (getTTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main18 var3 var1 var2 var4 var0) (not (is-O_TListNode (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main17 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main17 var2 var0 var1 var3) (not (is-O_TListNode (read var2 (list (getTTreeNode (read var2 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main22 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Int) (var4 Addr)) (not (and (inv_main25 var2 var0 var1 var4 var3) (and (not (= var3 0)) (not (is-O_TTreeNode (read var2 var1)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main28 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Addr)) (not (and (inv_main29 var2 var0 var1 var3) (not (is-O_TTreeNode (read var2 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main33 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main40 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main36 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main47 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main34 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main49 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main52 var4 var1 var2 var5 var0 var3) (not (is-O_TTreeNode (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main51 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main54 var4 var1 var3 var5 var0 var2) (not (is-O_TTreeNode (read var4 var0))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main54 var4 var1 var3 var5 var0 var2) (not (is-O_TListNode (read var4 (list (getTTreeNode (read var4 var0)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main57 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main57 var3 var1 var2 var4 var0) (not (is-O_TListNode (read var3 (list (getTTreeNode (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main60 var4 var1 var3 var5 var0 var2) (not (is-O_TListNode (read var4 var5))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main59 var3 var1 var2 var4 var0) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main59 var3 var1 var2 var4 var0) (not (is-O_TListNode (read var3 (list (getTTreeNode (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main64 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Int) (var5 Addr)) (not (and (inv_main67 var3 var0 var1 var5 var2 var4) (and (= var4 0) (not (is-O_TTreeNode (read var3 var1)))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main70 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main71 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main72 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main76 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main78 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main79 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main75 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main82 var4 var1 var2 var5 var3 var0) (not (is-O_TTreeNode (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main82 var4 var1 var2 var5 var3 var0) (not (is-O_TListNode (read var4 (list (getTTreeNode (read var4 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main81 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main81 var3 var0 var1 var4 var2) (not (is-O_TListNode (read var3 (list (getTTreeNode (read var3 var1)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main83 var3 var0 var1 var4 var2) (not (is-O_TListNode (read var3 var4))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main86 var4 var1 var2 var5 var3 var0) (not (is-O_TTreeNode (read var4 var2))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Heap) (var5 Addr)) (not (and (inv_main86 var4 var1 var2 var5 var3 var0) (not (is-O_TListNode (read var4 (list (getTTreeNode (read var4 var2)))))))))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr)) (not (and (inv_main80 var3 var0 var1 var4 var2) (not (is-O_TTreeNode (read var3 var1))))))) +(check-sat) diff --git a/heap-theory-benchmarks/heap/tree_stack.i.smt2 b/heap-theory-benchmarks/heap/tree_stack.i.smt2 new file mode 100644 index 00000000..994ae1af --- /dev/null +++ b/heap-theory-benchmarks/heap/tree_stack.i.smt2 @@ -0,0 +1,121 @@ +(set-logic HORN) +(set-info :source | + Benchmark: C_VC + Output by Princess (http://www.philipp.ruemmer.org/princess.shtml) +|) +(set-info :status sat) +(declare-heap Heap Addr HeapObject + defObj + ((HeapObject 0) (TreeNode 0) (StackItem 0)) ( + ( + (O_Int (getInt Int)) + (O_Addr (getAddr Addr)) + (O_TreeNode (getTreeNode TreeNode)) + (O_StackItem (getStackItem StackItem)) + (defObj) + ) + ( + (TreeNode (left Addr) (right Addr)) + ) + ( + (StackItem (next Addr) (node Addr)) + ) +)) +(declare-fun inv_main11 (Heap Addr Addr) Bool) +(declare-fun inv_main12 (Heap Addr Addr) Bool) +(declare-fun inv_main14 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main17 (Heap Addr Addr) Bool) +(declare-fun inv_main18 (Heap Addr Addr) Bool) +(declare-fun inv_main22 (Heap Addr Addr) Bool) +(declare-fun inv_main28 (Heap Addr Addr) Bool) +(declare-fun inv_main29 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main30 (Heap Addr Addr) Bool) +(declare-fun inv_main36 (Heap Addr Addr) Bool) +(declare-fun inv_main37 (Heap Addr Addr Addr) Bool) +(declare-fun inv_main38 (Heap Addr Addr) Bool) +(declare-fun inv_main4 (Heap) Bool) +(declare-fun inv_main40 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main41 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main45 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main46 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main5 (Heap Addr Addr) Bool) +(declare-fun inv_main50 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main51 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main54 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main56 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main58 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main6 (Heap Addr Addr) Bool) +(declare-fun inv_main62 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main64 (Heap Addr Addr Addr Addr) Bool) +(declare-fun inv_main66 (Heap Addr Addr Addr Addr Addr) Bool) +(declare-fun inv_main7 (Heap Addr Addr) Bool) +(assert (forall ((var0 Heap)) (or (not (= var0 emptyHeap)) (inv_main4 var0)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Int) (var4 TreeNode) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main12 var2 var6 var5) (and (not (= var3 0)) (and (not (= var0 0)) (and (and (and (= var1 var2) (= var8 var6)) (= var7 var5)) (or (and (= (left (getTreeNode (read var2 var5))) nullAddr) (= var0 1)) (and (not (= (left (getTreeNode (read var2 var5))) nullAddr)) (= var0 0)))))))) (inv_main29 (newHeap (alloc var1 (O_TreeNode var4))) var8 var7 (newAddr (alloc var1 (O_TreeNode var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (and (inv_main14 var0 var2 var1 var3) (= var3 nullAddr))) (inv_main12 var0 var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main14 var2 var5 var4 var7) (and (= var6 0) (and (not (= var7 nullAddr)) (and (and (and (= var0 var2) (= var1 var5)) (= var3 var4)) (= var6 (right (getTreeNode (read var2 var4))))))))) (inv_main12 var0 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (and (inv_main50 var0 var2 var1 var4 var3) (= (left (getTreeNode (read var0 var1))) nullAddr))) (inv_main51 var0 var2 var1 var4 var3)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main58 var1 var6 var5 var9 var7 var4) (and (and (and (and (= var3 (write var1 var7 (O_StackItem (StackItem (next (getStackItem (read var1 var7))) var4)))) (= var10 var6)) (= var0 var5)) (= var2 var9)) (= var8 var7)))) (inv_main51 var3 var10 var0 var8 var8)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main17 var1 var5 var2) (and (and (and (= var0 var1) (= var4 var5)) (= var3 var2)) (= var6 (left (getTreeNode (read var1 var2))))))) (inv_main11 var0 var4 var6)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Heap) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr)) (or (not (and (inv_main18 var2 var5 var4) (and (and (and (= var3 var2) (= var6 var5)) (= var0 var4)) (= var1 (right (getTreeNode (read var2 var4))))))) (inv_main11 var3 var6 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (and (inv_main7 var1 var3 var2) (not (= var0 0)))) (inv_main11 var1 var3 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main11 var0 var2 var1)) (inv_main14 var0 var2 var1 (left (getTreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main45 var0 var7 var5 var9 var8) (and (and (and (and (and (= var3 var0) (= var2 var7)) (= var4 var5)) (= var10 var9)) (= var1 var8)) (= var6 (next (getStackItem (read var0 var9))))))) (inv_main46 var3 var2 var4 var6 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 StackItem) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr) (var11 Addr)) (or (not (and (inv_main50 var1 var7 var4 var10 var8) (and (and (and (and (and (and (= var5 (newHeap (alloc var1 (O_StackItem var3)))) (= var11 var7)) (= var2 var4)) (= var6 var10)) (= var9 var8)) (= var0 (newAddr (alloc var1 (O_StackItem var3))))) (not (= (left (getTreeNode (read var1 var4))) nullAddr))))) (inv_main54 var5 var11 var2 var6 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main54 var0 var2 var1 var4 var3)) (inv_main56 (write var0 var3 (O_StackItem (StackItem var4 (node (getStackItem (read var0 var3)))))) var2 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main28 var0 var2 var1)) (inv_main30 (write var0 (left (getTreeNode (read var0 var1))) (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var0 (left (getTreeNode (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 StackItem) (var7 Addr) (var8 Addr)) (or (not (and (inv_main7 var2 var8 var4) (and (= var1 0) (and (and (= var0 var2) (= var5 var8)) (= var3 nullAddr))))) (inv_main40 (newHeap (alloc var0 (O_StackItem var6))) var5 var3 (newAddr (alloc var0 (O_StackItem var6))) var7)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main62 var0 var2 var1 var4 var3)) (inv_main64 (write var0 var3 (O_StackItem (StackItem var4 (node (getStackItem (read var0 var3)))))) var2 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main36 var0 var2 var1)) (inv_main38 (write var0 (right (getTreeNode (read var0 var1))) (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var0 (right (getTreeNode (read var0 var1))))))))) var2 var1)))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 StackItem) (var10 Addr) (var11 Heap)) (or (not (and (inv_main51 var1 var7 var2 var10 var8) (and (and (and (and (and (and (= var11 (newHeap (alloc var1 (O_StackItem var9)))) (= var6 var7)) (= var3 var2)) (= var5 var10)) (= var4 var8)) (= var0 (newAddr (alloc var1 (O_StackItem var9))))) (not (= (right (getTreeNode (read var1 var2))) nullAddr))))) (inv_main62 var11 var6 var3 var5 var0)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 TreeNode)) (or (not (inv_main4 var0)) (inv_main5 (newHeap (alloc var0 (O_TreeNode var2))) (newAddr (alloc var0 (O_TreeNode var2))) var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main64 var0 var2 var1 var4 var3)) (inv_main66 var0 var2 var1 var4 var3 (right (getTreeNode (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (or (not (inv_main37 var1 var3 var2 var0)) (inv_main36 (write var1 var2 (O_TreeNode (TreeNode (left (getTreeNode (read var1 var2))) var0))) var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main40 var0 var2 var1 var4 var3)) (inv_main41 (write var0 var4 (O_StackItem (StackItem nullAddr (node (getStackItem (read var0 var4)))))) var2 var1 var4 var3)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr)) (or (not (and (inv_main41 var1 var5 var3 var9 var6) (and (not (= var8 nullAddr)) (and (and (and (and (= var0 (write var1 var9 (O_StackItem (StackItem (next (getStackItem (read var1 var9))) var5)))) (= var2 var5)) (= var7 var3)) (= var8 var9)) (= var4 var6))))) (inv_main45 var0 var2 var7 var8 var8)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap) (var8 Addr) (var9 Addr)) (or (not (and (inv_main51 var0 var4 var3 var6 var5) (and (and (not (= var8 nullAddr)) (and (and (and (and (= var7 (write var0 var3 defObj)) (= var2 var4)) (= var9 var3)) (= var8 var6)) (= var1 var5))) (= (right (getTreeNode (read var0 var3))) nullAddr)))) (inv_main45 var7 var2 var9 var8 var8)))) +(assert (forall ((var0 Addr) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Heap) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Heap) (var10 Addr) (var11 Addr) (var12 Addr) (var13 Addr) (var14 Heap) (var15 Addr)) (or (not (and (inv_main66 var5 var10 var7 var13 var2 var15) (and (and (not (= var1 nullAddr)) (and (and (and (and (= var9 (write var14 var11 defObj)) (= var4 var3)) (= var12 var11)) (= var1 var6)) (= var0 var6))) (and (and (and (and (= var14 (write var5 var2 (O_StackItem (StackItem (next (getStackItem (read var5 var2))) var15)))) (= var3 var10)) (= var11 var7)) (= var8 var13)) (= var6 var2))))) (inv_main45 var9 var4 var12 var1 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (or (not (inv_main29 var0 var3 var2 var1)) (inv_main28 (write var0 var2 (O_TreeNode (TreeNode var1 (right (getTreeNode (read var0 var2)))))) var3 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Int) (var6 Addr) (var7 Addr) (var8 Addr)) (or (not (and (inv_main14 var2 var6 var4 var8) (and (not (= var5 0)) (and (not (= var7 0)) (and (not (= var8 nullAddr)) (and (and (and (= var0 var2) (= var1 var6)) (= var3 var4)) (= var7 (right (getTreeNode (read var2 var4)))))))))) (inv_main17 var0 var1 var3)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main30 var0 var2 var1)) (inv_main22 (write var0 (left (getTreeNode (read var0 var1))) (O_TreeNode (TreeNode (left (getTreeNode (read var0 (left (getTreeNode (read var0 var1)))))) nullAddr))) var2 var1)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Heap)) (or (not (and (inv_main12 var1 var3 var2) (and (= var0 0) (and (and (and (= var6 var1) (= var5 var3)) (= var4 var2)) (or (and (= (left (getTreeNode (read var1 var2))) nullAddr) (= var0 1)) (and (not (= (left (getTreeNode (read var1 var2))) nullAddr)) (= var0 0))))))) (inv_main22 var6 var5 var4)))) +(assert (forall ((var0 Int) (var1 Heap) (var2 Heap) (var3 Int) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr)) (or (not (and (inv_main12 var2 var5 var4) (and (= var3 0) (and (not (= var0 0)) (and (and (and (= var1 var2) (= var7 var5)) (= var6 var4)) (or (and (= (left (getTreeNode (read var2 var4))) nullAddr) (= var0 1)) (and (not (= (left (getTreeNode (read var2 var4))) nullAddr)) (= var0 0)))))))) (inv_main22 var1 var7 var6)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main5 var0 var2 var1)) (inv_main6 (write var0 var2 (O_TreeNode (TreeNode nullAddr (right (getTreeNode (read var0 var2)))))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main6 var0 var2 var1)) (inv_main7 (write var0 var2 (O_TreeNode (TreeNode (left (getTreeNode (read var0 var2))) nullAddr))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (or (not (inv_main38 var0 var2 var1)) (inv_main7 (write var0 (right (getTreeNode (read var0 var1))) (O_TreeNode (TreeNode (left (getTreeNode (read var0 (right (getTreeNode (read var0 var1)))))) nullAddr))) var2 var1)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Heap) (var4 Addr) (var5 Int) (var6 Addr)) (or (not (and (inv_main22 var0 var4 var1) (and (= var5 0) (and (and (and (= var3 var0) (= var6 var4)) (= var2 var1)) (or (and (= (right (getTreeNode (read var0 var1))) nullAddr) (= var5 1)) (and (not (= (right (getTreeNode (read var0 var1))) nullAddr)) (= var5 0))))))) (inv_main7 var3 var6 var2)))) +(assert (forall ((var0 Int) (var1 Int) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Heap)) (or (not (and (inv_main22 var2 var5 var4) (and (= var0 0) (and (not (= var1 0)) (and (and (and (= var7 var2) (= var3 var5)) (= var6 var4)) (or (and (= (right (getTreeNode (read var2 var4))) nullAddr) (= var1 1)) (and (not (= (right (getTreeNode (read var2 var4))) nullAddr)) (= var1 0)))))))) (inv_main7 var7 var3 var6)))) +(assert (forall ((var0 Heap) (var1 Heap) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Addr) (var9 Addr) (var10 Addr)) (or (not (and (inv_main46 var1 var8 var4 var10 var9) (and (and (and (and (and (= var0 var1) (= var7 var8)) (= var3 var4)) (= var6 var10)) (= var2 var9)) (= var5 (node (getStackItem (read var1 var9))))))) (inv_main50 (write var0 var2 defObj) var7 var5 var6 var2)))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Heap) (var3 Addr) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Int) (var8 Addr)) (or (not (and (inv_main14 var2 var5 var4 var8) (and (= var7 0) (and (not (= var6 0)) (and (not (= var8 nullAddr)) (and (and (and (= var0 var2) (= var1 var5)) (= var3 var4)) (= var6 (right (getTreeNode (read var2 var4)))))))))) (inv_main18 var0 var1 var3)))) +(assert (forall ((var0 TreeNode) (var1 Int) (var2 Int) (var3 Heap) (var4 Addr) (var5 Addr) (var6 Addr) (var7 Addr) (var8 Heap)) (or (not (and (inv_main22 var3 var6 var5) (and (not (= var2 0)) (and (not (= var1 0)) (and (and (and (= var8 var3) (= var4 var6)) (= var7 var5)) (or (and (= (right (getTreeNode (read var3 var5))) nullAddr) (= var1 1)) (and (not (= (right (getTreeNode (read var3 var5))) nullAddr)) (= var1 0)))))))) (inv_main37 (newHeap (alloc var8 (O_TreeNode var0))) var4 var7 (newAddr (alloc var8 (O_TreeNode var0))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (or (not (inv_main56 var0 var2 var1 var4 var3)) (inv_main58 var0 var2 var1 var4 var3 (left (getTreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main5 var0 var2 var1) (not (is-O_TreeNode (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main6 var0 var2 var1) (not (is-O_TreeNode (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main11 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main14 var0 var2 var1 var3) (and (not (= var3 nullAddr)) (not (is-O_TreeNode (read var0 var1)))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main17 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main18 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main12 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr)) (not (and (inv_main29 var0 var3 var2 var1) (not (is-O_TreeNode (read var0 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main28 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main28 var0 var2 var1) (not (is-O_TreeNode (read var0 (left (getTreeNode (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main30 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main30 var0 var2 var1) (not (is-O_TreeNode (read var0 (left (getTreeNode (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main22 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Addr) (var1 Heap) (var2 Addr) (var3 Addr)) (not (and (inv_main37 var1 var3 var2 var0) (not (is-O_TreeNode (read var1 var2))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main36 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main36 var0 var2 var1) (not (is-O_TreeNode (read var0 (right (getTreeNode (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main38 var0 var2 var1) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr)) (not (and (inv_main38 var0 var2 var1) (not (is-O_TreeNode (read var0 (right (getTreeNode (read var0 var1)))))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main40 var0 var2 var1 var4 var3) (not (is-O_StackItem (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main41 var0 var2 var1 var4 var3) (not (is-O_StackItem (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main45 var0 var2 var1 var4 var3) (not (is-O_StackItem (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main46 var0 var2 var1 var4 var3) (not (is-O_StackItem (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main50 var0 var2 var1 var4 var3) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main54 var0 var2 var1 var4 var3) (not (is-O_StackItem (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main56 var0 var2 var1 var4 var3) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main58 var0 var3 var2 var5 var4 var1) (not (is-O_StackItem (read var0 var4))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main51 var0 var2 var1 var4 var3) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main62 var0 var2 var1 var4 var3) (not (is-O_StackItem (read var0 var3))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr)) (not (and (inv_main64 var0 var2 var1 var4 var3) (not (is-O_TreeNode (read var0 var1))))))) +(assert (forall ((var0 Heap) (var1 Addr) (var2 Addr) (var3 Addr) (var4 Addr) (var5 Addr)) (not (and (inv_main66 var0 var2 var1 var4 var3 var5) (not (is-O_StackItem (read var0 var3))))))) +(check-sat) diff --git a/heap-theory-benchmarks/readme b/heap-theory-benchmarks/readme new file mode 100644 index 00000000..6498a596 --- /dev/null +++ b/heap-theory-benchmarks/readme @@ -0,0 +1,150 @@ +# Date : 2021-02-23 +# Author : Zafer Esen + +Original benchmarks (not part of this release) are from: +https://github.com/sosy-lab/sv-benchmarks/ + +Information on how to regenerate the benchmarks is given below, please do not +hesitate to get in touch if you need assistance in reproducing the encodings. + +Regenerating the files under the heap folder +================================================================================ +TriCera was used to generate the original SMT-LIB files, which uses the APIs +of Eldarica and Princess for this purpose (unfortunately no official release as +of preparing this document, as the heap versions of its dependencies, i.e., +Eldarica and Princess are not officially released either): + +https://github.com/uuverifiers/tricera/tree/heaptheory +(used commit in the provided files: 67d7a87 from 2021-02-19) + +Eldarica-2.0.5-heap dependency is needed for the build, the jar from 2.0.5-heap +pre-release of Eldarica can be put under the lib folder for this (and dependency +removed from build.sbt). After the dependencies are satisfied the build process +is as simple as calling "sbt assembly". + +After the build TriCera can be executed on the SV-COMP input files using the +command "tri -dumpClauses -t:0". Without the "-t:0" parameter it will also +attempt solving the benchmarks directly through Eldarica. + +Regenerating the files under the array folder +================================================================================ +The tool heap2array was used to generate the array encodings. It can be built +and run by following the instructions on the page. +https://github.com/zafer-esen/heap2array + +The set-status information (i.e., expected sat or unsat) was obtained from the +accompanying YAML files (.yml) provided by SV-COMP by TriCera. + +List of benchmarks (rooted at sosy-lab/sv-benchmarks/) +====================================================== +c/forester-heap/dll-01-1.i +c/forester-heap/dll-01-2.i +c/forester-heap/dll-circular-1.i +c/forester-heap/dll-circular-2.i +c/forester-heap/dll-optional-2.i +c/forester-heap/dll-queue-2.i +c/forester-heap/dll-rb-sentinel-1.i +c/forester-heap/dll-rb-sentinel-2.i +c/forester-heap/dll-reverse.i +c/forester-heap/dll-simple-white-blue-1.i +c/forester-heap/dll-token-1.i +c/forester-heap/dll-token-2.i +c/forester-heap/sll-01-2.i +c/forester-heap/sll-circular-1.i +c/forester-heap/sll-circular-2.i +c/forester-heap/sll-optional-1.i +c/forester-heap/sll-optional-2.i +c/forester-heap/sll-queue-1.i +c/forester-heap/sll-queue-2.i +c/forester-heap/sll-rb-cnstr_1-2.i +c/forester-heap/sll-rb-sentinel-1.i +c/forester-heap/sll-rb-sentinel-2.i +c/forester-heap/sll-reverse_simple.i +c/forester-heap/sll-simple-white-blue-1.i +c/forester-heap/sll-simple-white-blue-2.i +c/forester-heap/sll-sorted-1.i +c/forester-heap/sll-sorted-2.i +c/heap-data/cart.i +c/heap-data/hash_fun.i +c/heap-data/min_max.i +c/heap-data/quick_sort_split.i +c/heap-manipulation/sll_to_dll_rev-1.i +c/heap-manipulation/sll_to_dll_rev-2.i +c/heap-manipulation/tree-3.i +c/heap-manipulation/tree-4.i +c/list-ext2-properties/list_and_tree_cnstr-1.i +c/list-ext2-properties/simple_and_skiplist_2lvl-1.i +c/list-ext2-properties/simple_and_skiplist_2lvl-2.i +c/list-ext2-properties/simple_search_value-1.i +c/list-ext3-properties/dll_circular_traversal-1.i +c/list-ext3-properties/dll_circular_traversal-2.i +c/list-ext3-properties/dll_nondet_free_order-2.i +c/list-ext3-properties/dll_nullified-2.i +c/list-ext3-properties/sll_circular_traversal-1.i +c/list-ext3-properties/sll_circular_traversal-2.i +c/list-ext3-properties/sll_length_check-1.i +c/list-ext3-properties/sll_length_check-2.i +c/list-ext3-properties/sll_nondet_insert-1.i +c/list-ext3-properties/sll_nondet_insert-2.i +c/list-ext3-properties/sll_of_sll_nondet_append-1.i +c/list-ext3-properties/sll_of_sll_nondet_append-2.i +c/list-ext3-properties/sll_shallow_copy-1.i +c/list-ext3-properties/sll_shallow_copy-2.i +c/list-ext-properties/list-ext_1.i +c/list-ext-properties/list-ext_flag_1.i +c/list-ext-properties/list-ext.i +c/list-ext-properties/simple-ext_1.i +c/list-ext-properties/simple-ext.i +c/list-ext-properties/test-0019_1-1.i +c/list-ext-properties/test-0019_1-2.i +c/list-ext-properties/test-0232_1-1.i +c/list-properties/alternating_list-1.i +c/list-properties/alternating_list-2.i +c/list-properties/list-1.i +c/list-properties/list-2.i +c/list-properties/list_flag-1.i +c/list-properties/list_flag-2.i +c/list-properties/list_search-1.i +c/list-properties/list_search-2.i +c/list-properties/simple-2.i +c/list-properties/simple_built_from_end.i +c/list-properties/splice-1.i +c/list-properties/splice-2.i +c/list-simple/dll2c_append_equal.i +c/list-simple/dll2c_prepend_equal.i +c/list-simple/dll2c_prepend_unequal.i +c/list-simple/dll2c_remove_all.i +c/list-simple/dll2c_update_all.i +c/list-simple/dll2n_append_equal.i +c/list-simple/dll2n_insert_equal.i +c/list-simple/dll2n_prepend_equal.i +c/list-simple/dll2n_remove_all.i +c/list-simple/dll2n_remove_all_reverse.i +c/list-simple/dll2n_update_all_reverse.i +c/list-simple/sll2c_append_equal.i +c/list-simple/sll2c_insert_equal.i +c/list-simple/sll2c_insert_unequal.i +c/list-simple/sll2c_prepend_equal.i +c/list-simple/sll2c_remove_all.i +c/list-simple/sll2c_remove_all_reverse.i +c/list-simple/sll2c_update_all.i +c/list-simple/sll2c_update_all_reverse.i +c/list-simple/sll2n_append_unequal.i +c/list-simple/sll2n_insert_unequal.i +c/list-simple/sll2n_prepend_equal.i +c/list-simple/sll2n_remove_all_reverse.i +c/list-simple/sll2n_update_all.i +c/list-simple/sll2n_update_all_reverse.i +c/memsafety-ext2/length_test03-1.i +c/memsafety-ext2/split_list_test05-1.i +c/memsafety-ext/tree_cnstr.i +c/memsafety-ext/tree_of_cslls.i +c/memsafety-ext/tree_stack.i +c/memsafety/lockfree-3.1.i +c/memsafety/lockfree-3.2.i +c/memsafety/lockfree-3.3.i +c/memsafety/test-0232-1.i +c/memsafety/test-0232-2.i +c/memsafety/test-0232-3.i +c/verifythis/tree_max.c +c/verifythis/tree_max_incorrect.c \ No newline at end of file