From f70075500b87e31f7a496d4bbe25c7e41beacdbc Mon Sep 17 00:00:00 2001 From: Eddy Westbrook Date: Wed, 30 Jun 2021 15:16:07 -0700 Subject: [PATCH 01/11] updated Makefile to fall back on cabal run saw if a saw executable is not installed --- heapster-saw/examples/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/heapster-saw/examples/Makefile b/heapster-saw/examples/Makefile index ab4e10b27f..2e554556bb 100644 --- a/heapster-saw/examples/Makefile +++ b/heapster-saw/examples/Makefile @@ -5,7 +5,8 @@ Makefile.coq: _CoqProject include Makefile.coq -SAW=saw +# If the saw executable is available, use it, otherwise fall back on cabal run saw +SAW=$(shell which saw || echo cabal run saw) %.bc: %.c clang -emit-llvm -g -c $< From e64b442176936b5d82f5842cbf072658d0aec285 Mon Sep 17 00:00:00 2001 From: Eddy Westbrook Date: Wed, 30 Jun 2021 15:16:28 -0700 Subject: [PATCH 02/11] added arrays.v back as a Coq file that needs to be built for CI --- heapster-saw/examples/_CoqProject | 1 + 1 file changed, 1 insertion(+) diff --git a/heapster-saw/examples/_CoqProject b/heapster-saw/examples/_CoqProject index a2fd6d8f8c..e1e979ae60 100644 --- a/heapster-saw/examples/_CoqProject +++ b/heapster-saw/examples/_CoqProject @@ -22,3 +22,4 @@ rust_data.v rust_data_proofs.v rust_lifetimes.v rust_lifetimes_proofs.v +arrays.v From 7e4fb518caafc450d26829608945a71e1c675a61 Mon Sep 17 00:00:00 2001 From: Eddy Westbrook Date: Wed, 30 Jun 2021 15:16:44 -0700 Subject: [PATCH 03/11] updated the generated arrays.v --- heapster-saw/examples/arrays.v | 106 ++++++++++++++++++++++----------- 1 file changed, 70 insertions(+), 36 deletions(-) diff --git a/heapster-saw/examples/arrays.v b/heapster-saw/examples/arrays.v index f8b6a2c5e0..745a5d5697 100644 --- a/heapster-saw/examples/arrays.v +++ b/heapster-saw/examples/arrays.v @@ -1,13 +1,16 @@ -From Coq Require Import Lists.List. -From Coq Require Import String. -From Coq Require Import Vectors.Vector. +(** Mandatory imports from saw-core-coq *) +From Coq Require Import Lists.List. +From Coq Require Import String. +From Coq Require Import Vectors.Vector. From CryptolToCoq Require Import SAWCoreScaffolding. From CryptolToCoq Require Import SAWCoreVectorsAsCoqVectors. +Import ListNotations. +(** Post-preamble section specified by you *) From CryptolToCoq Require Import SAWCorePrelude. -Import ListNotations. +(** Code generated by saw-core-coq *) Module arrays. @@ -18,58 +21,89 @@ Definition contains0_rec_ : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsC SAWCoreScaffolding.fst contains0_rec___tuple_fun. Definition contains0__tuple_fun : @CompM.lrtTupleType (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))) (@CompM.LRT_Nil)) := - @CompM.multiFixM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))) (@CompM.LRT_Nil)) (fun (contains0 : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))) => pair (fun (e0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p0 : @SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.letRecM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))) (@CompM.LRT_Nil)) (prod (@SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))) => pair (fun (e1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvult 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) e1 then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt))) (@SAWCoreVectorsAsCoqVectors.bvsle 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) (intToBv 64 0xfffffffffffffff%Z)) then @SAWCorePrelude.maybe (@SAWCoreScaffolding.Eq (@SAWCoreScaffolding.Bool) (@SAWCoreVectorsAsCoqVectors.bvult 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) e1) (@SAWCoreScaffolding.true)) (CompM (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))) (@errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "z15 unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) e1) (@SAWCoreScaffolding.true)) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCorePrelude.bvEq 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) ult_pf0)) (intToBv 64 0%Z) then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then @returnM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (pair (@SAWCorePrelude.adjustBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (fun (fld0 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) ult_pf0)) tt)) tt) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt))) (pair (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 1%Z) tt)) tt) tt)) else f e1 (@SAWCorePrelude.adjustBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (fun (fld0 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) ult_pf0)) tt)) tt) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt))) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCoreVectorsAsCoqVectors.bvAdd 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) (intToBv 64 1%Z)) tt)) tt)) (@SAWCorePrelude.bvultWithProof 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) e1) else @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "Failed Assert at arrays.c:29:9"%string else @returnM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (pair p1 (pair (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt)) tt) tt))) tt) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))) => f e0 p0 (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt))) tt). + @CompM.multiFixM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))) (@CompM.LRT_Nil)) (fun (contains0 : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))) => pair (fun (e0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p0 : @SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.letRecM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))))) (@CompM.LRT_Nil)) (prod (@SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))))))) => pair (fun (e1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (p2 : unit) (p3 : unit) (p4 : unit) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvult 64 e2 e1 then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) e2) (@SAWCoreVectorsAsCoqVectors.bvsle 64 e2 (intToBv 64 0xfffffffffffffff%Z)) then @SAWCorePrelude.maybe (@SAWCoreScaffolding.Eq (@SAWCoreScaffolding.Bool) (@SAWCoreVectorsAsCoqVectors.bvult 64 e2 e1) (@SAWCoreScaffolding.true)) (CompM (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))) (@errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "ghost11 if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCorePrelude.bvEq 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 e2 ult_pf0)) (intToBv 64 0%Z) then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then @returnM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (pair (@SAWCorePrelude.adjustBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (fun (fld0 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 e2 ult_pf0)) tt) e2) (pair (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 1%Z) tt) tt)) else f e1 (@SAWCoreVectorsAsCoqVectors.bvAdd 64 e2 (intToBv 64 1%Z)) (@SAWCorePrelude.adjustBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (fun (fld0 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 e2 ult_pf0)) tt) e2) tt tt tt) (@SAWCorePrelude.bvultWithProof 64 e2 e1) else @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "Failed Assert at arrays.c:29:9"%string else @returnM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (pair p1 (pair (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt) tt))) tt) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))))))) => f e0 (intToBv 64 0%Z) p0 tt tt tt)) tt). Definition contains0 : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))) := SAWCoreScaffolding.fst contains0__tuple_fun. Definition zero_array__tuple_fun : @CompM.lrtTupleType (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))))) (@CompM.LRT_Nil)) := - @CompM.multiFixM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))))) (@CompM.LRT_Nil)) (fun (zero_array : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))))))) => pair (fun (e0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p0 : @SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.letRecM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))))))) (@CompM.LRT_Nil)) (@SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))))))) => pair (fun (e1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvult 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) e1 then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt))) (@SAWCoreVectorsAsCoqVectors.bvsle 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) (intToBv 64 0xfffffffffffffff%Z)) then @SAWCorePrelude.maybe (@SAWCoreScaffolding.Eq (@SAWCoreScaffolding.Bool) (@SAWCoreVectorsAsCoqVectors.bvult 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) e1) (@SAWCoreScaffolding.true)) (CompM (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (@errorM CompM _ (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) "z13 unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) e1) (@SAWCoreScaffolding.true)) => f e1 (@SAWCorePrelude.adjustBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (fun (fld0 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt)) tt) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt))) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCoreVectorsAsCoqVectors.bvAdd 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) (intToBv 64 1%Z)) tt)) tt)) (@SAWCorePrelude.bvultWithProof 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) e1) else @errorM CompM _ (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) "Failed Assert at arrays.c:61:5"%string else @returnM CompM _ (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) p1) tt) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))))))) => f e0 p0 (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt))) tt). + @CompM.multiFixM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))))) (@CompM.LRT_Nil)) (fun (zero_array : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))))))) => pair (fun (e0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p0 : @SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.letRecM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))))))))) (@CompM.LRT_Nil)) (@SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))))))))))) => pair (fun (e1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (p2 : unit) (p3 : unit) (p4 : unit) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvult 64 e2 e1 then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) e2) (@SAWCoreVectorsAsCoqVectors.bvsle 64 e2 (intToBv 64 0xfffffffffffffff%Z)) then @SAWCorePrelude.maybe (@SAWCoreScaffolding.Eq (@SAWCoreScaffolding.Bool) (@SAWCoreVectorsAsCoqVectors.bvult 64 e2 e1) (@SAWCoreScaffolding.true)) (CompM (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (@errorM CompM _ (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) "ghost10 f e1 (@SAWCoreVectorsAsCoqVectors.bvAdd 64 e2 (intToBv 64 1%Z)) (@SAWCorePrelude.adjustBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (fun (fld0 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt) e2) tt tt tt) (@SAWCorePrelude.bvultWithProof 64 e2 e1) else @errorM CompM _ (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) "Failed Assert at arrays.c:61:5"%string else @returnM CompM _ (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) p1) tt) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))))))))))) => f e0 (intToBv 64 0%Z) p0 tt tt tt)) tt). Definition zero_array : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))))) := SAWCoreScaffolding.fst zero_array__tuple_fun. Definition zero_array_from__tuple_fun : @CompM.lrtTupleType (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))))))) (@CompM.LRT_Nil)) := - @CompM.multiFixM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))))))) (@CompM.LRT_Nil)) (fun (zero_array_from : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))))))) => pair (fun (e0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p0 : @SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.letRecM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))))))) (@CompM.LRT_Nil)) (@SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))))))))) => pair (fun (e2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e2 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvult 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) e2 then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt))) (@SAWCoreVectorsAsCoqVectors.bvsle 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) (intToBv 64 0xfffffffffffffff%Z)) then @SAWCorePrelude.maybe (@SAWCoreScaffolding.Eq (@SAWCoreScaffolding.Bool) (@SAWCoreVectorsAsCoqVectors.bvult 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) e2) (@SAWCoreScaffolding.true)) (CompM (@SAWCorePrelude.BVVec 64 e2 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (@errorM CompM _ (@SAWCorePrelude.BVVec 64 e2 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) "z15 unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) e2) (@SAWCoreScaffolding.true)) => @errorM CompM _ (@SAWCorePrelude.BVVec 64 e2 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) "At arrays.c:67:3 (jump %9($0, $1, $2)) - Regs: $0 = local6, $1 = local7, $2 = local8 - Input perms: top1:true, top2:true, - top3:array(0, - exists z17. eq(LLVMword z17) ], - [(ghost14).0]) - *ptr((W,8*ghost14+0) |-> eq(ghost15)), - top4:eq(LLVMword top1), top5:exists z17. eq(LLVMword z17), - ghost10:llvmframe [local8:8, local7:8, local6:8], - local6:ptr((W,0) |-> eq(ghost11)), local7:ptr((W,0) |-> - eq(ghost12)), - local8:ptr((W,0) |-> eq(local9)), - local9:exists z17. eq(LLVMword z17), ghost11:eq(top3), - ghost12:eq(LLVMword top1), ghost14:true, - ghost15:exists z17. eq(LLVMword z17) - Could not prove: (z20, z19, z18, z17). - top1:true, top2:true, - top3:array(0, - exists z21. eq(LLVMword z21) ], - []), top4:eq(LLVMword top1), - top5:exists z21. eq(LLVMword z21), local6:ptr((W,0) |-> - eq(z19)), - local7:ptr((W,0) |-> eq(z18)), local8:ptr((W,0) |-> - eq(z17)), - z20:llvmframe [local8:8, local7:8, local6:8], z19:eq(top3), - z18:eq(top4), z17:eq(top5) - - proveEq: Could not prove z20 = (z24, z23, z22, z21). z18"%string) (@SAWCorePrelude.bvultWithProof 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt)) e2) else @errorM CompM _ (@SAWCorePrelude.BVVec 64 e2 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) "Failed Assert at arrays.c:68:5"%string else @returnM CompM _ (@SAWCorePrelude.BVVec 64 e2 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) p1) tt) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))))))))) => f e0 e1 p0 (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) e1 tt))) tt). + @CompM.multiFixM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))))))) (@CompM.LRT_Nil)) (fun (zero_array_from : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))))))) => pair (fun (e0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p0 : @SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.letRecM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))))))))))) (@CompM.LRT_Nil)) (@SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))))))))))) => pair (fun (e2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e4 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e2 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (p2 : unit) (p3 : unit) (p4 : unit) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvult 64 e4 e2 then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) e4) (@SAWCoreVectorsAsCoqVectors.bvsle 64 e4 (intToBv 64 0xfffffffffffffff%Z)) then @SAWCorePrelude.maybe (@SAWCoreScaffolding.Eq (@SAWCoreScaffolding.Bool) (@SAWCoreVectorsAsCoqVectors.bvult 64 e4 e2) (@SAWCoreScaffolding.true)) (CompM (@SAWCorePrelude.BVVec 64 e2 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (@errorM CompM _ (@SAWCorePrelude.BVVec 64 e2 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) "ghost12 f e2 e3 (@SAWCoreVectorsAsCoqVectors.bvAdd 64 e4 (intToBv 64 1%Z)) (@SAWCorePrelude.adjustBVVec 64 e2 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (fun (fld0 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt) e4) tt tt tt) (@SAWCorePrelude.bvultWithProof 64 e4 e2) else @errorM CompM _ (@SAWCorePrelude.BVVec 64 e2 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) "Failed Assert at arrays.c:68:5"%string else @returnM CompM _ (@SAWCorePrelude.BVVec 64 e2 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) p1) tt) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))))))))))) => f e0 e1 e1 p0 tt tt tt)) tt). Definition zero_array_from : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))))))) := SAWCoreScaffolding.fst zero_array_from__tuple_fun. Definition filter_and_sum_pos__tuple_fun : @CompM.lrtTupleType (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))) (@CompM.LRT_Nil)) := - @CompM.multiFixM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))) (@CompM.LRT_Nil)) (fun (filter_and_sum_pos : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))) => pair (fun (e0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p0 : @SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.letRecM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))))) (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))) (@CompM.LRT_Nil))) (prod (@SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))))) (f1 : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))))) => pair (fun (e1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) e2) (@SAWCoreVectorsAsCoqVectors.bvsle 64 e2 (intToBv 64 0xfffffffffffffff%Z)) then f1 e1 (@SAWCorePrelude.adjustBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (fun (fld0 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt)) tt) e2) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCoreVectorsAsCoqVectors.bvAdd 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3)) tt)) tt) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCoreVectorsAsCoqVectors.bvAdd 64 e2 (intToBv 64 1%Z)) tt)) tt) else @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "Failed Assert at arrays.c:80:12"%string) (pair (fun (e1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvult 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) e1 then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt))) (@SAWCoreVectorsAsCoqVectors.bvsle 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt)) (intToBv 64 0xfffffffffffffff%Z)) then @SAWCorePrelude.maybe (@SAWCoreScaffolding.Eq (@SAWCoreScaffolding.Bool) (@SAWCoreVectorsAsCoqVectors.bvult 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt)) e1) (@SAWCoreScaffolding.true)) (CompM (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))) (@errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "z15 unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt)) e1) (@SAWCoreScaffolding.true)) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvslt 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt)) ult_pf0)) (intToBv 64 0%Z) then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt))) (@SAWCoreVectorsAsCoqVectors.bvsle 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt)) (intToBv 64 0xfffffffffffffff%Z)) then f e1 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt)) p1 (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt) else @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "Failed Assert at arrays.c:78:7"%string else f e1 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt)) p1 p2 (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt)) ult_pf0)) tt)) (@SAWCorePrelude.bvultWithProof 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt)) e1) else @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "Failed Assert at arrays.c:77:9"%string else @returnM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (pair p1 (pair (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt) tt))) tt)) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))))) (f1 : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))))) => f1 e0 p0 (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt))) tt). + @CompM.multiFixM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))) (@CompM.LRT_Nil)) (fun (filter_and_sum_pos : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))) => pair (fun (e0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p0 : @SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.letRecM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Fun unit (fun (p5 : unit) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))))))) (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Fun unit (fun (p5 : unit) => @CompM.LRT_Fun unit (fun (p6 : unit) => @CompM.LRT_Fun unit (fun (p7 : unit) => @CompM.LRT_Fun unit (fun (p8 : unit) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))))))))))) (@CompM.LRT_Nil))) (prod (@SAWCorePrelude.BVVec 64 e0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Fun unit (fun (p5 : unit) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))))))))) (f1 : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Fun unit (fun (p5 : unit) => @CompM.LRT_Fun unit (fun (p6 : unit) => @CompM.LRT_Fun unit (fun (p7 : unit) => @CompM.LRT_Fun unit (fun (p8 : unit) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))))))))))) => pair (fun (e1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (p2 : unit) (p3 : unit) (p4 : unit) (p5 : unit) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvult 64 e3 e1 then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) e3) (@SAWCoreVectorsAsCoqVectors.bvsle 64 e3 (intToBv 64 0xfffffffffffffff%Z)) then @SAWCorePrelude.maybe (@SAWCoreScaffolding.Eq (@SAWCoreScaffolding.Bool) (@SAWCoreVectorsAsCoqVectors.bvult 64 e3 e1) (@SAWCoreScaffolding.true)) (CompM (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))) (@errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "ghost12 if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvslt 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 e3 ult_pf0)) (intToBv 64 0%Z) then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) e3) (@SAWCoreVectorsAsCoqVectors.bvsle 64 e3 (intToBv 64 0xfffffffffffffff%Z)) then f1 e1 e2 e3 (@SAWCorePrelude.adjustBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (fun (fld0 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt) e3) tt tt tt tt tt tt tt else @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "Failed Assert at arrays.c:78:7"%string else f1 e1 e2 e3 (@SAWCorePrelude.adjustBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (fun (fld0 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 e3 ult_pf0)) tt) e3) tt tt tt tt tt tt tt) (@SAWCorePrelude.bvultWithProof 64 e3 e1) else @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "Failed Assert at arrays.c:77:9"%string else @returnM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (pair p1 (pair (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) e2 tt) tt))) (pair (fun (e1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (p2 : unit) (p3 : unit) (p4 : unit) (p5 : unit) (p6 : unit) (p7 : unit) (p8 : unit) => if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) e3) (@SAWCoreVectorsAsCoqVectors.bvsle 64 e3 (intToBv 64 0xfffffffffffffff%Z)) then @SAWCorePrelude.maybe (@SAWCoreScaffolding.Eq (@SAWCoreScaffolding.Bool) (@SAWCoreVectorsAsCoqVectors.bvult 64 e3 e1) (@SAWCoreScaffolding.true)) (CompM (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))) (@errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "ghost10 f e1 (@SAWCoreVectorsAsCoqVectors.bvAdd 64 e2 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 e3 ult_pf0)) tt))) (@SAWCoreVectorsAsCoqVectors.bvAdd 64 e3 (intToBv 64 1%Z)) (@SAWCorePrelude.adjustBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 (fun (fld0 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) p1 e3 ult_pf0)) tt)) tt) e3) tt p5 tt tt) (@SAWCorePrelude.bvultWithProof 64 e3 e1) else @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "Failed Assert at arrays.c:80:12"%string) tt)) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Fun unit (fun (p5 : unit) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))))))))) (f1 : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Fun unit (fun (p5 : unit) => @CompM.LRT_Fun unit (fun (p6 : unit) => @CompM.LRT_Fun unit (fun (p7 : unit) => @CompM.LRT_Fun unit (fun (p8 : unit) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))))))))))) => f e0 (intToBv 64 0%Z) (intToBv 64 0%Z) p0 tt tt tt tt)) tt). Definition filter_and_sum_pos : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))) := SAWCoreScaffolding.fst filter_and_sum_pos__tuple_fun. Definition sum_2d__tuple_fun : @CompM.lrtTupleType (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))) (@CompM.LRT_Nil)) := - @CompM.multiFixM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))) (@CompM.LRT_Nil)) (fun (sum_2d : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))) => pair (fun (e0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p0 : @SAWCorePrelude.BVVec 64 e0 (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.letRecM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p4 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))))) (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))))) (@CompM.LRT_Nil))) (prod (@SAWCorePrelude.BVVec 64 e0 (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p4 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))))))) (f1 : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))))) => pair (fun (e2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (p4 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvult 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p4) e3 then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3)) (@SAWCoreVectorsAsCoqVectors.bvsle 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) (intToBv 64 0xfffffffffffffff%Z)) then @SAWCorePrelude.maybe (@SAWCoreScaffolding.Eq (@SAWCoreScaffolding.Bool) (@SAWCoreVectorsAsCoqVectors.bvult 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) e2) (@SAWCoreScaffolding.true)) (CompM (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))) (@errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "z21 unit) p3) e2) (@SAWCoreScaffolding.true)) => if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p4) tt))) (@SAWCoreVectorsAsCoqVectors.bvsle 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p4) tt)) (intToBv 64 0xfffffffffffffff%Z)) then @SAWCorePrelude.maybe (@SAWCoreScaffolding.Eq (@SAWCoreScaffolding.Bool) (@SAWCoreVectorsAsCoqVectors.bvult 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p4) tt)) e3) (@SAWCoreScaffolding.true)) (CompM (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))) (@errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "z40 unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p4) tt)) e3) (@SAWCoreScaffolding.true)) => f e2 e3 (@SAWCorePrelude.adjustBVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) p1 (fun (fld0 : @SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @SAWCorePrelude.adjustBVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (@SAWCorePrelude.atBVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) p1 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) ult_pf0) (fun (fld1 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (@SAWCorePrelude.atBVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) p1 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) ult_pf0) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p4) tt)) ult_pf1)) tt)) tt) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p4) tt))) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3)) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCoreVectorsAsCoqVectors.bvAdd 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCorePrelude.atBVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (@SAWCorePrelude.atBVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) p1 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) ult_pf0) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p4) tt)) ult_pf1))) tt)) tt) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCoreVectorsAsCoqVectors.bvAdd 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p4) tt)) (intToBv 64 1%Z)) tt)) tt)) (@SAWCorePrelude.bvultWithProof 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p4) tt)) e3) else @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "Failed Assert at arrays.c:89:14"%string) (@SAWCorePrelude.bvultWithProof 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) e2) else @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "Failed Assert at arrays.c:89:14"%string else f1 e2 e3 p1 (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@SAWCoreVectorsAsCoqVectors.bvAdd 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) (intToBv 64 1%Z)) tt)) tt)) (pair (fun (e2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvult 64 (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) e2 then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then f e2 e3 p1 p2 (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p3) tt) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt) else @returnM CompM _ (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (pair p1 (pair (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (@projT1 (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_elimEx0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) p2) tt) tt))) tt)) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p4 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))))))) (f1 : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p2 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Fun (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) (fun (p3 : @sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))))) => f1 e0 e1 p0 (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt) (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) (intToBv 64 0%Z) tt))) tt). + @CompM.multiFixM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))) (@CompM.LRT_Nil)) (fun (sum_2d : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))) => pair (fun (e0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p0 : @SAWCorePrelude.BVVec 64 e0 (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.letRecM (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Fun unit (fun (p5 : unit) => @CompM.LRT_Fun unit (fun (p6 : unit) => @CompM.LRT_Fun unit (fun (p7 : unit) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))))))))))) (@CompM.LRT_Cons (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg4 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg5 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg6 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Fun unit (fun (p5 : unit) => @CompM.LRT_Fun unit (fun (p6 : unit) => @CompM.LRT_Fun unit (fun (p7 : unit) => @CompM.LRT_Fun unit (fun (p8 : unit) => @CompM.LRT_Fun unit (fun (p9 : unit) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p10 : @SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))))))))))))))))) (@CompM.LRT_Nil))) (prod (@SAWCorePrelude.BVVec 64 e0 (@SAWCorePrelude.BVVec 64 e1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Fun unit (fun (p5 : unit) => @CompM.LRT_Fun unit (fun (p6 : unit) => @CompM.LRT_Fun unit (fun (p7 : unit) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))))))))))) (f1 : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg4 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg5 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg6 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Fun unit (fun (p5 : unit) => @CompM.LRT_Fun unit (fun (p6 : unit) => @CompM.LRT_Fun unit (fun (p7 : unit) => @CompM.LRT_Fun unit (fun (p8 : unit) => @CompM.LRT_Fun unit (fun (p9 : unit) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p10 : @SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))))))))))))))))) => pair (fun (e2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e4 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e5 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (p2 : unit) (p3 : unit) (p4 : unit) (p5 : unit) (p6 : unit) (p7 : unit) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvult 64 e5 e2 then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) " + Could not prove + (z23, z22, z21, z20, z19, z18, z17). + top1:true, top2:true, top3:array(0, + array(0, + exists z24. eq(LLVMword z24)], + [])], []), top4:eq(LLVMword top1), + top5:eq(LLVMword top2), local6:memblock(W, 0, 8, + fieldsh(eq(top3))), + local7:memblock(W, 0, 8, fieldsh(eq(LLVMword top1))), + local8:memblock(W, 0, 8, fieldsh(eq(LLVMword top2))), + local9:memblock(W, 0, 8, fieldsh(eq(LLVMword z22))), + local10:memblock(W, 8, 0, emptysh) + *memblock(W, 0, 8, fieldsh(eq(LLVMword z21))), + local11:memblock(W, 8, 0, emptysh) + *memblock(W, 0, 8, fieldsh(eq(LLVMword z17))), + z23:llvmframe [local11:8, local10:8, local9:8, local8:8, + local7:8, local6:8], z22:true, z21:true, z20:true, + z19:array(0, + exists z24. eq(LLVMword z24)], [(z20).0]) + *ptr((W,8*z20+0) |-> eq(LLVMword z18)), z18:true, z17:true + + Could not determine enough variables to prove permissions: (z29, + z28, z27, z26, z25, + z24, z23). + z26:true, z25:array(0, + exists z30. eq(LLVMword z30)], [(z26).0]) + *ptr((W,8*z26+0) |-> eq(LLVMword z24)), z24:true"%string else @returnM CompM _ (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) (pair p1 (pair (@existT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit) e4 tt) tt))) (pair (fun (e2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e4 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e5 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e6 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e7 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (e8 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (p1 : @SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (p2 : unit) (p3 : unit) (p4 : unit) (p5 : unit) (p6 : unit) (p7 : unit) (p8 : unit) (p9 : unit) (p10 : @SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => if @SAWCoreScaffolding.not (@SAWCorePrelude.bvEq 1 (if @SAWCoreVectorsAsCoqVectors.bvult 64 e8 e3 then intToBv 1 (-1)%Z else intToBv 1 0%Z) (intToBv 1 0%Z)) then if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) e5) (@SAWCoreVectorsAsCoqVectors.bvsle 64 e5 (intToBv 64 0xfffffffffffffff%Z)) then @SAWCorePrelude.maybe (@SAWCoreScaffolding.Eq (@SAWCoreScaffolding.Bool) (@SAWCoreVectorsAsCoqVectors.bvult 64 e5 e2) (@SAWCoreScaffolding.true)) (CompM (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))) (@errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "ghost15 if @SAWCoreScaffolding.and (@SAWCoreVectorsAsCoqVectors.bvsle 64 (intToBv 64 0xf000000000000000%Z) e8) (@SAWCoreVectorsAsCoqVectors.bvsle 64 e8 (intToBv 64 0xfffffffffffffff%Z)) then @SAWCorePrelude.maybe (@SAWCoreScaffolding.Eq (@SAWCoreScaffolding.Bool) (@SAWCoreVectorsAsCoqVectors.bvult 64 e8 e3) (@SAWCoreScaffolding.true)) (CompM (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))) (@errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "ghost17 @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) " + Could not prove + (z32, z31, z30, z29, z28, z27, z26). + top1:true, top2:true, top3:array(0, + array(0, + exists z33. eq(LLVMword z33)], + [])], []), top4:eq(LLVMword top1), + top5:eq(LLVMword top2), local6:memblock(W, 0, 8, + fieldsh(eq(top3))), + local7:memblock(W, 0, 8, fieldsh(eq(LLVMword top1))), + local8:memblock(W, 0, 8, fieldsh(eq(LLVMword top2))), + local9:memblock(W, 0, 8, fieldsh(eq(LLVMword z31))), + local10:memblock(W, 8, 0, emptysh) + *memblock(W, 0, 8, fieldsh(eq(LLVMword z30))), + local11:memblock(W, 8, 0, emptysh) + *memblock(W, 0, 8, fieldsh(eq(LLVMword z26))), + z32:llvmframe [local11:8, local10:8, local9:8, local8:8, + local7:8, local6:8], z31:true, z30:true, z29:true, + z28:array(0, + exists z33. eq(LLVMword z33)], [(z29).0]) + *ptr((W,8*z29+0) |-> eq(LLVMword z27)), z27:true, z26:true + + Could not determine enough variables to prove permissions: (z36, + z35, z34, z33, z32, + z31, z30). + z33:true, z32:array(0, + exists z37. eq(LLVMword z37)], [(z33).0]) + *ptr((W,8*z33+0) |-> eq(LLVMword z31)), z31:true"%string) (@SAWCorePrelude.bvultWithProof 64 e8 e3) else @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "Failed Assert at arrays.c:89:14"%string) (@SAWCorePrelude.bvultWithProof 64 e5 e2) else @errorM CompM _ (prod (@SAWCorePrelude.BVVec 64 e2 (@SAWCorePrelude.BVVec 64 e3 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)) "Failed Assert at arrays.c:89:14"%string else f e2 e3 e4 (@SAWCoreVectorsAsCoqVectors.bvAdd 64 e5 (intToBv 64 1%Z)) p1 p2 p3 tt tt tt tt) tt)) (fun (f : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Fun unit (fun (p5 : unit) => @CompM.LRT_Fun unit (fun (p6 : unit) => @CompM.LRT_Fun unit (fun (p7 : unit) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))))))))))) (f1 : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg2 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg3 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg4 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg5 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg6 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (p1 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Fun unit (fun (p2 : unit) => @CompM.LRT_Fun unit (fun (p3 : unit) => @CompM.LRT_Fun unit (fun (p4 : unit) => @CompM.LRT_Fun unit (fun (p5 : unit) => @CompM.LRT_Fun unit (fun (p6 : unit) => @CompM.LRT_Fun unit (fun (p7 : unit) => @CompM.LRT_Fun unit (fun (p8 : unit) => @CompM.LRT_Fun unit (fun (p9 : unit) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) (fun (p10 : @SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit))))))))))))))))))))) => f e0 e1 (intToBv 64 0%Z) (intToBv 64 0%Z) p0 tt tt tt tt tt tt)) tt). Definition sum_2d : @CompM.lrtToType (@CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (arg1 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => @CompM.LRT_Fun (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (fun (perm0 : @SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) => @CompM.LRT_Ret (prod (@SAWCorePrelude.BVVec 64 arg0 (@SAWCorePrelude.BVVec 64 arg1 (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)))) (prod (@sigT (@SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) (fun (x_ex0 : @SAWCoreVectorsAsCoqVectors.Vec 64 (@SAWCoreScaffolding.Bool)) => unit)) unit)))))) := SAWCoreScaffolding.fst sum_2d__tuple_fun. From 5e64d20129ee8c79408fc8fdb3431c645f2f30a4 Mon Sep 17 00:00:00 2001 From: Eddy Westbrook Date: Wed, 30 Jun 2021 15:24:28 -0700 Subject: [PATCH 04/11] added heapster_define_rust_type_qual to allow defined Rust types to be qualified with their crates; changed the Rust type translation to use this qualification by translating Rust names in a fully qualified way --- heapster-saw/src/Verifier/SAW/Heapster/RustTypes.hs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/heapster-saw/src/Verifier/SAW/Heapster/RustTypes.hs b/heapster-saw/src/Verifier/SAW/Heapster/RustTypes.hs index b6c621aab0..bee75fa0ca 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/RustTypes.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/RustTypes.hs @@ -270,14 +270,16 @@ namedTypeTable w = -- @Foo::Bar::Baz@ just becomes @[Foo,Bar,Baz]@ newtype RustName = RustName [Ident] deriving (Eq) +-- | Convert a 'RustName' to a string by interspersing "::" +flattenRustName :: RustName -> String +flattenRustName (RustName ids) = concat $ intersperse "::" $ map name ids + instance Show RustName where - show (RustName ids) = concat $ intersperse "::" $ map show ids + show = show . flattenRustName instance RsConvert w RustName (SomeShapeFun w) where - rsConvert w (RustName elems) = - -- FIXME: figure out how to actually resolve names; for now we just look at - -- the last string component... - do let str = name $ last elems + rsConvert w nm = + do let str = flattenRustName nm env <- rciPermEnv <$> ask case lookupNamedShape env str of Just nmsh -> namedShapeShapeFun (natRepr w) nmsh From 5ff38ea1c1d2aec870732825e1b1c539422cc7d4 Mon Sep 17 00:00:00 2001 From: Eddy Westbrook Date: Wed, 30 Jun 2021 17:26:12 -0700 Subject: [PATCH 05/11] whoops, forgot to add the rest of the changes that implemented heapster_define_rust_type_qual to the last commit; also changed parseAndInsDef to not fail when an identifier is already being used, but to instead generate a new, unused identifier --- src/SAWScript/HeapsterBuiltins.hs | 54 +++++++++++++++++++++++-------- src/SAWScript/Interpreter.hs | 10 ++++++ 2 files changed, 51 insertions(+), 13 deletions(-) diff --git a/src/SAWScript/HeapsterBuiltins.hs b/src/SAWScript/HeapsterBuiltins.hs index aa451226ae..d6311b8ad3 100644 --- a/src/SAWScript/HeapsterBuiltins.hs +++ b/src/SAWScript/HeapsterBuiltins.hs @@ -31,6 +31,7 @@ module SAWScript.HeapsterBuiltins , heapster_define_llvmshape , heapster_define_opaque_llvmshape , heapster_define_rust_type + , heapster_define_rust_type_qual , heapster_block_entry_hint , heapster_gen_block_perms_hint , heapster_join_point_hint @@ -71,7 +72,7 @@ import Data.Parameterized.TraversableF import Data.Parameterized.TraversableFC import Verifier.SAW.Term.Functor -import Verifier.SAW.Module +import Verifier.SAW.Module as Mod import Verifier.SAW.Prelude import Verifier.SAW.SharedTerm import Verifier.SAW.OpenTerm @@ -223,10 +224,18 @@ parseTermFromString nm term_string = do Right term -> pure term Left err -> fail $ "Term parsing failed:\n" ++ show err +-- | Find an unused identifier in a 'Module' by starting with a particular +-- 'String' and appending a number if necessary +findUnusedIdent :: Module -> String -> Ident +findUnusedIdent m str = + fromJust $ find (isNothing . Mod.resolveName m . identBaseName) $ + map (mkSafeIdent (moduleName m)) $ (str : map ((str ++) . show) [0..]) + -- | Parse the second given string as a term, check that it has the given type, --- and, if the parsed term is not already an identifier, add it as a --- definition in the current module using the first given string. Returns --- either the identifer of the new definition or the identifier parsed. +-- and, if the parsed term is not already an identifier, add it as a definition +-- in the current module using the first given string. If that first string is +-- already used, find another name for the definition. Return either the +-- identifer of the new definition or the identifier that was parsed. parseAndInsDef :: HeapsterEnv -> String -> Term -> String -> TopLevel Ident parseAndInsDef henv nm term_tp term_string = do sc <- getSharedContext @@ -238,9 +247,10 @@ parseAndInsDef henv nm term_tp term_string = STApp _ _ (Constant (EC _ (ModuleIdentifier term_ident) _) _) -> return term_ident term -> do - let term_ident = mkSafeIdent mnm nm + m <- liftIO $ scFindModule sc mnm + let term_ident = findUnusedIdent m nm liftIO $ scInsertDef sc mnm term_ident term_tp term - pure term_ident + return term_ident heapster_init_env :: BuiltinContext -> Options -> Text -> String -> @@ -656,10 +666,11 @@ heapster_define_opaque_llvmshape _bic _opts henv nm w_int args_str len_str tp_st let env' = withKnownNat w $ permEnvAddOpaqueShape env nm args mb_len tp_id liftIO $ writeIORef (heapsterEnvPermEnvRef henv) env' --- | Define a new named LLVM shape from a Rust type declaration -heapster_define_rust_type :: BuiltinContext -> Options -> HeapsterEnv -> - String -> TopLevel () -heapster_define_rust_type _bic _opts henv str = +-- | Define a new named LLVM shape from a Rust type declaration and an optional +-- crate name that qualifies the type name +heapster_define_rust_type_qual_opt :: BuiltinContext -> Options -> HeapsterEnv -> + Maybe String -> String -> TopLevel () +heapster_define_rust_type_qual_opt _bic _opts henv maybe_crate str = -- NOTE: Looking at first LLVM module to determine pointer width. Need to -- think more to determine if this is always a safe thing to do (e.g. are -- there ever circumstances where different modules have different pointer @@ -671,11 +682,12 @@ heapster_define_rust_type _bic _opts henv str = Left pf -> return pf Right _ -> fail "LLVM arch width is 0!" env <- liftIO $ readIORef (heapsterEnvPermEnvRef henv) + let crated_nm nm = maybe nm (\crate -> crate ++ "::" ++ nm) maybe_crate withKnownNat w $ withLeqProof leq_proof $ do partialShape <- parseRustTypeString env w str case partialShape of NonRecShape nm ctx sh -> - do let nsh = NamedShape { namedShapeName = nm + do let nsh = NamedShape { namedShapeName = crated_nm nm , namedShapeArgs = ctx , namedShapeBody = DefinedShapeBody sh } @@ -684,10 +696,26 @@ heapster_define_rust_type _bic _opts henv str = RecShape nm ctx sh -> do sc <- getSharedContext let mnm = heapsterEnvSAWModule henv - trans_ident = mkSafeIdent mnm (nm ++ "_IRT") - env' <- liftIO $ addIRTRecShape sc mnm env nm ctx sh trans_ident + nm' = crated_nm nm + trans_ident = mkSafeIdent mnm (nm' ++ "_IRT") + env' <- + liftIO $ addIRTRecShape sc mnm env nm' ctx sh trans_ident liftIO $ writeIORef (heapsterEnvPermEnvRef henv) env' + +-- | Define a new named LLVM shape from a Rust type declaration +heapster_define_rust_type :: BuiltinContext -> Options -> HeapsterEnv -> + String -> TopLevel () +heapster_define_rust_type bic opts henv str = + heapster_define_rust_type_qual_opt bic opts henv Nothing str + +-- | Define a new named LLVM shape from a Rust type declaration and a crate name +-- that qualifies the Rust type by being prefixed to the name of the LLVM shape +heapster_define_rust_type_qual :: BuiltinContext -> Options -> HeapsterEnv -> + String -> String -> TopLevel () +heapster_define_rust_type_qual bic opts henv crate str = + heapster_define_rust_type_qual_opt bic opts henv (Just crate) str + -- | Add Heapster type-checking hint for some blocks in a function given by -- name. The blocks to receive the hint are those specified in the list, or all -- blocks if the list is empty. diff --git a/src/SAWScript/Interpreter.hs b/src/SAWScript/Interpreter.hs index 29537ab238..5fb1423e53 100644 --- a/src/SAWScript/Interpreter.hs +++ b/src/SAWScript/Interpreter.hs @@ -3073,6 +3073,16 @@ primitives = Map.fromList , "a string representing a top-level struct or enum definition." ] + , prim "heapster_define_rust_type_qual" + "HeapsterEnv -> String -> String -> TopLevel HeapsterEnv" + (bicVal heapster_define_rust_type_qual) + Experimental + [ "heapster_define_rust_type_qual env crate tp defines a Heapster LLVM" + , " shape from tp, a string representing a top-level Rust struct or enum" + , " definition. The type is qualified by crate, meaning that \"crate::\"" + , " is prepended to its name." + ] + , prim "heapster_block_entry_hint" "HeapsterEnv -> String -> Int -> String -> String -> String -> TopLevel ()" (bicVal heapster_block_entry_hint) From fd47f04a17aebd9a6d8076c093c0df29b4cbf97a Mon Sep 17 00:00:00 2001 From: Eddy Westbrook Date: Wed, 30 Jun 2021 17:27:40 -0700 Subject: [PATCH 06/11] added a Tree data structure, which uses Vec in its recursive definition, as an example in rust_data --- heapster-saw/examples/rust_data.bc | Bin 196800 -> 197152 bytes heapster-saw/examples/rust_data.rs | 28 ++++++++++++++++++++++++++++ heapster-saw/examples/rust_data.saw | 6 +++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/heapster-saw/examples/rust_data.bc b/heapster-saw/examples/rust_data.bc index 6cf6f5b23d202d085e2d6b23749ba5220932c3e7..01d5a22c017a25c2b79d6b23542ea8d250526b06 100644 GIT binary patch delta 69504 zcmdRX30M01-7PTK6>|Qa2R$rD_twrnMD3O0a4h z6xYwT)O~H)q-eDwxKMFHrHWhKaHs8k&rAY@@B6>yzxTiQxp}0MnK^ULyKm>6v`oX- zXYs9XmN{7x@Ue$KKC8fbC^@NM(k${q!5J}`|NX-h(b!K0PnWx&Ep~mYcYmz5ZX>Kh zYBJcT$7eaG?ily8l)XDD>6>Xq8p5Mxv{#KZ)_ML$Ij8QBAfQRY9$YocZ>*RgoYTZp zhLp2Nsz%Bthg278%-pheB%?fMIs5w%dvwmZ@7R`xloq|#I*9jKK=%n*&MWlOEG1fg zP>t+-p(cB1(zZ`NE34q!rw5KLi{-dv$X4&{m1#Y5_@V3~(gp_4`YfrEzad>Rvq;Wy zp5ADe6mz3c<2XJ|KNn5z7Ud@By?TO$WA!T-n|D2BZDeovpawO26RcC+eIYv5t)Iv3 z^~ZN8lP7sR%hxpYs^C9beZY?SMk=AVyRq|YM13l&W@Z|lQ zG#+AgIP!P@oYM3|eb78_4|L6aAz6Tid3@sTy;++RI9;U889H5z7KrU)BDlVijWd1& zUXAzBp-Uctl=MO~7kLOg(5&v3XcE5{Qi?6j67FsKQ;7oIJSq~_j(J8<&pRNBKtsJE z$*<8GFAYZ@t=F5kAY1Q=q%E4`J%iki8oV>8gbQ&N21pcC!h=ndk<@)8vhneuYCQz? zD8gsEefS?_|HPr2Z?m1E#Cy&^)6{ziE~95YDb)VuKEqMEp9fmhV=y@umG$_Heef%D z07i`F_|BrP20t)jkWRipGyMu!)NAyIpPbe0QzY}BL5@Uw{g+dHKlK@nRs{4w!+Iu? zJJ8miGK)irayA)qNya{e?)UtHn!cH{94!k-C$FRX0duK)Up=ryD+8R+yj~vUB2>_8 zA-C*-P0R0_Rsif`6wrGC`5V&r){)mxc%SL!x9mMG4s^fJ`Z;>k(;fZP$AQ&t1-jX1 zD*JZu6ZB267^O<1Eh`^bc?rZEzo?HHZl0IUCsU9t@Hu%G1qJnBCA>frf@Co7mY`rV z0M){Ovk(<5A?uJ&uopQG4G#7uYtY=_NU{a}EjZHB&JAnia1lZLe&BiV2D1=;03~CM zl&h&31ji+R?AyQKL*^3}yR}w10d4qhBBLrp6l)SXqH&@Kdw91a)$py20f06K5 zsj(XC7=hR&Zy^IiMwtCW0Y#EPnn6ICUI&UJ(^;xmby)@FDf?5lNk%33`3f_~771!9 zvXUJS2Ny|eV|q1IP??T1Z#<X2~s&W>_AUCiC(q7RjiZ?Fvzv+^NXCythKkO8wZ! z{y^#Tm_BduY=@^53DlKTvO`63jM!S3rR4kYzL#1H^O~&egNu~ZwxrPJCQD%su}9@2 zDBo68o+XiGnaf2A-eGf%R8pihXF0>gvLb=KFmq~!+WTx4xrse3vs5a~+ObJI`xB|e zH`hESqNtL(?OL0hnIA5syq$b_!ce&{cVUrWq%d<9yc z{KMukR~5YV=Ir(1LYA~hpxRPSCEIGvEB14QnbR_pIOns-H6`XTK?=cF$(ee~b6IMD zJv9UFjwlju$P_8WVUt_T0Kb#v)NQLKWoD8{$VvT>ZJsGr2x`i#eRwg!lIdD=(nTT2 zmlh=jjCN}%cT@0Mlq@-i?cNN_4cD5-genA%vofU|RV7u-)0$_NDR{4yF=bpK)okO# zbM{vVg3>c(oJvZ=F9l*G30b3x#95kP`CIMBMdFEjq;f%aYG&E$a!T^thf+!9V{4U} z84F(6E~EjedBzH6Al zO;M9IhT@gRj?a#DS>bCAAi@O})gU=janUMm z1Kfs%2$Jp_>GCa7r>B5JpgBzw zLZD0-5F2*Unz;sY2OplaWJJ%+)44Qr)$}ET5{=M&8Boh62>2&suCe%gQh&EU2M+Kkh;PJm=+`#K>YHu%<(-*a45stECSY^=2BY`O_Zr&5L^fP6XLRb zf0ec`59Aw=#5dpr*c_Wz%k?6OGMKL&%Ds!M-|M{zA{>UaLz#U=?xBatfE+UXEZpMn zIUCuc-AE8kaE76TTWZP1BJN5o8b&B#eE{?QE4@`bi%QW#2A+z4K-j!?@1 z$qr&JwP=23M@W5PR68;Ij=If%O?E)(Mk92>;u9cyJ3=iq>N7_}xJwX9!<;ngqaIjf z5RL>PHOxuN(B3I3jZ+ni$N>u{h8qOUq3;9UW{xGwYT+ECF2krl{3bhGY)OcKa%#8+ zuwrpLQpQOG1_9yP8RYNibe8DFjB00)!~Ga%J;)G@lHsRmC}&UdWgk+(!Z56zLzjQB zoK^;4CcqesIt?c4)7$*(z#yQUn7)P?w5yMvoCx#5C=8{ZjU{fms@SF(@G-KI#%FeT zjb{ z%)MK=AGZLQCQzP#m0-%qgN%FU2KO^WdQSu z&0cZ0E?~Zw$JmSqFf9yZr=dKSa8llzC{r59F2llM(S7wtzE%VgfRUy@ARITkKj-WM zd1crRS1~PLdf!yL63S9I#lj&5`=d-4wY|!v1SAmHE`y6iUwY_>?l+r43BouOIHF7l z{jSO-A9!mVNy|}HA-H=mM+Pxc(`0{aw@7WG=pYqR^Qbkg%%D_IhO*1!0gkMr|Fq=K*~N0Yydj9tL4T|9n+FrI_wOsmfJ2?@Mm^~ za{2h8^7IaT7;;Yh>|^Y!f;!8`*7S?qCt&~8uoSIqG}mABY7>7%5H)ZS3kc2i?$xI~ z4gxgYIzw4;tTa2ni+R61$?0fmS16Z1PjMaHh3g|9GIn!iG;^tNIR4>bF7AAVuo}k=H>koi@WeNtlv({y_>@l ziu-k;<)Oyv-mNgoXt-c~@IsHTKg+(^g_sWKUB0jFN=$#1m*X#8S-yB_ZN;)KEFaw6 zW_(LmTE4qC-10}DB~Zf%r7CuBME{54{)Dmtki;w(V@1#YcA#$=m*9iDk-;^<9-ypy z?VJ4$ur?v)2lo|8AlINx1SlqafR-cf-nIIjP2|A(Vtk1)Tr1R-s{ltB)lN(Q?^HGs zEx@t9or(F)8x8j_@B%<18cgg3_6A0$dB(w9u(%q}$*AvQRc+O5I0K5(%eTrFnXNFfI@4fs0FLSw^!685kydd3w@^ zS;BEVAwgV%i(>eL57_x*TQ*b_fj8?ceP?$GKUVp|&@cm}^rQt#GA;T8q@7jSKWx}* zNg_dvHCcY^N|wbOkS|bDdU-t^0`>iivTvpcHB3s|ZyA^7X^w^OQSfM3SUaTep{vRv zsSF^v4wuF7N6=B_<#GNcWjzSuBtR>}S80#D_tnT&eV-1#GQMu(o^4zZz%m%xY2Gmo z{Rsz9Hh5MHf6TO_e(_&k3$6x~nttk0gjZBN-Sa?Ej5Ea}O*8W83G2_b1Z!uAWq7Fs~uz*?CO+M z`gdg5IJUQ5+>-`~kkR&^33#4Qd@mbAD0dr?qxJibmOAc9kZ@cgY?tsgW1OO&IS``9 za8V3@fFFoh-xF<`Z;7%bBN^xv?Cg!-Y!;dkIYw~R1O%lH)_qh&Z$jEY()kxmK-Ne#_3Ra=;Zi3; z^bDRC!yf}{_>Xz4;}Au1G5%NZomh8 z!NP()7*;vhZkQ2I4TkI0dWG9jfOR=sz+7NptxHwjj_wjj4%p5Qz~bcy>&x&+deWMW zn(V(Im4gYfB*HDA)s3LiXC9z>aEbwiThbEGWR4@G83c%on7)STfACxx#P4+0g*gSc zAYeL56pS{*SF*;_=*KZMdFJX zr}r1*?H>b4qVXwx5vMOl!xpGP=i6YIjJ}A8KmG9c>}4d;WF$UNTbZ!q_<6TlKvfUJ zXyOCLv3mt`epgQhRW}L>O@Q0;gxvQaC@?8ge<1PDg>zbDQ@Ug@m+KR|fnu8GS&9?m z*sI7cdDe=LW;ONclEB<~?&E+_g2lxQ@PPeqH&1E+dnH@|I;jk5z3pAK8w^z^!R2=B zH}d-GA!wDh+d*1Q;w~1j3t)L8_O$2?Soei%KA+%c!1EoVcVOY*^3)ECNz>`jS6}$) z!QpMAN2=hzG@-&54V6zL2oZp*#@86r_V(ch_Rn3|zjw*j`F|HNtls~zb#HbT|Mqa- z){oWT@e+X0Vmv9${@5ZTi+e;Us^(jQ|S+*Kv)1?>@1#m%*zA+G1i2t{=C(d*TJaM zRE4250a6Agxc&|#8G}#hi=a~*XT{vXZjgqR!5`Ew^W!|%$0U(s9IB>`&-s`pF$iG0 z`q2W|;>60u(S<$ywWBrQ=lt+yK&uokb_n2!oa*GcgfhR*8vx}^- z>J!`&z|MplMgj?e0B7SL8RLKs`?L4fbT=>xY7=E`a@`Yq3!XKh>WC*bt_qkG6R@4C z4qFD^SA&;>Y8J4G{(w}?iJH&73~(D=8Z7~%GS^3*ge!+&R7d@D@3IZo$=O|$)#0o4 zk$)EoPaZWt7hI?5q?eDZk30vHwi^Iit3wNK7K7(pYGVE#9Bj2d0=kN0kPiFre|pD~ zzl%X`pJ=r{W*CYE5Lg3wYTG{;`Rkol>l0l^?hVY! zfWV0127Cb4dE3C*CD8=&)`YOt$62eP zwBBTdl@{#Kd!rIAb*)O){O~aM4^mBH7Qz$&1Q*AWFcL z$>0WjfVI~J6S5%zF9RDx3m47WjqAqtJqHkgjp=~E|9MqiGC(la2mwv4Z&dz=E#?8k zB4I3Mn4ZpI_m2y3s|E;+n8A{u2!EyQOBx7qvk3&Fo$qSF!ia&i9S|(48|!f$Ab4N` zL0$EG@j8OYH$s4EpvoC3`QlZ%J4r}E9cZDYY5QWqW1IH?0gUOO!Kfdns-6J^c#lm6 zH<-NG|A(Lc6a!|vJI|Xl^254UnZ6*iCev1&=G(98JT2aTlsF7c)5`{f?KI9y(>5dc zrCDK@h-l;1v|=TUH08qYp+d8fpxa<(I%u%*h_ml*yN-Gj7QNWLZRcxcy*mZjD%u)U zJ9jI!>k?&;h`7rh!%|C(lZx@kQFYE9WiawRtV9bJi6^c7tY&Bn9Tx8Y*@NQa>_cPL>bR%Eyi;DUvHm}uqju=Dk|_c_{KN41L=%6h?mg z&3Sovmy!Neq5T`c=b4WD^xHG?2$HBZQWOx7mdsqz%cd5JK&xncFjg`Zgk!(XTBIKe z6PQTf;wg98i&=!)$bP^WDudbyu4O`k_zNCww=Mo7uRoK0MG#FU1kg0cb6bJ$2{071 zpC-VX-bebE_UH^NP5-CIPHUn_LIBcAvx)|mRc~d}3cwb?#SSaQ&HK@t z4`n5gkpT>9dQvO_8{hbFeayO;_lMO-`pNtNS6E!k3h>5$?uRk$%-UPu{8qmUoR$GASRbSHx$i)3GE8YAt`CPE>nrL>5OpRp z`1tJQ^08fAk;R0e)@Loc8tljOGxA4+O{Y4;8ecR)dx%AdLAU`cygrt!->SFx9)!@( z1X%y2_g*)B1NTiN>zmLwoCT1ogBk3QtieYjChi7UVW+1P3+DfFxndHSP*WBxo8$DD zDY9!SK)@tgnAX4AiNK44{?a1El&!`4eY_8C8Zy0%Guikq@mS z&wi(-cc|%0G*Q1v(P=cWo$Bbt_fR8Hlg*UVo$t=ow}*sY`3w zZ5uU#YujpORv7u~_8!~=W)uNdtpiYtUj4s0%y6?~q-yofF&0OF@g_qb#+@28Mcu`s zJ=nd38^EU2CL{ev_m78>4JOOK+I#<*rGRLI)jLpH^vYF5vN|je=H|xlRPOF=TmjL~ z1pA|}+GM@erd!{yewggn4A}SYJkr1K>$l1yYNEwt`SJt1xV>1E8uYn+dH+MN+w?H9 z6kuu>rtF)ORWB#Vh_?(g;TD#rhmDo&7c5p2*y)a;m+!fI6gdg#5WIcTy$j#GCr+se zo@Hm^Z#uPv``C<9-12gz40NB2{w*7 zgR9m2ZXH*It~rB$A*{s4D_C@h zO^zal=k<}ZUMRH{W{7JL61XM69)Pn8g$MZfX>(l=}s-2ZcYLWZwG#0xX%9-7}KilQZ z>WN?0Jv&>ov!(fAbxVsmKcmDqsL0DtT3c{jcIUH~zf9HqkRa*hlO5vBVr$(4pB2=~ zV%EO=WrC*Z!1LL2SU$B;UcBW^@Sn1`YsEx!a3-v|564w0@E z*?$5z)qQ^4f6h+e#mOG07K>_rJ}NyxozBycaMD`+h^h$C1g0oA;HisR)($^s=jz4b z5SdDWOSBiY-JFzuDTb+Q^2kgTo;&$PaE#vj0Cgr$GaR2!y%Rh*Xo%j`uFSajh~6Wm zLrSNI3$SGkODyHrwGOfL6hx(8p(^Lz+9jjpiMLp`)S~puaDG2bAxo$l(GXNF>6IsY zdoWPwT9?VonzA{#yj1YHT*z0YHwKqKyLx1Rkl$VPO=BRLsfeQ#Ll+X+A>_q{WUS!Q z6@|F%gE?QWyj3QkjtoaL=7p;YFlbLQ`j!XCr720f0Xcc(+eGOQ@oa%LC=EC~A|4)l zZN`@;eGQKtwi1d)YGwBG=xJ%SN){6Yc5FhbGEdITr~jz)eEWu)%onB*^fS(h#PdVB zKaB?pZ>dES=ZhT{!(wmoViN-8Nxw=-iS3Z&DpWAv!&BQ!Cg4|jX0ehB#SLOt9tLf+ zakLAJZqP+Jkxr=p0;ly0D8ulWe`C0d=XN}GQ}&pDJ+%$eFEDq$jfwWU)(#66un+7T z;UuNx=~ZZGi6bi8&GD_sD}Rm$y({(93eMS4-7qm}YBB?28Cj5t7%=0SqKsbWTEYn@tA??vuCF}aU) z7mCi?B>Y9oNDnEcNk2Y$}mpG#E#oj&(==;4S6g!Y69(MmUP5yp( z(PA&oIZTl0sC=>gKbY_BzZ&o#E_i*BJC}jqACdoHMQ?{#b90dFQh7KI1&yphCl`p& zu%$u=_J4VI-BO`5+tTui$9ZXB0j&9j$R(1~Rcwua}hdK_^U@}lRU@&#__ z<}wQuu$=!7?>Zsn@^12rkr4S2!M3eCxVz#kf^F6ATSoYvizAk23@(-m=f%UZL@Fd( z%Kfq{6j`otEHFKyTPudywy-GM@)@h!oHJK6PqN^Nx1#8k-kiz})~ykBXuzlQob}%k zqC}qhA|+{QwVq1Yi34ZLC^orpIlAzv1OIiRv~5xP&s61<#+~Tdr`<#ssF-OkA)2Ji z_cM5w@Q%#_+V-TL*Qv&k4!Znw(uoX2!&VIYzXAS?mH$)Vhoar9y2ZWS!3FINw*6o@ z1{ULUzt$6#oVW}DVfA7CxJuAmyYid2v+a_Uki@d zaK%S{&dwgJ(FByMb`#BpQDVm)8dqmRP|2yXrOE>2K`F{obW$B4!Q%eGPasdKKLSp1 z5^d}|o2Q?UZRS9fq!InwORm!xm-PPoC95?5-jdU8cE?#b^G*V5qykxQ_FR;gIa^$f zb<Q6i~$x&g0hgjNoujDU^*ESpPzYh2uYUIqd&6TVr$0`YkjD)>6wCs%enVl ze@O-biwq1FKPzMs#0#(5;|&R#lpW$;LN6p05N1L7RuvjR zo4_WAo0K3FB!;2yvU}+c29Y9kE?Z#wMK^XA=_p`8ji`YjjSK#*7R}7*=7gOX9W$8v zEVMbNM_iAcj6Q8~2Wc!3S7S|)6A|7gBLt;>f>JL|4d5$MUm3!aM~KJeeQ#eQ2;*^a zW`bFg1~VVF(oLqYlg@R9SN)E!_TW}hS>U~GQPXOBl#y$Ivj}dNp#8Z%$vepzftgRqYp&0tcr#?6ivlw#T#F&OF5 zPis~>a}w#OB%~uMp`%n$Ae!`9oWtKgH0CcQI=g21KYgwT%25eIYUAjP*b zcwGPr2U2P1%-U!&44HrKYOisEIBSQ-)1XQCb{H!E!U-jPZf;+IZ|*AYdb0;SyYcfL z9_@MnVp;E+MrQJcm&9)tIMK#nnLpx&!<9;^icpl1_H|SovPFL@=pi#kCSU;Q$fQeza!`XK z6(ByVFI84b%8S^fK*HYCU9diXiJw>vkwp%Qu*q5%G9*cX2yvcBF{mvc{enK~)6$cO z7qXNga$et4v8~omrG`+1Ywo@`ne8d!DGQb6TozPsiP4FIRCHvcl(a(6*So_j$pRGi ze*!S?u!HODzpo4+gJ#QolL+vT1f*fnYdb@mR}gZjvXuP3Dwa@a0RdM1D=?9z7NCzBZQGF73PV&aBq z-chzfN`$_>)(v?VdJK(w3Mvt73;6Fb;7=db?j;!iGOc@wonOZh=mFP(9#kY2wPbil zI)|o5tbrZ{h29ED^k_31njYmzKo8|JoW@MZUzc*;&c5E8;CXVicBv!BJp&}Atpehh zpcMXrGn$BARyzKMNS%`^dos?EbN+;q1Q|hO@zd1fINf<&43O+1 zyMMa@+RL47FhFC$0AZ@VRtQq>DWq+ot1RLKms)#4Ky~#BK3DN`O9isn{)`vSNffue zG3NWPt@!ecMk!mK;ifAXM|NXDx^h?-`5)`>r$zn}T5*GRG7205$5fCuqe7>HVx#J! zg#PhQ6y*Ws^0oZbsxkud^5u6I?^YHP&Vk{CfYKI7w-+nZ%-7p$*@RpwG7q-kq!r5A zZ=xZaygsg28eFsV6Z5b5ys`V+6JD3wFU<~6g5;olTQ+{Q<@4vHR#_(fgas$HP}zPHm2XOjyG~WEyLAsd-qCeq!^@xDJq5=0XM z&ACKXq`HJ_q`##liYFfV911gYJebTaT$AxYr%xeWbT_?8>x8RN)u{(!D~}ckc@1+; zQ|qWLjHYD?`u$56(Qe69B6nP-hT~ilKzvax%wdFIGie`OZ z1M8Wib3^F?N^bEyos;`GKqF1bz&69TAa-yP7?M~=YPKWwIFAg%?ob~pj4Ab9R&`{P zF=%7-B$217Z=PS17FV`YR`!KR%+wYlB$RE)5E&F^=(6(_g|aOK)6`bTAK@*60?MtZ zlyg+ox(_vsgYgscg)b*|HWF`a`EvCHbp7i%7e*r;hw#WiJRuzwLdhecKv{_*^?uxc z^nJ5_kPT$u2?b3M{^P^dF!WO2)3@JFZizjxDa$?I&JXmIloQSiPkIYvbi|3{O`NbF zvqJI3eFFbcVXjLdEgnX>|%&=ahR8e$ZdU?XuIEbD@hh*Wo4*r;o?lE0uNKm3Df;~1mfYf+Z>>(Ans0r zVcJLW&10FWP>uxzM*c})vD28fSc2m;%RG3W&WfU{iZ@aZP{t@2< zhNO{YcQ7^Ka1}pSqlOB!xACyuXOb1kKL?}Sqb?U?A>VFL89bhdxK1v7FYj4 zv9^m$ptm~=If{6vJqHVoF{Me`=^V<)NmIL=$ZQRABJLN{MNZm-#x(TRPVa8jH~uLn zpYC)cHz2EBVr~`HnZI@}t<~56>662j+PQ4u{;SztD1S&t(7jzACJVr_MwxIkxq&5X z#cs@AH{H!Wqy?(oEz*??B3%)+M` z`%8d4-<8~KLq?{knJQ;NwqW|E95#tF1;<3lh^4l)e$?V}EEM;i#w%pLRQv>#wYS;+ z9_C{r7M2F8V%>y~G|%pbp%s6N@S|fFV=S`}fba&OmP2e4!gz@G`{?H1q+wYc*v?p& zb>17CW2_JLxRfl9qh#QG3)P}_k1OY;nOlrsC}N7r8BTsEZeJvqX9fP)V;;)c=We$k z1UO2@I`>Mc(qpIn@D4h>Z!otQ>w}jbalaWr#-qe~4cn@UC-NVDAZOicX$CO8D@bz8#B^=^G^w+j%ZYx#!^`p^n zHDb<7`1-OCk5w^#>kV9JY!}y$q*QtO1xg#6I8X)2^(wPiL35ZQi5hvkehJ)K#fcTP z=)k6^c(H^CpJca!#)IV|F5ksA#!yQ1PZrKWW(u=M)2M8M?Mf;ofrVl8+XLOCt1ww zjtVK3IUSpX0Quf))3YEp!RZ=ff@xvE-r=pT{3z+9yRd^aL)X7`OWle6{ucKly3__~ zgJxpGFsP>TNwP#%<|D^maS1Si7~e-i{gwfCX;9PmUYy+NAm}CQKJ(Q?oU`M><^&eG zYA8t@9o8N#yFj5CBu*d>Lz-MCwD7ygF*r|Ps>AfMYP{^ZxEhUn5e|?qnH<5t#r36R zy;DG>hWp|ecr6yS=(kCw_!i!gh;e_>+lKIOrV1*Sn|rL!9G63xrKhjj;j1Sgqd3pR z6MN<9_MqvvpIF$)`zgVRK;>~Trm<}Un>=S1zU+*lbdhi% zP1LzKQOfBt&yE=narOb}U<2OQK%;IQ#ws`G41B$R4@CUXDx1y;!A^xBIkq(A5&s4{MLX<#$&_SH0W z`k>sC&bb&_+6$42)sVhfn-A6 zwZ?P@eR;?`vW}`yxddu7ia1<%Rf>hS?_SYciJ*9QP3mi_%q%a*QDRqFsh|)f;gmCa zcSvg69z$cDqNC!zhjVSgLDG>meT1vqQQhIZ(PnsycwfQ={sF2yPb0^BeSSeuGCWrVF2HW2iY*a9la*&eBcln>_g+^ev1BcfuWvCSHW{T$S!unaQNNNjxQhx=x9Sz|_kPUm+ z*oU>9Mw5=Z!jF3`KN=<|+PtP4v)fYCJ$!`4GE{anq-QnG`_g}D&e5=ZeLnxe}4 z0P;+wu+--1$7-l<%#)XYMD;a{5JzhQha}OP%(&4W;~WY&S5CRgY<7vdz;Qru-XmgU zu%L2S{~Yw>ST{~%AfTUytd0jTRaR!Z^F11HJdzFr+Y7<~HEbXsAA*uj2+2J3?6@m; zG+4SLkkI6wa6{4)V*AwK&V2$jf4U9~rQ>51I%UnrNW(pz_EEl!BUq!jW zSh7UBL9%Ki`=b*l-2+-;OV$;fso7jUbh9P($VSvbF^JiQdxHu z9cTe-|H<)Gjzr9zFA5X0a){+t+9Yf2`=nI6$td|e7`Lt%49d({aMnhhitq*jgoX>+ z^z^IhWEsFSt1wpO%HavDuPcj@xZGY< zx>^9Pc{p~>gW^*HV238zI)dleI=n9T%%0{a-Zq;4srEIpc)rDc@K$4Of7p{|?&%&V z#&wy$d^e3_4IIc{a|v$cZS7~P9hdn@A@ODR>G6C%u9)|kn7}g>T5*|$slj}9z&6uR zJ|CB1(0DWNhLTWc&s1ndd@EO0Cg>Z3^Cv=_m6?`X$^%4l*c%Bbw^*%(Y-6kJWkk!O81Oc45e{T2Ffb>}cT39d$El`iAch9gI=!xbRXP++Rc~-mdbC_9a43bglF%vzPKRh0NT)@N6!Cr)V_#rnTs&z{Bq$)X-5K>=F!CKJ}C{7f`TC=E?U$hRY z^IH~qCbr4i4kXW3n;8H^9i2L-bX;c6Kt8m+mp4VfpH`^6*iP@E2gkAK;-3^t;16Xk z5<^!(QTL3x5vge8>F#o`xtz#!4mEpmhb=th7$fE+ONZ!TpQ{(J35Wi3FEXC6j`4(N zf%=W3f$WE#pc@q~gIxmYMkFWz&b=Q`U#>q4lwXv76KDwzv=I~eHQadp3GALh?6VWUd)c%z4wX#Z| zUP@s5bmPx(hyh3I`EE1nu0O=l1?#5 zH7tD;s*g6TJ=y?1b~n!)@=?;|TIpDAN2C zY}nZS>2!!m#05DkoX?>5-s1Ud4uXbF&#g5ND!@B9U<7Ai-)CKdPS<#G8GMq^)0&KvEXJ|9O6yZDh7g0L zoKH6#jpKm9^f=@3lM;OH#fitU^x8oUBQKSbffSU=z~vdbHB({}nL-)*_FP{T?!A<+ z+jsu{c{|^%ZxlhLskv6XArf^m`%Vl`9i$t?DGXTjCD@KsY>;a**M>>FSp`MieeGT@ z$+gOpd8y~T$p1qt0!1MQ5;vOVZ1X_ueAf~4UoPi$+mfP(HZb_xzNnxrm9YOhyIg{a9|lp_Av`Nng}> z-h0G87*38;uXk0K52YdlhvdV|-@?q##xIv}KP~g(RL=q`wB|ito9PSA+ej7j$N3d- zE@k>1q;`kmI8Ya@g<7-%UECy6VL$K+y9jkaT;LxLrDK!j&l?X8Yy3!VC#l948lV7i z_3&zNHY;5qp}l|bw$MI$)rUh+l2C1R!8eaWODAL)QRz&gHe~`NyZ4WSH;|=XS`3ck z-JIVjsIM>?h|e$?QIPBs3eO#PbL88ozG&<(e|{ID=}3}{;~@7Yaat}ESybk+g4P@W zZpoASw6W5*W9ju^Ja74caSWSt5xzd+;IB}{0WTDl{)%x%7r+@AYUcIe?%Iz2UVoTA zTuoyN>5IWp9T^A4XU=7`^1>({vy1H94_&*^+ZszS?oVZqL5{T_$?5PjV<&efQ+KE9 z6jfQcUSSZiTCZTl__f=3r{Tw9=v>ug$SasqmtX?=qSoE(ER@ZaiiOoP@WvB+J9bRf zsh_xiQrIL4q+m#eqvwnt7qEHU>AAUMpX;ejF=D#7YQy@jJwK ze5%&Vx!dCW9IHGfY)z-2ZWn!~aBvzrPRRc;9ir}Mjc+=-ojlmK)FJGqg9n5G$rh#8 zL6&sa5x%~HeR8^w6p~&#wH}S{8%ki1%zfSNb~dB0FM8|#HV$^KYcKkm*n~hXcQy!K z$!Zi)=g}>PHbN6R8zH0lm|xe6*ZK>s_^s%>8&2qlx_}>MTaegc(wo{6S2AByHbi5UdQ=jAR(V|F zRx1(R%h$?eUyE1fB(p1~=MqJn0w_7`&*LER zG*d=`8sT5*SFyV~m<;afcY51{?%DVV*E1okxTX8v0XAX|Tn_)Y7~}Qk|2<+aL<(K(KIp%9IMG@aG`p$Jsm6QK6wl8W*1$ zKO&z$ib_9kP`yJDLh3TI)p)R6f|2~!{w|$xryZd|A^~UkY5ZS%3^(Eo?{)&tGcnHn z?LDkNIe>A#CpW=4TtclwcI0M@4xArk3F2y@i)4s;dYGZIYJ1IpRA;ov1Kdx+<7H|H z=yq9b(@2{m=@2E|@`aoDjgm;GD+WoFgCx=|=UBz)7YG2K{A(Y3b|@HaXASk>&UIik z<9gswgOLaaBT*+<{%LKj(puq3*DUwpnx*}g8mQm8XD(doo3HWyxOMS1Xb3H#6-Mk9 zxEPuknl(h4`I@x`R<&GLn5TgXVUzhrS3Z&S;B2OAVd&4sLH`|?!k3@8_|IW_v3UJ| zAEw?Y|AtdHqv_ni)B_A+540*l8GBReRS0xpY)buN#qm{{jmHf=s+qs8cTTBwWdj1(Xw0px$6z>Ri|zZvFmJ}H{qogqi#*!oSh&w zC#Ipers&BX0z>zJsc}>0xj4b{B-~amZ;?YgIY^{81?HK5UqC=3u$q!_SbfaG@^9x5 ze%c2)3#7S9oG_9rGh3ZOKc~8}#8$gM((eAqR)cOgIdZ)W-sR7xAlRC{*cgp6ZU_5! zEZkXAYrbT5Fia%&{OxEb{e}Ffa_D6`8B3(Ts2DmG8mHU=|XaJxw+TWE`)+_RWFZX1AUfIys_I*b)7Tfj`_1{FM$%pws)24gkG5 zIU4=m+`q#W4ZH409n`pQK#9LOTaYVrTFplsTYlm)%J^-lYt~PKXV4TjBq@oK)hIbd z(`0L9$S6zKe)BM~#l@A}6-J|lZ0`wsLFfo?N!3y8+wGo{ZkRRLE4%?i+p9thrS3~V z(golXpcVJ}{8Q-8ERVcGL)Ucn{{eJu_an?{rbBgj7m8|e8HJ@#eq_ejs@oX*1!DC$ zmUe+NE=&m}%8$j$f&BbqkR%hmHVat0&Sb04XLtCxj2NE2$BwNZX}5;4Sz!{^;woYj z)BxDE=-ZYc8_Ygv6{U30Z4f=@I@E35abuUwgCKKSF`;U?0}Xxi ziIq6(*Y)9$F8mt0oHanm*9~h#p$`>qw1ydW2Wd3sKtmUfx?wJ8T74K~i{}!0r&JC- zaE```A;}dB-k;f)UzSVRM3U=_CuR20_a-uyviRe_Xi3c}%Bw5Hu!(772=TD<(&1l~Z z!;xy*{(j8sp;MIHXCvn8te5`99**4l#G4OHjG&(jnLYjZ5Dg2w#ujNc?jb z{Ph^5&#F^QuVwqIClf+6vIdA01xNY|dDNU=C|1FQV2!M$S|Jvk07;_eo~2k98(~x} zlJ62q%gG;a6TyY@l?N*j<(RT10 zAs+&43Sj`I}8#6$F6IZO+z<7xZC5W=x)DugADHv3)L2f3V@)PoOAmx># zpx!Q>xG23AzBW20N+-U;b)!*t!_c>XjOKDP?{+Y8>< zk3roM-fP_GLf#VGg-RdZxjIB|y!-XjS&(EmvQpQbBzuhfX#&V$gXMQ2P(U^Ar4vCX zfe6{no12Sv#&?(rYH`DBp$0nWsXK+K-4;*!Tiu9DyZ*Qfb9lA-%X7iC8F zo=WGe`JXenE5wC#>o3#Qv*CPldsh#Ze2q0J;}8<9v$Bdf1MQORgAb5alnMJ4JV@PT zHL*=Q$~ZyS1=4BK8+z+U0=&;H(+?}qT`(g(g9hN=ML4K^1U*L80G|uMw;1B1P+Ur% za&>VcSjD@r-!>tXtPrdfCWAujyf|bJcgTgHZ>X10jQcQ}>#>zS8E81WTBw`OA^XpO zFdv!^{<}1L^B>U6noIU1ck23bNmmD^5i0L|XJ(}6W&!)WcLJ1j&ki=C%v&c=)OiG! zs^7=VZ&;-Mq}$CU{gNOa1<+fvCj+}#TFmYyn%$xfcCR&AVJgFJ9_&9i^?9S`l?M)y zGCyyDH6l$X;gODxbh9;Xc)DK=kbGcjuo7J&j}&!(j`izxo&Uf7DF>aNN4lswstt51 z0oJJVKG%8iPXQWZms_O$-HaqXdsDiMqdY7TWJYMk5EhKUVZr2cW)W%TIWz2TKmsp) zyklbiPlNK*=d(HTW#MTulF{r?VupYt&Oh{fwW{|@FE0+O$LYfd^u0E3(br87Fc z&@_an8ScHU8v3cz=$2HbB|1<-nQyx-!!JHy89i*Pi?<-9ywi9)Fps}kx5|Qa7h(H! zm^Q=EZq%t0PIu6Pj1bVd3C=LF)rV?{?hgwxnq742lrGwmbf>1Ba(kppwj^U+u?_k8 z4i6gYs*G=aKu&l8incDnx-v_$2U)0Vu_R^WDxDvn^Z}od#3%h#**JDNsJ%tE`NSBy3DWyNPCE-e8cbh5npor!|nK33#$f4ee1dX7o#qrWS>cX+V47 zH$WKeU6oFkFtWk;{K$BA;D+uUpY$AI5GU9+rJWnR`q;UMm8WIeZ?|k_idp(K%z267 z+*sTKOGR&gf#oXFrCX7%hNMil&Wh}=O1O@jNf*Lfd7qPN@d$;o9s)7CO@j>iQVezR zSg93$T~D#HI2iZM$VgJL0MyyD=Ah?NcA^&AY&_4z1vLkm)w`Y`GxLJ>4E{v{YPvUf zxn9PpnE!UoMY{%B9)1=20ECWptGY%00c zWGM`rN;iwG(>!gMqW(CRA2d1OpP4&6l(D13T%Z@H@z62YgIoEvE=ooAR>AvKc|-cEfu2<cR(T9Tr4Cy^0%d!sgtEZW8FU zdCF{eDg%gnNvJ<0DNNhXVGVp;IRSS7y-Rehh#{x-H$e8 zx>Y=_2267Et1d!7F5!oPWF3OejK7}L@6??Xkg}njf2^Z8nEtVjl#EuqPknBS#e5M& zCjpgWY7eN#V~HTw%b6~&*V4uHfQFktycTTG!Yinh71><=`t>2*U|X^ecLg>@pG?-N zZAts~)>LR227o&D;vhr0i$1&TV!t_1epyf@<44a+w0&k-#^%*zjnmz-CEqipEfC>d zx;u7cfAW$}EF|rF9mZ&_YhZrN0h%uwqUN&(2(CxXXZmMAKflK9B(I>IL^(m1EF>qB zdAc$oIZaGkR%0iD@%Y5haR3`Dx&ij&C>C{7x5b|HjaVuaweQjoo=?}DY_%0QFS~Yo zMdrB7X;u1C{5r$pCLPqB1`WCC2EIi@EN|5PVNbeA%T75TJq0%HSKIcNG_OqHX`DAe zK)fA?Rz!FBdkvfLn8i~z>jpcJ?%_unFi)@&$r*uvIr7|6z=Id|aeBS-jZ z>=goB=WY&#s(F}B??48Sn|0?M$Y|$$`dw2^I0dhs;nzNG+5d~RH;-%T`1*h|Nmx{n zu!vy^1O!C|4G74hm;fRwATFgSD&RuZ7R1&nwrVc2y5l-1TBAiutyQ#$xKKgS(pD`l z6LIn*OR*25@$&Y z8Ua6T>YK(mTQVBcZHX=E?bfvt6GO{an*waIFdE?x^lWcJzbo+5qvrInEpeCWYQ&ZI zSG#k^u_<4{aT(j^Ac3bj8XH4m{L3klSyLK!5P(<+@|p4(+-AsL$7*>yN&l zzx}&X-S70rhb1PvY;d1)$kptIEWwT#_W9#t-MRkw*x(2Mm-6}-(O*x0lx~m`C%ZdY#iNQtBK9T+MC>rba3XLwl{d-n-ixQFr6km~v8w96OM0gO zjC*V6Cp~+5I8Wa5CI>XX4uNT8PZf4#uJ6g`rtmQ&8#Ab{@*DBIg3@aAx;&+4WF{Ow zdxT9*4Ngn;D~t?)jtgm{9Z~qXF?fs8eg6Fx1)};9rK*TUFO|=~c(Ut#G~W@ylD9#V z*K5ukgiOh_PA>Jda=lr8O-?WCN*b`^<^7D4>7);>@wJniMPyM;K-NzENf)6$- zi`*MwVzta-h{qXgEXTBiI1gK9^7rkej3~u)@uI{Q6Iua&K$2? zm782(&gKrV!0;H=eZgVv%NvDp5949*k4j6=(iskj$qS9@MX74f2~>;Il4jFRd=)bUdA;jYn|2MplDs#_ ztxER0i^uA9cl^vU7ZjQRnK=1`LX$TF$Obzt_T$_9Z7vDzz{7aJLHSx4*DLLVP}E8z zTy*9sohtN|m6P)-8H(D~q}pmF8*#397cFkh8!rr~TipKD^4ubE_A@%i zkpzg!4rbBajzq3@^L@iLHx~uRi~Wq)$7ufjV%@dsjg_= z7G!B59VsIY?nWTw&|{%g&MTyjUt+DP2`U@g9c$|rlW)Wc%W|seavAC4pjq9w*rIRo z1nm&YgZs{VwOlp3eDx}=mk}pjFo9{{hLfI|9+L4qdNIPxwiV4y;qcm}@N=o~Vte&U zb6#~>&1i`lmk3OKYvnzRBQx+abt8Ib8hc|MR}2KI1~sC(SNKyRcgj=M`(`2|bx|@f zWPs5V@0=&99J7@$!4DR{f8KuUG8dZaL=-SsAEFv3;;dLc#J;^ZEExyu6jQ~OAODj# z2mx72wCcFzjY&T?Rew4l|C0d&F}*x+BJPg5wcYk9ru9=BIl*cU{_4re8wIvLg9cHB zGjR>Da>5c~|Bjg7RO~x>0)51w{IS6v;ZDDKkCb;A?$i#roQZ+BU*$6~kM{Zly1A6PvI>=zg)MHjJ5uhWDY%JGFn_ zn@+vuSdpZ}C`_xTHi(VG6fxPq1ZJL>TskHw42w>goWx)#2e#Tu!)>0=O{+38wj3IA zrD>MxVe`RJ4)3!=qQfVds_-?5O&ce$!VQN5yW1T5_GS5C{%~NhZNU0)vtzuT)QE*e zzVFcLaA~2;L8?v#H1B2ZcY|I(92-n>&fuxO`pi z+4HAWMZwUD$}Mfpz-pL;47FBXMMGUkkg6ydvLn5bea2x5l9ldAUP&ma8BLat zYC7OzuQ==TO1t_knNc0^V{3nYUT#Wd1ri%7Hqa^;Vn-5agA3^u-86%^2rOo=Fs@C! zP#$e9QAgi6H7n`W$6voJUjv2j>!PnRA2uAg-*9V&5_5RMPV%s!JnaU9s-2ps7*{=I zi_r;nL&SKXe_=JEBVB>WI4`bEY&b9!*P7I13`5e#i;9N)hi3GP8dvg5+lBi!9Lljp zh=0PDxRdV#*zWL?D^2|SBsNuSvX`o(A1_XY&afJu9>uH5)E0Wjl?3+MXLMrq-FfdT zUmcj#^s(yU-HK5T^VlJ=X|4+23^+hw`6?IC$Q~q622ug_)r26`BTr7L2p=&1V^$2}XVUhr4yA4VsSHHD z`uNB%-ED>>zAV4O9}fI&>xicKadZMOhR-TT6MG|;XyRD$ zD`BfZ=#yNz(w<%RKy;I)rZsAf5uWAj%kobA;lNTF=}xwiVtT(PnV{9Xd-HntDH_$2 zsL1DZRZo)mzvPF~#$KfRARXBV7IAz)8MGxFFGvv?p0B)VeD|hYi(lw^vcKHsjxxoe zfE1>hW+$DMn_8`*eLcv){%>K+cFoVwW6Of$TMNv2_#8rc8CLr*_UD?#>QsXJ}}Dbhed8veN+ekH#P4~WHxuk7O#folEovnIzO-8G>xsJLwb`w z1LO2MZj)AL*Xrrt0pp(VpQ`^GFANWHuzt!kPD{h?A5H6elSu3jphY$O*Q4MQ%?Pj$ zjyCy3Lj(E{_dZ&T{B{3YaF$+{D3cTjv?nrNJ2sn^&oB^XPgLh`M@C$wd40%ab?&ni z$zQj6wz4&*6oCgd2n*3#q6${|k1Rmkf;%z(#_R{H_DGwZC(c+YPMFUqSc=&c>tSi_ zrFhIPKj}2MlYbOvw(BDGE2Q#67|S{TYeJJyjWL$Zb_~Saa@y*H9>%cYiJ1j~&ge^A z<6Xy^Wg-wITx%4r@A}C4v{j`3WIj%!^d~#5uxL$};AzQ*bb0HTB#~X3=^YK6&S}D4 zJkG=O$(QGEy9UWQH(4FM-k0=s&t}7ay4(DJl1y)6vbtdqrBWTiM^FepSV(<5$%rl` z2$l{=eJVbwzClL=L`Z*{N93byM^!VkDjO?DX}@oBj?u|&4I!y{?65esjs0M8>LYPf zSo~{YQdhs{z_>{nzCUFdN?^F>Fd#L<^?(S*U#XcF@wL9h);MW@V!8A96uRH@doV#_ zN$V9`HPqVeC!wi0%y%7Ibf+eSkcUyD`PK4cSg8h$opy;gWDeH_lw}%)8F|i&;_!$g zBO|1PYg(HTk!tq(OcUa1nyV(!dN1-$Ki(3Qt;NYmw0xDSE^i-o{FULdJ2iA{KjLnx z3vg+oTtDK_%?vb^Ur4<@eqbt4#HF5_+~xb%(6WAHJo%A!?hoV8a_Zfm$cB4tgYs?X z?ZKi?=EW94^VXkKuR{QnM;229HhYRPsnDS=JxpWFth`ozEt!?KRkM0sh-4=rZVk$- zl=dgl`ZE|A(?7j!Q5OBdOVSQNnviu!7NI?Q-`SUC9LIx8)%;ND@ zzC7?H4wzZtxWH1=I9h9IfX`o@>M)qa@bQt$73`~|-Qzz5TY}EMkK_ZbY1<#|VIIt3 z;`8zgdg`AFKYCR`dXQ68=uO6UY6o-B$=<}#MAw06rZ=%R)mo}Wztb(=#L2g6j2Uzs z?~zG7V+sRiuqm)g*Q9iKNq{6*!)>JtBR)&-dlP$eP_+DHvk7c+&labCPrLb$A>BF> zuxLGfh)AcL50U>**(3igo00)!$Xg)j?lfrt(ewIpVLIj!W|-{Gf}D9?Us?!PgClR8 zd=kC+jS`OVU*7-n`)GP@0CDcen=}%e;G?<`l8SJX)i2-p2D`zy2hjE#kZ*75PuWaU08rYiFHptdIJsJJ{QsKKCQTNgf>*NSsM1eJ_v%lQ_D~ zABNjJ`ePt*BYw0ski?K{bVv|!AwSUMATo-y(tSb5E2Wo$NF@3#ATTm@3L3kA>SX|^ zi!gFD9T?6`u8b0^ypyfjv6T)`IGYaIA^A1aJ)0_2NM0#|p4oH+ArHs4CQL)}=t^|2 z=q82AB^v53i=#Nef-F*t7;8Y~mq>1H;t2$5kgO_V905nqAo+EZ2S%=jzqM9qfD(=| zD7U(Znb7>v+4(wVcAy8BXmbF0@BjNdI|sv>B&AWoM2;Fr4JM&v3N2&8GA=!M3Nz=|Fd3)m|NYfgTe4u`cbl~jE zNI$!UWKil2qZ4}@dQMinI-Gh7$>vK)2BrOp9R|`wB?%a_(fGtqO(po{tJJkfUYLjE!qn|Z-Y}kpBwLXrUNB}O zJ6k9uHqB!bZ|W^1ZJhTDHuN`J0dE{#(&p6CNaxlI#+#TmsXfB`Arz%oHdQcJuKJ&jn za%QAfa?8(V?3FC-Elkh37EwrUlawN0i>RrBPPkFBSw$}%rzw=;C!4|b%jcX6NUcb)OjTF`~O2vp=+YZ!2f=s z4jRq>P?B-^Q0`wvc&@e#a9Pr=swYT_J-Hm3(kU?6$z-OOp z{kpUN<;W-_S*IP!dep_y8J=)(8FgkHGSE0yN+pbqEy=bwxByT4NQWv$w!-T62V`Z# zT9O045hGf2A8USdF7(Rr9?9KAe2v~YZ3Dt2e;4tn0W3_@W&vB>4e3i`M-iLh(kJ83 zf3e9uBcSNm!Iy)@cLk&6#&-Vl9h?9$%Z$ZGo+nwF(rL^1CDUp(bu8@qLcPWNj0qv1 z536R5BH$5UJ!f6Mci<6SZ`a{ovBHUCo+2H#t4=KTv0T9`378$!MLq=NHvB#fJm#NCMpC_FFgYXDGSKr5ZEpMDxkf*ko+Yg8F12zwZxV!R@ar%O#?A}v@_P0z&= zM{DlW0qLI(;0beY3ZJF4JbhZRaWrvINS-nqW6{`7R-uLNa!`Sp1AlCd>jPJYRhpqb zi;3)5>N=N&_L4)>S+8pp*J+oDEl~3M{sk5tV=GL%K+DFE0N@_cT{ey-W?Hp-!HJ&#C$&3ZtX}Q@ zbX`vawR^=_;tt>3{;?#HQC3l#aU`I-EgHkYN!C2;@tcK#7o9qegpS2(mM0}weqw&& zVHYt^jBukrmiaBB*~_4=nT}cT9#|?KzX=BTdXr?y&~rNCFdkL`M8RvOWAZEn2P|pZ zIN}wC)(|K@G`#j;px|3x-4a+%DKNX<1hnd4Tt57J|7AJ?G9CxXRu~mny}V|cIzPW2 zFsC!#A%pn~l~oR}KNu)BxX>M3=mfjaucd?j_Y2*5heTnr)vg6}?A0e|cpPzKU`R$+ zm=;I+=+mFYk%3aaHDiFlaptRou$r(jfRm`{y*ScK^v~7%wEMe6E_#K*IOtsx)OjAe z4p5WeR&-ft%hMTQXPI+!%e!O{f8m1$H$l252X-ntpLT z3f&_!YB>RF?Vqs8DVUK40Jt`4Y^Tt zdpBtCMRfOgGSma_yGT=W$7qRA5NSN1+A~Wc-sG`=kw(=iFN=3<@-RLZA8I!Nrh(2! zFIuXF=$fJlB*udW$)Y;>m=kBDR z*0{yA-y}d-{ps*YByuo@ga3xCvbvdK)eLY|`}~FJ%g04L0^lm32DIp^N=tfn67h*= zMC$*x!HY{*t)UF2R(_+G?N-{OUamjR8S-{H7nG;*lZm^P=|b!tq4e@~%`8}{rE#OH zCzBqX*0uq|#yv6(p+_c@@xoqh)HabgMcF+hp?{J+Si4H1N~26k4(kgXW7)L){<*YCeD;gBn$lBiWh2A zje1hchqxjN`=9Dw5!ziVKo4^~Qy}o=dj-sElW4yr;;!a9L{1<+^c4qCAT%A>isZ^B zh6*}-63InHaHcer54Sc`r!v$|^8s&IA5$Ip1^*RDzjm(GMhE|llPeCsVI8+mgtjfF=EnoUA+BxD3w+ zU!yUqRazdqi1`kAY`S*uC4clS#6n$6$14^Ze`z5J z&z(Bt&y>KDz_TLpn(Oh~x&yk1_0QC-4k28M+v$2d;`|x)*D#VH7TGSPQ+~SKl5eTJ z)~^rZs-;_|z~19ek4_C$Yu^=c{{s>6$H$!iw>P)6o3pMuiu2Aw&LII3wMRN5+7?}SFDi;g&w z%uwxkW$o@)hS48d`sqQ_N%sN&Ep+USl4k=Y4_D4NJ!M{F(yrv?PA4w$=8b_{B0%X< zEEA&L%EeqkjhW&{rMTv3&08AZmXG7xHNHWAO7u=It;WY5A72ArKemo#&c6yU7}{HC z9U60VYG4WVNFiQQgI8qzN~<*MSXLcqehQKG<+}vz1pJXv4zrJzjgN+y2L7W-bRW%f zHLXt}3Ts0RlkL{kbc&x$?WpH_q}#vU5rOQLAcmj&9?)idGr_cIaMZblT!&0;N2h=t zP|K**gVwx9tYKyQ`90z$$_xpouigW$V(1m|&*0NBLbGY-`5X4_X)Ae z#2iA0cnV{1Wnz;L@deuww9eXXFBwMhxQ*9F-gNODCc)d<78wzhE?%#Ztef_|Si4EX zfzkBL4Dy~a>qOA`f@TuMAonk{oays+Fr^Db#{3a9muzf$RsR74HRfloVe@w2MJI5O z>mxg=d-bIyGl_f18V26xcQ^z=9#1m=>UiHw6?g|=J!jmLh$cqIF;s^TdB7{Ws}p=E zH-XsOoMX0P){$>T=^%bU4G)|}2GD*QVocL#kwIPNv8T3UzdS(?&LUm|w87jADhFq; zA=icElL8j+UeojKBe|oZ-QOo3U9Jrw>zClvFFXxh`6@BIRno$F%5uVkds*@x0Bn@_pjet;yNqzfwDYZDS*#yL z7D?V++?NE`OOCQ>!F)e{Ve^e*;I&7}-j-#Z4Dhj&O^GAQWO|>0kuTrzoBAQ|hhn6T zQwnA-)g!VZ>rI9`Pv3kZL@CKkxt2FVY!UDcPaWj#Vgk@siRw>i6Vq+)n?|(B3yrs% zt0m!u;|q4ao{`1WC!LaQQ!-p23Ew?l+R4fuT2@lgtukmqW#iji?0V<$58zgm z6MWustSMix90jd?mW(cRZ!8IXfnJqn8$M%H3>4BxxQTPkO@kFVg2G#^xJJ-~Qs*(l zMV-64TyT5}Sjez0L+18S9nO>ne?Z;lU|ITtj+;X~5~{(Ce4MjQ$x=Uox48wES!>ab zaa=)O@eA)E^D2alc(&L0)%NDpEbr9S%uYiB4Z1Wl0SO4LrM6JGq7^clrQ6V!$6DnQe#^=m6 z;-PtBq2^sl)-+9BOx7z5TxrTKy^H%6GiuR&z%%f7eZ=m1Ykz0lb%yOU`2{)N)6}v4 zxWmq6lAB&_Y#TyB7y8kM#KAQb_MlqgRebKNJ1p+tNvKM2v5OBL2B!D$t}|R#!k6_S z5TI?i)hEg>e~s;bSaF6uc_VxBsz34M5_=Q8E%uA6lhq6Rt{kC=o`U=q;#Fw1%WMkb z@@}Fj+sDo^-DJEE_5YN!y+0#PxKt=O&OhvN6FltSu3ho4kup3i)IZln$}YQ$`_%X@ z#WZx?q&#VadaqAXO?ud9C!kRToz;@4kJtm1;DLJh+}1u&w$SV1Pjwm*t4b?0&~Td> zHS1H{XJkFme)ot>+dsaTb}@5FSeAuNLn;F}^S1$w=X|iaFGuX#&72-8wGi}rEOn#cof1=?=_(Ti8%$q5}t|Q^y zW~jWz(5`cdtOsjw6L4dbls|Ce$h@hhzkcq{0yRF$HZ^tKgXg!VF>{HF8m7$f$(gp7 zmy{rUZHoKT9eeUXbHAW8t3@*duK%PPUs{EWoCjfPqU7y+Z5L!k6^RV z?j7i}-8tABBM>uGm_0TY8BQ=|onE)Dh9gpH3gU;$wN7g8q;7_hce$o~%#=LlAxT{d z4@pxlHT#$Z4$7SfAY3$afZRCRySqf4dZU6#78Uu|JPMCdzKR?mp_72gOMPaH*&&ek zqcohtWe%k-r%9yZKR-N-T)!)aVgBJ)z=1&(1Z zth<#fZRxfiSV1j?Xivfnh>m0;dA10q#fE^ipNwh~Zya*Rv#h*pI|=Z?w5EY7*l@=c z;nxo;m@jOxvyG*A(4x`dlGeY5TdJy?Dxi-9&%O<%s3;J=jJO!=3A2*{2hQVSx6663 zT}vD;_VHqe_i&fMv`a?aky9}fx7m7k9?SW*X&!PGsHsvxd_%MvsT7X3$K^G)Hs;BH z=U3U94cS}tJ|qVZAi26}KFS|v%ovGx4;tA@BW}j726rqxiY3%*J{e-2i>Deq`wG8$ z{Tr*-D-MBFSwOs8a$}Mlxw(=x=iqUgod9Uyv&vtP+}nInyBNMg&&(%*3Cy+rb;4}i zr5qrk9LvCqQ<;nL8S~=~PCbTKyKwlqEwGmj#;A9{tqJKUI#)d|pWm74U?;p=^y3OP zd#C=x*jD54*`B550(yCyj&>z}ilewhL-|r`8)KvJEc5Peqr%4>Qw&|+4L_W8BLdg_ zcxw~$R2`8q$>S7yDuYmK=-4ycj@YbF!IJbEvwx|x6-{42x(x`!mM>k#ql3>EXQ8?HDK*RfgTZ+Z<7`It zUYOJAjCN;LK*@?7nMDj^i=u5iE&qi0!p;8sC&Xj05!*iObZ)Z}OBWjkfm^e-9rP_; zRPY3dbhjAZh*&d-aXgm>Gv-T-%1P8Ewe~|W|=jGnI7s$1TFlO%;<89sew7nc$PrBEF^)`89t)vD0(3l3mc)n zJ%x{encsV(O+_cbz}8&OaH@+O0svfEevY@WFzJCckXAJ@=O!S8Ht>)hV|a@zI&7#S zvlZGP?3ajURPzo_NxOryB1(z90Dhs33&{d?sV*>|Kk5kBpu=f&x*UH*$ef1hZtcgF zy7LZ4?0kW8fWNy6;UOAv)H~`tTPpJi^qMQ&G6k?M!zE>bZz3TtNn%WEY|b!heBOUu z{u6CkM7kx27A<=c2qNA}e7cstWd*zP12^!BP^)q@A87zZsHSDr)u~-z^|cgbvB;%q z!v|_O`ED>uKoN>mu}H*M_+WyORW4_&JhUsuq>+bd>|)|1!o}#E#l+T5`%V8|V+_?S zj0lozHLc7^C9|iR#l&YwE?ZY!wp?0WGlEAW8nXb%y7LP)D&-9BolWiZUmK?F@K%!?>stzTaG7-TW5H9Ry`Hz}5_|(9QD}>qxT!Csg0)iC@gu zxeEYmQ#VI2R|>echNPWmmps`1w|Buy`GbVHEJ2jG!-io zOv$v`7O5pn&V!zB5@9=&Y)jEpD5hpV# zGy13k_m}uI#!hoEdj?E-->KD@i{kMs^fBRmD1sSnhwKv&xjH^2)^e6VY z$?lg8!;sFJwa0Lf9U%5tiZ6Zi?CzVH(1_fadz44MmW%%O_(nXkB9o7Iou(8_dRSvV zZAVw1)(lMkEoP>gz9H2lx?T*9qdjeExrzT86PtVtrv+9-r6{nzxJksK5ejv|L8tQG zxtY`zu*mhIcCU!Vi-6xn?y}2AuiSEJ>@-Bf2>_WWW?a9)uSQ`-Ip@0SY||X4CEFx9 zlTS!Eqj;@LBrATsuzg6rv-}_nWAfv-VjaI^Ms156wVc&3x_dmsVa$9()mq?k5*+QN zW;Va*_*swNpqD|->lnFkU3dHDvu%?4lU~!X^ONVBZo83=&Vt(_g{Eeaz?58oC@NDa z6pv=MEX@G_I_AlzF|n^I?pI0jc@TgO0`~Imf5MTsBUZ0G*0xs2__G06J-|9E^ds z3VPBQ!H+_5-I6G*$sLKiN3ENkf2LLI?Rn@~T1XOh)cna|3O$ug<{Ll3pp|M8zMAXOtw$mO@ZlYa!`_sG}GW1^;+49`~jGRYL<>Nf{$FD!vp6ic# zdA4?ZE(4J!8@KgGY~9J93qbk0y+EStnPvkc?+bwU&XP>ikp*@g6&%ik?djoMBJa`p zTa3a1=FexqEd3|nA})q)B&104hH8`kol9h653wO|;P|4>fow&o3+QTIYQ1Z-d%#*N zeGFcK#$s*AhzSE`(*>q4T+GlH>x~%c9fFIZ#0cA4H9~BLFus;+muFp#p{aQY@~S)i zhB;pmG$p;j6c*>Z%DLr7Go#Z_WnOK1OdazP zDcEIyd!*n@EA;N#>yvN4JA#G&Z9!LJUg?+{D;~jeTgb14_utPu>t>-{{q}Q+8T`gq?bRSzGDe;go^$HpfDmz#iaECe!4IV0_R-xTw4ifo!ES!rZbA>|lP*by zY^E;V&R+M#N;FB%#XQh-o>2qKEZE_yJypK574?QYmcN_SrGl}8Fy7M>eanY>Vl`UB zc7AvlD1mWoF)=EZ?bQ%BYTYl#gFI{Xao>pMRwEpT!Iu*qShqc}l_@9AMwVj#McuIT z=Yj9(@};D&jol#DgGV`kr&W64MN(fe=)r@nrIs$Ef1GxP*|JVyPOC`89%bOe=DX;H ziszUguQ()UvWS-EhD_5g#P?#B!vLlN+1c70+scQYzh2bD*u4)WI68381ZI%R?-ibk&u7sc@cVhE8FFq4q8rJf_aEYHe(-I zKdc#%BHBoh`h@%KK@ZHz%209jJ$!pG`jmXtcCDF}7A_}4?3eBZp-xv+>qcfp3uK^> zA9*HYZ~AaK>293Mv_e1Hbp`Prq_xksfOngzPAt^3Dl-V^aXF*tV4N(h@Y@Uu2q7{$ zZ&o`Ukmwa8R%@AK^bd&FOg-W|Sv{1SP0p?|kG(6}*OTueo?u@l2B1s2^a6f>L$%tR~iCFd5l+jr!5J}MsN z6D@>IK%K9Ww*H*3aB9n(h%U3=%`p9kA7rAk8exGLA-%jtT?#{8sDnJ;Gg&_J_kBj? z$?uc|!gy7vNOFJ9SOt$;>+EAQk5_NFd7=xSyG2pjWk4sWdtMR_d%0{D4TX{Jc#`^b zICvK;VQkXx%%WDww~tyMasm6i84m+1L@RDPQCdA_(Ryy@~z@8v9*IO-iDJosORaxUidQ+00&XiP)ij9-*t}iOkHkjm_obUi$GOz4L6#F1qoeruv$4 z0-9O{U9*}5hTLMRD99gJoEpHcLsk_52Y%zwJJxK&LacBb${ErUy%E86e;Mowhf$#- z^&T}X0C7_x9Z~=aiInIh-pTO}mc(gndDBz@Yd4JI#<<5*KG@~w%=5Gh= z0(pbM6%Jiv!$9M$Xt7*U@Q}6^kVy;{5~ulTknSE zO--sJ+YOX34GJl+x?oF(*08FF*u4~Sx6EZ!Iws96)Do@~Tsbr^2Vv_muT!zxivOE2 z{G@fLGWzcWHSf;Kdk=P>&O)}SA@f%1Qk=cIWodKr@ z8#LVM(Y3@mh2K@4jU2p5zk|shVM2X!jz?t&;JD^^lvrc(72_d*EAT6RZ(U0Z0)wRF zA>%0)Ut<8a(E&tZ&TNaOzdBTX=k}Y6HkOa7))6NYX5!p_X` zuOk7mrD)qLBS!qS#<<65W8N5=|9REurNzV^(^Nd0rYw?~$rB5E@%b0|LoUfNm!S)m z1iliA*F-jLm(BqR@Bk0Qp0g7d!aL%a_7V@cb;^e%UK6#Epl@|q4(C4D4DhwuqF8+G3p5+?bRt-WVo5JxCGb@rZgTq3SQi#;~U!JEtxoKMDD zZT4MT*8UkLX7*#-7!D!2UB;Fd@-6xbn)0F|Ot#HOha!0;!H;*=Z$jgK78jL1t~%5* z1TgPmMxHj;8qko~6bHvG?X{7Fk|zgeZG?$jjZeh;-T0&K`+_Nlcgb`-US6%0A6@z1 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 z zFSmFToE_=C0nf1b63xGJ_>j2}-T#*&To3pLK@7}X9)b6#9pvFH zy5YGmsK;{?T-Ju+f7E=h!&|LU_Jur9Z2K{5sJ|rmD}tS1B@R-$qj0-)C*gzOd8|0m zP2zrQ)$@E7e6Ypm!^>#D1247sKDaE>t}#vtdzE%yr%GH77Xy=^5`G))N8qC@zCrU7 z4)6M+vcHMb$hM!M`6|t0Cc$n5*%s%}8<}gvyR28+rUahYHUx!B;0NI&jXi5(JzP3^ z815&AU-*)`eh*+&6$$&8*Mv|FScWj#2w~6Lqj_pUGQav|Wnbs;#hSnC@H1XfbDqtp z?DJzByo&S3TYymM=@HY@ZE=BbJZw&fGB&8hH&X_`quAdMm%wY_GLU%X;NNTBnN!E- z#2Nak=iQFoo$xyH`=#E5FqZZ~gfWH_C}X4Ir95eD{t$cuc5C3{jXeo|(!4u+%;w`> zBO!M4;NmA8jmgQgQwuGYApF|bm0=}&(hjr&E*;qhuhoIXzQZQf(QLMo-%>h(R7<+i?JMnhRYkvdZ?-+qVcOgusJsVzc@uP6D`yMWOe9Ew|d{^=6 z8`9?HS^D>7&2xn`1_ri;LHwkvZ zqqN_G*I2yoKNQa_r(d?P7=aFZ^UJO8aH!DxaJIa+5iW^Lg3i0tr8MQ%|NJs&Q*+&|*mPyVs?Re?N$79hfje^pg~nCkx8&Y+dmAqSr7#le_QiK4nKRJx`OS7$8NJ6CLk2j?#&95fM&$cz^|h{4KBLj$KYc3 zBD}!j!OztPmy_@`!&%hjn)hJAY0mv0;a&tO@c@LrmcvHP?{oNRxJ=D!aDQru(`Uab z@lSBk;~j<1fEUp2%aZq}0KR@d^_NvX6T#m$2(7hy=UP1TpsLUwxL+Yg zJRUA_FQ~IVe#8F+kH~YeKZ1AgQ@Qy4zaN53!2tw&3Z}tj3NDzGJO!)aQn50)J@<#;vc2ZQ{q08y(+;b}wguh` z-BfP)Vd^h|jyr)K#6ebRM!j-04zIzbq_@KDDLVz15j_OAr>xfzwI<$#+iRi@F7~Y_ zQ-9lGF@h|vyvd0YiNP+->l}X0QB}FcaJzB^a2db{@NC}A04Bq)ki=8e_Vj-tC}ChnosX;sNkV?6$)zEc@l!K4Yrb zGykTi2ed;ig6&ZBz54vV1wPsevjucX%B-zZY)iUOH3_4`ROuo^9g87rBus;KV_`iQn(ysufvNh`-Sk1v{R;2{|=V0 z93h`}m+6UvMMkg>E|s|fE*&;gb`&lZ8U^<&g#BsFCpi4<6YBh!4wpRf`@bY8LbwL7 z8o``g!hZ*s5qt}`N3abpkK^!+#K9u=DL<%1SP#E4oOxb>3c7?WT&Qm#w@6eoM#EaPu zA8X-9$KgxOTenIMbPO(Ye-_-H`xDx}y<_j4QXRc8!MXo4_o-UoUp^)Ew4>%}4)3OU zw!_mj&v$r8^8$zWJw^Scbp0KnSUZ$CyiD`q4lmcd(&06lk9GJ&&FigF#4FLHg{J1o zZ37qdSi)h!uW|q82n(vJu5MCwFgshn2OAovWMwz6Y8&X;Iv5H!zt=X6DLi~`bF!I>QSh- ze$Tt3v1)W(R7VMh@->f0k1;-1#*w4PkrQlwDJ9UoSlQ$l-yGe}*RjI79Z~OL?HyJ< z4TeJ%Y`P(!Mw52a7{EEjOK)Mvm?<+ZB9}1td_utwawE5M`mXHAAW0NErG@}J1{+iD^wS= zgB5Cq&igsgD?UScKL;{?x%MVNI9Eps_vVNHX(EEgBmcj8j7(k+St0Eb3`v&w3Jc{8 zt}rv`Gl{6wNPJknUykW-FekY1`qt^cRc1MfAUVc0hahG;7dE%<*4_wVxlHiqKY>6# ABLDyZ delta 69686 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

