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

More now_True laws.

parent c4054f80
No related branches found
No related tags found
No related merge requests found
...@@ -1141,6 +1141,9 @@ Lemma now_True_mono P Q : (P ⊢ Q) → ◇ P ⊢ ◇ Q. ...@@ -1141,6 +1141,9 @@ Lemma now_True_mono P Q : (P ⊢ Q) → ◇ P ⊢ ◇ Q.
Proof. by intros ->. Qed. Proof. by intros ->. Qed.
Lemma now_True_idemp P : P P. Lemma now_True_idemp P : P P.
Proof. rewrite /uPred_now_True; auto. Qed. Proof. rewrite /uPred_now_True; auto. Qed.
Lemma now_True_True : True ⊣⊢ True.
Proof. rewrite /uPred_now_True. apply (anti_symm _); auto. Qed.
Lemma now_True_or P Q : (P Q) ⊣⊢ P Q. Lemma now_True_or P Q : (P Q) ⊣⊢ P Q.
Proof. rewrite /uPred_now_True. apply (anti_symm _); auto. Qed. Proof. rewrite /uPred_now_True. apply (anti_symm _); auto. Qed.
Lemma now_True_and P Q : (P Q) ⊣⊢ P Q. Lemma now_True_and P Q : (P Q) ⊣⊢ P Q.
...@@ -1160,6 +1163,8 @@ Lemma now_True_later P : ◇ ▷ P ⊢ ▷ P. ...@@ -1160,6 +1163,8 @@ Lemma now_True_later P : ◇ ▷ P ⊢ ▷ P.
Proof. by rewrite /uPred_now_True -later_or False_or. Qed. Proof. by rewrite /uPred_now_True -later_or False_or. Qed.
Lemma now_True_always P : P ⊣⊢ P. Lemma now_True_always P : P ⊣⊢ P.
Proof. by rewrite /uPred_now_True always_or always_later always_pure. Qed. Proof. by rewrite /uPred_now_True always_or always_later always_pure. Qed.
Lemma now_True_always_if p P : ?p P ⊣⊢ ?p P.
Proof. destruct p; simpl; auto using now_True_always. Qed.
Lemma now_True_frame_l P Q : P Q (P Q). Lemma now_True_frame_l P Q : P Q (P Q).
Proof. by rewrite {1}(now_True_intro P) now_True_sep. Qed. Proof. by rewrite {1}(now_True_intro P) now_True_sep. Qed.
Lemma now_True_frame_r P Q : P Q (P Q). Lemma now_True_frame_r P Q : P Q (P Q).
...@@ -1238,6 +1243,11 @@ Proof. ...@@ -1238,6 +1243,11 @@ Proof.
exists (y x3); split; first by rewrite -assoc. exists (y x3); split; first by rewrite -assoc.
exists y; eauto using cmra_includedN_l. exists y; eauto using cmra_includedN_l.
Qed. Qed.
Lemma now_True_rvs P : (|=r=> P) (|=r=> P).
Proof.
rewrite /uPred_now_True. apply or_elim; auto using rvs_mono.
by rewrite -rvs_intro -or_intro_l.
Qed.
(** * Derived rules *) (** * Derived rules *)
Global Instance rvs_mono' : Proper (() ==> ()) (@uPred_rvs M). Global Instance rvs_mono' : Proper (() ==> ()) (@uPred_rvs M).
......
...@@ -272,10 +272,8 @@ Proof. ...@@ -272,10 +272,8 @@ Proof.
Qed. Qed.
Class MakeNowTrue (P Q : uPred M) := make_now_True : P ⊣⊢ Q. Class MakeNowTrue (P Q : uPred M) := make_now_True : P ⊣⊢ Q.
Global Instance make_now_True_true : MakeNowTrue True True. Global Instance make_now_True_True : MakeNowTrue True True.
Proof. Proof. by rewrite /MakeNowTrue now_True_True. Qed.
rewrite /MakeNowTrue /uPred_now_True. apply (anti_symm _); auto with I.
Qed.
Global Instance make_now_True_default P : MakeNowTrue P ( P) | 100. Global Instance make_now_True_default P : MakeNowTrue P ( P) | 100.
Proof. done. Qed. Proof. done. 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