From 06bdd537cd29fd284fa815a9d8d2c9adec93d1e4 Mon Sep 17 00:00:00 2001 From: Ralf Jung <jung@mpi-sws.org> Date: Wed, 11 Nov 2020 14:22:20 +0100 Subject: [PATCH] shorter proof by Robbert --- theories/algebra/gmap.v | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/theories/algebra/gmap.v b/theories/algebra/gmap.v index 4bbb324c8..13208c8d1 100644 --- a/theories/algebra/gmap.v +++ b/theories/algebra/gmap.v @@ -598,24 +598,11 @@ Qed. Lemma big_opM_singletons m : ([^op map] k ↦ x ∈ m, {[ k := x ]}) = m. Proof. - rewrite big_opM_eq /big_opM_def. - remember (map_to_list m) as l eqn:Heql. - assert (map_to_list m ≡ₚ l) as Hl by by rewrite Heql. - clear Heql. revert m Hl. induction l as [|kx l IH]. - - intros m ->%map_to_list_empty_inv_alt. - rewrite big_opL_nil. done. - - destruct kx as [k x]. - intros m Hl. - rewrite big_opL_cons. - assert (NoDup ((k, x) :: l).*1) as Hnodup. - { rewrite -Hl. apply NoDup_fst_map_to_list. } - rewrite (IH (list_to_map l)). - + rewrite (map_to_list_insert_inv _ _ _ _ Hl). - rewrite insert_singleton_op //. - apply not_elem_of_list_to_map_1. - apply NoDup_cons_11 in Hnodup. done. - + apply map_to_list_to_map. - eapply NoDup_cons_12. done. + rewrite big_opM_eq /big_opM_def -{2}(list_to_map_to_list m). + assert (NoDup (map_to_list m).*1) as Hnodup by apply NoDup_fst_map_to_list. + revert Hnodup. induction (map_to_list m) as [|[k x] l IH]; csimpl; first done. + intros [??]%NoDup_cons. rewrite IH //. + rewrite insert_singleton_op ?not_elem_of_list_to_map_1 //. Qed. End properties. -- GitLab