summaryrefslogtreecommitdiff
path: root/tests/hol4/hashmap/hashmap_PropertiesScript.sml
diff options
context:
space:
mode:
authorSon Ho2023-06-02 17:23:29 +0200
committerSon HO2023-06-04 21:54:38 +0200
commitdc46dbb9a01329c39673fedc195006745c365030 (patch)
treedf1c93fbb2cb6a0e4e7b534d2b624a3e2b999ad5 /tests/hol4/hashmap/hashmap_PropertiesScript.sml
parent54afbf3a8b71ee729641ee3024d19aaf8fa92a67 (diff)
Update the HOL4 proofs for the last *release* version of HOL4
Diffstat (limited to '')
-rw-r--r--tests/hol4/hashmap/hashmap_PropertiesScript.sml10
1 files changed, 6 insertions, 4 deletions
diff --git a/tests/hol4/hashmap/hashmap_PropertiesScript.sml b/tests/hol4/hashmap/hashmap_PropertiesScript.sml
index c8e87f07..7259f2f5 100644
--- a/tests/hol4/hashmap/hashmap_PropertiesScript.sml
+++ b/tests/hol4/hashmap/hashmap_PropertiesScript.sml
@@ -1040,7 +1040,7 @@ QED
(* TODO: the names introduced by progress are random, which is confusing.
It also makes the proofs less stable.
- Try to use the names given by the let-bindings. *)
+ Update the progress tactic to use the names given by the let-bindings. *)
Theorem hash_map_move_elements_loop_fwd_back_spec_aux:
∀ hm slots i n.
@@ -1138,16 +1138,17 @@ Proof
fs [])
>-(
(* Prove that index j (update slots i) = index j slots *)
- pop_assum (qspec_assume ‘int_to_usize j’) >> gvs [] >> massage >> gvs [] >>
+ first_x_assum (qspec_assume ‘int_to_usize j’) >> gvs [] >> massage >> gvs [] >>
fs [vec_len_def] >>
massage >> gvs [] >>
sg ‘j ≠ usize_to_int i’ >- int_tac >> gvs [vec_index_def, vec_update_def] >>
massage >>
(* Use the fact that slot_t_lookup k (index i ... slots) = NONE *)
- last_x_assum (qspec_assume ‘k’) >>
+ first_x_assum (qspec_assume ‘k’) >>
first_assum sg_premise_tac
>- (
sg ‘usize_to_int i < j’ >- int_tac >> fs [] >>
+ sg ‘usize_to_int i ≤ j’ >- int_tac >> fs [] >>
(* TODO: we have to rewrite key_MEM_j_lookup_i_is_NONE before applying
metis_tac *)
assume_tac key_MEM_j_lookup_i_is_NONE >> fs [] >>
@@ -1156,7 +1157,8 @@ Proof
(* Use the fact that as the key is in the slots after i, it can't be in “hm” (yet) *)
last_x_assum (qspec_assume ‘j’) >> gvs [] >>
first_x_assum sg_premise_tac >- (int_tac) >> gvs [] >>
- first_x_assum imp_res_tac) >>
+ first_x_assum imp_res_tac >>
+ metis_tac []) >>
(* The conclusion of the theorem (the post-condition) *)
conj_tac
>-(