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 .
- 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. - Binet sampling. The Lean helpers
residual,binet_residual,sampling_identityandsampling_phaseestablish , and , where is an integer. The scaled sampled phase is congruent modulo to , . - Bounds. For ,
large_boundsproves , , ; hence . These follow from , and Binet. - Actual cuts. Coprimality lets solve
. Set .
Then , , , and the cuts strictly increase.
C_endpointprovesgoldenCylinderEndpointSet (q-1)for . This is the new cut construction on the active proof path. - Parity cells. For , the labels are
, ; for ,
, .
sample_in_lifted_cellplaces each reduced phase strictly between and . The bounds in step 3 separate both parity classes.labels_injective_modproves that distinct have distinct labels modulo . Together these givegolden_sample_grid_rank_injective. - Block distinction.
large_distinctsupplies 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 insideresultby 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 item | Status | Evidence and boundary |
|---|---|---|
| Mechanism | proved in Lean | C_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. |
| Consequence | proved by paper argument | The following subsequence argument proves . It is not an additional Lean theorem. |
| Sharpness | computed through ; uniform extension open | The script below finds blocks distinct at , and the collision at . |
| Generalisation | open for other Sturmian slopes | The 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.