Theorem: LO.FirstOrder.Semiformula.eval_exClosure (Logic/FirstOrder/Basic/Semantics/Semantics.lean)

State before:
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε : μ → M
ε₂ : μ₂ → M
n' : ℕ
e' : Fin 0 → M
p : Semiformula L μ n'
⊢ (Eval s e' ε) (∃* p) ↔ ∃ e, (Eval s e ε) p
Tactic:
induction' n' with n' ih generalizing e' <;> simp [*, eq_finZeroElim, exClosure_succ]
State after:
case succ
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε : μ → M
ε₂ : μ₂ → M
n' : ℕ
ih : ∀ {e' : Fin 0 → M} {p : Semiformula L μ n'}, (Eval s e' ε) (∃* p) ↔ ∃ e, (Eval s e ε) p
e' : Fin 0 → M
p : Semiformula L μ (n' + 1)
⊢ (∃ e x, (Eval s (x :> e) ε) p) ↔ ∃ e, (Eval s e ε) p

State before:
case succ
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε : μ → M
ε₂ : μ₂ → M
n' : ℕ
ih : ∀ {e' : Fin 0 → M} {p : Semiformula L μ n'}, (Eval s e' ε) (∃* p) ↔ ∃ e, (Eval s e ε) p
e' : Fin 0 → M
p : Semiformula L μ (n' + 1)
⊢ (∃ e x, (Eval s (x :> e) ε) p) ↔ ∃ e, (Eval s e ε) p
Tactic:
constructor
State after:
case succ.mp
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε : μ → M
ε₂ : μ₂ → M
n' : ℕ
ih : ∀ {e' : Fin 0 → M} {p : Semiformula L μ n'}, (Eval s e' ε) (∃* p) ↔ ∃ e, (Eval s e ε) p
e' : Fin 0 → M
p : Semiformula L μ (n' + 1)
⊢ (∃ e x, (Eval s (x :> e) ε) p) → ∃ e, (Eval s e ε) p

case succ.mpr
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε : μ → M
ε₂ : μ₂ → M
n' : ℕ
ih : ∀ {e' : Fin 0 → M} {p : Semiformula L μ n'}, (Eval s e' ε) (∃* p) ↔ ∃ e, (Eval s e ε) p
e' : Fin 0 → M
p : Semiformula L μ (n' + 1)
⊢ (∃ e, (Eval s e ε) p) → ∃ e x, (Eval s (x :> e) ε) p

State before:
case succ.mp
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε : μ → M
ε₂ : μ₂ → M
n' : ℕ
ih : ∀ {e' : Fin 0 → M} {p : Semiformula L μ n'}, (Eval s e' ε) (∃* p) ↔ ∃ e, (Eval s e ε) p
e' : Fin 0 → M
p : Semiformula L μ (n' + 1)
⊢ (∃ e x, (Eval s (x :> e) ε) p) → ∃ e, (Eval s e ε) p
Tactic:
rintro ⟨e, x, h⟩
State after:
case succ.mp.intro.intro
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e✝ : Fin n → M
e₂ : Fin n₂ → M
ε : μ → M
ε₂ : μ₂ → M
n' : ℕ
ih : ∀ {e' : Fin 0 → M} {p : Semiformula L μ n'}, (Eval s e' ε) (∃* p) ↔ ∃ e, (Eval s e ε) p
e' : Fin 0 → M
p : Semiformula L μ (n' + 1)
e : Fin n' → M
x : M
h : (Eval s (x :> e) ε) p
⊢ ∃ e, (Eval s e ε) p

State before:
case succ.mp.intro.intro
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e✝ : Fin n → M
e₂ : Fin n₂ → M
ε : μ → M
ε₂ : μ₂ → M
n' : ℕ
ih : ∀ {e' : Fin 0 → M} {p : Semiformula L μ n'}, (Eval s e' ε) (∃* p) ↔ ∃ e, (Eval s e ε) p
e' : Fin 0 → M
p : Semiformula L μ (n' + 1)
e : Fin n' → M
x : M
h : (Eval s (x :> e) ε) p
⊢ ∃ e, (Eval s e ε) p
Tactic:
exact ⟨x :> e, h⟩
State after:
no goals

State before:
case succ.mpr
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε : μ → M
ε₂ : μ₂ → M
n' : ℕ
ih : ∀ {e' : Fin 0 → M} {p : Semiformula L μ n'}, (Eval s e' ε) (∃* p) ↔ ∃ e, (Eval s e ε) p
e' : Fin 0 → M
p : Semiformula L μ (n' + 1)
⊢ (∃ e, (Eval s e ε) p) → ∃ e x, (Eval s (x :> e) ε) p
Tactic:
rintro ⟨e, h⟩
State after:
case succ.mpr.intro
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e✝ : Fin n → M
e₂ : Fin n₂ → M
ε : μ → M
ε₂ : μ₂ → M
n' : ℕ
ih : ∀ {e' : Fin 0 → M} {p : Semiformula L μ n'}, (Eval s e' ε) (∃* p) ↔ ∃ e, (Eval s e ε) p
e' : Fin 0 → M
p : Semiformula L μ (n' + 1)
e : Fin (n' + 1) → M
h : (Eval s e ε) p
⊢ ∃ e x, (Eval s (x :> e) ε) p

State before:
case succ.mpr.intro
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e✝ : Fin n → M
e₂ : Fin n₂ → M
ε : μ → M
ε₂ : μ₂ → M
n' : ℕ
ih : ∀ {e' : Fin 0 → M} {p : Semiformula L μ n'}, (Eval s e' ε) (∃* p) ↔ ∃ e, (Eval s e ε) p
e' : Fin 0 → M
p : Semiformula L μ (n' + 1)
e : Fin (n' + 1) → M
h : (Eval s e ε) p
⊢ ∃ e x, (Eval s (x :> e) ε) p
Tactic:
exact ⟨Matrix.vecTail e, Matrix.vecHead e, by simpa using h⟩
State after:
no goals

State before:
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e✝ : Fin n → M
e₂ : Fin n₂ → M
ε : μ → M
ε₂ : μ₂ → M
n' : ℕ
ih : ∀ {e' : Fin 0 → M} {p : Semiformula L μ n'}, (Eval s e' ε) (∃* p) ↔ ∃ e, (Eval s e ε) p
e' : Fin 0 → M
p : Semiformula L μ (n' + 1)
e : Fin (n' + 1) → M
h : (Eval s e ε) p
⊢ (Eval s (Matrix.vecHead e :> Matrix.vecTail e) ε) p
Tactic:
simpa using h
State after:
no goals