theorem
LO.Arith.open_induction
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{P : V → Prop}
(hP :
∃ (p : LO.FirstOrder.Semiformula ℒₒᵣ V 1), p.Open ∧ ∀ (x : V), P x ↔ (LO.FirstOrder.Semiformula.Evalm V ![x] id) p)
(zero : P 0)
(succ : ∀ (x : V), P x → P (x + 1))
(x : V)
:
P x
theorem
LO.Arith.open_leastNumber
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{P : V → Prop}
(hP :
∃ (p : LO.FirstOrder.Semiformula ℒₒᵣ V 1), p.Open ∧ ∀ (x : V), P x ↔ (LO.FirstOrder.Semiformula.Evalm V ![x] id) p)
(zero : P 0)
{a : V}
(counterex : ¬P a)
:
Equations
- LO.Arith.instDiv_arithmetization = { div := fun (a b : V) => Classical.choose! ⋯ }
Instances For
theorem
LO.Arith.mul_div_le_pos
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{b : V}
(a : V)
(h : 0 < b)
:
@[simp]
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
LO.Arith.div_defined
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₂ fun (x1 x2 : V) => x1 / x2 via LO.FirstOrder.Arith.divDef
@[simp]
theorem
LO.Arith.div_defined_iff
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 3 → V)
:
V ⊧/v (LO.FirstOrder.Arith.HierarchySymbol.Semiformula.val LO.FirstOrder.Arith.divDef) ↔ v 0 = v 1 / v 2
@[simp]
@[simp]
@[simp]
instance
LO.Arith.div_polybounded
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
LO.FirstOrder.Arith.Bounded₂ fun (x1 x2 : V) => x1 / x2
Equations
- ⋯ = ⋯
instance
LO.Arith.div_definable
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₂ fun (x1 x2 : V) => x1 / x2
Equations
- ⋯ = ⋯
@[simp]
@[simp]
@[simp]
theorem
LO.Arith.div_mul_left
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(a : V)
{b : V}
(pos : 0 < b)
:
@[simp]
theorem
LO.Arith.div_mul_right
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(a : V)
{b : V}
(pos : 0 < b)
:
@[simp]
theorem
LO.Arith.div_eq_zero_of_lt
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(b : V)
{a : V}
(h : a < b)
:
@[simp]
@[simp]
@[simp]
theorem
LO.Arith.div_mul'
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(a : V)
{b : V}
(pos : 0 < b)
:
theorem
LO.Arith.div_lt_of_pos_of_one_lt
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a b : V}
(ha : 0 < a)
(hb : 1 < b)
:
theorem
LO.Arith.le_two_mul_div_two_add_one
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(a : V)
:
theorem
LO.Arith.div_monotone
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a b : V}
(h : a ≤ b)
(c : V)
:
theorem
LO.Arith.div_lt_of_lt_mul
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a b c : V}
(h : a < b * c)
:
@[simp]
Equations
- LO.Arith.rem a b = a - b * (a / b)
Instances For
Equations
- LO.Arith.instMod_arithmetization = { mod := LO.Arith.rem }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
LO.Arith.rem_defined
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₂ fun (x1 x2 : V) => x1 % x2 via LO.FirstOrder.Arith.remDef
@[simp]
theorem
LO.Arith.rem_defined_iff
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 3 → V)
:
V ⊧/v (LO.FirstOrder.Arith.HierarchySymbol.Semiformula.val LO.FirstOrder.Arith.remDef) ↔ v 0 = v 1 % v 2
instance
LO.Arith.rem_definable
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₂ fun (x1 x2 : V) => x1 % x2
Equations
- ⋯ = ⋯
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
LO.Arith.mod_eq_self_of_lt
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a b : V}
(h : a < b)
:
@[simp]
theorem
LO.Arith.mod_lt
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(a : V)
{b : V}
(pos : 0 < b)
:
@[simp]
instance
LO.Arith.mod_polybounded
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
LO.FirstOrder.Arith.Bounded₂ fun (x1 x2 : V) => x1 % x2
Equations
- ⋯ = ⋯
@[simp]
@[simp]
Equations
- √a = Classical.choose! ⋯
Instances For
Equations
- LO.Arith.«term√_» = Lean.ParserDescr.node `LO.Arith.«term√_» 75 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "√") (Lean.ParserDescr.cat `term 75))
Instances For
@[simp]
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
LO.Arith.sqrt_defined
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₁ fun (a : V) => √a via LO.FirstOrder.Arith.sqrtDef
@[simp]
instance
LO.Arith.sqrt_definable
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₁ fun (x : V) => √x
Equations
- ⋯ = ⋯
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
instance
LO.Arith.instBounded₁Sqrt
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
LO.FirstOrder.Arith.Bounded₁ fun (x : V) => √x
Equations
- ⋯ = ⋯
theorem
LO.Arith.sqrt_lt_self_of_one_lt
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a : V}
(h : 1 < a)
:
!⟪x, y, z, ...⟫
notation for Seq
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
LO.Arith.pair_defined
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₂ fun (a b : V) => ⟪a, b⟫ via LO.FirstOrder.Arith.pairDef
@[simp]
theorem
LO.Arith.pair_defined_iff
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 3 → V)
:
V ⊧/v (LO.FirstOrder.Arith.HierarchySymbol.Semiformula.val LO.FirstOrder.Arith.pairDef) ↔ v 0 = ⟪v 1, v 2⟫
instance
LO.Arith.pair_definable
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₂ LO.Arith.pair
Equations
- ⋯ = ⋯
instance
LO.Arith.instBounded₂Pair
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
LO.FirstOrder.Arith.Bounded₂ LO.Arith.pair
Equations
- ⋯ = ⋯
Equations
- LO.Arith.termπ₁_ = Lean.ParserDescr.node `LO.Arith.termπ₁_ 80 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "π₁") (Lean.ParserDescr.cat `term 80))
Instances For
Equations
- LO.Arith.termπ₂_ = Lean.ParserDescr.node `LO.Arith.termπ₂_ 80 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "π₂") (Lean.ParserDescr.cat `term 80))
Instances For
@[simp]
@[simp]
theorem
LO.Arith.unpair_pair
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(a b : V)
:
LO.Arith.unpair ⟪a, b⟫ = (a, b)
@[simp]
@[simp]
Equations
- LO.Arith.pairEquiv = { toFun := Function.uncurry LO.Arith.pair, invFun := LO.Arith.unpair, left_inv := ⋯, right_inv := ⋯ }
Instances For
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
LO.Arith.lt_pair_left_of_pos
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a : V}
(pos : 0 < a)
(b : V)
:
a < ⟪a, b⟫
instance
LO.Arith.instBounded₁Pi₁
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
LO.FirstOrder.Arith.Bounded₁ LO.Arith.pi₁
Equations
- ⋯ = ⋯
instance
LO.Arith.instBounded₁Pi₂
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
LO.FirstOrder.Arith.Bounded₁ LO.Arith.pi₂
Equations
- ⋯ = ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
LO.Arith.pi₁_defined
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₁ LO.Arith.pi₁ via LO.FirstOrder.Arith.pi₁Def
@[simp]
instance
LO.Arith.pi₁_definable
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₁ LO.Arith.pi₁
Equations
- ⋯ = ⋯
theorem
LO.Arith.pi₂_defined
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₁ LO.Arith.pi₂ via LO.FirstOrder.Arith.pi₂Def
@[simp]
instance
LO.Arith.pi₂_definable
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₁ LO.Arith.pi₂
Equations
- ⋯ = ⋯
theorem
LO.Arith.pair_lt_pair_left
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a₁ a₂ : V}
(h : a₁ < a₂)
(b : V)
:
⟪a₁, b⟫ < ⟪a₂, b⟫
theorem
LO.Arith.pair_le_pair_left
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a₁ a₂ : V}
(h : a₁ ≤ a₂)
(b : V)
:
⟪a₁, b⟫ ≤ ⟪a₂, b⟫
theorem
LO.Arith.pair_lt_pair_right
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(a : V)
{b₁ b₂ : V}
(h : b₁ < b₂)
:
⟪a, b₁⟫ < ⟪a, b₂⟫
theorem
LO.Arith.pair_le_pair_right
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(a : V)
{b₁ b₂ : V}
(h : b₁ ≤ b₂)
:
⟪a, b₁⟫ ≤ ⟪a, b₂⟫
theorem
LO.Arith.pair_le_pair
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a₁ a₂ b₁ b₂ : V}
(ha : a₁ ≤ a₂)
(hb : b₁ ≤ b₂)
:
⟪a₁, b₁⟫ ≤ ⟪a₂, b₂⟫
theorem
LO.Arith.pair_lt_pair
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a₁ a₂ b₁ b₂ : V}
(ha : a₁ < a₂)
(hb : b₁ < b₂)
:
⟪a₁, b₁⟫ < ⟪a₂, b₂⟫
@[simp]
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
LO.Arith.pair₃_defined
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₃ fun (x1 x2 x3 : V) => ⟪x1, ⟪x2, x3⟫⟫ via LO.FirstOrder.Arith.pair₃Def
@[simp]
theorem
LO.Arith.eval_pair₃Def
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 4 → V)
:
V ⊧/v (LO.FirstOrder.Arith.HierarchySymbol.Semiformula.val LO.FirstOrder.Arith.pair₃Def) ↔ v 0 = ⟪v 1, ⟪v 2, v 3⟫⟫
theorem
LO.Arith.pair₄_defined
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₄ fun (x1 x2 x3 x4 : V) => ⟪x1, ⟪x2, ⟪x3, x4⟫⟫⟫ via LO.FirstOrder.Arith.pair₄Def
@[simp]
theorem
LO.Arith.eval_pair₄Def
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 5 → V)
:
V ⊧/v (LO.FirstOrder.Arith.HierarchySymbol.Semiformula.val LO.FirstOrder.Arith.pair₄Def) ↔ v 0 = ⟪v 1, ⟪v 2, ⟪v 3, v 4⟫⟫⟫
theorem
LO.Arith.pair₅_defined
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
LO.FirstOrder.Arith.HierarchySymbol.DefinedFunction (fun (v : Fin 5 → V) => ⟪v 0, ⟪v 1, ⟪v 2, ⟪v 3, v 4⟫⟫⟫⟫)
LO.FirstOrder.Arith.pair₅Def
@[simp]
theorem
LO.Arith.eval_pair₅Def
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 6 → V)
:
V ⊧/v (LO.FirstOrder.Arith.HierarchySymbol.Semiformula.val LO.FirstOrder.Arith.pair₅Def) ↔ v 0 = ⟪v 1, ⟪v 2, ⟪v 3, ⟪v 4, v 5⟫⟫⟫⟫
theorem
LO.Arith.pair₆_defined
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
LO.FirstOrder.Arith.HierarchySymbol.DefinedFunction (fun (v : Fin 6 → V) => ⟪v 0, ⟪v 1, ⟪v 2, ⟪v 3, ⟪v 4, v 5⟫⟫⟫⟫⟫)
LO.FirstOrder.Arith.pair₆Def
@[simp]
theorem
LO.Arith.eval_pair₆Def
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 7 → V)
:
V ⊧/v (LO.FirstOrder.Arith.HierarchySymbol.Semiformula.val LO.FirstOrder.Arith.pair₆Def) ↔ v 0 = ⟪v 1, ⟪v 2, ⟪v 3, ⟪v 4, ⟪v 5, v 6⟫⟫⟫⟫⟫
Equations
- LO.Arith.npair x_2 = 0
- LO.Arith.npair v = ⟪v 0, LO.Arith.npair fun (x : Fin n) => v x.succ⟫
Instances For
@[simp]
theorem
LO.Arith.npair_zero
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 0 → V)
:
LO.Arith.npair v = 0
theorem
LO.Arith.npair_succ
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{n : ℕ}
(x : V)
(v : Fin n → V)
:
LO.Arith.npair (x :> v) = ⟪x, LO.Arith.npair v⟫
Equations
- LO.Arith.unNpair i x = i.elim0
- LO.Arith.unNpair i x = Fin.cases (π₁ x) (fun (i : Fin n) => LO.Arith.unNpair i (π₂ x)) i
Instances For
@[simp]
theorem
LO.Arith.unNpair_npair
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{n : ℕ}
(i : Fin n)
(v : Fin n → V)
:
LO.Arith.unNpair i (LO.Arith.npair v) = v i
Equations
- One or more equations did not get rendered due to their size.
- LO.FirstOrder.Arith.unNpairDef i = i.elim0
Instances For
theorem
LO.Arith.unNpair_defined
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{n : ℕ}
(i : Fin n)
:
@[simp]
theorem
LO.Arith.eval_unNpairDef
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{n : ℕ}
(i : Fin n)
(v : Fin 2 → V)
:
V ⊧/v (LO.FirstOrder.Arith.HierarchySymbol.Semiformula.val (LO.FirstOrder.Arith.unNpairDef i)) ↔ v 0 = LO.Arith.unNpair i (v 1)
@[simp]
instance
LO.Arith.unNpair_definable
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
{n : ℕ}
(i : Fin n)
(Γ : LO.FirstOrder.Arith.HierarchySymbol)
:
Equations
- ⋯ = ⋯
theorem
LO.Arith.hierarchy_polynomial_induction
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(Γ : LO.Polarity)
(m : ℕ)
[V ⊧ₘ* LO.FirstOrder.Theory.indScheme ℒₒᵣ (LO.FirstOrder.Arith.Hierarchy Γ m)]
{P : V → Prop}
(hP : { Γ := Γ.coe, rank := m }-Predicate P)
(zero : P 0)
(even : ∀ x > 0, P x → P (2 * x))
(odd : ∀ (x : V), P x → P (2 * x + 1))
(x : V)
:
P x
theorem
LO.Arith.hierarchy_polynomial_induction_oRing_sigma₀
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₀]
{P : V → Prop}
(hP : 𝚺₀-Predicate P)
(zero : P 0)
(even : ∀ x > 0, P x → P (2 * x))
(odd : ∀ (x : V), P x → P (2 * x + 1))
(x : V)
:
P x
theorem
LO.Arith.hierarchy_polynomial_induction_oRing_sigma₁
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{P : V → Prop}
(hP : 𝚺₁-Predicate P)
(zero : P 0)
(even : ∀ x > 0, P x → P (2 * x))
(odd : ∀ (x : V), P x → P (2 * x + 1))
(x : V)
:
P x
theorem
LO.Arith.hierarchy_polynomial_induction_oRing_pi₁
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈𝚷₁]
{P : V → Prop}
(hP : 𝚷₁-Predicate P)
(zero : P 0)
(even : ∀ x > 0, P x → P (2 * x))
(odd : ∀ (x : V), P x → P (2 * x + 1))
(x : V)
:
P x
theorem
LO.Arith.nat_cast_pair
{V : Type u_1}
[LO.ORingStruc V]
[V ⊧ₘ* 𝐈open]
(n m : ℕ)
:
↑⟪n, m⟫ = ⟪↑n, ↑m⟫