Skip to content
Snippets Groups Projects
Commit 1270ae08 authored by Robbert Krebbers's avatar Robbert Krebbers
Browse files

Leibniz equality variants of the commute lemmas for big ops.

parent 61761380
No related branches found
No related tags found
No related merge requests found
......@@ -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.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment