diff --git a/iris/algebra/lib/gmap_view.v b/iris/algebra/lib/gmap_view.v index 30e814b620bed386a6ca67ef3bf5c7ee330cc2a3..a70dd4db1e05963492d8dde6416a97e67d916a75 100644 --- a/iris/algebra/lib/gmap_view.v +++ b/iris/algebra/lib/gmap_view.v @@ -329,22 +329,13 @@ Section lemmas. gmap_view_auth 1 m ~~> gmap_view_auth 1 (m' ∪ m) ⋅ ([^op map] k↦v ∈ m', gmap_view_frag k dq v). Proof. - revert m. induction m' as [|k v m'] using map_ind. - { intros m _. rewrite big_opM_empty left_id right_id. done. } - intros m Hdisj. etrans. - { apply IHm'; last done. eapply map_disjoint_weaken_l; first done. - apply insert_subseteq. done. } - etrans. - - eapply cmra_update_op; last reflexivity. - eapply (gmap_view_alloc _ k dq); last done. - apply lookup_union_None. split; first done. - eapply map_disjoint_Some_l; first done. - rewrite lookup_insert. done. - - (* Turn goal into "L ≡ R". *) - eapply cmra_update_proper; [reflexivity| |reflexivity]. - rewrite -assoc. f_equiv. - + rewrite insert_union_l. done. - + rewrite big_opM_insert; last done. done. + intros. induction m' as [|k v m' ? IH] using map_ind; decompose_map_disjoint. + { rewrite big_opM_empty left_id_L right_id. done. } + etrans; first by apply IH. + rewrite big_opM_insert // assoc. + apply cmra_update_op; last done. + rewrite -insert_union_l. apply (gmap_view_alloc _ k dq); last done. + by apply lookup_union_None. Qed. Lemma gmap_view_delete m k v :