Theorem: LO.FirstOrder.Semiformula.eval_empty (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
o : Type u_1
h : IsEmpty o
p : Formula L o
⊢ (Eval s e ε) (Rew.empty.hom p) ↔ (Eval s ![] fun a => h.elim a) p
Tactic:
simp [eval_rew, Function.comp, Matrix.empty_eq]
State after:
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
o : Type u_1
h : IsEmpty o
p : Formula L o
⊢ (Eval s ![] fun x => Semiterm.val s e ε (Rew.empty &x)) p ↔ (Eval s ![] fun a => h.elim a) p

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
o : Type u_1
h : IsEmpty o
p : Formula L o
⊢ (Eval s ![] fun x => Semiterm.val s e ε (Rew.empty &x)) p ↔ (Eval s ![] fun a => h.elim a) p
Tactic:
apply iff_of_eq
State after:
case a
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
o : Type u_1
h : IsEmpty o
p : Formula L o
⊢ (Eval s ![] fun x => Semiterm.val s e ε (Rew.empty &x)) p = (Eval s ![] fun a => h.elim a) p

State before:
case a
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
o : Type u_1
h : IsEmpty o
p : Formula L o
⊢ (Eval s ![] fun x => Semiterm.val s e ε (Rew.empty &x)) p = (Eval s ![] fun a => h.elim a) p
Tactic:
congr
State after:
case a.e_a.e_ε
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
o : Type u_1
h : IsEmpty o
p : Formula L o
⊢ (fun x => Semiterm.val s e ε (Rew.empty &x)) = fun a => h.elim a

State before:
case a.e_a.e_ε
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
o : Type u_1
h : IsEmpty o
p : Formula L o
⊢ (fun x => Semiterm.val s e ε (Rew.empty &x)) = fun a => h.elim a
Tactic:
funext x
State after:
case a.e_a.e_ε.h
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
o : Type u_1
h : IsEmpty o
p : Formula L o
x : o
⊢ Semiterm.val s e ε (Rew.empty &x) = h.elim x

State before:
case a.e_a.e_ε.h
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
o : Type u_1
h : IsEmpty o
p : Formula L o
x : o
⊢ Semiterm.val s e ε (Rew.empty &x) = h.elim x
Tactic:
exact h.elim' x
State after:
no goals