Documentation

LeanPool.Nikodym.Nikodym.Construction.Tangent

Tangent lines on the product set #

This file implements blueprint node T01 of docs/nikodym_construction_lean_blueprint.md.

Everything is parametrised by k = h - 1 (the number of digits), as in Fibers.lean: digit vectors are Fin k → R, points of F ^ h are Fin (k + 1) → F built with Fin.snoc.

Throughout, n and q are the integer parameters of Q01, related to the types by Fintype.card ι = n and Fintype.card F = q; the constants are given as hypotheses ρ = 1 / (100 (k + 1) √n) and γ = 1 / 10. Only 1 ≤ n and 1 ≤ q are needed here (the Q02 threshold 2 ^ (n 2 ^ k) ≤ q implies 1 ≤ q). Declarations involving Finset.image carry a [DecidableEq F] assumption (consumers may use classical).

Blueprint T01: points, directions and the product set #

noncomputable def Nikodym.Scaffold.pt {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) (n q k : ℕ) (a w : Fin k → R) :
Fin (k + 1) → F

Blueprint T01: the point p(a, w) = (φ (a 0), …, φ (a (k-1)), φ (b(w))) ∈ F ^ (k + 1).

Equations
Instances For
    noncomputable def Nikodym.Scaffold.dir {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) {k : ℕ} (w : Fin k → R) :
    Fin (k + 1) → F

    Blueprint T01: the direction v(w) = (φ (w 0), …, φ (w (k-1)), 1) ∈ F ^ (k + 1).

    Equations
    Instances For
      @[simp]
      theorem Nikodym.Scaffold.pt_castSucc {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) {n q k : ℕ} (a w : Fin k → R) (i : Fin k) :
      pt φ n q k a w i.castSucc = φ (a i)

      Blueprint T01: the first k coordinates of pt.

      @[simp]
      theorem Nikodym.Scaffold.pt_last {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) {n q k : ℕ} (a w : Fin k → R) :
      pt φ n q k a w (Fin.last k) = φ (base n q k w)

      Blueprint T01: the last coordinate of pt.

      @[simp]
      theorem Nikodym.Scaffold.dir_castSucc {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) {k : ℕ} (w : Fin k → R) (i : Fin k) :
      dir φ w i.castSucc = φ (w i)

      Blueprint T01: the first k coordinates of dir.

      @[simp]
      theorem Nikodym.Scaffold.dir_last {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) {k : ℕ} (w : Fin k → R) :
      dir φ w (Fin.last k) = 1

      Blueprint T01: the last coordinate of dir.

      theorem Nikodym.Scaffold.dir_ne_zero {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) {k : ℕ} (w : Fin k → R) :
      dir φ w ≠ 0

      Blueprint T01: v(w) ≠ 0.

      noncomputable def Nikodym.Scaffold.ptFamily {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) [DecidableEq F] (n q k : ℕ) (A : Finset R) (B : Finset (Fin k → R)) :
      Fin (k + 1) → Finset F

      Blueprint T01: the family of factors (φ(A), …, φ(A), φ(b(B))) of the product set.

      Equations
      Instances For
        noncomputable def Nikodym.Scaffold.ptSet {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) [DecidableEq F] (n q k : ℕ) (A : Finset R) (B : Finset (Fin k → R)) :
        Finset (Fin (k + 1) → F)

        Blueprint T01: the product set P = φ(A) ^ k × φ(b(B)) ⊆ F ^ (k + 1).

        Equations
        Instances For
          @[simp]
          theorem Nikodym.Scaffold.ptFamily_castSucc {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) {n q k : ℕ} [DecidableEq F] (A : Finset R) (B : Finset (Fin k → R)) (i : Fin k) :
          ptFamily φ n q k A B i.castSucc = Finset.image (⇑φ) A

          Blueprint T01: the first k factors of ptFamily.

          @[simp]
          theorem Nikodym.Scaffold.ptFamily_last {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) {n q k : ℕ} [DecidableEq F] (A : Finset R) (B : Finset (Fin k → R)) :
          ptFamily φ n q k A B (Fin.last k) = Finset.image (⇑φ ∘ base n q k) B

          Blueprint T01: the last factor of ptFamily.

          theorem Nikodym.Scaffold.mem_ptSet {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) {n q k : ℕ} [DecidableEq F] {A : Finset R} {B : Finset (Fin k → R)} {u : Fin (k + 1) → F} :
          u ∈ ptSet φ n q k A B ↔ (∀ (i : Fin k), u i.castSucc ∈ Finset.image (⇑φ) A) ∧ u (Fin.last k) ∈ Finset.image (⇑φ ∘ base n q k) B

          Blueprint T01: membership in the product set.

          theorem Nikodym.Scaffold.pt_mem_ptSet {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) {n q k : ℕ} [DecidableEq F] {A : Finset R} {B : Finset (Fin k → R)} {a w : Fin k → R} (ha : a ∈ Fintype.piFinset fun (x : Fin k) => A) (hw : w ∈ B) :
          pt φ n q k a w ∈ ptSet φ n q k A B

          Blueprint T01: p(a, w) ∈ P for a ∈ A ^ k and w ∈ B.

          theorem Nikodym.Scaffold.exists_pt_eq {R : Type u_1} {F : Type u_2} [CommRing R] [Field F] (φ : R →+* F) {n q k : ℕ} [DecidableEq F] {A : Finset R} {B : Finset (Fin k → R)} {u : Fin (k + 1) → F} (hu : u ∈ ptSet φ n q k A B) :
          ∃ (a : Fin k → R) (w : Fin k → R), (a ∈ Fintype.piFinset fun (x : Fin k) => A) ∧ w ∈ B ∧ pt φ n q k a w = u

          Blueprint T01: every point of P is of the form p(a, w) with a ∈ A ^ k and w ∈ B.

          Blueprint T01a: the small-kernel property on boxes of radius < M #

          theorem Nikodym.Scaffold.one_le_M {n q : ℕ} (hn1 : 1 ≤ n) (hq1 : 1 ≤ q) :

          Blueprint Q01 (bridge): 1 ≤ M for 1 ≤ n and 1 ≤ q.

          theorem Nikodym.Scaffold.eq_zero_of_map_eq_zero_of_lt_M {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q : ℕ} (S : Scaffold b σ φ K₀ K₁) (hn : Fintype.card ι = n) (hn1 : 1 ≤ n) (hqF : Fintype.card F = q) {T : ℝ} (hT : T < ↑(Params.M n q)) {x : R} (hx : ∀ (i : ι), |(σ i) x| ≤ T) (h0 : φ x = 0) :
          x = 0

          Blueprint T01a: if x ∈ box T with T < M and φ x = 0 then x = 0, since ∏ i, |σ i x| ≤ T ^ n < M ^ n ≤ q.

          theorem Nikodym.Scaffold.eq_of_map_eq_of_box {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q : ℕ} (S : Scaffold b σ φ K₀ K₁) (hn : Fintype.card ι = n) (hn1 : 1 ≤ n) (hqF : Fintype.card F = q) {T : ℝ} (hT : 2 * T < ↑(Params.M n q)) {x y : R} (hx : ∀ (i : ι), |(σ i) x| ≤ T) (hy : ∀ (i : ι), |(σ i) y| ≤ T) (hxy : φ x = φ y) :
          x = y

          Blueprint T01a: φ is injective on any box of radius T with 2 T < M.

          theorem Nikodym.Scaffold.injOn_of_box {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q : ℕ} (S : Scaffold b σ φ K₀ K₁) (hn : Fintype.card ι = n) (hn1 : 1 ≤ n) (hqF : Fintype.card F = q) {T : ℝ} (hT : 2 * T < ↑(Params.M n q)) {A : Finset R} (hA : A ⊆ S.boxFinset T) :
          Set.InjOn ⇑φ ↑A

          Blueprint T01a: φ is injective on any Finset contained in a box of radius T with 2 T < M.

          Blueprint T01: the constants ρ = 1 / (100 (k + 1) √n) and γ = 1 / 10 #

          theorem Nikodym.Scaffold.one_le_sqrt_n {n : ℕ} (hn1 : 1 ≤ n) :
          1 ≤ √↑n

          Blueprint T01: 1 ≤ √n for 1 ≤ n.

          theorem Nikodym.Scaffold.rho_pos {n k : ℕ} {ρ : ℝ} (hn1 : 1 ≤ n) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) :
          0 < ρ

          Blueprint T01: the constant ρ = 1 / (100 (k + 1) √n) is positive.

          theorem Nikodym.Scaffold.rho_mul_eq {n k : ℕ} {ρ : ℝ} (hn1 : 1 ≤ n) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) :
          ρ * (↑k + 1) * √↑n = 1 / 100

          Blueprint T01: ρ (k + 1) √n = 1 / 100.

          theorem Nikodym.Scaffold.rho_mul_le {n k : ℕ} {ρ : ℝ} (hn1 : 1 ≤ n) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) :
          ρ * (↑k + 1) ≤ 1 / 100

          Blueprint T01: ρ (k + 1) ≤ 1 / 100.

          theorem Nikodym.Scaffold.rho_mul_sqrt_le {n k : ℕ} {ρ : ℝ} (hn1 : 1 ≤ n) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) :
          ρ * √↑n ≤ 1 / 100

          Blueprint T01: ρ √n ≤ 1 / 100.

          theorem Nikodym.Scaffold.rho_le {n k : ℕ} {ρ : ℝ} (hn1 : 1 ≤ n) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) :
          ρ ≤ 1 / 100

          Blueprint T01: ρ ≤ 1 / 100.

          theorem Nikodym.Scaffold.two_rho_sqrt_lt_one {n k : ℕ} {ρ : ℝ} (hn1 : 1 ≤ n) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) :
          2 * ρ * √↑n < 1

          Blueprint T01 / C02 hypothesis: 2 ρ √n < 1.

          Blueprint T01a: injectivity of φ on A and on b(B), injectivity of p #

          theorem Nikodym.Scaffold.injOn_A {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q : ℕ} {γ : ℝ} (S : Scaffold b σ φ K₀ K₁) (hn : Fintype.card ι = n) (hn1 : 1 ≤ n) (hqF : Fintype.card F = q) (hq1 : 1 ≤ q) (hγ : γ = 1 / 10) {A : Finset R} (hA : A ⊆ S.boxFinset (γ * ↑(Params.M n q))) :
          Set.InjOn ⇑φ ↑A

          Blueprint T01a: φ is injective on the trace fiber A ⊆ box (γ M) (γ = 1/10).

          theorem Nikodym.Scaffold.eq_of_map_base_eq {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q k : ℕ} {ρ : ℝ} (S : Scaffold b σ φ K₀ K₁) (hn : Fintype.card ι = n) (hn1 : 1 ≤ n) (hqF : Fintype.card F = q) (hq1 : 1 ≤ q) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) {w w' : Fin k → R} (hw : w ∈ S.digitSpace n q k ρ) (hw' : w' ∈ S.digitSpace n q k ρ) (h : φ (base n q k w) = φ (base n q k w')) :
          w = w'

          Blueprint T01a: φ is injective on the base points b(w), w ∈ B ⊆ digitSpace.

          theorem Nikodym.Scaffold.injOn_base_B {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q k : ℕ} {ρ : ℝ} (S : Scaffold b σ φ K₀ K₁) (hn : Fintype.card ι = n) (hn1 : 1 ≤ n) (hqF : Fintype.card F = q) (hq1 : 1 ≤ q) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) {B : Finset (Fin k → R)} (hB : B ⊆ S.digitSpace n q k ρ) :
          Set.InjOn (⇑φ ∘ base n q k) ↑B

          Blueprint T01a: φ ∘ b is injective on B ⊆ digitSpace.

          theorem Nikodym.Scaffold.pt_injOn {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q k : ℕ} {ρ γ : ℝ} (S : Scaffold b σ φ K₀ K₁) (hn : Fintype.card ι = n) (hn1 : 1 ≤ n) (hqF : Fintype.card F = q) (hq1 : 1 ≤ q) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) (hγ : γ = 1 / 10) {A : Finset R} (hA : A ⊆ S.boxFinset (γ * ↑(Params.M n q))) {B : Finset (Fin k → R)} (hB : B ⊆ S.digitSpace n q k ρ) :
          Set.InjOn (fun (p : (Fin k → R) × (Fin k → R)) => pt φ n q k p.1 p.2) (↑(Fintype.piFinset fun (x : Fin k) => A) ×ˢ ↑B)

          Blueprint T01a: the point map (a, w) ↦ p(a, w) is injective on A ^ k × B.

          Blueprint T01b: lifting #

          theorem Nikodym.Scaffold.eq_zero_of_map_eq_zero_of_small {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q k : ℕ} {ρ γ : ℝ} (S : Scaffold b σ φ K₀ K₁) (hn : Fintype.card ι = n) (hn1 : 1 ≤ n) (hqF : Fintype.card F = q) (hq1 : 1 ≤ q) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) (hγ : γ = 1 / 10) {δ : R} (hδ : ∀ (i : ι), |(σ i) δ| ≤ 2 * γ * ↑(Params.M n q) + 2 * ρ ^ 2 * (↑k + 1) * ↑(Params.M n q)) (h0 : φ δ = 0) :
          δ = 0

          Blueprint T01b: if φ δ = 0 and δ ∈ box (2 γ M + 2 ρ² (k + 1) M) then δ = 0, because 2 γ + 2 ρ² (k + 1) < 1.

          Blueprint T01c: prefix sums below an index #

          noncomputable def Nikodym.Scaffold.prefixSumBelow {R : Type u_1} [CommRing R] (n q k : ℕ) (w : Fin k → R) (i : Fin k) :
          R

          Blueprint T01c: the prefix sum strictly below i, y_{i-1}(w) = ∑_{j < i} Dⱼ wⱼ (0 for i = 0).

          Equations
          Instances For
            theorem Nikodym.Scaffold.prefixSum_eq_prefixSumBelow_add {R : Type u_1} [CommRing R] {n q k : ℕ} (w : Fin k → R) (i : Fin k) :
            prefixSum n q k w i = prefixSumBelow n q k w i + ↑(D (radix n q k) i) * w i

            Blueprint T01c: yᵢ(w) = y_{i-1}(w) + Dᵢ wᵢ.

            theorem Nikodym.Scaffold.abs_prefixSumBelow_le {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q k : ℕ} {ρ : ℝ} (S : Scaffold b σ φ K₀ K₁) (hq : 1 ≤ q) (hρ : 0 ≤ ρ) {w : Fin k → R} (hw : w ∈ S.digitSpace n q k ρ) (i : Fin k) (ε : ι) :
            |(σ ε) (prefixSumBelow n q k w i)| ≤ ρ * ↑↑i * ↑(Params.D n q (↑i + 1))

            Blueprint T01c: the prefix sum below i is bounded by ρ i D_{i+1} on the digit space.

            theorem Nikodym.Scaffold.base_sub_base_eq {R : Type u_1} [CommRing R] {n q k : ℕ} (w w' : Fin k → R) (i : Fin k) (h : ∀ (j : Fin k), i < j → w' j = w j) :
            base n q k w' - base n q k w = prefixSum n q k w' i - prefixSum n q k w i

            Blueprint T01c: if w and w' agree above i, then b(w') - b(w) = yᵢ(w') - yᵢ(w).

            Blueprint T01c: the collision argument #

            theorem Nikodym.Scaffold.abs_sub_prefixSum_le {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q k : ℕ} {ρ : ℝ} (S : Scaffold b σ φ K₀ K₁) (hq : 1 ≤ q) (hρ : 0 ≤ ρ) {w w' : Fin k → R} (hw : w ∈ S.digitSpace n q k ρ) (hw' : w' ∈ S.digitSpace n q k ρ) (i : Fin k) (ε : ι) :
            |(σ ε) (prefixSum n q k w' i - prefixSum n q k w i)| ≤ 2 * ρ * (↑↑i + 1) * ↑(Params.D n q (↑i + 2))

            Blueprint T01c: t = yᵢ(w') - yᵢ(w) lies in box (2 ρ (i + 1) D_{i+2}).

            theorem Nikodym.Scaffold.abs_mul_sub_prefixSum_le {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q k : ℕ} {ρ : ℝ} (S : Scaffold b σ φ K₀ K₁) (hn1 : 1 ≤ n) (hq1 : 1 ≤ q) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) {w w' : Fin k → R} (hw : w ∈ S.digitSpace n q k ρ) (hw' : w' ∈ S.digitSpace n q k ρ) (i : Fin k) (ε : ι) :
            |(σ ε) (w i * (prefixSum n q k w' i - prefixSum n q k w i))| ≤ 2 * ρ ^ 2 * (↑k + 1) * ↑(Params.M n q)

            Blueprint T01c: wᵢ t lies in box (2 ρ² (k + 1) M), using D_{i+1} Q_{i+1} ^ 2 ≤ M.

            theorem Nikodym.Scaffold.digit_eq_of_trace_eq_zero {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q k : ℕ} {ρ : ℝ} (S : Scaffold b σ φ K₀ K₁) (hn : Fintype.card ι = n) (hn1 : 1 ≤ n) (hq1 : 1 ≤ q) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) {w w' : Fin k → R} (hw : w ∈ S.digitSpace n q k ρ) (hw' : w' ∈ S.digitSpace n q k ρ) (hc : color σ n q k w = color σ n q k w') (i : Fin k) (ht : trace σ (w i * (prefixSum n q k w' i - prefixSum n q k w i)) = 0) :
            w i = w' i

            Blueprint T01c (decoding step): if w, w' ∈ digitSpace have the same color and trace (wᵢ (yᵢ(w') - yᵢ(w))) = 0, then wᵢ = w'ᵢ. This is D02 with Q = Dᵢ, u = y_{i-1}(w), u' = y_{i-1}(w').

            theorem Nikodym.Scaffold.no_collision {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q k : ℕ} {ρ γ : ℝ} (S : Scaffold b σ φ K₀ K₁) (hn : Fintype.card ι = n) (hn1 : 1 ≤ n) (hqF : Fintype.card F = q) (hq1 : 1 ≤ q) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) (hγ : γ = 1 / 10) {s : ℤ} {A : Finset R} (hA : A ⊆ S.boxFinset (γ * ↑(Params.M n q))) (hAs : ∀ a ∈ A, trace σ a = ↑s) {B : Finset (Fin k → R)} (hB : B ⊆ S.digitSpace n q k ρ) (hBc : ∀ w ∈ B, ∀ w' ∈ B, color σ n q k w = color σ n q k w') {a a' w w' : Fin k → R} (ha : a ∈ Fintype.piFinset fun (x : Fin k) => A) (hw : w ∈ B) (ha' : a' ∈ Fintype.piFinset fun (x : Fin k) => A) (hw' : w' ∈ B) (μ : F) (hcol : pt φ n q k a' w' = pt φ n q k a w + μ • dir φ w) :
            a' = a ∧ w' = w

            Blueprint T01c (collision): if p(a', w') = p(a, w) + μ v(w) with a, a' ∈ A ^ k and w, w' ∈ B, then (a', w') = (a, w).

            Blueprint T01: main statements #

            theorem Nikodym.Scaffold.tangent_hypothesis {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q k : ℕ} {ρ γ : ℝ} [DecidableEq F] (S : Scaffold b σ φ K₀ K₁) (hn : Fintype.card ι = n) (hn1 : 1 ≤ n) (hqF : Fintype.card F = q) (hq1 : 1 ≤ q) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) (hγ : γ = 1 / 10) {s : ℤ} {A : Finset R} (hA : A ⊆ S.boxFinset (γ * ↑(Params.M n q))) (hAs : ∀ a ∈ A, trace σ a = ↑s) {B : Finset (Fin k → R)} (hB : B ⊆ S.digitSpace n q k ρ) (hBc : ∀ w ∈ B, ∀ w' ∈ B, color σ n q k w = color σ n q k w') (u : Fin (k + 1) → F) :
            u ∈ ptSet φ n q k A B → ∃ (v : Fin (k + 1) → F), v ≠ 0 ∧ ∀ (t : F), t ≠ 0 → u + t • v ∉ ptSet φ n q k A B

            Blueprint T01 (main statement): the product set P = ptSet φ n q k A B satisfies the hypothesis of P01: through every u ∈ P there is a direction v ≠ 0 whose punctured line u + t v (t ≠ 0) misses P. Here A ⊆ box (γ M) is a trace fiber and B ⊆ digitSpace is a color class, with ρ = 1 / (100 (k + 1) √n) and γ = 1 / 10.

            theorem Nikodym.Scaffold.card_ptSet {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q k : ℕ} {ρ γ : ℝ} [DecidableEq F] (S : Scaffold b σ φ K₀ K₁) (hn : Fintype.card ι = n) (hn1 : 1 ≤ n) (hqF : Fintype.card F = q) (hq1 : 1 ≤ q) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) (hγ : γ = 1 / 10) {A : Finset R} (hA : A ⊆ S.boxFinset (γ * ↑(Params.M n q))) {B : Finset (Fin k → R)} (hB : B ⊆ S.digitSpace n q k ρ) :
            (ptSet φ n q k A B).card = A.card ^ k * B.card

            Blueprint T01: #P = #A ^ k * #B.

            theorem Nikodym.Scaffold.isNikodym_univ_sdiff_ptSet {R : Type u_1} {ι : Type u_2} {κ : Type u_3} {F : Type u_4} [CommRing R] [Fintype ι] [Fintype κ] [Field F] [Fintype F] {b : Module.Basis κ ℤ R} {σ : ι → R →+* ℝ} {φ : R →+* F} {K₀ K₁ : ℝ} {n q k : ℕ} {ρ γ : ℝ} [DecidableEq F] (S : Scaffold b σ φ K₀ K₁) (hk : 1 ≤ k) (hn : Fintype.card ι = n) (hn1 : 1 ≤ n) (hqF : Fintype.card F = q) (hq1 : 1 ≤ q) (hρ : ρ = 1 / (100 * (↑k + 1) * √↑n)) (hγ : γ = 1 / 10) {s : ℤ} {A : Finset R} (hA : A ⊆ S.boxFinset (γ * ↑(Params.M n q))) (hAs : ∀ a ∈ A, trace σ a = ↑s) {B : Finset (Fin k → R)} (hB : B ⊆ S.digitSpace n q k ρ) (hBc : ∀ w ∈ B, ∀ w' ∈ B, color σ n q k w = color σ n q k w') :
            IsNikodym (Finset.univ \ ptSet φ n q k A B)

            Blueprint T01 + P01: the complement univ \ P of the product set is a Nikodym set in F ^ (k + 1) (for k ≥ 1, i.e. h = k + 1 ≥ 2).