diff --git a/iris/algebra/lib/frac_agree.v b/iris/algebra/lib/frac_agree.v index 8355f3aecbfca4b351e560626d1750a8de9368c2..ee08f73cb2f4ec6dab36a4edc267d6702a1cf832 100644 --- a/iris/algebra/lib/frac_agree.v +++ b/iris/algebra/lib/frac_agree.v @@ -48,6 +48,22 @@ Section lemmas. apply to_agree_op_invN. done. Qed. + Lemma frac_agree_included q1 a1 q2 a2 : + to_frac_agree q1 a1 ≼ to_frac_agree q2 a2 → + (q1 < q2)%Qp ∧ a1 ≡ a2. + Proof. by intros [?%frac_included ?%to_agree_included]%pair_included. Qed. + Lemma frac_agree_included_L `{!LeibnizEquiv A} q1 a1 q2 a2 : + to_frac_agree q1 a1 ≼ to_frac_agree q2 a2 → + (q1 < q2)%Qp ∧ a1 = a2. + Proof. unfold_leibniz. apply frac_agree_included. Qed. + Lemma frac_agree_includedN q1 a1 q2 a2 n : + to_frac_agree q1 a1 ≼{n} to_frac_agree q2 a2 → + (q1 < q2)%Qp ∧ a1 ≡{n}≡ a2. + Proof. + by intros [?%cmra_discrete_included_iff%frac_included + ?%to_agree_includedN]%pair_includedN. + Qed. + (** No frame-preserving update lemma needed -- use [cmra_update_exclusive] with the above [Exclusive] instance. *)