internlm/Lean-Github huggingface dataset:
Theorem: truthLemma
Proof state before:
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
notPandQ_in_X : ~(P⋀Q) ∈ ↑X
⊢ ¬Evaluate (M, X) (P⋀Q)
Tactic:
unfold Evaluate
Proof state after:
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
notPandQ_in_X : ~(P⋀Q) ∈ ↑X
⊢ ¬(Evaluate (M, X) P ∧ Evaluate (M, X) Q)
Theorem: truthLemma
Proof state before:
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
notPandQ_in_X : ~(P⋀Q) ∈ ↑X
⊢ ¬(Evaluate (M, X) P ∧ Evaluate (M, X) Q)
Tactic:
rw [not_and_or]
Proof state after:
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
notPandQ_in_X : ~(P⋀Q) ∈ ↑X
⊢ ¬Evaluate (M, X) P ∨ ¬Evaluate (M, X) Q
Theorem: truthLemma
Proof state before:
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
notPandQ_in_X : ~(P⋀Q) ∈ ↑X
⊢ ¬Evaluate (M, X) P ∨ ¬Evaluate (M, X) Q
Tactic:
specialize notAndSplit notPandQ_in_X
Proof state after:
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
notPandQ_in_X : ~(P⋀Q) ∈ ↑X
notAndSplit : ~P ∈ ↑X ∨ ~Q ∈ ↑X
⊢ ¬Evaluate (M, X) P ∨ ¬Evaluate (M, X) Q
Theorem: truthLemma
Proof state before:
case intro.intro.intro.intro.intro.intro.intro.intro.right.left.inl
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
notPandQ_in_X : ~(P⋀Q) ∈ ↑X
notP_in_X : ~P ∈ ↑X
⊢ ¬Evaluate (M, X) P ∨ ¬Evaluate (M, X) Q
Tactic:
left
Proof state after:
case intro.intro.intro.intro.intro.intro.intro.intro.right.left.inl.h
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
notPandQ_in_X : ~(P⋀Q) ∈ ↑X
notP_in_X : ~P ∈ ↑X
⊢ ¬Evaluate (M, X) P
Theorem: truthLemma
Proof state before:
case intro.intro.intro.intro.intro.intro.intro.intro.right.left.inl.h
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
notPandQ_in_X : ~(P⋀Q) ∈ ↑X
notP_in_X : ~P ∈ ↑X
⊢ ¬Evaluate (M, X) P
Tactic:
exact minus_IH_P notP_in_X
Proof state after:
no goals
Theorem: truthLemma
Proof state before:
case intro.intro.intro.intro.intro.intro.intro.intro.right.left.inr
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
notPandQ_in_X : ~(P⋀Q) ∈ ↑X
notQ_in_X : ~Q ∈ ↑X
⊢ ¬Evaluate (M, X) P ∨ ¬Evaluate (M, X) Q
Tactic:
right
Proof state after:
case intro.intro.intro.intro.intro.intro.intro.intro.right.left.inr.h
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
notPandQ_in_X : ~(P⋀Q) ∈ ↑X
notQ_in_X : ~Q ∈ ↑X
⊢ ¬Evaluate (M, X) Q
Theorem: truthLemma
Proof state before:
case intro.intro.intro.intro.intro.intro.intro.intro.right.left.inr.h
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
notPandQ_in_X : ~(P⋀Q) ∈ ↑X
notQ_in_X : ~Q ∈ ↑X
⊢ ¬Evaluate (M, X) Q
Tactic:
exact minus_IH_Q notQ_in_X
Proof state after:
no goals
Theorem: truthLemma
Proof state before:
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
Tactic:
intro PandQ_in_X Y X_rel_Y
Proof state after:
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
PandQ_in_X : □(P⋀Q) ∈ ↑X
Y : { x // x ∈ Worlds }
X_rel_Y : M.Rel X Y
⊢ P⋀Q ∈ ↑Y
Theorem: truthLemma
Proof state before:
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
PandQ_in_X : □(P⋀Q) ∈ ↑X
Y : { x // x ∈ Worlds }
X_rel_Y : M.Rel X Y
⊢ P⋀Q ∈ ↑Y
Tactic:
exact iii X Y (P⋀Q) X_rel_Y PandQ_in_X
Proof state after:
no goals
Theorem: truthLemma
Proof state before:
case 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 : Formula
IH : ∀ (X : ↑Worlds), plus P X ∧ minus P X ∧ oh P X
X : ↑Worlds
⊢ minus (□P) X ∧ oh (□P) X
Tactic:
constructor
Proof state after:
case 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 : Formula
IH : ∀ (X : ↑Worlds), plus P X ∧ minus P X ∧ oh P X
X : ↑Worlds
⊢ minus (□P) X

case 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 : Formula
IH : ∀ (X : ↑Worlds), plus P X ∧ minus P X ∧ oh P X
X : ↑Worlds
⊢ oh (□P) X