Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help


slug: garg-2019-fibonacci-prefix-antipowers bibkey: garg2021antipowers doi: 10.46298/dmtcs.7134 url: https://arxiv.org/abs/1907.10816v4 triage: theorem motivation_gids:

  • D5/S1/Words/Antipowers/GargFibonacciPrefixAntipower.result

Garg’s Fibonacci prefix antipower conjecture

Problem

Swapnil Garg, Antipowers in Uniform Morphic Words and the Fibonacci Word, arXiv:1907.10816v4, DMTCS 23(3), article 14, Conjecture 18, printed page 8:

Let be an even Fibonacci number. Then, there is an -antipower with block length that is a prefix of .

The Fibonacci word is the fixed point starting with of , ; . A -antipower consists of consecutive, pairwise distinct blocks of equal length. The source note quotes the definitions from §3 and the conjecture. Issue #14479 fixes the universal statement GARG-1: every with even, , , and the first blocks starting at .

Motivation

D5/S1/Words/Antipowers/GargFibonacciPrefixAntipower.result : claim proves GARG-1. The literal finite-prefix convention is , , , with fibW their compatible diagonal limit. The proved fibW_bridge identifies this limit with the existing golden word, with Boolean true corresponding to letter . Blocks are functions Fin (blockLength n) → Fin 2; no extra hypothesis is imposed.

Gap

The preregistration records the source and literature checks: arXiv v4; MathDB’s Fibonacci prefix antipower conjecture entry with no solutions; Berger–Defant and Postic do not settle this exact prefix length. This is not-found-in-searched-scope, not a proof of absence of other literature. The source’s longest-gap estimate does not establish the proposed length: the sampled even-parity displacement is , smaller than the coarse longest-gap scale .

Route

The paper argument below gives the proof outline from the supplied proof, with , , , , , , , and .

  1. Cylinder coding. Fact 14 gives . For a length- factor beginning at , put . Telescoping gives . Successive differences recover the letters. Since is irrational, . Thus factor equality is equality of the cells cut by , , with cuts assigned to their right cell. The proof uses the frozen golden_factor_eq_iff_cylinder_rank_eq.
  2. Binet sampling. The Lean helpers residual, binet_residual, sampling_identity and sampling_phase establish , and , where is an integer. The scaled sampled phase is congruent modulo to , .
  3. Bounds. For , large_bounds proves , , ; hence . These follow from , and Binet.
  4. Actual cuts. Coprimality lets solve . Set . Then , , , and the cuts strictly increase. C_endpoint proves goldenCylinderEndpointSet (q-1) for . This is the new cut construction on the active proof path.
  5. Parity cells. For , the labels are , ; for , , . sample_in_lifted_cell places each reduced phase strictly between and . The bounds in step 3 separate both parity classes. labels_injective_mod proves that distinct have distinct labels modulo . Together these give golden_sample_grid_rank_injective.
  6. Block distinction. large_distinct supplies distinct length- factors. Since , equality of the full blocks would imply equality of these prefixes. For , the even Fibonacci cases are : one block at ; the seven length- blocks at are checked locally inside result by Lean. This covers every admissible .

The seven length- blocks at are , , , , , , .

Falsifier

A collision between two distinct indices at the prescribed length, with and even, would refute GARG-1. The Lean theorem excludes such a collision under the literal word convention. A failure of the stronger -block statement is a sharpness observation, not a counterexample to GARG-1.

Evidence

The two modules provide the general sample-grid construction and the universal settling theorem. The axiom closure of every public declaration is contained in . The Scribe attaches OpenProblemResolutionClaim with resolution Proved to the settling result. No digestion atom or coverage assertion is involved. The finite computations below corroborate the proof in their stated scope; they are not its universal proof.

Triage

What the settlement shows

Target itemStatusEvidence and boundary
Mechanismproved in LeanC_endpoint, golden_sample_grid_rank_injective, sampling_identity, sampling_phase, large_distinct and result: Binet sampling and disjoint parity cells, rather than a longest-gap estimate.
Consequenceproved by paper argumentThe following subsequence argument proves . It is not an additional Lean theorem.
Sharpnesscomputed through ; uniform extension openThe script below finds blocks distinct at , and the collision at .
Generalisationopen for other Sturmian slopesThe supporting Lean theorem permits arbitrary coprime , positive even , and its explicit signed golden-slope residual bounds. It retains the golden slope; changing the slope requires a new coding and cut bridge.

Consequence, paper argument. Write for the least block length of a prefix -antipower. For , Fibonacci parity gives even , and . The theorem gives . Binet yields , so . Taking the liminf along this unbounded subsequence proves the stated upper bound. The source’s Sturmian complexity argument gives the lower bound . The source’s other propositions remain applicable under their original hypotheses; the conditional prefix liminf remark following Conjecture 18 therefore has its premise discharged. The general all-start bounds are not strengthened by this prefix-only settlement.

Scope and sharpness. For , large_distinct proves the stronger fact that the first letters already distinguish the sampled blocks. The collision at the next block is a computation for the listed indices; no uniform collision theorem is claimed. Other Sturmian slopes and optimal prefix block lengths remain open follow-up questions.

Prefix computation

The orchestrator’s check is reproduced verbatim below. Command python3 /tmp/op-garg/check.py, exit , SHA-256 7e48fc0d01b338691ccddb2633e42c85965acba18ed018879b052275bc363172. A reader can save the block as check.py and run python3 check.py. It tests exactly the even Fibonacci indices ; all prescribed blocks are distinct. The values are , , , , , , .

import sys
# Fibonacci word f = phi^omega(0), phi(0)=01, phi(1)=0
a,b=b'0',b'01'
while len(b)<160_000_000: a,b=b,b+a
f=b
F=[0,1,1]
while len(F)<30: F.append(F[-1]+F[-2])
res={}
for n in range(3,22):
    if F[n]%2: continue
    K=F[n]-1; L=F[n]//2+F[n-1]
    assert K*L<=len(f)
    blocks=set(f[j*L:(j+1)*L] for j in range(K))
    res[n]=(F[n],K,L,len(blocks)==K)
    print(n,res[n],flush=True)

Sharpness computation

Command python3 /tmp/op-garg/stage-b/sharpness.py, exit , SHA-256 ff7d35868595a80ecb17bc73383a977ef4a68787103063ea83891b46a9116a99. Save the following source as sharpness.py to rerun with python3 sharpness.py. It compares all prefix blocks in the same index range and reports the first collision. The resulting scope and status are exactly those in the Triage table.

import json
from pathlib import Path
F=[0,1]
for n in range(2,22):F.append(F[-1]+F[-2])
need=max(F[n]*(F[n]//2+F[n-1]) for n in range(1,22) if F[n]%2==0)
a,b=b'0',b'01'
while len(b)<need:a,b=b,b+a
rows=[]
for n in range(1,22):
 if F[n]%2:continue
 q=F[n];L=q//2+F[n-1];seen={};collision=None
 for j in range(q):
  block=b[j*L:(j+1)*L]
  if block in seen:
   collision=[seen[block],j];break
  seen[block]=j
 row=dict(n=n,F=q,L=L,F_blocks_distinct=collision is None,first_collision=collision)
 rows.append(row);print(json.dumps(row),flush=True)

ASSUMED-UNVERIFIED

The external literature gap is bounded by the searches recorded in #14479; absence of a result outside that scope is unverified. The liminf consequence has a paper argument here, with no separate kernel-checked limit theorem. Uniform -block sharpness and extensions to other Sturmian slopes are open.