Skip to content
Snippets Groups Projects
Commit 02d1789b authored by Jacques-Henri Jourdan's avatar Jacques-Henri Jourdan
Browse files

Add lemmas about relatively and absolutely.

parent 6c0eb97a
No related branches found
No related tags found
No related merge requests found
...@@ -587,12 +587,23 @@ Proof. ...@@ -587,12 +587,23 @@ Proof.
unseal. split=>i /=. by apply bi.forall_intro=>_. unseal. split=>i /=. by apply bi.forall_intro=>_.
Qed. Qed.
Lemma monPred_absolutely_forall {A} (Φ : A monPred) : ( x, Φ x) ⊣⊢ x, (Φ x).
Proof.
unseal. split=>i. apply bi.equiv_spec; split=>/=;
do 2 apply bi.forall_intro=>?; by do 2 rewrite bi.forall_elim.
Qed.
Lemma monPred_absolutely_and P Q : (P Q) ⊣⊢ P Q. Lemma monPred_absolutely_and P Q : (P Q) ⊣⊢ P Q.
Proof. Proof.
unseal. split=>i. apply bi.equiv_spec; split=>/=. unseal. split=>i. apply bi.equiv_spec; split=>/=.
- apply bi.and_intro; do 2 f_equiv. apply bi.and_elim_l. apply bi.and_elim_r. - apply bi.and_intro; do 2 f_equiv. apply bi.and_elim_l. apply bi.and_elim_r.
- apply bi.forall_intro=>?. by rewrite !bi.forall_elim. - apply bi.forall_intro=>?. by rewrite !bi.forall_elim.
Qed. Qed.
Lemma monPred_absolutely_exist {A} (Φ : A monPred) :
( x, (Φ x)) ( x, (Φ x)).
Proof. apply bi.exist_elim=>?. f_equiv. apply bi.exist_intro. Qed.
Lemma monPred_absolutely_or P Q : ( P) ( Q) (P Q).
Proof. apply bi.or_elim; f_equiv. apply bi.or_intro_l. apply bi.or_intro_r. Qed.
Lemma monPred_absolutely_sep_2 P Q : P Q (P Q). Lemma monPred_absolutely_sep_2 P Q : P Q (P Q).
Proof. unseal. split=>i /=. apply bi.forall_intro=>?. by rewrite !bi.forall_elim. Qed. Proof. unseal. split=>i /=. apply bi.forall_intro=>?. by rewrite !bi.forall_elim. Qed.
Lemma monPred_absolutely_sep `{BiIndexBottom bot} P Q : (P Q) ⊣⊢ P Q. Lemma monPred_absolutely_sep `{BiIndexBottom bot} P Q : (P Q) ⊣⊢ P Q.
...@@ -608,6 +619,27 @@ Qed. ...@@ -608,6 +619,27 @@ Qed.
Lemma monPred_relatively_intro P : P P. Lemma monPred_relatively_intro P : P P.
Proof. unseal. split=>?. apply bi.exist_intro. Qed. Proof. unseal. split=>?. apply bi.exist_intro. Qed.
Lemma monPred_relatively_forall {A} (Φ : A monPred) :
( ( x, Φ x)) x, (Φ x).
Proof. apply bi.forall_intro=>?. f_equiv. apply bi.forall_elim. Qed.
Lemma monPred_relatively_and P Q : (P Q) ( P) ( Q).
Proof. apply bi.and_intro; f_equiv. apply bi.and_elim_l. apply bi.and_elim_r. Qed.
Lemma monPred_relatively_exist {A} (Φ : A monPred) : ( x, Φ x) ⊣⊢ x, (Φ x).
Proof.
unseal. split=>i. apply bi.equiv_spec; split=>/=;
do 2 apply bi.exist_elim=>?; by do 2 rewrite -bi.exist_intro.
Qed.
Lemma monPred_relatively_or P Q : (P Q) ⊣⊢ P Q.
Proof.
unseal. split=>i. apply bi.equiv_spec; split=>/=.
- apply bi.exist_elim=>?. by rewrite -!bi.exist_intro.
- apply bi.or_elim; do 2 f_equiv. apply bi.or_intro_l. apply bi.or_intro_r.
Qed.
Lemma monPred_relatively_sep P Q : (P Q) P Q.
Proof. unseal. split=>i /=. apply bi.exist_elim=>?. by rewrite -!bi.exist_intro. Qed.
Lemma monPred_relatively_idemp P : ( P) ⊣⊢ P. Lemma monPred_relatively_idemp P : ( P) ⊣⊢ P.
Proof. Proof.
apply bi.equiv_spec; split; [|by apply monPred_relatively_intro]. apply bi.equiv_spec; split; [|by apply monPred_relatively_intro].
......
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