Theorem: LO.FirstOrder.Semiterm.lMap_free (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 + 1)
⊢ lMap Φ (free t) = free (lMap Φ t)
Tactic:
simp[free, 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 + 1)
⊢ (Rew.bind (lMap Φ ∘ (bvar <: &0)) (lMap Φ ∘ fun m => &(m + 1))) (lMap Φ t) =
    (Rew.bind (bvar <: &0) fun m => &(m + 1)) (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 + 1)
⊢ (Rew.bind (lMap Φ ∘ (bvar <: &0)) (lMap Φ ∘ fun m => &(m + 1))) (lMap Φ t) =
    (Rew.bind (bvar <: &0) fun m => &(m + 1)) (lMap Φ t)
Tactic:
congr
State after:
case e_a.e_b
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 + 1)
⊢ lMap Φ ∘ (bvar <: &0) = bvar <: &0

State before:
case e_a.e_b
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 + 1)
⊢ lMap Φ ∘ (bvar <: &0) = bvar <: &0
Tactic:
exact funext $ Fin.lastCases (by simp) (by simp)
State after:
no goals

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 + 1)
⊢ (lMap Φ ∘ (bvar <: &0)) (Fin.last n) = (bvar <: &0) (Fin.last n)
Tactic:
simp
State after:
no goals

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 + 1)
⊢ ∀ (i : Fin n), (lMap Φ ∘ (bvar <: &0)) i.castSucc = (bvar <: &0) i.castSucc
Tactic:
simp
State after:
no goals