Documentation

Arithmetization.ISigmaZero.Exponential.Pow2

Equations
Instances For
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem LO.Arith.Pow2.pos {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {a : V} (h : Pow2 a) :
      0 < a
      theorem LO.Arith.Pow2.dvd {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {a : V} (h : Pow2 a) {r : V} (hr : r ≀ a) :
      1 < r β†’ r ∣ a β†’ 2 ∣ r
      theorem LO.Arith.Pow2.two_dvd {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {a : V} (h : Pow2 a) (lt : 1 < a) :
      2 ∣ a
      theorem LO.Arith.Pow2.two_dvd' {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {a : V} (h : Pow2 a) (lt : a β‰  1) :
      2 ∣ a
      theorem LO.Arith.Pow2.of_dvd {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {a b : V} (h : b ∣ a) :
      Pow2 a β†’ Pow2 b
      theorem LO.Arith.Pow2.elim {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {p : V} :
      Pow2 p ↔ p = 1 ∨ βˆƒ (q : V), p = 2 * q ∧ Pow2 q
      theorem LO.Arith.Pow2.div_two {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {p : V} (h : Pow2 p) (ne : p β‰  1) :
      Pow2 (p / 2)
      theorem LO.Arith.Pow2.two_mul_div_two {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {p : V} (h : Pow2 p) (ne : p β‰  1) :
      2 * (p / 2) = p
      theorem LO.Arith.Pow2.div_two_mul_two {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {p : V} (h : Pow2 p) (ne : p β‰  1) :
      p / 2 * 2 = p
      theorem LO.Arith.Pow2.elim' {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {p : V} :
      Pow2 p ↔ p = 1 ∨ 1 < p ∧ βˆƒ (q : V), p = 2 * q ∧ Pow2 q

      $\mathrm{LenBit} (2^i, a) \iff \text{$i$th-bit of $a$ is $1$}$.

      Equations
      Instances For
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem LO.Arith.LenBit.le {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {i a : V} (h : LenBit i a) :
          theorem LO.Arith.not_lenbit_of_lt {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {i a : V} (h : a < i) :
          @[simp]
          @[simp]
          theorem LO.Arith.LenBit.iff_rem {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {i a : V} :
          LenBit i a ↔ a / i % 2 = 1
          @[simp]
          theorem LO.Arith.LenBit.self {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {a : V} (pos : 0 < a) :
          LenBit a a
          theorem LO.Arith.LenBit.mod {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {i a k : V} (h : 2 * i ∣ k) :
          LenBit i (a % k) ↔ LenBit i a
          @[simp]
          theorem LO.Arith.LenBit.mod_two_mul_self {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {a i : V} :
          LenBit i (a % (2 * i)) ↔ LenBit i a
          theorem LO.Arith.LenBit.add {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {i a b : V} (h : 2 * i ∣ b) :
          LenBit i (a + b) ↔ LenBit i a
          theorem LO.Arith.LenBit.add_self {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {i a : V} (h : a < i) :
          LenBit i (a + i)
          theorem LO.Arith.LenBit.add_self_of_not_lenbit {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {a i : V} (pos : 0 < i) (h : Β¬LenBit i a) :
          LenBit i (a + i)
          theorem LO.Arith.LenBit.add_self_of_lenbit {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {a i : V} (pos : 0 < i) (h : LenBit i a) :
          Β¬LenBit i (a + i)
          theorem LO.Arith.LenBit.sub_self_of_lenbit {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* 𝐈open] {a i : V} (pos : 0 < i) (h : LenBit i a) :
          Β¬LenBit i (a - i)
          theorem LO.Arith.Pow2.mul {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a b : V} (ha : Pow2 a) (hb : Pow2 b) :
          Pow2 (a * b)
          theorem LO.Arith.Pow2.sq {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a : V} :
          Pow2 a β†’ Pow2 (a ^ 2)
          theorem LO.Arith.Pow2.dvd_of_le {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a b : V} (ha : Pow2 a) (hb : Pow2 b) :
          a ≀ b β†’ a ∣ b
          theorem LO.Arith.Pow2.le_iff_dvd {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a b : V} (ha : Pow2 a) (hb : Pow2 b) :
          theorem LO.Arith.Pow2.two_le {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a : V} (pa : Pow2 a) (ne1 : a β‰  1) :
          theorem LO.Arith.Pow2.le_iff_lt_two {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a b : V} (ha : Pow2 a) (hb : Pow2 b) :
          a ≀ b ↔ a < 2 * b
          theorem LO.Arith.Pow2.lt_iff_two_mul_le {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a b : V} (ha : Pow2 a) (hb : Pow2 b) :
          a < b ↔ 2 * a ≀ b
          theorem LO.Arith.Pow2.sq_or_dsq {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a : V} (pa : Pow2 a) :
          βˆƒ (b : V), a = b ^ 2 ∨ a = 2 * b ^ 2
          theorem LO.Arith.Pow2.sqrt {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a : V} (h : Pow2 a) (hsq : (√a) ^ 2 = a) :
          theorem LO.Arith.Pow2.four_le {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {i : V} (hi : Pow2 i) (lt : 2 < i) :
          theorem LO.Arith.Pow2.mul_add_lt_of_mul_lt_of_pos {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a b p q : V} (hp : Pow2 p) (hq : Pow2 q) (h : a * p < q) (hb : b < p) (hbq : b < q) :
          a * p + b < q
          theorem LO.Arith.LenBit.mod_pow2 {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a i j : V} (pi : Pow2 i) (pj : Pow2 j) (h : i < j) :
          LenBit i (a % j) ↔ LenBit i a
          theorem LO.Arith.LenBit.add_pow2 {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a i j : V} (pi : Pow2 i) (pj : Pow2 j) (h : i < j) :
          LenBit i (a + j) ↔ LenBit i a
          theorem LO.Arith.LenBit.add_pow2_iff_of_lt {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a i j : V} (pi : Pow2 i) (pj : Pow2 j) (h : a < j) :
          LenBit i (a + j) ↔ i = j ∨ LenBit i a
          theorem LO.Arith.lenbit_iff_add_mul {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {i a : V} (hi : Pow2 i) :
          LenBit i a ↔ βˆƒ (k : V), βˆƒ r < i, a = k * (2 * i) + i + r
          theorem LO.Arith.not_lenbit_iff_add_mul {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {i a : V} (hi : Pow2 i) :
          Β¬LenBit i a ↔ βˆƒ (k : V), βˆƒ r < i, a = k * (2 * i) + r
          theorem LO.Arith.lenbit_mul_add {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {i j a r : V} (pi : Pow2 i) (pj : Pow2 j) (hr : r < j) :
          LenBit (i * j) (a * j + r) ↔ LenBit i a
          theorem LO.Arith.lenbit_add_pow2_iff_of_not_lenbit {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a i j : V} (pi : Pow2 i) (pj : Pow2 j) (h : Β¬LenBit j a) :
          LenBit i (a + j) ↔ i = j ∨ LenBit i a
          theorem LO.Arith.lenbit_sub_pow2_iff_of_lenbit {V : Type u_1} [ORingStruc V] [V βŠ§β‚˜* πˆπšΊβ‚€] {a i j : V} (pi : Pow2 i) (pj : Pow2 j) (h : LenBit j a) :
          LenBit i (a - j) ↔ i β‰  j ∧ LenBit i a