diff --git a/theories/algebra/big_op.v b/theories/algebra/big_op.v index 3729d5f48233a6347e7cb53a50703fd11e647fcb..9f04dd7ed0a566d6939218422f4a68bdbed025df 100644 --- a/theories/algebra/big_op.v +++ b/theories/algebra/big_op.v @@ -241,6 +241,18 @@ Section gmap. ([^o map] k↦y ∈ <[i:=x]> m, <[i:=P]> f k) ≡ (P `o` [^o map] k↦y ∈ m, f k). Proof. apply (big_opM_fn_insert (λ _ _, id)). Qed. + Lemma big_opM_union f m1 m2 : + m1 ##ₘ m2 → + ([^o map] k↦y ∈ m1 ∪ m2, f k y) ≡ ([^o map] k↦y ∈ m1, f k y) `o` ([^o map] k↦y ∈ m2, f k y). + Proof. + intros. induction m1 as [|i x m ? IH] using map_ind. + { by rewrite big_opM_empty !left_id. } + decompose_map_disjoint. + rewrite -insert_union_l !big_opM_insert //; + last by apply lookup_union_None. + rewrite -assoc IH //. + Qed. + Lemma big_opM_opM f g m : ([^o map] k↦x ∈ m, f k x `o` g k x) ≡ ([^o map] k↦x ∈ m, f k x) `o` ([^o map] k↦x ∈ m, g k x). diff --git a/theories/bi/big_op.v b/theories/bi/big_op.v index dd9e84b1c421a7d3aebc6963f736d2e8eab35076..9322476689146241880a2293be8749fd39e42126 100644 --- a/theories/bi/big_op.v +++ b/theories/bi/big_op.v @@ -626,6 +626,12 @@ Section gmap. ([∗ map] k↦y ∈ <[i:=x]> m, <[i:=P]> Φ k) ⊣⊢ (P ∗ [∗ map] k↦y ∈ m, Φ k). Proof. apply big_opM_fn_insert'. Qed. + Lemma big_sepM_union Φ m1 m2 : + m1 ##ₘ m2 → + ([∗ map] k↦y ∈ m1 ∪ m2, Φ k y) + ⊣⊢ ([∗ map] k↦y ∈ m1, Φ k y) ∗ ([∗ map] k↦y ∈ m2, Φ k y). + Proof. apply big_opM_union. Qed. + Lemma big_sepM_sepM Φ Ψ m : ([∗ map] k↦x ∈ m, Φ k x ∗ Ψ k x) ⊣⊢ ([∗ map] k↦x ∈ m, Φ k x) ∗ ([∗ map] k↦x ∈ m, Ψ k x).