Encyclopedia Patterns Patterns Min Ticks Cover
ARTICLE 4 claims 4 theorems
Patterns Min Ticks Cover
How many steps must a listing take before it can show every possible pattern? The answer is exactly two to the power of the pattern's bit count.
The fewest ticks
A machine that, at each tick of a clock, displays one pattern of lights. The patterns are drawn from all possible arrangements of d binary lights, so there are 2^d distinct patterns. The question is simple: how many ticks must the machine run before it has displayed every possible pattern at least once? The answer, proved in the machine-checked library of formal theorems, is that no listing can succeed in fewer than 2^d ticks. This is the content of the declaration min_ticks_cover.
The proof is a counting argument, and it is airtight. If a listing of length T shows every pattern, then it defines a function from the T tick positions onto the set of all patterns. A function that lands on every one of 2^d targets must have at least 2^d inputs. The library formalizes this as: if T < 2^d, then no such covering function exists. A companion result shows the bound is sharp: at exactly 2^d ticks, a listing exists that shows each pattern precisely once, a bijection. So the minimum is not merely a lower bound; it is attained.
For the special case of three lights, there are 2^3 = 8 patterns, and the declaration eight_tick_min states the consequence: any complete listing needs at least 8 ticks. The library also records a threshold bijection at T = 2^D, meaning at the boundary there is no aliasing: each pattern appears exactly once. The same counting principle appears in signal processing as the Nyquist obstruction, and the library names it so: if you sample fewer than 2^D times, you cannot distinguish all D-bit patterns.
In Recognition Science, this counting fact is the seed of the framework's eighth tick. The framework models a ledger, a discrete record of events, and asks how many ticks are needed to cover all possible three-bit states. The answer, eight, is forced by the pigeonhole principle alone, before any physics enters. The framework's larger claim is that this eight-tick cycle then propagates through the forcing chain to yield three spatial dimensions, but that chain is a separate, much larger theorem. The declaration min_ticks_cover itself establishes only the counting bound, nothing more.
What the declaration does not claim is just as important. It does not say that an eight-tick listing is unique, only that one exists and none shorter does. It does not assert that the bound holds for patterns with any other structure, such as continuous values or weighted states; it concerns only finite binary patterns. And it does not, by itself, derive the golden ratio, the fine-structure constant, or any physical constant. Those results live elsewhere in the framework and depend on additional structure beyond a simple counting argument.
THEOREM min_ticks_cover · IndisputableMonolith/Patterns.lean
/-- Minimal ticks lower bound for a complete cover. -/
lemma min_ticks_cover {d T : Nat}
(pass : Fin T → Pattern d) (covers : Function.Surjective pass) : 2 ^ d ≤ T := by
classical
by_contra h
exact (no_surj_small T d (lt_of_not_ge h)) ⟨pass, covers⟩
THEOREM no_surj_small · IndisputableMonolith/Patterns.lean
/-- No surjection to all d-bit patterns if T < 2^d. -/
lemma no_surj_small (T d : Nat) (hT : T < 2 ^ d) :
¬ ∃ f : Fin T → Pattern d, Function.Surjective f := by
classical
intro h; rcases h with ⟨f, hf⟩
obtain ⟨g, hg⟩ := hf.hasRightInverse
have hginj : Injective g := by
intro y₁ y₂ hgy
have : f (g y₁) = f (g y₂) := by simp [hgy]
simpa [RightInverse, hg y₁, hg y₂] using this
have hcard : Fintype.card (Pattern d) ≤ Fintype.card (Fin T) :=
Fintype.card_le_of_injective _ hginj
have : 2 ^ d ≤ T := by
simpa [Fintype.card_fin, card_pattern d] using hcard
exact (lt_of_le_of_lt this hT).false
THEOREM T7_threshold_bijection · IndisputableMonolith/Patterns.lean
/-- At threshold T=2^D there is a bijection (no aliasing). -/
theorem T7_threshold_bijection (D : Nat) : ∃ f : Fin (2 ^ D) → Pattern D, Function.Bijective f := by
classical
let e := (Fintype.equivFin (Pattern D))
have hcard : Fintype.card (Pattern D) = 2 ^ D := by exact card_pattern D
-- Manual cast equivalence between Fin (2^D) and Fin (Fintype.card (Pattern D))
let castTo : Fin (2 ^ D) → Fin (Fintype.card (Pattern D)) :=
fun i => ⟨i.1, by
-- rewrite the goal via hcard and close with i.2
have : i.1 < 2 ^ D := i.2
simp [this]⟩
let castFrom : Fin (Fintype.card (Pattern D)) → Fin (2 ^ D) :=
fun j => ⟨j.1, by simpa [hcard] using j.2⟩
have hLeft : Function.LeftInverse castFrom castTo := by intro i; cases i; rfl
have hRight : Function.RightInverse castFrom castTo := by intro j; cases j; rfl
have hCastBij : Function.Bijective castTo := ⟨hLeft.injective, hRight.surjective⟩
refine ⟨fun i => (e.symm) (castTo i), ?_⟩
exact (e.symm).bijective.comp hCastBij
/-‑ ## T6 alias theorems -/
theorem T6_exist_exact_2pow (d : Nat) : ∃ w : CompleteCover d, w.period = 2 ^ d :=
cover_exact_pow d
theorem T6_exist_8 : ∃ w : CompleteCover 3, w.period = 8 :=
period_exactly_8
/-‑ ## Minimal counting facts and eight‑tick lower bound -/
THEOREM eight_tick_min · IndisputableMonolith/Patterns.lean
/-- For 3-bit patterns, any complete pass has length at least 8. -/
lemma eight_tick_min {T : Nat}
(pass : Fin T → Pattern 3) (covers : Function.Surjective pass) : 8 ≤ T := by
simpa using (min_ticks_cover (d := 3) (T := T) pass covers)
What this page does not claim
The declaration does not assert uniqueness of the minimal listing. The declaration does not apply to patterns with continuous or weighted states. The declaration does not by itself derive any physical constant such as the golden ratio or the fine-structure constant.
Verify this page
Every tagged claim above names its theorem. To check one yourself rather than trust this page, elaborate the source module with Lean 4 and audit its axiom basis:
$ lake env lean IndisputableMonolith/Patterns.lean
expected axiom basis: [propext, Classical.choice, Quot.sound] (the Lean kernel's standard three; no RS-specific axioms)
A page whose claims cannot be reproduced this way does not ship. In production, every anchor links to the exact declaration in the public source release, and this block carries the build receipt for the page itself.
Derived articles
This page is generated by a question-recursion engine: the questions its answers raise become the next pages. The current agenda, with open targets marked red:
- How does the eight-tick cycle from this counting bound propagate through the forcing chain to yield three spatial dimensions?
- What additional structure beyond finite binary patterns is required to derive the golden ratio or the fine-structure constant?
- Does the framework's ledger model require the complete cover to be periodic, and if so, what does periodicity add to the counting argument?
MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND
THEOREM min_ticks_cover · IndisputableMonolith/Patterns.lean
/-- Minimal ticks lower bound for a complete cover. -/ lemma min_ticks_cover {d T : Nat} (pass : Fin T → Pattern d) (covers : Function.Surjective pass) : 2 ^ d ≤ T := by classical by_contra h exact (no_surj_small T d (lt_of_not_ge h)) ⟨pass, covers⟩no listing can succeed in fewer than 2^d ticks min_ticks_cover · IndisputableMonolith/Patterns.leanTHEOREM no_surj_small · IndisputableMonolith/Patterns.lean
/-- No surjection to all d-bit patterns if T < 2^d. -/ lemma no_surj_small (T d : Nat) (hT : T < 2 ^ d) : ¬ ∃ f : Fin T → Pattern d, Function.Surjective f := by classical intro h; rcases h with ⟨f, hf⟩ obtain ⟨g, hg⟩ := hf.hasRightInverse have hginj : Injective g := by intro y₁ y₂ hgy have : f (g y₁) = f (g y₂) := by simp [hgy] simpa [RightInverse, hg y₁, hg y₂] using this have hcard : Fintype.card (Pattern d) ≤ Fintype.card (Fin T) := Fintype.card_le_of_injective _ hginj have : 2 ^ d ≤ T := by simpa [Fintype.card_fin, card_pattern d] using hcard exact (lt_of_le_of_lt this hT).falseif T < 2^d, then no such covering function exists no_surj_small · IndisputableMonolith/Patterns.leanTHEOREM T7_threshold_bijection · IndisputableMonolith/Patterns.lean
/-- At threshold T=2^D there is a bijection (no aliasing). -/ theorem T7_threshold_bijection (D : Nat) : ∃ f : Fin (2 ^ D) → Pattern D, Function.Bijective f := by classical let e := (Fintype.equivFin (Pattern D)) have hcard : Fintype.card (Pattern D) = 2 ^ D := by exact card_pattern D -- Manual cast equivalence between Fin (2^D) and Fin (Fintype.card (Pattern D)) let castTo : Fin (2 ^ D) → Fin (Fintype.card (Pattern D)) := fun i => ⟨i.1, by -- rewrite the goal via hcard and close with i.2 have : i.1 < 2 ^ D := i.2 simp [this]⟩ let castFrom : Fin (Fintype.card (Pattern D)) → Fin (2 ^ D) := fun j => ⟨j.1, by simpa [hcard] using j.2⟩ have hLeft : Function.LeftInverse castFrom castTo := by intro i; cases i; rfl have hRight : Function.RightInverse castFrom castTo := by intro j; cases j; rfl have hCastBij : Function.Bijective castTo := ⟨hLeft.injective, hRight.surjective⟩ refine ⟨fun i => (e.symm) (castTo i), ?_⟩ exact (e.symm).bijective.comp hCastBij /-‑ ## T6 alias theorems -/ theorem T6_exist_exact_2pow (d : Nat) : ∃ w : CompleteCover d, w.period = 2 ^ d := cover_exact_pow d theorem T6_exist_8 : ∃ w : CompleteCover 3, w.period = 8 := period_exactly_8 /-‑ ## Minimal counting facts and eight‑tick lower bound -/at exactly 2^d ticks, a listing exists that shows each pattern precisely once T7_threshold_bijection · IndisputableMonolith/Patterns.leanTHEOREM eight_tick_min · IndisputableMonolith/Patterns.lean
/-- For 3-bit patterns, any complete pass has length at least 8. -/ lemma eight_tick_min {T : Nat} (pass : Fin T → Pattern 3) (covers : Function.Surjective pass) : 8 ≤ T := by simpa using (min_ticks_cover (d := 3) (T := T) pass covers)any complete listing needs at least 8 ticks eight_tick_min · IndisputableMonolith/Patterns.lean