Theorem: truthLemma
Proof state before:
case intro.intro.intro.intro.intro.intro.intro.intro
Worlds : Set (Finset Formula)
X✝ : ↑Worlds
P✝ : Formula
M : KripkeModel { x // x ∈ Worlds }
i : ∀ (X : { x // x ∈ Worlds }), Saturated ↑X ∧ ⊥ ∉ ↑X ∧ ∀ (pp : Char), (·pp) ∈ ↑X → (~·pp) ∉ ↑X
ii : ∀ (X : { x // x ∈ Worlds }) (pp : Char), (·pp) ∈ ↑X ↔ M.val X pp
iii : ∀ (X Y : { x // x ∈ Worlds }) (P : Formula), M.Rel X Y → □P ∈ ↑X → P ∈ ↑Y
iv : ∀ (X : { x // x ∈ Worlds }) (P : Formula), ~(□P) ∈ ↑X → ∃ Y, M.Rel X Y ∧ ~P ∈ ↑Y
plus : Formula → ↑Worlds → Prop := fun P X => P ∈ ↑X → Evaluate (M, X) P
minus : Formula → ↑Worlds → Prop := fun P X => ~P ∈ ↑X → ¬Evaluate (M, X) P
oh : Formula → ↑Worlds → Prop := fun P X => □P ∈ ↑X → ∀ (Y : { x // x ∈ Worlds }), M.Rel X Y → P ∈ ↑Y
P Q : Formula
IH_P : ∀ (X : ↑Worlds), plus P X ∧ minus P X ∧ oh P X
IH_Q : ∀ (X : ↑Worlds), plus Q X ∧ minus Q X ∧ oh Q X
X : ↑Worlds
plus_IH_P : plus P X
minus_IH_P : minus P X
right✝² : oh P X
plus_IH_Q : plus Q X
minus_IH_Q : minus Q X
right✝¹ : oh Q X
X_saturated :
  let X := ↑X;
  ∀ (P Q : Formula), (~~P ∈ X → P ∈ X) ∧ (P⋀Q ∈ X → P ∈ X ∧ Q ∈ X) ∧ (~(P⋀Q) ∈ X → ~P ∈ X ∨ ~Q ∈ X)
left✝¹ : ⊥ ∉ ↑X
right✝ : ∀ (pp : Char), (·pp) ∈ ↑X → (~·pp) ∉ ↑X
left✝ : ~~P ∈ ↑X → P ∈ ↑X
andSplit : P⋀Q ∈ ↑X → P ∈ ↑X ∧ Q ∈ ↑X
notAndSplit : ~(P⋀Q) ∈ ↑X → ~P ∈ ↑X ∨ ~Q ∈ ↑X
⊢ plus (P⋀Q) X ∧ minus (P⋀Q) X ∧ oh (P⋀Q) X
Tactic:
repeat' constructor
Proof state after:
case intro.intro.intro.intro.intro.intro.intro.intro.left
Worlds : Set (Finset Formula)
X✝ : ↑Worlds
P✝ : Formula
M : KripkeModel { x // x ∈ Worlds }
i : ∀ (X : { x // x ∈ Worlds }), Saturated ↑X ∧ ⊥ ∉ ↑X ∧ ∀ (pp : Char), (·pp) ∈ ↑X → (~·pp) ∉ ↑X
ii : ∀ (X : { x // x ∈ Worlds }) (pp : Char), (·pp) ∈ ↑X ↔ M.val X pp
iii : ∀ (X Y : { x // x ∈ Worlds }) (P : Formula), M.Rel X Y → □P ∈ ↑X → P ∈ ↑Y
iv : ∀ (X : { x // x ∈ Worlds }) (P : Formula), ~(□P) ∈ ↑X → ∃ Y, M.Rel X Y ∧ ~P ∈ ↑Y
plus : Formula → ↑Worlds → Prop := fun P X => P ∈ ↑X → Evaluate (M, X) P
minus : Formula → ↑Worlds → Prop := fun P X => ~P ∈ ↑X → ¬Evaluate (M, X) P
oh : Formula → ↑Worlds → Prop := fun P X => □P ∈ ↑X → ∀ (Y : { x // x ∈ Worlds }), M.Rel X Y → P ∈ ↑Y
P Q : Formula
IH_P : ∀ (X : ↑Worlds), plus P X ∧ minus P X ∧ oh P X
IH_Q : ∀ (X : ↑Worlds), plus Q X ∧ minus Q X ∧ oh Q X
X : ↑Worlds
plus_IH_P : plus P X
minus_IH_P : minus P X
right✝² : oh P X
plus_IH_Q : plus Q X
minus_IH_Q : minus Q X
right✝¹ : oh Q X
X_saturated :
  let X := ↑X;
  ∀ (P Q : Formula), (~~P ∈ X → P ∈ X) ∧ (P⋀Q ∈ X → P ∈ X ∧ Q ∈ X) ∧ (~(P⋀Q) ∈ X → ~P ∈ X ∨ ~Q ∈ X)
left✝¹ : ⊥ ∉ ↑X
right✝ : ∀ (pp : Char), (·pp) ∈ ↑X → (~·pp) ∉ ↑X
left✝ : ~~P ∈ ↑X → P ∈ ↑X
andSplit : P⋀Q ∈ ↑X → P ∈ ↑X ∧ Q ∈ ↑X
notAndSplit : ~(P⋀Q) ∈ ↑X → ~P ∈ ↑X ∨ ~Q ∈ ↑X
⊢ plus (P⋀Q) X

case intro.intro.intro.intro.intro.intro.intro.intro.right.left
Worlds : Set (Finset Formula)
X✝ : ↑Worlds
P✝ : Formula
M : KripkeModel { x // x ∈ Worlds }
i : ∀ (X : { x // x ∈ Worlds }), Saturated ↑X ∧ ⊥ ∉ ↑X ∧ ∀ (pp : Char), (·pp) ∈ ↑X → (~·pp) ∉ ↑X
ii : ∀ (X : { x // x ∈ Worlds }) (pp : Char), (·pp) ∈ ↑X ↔ M.val X pp
iii : ∀ (X Y : { x // x ∈ Worlds }) (P : Formula), M.Rel X Y → □P ∈ ↑X → P ∈ ↑Y
iv : ∀ (X : { x // x ∈ Worlds }) (P : Formula), ~(□P) ∈ ↑X → ∃ Y, M.Rel X Y ∧ ~P ∈ ↑Y
plus : Formula → ↑Worlds → Prop := fun P X => P ∈ ↑X → Evaluate (M, X) P
minus : Formula → ↑Worlds → Prop := fun P X => ~P ∈ ↑X → ¬Evaluate (M, X) P
oh : Formula → ↑Worlds → Prop := fun P X => □P ∈ ↑X → ∀ (Y : { x // x ∈ Worlds }), M.Rel X Y → P ∈ ↑Y
P Q : Formula
IH_P : ∀ (X : ↑Worlds), plus P X ∧ minus P X ∧ oh P X
IH_Q : ∀ (X : ↑Worlds), plus Q X ∧ minus Q X ∧ oh Q X
X : ↑Worlds
plus_IH_P : plus P X
minus_IH_P : minus P X
right✝² : oh P X
plus_IH_Q : plus Q X
minus_IH_Q : minus Q X
right✝¹ : oh Q X
X_saturated :
  let X := ↑X;
  ∀ (P Q : Formula), (~~P ∈ X → P ∈ X) ∧ (P⋀Q ∈ X → P ∈ X ∧ Q ∈ X) ∧ (~(P⋀Q) ∈ X → ~P ∈ X ∨ ~Q ∈ X)
left✝¹ : ⊥ ∉ ↑X
right✝ : ∀ (pp : Char), (·pp) ∈ ↑X → (~·pp) ∉ ↑X
left✝ : ~~P ∈ ↑X → P ∈ ↑X
andSplit : P⋀Q ∈ ↑X → P ∈ ↑X ∧ Q ∈ ↑X
notAndSplit : ~(P⋀Q) ∈ ↑X → ~P ∈ ↑X ∨ ~Q ∈ ↑X
⊢ minus (P⋀Q) X

case intro.intro.intro.intro.intro.intro.intro.intro.right.right
Worlds : Set (Finset Formula)
X✝ : ↑Worlds
P✝ : Formula
M : KripkeModel { x // x ∈ Worlds }
i : ∀ (X : { x // x ∈ Worlds }), Saturated ↑X ∧ ⊥ ∉ ↑X ∧ ∀ (pp : Char), (·pp) ∈ ↑X → (~·pp) ∉ ↑X
ii : ∀ (X : { x // x ∈ Worlds }) (pp : Char), (·pp) ∈ ↑X ↔ M.val X pp
iii : ∀ (X Y : { x // x ∈ Worlds }) (P : Formula), M.Rel X Y → □P ∈ ↑X → P ∈ ↑Y
iv : ∀ (X : { x // x ∈ Worlds }) (P : Formula), ~(□P) ∈ ↑X → ∃ Y, M.Rel X Y ∧ ~P ∈ ↑Y
plus : Formula → ↑Worlds → Prop := fun P X => P ∈ ↑X → Evaluate (M, X) P
minus : Formula → ↑Worlds → Prop := fun P X => ~P ∈ ↑X → ¬Evaluate (M, X) P
oh : Formula → ↑Worlds → Prop := fun P X => □P ∈ ↑X → ∀ (Y : { x // x ∈ Worlds }), M.Rel X Y → P ∈ ↑Y
P Q : Formula
IH_P : ∀ (X : ↑Worlds), plus P X ∧ minus P X ∧ oh P X
IH_Q : ∀ (X : ↑Worlds), plus Q X ∧ minus Q X ∧ oh Q X
X : ↑Worlds
plus_IH_P : plus P X
minus_IH_P : minus P X
right✝² : oh P X
plus_IH_Q : plus Q X
minus_IH_Q : minus Q X
right✝¹ : oh Q X
X_saturated :
  let X := ↑X;
  ∀ (P Q : Formula), (~~P ∈ X → P ∈ X) ∧ (P⋀Q ∈ X → P ∈ X ∧ Q ∈ X) ∧ (~(P⋀Q) ∈ X → ~P ∈ X ∨ ~Q ∈ X)
left✝¹ : ⊥ ∉ ↑X
right✝ : ∀ (pp : Char), (·pp) ∈ ↑X → (~·pp) ∉ ↑X
left✝ : ~~P ∈ ↑X → P ∈ ↑X
andSplit : P⋀Q ∈ ↑X → P ∈ ↑X ∧ Q ∈ ↑X
notAndSplit : ~(P⋀Q) ∈ ↑X → ~P ∈ ↑X ∨ ~Q ∈ ↑X
⊢ oh (P⋀Q) X