Theorem: LO.FirstOrder.Arith.Model.DefinableFunction₃.bcomp (Arithmetization/Definability/Definability.lean)

State before:
L : Language
inst✝⁹ : L.ORing
ξ : Type u_1
n : ℕ
M : Type u_2
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
f : M → M → M → M
g₁ g₂ g₃ : (Fin k → M) → M
hf : DefinableFunction₃ L Γ f
hg₁ : DefinableBoundedFunction L Γ g₁
hg₂ : DefinableBoundedFunction L Γ g₂
hg₃ : DefinableBoundedFunction L Γ g₃
⊢ DefinableFunction L Γ fun v => f (g₁ v) (g₂ v) (g₃ v)
Tactic:
have := Definable.bcomp₄ (k := k + 1) (R := Function.Graph₃ f) (DefinableBoundedFunction.var 0) (hg₁.retraction Fin.succ) (hg₂.retraction Fin.succ) (hg₃.retraction Fin.succ)
State after:
L : Language
inst✝⁹ : L.ORing
ξ : Type u_1
n : ℕ
M : Type u_2
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
f : M → M → M → M
g₁ g₂ g₃ : (Fin k → M) → M
hf : DefinableFunction₃ L Γ f
hg₁ : DefinableBoundedFunction L Γ g₁
hg₂ : DefinableBoundedFunction L Γ g₂
hg₃ : DefinableBoundedFunction L Γ g₃
this :
  Definable L Γ fun v => Function.Graph₃ f (v 0) (g₁ fun i => v i.succ) (g₂ fun i => v i.succ) (g₃ fun i => v i.succ)
⊢ DefinableFunction L Γ fun v => f (g₁ v) (g₂ v) (g₃ v)

State before:
L : Language
inst✝⁹ : L.ORing
ξ : Type u_1
n : ℕ
M : Type u_2
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
f : M → M → M → M
g₁ g₂ g₃ : (Fin k → M) → M
hf : DefinableFunction₃ L Γ f
hg₁ : DefinableBoundedFunction L Γ g₁
hg₂ : DefinableBoundedFunction L Γ g₂
hg₃ : DefinableBoundedFunction L Γ g₃
this :
  Definable L Γ fun v => Function.Graph₃ f (v 0) (g₁ fun i => v i.succ) (g₂ fun i => v i.succ) (g₃ fun i => v i.succ)
⊢ DefinableFunction L Γ fun v => f (g₁ v) (g₂ v) (g₃ v)
Tactic:
simpa using this
State after:
no goals