Skip to content
Snippets Groups Projects
Commit 03863370 authored by Ralf Jung's avatar Ralf Jung
Browse files

rename own lemmas in upred to ownM, to avoid overlapping names

parent c93d1cd0
No related branches found
No related tags found
No related merge requests found
...@@ -784,7 +784,7 @@ Lemma always_entails_r P Q : (P ⊑ □ Q) → P ⊑ (P ★ □ Q). ...@@ -784,7 +784,7 @@ Lemma always_entails_r P Q : (P ⊑ □ Q) → P ⊑ (P ★ □ Q).
Proof. intros; rewrite -always_and_sep_r; auto. Qed. Proof. intros; rewrite -always_and_sep_r; auto. Qed.
(* Own and valid *) (* Own and valid *)
Lemma own_op (a1 a2 : M) : Lemma ownM_op (a1 a2 : M) :
uPred_own (a1 a2) (uPred_own a1 uPred_own a2)%I. uPred_own (a1 a2) (uPred_own a1 uPred_own a2)%I.
Proof. Proof.
intros x n ?; split. intros x n ?; split.
...@@ -794,19 +794,19 @@ Proof. ...@@ -794,19 +794,19 @@ Proof.
by rewrite (associative op _ z1) -(commutative op z1) (associative op z1) by rewrite (associative op _ z1) -(commutative op z1) (associative op z1)
-(associative op _ a2) (commutative op z1) -Hy1 -Hy2. -(associative op _ a2) (commutative op z1) -Hy1 -Hy2.
Qed. Qed.
Lemma always_own_unit (a : M) : ( uPred_own (unit a))%I uPred_own (unit a). Lemma always_ownM_unit (a : M) : ( uPred_own (unit a))%I uPred_own (unit a).
Proof. Proof.
intros x n; split; [by apply always_elim|intros [a' Hx]]; simpl. intros x n; split; [by apply always_elim|intros [a' Hx]]; simpl.
rewrite -(cmra_unit_idempotent a) Hx. rewrite -(cmra_unit_idempotent a) Hx.
apply cmra_unit_preservingN, cmra_includedN_l. apply cmra_unit_preservingN, cmra_includedN_l.
Qed. Qed.
Lemma always_own (a : M) : unit a a ( uPred_own a)%I uPred_own a. Lemma always_ownM (a : M) : unit a a ( uPred_own a)%I uPred_own a.
Proof. by intros <-; rewrite always_own_unit. Qed. Proof. by intros <-; rewrite always_ownM_unit. Qed.
Lemma own_something : True a, uPred_own a. Lemma ownM_something : True a, uPred_own a.
Proof. intros x n ??. by exists x; simpl. Qed. Proof. intros x n ??. by exists x; simpl. Qed.
Lemma own_empty `{Empty M, !CMRAIdentity M} : True uPred_own ∅. Lemma ownM_empty `{Empty M, !CMRAIdentity M} : True uPred_own ∅.
Proof. intros x n ??; by exists x; rewrite (left_id _ _). Qed. Proof. intros x n ??; by exists x; rewrite (left_id _ _). Qed.
Lemma own_valid (a : M) : uPred_own a a. Lemma ownM_valid (a : M) : uPred_own a a.
Proof. intros x n Hv [a' ?]; cofe_subst; eauto using cmra_validN_op_l. Qed. Proof. intros x n Hv [a' ?]; cofe_subst; eauto using cmra_validN_op_l. Qed.
Lemma valid_intro {A : cmraT} (a : A) : a True a. Lemma valid_intro {A : cmraT} (a : A) : a True a.
Proof. by intros ? x n ? _; simpl; apply cmra_valid_validN. Qed. Proof. by intros ? x n ? _; simpl; apply cmra_valid_validN. Qed.
...@@ -819,8 +819,8 @@ Lemma always_valid {A : cmraT} (a : A) : (□ (✓ a))%I ≡ (✓ a : uPred M)%I ...@@ -819,8 +819,8 @@ Lemma always_valid {A : cmraT} (a : A) : (□ (✓ a))%I ≡ (✓ a : uPred M)%I
Proof. done. Qed. Proof. done. Qed.
(* Own and valid derived *) (* Own and valid derived *)
Lemma own_invalid (a : M) : ¬ {0} a uPred_own a False. Lemma ownM_invalid (a : M) : ¬ {0} a uPred_own a False.
Proof. by intros; rewrite own_valid valid_elim. Qed. Proof. by intros; rewrite ownM_valid valid_elim. Qed.
(* Big ops *) (* Big ops *)
Global Instance uPred_big_and_proper : Proper (() ==> ()) (@uPred_big_and M). Global Instance uPred_big_and_proper : Proper (() ==> ()) (@uPred_big_and M).
...@@ -935,7 +935,7 @@ Proof. by intros; rewrite /AlwaysStable always_valid. Qed. ...@@ -935,7 +935,7 @@ Proof. by intros; rewrite /AlwaysStable always_valid. Qed.
Global Instance later_always_stable P : AS P AS ( P). Global Instance later_always_stable P : AS P AS ( P).
Proof. by intros; rewrite /AlwaysStable always_later; apply later_mono. Qed. Proof. by intros; rewrite /AlwaysStable always_later; apply later_mono. Qed.
Global Instance own_unit_always_stable (a : M) : AS (uPred_own (unit a)). Global Instance own_unit_always_stable (a : M) : AS (uPred_own (unit a)).
Proof. by rewrite /AlwaysStable always_own_unit. Qed. Proof. by rewrite /AlwaysStable always_ownM_unit. Qed.
Global Instance default_always_stable {A} P (Q : A uPred M) (mx : option A) : Global Instance default_always_stable {A} P (Q : A uPred M) (mx : option A) :
AS P ( x, AS (Q x)) AS (default P mx Q). AS P ( x, AS (Q x)) AS (default P mx Q).
Proof. destruct mx; apply _. Qed. Proof. destruct mx; apply _. Qed.
......
Require Export algebra.auth algebra.functor. Require Export algebra.auth algebra.functor.
Require Export program_logic.invariants program_logic.ghost_ownership. Require Export program_logic.invariants program_logic.ghost_ownership.
Import uPred ghost_ownership. Import uPred.
Section auth. Section auth.
Context {A : cmraT} `{Empty A, !CMRAIdentity A}. Context {A : cmraT} `{Empty A, !CMRAIdentity A}.
......
...@@ -27,7 +27,7 @@ Proof. ...@@ -27,7 +27,7 @@ Proof.
Qed. Qed.
Lemma always_ownI i P : ( ownI i P)%I ownI i P. Lemma always_ownI i P : ( ownI i P)%I ownI i P.
Proof. Proof.
apply uPred.always_own. apply uPred.always_ownM.
by rewrite Res_unit !cmra_unit_empty map_unit_singleton. by rewrite Res_unit !cmra_unit_empty map_unit_singleton.
Qed. Qed.
Global Instance ownI_always_stable i P : AlwaysStable (ownI i P). Global Instance ownI_always_stable i P : AlwaysStable (ownI i P).
...@@ -38,8 +38,8 @@ Proof. apply (uPred.always_sep_dup' _). Qed. ...@@ -38,8 +38,8 @@ Proof. apply (uPred.always_sep_dup' _). Qed.
(* physical state *) (* physical state *)
Lemma ownP_twice σ1 σ2 : (ownP σ1 ownP σ2 : iProp Λ Σ) False. Lemma ownP_twice σ1 σ2 : (ownP σ1 ownP σ2 : iProp Λ Σ) False.
Proof. Proof.
rewrite /ownP -uPred.own_op Res_op. rewrite /ownP -uPred.ownM_op Res_op.
by apply uPred.own_invalid; intros (_&?&_). by apply uPred.ownM_invalid; intros (_&?&_).
Qed. Qed.
Global Instance ownP_timeless σ : TimelessP (@ownP Λ Σ σ). Global Instance ownP_timeless σ : TimelessP (@ownP Λ Σ σ).
Proof. rewrite /ownP; apply _. Qed. Proof. rewrite /ownP; apply _. Qed.
...@@ -49,14 +49,14 @@ Global Instance ownG_ne n : Proper (dist n ==> dist n) (@ownG Λ Σ). ...@@ -49,14 +49,14 @@ Global Instance ownG_ne n : Proper (dist n ==> dist n) (@ownG Λ Σ).
Proof. by intros m m' Hm; unfold ownG; rewrite Hm. Qed. Proof. by intros m m' Hm; unfold ownG; rewrite Hm. Qed.
Global Instance ownG_proper : Proper (() ==> ()) (@ownG Λ Σ) := ne_proper _. Global Instance ownG_proper : Proper (() ==> ()) (@ownG Λ Σ) := ne_proper _.
Lemma ownG_op m1 m2 : ownG (m1 m2) (ownG m1 ownG m2)%I. Lemma ownG_op m1 m2 : ownG (m1 m2) (ownG m1 ownG m2)%I.
Proof. by rewrite /ownG -uPred.own_op Res_op !(left_id _ _). Qed. Proof. by rewrite /ownG -uPred.ownM_op Res_op !(left_id _ _). Qed.
Lemma always_ownG_unit m : ( ownG (unit m))%I ownG (unit m). Lemma always_ownG_unit m : ( ownG (unit m))%I ownG (unit m).
Proof. Proof.
apply uPred.always_own. apply uPred.always_ownM.
by rewrite Res_unit !cmra_unit_empty -{2}(cmra_unit_idempotent m). by rewrite Res_unit !cmra_unit_empty -{2}(cmra_unit_idempotent m).
Qed. Qed.
Lemma ownG_valid m : (ownG m) ( m). Lemma ownG_valid m : (ownG m) ( m).
Proof. by rewrite /ownG uPred.own_valid; apply uPred.valid_mono=> n [? []]. Qed. Proof. by rewrite /ownG uPred.ownM_valid; apply uPred.valid_mono=> n [? []]. Qed.
Lemma ownG_valid_r m : (ownG m) (ownG m m). Lemma ownG_valid_r m : (ownG m) (ownG m m).
Proof. apply (uPred.always_entails_r' _ _), ownG_valid. Qed. Proof. apply (uPred.always_entails_r' _ _), ownG_valid. Qed.
Global Instance ownG_timeless m : Timeless m TimelessP (ownG m). Global Instance ownG_timeless m : Timeless m TimelessP (ownG m).
......
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