L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n k : ℕ
φ : BoundedFormula L α k
⊢ ∀ {m n : ℕ} (km : k ≤ m) (mn : m ≤ n), castLE mn (castLE km φ) = castLE (_ : k ≤ n) φ
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝ k m n : ℕ
km : k ≤ m
mn : m ≤ n
φ : BoundedFormula L α k
⊢ castLE mn (castLE km φ) = castLE (_ : k ≤ n) φ
revert m n
case falsum
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ castLE mn (castLE km falsum) = castLE (_ : n✝ ≤ n) falsum

case equal
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ : ℕ
t₁✝ t₂✝ : Term L (α ⊕ Fin n✝)
m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ castLE mn (castLE km (equal t₁✝ t₂✝)) = castLE (_ : n✝ ≤ n) (equal t₁✝ t₂✝)

case rel
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ l✝ : ℕ
R✝ : Relations L l✝
ts✝ : Fin l✝ → Term L (α ⊕ Fin n✝)
m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ castLE mn (castLE km (rel R✝ ts✝)) = castLE (_ : n✝ ≤ n) (rel R✝ ts✝)

case imp
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ : ℕ
f₁✝ f₂✝ : BoundedFormula L α n✝
ih1 : ∀ {m n : ℕ} (km : n✝ ≤ m) (mn : m ≤ n), castLE mn (castLE km f₁✝) = castLE (_ : n✝ ≤ n) f₁✝
ih2 : ∀ {m n : ℕ} (km : n✝ ≤ m) (mn : m ≤ n), castLE mn (castLE km f₂✝) = castLE (_ : n✝ ≤ n) f₂✝
m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ castLE mn (castLE km (imp f₁✝ f₂✝)) = castLE (_ : n✝ ≤ n) (imp f₁✝ f₂✝)

case all
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ : ℕ
f✝ : BoundedFormula L α (n✝ + 1)
ih3 : ∀ {m n : ℕ} (km : n✝ + 1 ≤ m) (mn : m ≤ n), castLE mn (castLE km f✝) = castLE (_ : n✝ + 1 ≤ n) f✝
m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ castLE mn (castLE km (all f✝)) = castLE (_ : n✝ ≤ n) (all f✝)
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n k : ℕ
φ : BoundedFormula L α k
⊢ ∀ {m n : ℕ} (km : k ≤ m) (mn : m ≤ n), castLE mn (castLE km φ) = castLE (_ : k ≤ n) φ
induction' φ with _ _ _ _ _ _ _ _ _ _ _ ih1 ih2 _ _ ih3 <;> intro m n km mn
no goals
case falsum
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ castLE mn (castLE km falsum) = castLE (_ : n✝ ≤ n) falsum
rfl
no goals
case equal
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ : ℕ
t₁✝ t₂✝ : Term L (α ⊕ Fin n✝)
m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ castLE mn (castLE km (equal t₁✝ t₂✝)) = castLE (_ : n✝ ≤ n) (equal t₁✝ t₂✝)
simp
case rel
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ l✝ : ℕ
R✝ : Relations L l✝
ts✝ : Fin l✝ → Term L (α ⊕ Fin n✝)
m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ rel R✝ (Term.relabel (Sum.map id ↑(Fin.castLE mn)) ∘ Term.relabel (Sum.map id ↑(Fin.castLE km)) ∘ ts✝) =
    rel R✝ (Term.relabel (Sum.map id ↑(Fin.castLE (_ : n✝ ≤ n))) ∘ ts✝)
case rel
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ l✝ : ℕ
R✝ : Relations L l✝
ts✝ : Fin l✝ → Term L (α ⊕ Fin n✝)
m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ castLE mn (castLE km (rel R✝ ts✝)) = castLE (_ : n✝ ≤ n) (rel R✝ ts✝)
simp only [castLE, eq_self_iff_true, heq_iff_eq, true_and_iff]
case rel
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ l✝ : ℕ
R✝ : Relations L l✝
ts✝ : Fin l✝ → Term L (α ⊕ Fin n✝)
m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ rel R✝ (Term.relabel (Sum.map id ↑(Fin.castLE mn) ∘ Sum.map id ↑(Fin.castLE km)) ∘ ts✝) =
    rel R✝ (Term.relabel (Sum.map id ↑(Fin.castLE (_ : n✝ ≤ n))) ∘ ts✝)
case rel
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ l✝ : ℕ
R✝ : Relations L l✝
ts✝ : Fin l✝ → Term L (α ⊕ Fin n✝)
m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ rel R✝ (Term.relabel (Sum.map id ↑(Fin.castLE mn)) ∘ Term.relabel (Sum.map id ↑(Fin.castLE km)) ∘ ts✝) =
    rel R✝ (Term.relabel (Sum.map id ↑(Fin.castLE (_ : n✝ ≤ n))) ∘ ts✝)
rw [← Function.comp.assoc, Term.relabel_comp_relabel]
no goals
case rel
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ l✝ : ℕ
R✝ : Relations L l✝
ts✝ : Fin l✝ → Term L (α ⊕ Fin n✝)
m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ rel R✝ (Term.relabel (Sum.map id ↑(Fin.castLE mn) ∘ Sum.map id ↑(Fin.castLE km)) ∘ ts✝) =
    rel R✝ (Term.relabel (Sum.map id ↑(Fin.castLE (_ : n✝ ≤ n))) ∘ ts✝)
simp
no goals
case imp
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ : ℕ
f₁✝ f₂✝ : BoundedFormula L α n✝
ih1 : ∀ {m n : ℕ} (km : n✝ ≤ m) (mn : m ≤ n), castLE mn (castLE km f₁✝) = castLE (_ : n✝ ≤ n) f₁✝
ih2 : ∀ {m n : ℕ} (km : n✝ ≤ m) (mn : m ≤ n), castLE mn (castLE km f₂✝) = castLE (_ : n✝ ≤ n) f₂✝
m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ castLE mn (castLE km (imp f₁✝ f₂✝)) = castLE (_ : n✝ ≤ n) (imp f₁✝ f₂✝)
simp [ih1, ih2]
no goals
case all
L : Language
L' : Language
M : Type w
N : Type ?u.49784
P : Type ?u.49787
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.49815
n✝¹ k n✝ : ℕ
f✝ : BoundedFormula L α (n✝ + 1)
ih3 : ∀ {m n : ℕ} (km : n✝ + 1 ≤ m) (mn : m ≤ n), castLE mn (castLE km f✝) = castLE (_ : n✝ + 1 ≤ n) f✝
m n : ℕ
km : n✝ ≤ m
mn : m ≤ n
⊢ castLE mn (castLE km (all f✝)) = castLE (_ : n✝ ≤ n) (all f✝)
simp only [castLE, ih3]