Theorem: LO.FirstOrder.Semiterm.lMap_fix (Logic/FirstOrder/Basic/Syntax/Rew.lean)

State before:
L : Language
L' : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ' : Type u_2
ξ₁ : Type u_3
ξ₂ : Type u_4
ξ₃ : Type u_5
n n₁ n₂ n₃ : ℕ
Φ : L₁ →ᵥ L₂
t : SyntacticSemiterm L₁ n
⊢ lMap Φ (fix t) = fix (lMap Φ t)
Tactic:
simp[fix, lMap_bind]
State after:
L : Language
L' : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ' : Type u_2
ξ₁ : Type u_3
ξ₂ : Type u_4
ξ₃ : Type u_5
n n₁ n₂ n₃ : ℕ
Φ : L₁ →ᵥ L₂
t : SyntacticSemiterm L₁ n
⊢ (Rew.bind (lMap Φ ∘ fun x => #x.castSucc) (lMap Φ ∘ (#(Fin.last n) :>ₙ fvar))) (lMap Φ t) =
    (Rew.bind (fun x => #x.castSucc) (#(Fin.last n) :>ₙ fvar)) (lMap Φ t)

State before:
L : Language
L' : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ' : Type u_2
ξ₁ : Type u_3
ξ₂ : Type u_4
ξ₃ : Type u_5
n n₁ n₂ n₃ : ℕ
Φ : L₁ →ᵥ L₂
t : SyntacticSemiterm L₁ n
⊢ (Rew.bind (lMap Φ ∘ fun x => #x.castSucc) (lMap Φ ∘ (#(Fin.last n) :>ₙ fvar))) (lMap Φ t) =
    (Rew.bind (fun x => #x.castSucc) (#(Fin.last n) :>ₙ fvar)) (lMap Φ t)
Tactic:
congr
State after:
case e_a.e_e
L : Language
L' : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ' : Type u_2
ξ₁ : Type u_3
ξ₂ : Type u_4
ξ₃ : Type u_5
n n₁ n₂ n₃ : ℕ
Φ : L₁ →ᵥ L₂
t : SyntacticSemiterm L₁ n
⊢ lMap Φ ∘ (#(Fin.last n) :>ₙ fvar) = #(Fin.last n) :>ₙ fvar

State before:
case e_a.e_e
L : Language
L' : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ' : Type u_2
ξ₁ : Type u_3
ξ₂ : Type u_4
ξ₃ : Type u_5
n n₁ n₂ n₃ : ℕ
Φ : L₁ →ᵥ L₂
t : SyntacticSemiterm L₁ n
⊢ lMap Φ ∘ (#(Fin.last n) :>ₙ fvar) = #(Fin.last n) :>ₙ fvar
Tactic:
funext x
State after:
case e_a.e_e.h
L : Language
L' : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ' : Type u_2
ξ₁ : Type u_3
ξ₂ : Type u_4
ξ₃ : Type u_5
n n₁ n₂ n₃ : ℕ
Φ : L₁ →ᵥ L₂
t : SyntacticSemiterm L₁ n
x : ℕ
⊢ (lMap Φ ∘ (#(Fin.last n) :>ₙ fvar)) x = (#(Fin.last n) :>ₙ fvar) x

State before:
case e_a.e_e.h
L : Language
L' : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_1
ξ' : Type u_2
ξ₁ : Type u_3
ξ₂ : Type u_4
ξ₃ : Type u_5
n n₁ n₂ n₃ : ℕ
Φ : L₁ →ᵥ L₂
t : SyntacticSemiterm L₁ n
x : ℕ
⊢ (lMap Φ ∘ (#(Fin.last n) :>ₙ fvar)) x = (#(Fin.last n) :>ₙ fvar) x
Tactic:
cases x <;> simp
State after:
no goals