Documentation

Iris.BI.DerivedLaws

Entails #

instance Iris.BI.entails_trans {PROP : Type u_1} [BI PROP] :
Equations
Equations

Logic #

theorem Iris.BI.and_elim_l' {PROP : Type u_1} [BI PROP] {P Q R : PROP} (h : P R) :
P Q R
theorem Iris.BI.and_elim_r' {PROP : Type u_1} [BI PROP] {P Q R : PROP} (h : Q R) :
P Q R
theorem Iris.BI.or_intro_l' {PROP : Type u_1} [BI PROP] {P Q R : PROP} (h : P Q) :
P Q R
theorem Iris.BI.or_intro_r' {PROP : Type u_1} [BI PROP] {P Q R : PROP} (h : P R) :
P Q R
theorem Iris.BI.and_symm {PROP : Type u_1} [BI PROP] {P Q : PROP} :
P Q Q P
theorem Iris.BI.or_symm {PROP : Type u_1} [BI PROP] {P Q : PROP} :
P Q Q P
theorem Iris.BI.imp_intro' {PROP : Type u_1} [BI PROP] {P Q R : PROP} (h : Q P R) :
theorem Iris.BI.mp {PROP : Type u_1} [BI PROP] {P Q R : PROP} (h1 : P QR) (h2 : P Q) :
P R
theorem Iris.BI.imp_elim' {PROP : Type u_1} [BI PROP] {P Q R : PROP} (h : Q PR) :
P Q R
theorem Iris.BI.imp_elim_l {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.imp_elim_r {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.false_elim {PROP : Type u_1} [BI PROP] {P : PROP} :
False P
theorem Iris.BI.true_intro {PROP : Type u_1} [BI PROP] {P : PROP} :
P True
theorem Iris.BI.and_mono {PROP : Type u_1} [BI PROP] {P P' Q Q' : PROP} (h1 : P Q) (h2 : P' Q') :
P P' Q Q'
theorem Iris.BI.and_mono_l {PROP : Type u_1} [BI PROP] {P P' Q : PROP} (h : P P') :
P Q P' Q
theorem Iris.BI.and_mono_r {PROP : Type u_1} [BI PROP] {P Q Q' : PROP} (h : Q Q') :
P Q P Q'
theorem Iris.BI.and_congr {PROP : Type u_1} [BI PROP] {P P' Q Q' : PROP} (h1 : P ⊣⊢ Q) (h2 : P' ⊣⊢ Q') :
P P' ⊣⊢ Q Q'
theorem Iris.BI.and_congr_l {PROP : Type u_1} [BI PROP] {P P' Q : PROP} (h : P ⊣⊢ P') :
P Q ⊣⊢ P' Q
theorem Iris.BI.and_congr_r {PROP : Type u_1} [BI PROP] {P Q Q' : PROP} (h : Q ⊣⊢ Q') :
P Q ⊣⊢ P Q'
theorem Iris.BI.or_mono {PROP : Type u_1} [BI PROP] {P P' Q Q' : PROP} (h1 : P Q) (h2 : P' Q') :
P P' Q Q'
theorem Iris.BI.or_mono_l {PROP : Type u_1} [BI PROP] {P P' Q : PROP} (h : P P') :
P Q P' Q
theorem Iris.BI.or_mono_r {PROP : Type u_1} [BI PROP] {P Q Q' : PROP} (h : Q Q') :
P Q P Q'
theorem Iris.BI.or_congr {PROP : Type u_1} [BI PROP] {P P' Q Q' : PROP} (h1 : P ⊣⊢ Q) (h2 : P' ⊣⊢ Q') :
P P' ⊣⊢ Q Q'
theorem Iris.BI.or_congr_l {PROP : Type u_1} [BI PROP] {P P' Q : PROP} (h : P ⊣⊢ P') :
P Q ⊣⊢ P' Q
theorem Iris.BI.or_congr_r {PROP : Type u_1} [BI PROP] {P Q Q' : PROP} (h : Q ⊣⊢ Q') :
P Q ⊣⊢ P Q'
theorem Iris.BI.imp_mono {PROP : Type u_1} [BI PROP] {P P' Q Q' : PROP} (h1 : Q P) (h2 : P' Q') :
theorem Iris.BI.imp_mono_l {PROP : Type u_1} [BI PROP] {P P' Q : PROP} (h : P' P) :
theorem Iris.BI.imp_mono_r {PROP : Type u_1} [BI PROP] {P Q Q' : PROP} (h : Q Q') :
theorem Iris.BI.imp_congr {PROP : Type u_1} [BI PROP] {P P' Q Q' : PROP} (h1 : P ⊣⊢ Q) (h2 : P' ⊣⊢ Q') :
theorem Iris.BI.imp_congr_l {PROP : Type u_1} [BI PROP] {P P' Q : PROP} (h : P ⊣⊢ P') :
theorem Iris.BI.imp_congr_r {PROP : Type u_1} [BI PROP] {P Q Q' : PROP} (h : Q ⊣⊢ Q') :
theorem Iris.BI.forall_ne {PROP : Type u_1} {α : Sort u_2} {n : Nat} [BI PROP] {Φ Ψ : αPROP} (h : ∀ (a : α), OFE.Dist n (Φ a) (Ψ a)) :
OFE.Dist n («forall» fun (a : α) => Φ a) («forall» fun (a : α) => Ψ a)
theorem Iris.BI.forall_intro {PROP : Type u_1} {α : Sort u_2} [BI PROP] {P : PROP} {Ψ : αPROP} (h : ∀ (a : α), P Ψ a) :
P «forall» fun (a : α) => Ψ a
theorem Iris.BI.forall_elim {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Ψ : αPROP} (a : α) :
(«forall» fun (a : α) => Ψ a) Ψ a
theorem Iris.BI.forall_mono {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ Ψ : αPROP} (h : ∀ (a : α), Φ a Ψ a) :
(«forall» fun (a : α) => Φ a) «forall» fun (a : α) => Ψ a
theorem Iris.BI.forall_congr {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ Ψ : αPROP} (h : ∀ (a : α), Φ a ⊣⊢ Ψ a) :
(«forall» fun (a : α) => Φ a) ⊣⊢ «forall» fun (a : α) => Ψ a
theorem Iris.BI.exists_ne {PROP : Type u_1} {α : Sort u_2} {n : Nat} [BI PROP] {Φ Ψ : αPROP} (h : ∀ (a : α), OFE.Dist n (Φ a) (Ψ a)) :
OFE.Dist n («exists» fun (a : α) => Φ a) («exists» fun (a : α) => Ψ a)
theorem Iris.BI.exists_intro {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Ψ : αPROP} (a : α) :
Ψ a «exists» fun (a : α) => Ψ a
theorem Iris.BI.exists_elim {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ : αPROP} {Q : PROP} (h : ∀ (a : α), Φ a Q) :
(«exists» fun (a : α) => Φ a) Q
theorem Iris.BI.exists_mono {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ Ψ : αPROP} (h : ∀ (a : α), Φ a Ψ a) :
(«exists» fun (a : α) => Φ a) «exists» fun (a : α) => Ψ a
theorem Iris.BI.exists_congr {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ Ψ : αPROP} (h : ∀ (a : α), Φ a ⊣⊢ Ψ a) :
(«exists» fun (a : α) => Φ a) ⊣⊢ «exists» fun (a : α) => Ψ a
theorem Iris.BI.and_self {PROP : Type u_1} [BI PROP] {P : PROP} :
P P ⊣⊢ P
theorem Iris.BI.or_self {PROP : Type u_1} [BI PROP] {P : PROP} :
P P ⊣⊢ P
theorem Iris.BI.and_comm {PROP : Type u_1} [BI PROP] {P Q : PROP} :
P Q ⊣⊢ Q P
theorem Iris.BI.or_comm {PROP : Type u_1} [BI PROP] {P Q : PROP} :
P Q ⊣⊢ Q P
theorem Iris.BI.true_and {PROP : Type u_1} [BI PROP] {P : PROP} :
True P ⊣⊢ P
theorem Iris.BI.and_true {PROP : Type u_1} [BI PROP] {P : PROP} :
P True ⊣⊢ P
theorem Iris.BI.false_and {PROP : Type u_1} [BI PROP] {P : PROP} :
False P ⊣⊢ False
theorem Iris.BI.and_false {PROP : Type u_1} [BI PROP] {P : PROP} :
P False ⊣⊢ False
theorem Iris.BI.true_or {PROP : Type u_1} [BI PROP] {P : PROP} :
True P ⊣⊢ True
theorem Iris.BI.or_true {PROP : Type u_1} [BI PROP] {P : PROP} :
P True ⊣⊢ True
theorem Iris.BI.false_or {PROP : Type u_1} [BI PROP] {P : PROP} :
False P ⊣⊢ P
theorem Iris.BI.or_false {PROP : Type u_1} [BI PROP] {P : PROP} :
P False ⊣⊢ P
theorem Iris.BI.and_assoc {PROP : Type u_1} [BI PROP] {P Q R : PROP} :
(P Q) R ⊣⊢ P Q R
theorem Iris.BI.or_assoc {PROP : Type u_1} [BI PROP] {P Q R : PROP} :
(P Q) R ⊣⊢ P Q R
theorem Iris.BI.true_imp {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.imp_self {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.imp_trans {PROP : Type u_1} [BI PROP] {P Q R : PROP} :
theorem Iris.BI.false_imp {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.and_left_comm {PROP : Type u_1} [BI PROP] {P Q R : PROP} :
P Q R ⊣⊢ Q P R
theorem Iris.BI.and_or_l {PROP : Type u_1} [BI PROP] {P Q R : PROP} :
P (Q R) ⊣⊢ P Q P R
theorem Iris.BI.and_exists_l {PROP : Type u_1} {α : Sort u_2} [BI PROP] {P : PROP} {Ψ : αPROP} :
(P «exists» fun (a : α) => Ψ a) ⊣⊢ «exists» fun (a : α) => iprop(P Ψ a)
theorem Iris.BI.or_eq_ite {PROP : Type u_1} [BI PROP] {P Q : PROP} :
P Q ⊣⊢ «exists» fun (b : Bool) => if b = true then P else Q
theorem Iris.BI.exists_intro' {PROP : Type u_1} {α : Sort u_2} [BI PROP] {P : PROP} {Ψ : αPROP} (a : α) (h : P Ψ a) :
P «exists» fun (a : α) => Ψ a

BI #

theorem Iris.BI.sep_mono_l {PROP : Type u_1} [BI PROP] {P P' Q : PROP} (h : P P') :
P Q P' Q
theorem Iris.BI.sep_mono_r {PROP : Type u_1} [BI PROP] {P Q Q' : PROP} (h : Q Q') :
P Q P Q'
theorem Iris.BI.sep_congr {PROP : Type u_1} [BI PROP] {P P' Q Q' : PROP} (h1 : P ⊣⊢ Q) (h2 : P' ⊣⊢ Q') :
P P' ⊣⊢ Q Q'
theorem Iris.BI.sep_congr_l {PROP : Type u_1} [BI PROP] {P P' Q : PROP} (h : P ⊣⊢ P') :
P Q ⊣⊢ P' Q
theorem Iris.BI.sep_congr_r {PROP : Type u_1} [BI PROP] {P Q Q' : PROP} (h : Q ⊣⊢ Q') :
P Q ⊣⊢ P Q'
theorem Iris.BI.wand_mono {PROP : Type u_1} [BI PROP] {P P' Q Q' : PROP} (h1 : Q P) (h2 : P' Q') :
(P -∗ P') Q -∗ Q'
theorem Iris.BI.wand_mono_l {PROP : Type u_1} [BI PROP] {P P' Q : PROP} (h : P' P) :
(P -∗ Q) P' -∗ Q
theorem Iris.BI.wand_mono_r {PROP : Type u_1} [BI PROP] {P Q Q' : PROP} (h : Q Q') :
(P -∗ Q) P -∗ Q'
theorem Iris.BI.wand_congr {PROP : Type u_1} [BI PROP] {P P' Q Q' : PROP} (h1 : P ⊣⊢ Q) (h2 : P' ⊣⊢ Q') :
(P -∗ P') ⊣⊢ (Q -∗ Q')
theorem Iris.BI.wand_congr_l {PROP : Type u_1} [BI PROP] {P P' Q : PROP} (h : P ⊣⊢ P') :
(P -∗ Q) ⊣⊢ (P' -∗ Q)
theorem Iris.BI.wand_congr_r {PROP : Type u_1} [BI PROP] {P Q Q' : PROP} (h : Q ⊣⊢ Q') :
(P -∗ Q) ⊣⊢ (P -∗ Q')
theorem Iris.BI.sep_comm {PROP : Type u_1} [BI PROP] {P Q : PROP} :
P Q ⊣⊢ Q P
theorem Iris.BI.sep_assoc {PROP : Type u_1} [BI PROP] {P Q R : PROP} :
(P Q) R ⊣⊢ P Q R
theorem Iris.BI.sep_left_comm {PROP : Type u_1} [BI PROP] {P Q R : PROP} :
P Q R ⊣⊢ Q P R
theorem Iris.BI.sep_right_comm {PROP : Type u_1} [BI PROP] {P Q R : PROP} :
(P Q) R ⊣⊢ (P R) Q
theorem Iris.BI.sep_sep_sep_comm {PROP : Type u_1} [BI PROP] {P Q R S : PROP} :
(P Q) R S ⊣⊢ (P R) Q S
theorem Iris.BI.sep_emp {PROP : Type u_1} [BI PROP] {P : PROP} :
P emp ⊣⊢ P
theorem Iris.BI.true_sep_2 {PROP : Type u_1} [BI PROP] {P : PROP} :
P True P
theorem Iris.BI.wand_intro' {PROP : Type u_1} [BI PROP] {P Q R : PROP} (h : Q P R) :
P Q -∗ R
theorem Iris.BI.wand_elim' {PROP : Type u_1} [BI PROP] {P Q R : PROP} (h : Q P -∗ R) :
P Q R
theorem Iris.BI.wand_elim_l {PROP : Type u_1} [BI PROP] {P Q : PROP} :
(P -∗ Q) P Q
theorem Iris.BI.wand_elim_r {PROP : Type u_1} [BI PROP] {P Q : PROP} :
P (P -∗ Q) Q
theorem Iris.BI.sep_or_l {PROP : Type u_1} [BI PROP] {P Q R : PROP} :
P (Q R) ⊣⊢ P Q P R
theorem Iris.BI.sep_or_r {PROP : Type u_1} [BI PROP] {P Q R : PROP} :
(P Q) R ⊣⊢ P R Q R
theorem Iris.BI.sep_exists_l {PROP : Type u_1} {α : Sort u_2} [BI PROP] {P : PROP} {Ψ : αPROP} :
(P «exists» fun (a : α) => Ψ a) ⊣⊢ «exists» fun (a : α) => iprop(P Ψ a)
theorem Iris.BI.sep_exists_r {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ : αPROP} {Q : PROP} :
(«exists» fun (a : α) => Φ a) Q ⊣⊢ «exists» fun (a : α) => iprop(Φ a Q)
theorem Iris.BI.wand_rfl {PROP : Type u_1} [BI PROP] {P : PROP} :
P -∗ P
theorem Iris.BI.wandIff_congr {PROP : Type u_1} [BI PROP] {P P' Q Q' : PROP} (h1 : P ⊣⊢ Q) (h2 : P' ⊣⊢ Q') :
(P ∗-∗ P') ⊣⊢ (Q ∗-∗ Q')
theorem Iris.BI.wandIff_congr_l {PROP : Type u_1} [BI PROP] {P P' Q : PROP} (h : P ⊣⊢ P') :
(P ∗-∗ Q) ⊣⊢ (P' ∗-∗ Q)
theorem Iris.BI.wandIff_congr_r {PROP : Type u_1} [BI PROP] {P Q Q' : PROP} (h : Q ⊣⊢ Q') :
(P ∗-∗ Q) ⊣⊢ (P ∗-∗ Q')
theorem Iris.BI.wandIff_refl {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.wand_entails {PROP : Type u_1} [BI PROP] {P Q : PROP} (h : P -∗ Q) :
P Q
theorem Iris.BI.entails_wand {PROP : Type u_1} [BI PROP] {P Q : PROP} (h : P Q) :
P -∗ Q
theorem Iris.BI.equiv_wandIff {PROP : Type u_1} [BI PROP] {P Q : PROP} (h : P ⊣⊢ Q) :
theorem Iris.BI.wandIff_equiv {PROP : Type u_1} [BI PROP] {P Q : PROP} (h : P ∗-∗ Q) :
P ⊣⊢ Q

Pure #

theorem Iris.BI.pure_elim {PROP : Type u_1} [BI PROP] (φ : Prop) {Q R : PROP} (h1 : Q φ) (h2 : φQ R) :
Q R
theorem Iris.BI.pure_mono {PROP : Type u_1} [BI PROP] {φ1 φ2 : Prop} (h : φ1φ2) :
theorem Iris.BI.pure_congr {PROP : Type u_1} [BI PROP] {φ1 φ2 : Prop} (h : φ1 φ2) :
theorem Iris.BI.pure_elim_l {PROP : Type u_1} [BI PROP] {φ : Prop} {Q R : PROP} (h : φQ R) :
φ Q R
theorem Iris.BI.pure_elim_r {PROP : Type u_1} [BI PROP] {φ : Prop} {Q R : PROP} (h : φQ R) :
Q φ R
theorem Iris.BI.pure_true {PROP : Type u_1} [BI PROP] {φ : Prop} (h : φ) :
φ ⊣⊢ True
theorem Iris.BI.pure_and {PROP : Type u_1} [BI PROP] {φ1 φ2 : Prop} :
theorem Iris.BI.pure_or {PROP : Type u_1} [BI PROP] {φ1 φ2 : Prop} :
theorem Iris.BI.pure_imp_2 {PROP : Type u_1} [BI PROP] {φ1 φ2 : Prop} :
φ1φ2 φ1φ2
theorem Iris.BI.pure_imp {PROP : Type u_1} [BI PROP] {φ1 φ2 : Prop} :
(φ1φ2) ⊣⊢ φ1φ2
theorem Iris.BI.pure_forall_2 {PROP : Type u_1} {α : Sort u_2} [BI PROP] {φ : αProp} :
∀ (x : α), φ x «forall» fun (x : α) => iprop(φ x)
theorem Iris.BI.pure_forall {PROP : Type u_1} {α : Sort u_2} [BI PROP] {φ : αProp} :
(«forall» fun (x : α) => iprop(φ x)) ⊣⊢ ∀ (x : α), φ x
theorem Iris.BI.pure_exists {PROP : Type u_1} {α : Sort u_2} [BI PROP] {φ : αProp} :
(«exists» fun (x : α) => iprop(φ x)) ⊣⊢ (x : α), φ x

Affine #

theorem Iris.BI.affinely_congr {PROP : Type u_1} [BI PROP] {P P' : PROP} (h : P ⊣⊢ P') :
theorem Iris.BI.affinely_elim_emp {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.affinely_elim {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.affinely_mono {PROP : Type u_1} [BI PROP] {P Q : PROP} :
(P Q) → <affine> P <affine> Q
theorem Iris.BI.affinely_idem {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.affinely_intro' {PROP : Type u_1} [BI PROP] {P Q : PROP} (h : P <affine> Q) :
theorem Iris.BI.affinely_false {PROP : Type u_1} [BI PROP] :
<affine> False ⊣⊢ False
theorem Iris.BI.affinely_emp {PROP : Type u_1} [BI PROP] :
theorem Iris.BI.affinely_or {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.affinely_and {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.affinely_sep_2 {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.affinely_sep_r {PROP : Type u_1} [BI PROP] [BIPositive PROP] {P Q : PROP} :
theorem Iris.BI.affinely_sep {PROP : Type u_1} [BI PROP] [BIPositive PROP] {P Q : PROP} :
theorem Iris.BI.affinely_forall_1 {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ : αPROP} :
(<affine> «forall» fun (a : α) => Φ a) «forall» fun (a : α) => iprop(<affine> Φ a)
theorem Iris.BI.affinely_exists {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ : αPROP} :
(<affine> «exists» fun (a : α) => Φ a) ⊣⊢ «exists» fun (a : α) => iprop(<affine> Φ a)
theorem Iris.BI.affinely_true {PROP : Type u_1} [BI PROP] :
<affine> True ⊣⊢ emp
theorem Iris.BI.affinely_and_l {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.affinely_and_r {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.affinely_and_lr {PROP : Type u_1} [BI PROP] {P Q : PROP} :

Affine instances #

instance Iris.BI.emp_affine {PROP : Type u_1} [BI PROP] :
theorem Iris.BI.affine_mono {PROP : Type u_1} [BI PROP] {P Q : PROP} (h : P Q) [Affine Q] :
instance Iris.BI.false_affine {PROP : Type u_1} [BI PROP] :
instance Iris.BI.and_affine_l {PROP : Type u_1} [BI PROP] (P Q : PROP) [Affine P] :
instance Iris.BI.and_affine_r {PROP : Type u_1} [BI PROP] (P Q : PROP) [Affine Q] :
instance Iris.BI.or_affine {PROP : Type u_1} [BI PROP] (P Q : PROP) [Affine P] [Affine Q] :
instance Iris.BI.forall_affine {α : Sort u_1} {PROP : Type u_2} [Inhabited α] [BI PROP] (Φ : αPROP) [∀ (x : α), Affine (Φ x)] :
Affine («forall» fun (x : α) => Φ x)
instance Iris.BI.exists_affine {PROP : Type u_1} {α : Sort u_2} [BI PROP] (Φ : αPROP) [∀ (x : α), Affine (Φ x)] :
Affine («exists» fun (x : α) => Φ x)
instance Iris.BI.sep_affine {PROP : Type u_1} [BI PROP] (P Q : PROP) [Affine P] [Affine Q] :
instance Iris.BI.affinely_affine {PROP : Type u_1} [BI PROP] (P : PROP) :

Absorbing #

theorem Iris.BI.absorbingly_congr {PROP : Type u_1} [BI PROP] {P P' : PROP} (h : P ⊣⊢ P') :
theorem Iris.BI.absorbingly_intro {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.absorbingly_mono {PROP : Type u_1} [BI PROP] {P Q : PROP} :
(P Q) → <absorb> P <absorb> Q
theorem Iris.BI.absorbingly_idem {PROP : Type u_1} [BI PROP] {P : PROP} :
instance Iris.BI.absorbingly_absorbing {PROP : Type u_1} [BI PROP] (P : PROP) :
theorem Iris.BI.absorbingly_pure {PROP : Type u_1} {φ : Prop} [BI PROP] :
instance Iris.BI.pureAbsorbing {PROP : Type u_1} (φ : Prop) [BI PROP] :
theorem Iris.BI.absorbingly_true {PROP : Type u_1} [BI PROP] :
<absorb> True ⊣⊢ True
theorem Iris.BI.absorbingly_or {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.absorbingly_and_1 {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.absorbingly_forall_1 {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ : αPROP} :
(<absorb> «forall» fun (a : α) => Φ a) «forall» fun (a : α) => iprop(<absorb> Φ a)
theorem Iris.BI.absorbingly_exists {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ : αPROP} :
(<absorb> «exists» fun (a : α) => Φ a) ⊣⊢ «exists» fun (a : α) => iprop(<absorb> Φ a)
theorem Iris.BI.absorbingly_sep {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.absorbingly_emp {PROP : Type u_1} [BI PROP] :
<absorb> emp ⊣⊢ True
theorem Iris.BI.absorbingly_wand_1 {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.absorbingly_sep_l {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.absorbingly_sep_r {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.absorbingly_sep_lr {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.affinely_absorbingly {PROP : Type u_1} [BI PROP] [BIPositive PROP] {P : PROP} :

Absorbing instances #

instance Iris.BI.pure_absorbing {PROP : Type u_1} [BI PROP] (φ : Prop) :
instance Iris.BI.and_absorbing {PROP : Type u_1} [BI PROP] (P Q : PROP) [Absorbing P] [Absorbing Q] :
instance Iris.BI.or_absorbing {PROP : Type u_1} [BI PROP] (P Q : PROP) [Absorbing P] [Absorbing Q] :
instance Iris.BI.forall_absorbing {PROP : Type u_1} {α : Sort u_2} [BI PROP] (Φ : αPROP) [∀ (x : α), Absorbing (Φ x)] :
Absorbing («forall» fun (x : α) => Φ x)
instance Iris.BI.exists_absorbing {PROP : Type u_1} {α : Sort u_2} [BI PROP] (Φ : αPROP) [∀ (x : α), Absorbing (Φ x)] :
Absorbing («exists» fun (x : α) => Φ x)
instance Iris.BI.sep_absorbing_l {PROP : Type u_1} [BI PROP] (P Q : PROP) [Absorbing P] :
instance Iris.BI.sep_absorbing_r {PROP : Type u_1} [BI PROP] (P Q : PROP) [Absorbing Q] :
@[instance 1010]
instance Iris.BI.biaffine_absorbing {PROP : Type u_1} [BI PROP] [BIAffine PROP] (P : PROP) :

Affine / Absorbing Propositions #

theorem Iris.BI.affine_affinely {PROP : Type u_1} [BI PROP] (P : PROP) [Affine P] :
theorem Iris.BI.biaffine_iff_true_emp {PROP : Type u_1} [BI PROP] :
BIAffine PROP True emp
theorem Iris.BI.biaffine_of_true_affine {PROP : Type u_1} [BI PROP] [Affine iprop(True)] :
theorem Iris.BI.absorbing_absorbingly {PROP : Type u_1} [BI PROP] {P : PROP} [Absorbing P] :
theorem Iris.BI.absorbing_of_emp_absorbing {PROP : Type u_1} [BI PROP] [Absorbing iprop(emp)] (P : PROP) :
theorem Iris.BI.sep_elim_l {PROP : Type u_1} [BI PROP] {P Q : PROP} [Std.TCOr (Affine Q) (Absorbing P)] :
P Q P
theorem Iris.BI.sep_elim_r {PROP : Type u_1} [BI PROP] {P Q : PROP} [Std.TCOr (Affine P) (Absorbing Q)] :
P Q Q
instance Iris.BI.wand_absorbing_l {PROP : Type u_1} [BI PROP] (P Q : PROP) [Absorbing P] :
instance Iris.BI.wand_absorbing_r {PROP : Type u_1} [BI PROP] (P Q : PROP) [Absorbing Q] :
theorem Iris.BI.sep_and {PROP : Type u_1} [BI PROP] {P Q : PROP} [Std.TCOr (Affine P) (Absorbing Q)] [Std.TCOr (Affine Q) (Absorbing P)] :
P Q P Q
theorem Iris.BI.affinely_intro {PROP : Type u_1} [BI PROP] {P Q : PROP} [Affine P] (h : P Q) :
theorem Iris.BI.emp_and {PROP : Type u_1} [BI PROP] {P : PROP} [Affine P] :
emp P ⊣⊢ P
theorem Iris.BI.and_emp {PROP : Type u_1} [BI PROP] {P : PROP} [Affine P] :
P emp ⊣⊢ P
theorem Iris.BI.emp_or {PROP : Type u_1} [BI PROP] {P : PROP} [Affine P] :
emp P ⊣⊢ emp
theorem Iris.BI.or_emp {PROP : Type u_1} [BI PROP] {P : PROP} [Affine P] :
P emp ⊣⊢ emp
theorem Iris.BI.true_emp {PROP : Type u_1} [BI PROP] [h : BIAffine PROP] :
True ⊣⊢ emp
instance Iris.BI.instAbsorbingOfBIAffine {PROP : Type u_1} [BI PROP] [BIAffine PROP] (P : PROP) :
theorem Iris.BI.true_sep {PROP : Type u_1} [BI PROP] {P : PROP} [Absorbing P] :
True P ⊣⊢ P
theorem Iris.BI.sep_true {PROP : Type u_1} [BI PROP] {P : PROP} [Absorbing P] :
P True ⊣⊢ P
instance Iris.BI.instBIPositiveOfBIAffine {PROP : Type u_1} [BI PROP] [BIAffine PROP] :
theorem Iris.BI.imp_wand_1 {PROP : Type u_1} [BI PROP] [BIAffine PROP] {P Q : PROP} :
theorem Iris.BI.pure_sep {PROP : Type u_1} [BI PROP] {φ1 φ2 : Prop} :
theorem Iris.BI.pure_wand_2 {PROP : Type u_1} [BI PROP] {φ1 φ2 : Prop} :
φ1φ2 φ1 -∗ φ2
theorem Iris.BI.pure_wand {PROP : Type u_1} [BI PROP] {φ1 φ2 : Prop} :
(φ1 -∗ φ2) ⊣⊢ φ1φ2

Properties of the persistence modality #

theorem Iris.BI.persistently_congr {PROP : Type u_1} [BI PROP] {P P' : PROP} (h : P ⊣⊢ P') :
instance Iris.BI.persistently_persistent {PROP : Type u_1} [BI PROP] (P : PROP) :
theorem Iris.BI.persistently_absorb_r {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.absorbingly_persistently {PROP : Type u_1} [BI PROP] {P : PROP} :
instance Iris.BI.persistently_absorbing {PROP : Type u_1} [BI PROP] (P : PROP) :
theorem Iris.BI.persistently_forall_1 {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Ψ : αPROP} :
(<pers> «forall» fun (a : α) => Ψ a) «forall» fun (a : α) => iprop(<pers> Ψ a)
theorem Iris.BI.persistently_forall {PROP : Type u_1} {α : Sort u_2} [BI PROP] [h : BIPersistentlyForall PROP] {Ψ : αPROP} :
(<pers> «forall» fun (a : α) => Ψ a) ⊣⊢ «forall» fun (a : α) => iprop(<pers> Ψ a)
theorem Iris.BI.persistently_exists {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Ψ : αPROP} :
(<pers> «exists» fun (a : α) => Ψ a) ⊣⊢ «exists» fun (a : α) => iprop(<pers> Ψ a)
theorem Iris.BI.persistently_and {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.persistently_ite {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.persistently_or {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.persistently_imp_1 {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.persistently_emp_intro {PROP : Type u_1} [BI PROP] {P : PROP} :
P <pers> emp
theorem Iris.BI.persistently_emp {PROP : Type u_1} [BI PROP] :
<pers> emp ⊣⊢ True
theorem Iris.BI.persistently_true {PROP : Type u_1} [BI PROP] :
<pers> True ⊣⊢ True
theorem Iris.BI.persistently_affinely {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.persistently_and_affinely_sep {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.persistently_and_sep_assoc {PROP : Type u_1} [BI PROP] {P Q R : PROP} :
<pers> P Q R ⊣⊢ (<pers> P Q) R
theorem Iris.BI.intuitionistically_elim {PROP : Type u_1} [BI PROP] {P : PROP} :
P P
theorem Iris.BI.absorbingly_of_persistently {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.persistently_elim {PROP : Type u_1} [BI PROP] {P : PROP} [Absorbing P] :
theorem Iris.BI.persistently_idem {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.persistently_intro' {PROP : Type u_1} [BI PROP] {P Q : PROP} (h : <pers> P Q) :
theorem Iris.BI.persistently_pure {PROP : Type u_1} {φ : Prop} [BI PROP] :
theorem Iris.BI.persistently_and_imp_sep {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.and_persistently_imp_sep {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.persistently_sep_persistently {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.persistently_and_sep {PROP : Type u_1} [BI PROP] {P Q : PROP} :
<pers> (P Q) <pers> (P Q)
theorem Iris.BI.persistently_sep_2 {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.persistently_sep {PROP : Type u_1} [BI PROP] [BIPositive PROP] {P Q : PROP} :
theorem Iris.BI.self_sep_persistently {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.affinely_sep_persistently {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.persistently_wand_1 {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.persistently_entails_l {PROP : Type u_1} [BI PROP] {P Q : PROP} (h : P <pers> Q) :
P <pers> Q P
theorem Iris.BI.persistently_entails_r {PROP : Type u_1} [BI PROP] {P Q : PROP} (h : P <pers> Q) :
P P <pers> Q
theorem Iris.BI.persistently_imp_wand_2 {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.imp_wand_persistently_2 {PROP : Type u_1} [BI PROP] {P Q : PROP} :
(<pers> P -∗ Q) <pers> PQ
theorem Iris.BI.persistently_emp' {PROP : Type u_1} [BI PROP] [BIAffine PROP] :
<pers> emp ⊣⊢ emp
theorem Iris.BI.persistently_and_iff_sep {PROP : Type u_1} [BI PROP] [BIAffine PROP] {P Q : PROP} :
theorem Iris.BI.and_persistently_iff_sep {PROP : Type u_1} [BI PROP] [BIAffine PROP] {P Q : PROP} :
theorem Iris.BI.persistently_imp_wand {PROP : Type u_1} [BI PROP] [BIAffine PROP] {P Q : PROP} :
theorem Iris.BI.imp_wand_persistently {PROP : Type u_1} [BI PROP] [BIAffine PROP] {P Q : PROP} :
(<pers> PQ) ⊣⊢ (<pers> P -∗ Q)
theorem Iris.BI.wand_iff_exists_persistently {PROP : Type u_1} [BI PROP] [BIAffine PROP] {P Q : PROP} :
(P -∗ Q) ⊣⊢ «exists» fun (R : PROP) => iprop(R <pers> (P RQ))
theorem Iris.BI.persistently_and_emp {PROP : Type u_1} {P : PROP} [BI PROP] :
theorem Iris.BI.persistently_and_sep_elim_emp {PROP : Type u_1} {P Q : PROP} [BI PROP] :
<pers> P Q (emp P) Q
theorem Iris.BI.persistently_and_emp_elim {PROP : Type u_1} {P : PROP} [BI PROP] :
emp <pers> P P

Persistence instances #

instance Iris.BI.pure_persistent {PROP : Type u_1} (φ : Prop) [BI PROP] :
instance Iris.BI.emp_persistent {PROP : Type u_1} [BI PROP] :
instance Iris.BI.and_persistent {PROP : Type u_1} [BI PROP] (P Q : PROP) [Persistent P] [Persistent Q] :
instance Iris.BI.or_persistent {PROP : Type u_1} [BI PROP] (P Q : PROP) [Persistent P] [Persistent Q] :
theorem Iris.BI.sForall_persistent {PROP : Type u_1} [BI PROP] [h : BIPersistentlyForall PROP] (Ψ : PROPProp) (H : ∀ (p : PROP), Ψ pPersistent p) :
instance Iris.BI.forall_persistent {PROP : Type u_1} {α : Sort u_2} [BI PROP] [BIPersistentlyForall PROP] (Ψ : αPROP) [h : ∀ (x : α), Persistent (Ψ x)] :
Persistent («forall» fun (x : α) => Ψ x)
theorem Iris.BI.sExists_persistent {PROP : Type u_1} [BI PROP] (Ψ : PROPProp) (H : ∀ (p : PROP), Ψ pPersistent p) :
instance Iris.BI.exists_persistent {PROP : Type u_1} {α : Sort u_2} [BI PROP] (Ψ : αPROP) [h : ∀ (x : α), Persistent (Ψ x)] :
Persistent («exists» fun (x : α) => Ψ x)
instance Iris.BI.sep_persistent {PROP : Type u_1} [BI PROP] (P Q : PROP) [Persistent P] [Persistent Q] :
instance Iris.BI.affinely_persistent {PROP : Type u_1} [BI PROP] (P : PROP) [Persistent P] :
instance Iris.BI.absorbingly_persistent {PROP : Type u_1} [BI PROP] (P : PROP) [Persistent P] :

The intuitionistic modality #

theorem Iris.BI.intuitionistically_congr {PROP : Type u_1} [BI PROP] {P Q : PROP} (h : P ⊣⊢ Q) :
theorem Iris.BI.intuitionistically_mono {PROP : Type u_1} [BI PROP] {P Q : PROP} (h : P Q) :
P Q
instance Iris.BI.intuitionistically_affine {PROP : Type u_1} [BI PROP] (P : PROP) :
instance Iris.BI.intuitionistically_persistent {PROP : Type u_1} [BI PROP] (P : PROP) :
theorem Iris.BI.intuitionistically_def {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.intuitionistically_elim_emp {PROP : Type u_1} [BI PROP] {P : PROP} :
P emp
theorem Iris.BI.intuitionistically_emp {PROP : Type u_1} [BI PROP] :
emp ⊣⊢ emp
theorem Iris.BI.intuitionistically_false {PROP : Type u_1} [BI PROP] :
False ⊣⊢ False
theorem Iris.BI.intuitionistically_true {PROP : Type u_1} [BI PROP] :
True ⊣⊢ emp
theorem Iris.BI.intuitionistically_and {PROP : Type u_1} [BI PROP] {P Q : PROP} :
(P Q) ⊣⊢ P Q
theorem Iris.BI.intuitionistically_forall_1 {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ : αPROP} :
( «forall» fun (x : α) => Φ x) «forall» fun (x : α) => iprop( Φ x)
theorem Iris.BI.intuitionistically_or {PROP : Type u_1} [BI PROP] {P Q : PROP} :
(P Q) ⊣⊢ P Q
theorem Iris.BI.intuitionistically_exists {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ : αPROP} :
( «exists» fun (x : α) => Φ x) ⊣⊢ «exists» fun (x : α) => iprop( Φ x)
theorem Iris.BI.intuitionistically_sep_2 {PROP : Type u_1} [BI PROP] {P Q : PROP} :
P Q (P Q)
theorem Iris.BI.intuitionistically_sep {PROP : Type u_1} [BI PROP] [BIPositive PROP] {P Q : PROP} :
(P Q) ⊣⊢ P Q
theorem Iris.BI.intuitionistically_idem {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.intuitionistically_intro' {PROP : Type u_1} [BI PROP] {P Q : PROP} (h : P Q) :
P Q
theorem Iris.BI.persistently_of_intuitionistically {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.intuitionistically_persistently {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.intuitionistically_of_intuitionistic {PROP : Type u_1} [BI PROP] {P : PROP} [Affine P] [Persistent P] :
theorem Iris.BI.affinely_of_intuitionistically {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.intuitionistically_affinely {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.persistently_and_intuitionistically_sep_l {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.persistently_and_intuitionistically_sep_r {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.and_sep_intuitionistically {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.intuitionistically_and_sep {PROP : Type u_1} [BI PROP] {P Q : PROP} :
(P Q) ⊣⊢ P Q
theorem Iris.BI.intuitionistically_sep_idem {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.intuitionistically_wand {PROP : Type u_1} [BI PROP] {P Q : PROP} :
( P -∗ Q) ⊣⊢ (<pers> PQ)
theorem Iris.BI.affinely_self_sep_intuitionistically {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.intuitionistically_imp_wand_2 {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.imp_iff_exists_persistently {PROP : Type u_1} [BI PROP] [BIAffine PROP] {P Q : PROP} :
(PQ) ⊣⊢ «exists» fun (R : PROP) => iprop(R <pers> (P R -∗ Q))
theorem Iris.BI.intuitionistically_iff_persistently {PROP : Type u_1} [BI PROP] [BIAffine PROP] {P : PROP} :

Conditional affinely modality #

@[simp]
theorem Iris.BI.affinelyIf_false {PROP : Type u_1} [BI PROP] (P : PROP) :
@[simp]
theorem Iris.BI.affinelyIf_true {PROP : Type u_1} [BI PROP] (P : PROP) :
theorem Iris.BI.affinelyIf_ne {PROP : Type u_1} {p : Bool} [BI PROP] :
theorem Iris.BI.affinelyIf_mono {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} (h : P Q) :
theorem Iris.BI.affinelyIf_congr {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} (h : P ⊣⊢ Q) :
instance Iris.BI.affinelyIf_affine {PROP : Type u_1} (p : Bool) [BI PROP] (P : PROP) [Affine P] :
instance Iris.BI.affinelyIf_persistent {PROP : Type u_1} (p : Bool) [BI PROP] (P : PROP) [Persistent P] :
theorem Iris.BI.affinelyIf_flag_mono {PROP : Type u_1} {p q : Bool} [BI PROP] {P : PROP} (h : q = truep = true) :
theorem Iris.BI.affinelyIf_elim {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :
theorem Iris.BI.affinely_affinelyIf {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :
theorem Iris.BI.affinelyIf_intro' {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.affinelyIf_emp {PROP : Type u_1} {p : Bool} [BI PROP] :
<affine>?p emp ⊣⊢ emp
theorem Iris.BI.affinelyIf_and {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.affinelyIf_or {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.affinelyIf_exists {PROP : Type u_1} {α : Sort u_2} {p : Bool} [BI PROP] {Ψ : αPROP} :
(<affine>?p «exists» fun (a : α) => Ψ a) ⊣⊢ «exists» fun (a : α) => iprop(<affine>?p Ψ a)
theorem Iris.BI.affinelyIf_forall_1 {PROP : Type u_1} {α : Sort u_2} {p : Bool} [BI PROP] {Ψ : αPROP} :
(<affine>?p «forall» fun (a : α) => Ψ a) «forall» fun (a : α) => iprop(<affine>?p Ψ a)
theorem Iris.BI.affinelyIf_sep_2 {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.affinelyIf_sep {PROP : Type u_1} {p : Bool} [BI PROP] [BIPositive PROP] {P Q : PROP} :
theorem Iris.BI.affinelyIf_idem {PROP : Type u_1} {p : Bool} [BI PROP] [BIPositive PROP] {P : PROP} :
theorem Iris.BI.affinelyIf_and_l {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.affinelyIf_and_r {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.affinelyIf_and_lr {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :

Conditional absorbingly modality #

@[simp]
theorem Iris.BI.absorbinglyIf_false {PROP : Type u_1} [BI PROP] (P : PROP) :
@[simp]
theorem Iris.BI.absorbinglyIf_true {PROP : Type u_1} [BI PROP] (P : PROP) :
theorem Iris.BI.absorbinglyIf_mono {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} (h : P Q) :
theorem Iris.BI.absorbinglyIf_congr {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} (h : P ⊣⊢ Q) :
instance Iris.BI.absorbinglyIf_persistent {PROP : Type u_1} (p : Bool) [BI PROP] (P : PROP) [Persistent P] :
theorem Iris.BI.absorbingly_of_absorbinglyIf {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :
theorem Iris.BI.absorbinglyIf_intro {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :
theorem Iris.BI.absorbinglyIf_flag_mono {PROP : Type u_1} {p q : Bool} [BI PROP] {P : PROP} (h : p = trueq = true) :
theorem Iris.BI.absorbinglyIf_idem {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :
theorem Iris.BI.absorbinglyIf_pure {PROP : Type u_1} {p : Bool} [BI PROP] {φ : Prop} :
theorem Iris.BI.absorbinglyIf_or {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.absorbinglyIf_and_1 {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.absorbinglyIf_forall_1 {PROP : Type u_1} {α : Sort u_2} {p : Bool} [BI PROP] {Φ : αPROP} :
(<absorb>?p «forall» fun (a : α) => Φ a) «forall» fun (a : α) => iprop(<absorb>?p Φ a)
theorem Iris.BI.absorbinglyIf_exists {PROP : Type u_1} {α : Sort u_2} {p : Bool} [BI PROP] {Φ : αPROP} :
(<absorb>?p «exists» fun (a : α) => Φ a) ⊣⊢ «exists» fun (a : α) => iprop(<absorb>?p Φ a)
theorem Iris.BI.absorbinglyIf_sep {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.absorbinglyIf_wand_1 {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.absorbinglyIf_sep_l {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.absorbinglyIf_sep_r {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.absorbinglyIf_sep_lr {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.affinelyIf_absorbinglyIf {PROP : Type u_1} {p : Bool} [BI PROP] [BIPositive PROP] {P : PROP} :

Conditional persistently #

@[simp]
theorem Iris.BI.persistentlyIf_false {PROP : Type u_1} [BI PROP] (P : PROP) :
@[simp]
theorem Iris.BI.persistentlyIf_true {PROP : Type u_1} [BI PROP] (P : PROP) :
theorem Iris.BI.persistentlyIf_mono {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} (h : P Q) :
theorem Iris.BI.persistentlyIf_congr {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} (h : P ⊣⊢ Q) :
instance Iris.BI.persistentlyIf_absorbing {PROP : Type u_1} [BI PROP] (P : PROP) (p : Bool) [Absorbing P] :
theorem Iris.BI.persistentlyIf_pure {PROP : Type u_1} {p : Bool} [BI PROP] {φ : Prop} :
theorem Iris.BI.persistentlyIf_and {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.persistentlyIf_or {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.persistentlyIf_forall_1 {PROP : Type u_1} {α : Sort u_2} {p : Bool} [BI PROP] {Φ : αPROP} :
(<pers>?p «forall» fun (a : α) => Φ a) «forall» fun (a : α) => iprop(<pers>?p Φ a)
theorem Iris.BI.persistentlyIf_exists {PROP : Type u_1} {α : Sort u_2} {p : Bool} [BI PROP] {Φ : αPROP} :
(<pers>?p «exists» fun (a : α) => Φ a) ⊣⊢ «exists» fun (a : α) => iprop(<pers>?p Φ a)
theorem Iris.BI.persistentlyIf_sep_2 {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
theorem Iris.BI.persistentlyIf_sep {PROP : Type u_1} {p : Bool} [BI PROP] [BIPositive PROP] {P Q : PROP} :
theorem Iris.BI.persistentlyIf_idem {PROP : Type u_1} {p : Bool} [BI PROP] [BIPositive PROP] {P : PROP} :
theorem Iris.BI.persistentlyIf_persistently {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :
theorem Iris.BI.persistentlyIf_intutitionistically {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :

Conditional intuitionistically #

@[simp]
theorem Iris.BI.intuitionisticallyIf_false' {PROP : Type u_1} [BI PROP] (P : PROP) :
@[simp]
theorem Iris.BI.intuitionisticallyIf_true {PROP : Type u_1} [BI PROP] (P : PROP) :
theorem Iris.BI.intuitionisticallyIf_mono {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} (h : P Q) :
□?p P □?p Q
theorem Iris.BI.intuitionisticallyIf_congr {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} (h : P ⊣⊢ Q) :
instance Iris.BI.intuitionisticallyIf_affine {PROP : Type u_1} (p : Bool) [BI PROP] (P : PROP) [Affine P] :
theorem Iris.BI.intuitionisticallyIf_flag_mono {PROP : Type u_1} {p q : Bool} [BI PROP] {P : PROP} (h : q = truep = true) :
□?p P □?q P
theorem Iris.BI.intuitionisticallyIf_elim {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :
□?p P P
theorem Iris.BI.intuitionisticallyIf_of_intuitionistically {PROP : Type u_1} (p : Bool) [BI PROP] {P : PROP} :
P □?p P
theorem Iris.BI.intuitionisticallyIf_intro' {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
(□?p P Q) → □?p P □?p Q
theorem Iris.BI.intuitionisticallyIf_emp {PROP : Type u_1} {p : Bool} [BI PROP] :
□?p emp ⊣⊢ emp
theorem Iris.BI.intuitionisticallyIf_false {PROP : Type u_1} {p : Bool} [BI PROP] :
□?p False ⊣⊢ False
theorem Iris.BI.intuitionisticallyIf_and {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
□?p (P Q) ⊣⊢ □?p P □?p Q
theorem Iris.BI.intuitionisticallyIf_or {PROP : Type u_1} (p : Bool) [BI PROP] {P Q : PROP} :
□?p (P Q) ⊣⊢ □?p P □?p Q
theorem Iris.BI.intuitionisticallyIf_exists {PROP : Type u_1} {α : Sort u_2} {p : Bool} [BI PROP] {Ψ : αPROP} :
(□?p «exists» fun (a : α) => Ψ a) ⊣⊢ «exists» fun (a : α) => iprop(□?p Ψ a)
theorem Iris.BI.intuitionisticallyIf_sep_2 {PROP : Type u_1} {p : Bool} [BI PROP] {P Q : PROP} :
□?p P □?p Q □?p (P Q)
theorem Iris.BI.intuitionisticallyIf_sep {PROP : Type u_1} {p : Bool} [BI PROP] [BIPositive PROP] {P Q : PROP} :
□?p (P Q) ⊣⊢ □?p P □?p Q
theorem Iris.BI.intuitionisticallyIf_idem {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :
theorem Iris.BI.intuitionisticallyIf_def' {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :
theorem Iris.BI.intuitionisticallyIf_comm {PROP : Type u_1} {p q : Bool} [BI PROP] {P : PROP} :
theorem Iris.BI.intuitionisticallyIf_comm' {PROP : Type u_1} {p q : Bool} [BI PROP] {P : PROP} :
theorem Iris.BI.intuitionisticallyIf_affinely {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :
theorem Iris.BI.intuitionisticallyIf_intutitionistically {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :
theorem Iris.BI.affinelyIf_of_intuitionisticallyIf {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :

Properties of persistent propositions #

theorem Iris.BI.persistent_congr {PROP : Type u_1} [BI PROP] {P Q : PROP} (H : P ⊣⊢ Q) :
theorem Iris.BI.persistently_intro {PROP : Type u_1} [BI PROP] {P : PROP} [Persistent P] :
theorem Iris.BI.persistently_iff {PROP : Type u_1} [BI PROP] {P : PROP} [Persistent P] [Absorbing P] :
theorem Iris.BI.persistently_intro'' {PROP : Type u_1} {Q : PROP} [BI PROP] {P : PROP} [Persistent P] (h : P Q) :
theorem Iris.BI.persistent_and_affinely_sep_l_1 {PROP : Type u_1} [BI PROP] {P Q : PROP} [Persistent P] :
theorem Iris.BI.persistent_and_affinely_sep_r_1 {PROP : Type u_1} [BI PROP] {P Q : PROP} [Persistent Q] :
theorem Iris.BI.persistent_and_affinely_sep_l {PROP : Type u_1} [BI PROP] {P Q : PROP} [Persistent P] [Absorbing P] :
theorem Iris.BI.persistent_and_affinely_sep_r {PROP : Type u_1} [BI PROP] {P Q : PROP} [Persistent Q] [Absorbing Q] :
theorem Iris.BI.persistent_and_sep_1 {PROP : Type u_1} [BI PROP] {P Q : PROP} [Std.TCOr (Persistent P) (Persistent Q)] :
P Q P Q
theorem Iris.BI.absorbingly_intuitionistically {PROP : Type u_1} [BI PROP] {P : PROP} :
instance Iris.BI.imp_absorbing {PROP : Type u_1} [BI PROP] (P Q : PROP) [Persistent P] [Absorbing P] [Absorbing Q] :
theorem Iris.BI.bigOp_sep_nil {PROP : Type u_1} [BI PROP] :
theorem Iris.BI.bigOp_and_nil {PROP : Type u_1} [BI PROP] :
theorem Iris.BI.bigOp_sep_cons {PROP : Type u_1} [BI PROP] {P : PROP} {Ps : List PROP} :
[∗] (P :: Ps) ⊣⊢ P [∗] Ps
theorem Iris.BI.bigOp_and_cons {PROP : Type u_1} [BI PROP] {P : PROP} {Ps : List PROP} :
[∧] (P :: Ps) ⊣⊢ P [∧] Ps

Reduction to boolean comparisons #

theorem Iris.BI.and_forall_bool {PROP : Type u_1} [BI PROP] {P Q : PROP} :
P Q ⊣⊢ «forall» fun (b : Bool) => if b = true then P else Q
theorem Iris.BI.or_exists_bool {PROP : Type u_1} [BI PROP] {P Q : PROP} :
P Q ⊣⊢ «exists» fun (b : Bool) => if b = true then P else Q

Later #

theorem Iris.BI.later_congr {PROP : Type u_1} [BI PROP] {P Q : PROP} (h : P ⊣⊢ Q) :
theorem Iris.BI.later_true {PROP : Type u_1} [BI PROP] :
theorem Iris.BI.later_emp {PROP : Type u_1} [BI PROP] [BIAffine PROP] :
theorem Iris.BI.later_forall_2 {PROP : Type u_1} [BI PROP] {α : Sort u_2} {Φ : αPROP} :
(«forall» fun (a : α) => later (Φ a)) later («forall» fun (a : α) => Φ a)
theorem Iris.BI.later_forall {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ : αPROP} :
later («forall» fun (a : α) => Φ a) ⊣⊢ «forall» fun (a : α) => later (Φ a)
theorem Iris.BI.later_exists_2 {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ : αPROP} :
(«exists» fun (a : α) => later (Φ a)) later («exists» fun (a : α) => Φ a)
theorem Iris.BI.later_exists_false {PROP : Type u_1} {α : Sort u_2} [BI PROP] {Φ : αPROP} :
later («exists» fun (a : α) => Φ a) later iprop(False) «exists» fun (a : α) => later (Φ a)
theorem Iris.BI.later_exists {PROP : Type u_1} {α : Sort u_2} [BI PROP] [Inhabited α] {Φ : αPROP} :
(«exists» fun (a : α) => later (Φ a)) ⊣⊢ later («exists» fun (a : α) => Φ a)
theorem Iris.BI.later_and {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.later_or {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.later_impl {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.later_wand {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.later_iff {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.later_wand_iff {PROP : Type u_1} [BI PROP] {P Q : PROP} :
theorem Iris.BI.later_affinely_2 {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.later_intuitionistically_2 {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.later_intuitionisticallyIf_2 {PROP : Type u_1} {p : Bool} [BI PROP] {P : PROP} :
theorem Iris.BI.later_absorbingly {PROP : Type u_1} [BI PROP] {P : PROP} :
theorem Iris.BI.later_affinely {PROP : Type u_1} [BI PROP] [BIAffine PROP] {P : PROP} :
theorem Iris.BI.later_intuitionistically {PROP : Type u_1} [BI PROP] [BIAffine PROP] {P : PROP} :
theorem Iris.BI.later_intuitionisticallyIf {PROP : Type u_1} {p : Bool} [BI PROP] [BIAffine PROP] {P : PROP} :
instance Iris.BI.later_persistent {PROP : Type u_1} [BI PROP] {P : PROP} [Persistent P] :
instance Iris.BI.later_absorbing {PROP : Type u_1} [BI PROP] {P : PROP} [Absorbing P] :
theorem Iris.BI.entails_impl_true {PROP : Type u_1} [BI PROP] {P Q : PROP} :
P Q True PQ
theorem Iris.BI.loeb {PROP : Type u_1} [BI PROP] [BILoeb PROP] {P : PROP} :
(later PP) P
theorem Iris.BI.loeb_weak_of_strong {PROP : Type u_1} [BI PROP] {P : PROP} (H : ∀ (P : PROP), (later PP) P) (H' : later P P) :
True P
theorem Iris.BI.loeb_wand_intuitionistically {PROP : Type u_1} [BI PROP] [BILoeb PROP] {P : PROP} :
( later P -∗ P) P
theorem Iris.BI.loeb_wand {PROP : Type u_1} [BI PROP] [BILoeb PROP] {P : PROP} :
(later P -∗ P) P