Documentation

Foundation.FirstOrder.Arithmetic.IOpen.Basic

Basic properties of theory $\mathsf{IOpen}$ #

theorem LO.FirstOrder.Arithmetic.succ_induction {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {P : VProp} (hP : ∃ (φ : ArithmeticSemiformula V 1), Semiformula.Open φ ∀ (x : V), P x (Semiformula.Eval ![x] id) φ) (zero : P 0) (succ : ∀ (x : V), P xP (x + 1)) (x : V) :
P x
theorem LO.FirstOrder.Arithmetic.least_number {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {P : VProp} (hP : ∃ (φ : ArithmeticSemiformula V 1), Semiformula.Open φ ∀ (x : V), P x (Semiformula.Eval ![x] id) φ) (zero : P 0) {a : V} (counterex : ¬P a) :
∃ (x : V), P x ¬P (x + 1)

Division #

theorem LO.FirstOrder.Arithmetic.div_exists_unique_pos {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a : V) {b : V} (pos : 0 < b) :
∃! u : V, b * u a a < b * (u + 1)
theorem LO.FirstOrder.Arithmetic.div_exists_unique {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a b : V) :
∃! u : V, (0 < bb * u a a < b * (u + 1)) (b = 0u = 0)
@[implicit_reducible]
Equations
Instances For
    theorem LO.FirstOrder.Arithmetic.lt_mul_div_succ {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {b : V} (a : V) (h : 0 < b) :
    a < b * (a / b + 1)
    theorem LO.FirstOrder.Arithmetic.eq_mul_div_add_of_pos {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a : V) {b : V} (hb : 0 < b) :
    r < b, a = b * (a / b) + r
    theorem LO.FirstOrder.Arithmetic.div_graph {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {a b c : V} :
    c = a / b (0 < bb * c a a < b * (c + 1)) (b = 0c = 0)
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem LO.FirstOrder.Arithmetic.div_spec_of_pos' {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {b : V} (a : V) (h : 0 < b) :
      v < b, a = a / b * b + v
      theorem LO.FirstOrder.Arithmetic.div_eq_of {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {c a b : V} (hb : b * c a) (ha : a < b * (c + 1)) :
      a / b = c
      theorem LO.FirstOrder.Arithmetic.div_mul_add {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a b : V) {r : V} (hr : r < b) :
      (a * b + r) / b = a
      theorem LO.FirstOrder.Arithmetic.div_mul_add' {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a b : V) {r : V} (hr : r < b) :
      (b * a + r) / b = a
      theorem LO.FirstOrder.Arithmetic.lt_mul_div {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a : V) {b : V} (pos : 0 < b) :
      a < b * (a / b + 1)
      theorem LO.FirstOrder.Arithmetic.div_add_mul_self {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a c : V) {b : V} (pos : 0 < b) :
      (a + c * b) / b = a / b + c
      theorem LO.FirstOrder.Arithmetic.div_add_mul_self' {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a c : V) {b : V} (pos : 0 < b) :
      (a + b * c) / b = a / b + c
      theorem LO.FirstOrder.Arithmetic.div_mul_add_self {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a c : V) {b : V} (pos : 0 < b) :
      (a * b + c) / b = a + c / b
      theorem LO.FirstOrder.Arithmetic.div_mul_add_self' {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a c : V) {b : V} (pos : 0 < b) :
      (b * a + c) / b = a + c / b
      @[simp]
      theorem LO.FirstOrder.Arithmetic.div_mul_left {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a : V) {b : V} (pos : 0 < b) :
      a * b / b = a
      @[simp]
      theorem LO.FirstOrder.Arithmetic.div_mul_right {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a : V) {b : V} (pos : 0 < b) :
      b * a / b = a
      @[simp]
      @[simp]
      @[simp]
      theorem LO.FirstOrder.Arithmetic.div_mul' {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a : V) {b : V} (pos : 0 < b) :
      b * a / b = a
      @[simp]
      theorem LO.FirstOrder.Arithmetic.div_add_self_left {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {a : V} (pos : 0 < a) (b : V) :
      (a + b) / a = 1 + b / a
      @[simp]
      theorem LO.FirstOrder.Arithmetic.div_add_self_right {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a : V) {b : V} (pos : 0 < b) :
      (a + b) / b = a / b + 1
      theorem LO.FirstOrder.Arithmetic.div_cancel_left {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {c : V} (pos : 0 < c) (a b : V) :
      c * a / (c * b) = a / b
      theorem LO.FirstOrder.Arithmetic.div_cancel_right {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {c : V} (pos : 0 < c) (a b : V) :
      a * c / (b * c) = a / b

      Remainder #

      Equations
      Instances For
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem LO.FirstOrder.Arithmetic.rem_graph {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a b c : V) :
          a = b % c xb, x = b / c a = b - c * x
          theorem LO.FirstOrder.Arithmetic.mod_mul_add_of_lt {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a b : V) {r : V} (hr : r < b) :
          (a * b + r) % b = r
          @[simp]
          theorem LO.FirstOrder.Arithmetic.mod_mul_add {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {b : V} (a c : V) (pos : 0 < b) :
          (a * b + c) % b = c % b
          @[simp]
          theorem LO.FirstOrder.Arithmetic.mod_add_mul {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {c : V} (a b : V) (pos : 0 < c) :
          (a + b * c) % c = a % c
          @[simp]
          theorem LO.FirstOrder.Arithmetic.mod_add_mul' {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {c : V} (a b : V) (pos : 0 < c) :
          (a + c * b) % c = a % c
          @[simp]
          theorem LO.FirstOrder.Arithmetic.mod_mul_add' {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {b : V} (a c : V) (pos : 0 < b) :
          (b * a + c) % b = c % b
          @[simp]
          theorem LO.FirstOrder.Arithmetic.mod_lt {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a : V) {b : V} (pos : 0 < b) :
          a % b < b
          @[simp]
          theorem LO.FirstOrder.Arithmetic.mod_add_remove_right_of_dvd {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {a b m : V} (h : m b) (pos : 0 < m) :
          (a + b) % m = a % m
          @[simp]
          theorem LO.FirstOrder.Arithmetic.mod_add_remove_left {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {a b : V} (pos : 0 < a) :
          (a + b) % a = b % a
          theorem LO.FirstOrder.Arithmetic.mod_add_remove_left_of_dvd {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {a b m : V} (h : m a) (pos : 0 < m) :
          (a + b) % m = b % m
          theorem LO.FirstOrder.Arithmetic.mod_add {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {a b m : V} (pos : 0 < m) :
          (a + b) % m = (a % m + b % m) % m
          theorem LO.FirstOrder.Arithmetic.mod_mul {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {a b m : V} (pos : 0 < m) :
          a * b % m = a % m * (b % m) % m
          theorem LO.FirstOrder.Arithmetic.even_or_odd {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a : V) :
          ∃ (x : V), a = 2 * x a = 2 * x + 1

          Square root #

          Equations
          Instances For
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem LO.FirstOrder.Arithmetic.eq_sqrt {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (x a : V) :
              x * x a a < (x + 1) * (x + 1) → x = a
              theorem LO.FirstOrder.Arithmetic.sqrt_eq_of_le_of_lt {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {x a : V} (le : x * x a) (lt : a < (x + 1) * (x + 1)) :
              a = x
              theorem LO.FirstOrder.Arithmetic.sqrt_eq_of_le_of_le {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {x a : V} (le : x * x a) (h : a x * x + 2 * x) :
              a = x

              Pairing #

              Equations
              Instances For

                !⟪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
                    theorem LO.FirstOrder.Arithmetic.pair_graph {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {a b c : V} :
                    c = a, b a < b c = b * b + a b a c = a * a + a + b
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[reducible, inline]
                      Equations
                      Instances For
                        @[reducible, inline]
                        Equations
                        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.FirstOrder.Arithmetic.pair_lt_pair_left {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {a₁ a₂ : V} (h : a₁ < a₂) (b : V) :
                              a₁, b < a₂, b
                              theorem LO.FirstOrder.Arithmetic.pair_le_pair_left {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {a₁ a₂ : V} (h : a₁ a₂) (b : V) :
                              a₁, b a₂, b
                              theorem LO.FirstOrder.Arithmetic.pair_lt_pair_right {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a : V) {b₁ b₂ : V} (h : b₁ < b₂) :
                              a, b₁ < a, b₂
                              theorem LO.FirstOrder.Arithmetic.pair_le_pair_right {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] (a : V) {b₁ b₂ : V} (h : b₁ b₂) :
                              a, b₁ a, b₂
                              theorem LO.FirstOrder.Arithmetic.pair_le_pair {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {a₁ a₂ b₁ b₂ : V} (ha : a₁ a₂) (hb : b₁ b₂) :
                              a₁, b₁ a₂, b₂
                              theorem LO.FirstOrder.Arithmetic.pair_lt_pair {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {a₁ a₂ b₁ b₂ : V} (ha : a₁ < a₂) (hb : b₁ < b₂) :
                              a₁, b₁ < a₂, b₂
                              @[simp]
                              theorem LO.FirstOrder.Arithmetic.pair_ext_iff {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝗢𝗽𝗲𝗻] {a₁ a₂ b₁ b₂ : V} :
                              a₁, b₁ = a₂, b₂ a₁ = a₂ b₁ = 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
                                  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.FirstOrder.Arithmetic.ss (v : Fin 4) :
                                      v (Fin.succ 0).succ = v 2
                                      @[simp]
                                      Equations
                                      Instances For

                                        Polynomial induction #

                                        theorem LO.FirstOrder.Arithmetic.polynomial_induction {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗣𝗔⁻] (Γ : Polarity) (m : ) [V↓[ℒₒᵣ] ⊧* 𝗜𝗡𝗗 Γ m] {P : VProp} (hP : { Γ := Γ.coe, rank := m }-Predicate P) (zero : P 0) (even : x > 0, P xP (2 * x)) (odd : ∀ (x : V), P xP (2 * x + 1)) (x : V) :
                                        P x
                                        theorem LO.FirstOrder.Arithmetic.sigma0_polynomial_induction {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝚺₀] {P : VProp} (hP : 𝚺₀-Predicate P) (zero : P 0) (even : x > 0, P xP (2 * x)) (odd : ∀ (x : V), P xP (2 * x + 1)) (x : V) :
                                        P x
                                        theorem LO.FirstOrder.Arithmetic.sigma1_polynomial_induction {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝚺₁] {P : VProp} (hP : 𝚺₁-Predicate P) (zero : P 0) (even : x > 0, P xP (2 * x)) (odd : ∀ (x : V), P xP (2 * x + 1)) (x : V) :
                                        P x
                                        theorem LO.FirstOrder.Arithmetic.pi1_polynomial_induction {V : Type u_1} [ORingStructure V] [V↓[ℒₒᵣ] ⊧* 𝗜𝚺₁] {P : VProp} (hP : 𝚷₁-Predicate P) (zero : P 0) (even : x > 0, P xP (2 * x)) (odd : ∀ (x : V), P xP (2 * x + 1)) (x : V) :
                                        P x