From ce445a3d24b6a132d737d285396244f52368e608 Mon Sep 17 00:00:00 2001 From: Allan Blanchard <allan.blanchard@cea.fr> Date: Tue, 3 May 2022 15:00:30 +0200 Subject: [PATCH] [wp] tests oracles related to Why3 VC format --- .../wp/tests/wp/oracle/sharing.res.oracle | 2 +- .../oracle/chunk_typing_usable.res.oracle | 22 ++++----- .../tests/wp_acsl/oracle/inductive.res.oracle | 30 ++++++------ .../oracle/predicates_functions.res.oracle | 5 +- .../wp_acsl/oracle/struct_fields.res.oracle | 40 ++++++++-------- .../tests/wp_bts/oracle/bts_2110.res.oracle | 10 ++-- .../wp_plugin/oracle/inductive.res.oracle | 30 ++++++------ .../tests/wp_plugin/oracle/model.res.oracle | 4 +- .../oracle/multi_matrix_types.res.oracle | 48 +++++++++---------- 9 files changed, 96 insertions(+), 95 deletions(-) diff --git a/src/plugins/wp/tests/wp/oracle/sharing.res.oracle b/src/plugins/wp/tests/wp/oracle/sharing.res.oracle index b01d3e9c63e..efd2e9f9df7 100644 --- a/src/plugins/wp/tests/wp/oracle/sharing.res.oracle +++ b/src/plugins/wp/tests/wp/oracle/sharing.res.oracle @@ -57,7 +57,7 @@ end let m3 = set m2 (shift_sint32 a 3) (get m2 a2) in 0 <= i1 -> 0 <= i -> - region (base a) <= 0 -> + region (a.base) <= 0 -> i1 <= 9 -> i <= 9 -> linked t -> diff --git a/src/plugins/wp/tests/wp_acsl/oracle/chunk_typing_usable.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/chunk_typing_usable.res.oracle index 58865eff22d..2067e2fba85 100644 --- a/src/plugins/wp/tests/wp_acsl/oracle/chunk_typing_usable.res.oracle +++ b/src/plugins/wp/tests/wp_acsl/oracle/chunk_typing_usable.res.oracle @@ -75,13 +75,13 @@ theory A_Occ (* use Chunk *) - Q_empty : + axiom Q_empty : forall mint:addr -> int, v:int, p:addr, f:int, t:int. t <= f -> is_sint32_chunk mint -> is_sint32 v -> L_occ mint v p f t = 0 (* use Compound *) - Q_is : + axiom Q_is : forall mint:addr -> int, v:int, p:addr, f:int, t:int. let x = (- 1) + t in let x1 = get mint (shift_sint32 p x) in @@ -91,7 +91,7 @@ theory A_Occ is_sint32 v -> is_sint32 x1 -> (1 + L_occ mint v p f x) = L_occ mint v p f t - Q_isnt : + axiom Q_isnt : forall mint:addr -> int, v:int, p:addr, f:int, t:int. let x = (- 1) + t in let x1 = get mint (shift_sint32 p x) in @@ -154,7 +154,7 @@ end forall t:addr -> int, a:addr, i:int, i1:int, i2:int, i3:int. i3 <= i1 -> i < i3 -> - region (base a) <= 0 -> + region (a.base) <= 0 -> is_sint32_chunk t -> is_uint32 i3 -> is_uint32 i1 -> @@ -233,14 +233,14 @@ theory A_Occ1 (* use Chunk1 *) - Q_empty1 : + axiom Q_empty1 : forall mint:addr1 -> int, v:int, p:addr1, f:int, t:int. t <=' f -> is_sint32_chunk1 mint -> is_sint321 v -> L_occ1 mint v p f t = 0 (* use Compound1 *) - Q_is1 : + axiom Q_is1 : forall mint:addr1 -> int, v:int, p:addr1, f:int, t:int. let x = (- 1) +' t in let x1 = get1 mint (shift_sint321 p x) in @@ -250,7 +250,7 @@ theory A_Occ1 is_sint321 v -> is_sint321 x1 -> (1 +' L_occ1 mint v p f x) = L_occ1 mint v p f t - Q_isnt1 : + axiom Q_isnt1 : forall mint:addr1 -> int, v:int, p:addr1, f:int, t:int. let x = (- 1) +' t in let x1 = get1 mint (shift_sint321 p x) in @@ -315,7 +315,7 @@ end let x = (- 1) +' i1 in not get1 t (shift_sint321 a x) = i2 -> i <' i1 -> - region1 (base1 a) <=' 0 -> + region1 (a.base1) <=' 0 -> i1 <=' 1000 -> is_sint32_chunk1 t -> is_uint321 i1 -> @@ -392,14 +392,14 @@ theory A_Occ2 (* use Chunk2 *) - Q_empty2 : + axiom Q_empty2 : forall mint:addr2 -> int, v:int, p:addr2, f:int, t:int. t <='' f -> is_sint32_chunk2 mint -> is_sint322 v -> L_occ2 mint v p f t = 0 (* use Compound2 *) - Q_is2 : + axiom Q_is2 : forall mint:addr2 -> int, v:int, p:addr2, f:int, t:int. let x = (- 1) +'' t in let x1 = get2 mint (shift_sint322 p x) in @@ -409,7 +409,7 @@ theory A_Occ2 is_sint322 v -> is_sint322 x1 -> (1 +'' L_occ2 mint v p f x) = L_occ2 mint v p f t - Q_isnt2 : + axiom Q_isnt2 : forall mint:addr2 -> int, v:int, p:addr2, f:int, t:int. let x = (- 1) +'' t in let x1 = get2 mint (shift_sint322 p x) in diff --git a/src/plugins/wp/tests/wp_acsl/oracle/inductive.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/inductive.res.oracle index 982b66a1342..4469b488143 100644 --- a/src/plugins/wp/tests/wp_acsl/oracle/inductive.res.oracle +++ b/src/plugins/wp/tests/wp_acsl/oracle/inductive.res.oracle @@ -138,42 +138,42 @@ end forall a:int, b:int, d:int. P_is_gcd2 a b d -> not P_is_gcd2 b d a predicate P_same_array (mint:addr -> int) (mint1:addr -> int) (a:addr) (b: - addr) (begin:int) (end1:int) = + addr) (begin1:int) (end1:int) = forall i:int. - begin <= i -> + begin1 <= i -> i < end1 -> get mint1 (shift_sint32 a i) = get mint (shift_sint32 b i) predicate P_swap (mint:addr -> int) (mint1:addr -> int) (a:addr) (b:addr) - (begin:int) (i:int) (j:int) (end1:int) = + (begin1:int) (i:int) (j:int) (end1:int) = ((((get mint1 (shift_sint32 a i) = get mint (shift_sint32 b j) /\ get mint1 (shift_sint32 a j) = get mint (shift_sint32 b i)) /\ - begin <= i) /\ + begin1 <= i) /\ i < j) /\ j < end1) /\ (forall i1:int. not i1 = i -> not j = i1 -> - begin <= i1 -> + begin1 <= i1 -> i1 < end1 -> get mint1 (shift_sint32 a i1) = get mint (shift_sint32 b i1)) inductive P_same_elements (addr -> int) (addr -> int) addr addr int int = | Q_refl : - forall mint:addr -> int, mint1:addr -> int, a:addr, b:addr, begin: + forall mint:addr -> int, mint1:addr -> int, a:addr, b:addr, begin1: int, end1:int. - P_same_array mint mint1 a b begin end1 -> - P_same_elements mint mint1 a b begin end1 + P_same_array mint mint1 a b begin1 end1 -> + P_same_elements mint mint1 a b begin1 end1 | Q_swap : - forall mint:addr -> int, mint1:addr -> int, a:addr, b:addr, begin: + forall mint:addr -> int, mint1:addr -> int, a:addr, b:addr, begin1: int, i:int, j:int, end1:int. - P_swap mint mint1 a b begin i j end1 -> - P_same_elements mint mint1 a b begin end1 + P_swap mint mint1 a b begin1 i j end1 -> + P_same_elements mint mint1 a b begin1 end1 | Q_trans : forall mint:addr -> int, mint1:addr -> int, mint2:addr -> int, a: - addr, b:addr, c:addr, begin:int, end1:int. - P_same_elements mint mint1 b c begin end1 -> - P_same_elements mint1 mint2 a b begin end1 -> - P_same_elements mint mint2 a c begin end1 + addr, b:addr, c:addr, begin1:int, end1:int. + P_same_elements mint mint1 b c begin1 end1 -> + P_same_elements mint1 mint2 a b begin1 end1 -> + P_same_elements mint mint2 a c begin1 end1 goal wp_goal : forall t:addr -> int, t1:addr -> int, t2:addr -> int, a:addr, a1:addr, i: diff --git a/src/plugins/wp/tests/wp_acsl/oracle/predicates_functions.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/predicates_functions.res.oracle index 67a25621bb8..fa26e5047b4 100644 --- a/src/plugins/wp/tests/wp_acsl/oracle/predicates_functions.res.oracle +++ b/src/plugins/wp/tests/wp_acsl/oracle/predicates_functions.res.oracle @@ -22,13 +22,14 @@ predicate P_RP int - P_RP_def : forall i:int. i <= 0 \/ P_P i /\ P_RP ((- 1) + i) <-> P_RP i + axiom P_RP_def : + forall i:int. i <= 0 \/ P_P i /\ P_RP ((- 1) + i) <-> P_RP i function L_F (i:int) : int = 2 * i function L_RF int : int - L_RF_def : + axiom L_RF_def : forall i:int. L_RF i = (if i <= 0 then 0 else L_F i + L_RF ((- 1) + i)) goal wp_goal : forall i:int. 0 < i -> P_RP (L_RF i) diff --git a/src/plugins/wp/tests/wp_acsl/oracle/struct_fields.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/struct_fields.res.oracle index aa0c5615572..df29522c76e 100644 --- a/src/plugins/wp/tests/wp_acsl/oracle/struct_fields.res.oracle +++ b/src/plugins/wp/tests/wp_acsl/oracle/struct_fields.res.oracle @@ -89,13 +89,13 @@ theory Compound Init_S1_X1 (get init (shiftfield_F1_X_a p)) (get init (shiftfield_F1_X_b p)) (get init (shiftfield_F1_X_c p)) - Q_Load_S1_X_update_Mchar0 : + axiom Q_Load_S1_X_update_Mchar0 : forall mchar:addr -> int, mint:addr -> int, mint1:addr -> int, p:addr, q: addr, v:int [Load_S1_X p (set mchar q v) mint mint1]. separated p 3 q 1 -> Load_S1_X p (set mchar q v) mint mint1 = Load_S1_X p mchar mint mint1 - Q_Load_S1_X_eqmem_Mchar0 : + axiom Q_Load_S1_X_eqmem_Mchar0 : forall mchar:addr -> int, mchar1:addr -> int, mint:addr -> int, mint1: addr -> int, n:int, p:addr, q:addr [Load_S1_X p mchar mint mint1, eqmem mchar mchar1 q n| Load_S1_X p mchar1 mint mint1, @@ -104,21 +104,21 @@ theory Compound eqmem mchar mchar1 q n -> Load_S1_X p mchar1 mint mint1 = Load_S1_X p mchar mint mint1 - Q_Load_S1_X_havoc_Mchar0 : + axiom Q_Load_S1_X_havoc_Mchar0 : forall mchar:addr -> int, mchar1:addr -> int, mint:addr -> int, mint1: addr -> int, n:int, p:addr, q:addr [Load_S1_X p (havoc mchar1 mchar q n) mint mint1]. separated p 3 q n -> - Load_S1_X p (havoc mchar1 mchar q n) mint mint1 - = Load_S1_X p mchar mint mint1 + Load_S1_X p (havoc mchar1 mchar q n) mint mint1 = + Load_S1_X p mchar mint mint1 - Q_Load_S1_X_update_Mint1 : + axiom Q_Load_S1_X_update_Mint1 : forall mchar:addr -> int, mint:addr -> int, mint1:addr -> int, p:addr, q: addr, v:int [Load_S1_X p mchar (set mint1 q v) mint]. separated p 3 q 1 -> Load_S1_X p mchar (set mint1 q v) mint = Load_S1_X p mchar mint1 mint - Q_Load_S1_X_eqmem_Mint1 : + axiom Q_Load_S1_X_eqmem_Mint1 : forall mchar:addr -> int, mint:addr -> int, mint1:addr -> int, mint2:addr -> int, n:int, p:addr, q:addr [Load_S1_X p mchar mint1 mint, eqmem mint1 mint2 q n| Load_S1_X p mchar mint2 mint, @@ -127,21 +127,21 @@ theory Compound eqmem mint1 mint2 q n -> Load_S1_X p mchar mint2 mint = Load_S1_X p mchar mint1 mint - Q_Load_S1_X_havoc_Mint1 : + axiom Q_Load_S1_X_havoc_Mint1 : forall mchar:addr -> int, mint:addr -> int, mint1:addr -> int, mint2:addr -> int, n:int, p:addr, q:addr [Load_S1_X p mchar (havoc mint2 mint1 q n) mint]. separated p 3 q n -> - Load_S1_X p mchar (havoc mint2 mint1 q n) mint - = Load_S1_X p mchar mint1 mint + Load_S1_X p mchar (havoc mint2 mint1 q n) mint = + Load_S1_X p mchar mint1 mint - Q_Load_S1_X_update_Mint2 : + axiom Q_Load_S1_X_update_Mint2 : forall mchar:addr -> int, mint:addr -> int, mint1:addr -> int, p:addr, q: addr, v:int [Load_S1_X p mchar mint (set mint1 q v)]. separated p 3 q 1 -> Load_S1_X p mchar mint (set mint1 q v) = Load_S1_X p mchar mint mint1 - Q_Load_S1_X_eqmem_Mint2 : + axiom Q_Load_S1_X_eqmem_Mint2 : forall mchar:addr -> int, mint:addr -> int, mint1:addr -> int, mint2:addr -> int, n:int, p:addr, q:addr [Load_S1_X p mchar mint mint1, eqmem mint1 mint2 q n| Load_S1_X p mchar mint mint2, @@ -150,28 +150,28 @@ theory Compound eqmem mint1 mint2 q n -> Load_S1_X p mchar mint mint2 = Load_S1_X p mchar mint mint1 - Q_Load_S1_X_havoc_Mint2 : + axiom Q_Load_S1_X_havoc_Mint2 : forall mchar:addr -> int, mint:addr -> int, mint1:addr -> int, mint2:addr -> int, n:int, p:addr, q:addr [Load_S1_X p mchar mint (havoc mint2 mint1 q n)]. separated p 3 q n -> - Load_S1_X p mchar mint (havoc mint2 mint1 q n) - = Load_S1_X p mchar mint mint1 + Load_S1_X p mchar mint (havoc mint2 mint1 q n) = + Load_S1_X p mchar mint mint1 - Q_Load_Init_S1_X_update_Init0 : + axiom Q_Load_Init_S1_X_update_Init0 : forall init:addr -> bool, p:addr, q:addr, v:bool [Load_Init_S1_X p (set init q v)]. separated p 3 q 1 -> Load_Init_S1_X p (set init q v) = Load_Init_S1_X p init - Q_Load_Init_S1_X_eqmem_Init0 : + axiom Q_Load_Init_S1_X_eqmem_Init0 : forall init:addr -> bool, init1:addr -> bool, n:int, p:addr, q:addr [Load_Init_S1_X p init, eqmem init init1 q n| Load_Init_S1_X p init1, eqmem init init1 q n]. included p 3 q n -> eqmem init init1 q n -> Load_Init_S1_X p init1 = Load_Init_S1_X p init - Q_Load_Init_S1_X_havoc_Init0 : + axiom Q_Load_Init_S1_X_havoc_Init0 : forall init:addr -> bool, init1:addr -> bool, n:int, p:addr, q:addr [Load_Init_S1_X p (havoc init1 init q n)]. separated p 3 q n -> @@ -236,7 +236,7 @@ end forall t:addr -> bool, x:Init_S1_X, t1:int -> int, t2:addr -> int, t3: addr -> int, t4:addr -> int, a:addr. Load_Init_S1_X a t = x -> - region (base a) <= 0 -> + region (a.base) <= 0 -> is_sint16_chunk t3 -> is_sint32_chunk t4 -> is_sint8_chunk t2 -> @@ -272,7 +272,7 @@ end goal wp_goal : forall t:addr -> bool, t1:int -> int, t2:addr -> int, t3:addr -> int, t4: addr -> int, a:addr, x:S1_X. - region (base a) <= 0 -> + region (a.base) <= 0 -> IsS1_X x -> is_sint16_chunk t3 -> is_sint32_chunk t4 -> diff --git a/src/plugins/wp/tests/wp_bts/oracle/bts_2110.res.oracle b/src/plugins/wp/tests/wp_bts/oracle/bts_2110.res.oracle index fe74a260b12..c8d3f169d3f 100644 --- a/src/plugins/wp/tests/wp_bts/oracle/bts_2110.res.oracle +++ b/src/plugins/wp/tests/wp_bts/oracle/bts_2110.res.oracle @@ -59,19 +59,19 @@ theory Compound function shiftfield_F1_FD_pos (p:addr) : addr = shift p 0 - Q_Load_S2_A_update_Mint0 : + axiom Q_Load_S2_A_update_Mint0 : forall mint:addr -> int, p:addr, q:addr, v:int [Load_S2_A p (set mint q v)]. not q = p -> Load_S2_A p (set mint q v) = Load_S2_A p mint - Q_Load_S2_A_eqmem_Mint0 : + axiom Q_Load_S2_A_eqmem_Mint0 : forall mint:addr -> int, mint1:addr -> int, n:int, p:addr, q:addr [Load_S2_A p mint, eqmem mint mint1 q n| Load_S2_A p mint1, eqmem mint mint1 q n]. included p 1 q n -> eqmem mint mint1 q n -> Load_S2_A p mint1 = Load_S2_A p mint - Q_Load_S2_A_havoc_Mint0 : + axiom Q_Load_S2_A_havoc_Mint0 : forall mint:addr -> int, mint1:addr -> int, n:int, p:addr, q:addr [Load_S2_A p (havoc mint1 mint q n)]. separated p 1 q n -> @@ -104,8 +104,8 @@ end let a3 = Load_S2_A a t in let a4 = Load_S2_A a (set (havoc t1 t a 1) a2 i) in not x = i -> - region (base a1) <= 0 -> - region (base a) <= 0 -> + region (a1.base) <= 0 -> + region (a.base) <= 0 -> is_sint32 i -> IsS2_A a3 -> is_sint32 x -> IsS2_A a4 -> EqS2_A a4 a3 end [wp] 1 goal generated diff --git a/src/plugins/wp/tests/wp_plugin/oracle/inductive.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/inductive.res.oracle index 973a39e45fa..25cdbf437dc 100644 --- a/src/plugins/wp/tests/wp_plugin/oracle/inductive.res.oracle +++ b/src/plugins/wp/tests/wp_plugin/oracle/inductive.res.oracle @@ -101,42 +101,42 @@ end P_reachable1 malloc mptr (get mptr (shiftfield_F1__list_next root)) node predicate P_same_array (mint:addr -> int) (mint1:addr -> int) (a:addr) (b: - addr) (begin:int) (end1:int) = + addr) (begin1:int) (end1:int) = forall i:int. - begin <= i -> + begin1 <= i -> i < end1 -> get mint1 (shift_sint32 a i) = get mint (shift_sint32 b i) predicate P_swap (mint:addr -> int) (mint1:addr -> int) (a:addr) (b:addr) - (begin:int) (i:int) (j:int) (end1:int) = + (begin1:int) (i:int) (j:int) (end1:int) = ((((get mint1 (shift_sint32 a i) = get mint (shift_sint32 b j) /\ get mint1 (shift_sint32 a j) = get mint (shift_sint32 b i)) /\ - begin <= i) /\ + begin1 <= i) /\ i < j) /\ j < end1) /\ (forall i1:int. not i1 = i -> not j = i1 -> - begin <= i1 -> + begin1 <= i1 -> i1 < end1 -> get mint1 (shift_sint32 a i1) = get mint (shift_sint32 b i1)) inductive P_same_elements (addr -> int) (addr -> int) addr addr int int = | Q_refl : - forall mint:addr -> int, mint1:addr -> int, a:addr, b:addr, begin: + forall mint:addr -> int, mint1:addr -> int, a:addr, b:addr, begin1: int, end1:int. - P_same_array mint mint1 a b begin end1 -> - P_same_elements mint mint1 a b begin end1 + P_same_array mint mint1 a b begin1 end1 -> + P_same_elements mint mint1 a b begin1 end1 | Q_swap : - forall mint:addr -> int, mint1:addr -> int, a:addr, b:addr, begin: + forall mint:addr -> int, mint1:addr -> int, a:addr, b:addr, begin1: int, i:int, j:int, end1:int. - P_swap mint mint1 a b begin i j end1 -> - P_same_elements mint mint1 a b begin end1 + P_swap mint mint1 a b begin1 i j end1 -> + P_same_elements mint mint1 a b begin1 end1 | Q_trans : forall mint:addr -> int, mint1:addr -> int, mint2:addr -> int, a: - addr, b:addr, c:addr, begin:int, end1:int. - P_same_elements mint mint1 b c begin end1 -> - P_same_elements mint1 mint2 a b begin end1 -> - P_same_elements mint mint2 a c begin end1 + addr, b:addr, c:addr, begin1:int, end1:int. + P_same_elements mint mint1 b c begin1 end1 -> + P_same_elements mint1 mint2 a b begin1 end1 -> + P_same_elements mint mint2 a c begin1 end1 goal wp_goal : forall t:addr -> int, t1:addr -> int, a:addr, a1:addr, i:int, i1:int, i2: diff --git a/src/plugins/wp/tests/wp_plugin/oracle/model.res.oracle b/src/plugins/wp/tests/wp_plugin/oracle/model.res.oracle index 70fd22d935e..29f604c34ea 100644 --- a/src/plugins/wp/tests/wp_plugin/oracle/model.res.oracle +++ b/src/plugins/wp/tests/wp_plugin/oracle/model.res.oracle @@ -74,7 +74,7 @@ end goal wp_goal : forall t:addr -> int, i:int, a:addr. let x = get t (shift_sint32 a i) in - region (base a) <= 0 -> is_sint32 i -> is_sint32 x -> P_P x + region (a.base) <= 0 -> is_sint32 i -> is_sint32 x -> P_P x end [wp] 1 goal generated ------------------------------------------------------------ @@ -162,7 +162,7 @@ end goal wp_goal : forall t:addr1 -> int, i:int, a:addr1. let x = get1 t (shift_sint321 a i) in - region1 (base1 a) <=' 0 -> is_sint321 i -> is_sint321 x -> P_P1 x + region1 (a.base1) <=' 0 -> is_sint321 i -> is_sint321 x -> P_P1 x end [wp] 1 goal generated ------------------------------------------------------------ diff --git a/src/plugins/wp/tests/wp_typed/oracle/multi_matrix_types.res.oracle b/src/plugins/wp/tests/wp_typed/oracle/multi_matrix_types.res.oracle index 324a789c9b9..268995c9ffb 100644 --- a/src/plugins/wp/tests/wp_typed/oracle/multi_matrix_types.res.oracle +++ b/src/plugins/wp/tests/wp_typed/oracle/multi_matrix_types.res.oracle @@ -103,61 +103,61 @@ theory Compound (Array_uint32 (shiftfield_F1_S_a p) 5 mint) (Array_sint64 (shiftfield_F1_S_b p) 5 mint2) - Q_Array_uint32_access : + axiom Q_Array_uint32_access : forall mint:addr -> int, i:int, n:int, p:addr [get (Array_uint32 p n mint) i]. 0 <= i -> i < n -> get (Array_uint32 p n mint) i = get mint (shift_uint32 p i) - Q_Array_uint32_update_Mint0 : + axiom Q_Array_uint32_update_Mint0 : forall mint:addr -> int, n:int, p:addr, q:addr, v:int [Array_uint32 p n (set mint q v)]. not q = p -> Array_uint32 p n (set mint q v) = Array_uint32 p n mint - Q_Array_uint32_eqmem_Mint0 : + axiom Q_Array_uint32_eqmem_Mint0 : forall mint:addr -> int, mint1:addr -> int, n:int, n1:int, p:addr, q:addr [Array_uint32 p n mint, eqmem mint mint1 q n1| Array_uint32 p n mint1, eqmem mint mint1 q n1]. included p 1 q n1 -> eqmem mint mint1 q n1 -> Array_uint32 p n mint1 = Array_uint32 p n mint - Q_Array_uint32_havoc_Mint0 : + axiom Q_Array_uint32_havoc_Mint0 : forall mint:addr -> int, mint1:addr -> int, n:int, n1:int, p:addr, q:addr [Array_uint32 p n (havoc mint1 mint q n1)]. separated p 1 q n1 -> Array_uint32 p n (havoc mint1 mint q n1) = Array_uint32 p n mint - Q_Array_sint64_access : + axiom Q_Array_sint64_access : forall mint:addr -> int, i:int, n:int, p:addr [get (Array_sint64 p n mint) i]. 0 <= i -> i < n -> get (Array_sint64 p n mint) i = get mint (shift_sint64 p i) - Q_Array_sint64_update_Mint0 : + axiom Q_Array_sint64_update_Mint0 : forall mint:addr -> int, n:int, p:addr, q:addr, v:int [Array_sint64 p n (set mint q v)]. not q = p -> Array_sint64 p n (set mint q v) = Array_sint64 p n mint - Q_Array_sint64_eqmem_Mint0 : + axiom Q_Array_sint64_eqmem_Mint0 : forall mint:addr -> int, mint1:addr -> int, n:int, n1:int, p:addr, q:addr [Array_sint64 p n mint, eqmem mint mint1 q n1| Array_sint64 p n mint1, eqmem mint mint1 q n1]. included p 1 q n1 -> eqmem mint mint1 q n1 -> Array_sint64 p n mint1 = Array_sint64 p n mint - Q_Array_sint64_havoc_Mint0 : + axiom Q_Array_sint64_havoc_Mint0 : forall mint:addr -> int, mint1:addr -> int, n:int, n1:int, p:addr, q:addr [Array_sint64 p n (havoc mint1 mint q n1)]. separated p 1 q n1 -> Array_sint64 p n (havoc mint1 mint q n1) = Array_sint64 p n mint - Q_Load_S1_S_update_Mint0 : + axiom Q_Load_S1_S_update_Mint0 : forall mint:addr -> int, mint1:addr -> int, mint2:addr -> int, p:addr, q: addr, v:int [Load_S1_S p (set mint q v) mint1 mint2]. separated p 11 q 1 -> Load_S1_S p (set mint q v) mint1 mint2 = Load_S1_S p mint mint1 mint2 - Q_Load_S1_S_eqmem_Mint0 : + axiom Q_Load_S1_S_eqmem_Mint0 : forall mint:addr -> int, mint1:addr -> int, mint2:addr -> int, mint3:addr -> int, n:int, p:addr, q:addr [Load_S1_S p mint mint2 mint3, eqmem mint mint1 q n| Load_S1_S p mint1 mint2 mint3, @@ -166,21 +166,21 @@ theory Compound eqmem mint mint1 q n -> Load_S1_S p mint1 mint2 mint3 = Load_S1_S p mint mint2 mint3 - Q_Load_S1_S_havoc_Mint0 : + axiom Q_Load_S1_S_havoc_Mint0 : forall mint:addr -> int, mint1:addr -> int, mint2:addr -> int, mint3:addr -> int, n:int, p:addr, q:addr [Load_S1_S p (havoc mint1 mint q n) mint2 mint3]. separated p 11 q n -> - Load_S1_S p (havoc mint1 mint q n) mint2 mint3 - = Load_S1_S p mint mint2 mint3 + Load_S1_S p (havoc mint1 mint q n) mint2 mint3 = + Load_S1_S p mint mint2 mint3 - Q_Load_S1_S_update_Mint1 : + axiom Q_Load_S1_S_update_Mint1 : forall mint:addr -> int, mint1:addr -> int, mint2:addr -> int, p:addr, q: addr, v:int [Load_S1_S p mint2 (set mint1 q v) mint]. separated p 11 q 1 -> Load_S1_S p mint2 (set mint1 q v) mint = Load_S1_S p mint2 mint1 mint - Q_Load_S1_S_eqmem_Mint1 : + axiom Q_Load_S1_S_eqmem_Mint1 : forall mint:addr -> int, mint1:addr -> int, mint2:addr -> int, mint3:addr -> int, n:int, p:addr, q:addr [Load_S1_S p mint3 mint1 mint, eqmem mint1 mint2 q n| Load_S1_S p mint3 mint2 mint, @@ -189,21 +189,21 @@ theory Compound eqmem mint1 mint2 q n -> Load_S1_S p mint3 mint2 mint = Load_S1_S p mint3 mint1 mint - Q_Load_S1_S_havoc_Mint1 : + axiom Q_Load_S1_S_havoc_Mint1 : forall mint:addr -> int, mint1:addr -> int, mint2:addr -> int, mint3:addr -> int, n:int, p:addr, q:addr [Load_S1_S p mint3 (havoc mint2 mint1 q n) mint]. separated p 11 q n -> - Load_S1_S p mint3 (havoc mint2 mint1 q n) mint - = Load_S1_S p mint3 mint1 mint + Load_S1_S p mint3 (havoc mint2 mint1 q n) mint = + Load_S1_S p mint3 mint1 mint - Q_Load_S1_S_update_Mint2 : + axiom Q_Load_S1_S_update_Mint2 : forall mint:addr -> int, mint1:addr -> int, mint2:addr -> int, p:addr, q: addr, v:int [Load_S1_S p mint1 mint (set mint2 q v)]. separated p 11 q 1 -> Load_S1_S p mint1 mint (set mint2 q v) = Load_S1_S p mint1 mint mint2 - Q_Load_S1_S_eqmem_Mint2 : + axiom Q_Load_S1_S_eqmem_Mint2 : forall mint:addr -> int, mint1:addr -> int, mint2:addr -> int, mint3:addr -> int, n:int, p:addr, q:addr [Load_S1_S p mint1 mint mint2, eqmem mint2 mint3 q n| Load_S1_S p mint1 mint mint3, @@ -212,13 +212,13 @@ theory Compound eqmem mint2 mint3 q n -> Load_S1_S p mint1 mint mint3 = Load_S1_S p mint1 mint mint2 - Q_Load_S1_S_havoc_Mint2 : + axiom Q_Load_S1_S_havoc_Mint2 : forall mint:addr -> int, mint1:addr -> int, mint2:addr -> int, mint3:addr -> int, n:int, p:addr, q:addr [Load_S1_S p mint1 mint (havoc mint3 mint2 q n)]. separated p 11 q n -> - Load_S1_S p mint1 mint (havoc mint3 mint2 q n) - = Load_S1_S p mint1 mint mint2 + Load_S1_S p mint1 mint (havoc mint3 mint2 q n) = + Load_S1_S p mint1 mint mint2 end [wp:print-generated] theory WP @@ -246,7 +246,7 @@ end forall t:addr -> int, t1:addr -> int, t2:addr -> int, a:addr, i:int. let a1 = Load_S1_S a t t2 t1 in let a2 = Load_S1_S a t (set t2 (shiftfield_F1_S_f a) i) t1 in - region (base a) <= 0 -> IsS1_S a1 -> IsS1_S a2 -> EqS1_S a2 a1 + region (a.base) <= 0 -> IsS1_S a1 -> IsS1_S a2 -> EqS1_S a2 a1 end [wp] 1 goal generated ------------------------------------------------------------ -- GitLab