Theorem: LO.FirstOrder.Arith.Model.Bounded.comp (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
l k : ℕ
f : (Fin l → M) → M
g : Fin l → (Fin k → M) → M
hf : Bounded L f
hg : ∀ (i : Fin l), Bounded L (g i)
⊢ ∃ t, ∀ (v : Fin k → M), (f fun x => g x v) ≤ Semiterm.valm M v id t
Tactic:
rcases hf.bounded with ⟨tf, htf⟩
State after:
case intro
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
l k : ℕ
f : (Fin l → M) → M
g : Fin l → (Fin k → M) → M
hf : Bounded L f
hg : ∀ (i : Fin l), Bounded L (g i)
tf : Semiterm L M l
htf : ∀ (v : Fin l → M), f v ≤ Semiterm.valm M v id tf
⊢ ∃ t, ∀ (v : Fin k → M), (f fun x => g x v) ≤ Semiterm.valm M v id t

State before:
case intro
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
l k : ℕ
f : (Fin l → M) → M
g : Fin l → (Fin k → M) → M
hf : Bounded L f
hg : ∀ (i : Fin l), Bounded L (g i)
tf : Semiterm L M l
htf : ∀ (v : Fin l → M), f v ≤ Semiterm.valm M v id tf
⊢ ∃ t, ∀ (v : Fin k → M), (f fun x => g x v) ≤ Semiterm.valm M v id t
Tactic:
choose tg htg using fun i ↦ (hg i).bounded
State after:
case intro
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
l k : ℕ
f : (Fin l → M) → M
g : Fin l → (Fin k → M) → M
hf : Bounded L f
hg : ∀ (i : Fin l), Bounded L (g i)
tf : Semiterm L M l
htf : ∀ (v : Fin l → M), f v ≤ Semiterm.valm M v id tf
tg : Fin l → Semiterm L M k
htg : ∀ (i : Fin l) (v : Fin k → M), g i v ≤ Semiterm.valm M v id (tg i)
⊢ ∃ t, ∀ (v : Fin k → M), (f fun x => g x v) ≤ Semiterm.valm M v id t

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
l k : ℕ
f : (Fin l → M) → M
g : Fin l → (Fin k → M) → M
hf : Bounded L f
hg : ∀ (i : Fin l), Bounded L (g i)
tf : Semiterm L M l
htf : ∀ (v : Fin l → M), f v ≤ Semiterm.valm M v id tf
tg : Fin l → Semiterm L M k
htg : ∀ (i : Fin l) (v : Fin k → M), g i v ≤ Semiterm.valm M v id (tg i)
⊢ ∀ (v : Fin k → M), (f fun x => g x v) ≤ Semiterm.valm M v id ((Rew.substs tg) tf)
Tactic:
intro v
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
l k : ℕ
f : (Fin l → M) → M
g : Fin l → (Fin k → M) → M
hf : Bounded L f
hg : ∀ (i : Fin l), Bounded L (g i)
tf : Semiterm L M l
htf : ∀ (v : Fin l → M), f v ≤ Semiterm.valm M v id tf
tg : Fin l → Semiterm L M k
htg : ∀ (i : Fin l) (v : Fin k → M), g i v ≤ Semiterm.valm M v id (tg i)
v : Fin k → M
⊢ (f fun x => g x v) ≤ Semiterm.valm M v id ((Rew.substs tg) tf)

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
l k : ℕ
f : (Fin l → M) → M
g : Fin l → (Fin k → M) → M
hf : Bounded L f
hg : ∀ (i : Fin l), Bounded L (g i)
tf : Semiterm L M l
htf : ∀ (v : Fin l → M), f v ≤ Semiterm.valm M v id tf
tg : Fin l → Semiterm L M k
htg : ∀ (i : Fin l) (v : Fin k → M), g i v ≤ Semiterm.valm M v id (tg i)
v : Fin k → M
⊢ (f fun x => g x v) ≤ Semiterm.valm M v id ((Rew.substs tg) tf)
Tactic:
simp [Semiterm.val_substs]
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
l k : ℕ
f : (Fin l → M) → M
g : Fin l → (Fin k → M) → M
hf : Bounded L f
hg : ∀ (i : Fin l), Bounded L (g i)
tf : Semiterm L M l
htf : ∀ (v : Fin l → M), f v ≤ Semiterm.valm M v id tf
tg : Fin l → Semiterm L M k
htg : ∀ (i : Fin l) (v : Fin k → M), g i v ≤ Semiterm.valm M v id (tg i)
v : Fin k → M
⊢ (f fun x => g x v) ≤ Semiterm.val inst✝² (fun x => Semiterm.val inst✝² v id (tg x)) id tf

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
l k : ℕ
f : (Fin l → M) → M
g : Fin l → (Fin k → M) → M
hf : Bounded L f
hg : ∀ (i : Fin l), Bounded L (g i)
tf : Semiterm L M l
htf : ∀ (v : Fin l → M), f v ≤ Semiterm.valm M v id tf
tg : Fin l → Semiterm L M k
htg : ∀ (i : Fin l) (v : Fin k → M), g i v ≤ Semiterm.valm M v id (tg i)
v : Fin k → M
⊢ ∀ (i : M), id i ≤ id i
Tactic:
simp
State after:
no goals