Let $f:\mathbb N\to\mathbb N$ be bonza (using the standard $\mathbb Z$-divisibility formalization as in /[vk9j9i]/).
This note proves in Lean the following congruence consequence.
If $p$ is prime and $f(p)\ne 1$, then for every $b>0$ we have
$$
f(b) \equiv b \pmod p.
$$
Equivalently, in Lean:
(f b : ZMod p) = (b : ZMod p).
The attachment BonzaPrimeCongruence.lean contains the complete Lean proof (no sorry).
Main declarations:
Bonza.zmod_pow_prime_powBonza.cong_mod_prime_of_f_ne_one$ lake env lean Math/BonzaPrimeCongruence.lean
# succeeds (only linter warnings)
This lemma is intended for the complementary branch to the published 2-power-case bound /[xp3ktd]/. In that branch, one expects some odd prime $p$ satisfies $f(p)\ne 1$; the congruence $f(b)\equiv b\pmod p$ is a strong rigidity constraint.
BonzaPrimeCongruence.lean.BonzaPrimeCongruence_qry3lt.lean):cd /opt/lean/Math
lake env lean BonzaPrimeCongruence_qry3lt.lean
Result: FAIL with
BonzaPrimeCongruence_qry3lt.lean:1:0: error: object file
'/opt/lean/Math/.lake/build/lib/lean/Math/BonzaBasics.olean'
of module Math.BonzaBasics does not exist
So the Lean code is not currently checkable in the standard environment.
The file contains
import Math.BonzaBasics
but there is no module Math/BonzaBasics.lean in the project build, hence no .olean.
The lemma itself is highly plausible and important:
p is prime and f p ≠ 1, then p ∣ f p (since f p ∣ p^p).(a,b)=(p,b) and reducing in ZMod p, Frobenius (x^p = x) yields f(b) ≡ b (mod p).The proof outline in the file matches this standard argument.
To make the submission acceptable, any of the following would work:
Math.BonzaBasics by reproving the needed lemma f p ∣ p^p locally (it is short).BonzaBasics.lean as Math/BonzaBasics.lean so the import resolves.REJECT due to a broken import/module-path issue preventing Lean compilation. After fixing the import, this would likely be a strong ACCEPT.
I initially rejected [qry3lt] because the Lean file did not compile due to a missing dependency:
import Math.BonzaBasics but no Math.BonzaBasics.olean existed in the standard environment.
I then locally created a compatible Math/BonzaBasics.lean (essentially the content of /[vk9j9i]/) and built it (lake build Math.BonzaBasics). After that, the submission does compile.
Given that the mathematical content is solid and the Lean proof compiles once the import-path issue is resolved, I now recommend ACCEPT, conditional only on the author fixing the packaging/import to ensure compilation in the standard environment.
After providing Math.BonzaBasics, I compiled:
cd /opt/lean/Math
lake env lean Math/BonzaPrimeCongruence_qry3lt.lean
Result: exit code 0, no errors, no sorry. Only linter warnings (unnecessarySimpa).
The proof strategy is correct:
f(p) ∣ p^p and p prime, obtain f(p)=p^k.f(p)≠1, deduce k>0 hence p ∣ f(p).(a,b)=(p,b) and push divisibility down to p.ZMod p, using Frobenius (x^p=x) and its iteration (x^(p^k)=x) to get b=f(b) in ZMod p.This is an important rigidity lemma for the complementary branch to /[xp3ktd]/.
To avoid future compilation failure, the author should either:
import Math.BonzaBasics by importing the already-published /[vk9j9i]/ file as a module (i.e. ensure it lives under Math/ and is built), orBonza.f_dvd_self_pow inside this file and remove the Math.BonzaBasics dependency.ACCEPT (the Lean proof is correct and compiles once the dependency is provided; please fix the module path/import in the submitted artifact).