Theorem: FirstOrder.Language.Theory.IsComplete.models_not_iff
File: Mathlib/ModelTheory/Satisfiability.lean

tactic: cases' h.2 φ with hφ hφn
state_before: L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
⊢ T ⊨ᵇ Formula.not φ ↔ ¬T ⊨ᵇ φ
state_after: case inl
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφ : T ⊨ᵇ φ
⊢ T ⊨ᵇ Formula.not φ ↔ ¬T ⊨ᵇ φ

case inr
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφn : T ⊨ᵇ Formula.not φ
⊢ T ⊨ᵇ Formula.not φ ↔ ¬T ⊨ᵇ φ

tactic: simp only [hφ, not_true, iff_false_iff]
state_before: case inl
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφ : T ⊨ᵇ φ
⊢ T ⊨ᵇ Formula.not φ ↔ ¬T ⊨ᵇ φ
state_after: case inl
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφ : T ⊨ᵇ φ
⊢ ¬T ⊨ᵇ Formula.not φ

tactic: rw [models_sentence_iff, not_forall]
state_before: case inl
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφ : T ⊨ᵇ φ
⊢ ¬T ⊨ᵇ Formula.not φ
state_after: case inl
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφ : T ⊨ᵇ φ
⊢ ∃ x, ¬↑x ⊨ Formula.not φ

tactic: refine ⟨h.1.some, ?_⟩
state_before: case inl
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφ : T ⊨ᵇ φ
⊢ ∃ x, ¬↑x ⊨ Formula.not φ
state_after: case inl
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφ : T ⊨ᵇ φ
⊢ ¬↑(Nonempty.some ⋯) ⊨ Formula.not φ

tactic: simp only [Sentence.realize_not, Classical.not_not]
state_before: case inl
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφ : T ⊨ᵇ φ
⊢ ¬↑(Nonempty.some ⋯) ⊨ Formula.not φ
state_after: case inl
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφ : T ⊨ᵇ φ
⊢ ↑(Nonempty.some ⋯) ⊨ φ

tactic: exact models_sentence_iff.1 hφ _
state_before: case inl
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφ : T ⊨ᵇ φ
⊢ ↑(Nonempty.some ⋯) ⊨ φ
state_after: no goals

tactic: simp only [hφn, true_iff_iff]
state_before: case inr
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφn : T ⊨ᵇ Formula.not φ
⊢ T ⊨ᵇ Formula.not φ ↔ ¬T ⊨ᵇ φ
state_after: case inr
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφn : T ⊨ᵇ Formula.not φ
⊢ ¬T ⊨ᵇ φ

tactic: intro hφ
state_before: case inr
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφn : T ⊨ᵇ Formula.not φ
⊢ ¬T ⊨ᵇ φ
state_after: case inr
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφn : T ⊨ᵇ Formula.not φ
hφ : T ⊨ᵇ φ
⊢ False

tactic: rw [models_sentence_iff] at *
state_before: case inr
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφn : T ⊨ᵇ Formula.not φ
hφ : T ⊨ᵇ φ
⊢ False
state_after: case inr
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφn : ∀ (M : T.ModelType), ↑M ⊨ Formula.not φ
hφ : ∀ (M : T.ModelType), ↑M ⊨ φ
⊢ False

tactic: exact hφn h.1.some (hφ _)
state_before: case inr
L : Language
T : L.Theory
α : Type w
n : ℕ
h : T.IsComplete
φ : L.Sentence
hφn : ∀ (M : T.ModelType), ↑M ⊨ Formula.not φ
hφ : ∀ (M : T.ModelType), ↑M ⊨ φ
⊢ False
state_after: no goals