Commit 1270ae08 authored by Robbert Krebbers's avatar Robbert Krebbers

Leibniz equality variants of the commute lemmas for big ops.

parent 61761380
......@@ -427,3 +427,30 @@ Proof.
- by rewrite !big_opS_insert // !big_opS_empty !right_id.
- by rewrite !big_opS_insert // cmra_homomorphism -IH //.
Qed.
Lemma big_opL_commute_L {M1 M2 : ucmraT} `{!LeibnizEquiv M2} {A}
(h : M1 M2) `{!UCMRAHomomorphism h} (f : nat A M1) l :
h ([ list] kx l, f k x) = ([ list] kx l, h (f k x)).
Proof. unfold_leibniz. by apply big_opL_commute. Qed.
Lemma big_opL_commute1_L {M1 M2 : ucmraT} `{!LeibnizEquiv M2} {A}
(h : M1 M2) `{!CMRAHomomorphism h} (f : nat A M1) l :
l [] h ([ list] kx l, f k x) = ([ list] kx l, h (f k x)).
Proof. unfold_leibniz. by apply big_opL_commute1. Qed.
Lemma big_opM_commute_L {M1 M2 : ucmraT} `{!LeibnizEquiv M2, Countable K} {A}
(h : M1 M2) `{!UCMRAHomomorphism h} (f : K A M1) m :
h ([ map] kx m, f k x) = ([ map] kx m, h (f k x)).
Proof. unfold_leibniz. by apply big_opM_commute. Qed.
Lemma big_opM_commute1_L {M1 M2 : ucmraT} `{!LeibnizEquiv M2, Countable K} {A}
(h : M1 M2) `{!CMRAHomomorphism h} (f : K A M1) m :
m h ([ map] kx m, f k x) = ([ map] kx m, h (f k x)).
Proof. unfold_leibniz. by apply big_opM_commute1. Qed.
Lemma big_opS_commute_L {M1 M2 : ucmraT} `{!LeibnizEquiv M2, Countable A}
(h : M1 M2) `{!UCMRAHomomorphism h} (f : A M1) X :
h ([ set] x X, f x) = ([ set] x X, h (f x)).
Proof. unfold_leibniz. by apply big_opS_commute. Qed.
Lemma big_opS_commute1_L {M1 M2 : ucmraT} `{!LeibnizEquiv M2, Countable A}
(h : M1 M2) `{!CMRAHomomorphism h} (f : A M1) X :
X h ([ set] x X, f x) = ([ set] x X, h (f x)).
Proof. intros. rewrite <-leibniz_equiv_iff. by apply big_opS_commute1. Qed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment