Documentation

LeanPool.Wallace.TriangularPreprocess

Triangular coding and block preprocessing #

This file supplies the unconditional set-theoretic bookkeeping that precedes the character construction. The index set is the canonical well-order of cardinality continuum. All injective sequences in the corresponding free Abelian group are coded, and their codes are assigned distinct indices strictly above every coordinate in the sequence. The second half of the file constructs a genuine subsequence whose prescribed finite blocks are bounded-independent.

The continuum initial ordinal and its free group #

@[reducible, inline]

The canonical well-ordered index type of cardinality continuum.

Equations
Instances For
    @[reducible, inline]

    The free Abelian group on the canonical continuum index.

    Equations
    Instances For
      @[reducible, inline]

      The type of all injective sequences in the free group.

      Equations
      Instances For

        An injective ray along one basis vector.

        Equations
        Instances For

          Countable supports have strict upper bounds #

          Every countable set of continuum indices is strictly bounded.

          A chosen strict upper bound for the support of each coded sequence.

          Equations
          Instances For

            Fresh indices above all supports #

            theorem Wallace.TriangularPreprocess.exists_fresh_above (bound : ContinuumIndex → ContinuumIndex) (a : ContinuumIndex) (previous : (b : ContinuumIndex) → b < a → ContinuumIndex) :
            ∃ (i : ContinuumIndex), bound a < i ∧ ∀ (b : ContinuumIndex) (h : b < a), previous b h ≠ i

            Transfinite fresh-index assignment. At stage a, it avoids all values assigned below a and lies strictly above bound a.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              Blockwise bounded-independence selection #

              Bounded independence is inherited by finite subsets.

              theorem Wallace.TriangularPreprocess.exists_index_gt_avoiding_finset {G : Type u_1} {u : ℕ → G} (hu : Function.Injective u) (B : Finset G) (k : ℕ) :
              ∃ (m : ℕ), k < m ∧ u m ∉ B

              An injective sequence has arbitrarily late terms outside any fixed finite set.

              State of the recursive block selector. values l contains the values already selected in block l; last is the last source index used.

              • last : ℕ

                The most recently selected block index.

              • values : ℕ → Finset G

                The finite set selected at each block index.

              Instances For

                The block-selection state with no selected values.

                Equations
                Instances For
                  noncomputable def Wallace.TriangularPreprocess.excludedAt {G : Type u_1} [AddCommGroup G] (M block : ℕ → ℕ) (n : ℕ) (st : BlockSelectionState G) :

                  The finite set of values excluded at the next block-selection stage.

                  Equations
                  Instances For
                    noncomputable def Wallace.TriangularPreprocess.nextBlockIndex {G : Type u_1} [AddCommGroup G] (u : ℕ → G) (hu : Function.Injective u) (M block : ℕ → ℕ) (n : ℕ) (st : BlockSelectionState G) :

                    The next source index: strictly later than the previous one and outside both the values already used in this block and every bounded forbidden equation over them.

                    Equations
                    Instances For
                      noncomputable def Wallace.TriangularPreprocess.blockSelectionStep {G : Type u_1} [AddCommGroup G] (u : ℕ → G) (hu : Function.Injective u) (M block : ℕ → ℕ) (n : ℕ) (st : BlockSelectionState G) :

                      Advance block selection by choosing values outside the excluded set.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For

                        States after the first n positions of the new sequence have been selected.

                        Equations
                        Instances For
                          noncomputable def Wallace.TriangularPreprocess.blockSubsequenceIndex {G : Type u_1} [AddCommGroup G] (u : ℕ → G) (hu : Function.Injective u) (M block : ℕ → ℕ) (n : ℕ) :

                          The actual source-index subsequence selected by the state recursion.

                          Equations
                          Instances For

                            A cutoff beyond every position in a finite set.

                            Equations
                            Instances For
                              theorem Wallace.TriangularPreprocess.exists_blockwise_boundedIndependent_subsequence {G : Type u_1} [AddCommGroup G] [IsAddTorsionFree G] [DecidableEq G] (u : ℕ → G) (hu : Function.Injective u) (block M : ℕ → ℕ) (hfinite : ∀ (l : ℕ), {n : ℕ | block n = l}.Finite) :
                              ∃ (φ : ℕ → ℕ), StrictMono φ ∧ ∀ (l : ℕ), FiniteCombinatorics.BoundedIndependent (M l) (Finset.image (fun (n : ℕ) => u (φ n)) ⋯.toFinset)

                              Generic block preprocessing. block n specifies which finite block contains output position n. Each block may have any prescribed positive finite size; only finiteness is needed by the selection argument.

                              The consecutive block partition used in the paper #

                              The first position of block l, namely ∑ j < l, N j. This is the paper's S_l.

                              Equations
                              Instances For
                                theorem Wallace.TriangularPreprocess.index_le_blockStart (N : ℕ → ℕ) (hN : ∀ (l : ℕ), 0 < N l) (l : ℕ) :
                                def Wallace.TriangularPreprocess.blockOf (N : ℕ → ℕ) (hN : ∀ (l : ℕ), 0 < N l) (n : ℕ) :

                                The unique block label whose consecutive half-open interval contains n.

                                Equations
                                Instances For
                                  theorem Wallace.TriangularPreprocess.blockOf_spec (N : ℕ → ℕ) (hN : ∀ (l : ℕ), 0 < N l) (n : ℕ) :
                                  blockStart N (blockOf N hN n) ≤ n ∧ n < blockStart N (blockOf N hN n + 1)
                                  def Wallace.TriangularPreprocess.blockPositions (N : ℕ → ℕ) (_hN : ∀ (l : ℕ), 0 < N l) (l : ℕ) :

                                  The finite interval I_l = [S_l, S_l + N_l) used in the paper.

                                  Equations
                                  Instances For
                                    theorem Wallace.TriangularPreprocess.mem_blockPositions_iff (N : ℕ → ℕ) (hN : ∀ (l : ℕ), 0 < N l) {l n : ℕ} :
                                    n ∈ blockPositions N hN l ↔ blockOf N hN n = l
                                    theorem Wallace.TriangularPreprocess.blockPositions_card (N : ℕ → ℕ) (hN : ∀ (l : ℕ), 0 < N l) (l : ℕ) :
                                    (blockPositions N hN l).card = N l
                                    theorem Wallace.TriangularPreprocess.blockFiber_finite (N : ℕ → ℕ) (hN : ∀ (l : ℕ), 0 < N l) (l : ℕ) :
                                    {n : ℕ | blockOf N hN n = l}.Finite
                                    theorem Wallace.TriangularPreprocess.exists_boundedIndependent_subsequence_for_sizes {G : Type u_1} [AddCommGroup G] [IsAddTorsionFree G] [DecidableEq G] (u : ℕ → G) (hu : Function.Injective u) (N : ℕ → ℕ) (hN : ∀ (l : ℕ), 0 < N l) (M : ℕ → ℕ) :
                                    ∃ (φ : ℕ → ℕ), StrictMono φ ∧ ∀ (l : ℕ), (blockPositions N hN l).card = N l ∧ FiniteCombinatorics.BoundedIndependent (M l) (Finset.image (fun (n : ℕ) => u (φ n)) (blockPositions N hN l))

                                    Block preprocessing for any prescribed sequence of positive finite sizes.

                                    The paper's shifted coded sequences #

                                    Full block preprocessing. For every triangular code and every prescribed positive block size sequence N and coefficient-bound sequence M, a genuine subsequence is chosen so that the shifted values in each block have exactly size N l and are M l-independent. The original strict support bound is preserved by passage to the subsequence.