Theorem: LO.FirstOrder.Semiterm.val_emb (Logic/FirstOrder/Basic/Semantics/Semantics.lean)

State before:
n n₁ n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
e : Fin n → M
e₁ : Fin n₁ → M
e₂ : Fin n₂ → M
ε : μ → M
ε₁ : μ₁ → M
ε₂ : μ₂ → M
o : Type v'
i : IsEmpty o
t : Semiterm L o n
⊢ val s e ε (Rew.emb t) = val s e (fun a => i.elim a) t
Tactic:
simp [val_rew]
State after:
n n₁ n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
e : Fin n → M
e₁ : Fin n₁ → M
e₂ : Fin n₂ → M
ε : μ → M
ε₁ : μ₁ → M
ε₂ : μ₂ → M
o : Type v'
i : IsEmpty o
t : Semiterm L o n
⊢ val s (val s e ε ∘ ⇑Rew.emb ∘ bvar) (val s e ε ∘ ⇑Rew.emb ∘ fvar) t = val s e (fun a => i.elim a) t

State before:
n n₁ n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
e : Fin n → M
e₁ : Fin n₁ → M
e₂ : Fin n₂ → M
ε : μ → M
ε₁ : μ₁ → M
ε₂ : μ₂ → M
o : Type v'
i : IsEmpty o
t : Semiterm L o n
⊢ val s (val s e ε ∘ ⇑Rew.emb ∘ bvar) (val s e ε ∘ ⇑Rew.emb ∘ fvar) t = val s e (fun a => i.elim a) t
Tactic:
congr
State after:
case e_ε
n n₁ n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
e : Fin n → M
e₁ : Fin n₁ → M
e₂ : Fin n₂ → M
ε : μ → M
ε₁ : μ₁ → M
ε₂ : μ₂ → M
o : Type v'
i : IsEmpty o
t : Semiterm L o n
⊢ val s e ε ∘ ⇑Rew.emb ∘ fvar = fun a => i.elim a

State before:
case e_ε
n n₁ n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
e : Fin n → M
e₁ : Fin n₁ → M
e₂ : Fin n₂ → M
ε : μ → M
ε₁ : μ₁ → M
ε₂ : μ₂ → M
o : Type v'
i : IsEmpty o
t : Semiterm L o n
⊢ val s e ε ∘ ⇑Rew.emb ∘ fvar = fun a => i.elim a
Tactic:
{ funext x; exact i.elim' x }
State after:
no goals

State before:
case e_ε
n n₁ n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
e : Fin n → M
e₁ : Fin n₁ → M
e₂ : Fin n₂ → M
ε : μ → M
ε₁ : μ₁ → M
ε₂ : μ₂ → M
o : Type v'
i : IsEmpty o
t : Semiterm L o n
⊢ val s e ε ∘ ⇑Rew.emb ∘ fvar = fun a => i.elim a
Tactic:
funext x
State after:
case e_ε.h
n n₁ n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
e : Fin n → M
e₁ : Fin n₁ → M
e₂ : Fin n₂ → M
ε : μ → M
ε₁ : μ₁ → M
ε₂ : μ₂ → M
o : Type v'
i : IsEmpty o
t : Semiterm L o n
x : o
⊢ (val s e ε ∘ ⇑Rew.emb ∘ fvar) x = i.elim x

State before:
case e_ε.h
n n₁ n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
e : Fin n → M
e₁ : Fin n₁ → M
e₂ : Fin n₂ → M
ε : μ → M
ε₁ : μ₁ → M
ε₂ : μ₂ → M
o : Type v'
i : IsEmpty o
t : Semiterm L o n
x : o
⊢ (val s e ε ∘ ⇑Rew.emb ∘ fvar) x = i.elim x
Tactic:
exact i.elim' x
State after:
no goals