From 2b40c5c3de1ee2caca2c0072f812fea04b5a0238 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Mon, 27 May 2024 14:59:10 +0200 Subject: tests: Merge the hashmap test files --- tests/lean/Hashmap/Funs.lean | 70 +++++++++++++++----------- tests/lean/Hashmap/FunsExternal.lean | 19 +++++++ tests/lean/Hashmap/FunsExternal_Template.lean | 17 +++++++ tests/lean/Hashmap/Types.lean | 5 +- tests/lean/Hashmap/TypesExternal.lean | 7 +++ tests/lean/Hashmap/TypesExternal_Template.lean | 9 ++++ 6 files changed, 95 insertions(+), 32 deletions(-) create mode 100644 tests/lean/Hashmap/FunsExternal.lean create mode 100644 tests/lean/Hashmap/FunsExternal_Template.lean create mode 100644 tests/lean/Hashmap/TypesExternal.lean create mode 100644 tests/lean/Hashmap/TypesExternal_Template.lean (limited to 'tests/lean/Hashmap') diff --git a/tests/lean/Hashmap/Funs.lean b/tests/lean/Hashmap/Funs.lean index 4f05fbc8..e76912cc 100644 --- a/tests/lean/Hashmap/Funs.lean +++ b/tests/lean/Hashmap/Funs.lean @@ -2,17 +2,18 @@ -- [hashmap]: function definitions import Base import Hashmap.Types +import Hashmap.FunsExternal open Primitives namespace hashmap /- [hashmap::hash_key]: - Source: 'tests/src/hashmap.rs', lines 35:0-35:32 -/ + Source: 'tests/src/hashmap.rs', lines 37:0-37:32 -/ def hash_key (k : Usize) : Result Usize := Result.ok k /- [hashmap::{hashmap::HashMap}::allocate_slots]: loop 0: - Source: 'tests/src/hashmap.rs', lines 58:4-64:5 -/ + Source: 'tests/src/hashmap.rs', lines 60:4-66:5 -/ divergent def HashMap.allocate_slots_loop (T : Type) (slots : alloc.vec.Vec (List T)) (n : Usize) : Result (alloc.vec.Vec (List T)) @@ -26,7 +27,7 @@ divergent def HashMap.allocate_slots_loop else Result.ok slots /- [hashmap::{hashmap::HashMap}::allocate_slots]: - Source: 'tests/src/hashmap.rs', lines 58:4-58:76 -/ + Source: 'tests/src/hashmap.rs', lines 60:4-60:76 -/ def HashMap.allocate_slots (T : Type) (slots : alloc.vec.Vec (List T)) (n : Usize) : Result (alloc.vec.Vec (List T)) @@ -34,7 +35,7 @@ def HashMap.allocate_slots HashMap.allocate_slots_loop T slots n /- [hashmap::{hashmap::HashMap}::new_with_capacity]: - Source: 'tests/src/hashmap.rs', lines 67:4-71:13 -/ + Source: 'tests/src/hashmap.rs', lines 69:4-73:13 -/ def HashMap.new_with_capacity (T : Type) (capacity : Usize) (max_load_dividend : Usize) (max_load_divisor : Usize) : @@ -53,12 +54,12 @@ def HashMap.new_with_capacity } /- [hashmap::{hashmap::HashMap}::new]: - Source: 'tests/src/hashmap.rs', lines 83:4-83:24 -/ + Source: 'tests/src/hashmap.rs', lines 85:4-85:24 -/ def HashMap.new (T : Type) : Result (HashMap T) := HashMap.new_with_capacity T 32#usize 4#usize 5#usize /- [hashmap::{hashmap::HashMap}::clear]: loop 0: - Source: 'tests/src/hashmap.rs', lines 88:4-96:5 -/ + Source: 'tests/src/hashmap.rs', lines 90:4-98:5 -/ divergent def HashMap.clear_loop (T : Type) (slots : alloc.vec.Vec (List T)) (i : Usize) : Result (alloc.vec.Vec (List T)) @@ -76,19 +77,19 @@ divergent def HashMap.clear_loop else Result.ok slots /- [hashmap::{hashmap::HashMap}::clear]: - Source: 'tests/src/hashmap.rs', lines 88:4-88:27 -/ + Source: 'tests/src/hashmap.rs', lines 90:4-90:27 -/ def HashMap.clear (T : Type) (self : HashMap T) : Result (HashMap T) := do let hm ← HashMap.clear_loop T self.slots 0#usize Result.ok { self with num_entries := 0#usize, slots := hm } /- [hashmap::{hashmap::HashMap}::len]: - Source: 'tests/src/hashmap.rs', lines 98:4-98:30 -/ + Source: 'tests/src/hashmap.rs', lines 100:4-100:30 -/ def HashMap.len (T : Type) (self : HashMap T) : Result Usize := Result.ok self.num_entries /- [hashmap::{hashmap::HashMap}::insert_in_list]: loop 0: - Source: 'tests/src/hashmap.rs', lines 105:4-122:5 -/ + Source: 'tests/src/hashmap.rs', lines 107:4-124:5 -/ divergent def HashMap.insert_in_list_loop (T : Type) (key : Usize) (value : T) (ls : List T) : Result (Bool × (List T)) @@ -104,7 +105,7 @@ divergent def HashMap.insert_in_list_loop | List.Nil => Result.ok (true, List.Cons key value List.Nil) /- [hashmap::{hashmap::HashMap}::insert_in_list]: - Source: 'tests/src/hashmap.rs', lines 105:4-105:71 -/ + Source: 'tests/src/hashmap.rs', lines 107:4-107:71 -/ def HashMap.insert_in_list (T : Type) (key : Usize) (value : T) (ls : List T) : Result (Bool × (List T)) @@ -112,7 +113,7 @@ def HashMap.insert_in_list HashMap.insert_in_list_loop T key value ls /- [hashmap::{hashmap::HashMap}::insert_no_resize]: - Source: 'tests/src/hashmap.rs', lines 125:4-125:54 -/ + Source: 'tests/src/hashmap.rs', lines 127:4-127:54 -/ def HashMap.insert_no_resize (T : Type) (self : HashMap T) (key : Usize) (value : T) : Result (HashMap T) @@ -136,7 +137,7 @@ def HashMap.insert_no_resize Result.ok { self with slots := v } /- [hashmap::{hashmap::HashMap}::move_elements_from_list]: loop 0: - Source: 'tests/src/hashmap.rs', lines 191:4-204:5 -/ + Source: 'tests/src/hashmap.rs', lines 193:4-206:5 -/ divergent def HashMap.move_elements_from_list_loop (T : Type) (ntable : HashMap T) (ls : List T) : Result (HashMap T) := match ls with @@ -147,13 +148,13 @@ divergent def HashMap.move_elements_from_list_loop | List.Nil => Result.ok ntable /- [hashmap::{hashmap::HashMap}::move_elements_from_list]: - Source: 'tests/src/hashmap.rs', lines 191:4-191:72 -/ + Source: 'tests/src/hashmap.rs', lines 193:4-193:72 -/ def HashMap.move_elements_from_list (T : Type) (ntable : HashMap T) (ls : List T) : Result (HashMap T) := HashMap.move_elements_from_list_loop T ntable ls /- [hashmap::{hashmap::HashMap}::move_elements]: loop 0: - Source: 'tests/src/hashmap.rs', lines 179:4-188:5 -/ + Source: 'tests/src/hashmap.rs', lines 181:4-190:5 -/ divergent def HashMap.move_elements_loop (T : Type) (ntable : HashMap T) (slots : alloc.vec.Vec (List T)) (i : Usize) : @@ -174,7 +175,7 @@ divergent def HashMap.move_elements_loop else Result.ok (ntable, slots) /- [hashmap::{hashmap::HashMap}::move_elements]: - Source: 'tests/src/hashmap.rs', lines 179:4-179:95 -/ + Source: 'tests/src/hashmap.rs', lines 181:4-181:95 -/ def HashMap.move_elements (T : Type) (ntable : HashMap T) (slots : alloc.vec.Vec (List T)) (i : Usize) : @@ -183,7 +184,7 @@ def HashMap.move_elements HashMap.move_elements_loop T ntable slots i /- [hashmap::{hashmap::HashMap}::try_resize]: - Source: 'tests/src/hashmap.rs', lines 148:4-148:28 -/ + Source: 'tests/src/hashmap.rs', lines 150:4-150:28 -/ def HashMap.try_resize (T : Type) (self : HashMap T) : Result (HashMap T) := do let max_usize ← Scalar.cast .Usize core_u32_max @@ -207,7 +208,7 @@ def HashMap.try_resize (T : Type) (self : HashMap T) : Result (HashMap T) := else Result.ok { self with max_load_factor := (i, i1) } /- [hashmap::{hashmap::HashMap}::insert]: - Source: 'tests/src/hashmap.rs', lines 137:4-137:48 -/ + Source: 'tests/src/hashmap.rs', lines 139:4-139:48 -/ def HashMap.insert (T : Type) (self : HashMap T) (key : Usize) (value : T) : Result (HashMap T) @@ -220,7 +221,7 @@ def HashMap.insert else Result.ok self1 /- [hashmap::{hashmap::HashMap}::contains_key_in_list]: loop 0: - Source: 'tests/src/hashmap.rs', lines 214:4-227:5 -/ + Source: 'tests/src/hashmap.rs', lines 216:4-229:5 -/ divergent def HashMap.contains_key_in_list_loop (T : Type) (key : Usize) (ls : List T) : Result Bool := match ls with @@ -231,13 +232,13 @@ divergent def HashMap.contains_key_in_list_loop | List.Nil => Result.ok false /- [hashmap::{hashmap::HashMap}::contains_key_in_list]: - Source: 'tests/src/hashmap.rs', lines 214:4-214:68 -/ + Source: 'tests/src/hashmap.rs', lines 216:4-216:68 -/ def HashMap.contains_key_in_list (T : Type) (key : Usize) (ls : List T) : Result Bool := HashMap.contains_key_in_list_loop T key ls /- [hashmap::{hashmap::HashMap}::contains_key]: - Source: 'tests/src/hashmap.rs', lines 207:4-207:49 -/ + Source: 'tests/src/hashmap.rs', lines 209:4-209:49 -/ def HashMap.contains_key (T : Type) (self : HashMap T) (key : Usize) : Result Bool := do @@ -250,7 +251,7 @@ def HashMap.contains_key HashMap.contains_key_in_list T key l /- [hashmap::{hashmap::HashMap}::get_in_list]: loop 0: - Source: 'tests/src/hashmap.rs', lines 232:4-245:5 -/ + Source: 'tests/src/hashmap.rs', lines 234:4-247:5 -/ divergent def HashMap.get_in_list_loop (T : Type) (key : Usize) (ls : List T) : Result T := match ls with @@ -261,12 +262,12 @@ divergent def HashMap.get_in_list_loop | List.Nil => Result.fail .panic /- [hashmap::{hashmap::HashMap}::get_in_list]: - Source: 'tests/src/hashmap.rs', lines 232:4-232:70 -/ + Source: 'tests/src/hashmap.rs', lines 234:4-234:70 -/ def HashMap.get_in_list (T : Type) (key : Usize) (ls : List T) : Result T := HashMap.get_in_list_loop T key ls /- [hashmap::{hashmap::HashMap}::get]: - Source: 'tests/src/hashmap.rs', lines 247:4-247:55 -/ + Source: 'tests/src/hashmap.rs', lines 249:4-249:55 -/ def HashMap.get (T : Type) (self : HashMap T) (key : Usize) : Result T := do let hash ← hash_key key @@ -278,7 +279,7 @@ def HashMap.get (T : Type) (self : HashMap T) (key : Usize) : Result T := HashMap.get_in_list T key l /- [hashmap::{hashmap::HashMap}::get_mut_in_list]: loop 0: - Source: 'tests/src/hashmap.rs', lines 253:4-262:5 -/ + Source: 'tests/src/hashmap.rs', lines 255:4-264:5 -/ divergent def HashMap.get_mut_in_list_loop (T : Type) (ls : List T) (key : Usize) : Result (T × (T → Result (List T))) @@ -301,7 +302,7 @@ divergent def HashMap.get_mut_in_list_loop | List.Nil => Result.fail .panic /- [hashmap::{hashmap::HashMap}::get_mut_in_list]: - Source: 'tests/src/hashmap.rs', lines 253:4-253:86 -/ + Source: 'tests/src/hashmap.rs', lines 255:4-255:86 -/ def HashMap.get_mut_in_list (T : Type) (ls : List T) (key : Usize) : Result (T × (T → Result (List T))) @@ -309,7 +310,7 @@ def HashMap.get_mut_in_list HashMap.get_mut_in_list_loop T ls key /- [hashmap::{hashmap::HashMap}::get_mut]: - Source: 'tests/src/hashmap.rs', lines 265:4-265:67 -/ + Source: 'tests/src/hashmap.rs', lines 267:4-267:67 -/ def HashMap.get_mut (T : Type) (self : HashMap T) (key : Usize) : Result (T × (T → Result (HashMap T))) @@ -331,7 +332,7 @@ def HashMap.get_mut Result.ok (t, back) /- [hashmap::{hashmap::HashMap}::remove_from_list]: loop 0: - Source: 'tests/src/hashmap.rs', lines 273:4-299:5 -/ + Source: 'tests/src/hashmap.rs', lines 275:4-301:5 -/ divergent def HashMap.remove_from_list_loop (T : Type) (key : Usize) (ls : List T) : Result ((Option T) × (List T)) := match ls with @@ -350,13 +351,13 @@ divergent def HashMap.remove_from_list_loop | List.Nil => Result.ok (none, List.Nil) /- [hashmap::{hashmap::HashMap}::remove_from_list]: - Source: 'tests/src/hashmap.rs', lines 273:4-273:69 -/ + Source: 'tests/src/hashmap.rs', lines 275:4-275:69 -/ def HashMap.remove_from_list (T : Type) (key : Usize) (ls : List T) : Result ((Option T) × (List T)) := HashMap.remove_from_list_loop T key ls /- [hashmap::{hashmap::HashMap}::remove]: - Source: 'tests/src/hashmap.rs', lines 302:4-302:52 -/ + Source: 'tests/src/hashmap.rs', lines 304:4-304:52 -/ def HashMap.remove (T : Type) (self : HashMap T) (key : Usize) : Result ((Option T) × (HashMap T)) @@ -380,8 +381,17 @@ def HashMap.remove let v ← index_mut_back l1 Result.ok (some x1, { self with num_entries := i1, slots := v }) +/- [hashmap::insert_on_disk]: + Source: 'tests/src/hashmap.rs', lines 335:0-335:43 -/ +def insert_on_disk + (key : Usize) (value : U64) (st : State) : Result (State × Unit) := + do + let (st1, hm) ← hashmap_utils.deserialize st + let hm1 ← HashMap.insert U64 hm key value + hashmap_utils.serialize hm1 st1 + /- [hashmap::test1]: - Source: 'tests/src/hashmap.rs', lines 323:0-323:10 -/ + Source: 'tests/src/hashmap.rs', lines 350:0-350:10 -/ def test1 : Result Unit := do let hm ← HashMap.new U64 diff --git a/tests/lean/Hashmap/FunsExternal.lean b/tests/lean/Hashmap/FunsExternal.lean new file mode 100644 index 00000000..7454696b --- /dev/null +++ b/tests/lean/Hashmap/FunsExternal.lean @@ -0,0 +1,19 @@ +-- [hashmap]: external functions. +import Base +import Hashmap.Types +open Primitives +open hashmap + +-- TODO: fill those bodies + +/- [hashmap::hashmap_utils::deserialize]: + Source: 'tests/src/hashmap.rs', lines 330:4-330:47 -/ +def hashmap_utils.deserialize + : State → Result (State × (HashMap U64)) := + fun _ => .fail .panic + +/- [hashmap::hashmap_utils::serialize]: + Source: 'tests/src/hashmap.rs', lines 325:4-325:46 -/ +def hashmap_utils.serialize + : HashMap U64 → State → Result (State × Unit) := + fun _ _ => .fail .panic diff --git a/tests/lean/Hashmap/FunsExternal_Template.lean b/tests/lean/Hashmap/FunsExternal_Template.lean new file mode 100644 index 00000000..16b4b6af --- /dev/null +++ b/tests/lean/Hashmap/FunsExternal_Template.lean @@ -0,0 +1,17 @@ +-- THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS +-- [hashmap]: external functions. +-- This is a template file: rename it to "FunsExternal.lean" and fill the holes. +import Base +import Hashmap.Types +open Primitives +open hashmap + +/- [hashmap::hashmap_utils::deserialize]: + Source: 'tests/src/hashmap.rs', lines 330:4-330:47 -/ +axiom hashmap_utils.deserialize : State → Result (State × (HashMap U64)) + +/- [hashmap::hashmap_utils::serialize]: + Source: 'tests/src/hashmap.rs', lines 325:4-325:46 -/ +axiom hashmap_utils.serialize + : HashMap U64 → State → Result (State × Unit) + diff --git a/tests/lean/Hashmap/Types.lean b/tests/lean/Hashmap/Types.lean index a98b972f..b4301106 100644 --- a/tests/lean/Hashmap/Types.lean +++ b/tests/lean/Hashmap/Types.lean @@ -1,18 +1,19 @@ -- THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS -- [hashmap]: type definitions import Base +import Hashmap.TypesExternal open Primitives namespace hashmap /- [hashmap::List] - Source: 'tests/src/hashmap.rs', lines 27:0-27:16 -/ + Source: 'tests/src/hashmap.rs', lines 29:0-29:16 -/ inductive List (T : Type) := | Cons : Usize → T → List T → List T | Nil : List T /- [hashmap::HashMap] - Source: 'tests/src/hashmap.rs', lines 43:0-43:21 -/ + Source: 'tests/src/hashmap.rs', lines 45:0-45:21 -/ structure HashMap (T : Type) where num_entries : Usize max_load_factor : (Usize × Usize) diff --git a/tests/lean/Hashmap/TypesExternal.lean b/tests/lean/Hashmap/TypesExternal.lean new file mode 100644 index 00000000..b32c4c42 --- /dev/null +++ b/tests/lean/Hashmap/TypesExternal.lean @@ -0,0 +1,7 @@ +-- [hashmap]: external types. +import Base +open Primitives + +/- The state type used in the state-error monad -/ +axiom State : Type + diff --git a/tests/lean/Hashmap/TypesExternal_Template.lean b/tests/lean/Hashmap/TypesExternal_Template.lean new file mode 100644 index 00000000..03c3d157 --- /dev/null +++ b/tests/lean/Hashmap/TypesExternal_Template.lean @@ -0,0 +1,9 @@ +-- THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS +-- [hashmap]: external types. +-- This is a template file: rename it to "TypesExternal.lean" and fill the holes. +import Base +open Primitives + +/- The state type used in the state-error monad -/ +axiom State : Type + -- cgit v1.3.1 From c4d2af051c18c4c81b1e57a45210c37c89c8330f Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Tue, 28 May 2024 11:18:35 +0200 Subject: tests: Rename hashmap_utils -> utils --- tests/coq/hashmap/Hashmap_Funs.v | 4 ++-- tests/coq/hashmap/Hashmap_FunsExternal.v | 8 ++++---- tests/coq/hashmap/Hashmap_FunsExternal_Template.v | 9 ++++----- tests/fstar/hashmap/Hashmap.Funs.fst | 4 ++-- tests/fstar/hashmap/Hashmap.FunsExternal.fsti | 8 ++++---- tests/fstar/hashmap/Hashmap.Properties.fst | 8 ++++---- tests/hol4/hashmap_main/hashmapMain_FunsScript.sml | 4 ++-- tests/hol4/hashmap_main/hashmapMain_FunsTheory.sig | 4 ++-- tests/hol4/hashmap_main/hashmapMain_OpaqueScript.sml | 4 ++-- tests/lean/Hashmap/Funs.lean | 4 ++-- tests/lean/Hashmap/FunsExternal.lean | 8 ++++---- tests/lean/Hashmap/FunsExternal_Template.lean | 9 ++++----- tests/src/hashmap.rs | 8 ++++---- 13 files changed, 40 insertions(+), 42 deletions(-) (limited to 'tests/lean/Hashmap') diff --git a/tests/coq/hashmap/Hashmap_Funs.v b/tests/coq/hashmap/Hashmap_Funs.v index 89f90210..04df873a 100644 --- a/tests/coq/hashmap/Hashmap_Funs.v +++ b/tests/coq/hashmap/Hashmap_Funs.v @@ -508,10 +508,10 @@ Definition hashMap_remove Source: 'tests/src/hashmap.rs', lines 335:0-335:43 *) Definition insert_on_disk (n : nat) (key : usize) (value : u64) (st : state) : result (state * unit) := - p <- hashmap_utils_deserialize st; + p <- utils_deserialize st; let (st1, hm) := p in hm1 <- hashMap_insert u64 n hm key value; - hashmap_utils_serialize hm1 st1 + utils_serialize hm1 st1 . (** [hashmap::test1]: diff --git a/tests/coq/hashmap/Hashmap_FunsExternal.v b/tests/coq/hashmap/Hashmap_FunsExternal.v index bcf12c17..3bc6c98a 100644 --- a/tests/coq/hashmap/Hashmap_FunsExternal.v +++ b/tests/coq/hashmap/Hashmap_FunsExternal.v @@ -9,13 +9,13 @@ Require Export Hashmap_Types. Import Hashmap_Types. Module Hashmap_FunsExternal. -(** [hashmap::hashmap_utils::deserialize]: +(** [hashmap::utils::deserialize]: Source: 'tests/src/hashmap.rs', lines 330:4-330:47 *) -Axiom hashmap_utils_deserialize : state -> result (state * (HashMap_t u64)). +Axiom utils_deserialize : state -> result (state * (HashMap_t u64)). -(** [hashmap::hashmap_utils::serialize]: +(** [hashmap::utils::serialize]: Source: 'tests/src/hashmap.rs', lines 325:4-325:46 *) -Axiom hashmap_utils_serialize : HashMap_t u64 -> state -> result (state * unit) +Axiom utils_serialize : HashMap_t u64 -> state -> result (state * unit) . End Hashmap_FunsExternal. diff --git a/tests/coq/hashmap/Hashmap_FunsExternal_Template.v b/tests/coq/hashmap/Hashmap_FunsExternal_Template.v index c35b8e14..c58b021d 100644 --- a/tests/coq/hashmap/Hashmap_FunsExternal_Template.v +++ b/tests/coq/hashmap/Hashmap_FunsExternal_Template.v @@ -11,13 +11,12 @@ Require Import Hashmap_Types. Include Hashmap_Types. Module Hashmap_FunsExternal_Template. -(** [hashmap::hashmap_utils::deserialize]: +(** [hashmap::utils::deserialize]: Source: 'tests/src/hashmap.rs', lines 330:4-330:47 *) -Axiom hashmap_utils_deserialize : state -> result (state * (HashMap_t u64)). +Axiom utils_deserialize : state -> result (state * (HashMap_t u64)). -(** [hashmap::hashmap_utils::serialize]: +(** [hashmap::utils::serialize]: Source: 'tests/src/hashmap.rs', lines 325:4-325:46 *) -Axiom hashmap_utils_serialize : HashMap_t u64 -> state -> result (state * unit) -. +Axiom utils_serialize : HashMap_t u64 -> state -> result (state * unit). End Hashmap_FunsExternal_Template. diff --git a/tests/fstar/hashmap/Hashmap.Funs.fst b/tests/fstar/hashmap/Hashmap.Funs.fst index a85be4ed..0e991720 100644 --- a/tests/fstar/hashmap/Hashmap.Funs.fst +++ b/tests/fstar/hashmap/Hashmap.Funs.fst @@ -380,9 +380,9 @@ let hashMap_remove Source: 'tests/src/hashmap.rs', lines 335:0-335:43 *) let insert_on_disk (key : usize) (value : u64) (st : state) : result (state & unit) = - let* (st1, hm) = hashmap_utils_deserialize st in + let* (st1, hm) = utils_deserialize st in let* hm1 = hashMap_insert u64 hm key value in - hashmap_utils_serialize hm1 st1 + utils_serialize hm1 st1 (** [hashmap::test1]: Source: 'tests/src/hashmap.rs', lines 350:0-350:10 *) diff --git a/tests/fstar/hashmap/Hashmap.FunsExternal.fsti b/tests/fstar/hashmap/Hashmap.FunsExternal.fsti index 6e3964c7..f2f305e6 100644 --- a/tests/fstar/hashmap/Hashmap.FunsExternal.fsti +++ b/tests/fstar/hashmap/Hashmap.FunsExternal.fsti @@ -6,11 +6,11 @@ include Hashmap.Types #set-options "--z3rlimit 50 --fuel 1 --ifuel 1" -(** [hashmap::hashmap_utils::deserialize]: +(** [hashmap::utils::deserialize]: Source: 'tests/src/hashmap.rs', lines 330:4-330:47 *) -val hashmap_utils_deserialize : state -> result (state & (hashMap_t u64)) +val utils_deserialize : state -> result (state & (hashMap_t u64)) -(** [hashmap::hashmap_utils::serialize]: +(** [hashmap::utils::serialize]: Source: 'tests/src/hashmap.rs', lines 325:4-325:46 *) -val hashmap_utils_serialize : hashMap_t u64 -> state -> result (state & unit) +val utils_serialize : hashMap_t u64 -> state -> result (state & unit) diff --git a/tests/fstar/hashmap/Hashmap.Properties.fst b/tests/fstar/hashmap/Hashmap.Properties.fst index 0d6372c1..ed118c46 100644 --- a/tests/fstar/hashmap/Hashmap.Properties.fst +++ b/tests/fstar/hashmap/Hashmap.Properties.fst @@ -18,18 +18,18 @@ val state_v : state -> hashMap_t u64 /// [serialize] updates the hash map stored on disk assume val serialize_lem (hm : hashMap_t u64) (st : state) : Lemma ( - match hashmap_utils_serialize hm st with + match utils_serialize hm st with | Fail _ -> True | Ok (st', ()) -> state_v st' == hm) - [SMTPat (hashmap_utils_serialize hm st)] + [SMTPat (utils_serialize hm st)] /// [deserialize] gives us the hash map stored on disk, without updating it assume val deserialize_lem (st : state) : Lemma ( - match hashmap_utils_deserialize st with + match utils_deserialize st with | Fail _ -> True | Ok (st', hm) -> hm == state_v st /\ st' == st) - [SMTPat (hashmap_utils_deserialize st)] + [SMTPat (utils_deserialize st)] (*** Lemmas *) diff --git a/tests/hol4/hashmap_main/hashmapMain_FunsScript.sml b/tests/hol4/hashmap_main/hashmapMain_FunsScript.sml index c1e30aa6..2a17d185 100644 --- a/tests/hol4/hashmap_main/hashmapMain_FunsScript.sml +++ b/tests/hol4/hashmap_main/hashmapMain_FunsScript.sml @@ -628,9 +628,9 @@ val insert_on_disk_fwd_def = Define ‘ insert_on_disk_fwd (key : usize) (value : u64) (st : state) : (state # unit) result = do - (st0, hm) <- hashmap_utils_deserialize_fwd st; + (st0, hm) <- utils_deserialize_fwd st; hm0 <- hashmap_hash_map_insert_fwd_back hm key value; - (st1, _) <- hashmap_utils_serialize_fwd hm0 st0; + (st1, _) <- utils_serialize_fwd hm0 st0; Return (st1, ()) od ’ diff --git a/tests/hol4/hashmap_main/hashmapMain_FunsTheory.sig b/tests/hol4/hashmap_main/hashmapMain_FunsTheory.sig index d4e43d9a..c19673bb 100644 --- a/tests/hol4/hashmap_main/hashmapMain_FunsTheory.sig +++ b/tests/hol4/hashmap_main/hashmapMain_FunsTheory.sig @@ -583,9 +583,9 @@ sig ⊢ ∀key value st. insert_on_disk_fwd key value st = do - (st0,hm) <- hashmap_utils_deserialize_fwd st; + (st0,hm) <- utils_deserialize_fwd st; hm0 <- hashmap_hash_map_insert_fwd_back hm key value; - (st1,_) <- hashmap_utils_serialize_fwd hm0 st0; + (st1,_) <- utils_serialize_fwd hm0 st0; Return (st1,()) od diff --git a/tests/hol4/hashmap_main/hashmapMain_OpaqueScript.sml b/tests/hol4/hashmap_main/hashmapMain_OpaqueScript.sml index f7221d92..9c29c0e0 100644 --- a/tests/hol4/hashmap_main/hashmapMain_OpaqueScript.sml +++ b/tests/hol4/hashmap_main/hashmapMain_OpaqueScript.sml @@ -6,10 +6,10 @@ open hashmapMain_TypesTheory val _ = new_theory "hashmapMain_Opaque" -(** [hashmap_main::hashmap_utils::deserialize]: forward function *)val _ = new_constant ("hashmap_utils_deserialize_fwd", +(** [hashmap_main::utils::deserialize]: forward function *)val _ = new_constant ("utils_deserialize_fwd", “:state -> (state # u64 hashmap_hash_map_t) result”) -(** [hashmap_main::hashmap_utils::serialize]: forward function *)val _ = new_constant ("hashmap_utils_serialize_fwd", +(** [hashmap_main::utils::serialize]: forward function *)val _ = new_constant ("utils_serialize_fwd", “:u64 hashmap_hash_map_t -> state -> (state # unit) result”) val _ = export_theory () diff --git a/tests/lean/Hashmap/Funs.lean b/tests/lean/Hashmap/Funs.lean index e76912cc..d7ac3b05 100644 --- a/tests/lean/Hashmap/Funs.lean +++ b/tests/lean/Hashmap/Funs.lean @@ -386,9 +386,9 @@ def HashMap.remove def insert_on_disk (key : Usize) (value : U64) (st : State) : Result (State × Unit) := do - let (st1, hm) ← hashmap_utils.deserialize st + let (st1, hm) ← utils.deserialize st let hm1 ← HashMap.insert U64 hm key value - hashmap_utils.serialize hm1 st1 + utils.serialize hm1 st1 /- [hashmap::test1]: Source: 'tests/src/hashmap.rs', lines 350:0-350:10 -/ diff --git a/tests/lean/Hashmap/FunsExternal.lean b/tests/lean/Hashmap/FunsExternal.lean index 7454696b..329e5d82 100644 --- a/tests/lean/Hashmap/FunsExternal.lean +++ b/tests/lean/Hashmap/FunsExternal.lean @@ -6,14 +6,14 @@ open hashmap -- TODO: fill those bodies -/- [hashmap::hashmap_utils::deserialize]: +/- [hashmap::utils::deserialize]: Source: 'tests/src/hashmap.rs', lines 330:4-330:47 -/ -def hashmap_utils.deserialize +def utils.deserialize : State → Result (State × (HashMap U64)) := fun _ => .fail .panic -/- [hashmap::hashmap_utils::serialize]: +/- [hashmap::utils::serialize]: Source: 'tests/src/hashmap.rs', lines 325:4-325:46 -/ -def hashmap_utils.serialize +def utils.serialize : HashMap U64 → State → Result (State × Unit) := fun _ _ => .fail .panic diff --git a/tests/lean/Hashmap/FunsExternal_Template.lean b/tests/lean/Hashmap/FunsExternal_Template.lean index 16b4b6af..2af57d10 100644 --- a/tests/lean/Hashmap/FunsExternal_Template.lean +++ b/tests/lean/Hashmap/FunsExternal_Template.lean @@ -6,12 +6,11 @@ import Hashmap.Types open Primitives open hashmap -/- [hashmap::hashmap_utils::deserialize]: +/- [hashmap::utils::deserialize]: Source: 'tests/src/hashmap.rs', lines 330:4-330:47 -/ -axiom hashmap_utils.deserialize : State → Result (State × (HashMap U64)) +axiom utils.deserialize : State → Result (State × (HashMap U64)) -/- [hashmap::hashmap_utils::serialize]: +/- [hashmap::utils::serialize]: Source: 'tests/src/hashmap.rs', lines 325:4-325:46 -/ -axiom hashmap_utils.serialize - : HashMap U64 → State → Result (State × Unit) +axiom utils.serialize : HashMap U64 → State → Result (State × Unit) diff --git a/tests/src/hashmap.rs b/tests/src/hashmap.rs index ccb96e1e..19832a84 100644 --- a/tests/src/hashmap.rs +++ b/tests/src/hashmap.rs @@ -1,4 +1,4 @@ -//@ charon-args=--opaque=hashmap_utils +//@ charon-args=--opaque=utils //@ aeneas-args=-state -split-files //@ [coq] aeneas-args=-use-fuel //@ [fstar] aeneas-args=-decreases-clauses -template-clauses @@ -317,7 +317,7 @@ impl HashMap { } // This is a module so we can tell charon to leave it opaque -mod hashmap_utils { +mod utils { use crate::*; /// Serialize a hash map - we don't have traits, so we fix the type of the @@ -334,11 +334,11 @@ mod hashmap_utils { pub fn insert_on_disk(key: Key, value: u64) { // Deserialize - let mut hm = hashmap_utils::deserialize(); + let mut hm = utils::deserialize(); // Update hm.insert(key, value); // Serialize - hashmap_utils::serialize(hm); + utils::serialize(hm); } /// I currently can't retrieve functions marked with the attribute #[test], -- cgit v1.3.1