C 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 W116J@of(Yu)ZcvN<>{`WsX%vzTK diff --git a/heapster-saw/examples/rust_data.rs b/heapster-saw/examples/rust_data.rs index 5894659ab0..99ce465fa4 100644 --- a/heapster-saw/examples/rust_data.rs +++ b/heapster-saw/examples/rust_data.rs @@ -287,3 +287,31 @@ pub fn hash_map_insert_gt_to_le (m: &mut HashMap, x:u64, y:u64) -> () { m.insert (y, x); } } + +/* A tree whose internal nodes contain vectors of children */ +pub enum Tree { + Leaf (X), + Node (Vec>) +} + +pub fn tree_is_leaf (t: &Tree) -> bool { + match *t { + Tree::Leaf (_) => true, + Tree::Node (_) => false + } +} + +/* Sum all leaves in a tree */ +/* +pub fn tree_sum (t: &Tree) -> u64 { + let mut acc = 0; + match *t { + Tree::Leaf (x) => x, + Tree::Node (children) => + for u in children { + acc += tree_sum (u); + } + acc; + } +} +*/ diff --git a/heapster-saw/examples/rust_data.saw b/heapster-saw/examples/rust_data.saw index 87615dd329..d6dacf3bbe 100644 --- a/heapster-saw/examples/rust_data.saw +++ b/heapster-saw/examples/rust_data.saw @@ -51,11 +51,15 @@ heapster_define_rust_type env "pub struct MixedStruct { pub s: String, pub i1: u heapster_define_rust_type env "pub enum TrueEnum { Foo, Bar, Baz }"; // Opaque type for Vec -//heapster_define_opaque_llvmshape env "Vec" 64 "T:llvmshape 64" "24" "\\ (T:sort 0) -> List T"; +heapster_define_opaque_llvmshape env "Vec" 64 "T:llvmshape 64" "24" "\\ (T:sort 0) -> List T"; // Opaque type for HashMap heapster_define_opaque_llvmshape env "HashMap" 64 "T:llvmshape 64, U:llvmshape 64" "56" "\\ (T:sort 0) (U:sort 0) -> List (T * U)"; +// Tree type +heapster_define_rust_type env "pub enum Tree { Leaf (X), Node (Vec>) }"; + + /*** *** Assumed Functions From 68bbe470cb3be39d6183daf84867e382e155f1dd Mon Sep 17 00:00:00 2001 From: Eddy Westbrook Date: Thu, 1 Jul 2021 06:32:47 -0700 Subject: [PATCH 07/11] backwards compatibility tweak --- src/SAWScript/HeapsterBuiltins.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SAWScript/HeapsterBuiltins.hs b/src/SAWScript/HeapsterBuiltins.hs index d6311b8ad3..1e7d95100d 100644 --- a/src/SAWScript/HeapsterBuiltins.hs +++ b/src/SAWScript/HeapsterBuiltins.hs @@ -123,7 +123,7 @@ import Prettyprinter -- | Extract out the contents of the 'Just' of a 'Maybe' wrapped in a -- `MonadFail`, calling 'fail' on the given string if the `Maybe` is a -- `Nothing`. -failOnNothing :: MonadFail m => String -> Maybe a -> m a +failOnNothing :: Fail.MonadFail m => String -> Maybe a -> m a failOnNothing err_str Nothing = Fail.fail err_str failOnNothing _ (Just a) = return a From 8cd146901a1b561867b29329462b944eb92db08c Mon Sep 17 00:00:00 2001 From: Eddy Westbrook Date: Thu, 1 Jul 2021 12:25:38 -0700 Subject: [PATCH 08/11] bug fix for heapster_define_rust_type: print out an error message when a recursive type cannot be handled --- .../Verifier/SAW/Heapster/IRTTranslation.hs | 102 ++++++++++++++++-- 1 file changed, 96 insertions(+), 6 deletions(-) diff --git a/heapster-saw/src/Verifier/SAW/Heapster/IRTTranslation.hs b/heapster-saw/src/Verifier/SAW/Heapster/IRTTranslation.hs index 46675d1655..bf67bae7dd 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/IRTTranslation.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/IRTTranslation.hs @@ -77,13 +77,100 @@ askExprCtxTerms = exprCtxToTerms <$> infoCtx <$> ask ---------------------------------------------------------------------- --- The monad for translating IRT type variables +-- * Names of the recursive permission or shape being defined ---------------------------------------------------------------------- +-- | The name of the recursive permission or shape being defined data IRTRecName args where IRTRecPermName :: NamedPermName ns args tp -> IRTRecName args IRTRecShapeName :: NatRepr w -> NamedShape 'True args w -> IRTRecName args +-- | Generic function to test if an object contains an 'IRTRecName' +class ContainsIRTRecName a where + containsIRTRecName :: IRTRecName args -> a -> Bool + +instance ContainsIRTRecName a => ContainsIRTRecName [a] where + containsIRTRecName n = any (containsIRTRecName n) + +instance ContainsIRTRecName a => ContainsIRTRecName (Mb ctx a) where + containsIRTRecName n = mbLift . fmap (containsIRTRecName n) + +instance ContainsIRTRecName (PermExpr a) where + containsIRTRecName (IRTRecShapeName w nm_sh) (PExpr_NamedShape _ _ nm_sh' _) + | Just Refl <- testEquality w (natRepr nm_sh') + , Just _ <- namedShapeEq nm_sh nm_sh' = True + containsIRTRecName n (PExpr_NamedShape _ _ _ args) = + containsIRTRecName n args + containsIRTRecName n (PExpr_PtrShape _ _ sh) = containsIRTRecName n sh + containsIRTRecName n (PExpr_FieldShape fsh) = containsIRTRecName n fsh + containsIRTRecName n (PExpr_ArrayShape _ _ fshs) = containsIRTRecName n fshs + containsIRTRecName n (PExpr_SeqShape sh1 sh2) = + containsIRTRecName n sh1 || containsIRTRecName n sh2 + containsIRTRecName n (PExpr_OrShape sh1 sh2) = + containsIRTRecName n sh1 || containsIRTRecName n sh2 + containsIRTRecName n (PExpr_ExShape mb_sh) = + mbLift $ fmap (containsIRTRecName n) mb_sh + containsIRTRecName n (PExpr_ValPerm p) = containsIRTRecName n p + containsIRTRecName _ _ = False + +instance ContainsIRTRecName (RAssign PermExpr tps) where + containsIRTRecName _ MNil = False + containsIRTRecName n (es :>: e) = + containsIRTRecName n es || containsIRTRecName n e + +instance ContainsIRTRecName (LLVMFieldShape a) where + containsIRTRecName n (LLVMFieldShape p) = containsIRTRecName n p + +instance ContainsIRTRecName (ValuePerm a) where + containsIRTRecName n (ValPerm_Eq e) = containsIRTRecName n e + containsIRTRecName n (ValPerm_Or p1 p2) = + containsIRTRecName n p1 || containsIRTRecName n p2 + containsIRTRecName n (ValPerm_Exists mb_p) = + mbLift $ fmap (containsIRTRecName n) mb_p + containsIRTRecName (IRTRecPermName npn) (ValPerm_Named npn' _ _) + | Just _ <- testNamedPermNameEq npn npn' = True + containsIRTRecName n (ValPerm_Named _ args _) = + containsIRTRecName n args + containsIRTRecName _ (ValPerm_Var _ _) = False + containsIRTRecName n (ValPerm_Conj ps) = containsIRTRecName n ps + +instance ContainsIRTRecName (RAssign ValuePerm tps) where + containsIRTRecName _ MNil = False + containsIRTRecName n (ps :>: p) = + containsIRTRecName n ps || containsIRTRecName n p + +instance ContainsIRTRecName (AtomicPerm a) where + containsIRTRecName n (Perm_LLVMField fp) = containsIRTRecName n fp + containsIRTRecName n (Perm_LLVMArray arrp) = + containsIRTRecName n (llvmArrayFields arrp) + containsIRTRecName n (Perm_LLVMBlock bp) = + containsIRTRecName n (llvmBlockShape bp) + containsIRTRecName _ (Perm_LLVMFree _) = False + containsIRTRecName _ (Perm_LLVMFunPtr _ _) = False + containsIRTRecName n (Perm_LLVMBlockShape sh) = containsIRTRecName n sh + containsIRTRecName _ Perm_IsLLVMPtr = False + containsIRTRecName (IRTRecPermName npn) (Perm_NamedConj npn' _ _) + | Just _ <- testNamedPermNameEq npn npn' = True + containsIRTRecName n (Perm_NamedConj _ args _) = containsIRTRecName n args + containsIRTRecName n (Perm_LLVMFrame fperm) = + containsIRTRecName n (map fst fperm) + containsIRTRecName _ (Perm_LOwned _ _) = False + containsIRTRecName _ (Perm_LCurrent _) = False + containsIRTRecName n (Perm_Struct ps) = containsIRTRecName n ps + containsIRTRecName _ (Perm_Fun _) = False + containsIRTRecName _ (Perm_BVProp _) = False + +instance ContainsIRTRecName (LLVMArrayField w) where + containsIRTRecName n (LLVMArrayField fp) = containsIRTRecName n fp + +instance ContainsIRTRecName (LLVMFieldPerm w sz) where + containsIRTRecName n fp = containsIRTRecName n $ llvmFieldContents fp + + +---------------------------------------------------------------------- +-- * The monad for translating IRT type variables +---------------------------------------------------------------------- + data IRTTyVarsTransCtx args ext = IRTTyVarsTransCtx { @@ -150,7 +237,7 @@ irtTSubstExt x = ---------------------------------------------------------------------- --- Trees for keeping track of IRT variable indices +-- * Trees for keeping track of IRT variable indices ---------------------------------------------------------------------- data IRTVarTree a = IRTVarsNil @@ -174,7 +261,7 @@ setIRTVarIdxs tree = evalState (mapM (\_ -> nextIdx) tree) 0 ---------------------------------------------------------------------- --- Translating IRT type variables +-- * Translating IRT type variables ---------------------------------------------------------------------- -- | Given the name of a recursive permission being defined and its argument @@ -364,6 +451,9 @@ instance IRTTyVars (PermExpr (LLVMShapeType w)) where _ -> case mbMatch $ namedShapeBody <$> nmsh of [nuMP| DefinedShapeBody _ |] -> irtTyVars (mbMap2 unfoldNamedShape nmsh args) + _ | containsIRTRecName n_rec mb_sh -> + throwError ("recursive shape passed to an opaque or" + ++ " recursive shape in its definition!") _ -> do sh' <- irtTSubstExt mb_sh let sh_trans = transTupleTerm <$> translate sh' return ([sh_trans], IRTVar ()) @@ -396,7 +486,7 @@ instance IRTTyVars (RAssign ValuePerm ps) where ---------------------------------------------------------------------- --- The IRTDesc translation monad +-- * The IRTDesc translation monad ---------------------------------------------------------------------- -- | Contextual info for translating IRT type descriptions @@ -462,7 +552,7 @@ irtCtor c all_args = ---------------------------------------------------------------------- --- Translating IRT type descriptions +-- * Translating IRT type descriptions ---------------------------------------------------------------------- -- | Given an identifier whose definition in the shared context is the first @@ -636,7 +726,7 @@ instance IRTDescs (RAssign ValuePerm ps) where ---------------------------------------------------------------------- --- Translating IRT definitions +-- * Translating IRT definitions ---------------------------------------------------------------------- -- | Given identifiers whose definitions in the shared context are the results From 5e51d9564b9393b750a0cfd0c4436b14293b0373 Mon Sep 17 00:00:00 2001 From: Eddy Westbrook Date: Thu, 1 Jul 2021 12:46:43 -0700 Subject: [PATCH 09/11] changed RecShapeBody to make the fold and unfold ids optional, in order to implement a bug fix for heapster_define_rust_type to print out an error message when a recursive type cannot be handled --- .../src/Verifier/SAW/Heapster/CruUtil.hs | 10 +++++++ .../src/Verifier/SAW/Heapster/Permissions.hs | 29 +++++++++---------- .../Verifier/SAW/Heapster/SAWTranslation.hs | 14 +++++++-- src/SAWScript/HeapsterBuiltins.hs | 14 ++++----- 4 files changed, 42 insertions(+), 25 deletions(-) diff --git a/heapster-saw/src/Verifier/SAW/Heapster/CruUtil.hs b/heapster-saw/src/Verifier/SAW/Heapster/CruUtil.hs index 693e98d874..6f9c36aab7 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/CruUtil.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/CruUtil.hs @@ -82,6 +82,16 @@ traverseRAssign :: Applicative m => (forall x. f x -> m (g x)) -> traverseRAssign _ MNil = pure MNil traverseRAssign f (xs :>: x) = (:>:) <$> traverseRAssign f xs <*> f x +-- FIXME HERE: this should move to Hobbits +instance Closable a => Closable (Maybe a) where + toClosed Nothing = $(mkClosed [| Nothing |]) + toClosed (Just a) = $(mkClosed [| Just |]) `clApply` toClosed a + +-- FIXME HERE: this should move to Hobbits +instance (Closable a, Closable b) => Closable (a,b) where + toClosed (a,b) = + $(mkClosed [| (,) |]) `clApply` toClosed a `clApply` toClosed b + ---------------------------------------------------------------------- -- * Helper Functions for 'NatRepr' and 'KnownNat' diff --git a/heapster-saw/src/Verifier/SAW/Heapster/Permissions.hs b/heapster-saw/src/Verifier/SAW/Heapster/Permissions.hs index fd9e7d9c20..19d7652461 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/Permissions.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/Permissions.hs @@ -1988,16 +1988,17 @@ data NamedShapeBody b args w where -- | A recursive shape body has a one-step unfolding to a shape, which can -- refer to the shape itself via the last bound variable; it also has -- identifiers for the type it is translated to, along with fold and unfold - -- functions for mapping to and from this type + -- functions for mapping to and from this type. The fold and unfold functions + -- can be undefined if we are in the process of defining this recusive shape. RecShapeBody :: Mb (args :> LLVMShapeType w) (PermExpr (LLVMShapeType w)) -> - Ident -> Ident -> Ident -> + Ident -> Maybe (Ident, Ident) -> NamedShapeBody 'True args w deriving instance Eq (NamedShapeBody b args w) -- | Test if a 'NamedShape' is recursive namedShapeIsRecursive :: NamedShape b args w -> Bool -namedShapeIsRecursive (NamedShape _ _ (RecShapeBody _ _ _ _)) = True +namedShapeIsRecursive (NamedShape _ _ (RecShapeBody _ _ _)) = True namedShapeIsRecursive _ = False -- | Get a 'BoolRepr' for the Boolean flag for whether a named shape can be @@ -2005,7 +2006,7 @@ namedShapeIsRecursive _ = False namedShapeCanUnfoldRepr :: NamedShape b args w -> BoolRepr b namedShapeCanUnfoldRepr (NamedShape _ _ (DefinedShapeBody _)) = TrueRepr namedShapeCanUnfoldRepr (NamedShape _ _ (OpaqueShapeBody _ _)) = FalseRepr -namedShapeCanUnfoldRepr (NamedShape _ _ (RecShapeBody _ _ _ _)) = TrueRepr +namedShapeCanUnfoldRepr (NamedShape _ _ (RecShapeBody _ _ _)) = TrueRepr -- | Whether a 'NamedShape' can be unfolded namedShapeCanUnfold :: NamedShape b args w -> Bool @@ -3245,7 +3246,7 @@ llvmShapeLength (PExpr_NamedShape _ _ (NamedShape _ _ (OpaqueShapeBody mb_len _)) args) = Just $ subst (substOfExprs args) mb_len llvmShapeLength (PExpr_NamedShape _ _ nmsh@(NamedShape _ _ - (RecShapeBody _ _ _ _)) args) = + (RecShapeBody _ _ _)) args) = -- FIXME: if the recursive shape contains itself *not* under a pointer, then -- this could diverge llvmShapeLength (unfoldNamedShape nmsh args) @@ -3395,7 +3396,7 @@ unfoldNamedShape :: KnownNat w => NamedShape 'True args w -> PermExprs args -> PermExpr (LLVMShapeType w) unfoldNamedShape (NamedShape _ _ (DefinedShapeBody mb_sh)) args = subst (substOfExprs args) mb_sh -unfoldNamedShape sh@(NamedShape _ _ (RecShapeBody mb_sh _ _ _)) args = +unfoldNamedShape sh@(NamedShape _ _ (RecShapeBody mb_sh _ _)) args = subst (substOfExprs (args :>: PExpr_NamedShape Nothing Nothing sh args)) mb_sh -- | Unfold a named shape and apply 'modalizeShape' to the result @@ -4354,7 +4355,7 @@ shapeIsCopyable rw (PExpr_NamedShape maybe_rw' _ nmsh args) = -- HACK: the real computation we want to perform is to assume nmsh is copyable -- and prove it is under that assumption; to accomplish this, we substitute -- the empty shape for the recursive shape - RecShapeBody mb_sh _ _ _ -> + RecShapeBody mb_sh _ _ -> shapeIsCopyable rw $ subst (substOfExprs (args :>: PExpr_EmptyShape)) mb_sh shapeIsCopyable _ (PExpr_EqShape _) = True shapeIsCopyable rw (PExpr_PtrShape maybe_rw' _ sh) = @@ -4640,7 +4641,7 @@ instance FreeVars (NamedShape b args w) where instance FreeVars (NamedShapeBody b args w) where freeVars (DefinedShapeBody mb_sh) = freeVars mb_sh freeVars (OpaqueShapeBody mb_len _) = freeVars mb_len - freeVars (RecShapeBody mb_sh _ _ _) = freeVars mb_sh + freeVars (RecShapeBody mb_sh _ _) = freeVars mb_sh -- | Test if an expression @e@ is a /determining/ expression, meaning that @@ -4971,11 +4972,10 @@ genSubstNSB px s mb_body = case mbMatch mb_body of DefinedShapeBody <$> genSubstMb px s mb_sh [nuMP| OpaqueShapeBody mb_len trans_id |] -> OpaqueShapeBody <$> genSubstMb px s mb_len <*> return (mbLift trans_id) - [nuMP| RecShapeBody mb_sh trans_id fold_id unfold_id |] -> + [nuMP| RecShapeBody mb_sh trans_id fold_ids |] -> RecShapeBody <$> genSubstMb (px :>: Proxy) s mb_sh <*> return (mbLift trans_id) - <*> return (mbLift fold_id) - <*> return (mbLift unfold_id) + <*> return (mbLift fold_ids) instance SubstVar s m => Substable s (NamedPermName ns args a) m where genSubst _ mb_rpn = return $ mbLift mb_rpn @@ -5873,12 +5873,11 @@ instance AbstractVars (NamedShapeBody b args w) where absVarsReturnH ns1 ns2 ($(mkClosed [| \i l -> OpaqueShapeBody l i |]) `clApply` toClosed trans_id) `clMbMbApplyM` abstractPEVars ns1 ns2 mb_len - abstractPEVars ns1 ns2 (RecShapeBody mb_sh trans_id fold_id unfold_id) = + abstractPEVars ns1 ns2 (RecShapeBody mb_sh trans_id fold_ids) = absVarsReturnH ns1 ns2 ($(mkClosed - [| \i1 i2 i3 l -> RecShapeBody l i1 i2 i3 |]) + [| \i1 i2 l -> RecShapeBody l i1 i2 |]) `clApply` toClosed trans_id - `clApply` toClosed fold_id - `clApply` toClosed unfold_id) + `clApply` toClosed fold_ids) `clMbMbApplyM` abstractPEVars ns1 ns2 mb_sh instance AbstractVars (NamedPermName ns args a) where diff --git a/heapster-saw/src/Verifier/SAW/Heapster/SAWTranslation.hs b/heapster-saw/src/Verifier/SAW/Heapster/SAWTranslation.hs index 2ba7b2288d..4750fffa53 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/SAWTranslation.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/SAWTranslation.hs @@ -786,7 +786,7 @@ instance TransInfo info => [nuMP| OpaqueShapeBody _ trans_id |] -> ETrans_Term <$> applyOpenTermMulti (globalOpenTerm $ mbLift trans_id) <$> transTerms <$> translate args - [nuMP| RecShapeBody _ trans_id _ _ |] -> + [nuMP| RecShapeBody _ trans_id _ |] -> ETrans_Term <$> applyOpenTermMulti (globalOpenTerm $ mbLift trans_id) <$> transTerms <$> translate args [nuMP| PExpr_EqShape _ |] -> return $ ETrans_Term unitTypeOpenTerm @@ -2744,10 +2744,14 @@ translateSimplImpl (ps0 :: Proxy ps0) mb_simpl m = case mbMatch mb_simpl of -- translations of the arguments plus the translations of the proofs of the -- permissions [nuMP| SImpl_IntroLLVMBlockNamed _ bp nmsh |] - | [nuMP| RecShapeBody _ _ fold_id _ |] <- mbMatch $ fmap namedShapeBody nmsh + | [nuMP| RecShapeBody _ _ fold_ids |] <- mbMatch $ fmap namedShapeBody nmsh , [nuMP| PExpr_NamedShape _ _ _ args |] <- mbMatch $ fmap llvmBlockShape bp -> do ttrans <- translate $ fmap (distPermsHeadPerm . simplImplOut) mb_simpl args_trans <- translate args + fold_id <- + case fold_ids of + [nuP| Just (fold_id,_) |] -> return fold_id + _ -> error "Folding recursive shape before it is defined!" withPermStackM id (\(pctx :>: ptrans_x) -> pctx :>: typeTransF ttrans [applyOpenTermMulti @@ -2770,10 +2774,14 @@ translateSimplImpl (ps0 :: Proxy ps0) mb_simpl m = case mbMatch mb_simpl of -- translations of the arguments plus the translations of the proofs of the -- permissions [nuMP| SImpl_ElimLLVMBlockNamed _ bp nmsh |] - | [nuMP| RecShapeBody _ _ _ unfold_id |] <- mbMatch $ fmap namedShapeBody nmsh + | [nuMP| RecShapeBody _ _ fold_ids |] <- mbMatch $ fmap namedShapeBody nmsh , [nuMP| PExpr_NamedShape _ _ _ args |] <- mbMatch $ fmap llvmBlockShape bp -> do ttrans <- translate $ fmap (distPermsHeadPerm . simplImplOut) mb_simpl args_trans <- translate args + unfold_id <- + case fold_ids of + [nuP| Just (_,unfold_id) |] -> return unfold_id + _ -> error "Unfolding recursive shape before it is defined!" withPermStackM id (\(pctx :>: ptrans_x) -> pctx :>: typeTransF ttrans [applyOpenTermMulti diff --git a/src/SAWScript/HeapsterBuiltins.hs b/src/SAWScript/HeapsterBuiltins.hs index 1e7d95100d..ff2491c915 100644 --- a/src/SAWScript/HeapsterBuiltins.hs +++ b/src/SAWScript/HeapsterBuiltins.hs @@ -229,7 +229,8 @@ parseTermFromString nm term_string = do findUnusedIdent :: Module -> String -> Ident findUnusedIdent m str = fromJust $ find (isNothing . Mod.resolveName m . identBaseName) $ - map (mkSafeIdent (moduleName m)) $ (str : map ((str ++) . show) [0..]) + map (mkSafeIdent (moduleName m)) $ + (str : map ((str ++) . show) [(0::Int) ..]) -- | Parse the second given string as a term, check that it has the given type, -- and, if the parsed term is not already an identifier, add it as a definition @@ -477,11 +478,10 @@ partialRecShape :: NatRepr w -> String -> CruCtx args -> Maybe (Mb (args :> LLVMShapeType w) (PermExpr (LLVMShapeType w))) -> Ident -> NamedShape 'True args w partialRecShape _ nm args mb_body trans_ident = - let body_err = error "Analyzing recursive shape cases before it is defined!" - fold_err = error "Folding recursive shape before it is defined!" - unfold_err = error "Unfolding recursive shape before it is defined!" - in NamedShape nm args $ RecShapeBody (fromMaybe body_err mb_body) - trans_ident fold_err unfold_err + let body_err = + error "Analyzing recursive shape cases before it is defined!" in + NamedShape nm args $ + RecShapeBody (fromMaybe body_err mb_body) trans_ident Nothing -- | Given a named recursive shape name, arguments, body, and `trans_ident`, -- insert its definition and definitions for its fold and unfold functions @@ -532,7 +532,7 @@ addIRTRecShape sc mnm env nm args body trans_ident = scInsertDef sc mnm fold_ident fold_fun_tp fold_fun_tm scInsertDef sc mnm unfold_ident unfold_fun_tp unfold_fun_tm let nsh = NamedShape nm args $ - RecShapeBody body trans_ident fold_ident unfold_ident + RecShapeBody body trans_ident (Just (fold_ident, unfold_ident)) return $ permEnvAddNamedShape env nsh -- | Define a new reachability permission From 83f01efddf8772da39337489d911747b06828008 Mon Sep 17 00:00:00 2001 From: Eddy Westbrook Date: Thu, 1 Jul 2021 12:52:17 -0700 Subject: [PATCH 10/11] commented out the definition of Tree because it does not work yet --- heapster-saw/examples/rust_data.saw | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/heapster-saw/examples/rust_data.saw b/heapster-saw/examples/rust_data.saw index d6dacf3bbe..3e4841dfc8 100644 --- a/heapster-saw/examples/rust_data.saw +++ b/heapster-saw/examples/rust_data.saw @@ -57,7 +57,9 @@ heapster_define_opaque_llvmshape env "Vec" 64 "T:llvmshape 64" "24" "\\ (T:sort heapster_define_opaque_llvmshape env "HashMap" 64 "T:llvmshape 64, U:llvmshape 64" "56" "\\ (T:sort 0) (U:sort 0) -> List (T * U)"; // Tree type -heapster_define_rust_type env "pub enum Tree { Leaf (X), Node (Vec>) }"; +// FIXME: this does not work yet because Heapster cannot yet handle recursive types +// where the type being defined is passed to an opaque or recursvie type +//heapster_define_rust_type env "pub enum Tree { Leaf (X), Node (Vec>) }"; From 0ab5a0e50e022d7e7cd3d0979f035ef6976a4a98 Mon Sep 17 00:00:00 2001 From: Eddy Westbrook Date: Thu, 1 Jul 2021 13:09:30 -0700 Subject: [PATCH 11/11] updated rust_data.v per its new translation --- heapster-saw/examples/rust_data.v | 3 +++ 1 file changed, 3 insertions(+) diff --git a/heapster-saw/examples/rust_data.v b/heapster-saw/examples/rust_data.v index 8edda650ce..b8537f4b9b 100644 --- a/heapster-saw/examples/rust_data.v +++ b/heapster-saw/examples/rust_data.v @@ -44,6 +44,9 @@ Definition foldList_IRT : forall (e0 : Type), forall (p0 : @SAWCorePrelude.Eithe Definition unfoldList_IRT : forall (e0 : Type), forall (p0 : @List_IRT e0), @SAWCorePrelude.Either (prod unit unit) (prod unit (prod e0 (prod (@List_IRT e0) unit))) := fun (e0 : Type) => @SAWCorePrelude.unfoldIRT (@List_IRTTyVars e0) (@SAWCorePrelude.IRTs_Nil (@List_IRTTyVars e0)) (@List_IRTDesc e0). +Definition Vec0 : forall (e0 : Type), Type := + fun (T : Type) => @Datatypes.list T. + Definition HashMap : forall (e0 : Type), forall (e1 : Type), Type := fun (T : Type) (U : Type) => @Datatypes.list (prod T U).