diff --git a/iris/bi/big_op.v b/iris/bi/big_op.v index c65797250e43ce30481261f3ee647976ee72089a..0d10614eb8fc7f6d5179da725404711167862fbb 100644 --- a/iris/bi/big_op.v +++ b/iris/bi/big_op.v @@ -686,6 +686,11 @@ Section sep_list2. Proof. rewrite big_sepL2_alt. apply _. Qed. End sep_list2. +Lemma big_sepL_sepL2_diag {A} (Φ : nat → A → A → PROP) (l : list A) : + ([∗ list] k↦y ∈ l, Φ k y y) -∗ + ([∗ list] k↦y1;y2 ∈ l;l, Φ k y1 y2). +Proof. revert Φ. induction l as [|x l IH]=> Φ /=; [done|]. by rewrite -IH. Qed. + Lemma big_sepL2_ne_2 {A B : ofe} (Φ Ψ : nat → A → B → PROP) l1 l2 l1' l2' n : l1 ≡{n}≡ l1' → l2 ≡{n}≡ l2' → @@ -1573,6 +1578,15 @@ Section map2. Proof. intros. rewrite big_sepM2_eq /big_sepM2_def. apply _. Qed. End map2. +Lemma big_sepM_sepM2_diag `{Countable K} {A} (Φ : K → A → A → PROP) (m : gmap K A) : + ([∗ map] k↦y ∈ m, Φ k y y) -∗ + ([∗ map] k↦y1;y2 ∈ m;m, Φ k y1 y2). +Proof. + revert Φ. induction m as [|x k l ? IH] using map_ind=> Φ /=. + { by rewrite big_sepM_empty big_sepM2_empty. } + by rewrite big_sepM_insert // big_sepM2_insert // -IH. +Qed. + Lemma big_sepM2_ne_2 `{Countable K} (A B : ofe) (Φ Ψ : K → A → B → PROP) m1 m2 m1' m2' n : m1 ≡{n}≡ m1' → m2 ≡{n}≡ m2' →