Documentation

LeanPool.SmallUndecidableGroups.Thue.Matiyasevich.RowSelection

The row-selection combinatorics behind the displayed identity on page 49. selectOdd keeps positions 1,3,5,...; iterating it u times keeps the positions congruent to 2^u - 1 modulo 2^u.

Iterate selectOdd.

Equations
Instances For
    theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.thin_getD {α : Type u_1} (u : ℕ) (W : List α) (i : ℕ) (d : α) :
    (thin u W).getD i d = W.getD (2 ^ u * (i + 1) - 1) d

    Aligned expansion #

    Insert 2^u - 1 zeroes before every binary letter. The original letters then occupy precisely the positions congruent to 2^u - 1 modulo 2^u.

    Equations
    Instances For
      @[simp]

      thin is a left inverse to aligned expansion.

      Reading a column-major transpose #

      theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.column_getD {t : ℕ} (rows : Fin t → List (Fin 2)) (col : ℕ) (i : Fin t) :
      (column rows col).getD (↑i) 0 = (rows i).getD col 0
      theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.columnsFrom_getD {t : ℕ} (rows : Fin t → List (Fin 2)) (start width col : ℕ) (i : Fin t) (hcol : col < width) :
      (columnsFrom rows start width).getD (col * t + ↑i) 0 = (rows i).getD (start + col) 0
      theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.transpose_getD {t width : ℕ} (rows : Fin t → List (Fin 2)) (col : ℕ) (i : Fin t) (hcol : col < width) :
      (transpose width rows).getD (col * t + ↑i) 0 = (rows i).getD col 0

      The padded row selected by e^u #

      Padded transpose whose last sampled padding symbol is an arbitrary bit z.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.paddedTransposeLast_length {t width : ℕ} (rows : Fin t → List (Fin 2)) (j : Fin t) (z : Fin 2) :
        (paddedTransposeLast width rows j z).length = (width + 1) * t
        theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.paddedTransposeLast_getD_row {t width : ℕ} (rows : Fin t → List (Fin 2)) (j : Fin t) (z : Fin 2) (ht : 0 < t) (col : ℕ) (hcol : col < width) :
        (paddedTransposeLast width rows j z).getD (t * (col + 1) - 1) 0 = (rows j).getD col 0
        theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.paddedTransposeLast_getD_last {t width : ℕ} (rows : Fin t → List (Fin 2)) (j : Fin t) (z : Fin 2) (ht : 0 < t) :
        (paddedTransposeLast width rows j z).getD (t * (width + 1) - 1) 0 = z
        theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.thin_paddedTranspose_last (u width : ℕ) (rows : Fin (2 ^ u) → List (Fin 2)) (j : Fin (2 ^ u)) (z : Fin 2) (hlen : ∀ (i : Fin (2 ^ u)), (rows i).length = width) :
        thin u (paddedTransposeLast width rows j z) = rows j ++ [z]

        General row selection with an arbitrary final sampled bit.

        Priority normalization performs the sampling #

        An initial block e^u implements thin u on a binary word whose length is a multiple of 2^u.

        The last column #

        theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.columnsFrom_last {t : ℕ} (rows : Fin t → List (Fin 2)) (start k : ℕ) :
        columnsFrom rows start (k + 1) = columnsFrom rows start k ++ column rows (start + k)
        theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.column_last {t width : ℕ} (rows : Fin t → List (Fin 2)) (hwidth : 0 < width) (hlen : ∀ (i : Fin t), (rows i).length = width) (hend : ∀ (i : Fin t), ∃ (init : List (Fin 2)), rows i = init ++ [1]) :
        column rows (width - 1) = List.replicate t 1
        theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.transpose_ends_b {t width : ℕ} (rows : Fin t → List (Fin 2)) (ht : 0 < t) (hwidth : 0 < width) (hlen : ∀ (i : Fin t), (rows i).length = width) (hend : ∀ (i : Fin t), ∃ (init : List (Fin 2)), rows i = init ++ [1]) :
        ∃ (init : List (Fin 2)), transpose width rows = init ++ [1]

        If every nonempty rectangular row ends in the binary letter 1, then the column-major transpose also ends in 1 (the final entry of its final column).

        theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.liftBinary_transpose_ends_b {t width : ℕ} (rows : Fin t → List (Fin 2)) (ht : 0 < t) (hwidth : 0 < width) (hlen : ∀ (i : Fin t), (rows i).length = width) (hend : ∀ (i : Fin t), ∃ (init : List (Fin 2)), rows i = init ++ [1]) :
        ∃ (init : List A₂), liftBinary (transpose width rows) = init ++ [b]

        An affine variant of thin. Whereas thin u keeps the positions 2^u - 1, 2 * 2^u - 1, ..., affineSample u j keeps the positions j, j + 2^u, .... This makes the phase-neutrality of a transposed block of length width * 2^u explicit.

        Keep the entries whose zero-based indices are congruent to j modulo 2^u.

        Equations
        Instances For
          theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.affineSample_getD (u : ℕ) (j : Fin (2 ^ u)) (W : List (Fin 2)) (k : ℕ) :
          (affineSample u j W).getD k 0 = W.getD (2 ^ u * k + ↑j) 0
          theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.affineSample_transpose_append (u width : ℕ) (rows : Fin (2 ^ u) → List (Fin 2)) (j : Fin (2 ^ u)) (R : List (Fin 2)) (hlen : ∀ (i : Fin (2 ^ u)), (rows i).length = width) :
          affineSample u j (transpose width rows ++ R) = rows j ++ affineSample u j R

          A column-major transpose occupies a whole number of sampling periods. Sampling it at phase j, followed by an arbitrary suffix, returns row j followed by the suffix sampled at the unchanged phase.

          The inclusion of a row index into the upper half of the next power-of-two block.

          Equations
          Instances For

            The inclusion of a row index into the lower half of the next power-of-two block.

            Equations
            Instances For
              theorem Undecidability.Thue.Matiyasevich1993.Priority.RowSelection.selectOdd_prefix_affineSample (u : ℕ) (P : List (Fin 2)) (j : Fin (2 ^ u)) :
              ∃ (P' : List (Fin 2)) (j' : Fin (2 ^ (u + 1))), ∀ (W : List (Fin 2)), selectOdd (P ++ affineSample u j W) = P' ++ affineSample (u + 1) j' W

              Prefixing an affine sample and applying selectOdd updates only the finite prefix and lifts the sampling phase by one binary digit. For an even prefix length the new phase is j + 2^u; for an odd prefix length it is j.