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

State before:
L✝ : Language
ξ✝ : Type u_1
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_2
Φ : L₁ →ᵥ L₂
p : SyntacticSemiformula L₁ n
⊢ (lMap Φ) ((Rew.hom Rew.fix) p) = (Rew.hom Rew.fix) ((lMap Φ) p)
Tactic:
simp[Rew.fix, lMap_bind, Function.comp]
State after:
L✝ : Language
ξ✝ : Type u_1
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_2
Φ : L₁ →ᵥ L₂
p : SyntacticSemiformula L₁ n
⊢ (Rew.bind (fun x => #x.castSucc) fun x => Semiterm.lMap Φ ((#(Fin.last n) :>ₙ Semiterm.fvar) x)).hom ((lMap Φ) p) =
    (Rew.bind (fun x => #x.castSucc) (#(Fin.last n) :>ₙ Semiterm.fvar)).hom ((lMap Φ) p)

State before:
L✝ : Language
ξ✝ : Type u_1
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_2
Φ : L₁ →ᵥ L₂
p : SyntacticSemiformula L₁ n
⊢ (Rew.bind (fun x => #x.castSucc) fun x => Semiterm.lMap Φ ((#(Fin.last n) :>ₙ Semiterm.fvar) x)).hom ((lMap Φ) p) =
    (Rew.bind (fun x => #x.castSucc) (#(Fin.last n) :>ₙ Semiterm.fvar)).hom ((lMap Φ) p)
Tactic:
congr
State after:
case e_a.e_ω.e_e
L✝ : Language
ξ✝ : Type u_1
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_2
Φ : L₁ →ᵥ L₂
p : SyntacticSemiformula L₁ n
⊢ (fun x => Semiterm.lMap Φ ((#(Fin.last n) :>ₙ Semiterm.fvar) x)) = #(Fin.last n) :>ₙ Semiterm.fvar

State before:
case e_a.e_ω.e_e
L✝ : Language
ξ✝ : Type u_1
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_2
Φ : L₁ →ᵥ L₂
p : SyntacticSemiformula L₁ n
⊢ (fun x => Semiterm.lMap Φ ((#(Fin.last n) :>ₙ Semiterm.fvar) x)) = #(Fin.last n) :>ₙ Semiterm.fvar
Tactic:
{ funext x; cases x <;> simp }
State after:
no goals

State before:
case e_a.e_ω.e_e
L✝ : Language
ξ✝ : Type u_1
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_2
Φ : L₁ →ᵥ L₂
p : SyntacticSemiformula L₁ n
⊢ (fun x => Semiterm.lMap Φ ((#(Fin.last n) :>ₙ Semiterm.fvar) x)) = #(Fin.last n) :>ₙ Semiterm.fvar
Tactic:
funext x
State after:
case e_a.e_ω.e_e.h
L✝ : Language
ξ✝ : Type u_1
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_2
Φ : L₁ →ᵥ L₂
p : SyntacticSemiformula L₁ n
x : ℕ
⊢ Semiterm.lMap Φ ((#(Fin.last n) :>ₙ Semiterm.fvar) x) = (#(Fin.last n) :>ₙ Semiterm.fvar) x

State before:
case e_a.e_ω.e_e.h
L✝ : Language
ξ✝ : Type u_1
n n₁ n₂✝ n₂ m m₁ m₂ m₃ : ℕ
L : Language
L₁ : Language
L₂ : Language
L₃ : Language
ξ : Type u_2
Φ : L₁ →ᵥ L₂
p : SyntacticSemiformula L₁ n
x : ℕ
⊢ Semiterm.lMap Φ ((#(Fin.last n) :>ₙ Semiterm.fvar) x) = (#(Fin.last n) :>ₙ Semiterm.fvar) x
Tactic:
cases x <;> simp
State after:
no goals