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
g : (Fin k → M) → M
hf : DefinableFunction₁ L Γ f
hg : DefinableBoundedFunction L Γ g
⊢ DefinableFunction L Γ fun v => f (g v)
Tactic:
have := Definable.bcomp₂ (k := k + 1) (R := Function.Graph f) (DefinableBoundedFunction.var 0) (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
g : (Fin k → M) → M
hf : DefinableFunction₁ L Γ f
hg : DefinableBoundedFunction L Γ g
this : Definable L Γ fun v => Function.Graph f (v 0) (g fun i => v i.succ)
⊢ DefinableFunction L Γ fun v => f (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
g : (Fin k → M) → M
hf : DefinableFunction₁ L Γ f
hg : DefinableBoundedFunction L Γ g
this : Definable L Γ fun v => Function.Graph f (v 0) (g fun i => v i.succ)
⊢ DefinableFunction L Γ fun v => f (g v)
Tactic:
simpa using this
State after:
no goals