Theorem: FirstOrder.Language.BoundedFormula.relabel_sum_inl
File: Mathlib/ModelTheory/Syntax.lean

tactic: simp only [relabel, relabelAux_sum_inl]
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
φ : L.BoundedFormula α n
⊢ relabel Sum.inl φ = castLE ⋯ φ
state_after: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
φ : L.BoundedFormula α n
⊢ mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) φ = castLE ⋯ φ

tactic: induction' φ with _ _ _ _ _ _ _ _ _ _ _ ih1 ih2 _ _ ih3
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
φ : L.BoundedFormula α n
⊢ mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) φ = castLE ⋯ φ
state_after: case falsum
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n n✝ : ℕ
⊢ mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) falsum =
    castLE ⋯ falsum

case equal
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n n✝ : ℕ
t₁✝ t₂✝ : L.Term (α ⊕ Fin n✝)
⊢ mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) (equal t₁✝ t₂✝) =
    castLE ⋯ (equal t₁✝ t₂✝)

case rel
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n n✝ l✝ : ℕ
R✝ : L.Relations l✝
ts✝ : Fin l✝ → L.Term (α ⊕ Fin n✝)
⊢ mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) (rel R✝ ts✝) =
    castLE ⋯ (rel R✝ ts✝)

case imp
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n n✝ : ℕ
f₁✝ f₂✝ : L.BoundedFormula α n✝
ih1 :
  mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) f₁✝ = castLE ⋯ f₁✝
ih2 :
  mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) f₂✝ = castLE ⋯ f₂✝
⊢ mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) (f₁✝.imp f₂✝) =
    castLE ⋯ (f₁✝.imp f₂✝)

case all
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n n✝ : ℕ
f✝ : L.BoundedFormula α (n✝ + 1)
ih3 : mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) f✝ = castLE ⋯ f✝
⊢ mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) f✝.all =
    castLE ⋯ f✝.all

tactic: rfl
state_before: case falsum
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n n✝ : ℕ
⊢ mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) falsum =
    castLE ⋯ falsum
state_after: no goals

tactic: simp [Fin.natAdd_zero, castLE_of_eq, mapTermRel]
state_before: case equal
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n n✝ : ℕ
t₁✝ t₂✝ : L.Term (α ⊕ Fin n✝)
⊢ mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) (equal t₁✝ t₂✝) =
    castLE ⋯ (equal t₁✝ t₂✝)
state_after: no goals

tactic: simp [Fin.natAdd_zero, castLE_of_eq, mapTermRel]
state_before: case rel
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n n✝ l✝ : ℕ
R✝ : L.Relations l✝
ts✝ : Fin l✝ → L.Term (α ⊕ Fin n✝)
⊢ mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) (rel R✝ ts✝) =
    castLE ⋯ (rel R✝ ts✝)
state_after: case rel
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n n✝ l✝ : ℕ
R✝ : L.Relations l✝
ts✝ : Fin l✝ → L.Term (α ⊕ Fin n✝)
⊢ (fun i => Term.relabel (Sum.map id (Fin.cast ⋯)) (ts✝ i)) = Term.relabel (Sum.map id (Fin.cast ⋯)) ∘ ts✝

tactic: rfl
state_before: case rel
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n n✝ l✝ : ℕ
R✝ : L.Relations l✝
ts✝ : Fin l✝ → L.Term (α ⊕ Fin n✝)
⊢ (fun i => Term.relabel (Sum.map id (Fin.cast ⋯)) (ts✝ i)) = Term.relabel (Sum.map id (Fin.cast ⋯)) ∘ ts✝
state_after: no goals

tactic: simp [mapTermRel, ih1, ih2]
state_before: case imp
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n n✝ : ℕ
f₁✝ f₂✝ : L.BoundedFormula α n✝
ih1 :
  mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) f₁✝ = castLE ⋯ f₁✝
ih2 :
  mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) f₂✝ = castLE ⋯ f₂✝
⊢ mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) (f₁✝.imp f₂✝) =
    castLE ⋯ (f₁✝.imp f₂✝)
state_after: no goals

tactic: simp [mapTermRel, ih3, castLE]
state_before: case all
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n n✝ : ℕ
f✝ : L.BoundedFormula α (n✝ + 1)
ih3 : mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) f✝ = castLE ⋯ f✝
⊢ mapTermRel (fun x t => Term.relabel (Sum.map id (natAdd 0)) t) (fun x => id) (fun x => castLE ⋯) f✝.all =
    castLE ⋯ f✝.all
state_after: no goals