Commit 902f5305 authored by Dmitry Khalanskiy's avatar Dmitry Khalanskiy

Add pair_op_1 and pair_op_2

The two new lemmas allow splitting the resources in one component
of a pair when the other component has nothing. In combination
with `pair_split`, they allow to arbitrarily split the resource
`(a ⋅ a', b ⋅ b')`.

This is in line with `prod_local_update_1` and
`prod_local_update_2`, the lemmas that allow, in a sense, to only
consider one component of a pair.
parent 446bc644
......@@ -1210,6 +1210,20 @@ Section prod_unit.
Lemma pair_split_L `{!LeibnizEquiv A, !LeibnizEquiv B} (x : A) (y : B) :
(x, y) = (x, ε) (ε, y).
Proof. unfold_leibniz. apply pair_split. Qed.
Lemma pair_op_1 (a a': A) : (a a', ε) @{A*B} (a, ε) (a', ε).
Proof. by rewrite -pair_op ucmra_unit_left_id. Qed.
Lemma pair_op_1_L `{!LeibnizEquiv A, !LeibnizEquiv B} (a a': A) :
(a a', ε) =@{A*B} (a, ε) (a', ε).
Proof. unfold_leibniz. apply pair_op_1. Qed.
Lemma pair_op_2 (b b': B) : (ε, b b') @{A*B} (ε, b) (ε, b').
Proof. by rewrite -pair_op ucmra_unit_left_id. Qed.
Lemma pair_op_2_L `{!LeibnizEquiv A, !LeibnizEquiv B} (b b': B) :
(ε, b b') =@{A*B} (ε, b) (ε, b').
Proof. unfold_leibniz. apply pair_op_2. Qed.
End prod_unit.
Arguments prodUR : clear implicits.
......
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