Commit ab92f91e authored by Robbert Krebbers's avatar Robbert Krebbers
Browse files

Add some line breaks to very long lines.

parent 89f57821
Pipeline #65933 canceled with stage
in 10 minutes and 50 seconds
...@@ -59,7 +59,9 @@ Section Ofe_Cofe_def. ...@@ -59,7 +59,9 @@ Section Ofe_Cofe_def.
Proof. by split; [intros []|]. Qed. Proof. by split; [intros []|]. Qed.
Definition monPred_ofe_mixin : OfeMixin monPred. Definition monPred_ofe_mixin : OfeMixin monPred.
Proof. by apply (iso_ofe_mixin monPred_sig monPred_sig_equiv monPred_sig_dist). Qed. Proof.
by apply (iso_ofe_mixin monPred_sig monPred_sig_equiv monPred_sig_dist).
Qed.
Canonical Structure monPredO := Ofe monPred monPred_ofe_mixin. Canonical Structure monPredO := Ofe monPred monPred_ofe_mixin.
...@@ -401,7 +403,9 @@ Proof. by rewrite /bi_affinely monPred_at_and monPred_at_emp. Qed. ...@@ -401,7 +403,9 @@ Proof. by rewrite /bi_affinely monPred_at_and monPred_at_emp. Qed.
Lemma monPred_at_affinely_if i p P : (<affine>?p P) i <affine>?p (P i). Lemma monPred_at_affinely_if i p P : (<affine>?p P) i <affine>?p (P i).
Proof. destruct p=>//=. apply monPred_at_affinely. Qed. Proof. destruct p=>//=. apply monPred_at_affinely. Qed.
Lemma monPred_at_intuitionistically i P : ( P) i (P i). Lemma monPred_at_intuitionistically i P : ( P) i (P i).
Proof. by rewrite /bi_intuitionistically monPred_at_affinely monPred_at_persistently. Qed. Proof.
by rewrite /bi_intuitionistically monPred_at_affinely monPred_at_persistently.
Qed.
Lemma monPred_at_intuitionistically_if i p P : (?p P) i ?p (P i). Lemma monPred_at_intuitionistically_if i p P : (?p P) i ?p (P i).
Proof. destruct p=>//=. apply monPred_at_intuitionistically. Qed. Proof. destruct p=>//=. apply monPred_at_intuitionistically. Qed.
...@@ -501,11 +505,13 @@ Proof. by unseal. Qed. ...@@ -501,11 +505,13 @@ Proof. by unseal. Qed.
Global Instance monPred_objectively_ne : NonExpansive (@monPred_objectively I PROP). Global Instance monPred_objectively_ne : NonExpansive (@monPred_objectively I PROP).
Proof. rewrite monPred_objectively_unfold. solve_proper. Qed. Proof. rewrite monPred_objectively_unfold. solve_proper. Qed.
Global Instance monPred_objectively_proper : Proper (() ==> ()) (@monPred_objectively I PROP). Global Instance monPred_objectively_proper :
Proper (() ==> ()) (@monPred_objectively I PROP).
Proof. apply (ne_proper _). Qed. Proof. apply (ne_proper _). Qed.
Lemma monPred_objectively_mono P Q : (P Q) (<obj> P <obj> Q). Lemma monPred_objectively_mono P Q : (P Q) (<obj> P <obj> Q).
Proof. rewrite monPred_objectively_unfold. solve_proper. Qed. Proof. rewrite monPred_objectively_unfold. solve_proper. Qed.
Global Instance monPred_objectively_mono' : Proper (() ==> ()) (@monPred_objectively I PROP). Global Instance monPred_objectively_mono' :
Proper (() ==> ()) (@monPred_objectively I PROP).
Proof. intros ???. by apply monPred_objectively_mono. Qed. Proof. intros ???. by apply monPred_objectively_mono. Qed.
Global Instance monPred_objectively_flip_mono' : Global Instance monPred_objectively_flip_mono' :
Proper (flip () ==> flip ()) (@monPred_objectively I PROP). Proper (flip () ==> flip ()) (@monPred_objectively I PROP).
...@@ -521,19 +527,23 @@ Proof. rewrite monPred_objectively_unfold. apply _. Qed. ...@@ -521,19 +527,23 @@ Proof. rewrite monPred_objectively_unfold. apply _. Qed.
Global Instance monPred_subjectively_ne : NonExpansive (@monPred_subjectively I PROP). Global Instance monPred_subjectively_ne : NonExpansive (@monPred_subjectively I PROP).
Proof. rewrite monPred_subjectively_unfold. solve_proper. Qed. Proof. rewrite monPred_subjectively_unfold. solve_proper. Qed.
Global Instance monPred_subjectively_proper : Proper (() ==> ()) (@monPred_subjectively I PROP). Global Instance monPred_subjectively_proper :
Proper (() ==> ()) (@monPred_subjectively I PROP).
Proof. apply (ne_proper _). Qed. Proof. apply (ne_proper _). Qed.
Lemma monPred_subjectively_mono P Q : (P Q) <subj> P <subj> Q. Lemma monPred_subjectively_mono P Q : (P Q) <subj> P <subj> Q.
Proof. rewrite monPred_subjectively_unfold. solve_proper. Qed. Proof. rewrite monPred_subjectively_unfold. solve_proper. Qed.
Global Instance monPred_subjectively_mono' : Proper (() ==> ()) (@monPred_subjectively I PROP). Global Instance monPred_subjectively_mono' :
Proper (() ==> ()) (@monPred_subjectively I PROP).
Proof. intros ???. by apply monPred_subjectively_mono. Qed. Proof. intros ???. by apply monPred_subjectively_mono. Qed.
Global Instance monPred_subjectively_flip_mono' : Global Instance monPred_subjectively_flip_mono' :
Proper (flip () ==> flip ()) (@monPred_subjectively I PROP). Proper (flip () ==> flip ()) (@monPred_subjectively I PROP).
Proof. intros ???. by apply monPred_subjectively_mono. Qed. Proof. intros ???. by apply monPred_subjectively_mono. Qed.
Global Instance monPred_subjectively_persistent P : Persistent P Persistent (<subj> P). Global Instance monPred_subjectively_persistent P :
Persistent P Persistent (<subj> P).
Proof. rewrite monPred_subjectively_unfold. apply _. Qed. Proof. rewrite monPred_subjectively_unfold. apply _. Qed.
Global Instance monPred_subjectively_absorbing P : Absorbing P Absorbing (<subj> P). Global Instance monPred_subjectively_absorbing P :
Absorbing P Absorbing (<subj> P).
Proof. rewrite monPred_subjectively_unfold. apply _. Qed. Proof. rewrite monPred_subjectively_unfold. apply _. Qed.
Global Instance monPred_subjectively_affine P : Affine P Affine (<subj> P). Global Instance monPred_subjectively_affine P : Affine P Affine (<subj> P).
Proof. rewrite monPred_subjectively_unfold. apply _. Qed. Proof. rewrite monPred_subjectively_unfold. apply _. Qed.
...@@ -547,7 +557,8 @@ Proof. ...@@ -547,7 +557,8 @@ Proof.
unseal. split=>i /=. by apply bi.forall_intro=>_. unseal. split=>i /=. by apply bi.forall_intro=>_.
Qed. Qed.
Lemma monPred_objectively_forall {A} (Φ : A monPred) : <obj> ( x, Φ x) x, <obj> (Φ x). Lemma monPred_objectively_forall {A} (Φ : A monPred) :
<obj> ( x, Φ x) x, <obj> (Φ x).
Proof. Proof.
unseal. split=>i. apply bi.equiv_entails; split=>/=; unseal. split=>i. apply bi.equiv_entails; split=>/=;
do 2 apply bi.forall_intro=>?; by do 2 rewrite bi.forall_elim. do 2 apply bi.forall_intro=>?; by do 2 rewrite bi.forall_elim.
...@@ -571,8 +582,11 @@ Proof. ...@@ -571,8 +582,11 @@ Proof.
Qed. Qed.
Lemma monPred_objectively_sep_2 P Q : <obj> P <obj> Q <obj> (P Q). Lemma monPred_objectively_sep_2 P Q : <obj> P <obj> Q <obj> (P Q).
Proof. unseal. split=>i /=. apply bi.forall_intro=>?. by rewrite !bi.forall_elim. Qed. Proof.
Lemma monPred_objectively_sep `{BiIndexBottom bot} P Q : <obj> (P Q) <obj> P <obj> Q. unseal. split=>i /=. apply bi.forall_intro=>?. by rewrite !bi.forall_elim.
Qed.
Lemma monPred_objectively_sep `{BiIndexBottom bot} P Q :
<obj> (P Q) <obj> P <obj> Q.
Proof. Proof.
apply bi.equiv_entails, conj, monPred_objectively_sep_2. unseal. split=>i /=. apply bi.equiv_entails, conj, monPred_objectively_sep_2. unseal. split=>i /=.
rewrite (bi.forall_elim bot). by f_equiv; apply bi.forall_intro=>j; f_equiv. rewrite (bi.forall_elim bot). by f_equiv; apply bi.forall_intro=>j; f_equiv.
...@@ -600,7 +614,8 @@ Proof. ...@@ -600,7 +614,8 @@ Proof.
- apply bi.and_elim_l. - apply bi.and_elim_l.
- apply bi.and_elim_r. - apply bi.and_elim_r.
Qed. Qed.
Lemma monPred_subjectively_exist {A} (Φ : A monPred) : <subj> ( x, Φ x) x, <subj> (Φ x). Lemma monPred_subjectively_exist {A} (Φ : A monPred) :
<subj> ( x, Φ x) x, <subj> (Φ x).
Proof. Proof.
unseal. split=>i. apply bi.equiv_entails; split=>/=; unseal. split=>i. apply bi.equiv_entails; split=>/=;
do 2 apply bi.exist_elim=>?; by do 2 rewrite -bi.exist_intro. do 2 apply bi.exist_elim=>?; by do 2 rewrite -bi.exist_intro.
...@@ -615,7 +630,9 @@ Proof. ...@@ -615,7 +630,9 @@ Proof.
Qed. Qed.
Lemma monPred_subjectively_sep P Q : <subj> (P Q) <subj> P <subj> Q. Lemma monPred_subjectively_sep P Q : <subj> (P Q) <subj> P <subj> Q.
Proof. unseal. split=>i /=. apply bi.exist_elim=>?. by rewrite -!bi.exist_intro. Qed. Proof.
unseal. split=>i /=. apply bi.exist_elim=>?. by rewrite -!bi.exist_intro.
Qed.
Lemma monPred_subjectively_idemp P : <subj> <subj> P <subj> P. Lemma monPred_subjectively_idemp P : <subj> <subj> P <subj> P.
Proof. Proof.
...@@ -645,11 +662,14 @@ Proof. intros ??. by unseal. Qed. ...@@ -645,11 +662,14 @@ Proof. intros ??. by unseal. Qed.
Global Instance subjectively_objective P : Objective (<subj> P). Global Instance subjectively_objective P : Objective (<subj> P).
Proof. intros ??. by unseal. Qed. Proof. intros ??. by unseal. Qed.
Global Instance and_objective P Q `{!Objective P, !Objective Q} : Objective (P Q). Global Instance and_objective P Q `{!Objective P, !Objective Q} :
Objective (P Q).
Proof. intros i j. unseal. by rewrite !(objective_at _ i j). Qed. Proof. intros i j. unseal. by rewrite !(objective_at _ i j). Qed.
Global Instance or_objective P Q `{!Objective P, !Objective Q} : Objective (P Q). Global Instance or_objective P Q `{!Objective P, !Objective Q} :
Objective (P Q).
Proof. intros i j. by rewrite !monPred_at_or !(objective_at _ i j). Qed. Proof. intros i j. by rewrite !monPred_at_or !(objective_at _ i j). Qed.
Global Instance impl_objective P Q `{!Objective P, !Objective Q} : Objective (P Q). Global Instance impl_objective P Q `{!Objective P, !Objective Q} :
Objective (P Q).
Proof. Proof.
intros i j. unseal. rewrite (bi.forall_elim i) bi.pure_impl_forall. intros i j. unseal. rewrite (bi.forall_elim i) bi.pure_impl_forall.
rewrite bi.forall_elim //. apply bi.forall_intro=> k. rewrite bi.forall_elim //. apply bi.forall_intro=> k.
...@@ -663,9 +683,11 @@ Global Instance exists_objective {A} Φ {H : ∀ x : A, Objective (Φ x)} : ...@@ -663,9 +683,11 @@ Global Instance exists_objective {A} Φ {H : ∀ x : A, Objective (Φ x)} :
@Objective I PROP ( x, Φ x)%I. @Objective I PROP ( x, Φ x)%I.
Proof. intros i j. unseal. do 2 f_equiv. by apply objective_at. Qed. Proof. intros i j. unseal. do 2 f_equiv. by apply objective_at. Qed.
Global Instance sep_objective P Q `{!Objective P, !Objective Q} : Objective (P Q). Global Instance sep_objective P Q `{!Objective P, !Objective Q} :
Objective (P Q).
Proof. intros i j. unseal. by rewrite !(objective_at _ i j). Qed. Proof. intros i j. unseal. by rewrite !(objective_at _ i j). Qed.
Global Instance wand_objective P Q `{!Objective P, !Objective Q} : Objective (P - Q). Global Instance wand_objective P Q `{!Objective P, !Objective Q} :
Objective (P - Q).
Proof. Proof.
intros i j. unseal. rewrite (bi.forall_elim i) bi.pure_impl_forall. intros i j. unseal. rewrite (bi.forall_elim i) bi.pure_impl_forall.
rewrite bi.forall_elim //. apply bi.forall_intro=> k. rewrite bi.forall_elim //. apply bi.forall_intro=> k.
...@@ -681,13 +703,17 @@ Global Instance intuitionistically_objective P `{!Objective P} : Objective (□ ...@@ -681,13 +703,17 @@ Global Instance intuitionistically_objective P `{!Objective P} : Objective (□
Proof. rewrite /bi_intuitionistically. apply _. Qed. Proof. rewrite /bi_intuitionistically. apply _. Qed.
Global Instance absorbingly_objective P `{!Objective P} : Objective (<absorb> P). Global Instance absorbingly_objective P `{!Objective P} : Objective (<absorb> P).
Proof. rewrite /bi_absorbingly. apply _. Qed. Proof. rewrite /bi_absorbingly. apply _. Qed.
Global Instance persistently_if_objective P p `{!Objective P} : Objective (<pers>?p P). Global Instance persistently_if_objective P p `{!Objective P} :
Objective (<pers>?p P).
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 absorbingly_if_objective P p `{!Objective P} : Objective (<absorb>?p P). Global Instance absorbingly_if_objective P p `{!Objective P} :
Objective (<absorb>?p P).
Proof. rewrite /bi_absorbingly_if. destruct p; apply _. Qed. Proof. rewrite /bi_absorbingly_if. destruct p; apply _. Qed.
Global Instance intuitionistically_if_objective P p `{!Objective P} : Objective (?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 *)
...@@ -705,13 +731,19 @@ Qed. ...@@ -705,13 +731,19 @@ Qed.
(** Big op *) (** Big op *)
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 i : 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 i : 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.
Lemma monPred_at_big_sepL {A} i (Φ : nat A monPred) l : Lemma monPred_at_big_sepL {A} i (Φ : nat A monPred) l :
([ list] kx l, Φ k x) i [ list] kx l, Φ k x i. ([ list] kx l, Φ k x) i [ list] kx l, Φ k x i.
...@@ -755,14 +787,17 @@ Lemma monPred_objectively_big_sepM_entails ...@@ -755,14 +787,17 @@ Lemma monPred_objectively_big_sepM_entails
`{Countable K} {A} (Φ : K A monPred) (m : gmap K A) : `{Countable K} {A} (Φ : K A monPred) (m : gmap K A) :
([ map] kx m, <obj> (Φ k x)) <obj> ([ map] kx m, Φ k x). ([ map] kx m, <obj> (Φ k x)) <obj> ([ map] kx m, Φ k x).
Proof. apply (big_opM_commute monPred_objectively (R:=flip ())). Qed. Proof. apply (big_opM_commute monPred_objectively (R:=flip ())). Qed.
Lemma monPred_objectively_big_sepS_entails `{Countable A} (Φ : A monPred) (X : gset A) : Lemma monPred_objectively_big_sepS_entails `{Countable A}
(Φ : A monPred) (X : gset A) :
([ set] y X, <obj> (Φ y)) <obj> ([ set] y X, Φ y). ([ set] y X, <obj> (Φ y)) <obj> ([ set] y X, Φ y).
Proof. apply (big_opS_commute monPred_objectively (R:=flip ())). Qed. Proof. apply (big_opS_commute monPred_objectively (R:=flip ())). Qed.
Lemma monPred_objectively_big_sepMS_entails `{Countable A} (Φ : A monPred) (X : gmultiset A) : Lemma monPred_objectively_big_sepMS_entails `{Countable A}
(Φ : A monPred) (X : gmultiset A) :
([ mset] y X, <obj> (Φ y)) <obj> ([ mset] y X, Φ y). ([ mset] y X, <obj> (Φ y)) <obj> ([ mset] y X, Φ y).
Proof. apply (big_opMS_commute monPred_objectively (R:=flip ())). Qed. Proof. apply (big_opMS_commute monPred_objectively (R:=flip ())). Qed.
Lemma monPred_objectively_big_sepL `{BiIndexBottom bot} {A} (Φ : nat A monPred) l : Lemma monPred_objectively_big_sepL `{BiIndexBottom bot} {A}
(Φ : nat A monPred) l :
<obj> ([ list] kx l, Φ k x) ([ list] kx l, <obj> (Φ k x)). <obj> ([ list] kx l, Φ k x) ([ list] kx l, <obj> (Φ k x)).
Proof. apply (big_opL_commute _). Qed. Proof. apply (big_opL_commute _). Qed.
Lemma monPred_objectively_big_sepM `{BiIndexBottom bot} `{Countable K} {A} Lemma monPred_objectively_big_sepM `{BiIndexBottom bot} `{Countable K} {A}
...@@ -784,15 +819,21 @@ Proof. generalize dependent Φ. induction l=>/=; apply _. Qed. ...@@ -784,15 +819,21 @@ Proof. generalize dependent Φ. induction l=>/=; apply _. Qed.
Global Instance big_sepM_objective `{Countable K} {A} Global Instance big_sepM_objective `{Countable K} {A}
(Φ : K A monPred) (m : gmap K A) `{ k x, Objective (Φ k x)} : (Φ : K A monPred) (m : gmap K A) `{ k x, Objective (Φ k x)} :
Objective ([ map] kx m, Φ k x). Objective ([ map] kx m, Φ k x).
Proof. intros ??. rewrite !monPred_at_big_sepM. do 3 f_equiv. by apply objective_at. Qed. Proof.
intros ??. rewrite !monPred_at_big_sepM. do 3 f_equiv. by apply objective_at.
Qed.
Global Instance big_sepS_objective `{Countable A} (Φ : A monPred) Global Instance big_sepS_objective `{Countable A} (Φ : A monPred)
(X : gset A) `{ y, Objective (Φ y)} : (X : gset A) `{ y, Objective (Φ y)} :
Objective ([ set] y X, Φ y). Objective ([ set] y X, Φ y).
Proof. intros ??. rewrite !monPred_at_big_sepS. do 2 f_equiv. by apply objective_at. Qed. Proof.
intros ??. rewrite !monPred_at_big_sepS. do 2 f_equiv. by apply objective_at.
Qed.
Global Instance big_sepMS_objective `{Countable A} (Φ : A monPred) Global Instance big_sepMS_objective `{Countable A} (Φ : A monPred)
(X : gmultiset A) `{ y, Objective (Φ y)} : (X : gmultiset A) `{ y, Objective (Φ y)} :
Objective ([ mset] y X, Φ y). Objective ([ mset] y X, Φ y).
Proof. intros ??. rewrite !monPred_at_big_sepMS. do 2 f_equiv. by apply objective_at. Qed. Proof.
intros ??. rewrite !monPred_at_big_sepMS. do 2 f_equiv. by apply objective_at.
Qed.
(** BUpd *) (** BUpd *)
Local Program Definition monPred_bupd_def `{BiBUpd PROP} (P : monPred) : monPred := Local Program Definition monPred_bupd_def `{BiBUpd PROP} (P : monPred) : monPred :=
...@@ -920,7 +961,8 @@ Local Program Definition monPred_fupd_def `{BiFUpd PROP} (E1 E2 : coPset) ...@@ -920,7 +961,8 @@ Local Program Definition monPred_fupd_def `{BiFUpd PROP} (E1 E2 : coPset)
(P : monPred) : monPred := (P : monPred) : monPred :=
MonPred (λ i, |={E1,E2}=> P i)%I _. MonPred (λ i, |={E1,E2}=> P i)%I _.
Next Obligation. solve_proper. Qed. Next Obligation. solve_proper. Qed.
Local Definition monPred_fupd_aux : seal (@monPred_fupd_def). Proof. by eexists. Qed. Local Definition monPred_fupd_aux : seal (@monPred_fupd_def).
Proof. by eexists. Qed.
Definition monPred_fupd := monPred_fupd_aux.(unseal). Definition monPred_fupd := monPred_fupd_aux.(unseal).
Local Arguments monPred_fupd {_}. Local Arguments monPred_fupd {_}.
Local Lemma monPred_fupd_unseal `{BiFUpd PROP} : Local Lemma monPred_fupd_unseal `{BiFUpd PROP} :
...@@ -960,14 +1002,16 @@ Proof. intros ??. by rewrite !monPred_at_fupd objective_at. Qed. ...@@ -960,14 +1002,16 @@ Proof. intros ??. by rewrite !monPred_at_fupd objective_at. Qed.
(** Plainly *) (** Plainly *)
Local Definition monPred_plainly_def `{BiPlainly PROP} P : monPred := Local Definition monPred_plainly_def `{BiPlainly PROP} P : monPred :=
MonPred (λ _, i, (P i))%I _. MonPred (λ _, i, (P i))%I _.
Local Definition monPred_plainly_aux : seal (@monPred_plainly_def). Proof. by eexists. Qed. Local Definition monPred_plainly_aux : seal (@monPred_plainly_def).
Proof. by eexists. Qed.
Definition monPred_plainly := monPred_plainly_aux.(unseal). Definition monPred_plainly := monPred_plainly_aux.(unseal).
Local Arguments monPred_plainly {_}. Local Arguments monPred_plainly {_}.
Local Lemma monPred_plainly_unseal `{BiPlainly PROP} : Local Lemma monPred_plainly_unseal `{BiPlainly PROP} :
@plainly _ monPred_plainly = monPred_plainly_def. @plainly _ monPred_plainly = monPred_plainly_def.
Proof. rewrite -monPred_plainly_aux.(seal_eq) //. Qed. Proof. rewrite -monPred_plainly_aux.(seal_eq) //. Qed.
Lemma monPred_plainly_mixin `{BiPlainly PROP} : BiPlainlyMixin monPredI monPred_plainly. Lemma monPred_plainly_mixin `{BiPlainly PROP} :
BiPlainlyMixin monPredI monPred_plainly.
Proof. Proof.
split; rewrite monPred_plainly_unseal; try unseal. split; rewrite monPred_plainly_unseal; try unseal.
- by (split=> ? /=; repeat f_equiv). - by (split=> ? /=; repeat f_equiv).
...@@ -1029,7 +1073,8 @@ Proof. ...@@ -1029,7 +1073,8 @@ Proof.
- by rewrite (bi.forall_elim inhabitant). - by rewrite (bi.forall_elim inhabitant).
Qed. Qed.
Global Instance monPred_bi_bupd_plainly `{BiBUpdPlainly PROP} : BiBUpdPlainly monPredI. Global Instance monPred_bi_bupd_plainly `{BiBUpdPlainly PROP} :
BiBUpdPlainly monPredI.
Proof. Proof.
intros P. split=> /= i. intros P. split=> /= i.
rewrite monPred_at_bupd monPred_plainly_unseal /= bi.forall_elim. rewrite monPred_at_bupd monPred_plainly_unseal /= bi.forall_elim.
...@@ -1044,7 +1089,8 @@ Proof. by rewrite monPred_plainly_unseal. Qed. ...@@ -1044,7 +1089,8 @@ Proof. by rewrite monPred_plainly_unseal. Qed.
Global Instance monPred_at_plain `{BiPlainly PROP} P i : Plain P Plain (P i). Global Instance monPred_at_plain `{BiPlainly PROP} P i : Plain P Plain (P i).
Proof. move => [] /(_ i). rewrite /Plain monPred_at_plainly bi.forall_elim //. Qed. Proof. move => [] /(_ i). rewrite /Plain monPred_at_plainly bi.forall_elim //. Qed.
Global Instance monPred_bi_fupd_plainly `{BiFUpdPlainly PROP} : BiFUpdPlainly monPredI. Global Instance monPred_bi_fupd_plainly `{BiFUpdPlainly PROP} :
BiFUpdPlainly monPredI.
Proof. Proof.
split; rewrite !monPred_fupd_unseal; try unseal. split; rewrite !monPred_fupd_unseal; try unseal.
- intros E P. split=>/= i. - intros E P. split=>/= i.
...@@ -1065,8 +1111,10 @@ Global Instance plainly_if_objective `{BiPlainly PROP} P p `{!Objective P} : ...@@ -1065,8 +1111,10 @@ Global Instance plainly_if_objective `{BiPlainly PROP} P p `{!Objective P} :
Objective (?p P). Objective (?p P).
Proof. rewrite /plainly_if. destruct p; apply _. Qed. Proof. rewrite /plainly_if. destruct p; apply _. Qed.
Global Instance monPred_objectively_plain `{BiPlainly PROP} P : Plain P Plain (<obj> P). Global Instance monPred_objectively_plain `{BiPlainly PROP} P :
Plain P Plain (<obj> P).
Proof. rewrite monPred_objectively_unfold. apply _. Qed. Proof. rewrite monPred_objectively_unfold. apply _. Qed.
Global Instance monPred_subjectively_plain `{BiPlainly PROP} P : Plain P Plain (<subj> P). Global Instance monPred_subjectively_plain `{BiPlainly PROP} P :
Plain P Plain (<subj> P).
Proof. rewrite monPred_subjectively_unfold. apply _. Qed. Proof. rewrite monPred_subjectively_unfold. apply _. Qed.
End bi_facts. End bi_facts.
Supports Markdown
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