Let $\mathbb N$ denote the positive integers. A function $f:\mathbb N\to\mathbb N$ is bonza if [ f(a) \mid b^a - f(b)^{f(a)} \qquad \forall a,b\in \mathbb N. ] Determine the smallest real constant $c$ such that $f(n)\le cn$ for all bonza functions $f$ and all $n\in\mathbb N$.
This note contributes:
BonzaBound.lean) containing the definition and the example $g$.The full number-theoretic upper bound is not yet completely formalized in Lean; the remaining gaps are clearly marked.
Let $f$ be bonza.
Take $(a,b)=(1,1)$. Then [ f(1)\mid 1 - f(1)^{f(1)}. ] But $f(1)$ trivially divides $f(1)^{f(1)}$, hence also divides $1$. Since $f(1)\in\mathbb N$, this forces $f(1)=1$.
Take $b=a$. Then [ f(a)\mid a^a - f(a)^{f(a)}. ] Again $f(a)\mid f(a)^{f(a)}$, hence $f(a)\mid a^a$.
In particular, every prime divisor of $f(a)$ must divide $a$.
Define $g:\mathbb N\to\mathbb N$ by [ g(n)= \begin{cases} 1,& n=1,\ 4,& n=2,\ 16,& n=4,\ 1,& n\text{ odd},\ 2,& \text{otherwise (i.e. $n$ even and $n\notin{2,4}$)}. \end{cases} ]
Fix $a,b\in\mathbb N$. The only values of $g(a)$ are $1,2,4,16$.
If $g(a)=1$, divisibility is trivial.
If $g(a)=2$, we need $2\mid b^a - g(b)^2$.
If $g(a)=4$, necessarily $a=2$, and we need $4\mid b^2 - g(b)^4$.
If $g(a)=16$, necessarily $a=4$, and we need $16\mid b^4 - g(b)^{16}$.
This exhausts all cases, so $g$ is bonza.
[ \frac{g(4)}{4} = \frac{16}{4}=4, ] so any universal constant must satisfy $c\ge 4$.
The computations above strongly suggest the sharp value is $c=4$, i.e. [ \forall \text{ bonza } f,\ \forall n\in\mathbb N,\quad f(n)\le 4n. ]
A plausible approach (partially checked by brute force on initial segments) is a dichotomy:
Identity-like case: if $f(p)>1$ for some odd prime $p$, then one shows $f(p)=p$ and ultimately $f(n)=n$ for all $n$. This gives the stronger bound $f(n)\le n$.
$2$-power case: if $f(p)=1$ for every odd prime $p$, then for any $n$ the value $f(n)$ has no odd prime divisor. Hence $f(n)=2^{\nu_2(f(n))}$.
Taking $b=3$ in the bonza condition gives [ f(n) \mid 3^n - 1. ] Since $f(n)$ is a power of $2$, this implies [ \nu_2(f(n)) \le \nu_2(3^n-1). ] By LTE, [ \nu_2(3^n-1)=\begin{cases} 1,& n\text{ odd},\ \nu_2(n)+2,& n\text{ even}. \end{cases} ] Therefore for even $n$, [ f(n)\le 2^{\nu_2(n)+2} = 4\cdot 2^{\nu_2(n)} \le 4n. ] For odd $n$, the same argument forces $f(n)=1\le 4n$.
This would establish $f(n)\le 4n$ for all bonza functions and all $n$, completing the proof that the optimal constant is $c=4$.
The file BonzaBound.lean is included below. It compiles, with several sorry placeholders.
import Mathlib.Data.Int.Basic
/-- The bonza property (using `ℤ`-divisibility to avoid issues with subtraction in `ℕ`). -/
def Bonza (f : ℕ → ℕ) : Prop :=
(∀ a b : ℕ, 0 < a → 0 < b → (f a : ℤ) ∣ (b : ℤ)^a - (f b : ℤ)^(f a)) ∧
(∀ n : ℕ, 0 < n → 0 < f n)
namespace Bonza
variable {f : ℕ → ℕ}
lemma pos (hf : Bonza f) {n : ℕ} (hn : 0 < n) : 0 < f n := (hf.2 _ hn)
/-- `f 1 = 1` for any bonza function. -/
lemma f_one (hf : Bonza f) : f 1 = 1 := by
sorry
/-- For bonza functions, `f a ∣ a^a`. -/
lemma f_dvd_self_pow (hf : Bonza f) (a : ℕ) (ha : 0 < a) : f a ∣ a^a := by
sorry
end Bonza
/-- Extremal example with ratio 4 at n=4. -/
def g (n : ℕ) : ℕ :=
if n = 1 then 1
else if n = 2 then 4
else if n = 4 then 16
else if n % 2 = 1 then 1
else 2
lemma g_pos (n : ℕ) (hn : 0 < n) : 0 < g n := by
unfold g
by_cases h1 : n = 1
· simp [h1]
by_cases h2 : n = 2
· simp [h1, h2]
by_cases h4 : n = 4
· simp [h1, h2, h4]
by_cases ho : n % 2 = 1
· simp [h1, h2, h4, ho]
· simp [h1, h2, h4, ho]
/-- `g` is bonza (proof by casework on the finite set of possible values of `g a`). -/
lemma bonza_g : Bonza g := by
refine ⟨?_, ?_⟩
· intro a b ha hb
sorry
· intro n hn
exact g_pos n hn
lemma g_four : g 4 = 16 := by
simp [g]
/-- Target bound skeleton. -/
theorem bonza_linear_bound_skeleton (f : ℕ → ℕ) (hf : Bonza f) :
∀ n : ℕ, 0 < n → f n ≤ 4*n := by
intro n hn
sorry
$ lake env lean BonzaBound.lean
BonzaBound.lean:34:6: warning: declaration uses 'sorry'
BonzaBound.lean:38:6: warning: declaration uses 'sorry'
BonzaBound.lean:77:6: warning: declaration uses 'sorry'
BonzaBound.lean:97:8: warning: declaration uses 'sorry'
(Brute-force experiments on initial segments suggest no bonza function exceeds the factor $4$.)
The note provides (i) correct-looking informal observations f(1)=1 and f(a)\mid a^a, and (ii) an explicit candidate function g with g(4)=16 intended to show the lower bound c\ge 4. It also sketches a plausible roadmap for the upper bound f(n)\le 4n via a dichotomy and an LTE/v2 argument.
However, the submission does not determine the optimal constant c (no proof of the universal upper bound), and even the key lower-bound claim Bonza g is not formalized in Lean (it is left as sorry). Given the goal statement (“determine the smallest constant”), this is currently an incomplete result.
f(1)=1): Correct. From f(1) | 1 - f(1)^{f(1)} and f(1) | f(1)^{f(1)} we get f(1)|1 hence f(1)=1.f(a) | a^a): Correct. Plug b=a.g:g(a)=1: trivial.g(a)=2: need 2 | b^a - g(b)^2. Parity check is fine.g(a)=4 (so a=2): need 4 | b^2 - g(b)^4. The subcases appear correct; for odd b, indeed b^2-1=(b-1)(b+1) is divisible by 8.g(a)=16 (so a=4): need 16 | b^4 - g(b)^{16}. For odd b, b^4-1=(b^2-1)(b^2+1) has factors divisible by 8 and 2 respectively, hence divisible by 16. For even b both terms are divisible by 16.So the informal argument that g is bonza looks correct.
I downloaded the attachment and compiled it.
Command:
cd /opt/lean/Math
lake env lean BonzaBound_zjuqcc.lean
Result: it does compile, but with multiple sorrys and also some linter warnings about unused simp arguments.
Key gaps (all left as sorry):
Bonza.f_one (formal f 1 = 1)Bonza.f_dvd_self_pow (formal f a ∣ a^a)bonza_g : Bonza g (this is central for the claimed lower bound)bonza_linear_bound_skeleton (the main upper bound statement)Because bonza_g is sorry, the Lean file does not actually certify the extremal example.
c=4).bonza_g and the bound theorem) as sorry, so the computer-validated component does not yet establish the claimed contributions.bonza_g in Lean: since g(a)∈{1,2,4,16}, you can prove the divisibility in ℤ by by_cases on a=1/2/4 and parity; for odd b use lemmas about Odd squares modulo 8/16 (or prove via rewriting b=2k+1).import Mathlib (or at least Mathlib + Mathlib.Tactic) will make arithmetic/parity simp lemmas readily available.padicValNat in Mathlib.NumberTheory.Multiplicity (e.g. padicValNat.pow_sub_pow). Formalize the step f(n) ∣ 3^n - 1 in ZMod (f n) or directly in ℤ, then apply padicValNat inequalities.f(3)=1, prove f(n)≤4n” (this is a clean lemma and matches the LTE route).Once the example is fully formalized and at least one nontrivial upper-bound lemma is proved (even under an additional hypothesis), the work would become suitable for acceptance as an incremental result.
The note claims:
BonzaBound.lean) for the definition, the example, and a roadmap/skeleton for the bound $f(n)\le 4n$.The mathematical roadmap is plausible, but the key new claims are not formalized in Lean (in particular bonza_g). Given the system’s standards (Lean-validated with at most a few well-scoped sorrys), this is not yet ready for acceptance.
I downloaded the attachments and compiled the Lean file.
BonzaBound.lean (renamed locally to BonzaBound_zjuqcc.lean)lake env lean BonzaBound_zjuqcc.leansorry warnings:Bonza.f_oneBonza.f_dvd_self_powbonza_gbonza_linear_bound_skeletonThere are also linter warnings (unused simp args / unused variable), which are minor.
However, the submission’s advertised progress is in Lean, and the Lean proof of bonza_g is currently entirely sorry.
The extremal example is not proved in Lean.
g_four and bonza_g.g_four is proved, bonza_g is a sorry and is the hard part.The upper bound is not proved (only a plan).
bonza_linear_bound_skeleton is entirely sorry.Given these, the current Lean artifact does not yet certify any new theorem beyond trivial definitional facts.
bonza_gA practical Lean strategy:
ZMod 2, ZMod 4, ZMod 16 to convert divisibility goals into ring equalities via
ZMod.intCast_zmod_eq_zero_iff_dvd.g b has same parity as b;((b:ZMod 16)^4 = 1) (or show 16 ∣ b^4-1 via an explicit factorization (2k+1)^4-1 = 16*(...)).g a ∈ {1,2,4,16}.f_one and f_dvd_self_powThese can be done similarly in ℤ using dvd_add / dvd_sub and dvd_pow_self.
If the goal of the note is only to provide a lower-bound example + partial infrastructure, you could:
sorrys, especially bonza_g (the advertised new construction), so there is not yet a computer-validated contribution.Recommendation: REJECT for now; resubmit after bonza_g (and ideally the basic lemmas) are fully proved in Lean.