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

Misc monPred tweaks.

parent 13017ecd
No related branches found
No related tags found
No related merge requests found
...@@ -651,7 +651,7 @@ Global Instance persistently_if_objective P p `{!Objective P} : Objective (<pers ...@@ -651,7 +651,7 @@ Global Instance persistently_if_objective P p `{!Objective P} : Objective (<pers
Proof. rewrite /bi_persistently_if. destruct p; apply _. Qed. Proof. rewrite /bi_persistently_if. destruct p; apply _. Qed.
Global Instance affinely_if_objective P p `{!Objective P} : Objective (<affine>?p P). Global Instance affinely_if_objective P p `{!Objective P} : Objective (<affine>?p P).
Proof. rewrite /bi_affinely_if. destruct p; apply _. Qed. Proof. rewrite /bi_affinely_if. destruct p; apply _. Qed.
Global Instance intuitionistically_if_objective P p `{!Objective P} : Objective (<affine>?p P). Global Instance intuitionistically_if_objective P p `{!Objective P} : Objective (?p P).
Proof. rewrite /bi_intuitionistically_if. destruct p; apply _. Qed. Proof. rewrite /bi_intuitionistically_if. destruct p; apply _. Qed.
(** monPred_in *) (** monPred_in *)
...@@ -670,10 +670,10 @@ Qed. ...@@ -670,10 +670,10 @@ Qed.
Global Instance monPred_at_monoid_and_homomorphism i : Global Instance monPred_at_monoid_and_homomorphism i :
MonoidHomomorphism bi_and bi_and () (flip monPred_at i). MonoidHomomorphism bi_and bi_and () (flip monPred_at i).
Proof. split; [split|]; try apply _. apply monPred_at_and. apply monPred_at_pure. Qed. Proof. split; [split|]; try apply _. apply monPred_at_and. apply monPred_at_pure. Qed.
Global Instance monPred_at_monoid_or_homomorphism : Global Instance monPred_at_monoid_or_homomorphism i :
MonoidHomomorphism bi_or bi_or () (flip monPred_at i). MonoidHomomorphism bi_or bi_or () (flip monPred_at i).
Proof. split; [split|]; try apply _. apply monPred_at_or. apply monPred_at_pure. Qed. Proof. split; [split|]; try apply _. apply monPred_at_or. apply monPred_at_pure. Qed.
Global Instance monPred_at_monoid_sep_homomorphism : Global Instance monPred_at_monoid_sep_homomorphism i :
MonoidHomomorphism bi_sep bi_sep () (flip monPred_at i). MonoidHomomorphism bi_sep bi_sep () (flip monPred_at i).
Proof. split; [split|]; try apply _. apply monPred_at_sep. apply monPred_at_emp. Qed. Proof. split; [split|]; try apply _. apply monPred_at_sep. apply monPred_at_emp. Qed.
...@@ -839,14 +839,14 @@ Qed. ...@@ -839,14 +839,14 @@ Qed.
(** Objective *) (** Objective *)
Global Instance internal_eq_objective {A : ofeT} (x y : A) : Global Instance internal_eq_objective {A : ofeT} (x y : A) :
@Objective I PROP (x y)%I. @Objective I PROP (x y).
Proof. intros ??. by unseal. Qed. Proof. intros ??. by unseal. Qed.
Global Instance later_objective P `{!Objective P} : Objective ( P)%I. Global Instance later_objective P `{!Objective P} : Objective ( P).
Proof. intros ??. unseal. by rewrite objective_at. Qed. Proof. intros ??. unseal. by rewrite objective_at. Qed.
Global Instance laterN_objective P `{!Objective P} n : Objective (▷^n P)%I. Global Instance laterN_objective P `{!Objective P} n : Objective (▷^n P).
Proof. induction n; apply _. Qed. Proof. induction n; apply _. Qed.
Global Instance except0_objective P `{!Objective P} : Objective ( P)%I. Global Instance except0_objective P `{!Objective P} : Objective ( P).
Proof. rewrite /sbi_except_0. apply _. Qed. Proof. rewrite /sbi_except_0. apply _. Qed.
(** FUpd *) (** FUpd *)
...@@ -916,11 +916,8 @@ Proof. ...@@ -916,11 +916,8 @@ Proof.
do 3 apply bi.forall_intro => ?. f_equiv. rewrite bi.forall_elim //. do 3 apply bi.forall_intro => ?. f_equiv. rewrite bi.forall_elim //.
- intros P. split=> i /=. apply bi.forall_intro=>_. by apply plainly_emp_intro. - intros P. split=> i /=. apply bi.forall_intro=>_. by apply plainly_emp_intro.
- intros P Q. split=> i. apply bi.sep_elim_l, _. - intros P Q. split=> i. apply bi.sep_elim_l, _.
- intros P Q. split=> i /=. - intros P Q. split=> i /=. rewrite (monPred_equivI P Q). f_equiv=> j.
rewrite <-(sig_monPred_sig P), <-(sig_monPred_sig Q), <-(bi.f_equiv _). by rewrite -prop_ext !(bi.forall_elim j) !bi.pure_True // !bi.True_impl.
rewrite -bi.sig_equivI /= -bi.fun_ext. f_equiv=> j.
rewrite -prop_ext !(bi.forall_elim j) !bi.pure_impl_forall
!bi.forall_elim //.
- intros P. split=> i /=. - intros P. split=> i /=.
rewrite bi.later_forall. f_equiv=> j. by rewrite -later_plainly_1. rewrite bi.later_forall. f_equiv=> j. by rewrite -later_plainly_1.
- intros P. split=> i /=. - intros P. split=> i /=.
......
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