From 0ae5ad57279d0f972ea5459df0fbe0a91cd59e68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Glen=20M=C3=A9vel?= <glen.mevel@inria.fr> Date: Thu, 27 Jan 2022 20:09:00 +0100 Subject: [PATCH] big_op: make all TCOr side-conditions implicit --- iris/bi/big_op.v | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/iris/bi/big_op.v b/iris/bi/big_op.v index f7aef1f5d..4f12bfcd3 100644 --- a/iris/bi/big_op.v +++ b/iris/bi/big_op.v @@ -1335,14 +1335,14 @@ Section sep_map. ([∗ map] k↦y ∈ <[i:=x]> m, Φ k y) ⊣⊢ Φ i x ∗ [∗ map] k↦y ∈ delete i m, Φ k y. Proof. apply big_opM_insert_delete. Qed. - Lemma big_sepM_insert_2 Φ m i x : - TCOr (∀ y, Affine (Φ i y)) (Absorbing (Φ i x)) → + Lemma big_sepM_insert_2 Φ m i x + `{!TCOr (∀ y, Affine (Φ i y)) (Absorbing (Φ i x))} : Φ i x -∗ ([∗ map] k↦y ∈ m, Φ k y) -∗ [∗ map] k↦y ∈ <[i:=x]> m, Φ k y. Proof. - intros Ha. apply wand_intro_r. destruct (m !! i) as [y|] eqn:Hi; last first. + apply wand_intro_r. destruct (m !! i) as [y|] eqn:Hi; last first. { by rewrite -big_sepM_insert. } assert (TCOr (Affine (Φ i y)) (Absorbing (Φ i x))). - { destruct Ha; try apply _. } + { destruct select (TCOr _ _); try apply _. } rewrite big_sepM_delete // assoc. rewrite (sep_elim_l (Φ i x)) -big_sepM_insert ?lookup_delete //. by rewrite insert_delete_insert. @@ -2099,15 +2099,15 @@ Section map2. by apply wand_intro_l. Qed. - Lemma big_sepM2_insert_2 Φ m1 m2 i x1 x2 : - TCOr (∀ x y, Affine (Φ i x y)) (Absorbing (Φ i x1 x2)) → + Lemma big_sepM2_insert_2 Φ m1 m2 i x1 x2 + `{!TCOr (∀ x y, Affine (Φ i x y)) (Absorbing (Φ i x1 x2))} : Φ i x1 x2 -∗ ([∗ map] k↦y1;y2 ∈ m1;m2, Φ k y1 y2) -∗ ([∗ map] k↦y1;y2 ∈ <[i:=x1]>m1; <[i:=x2]>m2, Φ k y1 y2). Proof. - intros Ha. rewrite big_sepM2_eq /big_sepM2_def. + rewrite big_sepM2_eq /big_sepM2_def. assert (TCOr (∀ x, Affine (Φ i x.1 x.2)) (Absorbing (Φ i x1 x2))). - { destruct Ha; try apply _. } + { destruct select (TCOr _ _); try apply _. } apply wand_intro_r. rewrite !persistent_and_affinely_sep_l /=. rewrite (sep_comm (Φ _ _ _)) -sep_assoc. apply sep_mono. @@ -2538,11 +2538,11 @@ Section gset. x ∈ X → ([∗ set] y ∈ X, Φ y) ⊣⊢ Φ x ∗ [∗ set] y ∈ X ∖ {[ x ]}, Φ y. Proof. apply big_opS_delete. Qed. - Lemma big_sepS_insert_2 {Φ X} x : - TCOr (Affine (Φ x)) (Absorbing (Φ x)) → + Lemma big_sepS_insert_2 {Φ X} x + `{!TCOr (Affine (Φ x)) (Absorbing (Φ x))} : Φ x -∗ ([∗ set] y ∈ X, Φ y) -∗ ([∗ set] y ∈ {[ x ]} ∪ X, Φ y). Proof. - intros Haff. apply wand_intro_r. destruct (decide (x ∈ X)); last first. + apply wand_intro_r. destruct (decide (x ∈ X)); last first. { rewrite -big_sepS_insert //. } rewrite big_sepS_delete // assoc. rewrite (sep_elim_l (Φ x)) -big_sepS_insert; last set_solver. -- GitLab