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
g₁ g₂ : (Fin k → M) → M
hf : DefinableFunction₂ L Γ f
hg₁ : DefinableBoundedFunction L Γ g₁
hg₂ : DefinableBoundedFunction L Γ g₂
⊢ DefinableFunction L Γ fun v => f (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)
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
g₁ g₂ : (Fin k → M) → M
hf : DefinableFunction₂ L Γ f
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)
⊢ DefinableFunction L Γ fun v => f (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
g₁ g₂ : (Fin k → M) → M
hf : DefinableFunction₂ L Γ f
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)
⊢ DefinableFunction L Γ fun v => f (g₁ v) (g₂ v)
Tactic:
simpa using this
State after:
no goals