theorem
LO.Arith.open_induction
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
{P : V → Prop}
(hP : ∃ (p : FirstOrder.Semiformula ℒₒᵣ V 1), p.Open ∧ ∀ (x : V), P x ↔ (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}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
{P : V → Prop}
(hP : ∃ (p : FirstOrder.Semiformula ℒₒᵣ V 1), p.Open ∧ ∀ (x : V), P x ↔ (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}
[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}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₂ fun (x1 x2 : V) => x1 / x2 via FirstOrder.Arith.divDef
@[simp]
theorem
LO.Arith.div_defined_iff
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 3 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.divDef) ↔ v 0 = v 1 / v 2
@[simp]
@[simp]
@[simp]
instance
LO.Arith.div_polybounded
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
FirstOrder.Arith.Bounded₂ fun (x1 x2 : V) => x1 / x2
instance
LO.Arith.div_definable
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₂ fun (x1 x2 : V) => x1 / x2
@[simp]
@[simp]
@[simp]
theorem
LO.Arith.div_mul_left
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
(a : V)
{b : V}
(pos : 0 < b)
:
@[simp]
theorem
LO.Arith.div_mul_right
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
(a : V)
{b : V}
(pos : 0 < b)
:
@[simp]
theorem
LO.Arith.div_eq_zero_of_lt
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
(b : V)
{a : V}
(h : a < b)
:
@[simp]
@[simp]
@[simp]
theorem
LO.Arith.div_mul'
{V : Type u_1}
[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}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a b : V}
(ha : 0 < a)
(hb : 1 < b)
:
theorem
LO.Arith.div_monotone
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a b : V}
(h : a ≤ b)
(c : V)
:
theorem
LO.Arith.div_lt_of_lt_mul
{V : Type u_1}
[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}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₂ fun (x1 x2 : V) => x1 % x2 via FirstOrder.Arith.remDef
@[simp]
theorem
LO.Arith.rem_defined_iff
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 3 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.remDef) ↔ v 0 = v 1 % v 2
instance
LO.Arith.rem_definable
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₂ fun (x1 x2 : V) => x1 % x2
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
LO.Arith.mod_eq_self_of_lt
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a b : V}
(h : a < b)
:
@[simp]
@[simp]
instance
LO.Arith.mod_polybounded
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
FirstOrder.Arith.Bounded₂ fun (x1 x2 : V) => x1 % x2
@[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}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₁ fun (a : V) => √a via FirstOrder.Arith.sqrtDef
@[simp]
instance
LO.Arith.sqrt_definable
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₁ fun (x : V) => √x
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
instance
LO.Arith.instBounded₁Sqrt
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
FirstOrder.Arith.Bounded₁ fun (x : V) => √x
theorem
LO.Arith.sqrt_lt_self_of_one_lt
{V : Type u_1}
[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}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₂ fun (a b : V) => ⟪a, b⟫ via FirstOrder.Arith.pairDef
@[simp]
theorem
LO.Arith.pair_defined_iff
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 3 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.pairDef) ↔ v 0 = ⟪v 1, v 2⟫
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]
@[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}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
{a : V}
(pos : 0 < a)
(b : V)
:
a < ⟪a, b⟫
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
@[simp]
@[simp]
theorem
LO.Arith.pair_lt_pair_left
{V : Type u_1}
[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}
[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}
[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}
[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}
[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}
[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}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₃ fun (x1 x2 x3 : V) => ⟪x1, ⟪x2, x3⟫⟫ via FirstOrder.Arith.pair₃Def
@[simp]
theorem
LO.Arith.eval_pair₃Def
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 4 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.pair₃Def) ↔ v 0 = ⟪v 1, ⟪v 2, v 3⟫⟫
theorem
LO.Arith.pair₄_defined
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
𝚺₀-Function₄ fun (x1 x2 x3 x4 : V) => ⟪x1, ⟪x2, ⟪x3, x4⟫⟫⟫ via FirstOrder.Arith.pair₄Def
@[simp]
theorem
LO.Arith.eval_pair₄Def
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 5 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.pair₄Def) ↔ v 0 = ⟪v 1, ⟪v 2, ⟪v 3, v 4⟫⟫⟫
theorem
LO.Arith.pair₅_defined
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
FirstOrder.Arith.HierarchySymbol.DefinedFunction (fun (v : Fin 5 → V) => ⟪v 0, ⟪v 1, ⟪v 2, ⟪v 3, v 4⟫⟫⟫⟫)
FirstOrder.Arith.pair₅Def
@[simp]
theorem
LO.Arith.eval_pair₅Def
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 6 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val 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}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
:
FirstOrder.Arith.HierarchySymbol.DefinedFunction (fun (v : Fin 6 → V) => ⟪v 0, ⟪v 1, ⟪v 2, ⟪v 3, ⟪v 4, v 5⟫⟫⟫⟫⟫)
FirstOrder.Arith.pair₆Def
@[simp]
theorem
LO.Arith.eval_pair₆Def
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
(v : Fin 7 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val 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]
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
Equations
- One or more equations did not get rendered due to their size.
- LO.FirstOrder.Arith.unNpairDef i = i.elim0
Instances For
@[simp]
theorem
LO.Arith.eval_unNpairDef
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
{n : ℕ}
(i : Fin n)
(v : Fin 2 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val (FirstOrder.Arith.unNpairDef i)) ↔ v 0 = unNpair i (v 1)
@[simp]
instance
LO.Arith.unNpair_definable
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
{n : ℕ}
(i : Fin n)
(Γ : FirstOrder.Arith.HierarchySymbol)
:
theorem
LO.Arith.hierarchy_polynomial_induction
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
(Γ : Polarity)
(m : ℕ)
[V ⊧ₘ* FirstOrder.Theory.indScheme ℒₒᵣ (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}
[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}
[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}
[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}
[ORingStruc V]
[V ⊧ₘ* 𝐈open]
(n m : ℕ)
:
↑⟪n, m⟫ = ⟪↑n, ↑m⟫