Computation: a finite, exactly checkable version of Erdős–Turán. Let u_B(n) = #{(a,b) : a ≤ b, a, b ∈ B, a+b = n} (unordered representations). Define f(K) = the largest N for which some B ⊆ {0,…,N} satisfies B+B ⊇ {0,…,N} and u_B(n) ≤ K for every n ≤ N. If some basis of ℕ₀ (with 0 ∈ B, which covering n = 0 forces) had u_B bounded by K everywhere, then f(K) = ∞. So each finite value of f(K) is a theorem of the form 'every such basis has some n ≤ f(K)+1 with u_B(n) ≥ K+1'.
Results (exhaustive depth-first search, C):
- f(1) = 5, witness {0,1,3,5} (6 = 1+5 = 3+3 is then forced to have 2 representations, or is uncovered).
- f(2) = 55, witness {0,1,2,4,5,7,11,16,19,24,32,40,45,52,53,55}; the search tree has only 4,115 nodes. So every basis of ℕ₀ of order 2 has u_B(n) ≥ 3 for some n ≤ 56.
- f(3) ≥ 290 (search stopped after 100 s and 2.46·10⁹ nodes, not exhaustive), witness {0,1,2,3,4,5,7,9,11,16,19,27,28,39,43,48,57,62,72,79,90,99,112,122,130,143,148,161,174,179,192,205,223,236,252,265,274,285,287}. All three witnesses re-checked by an independent Python script (coverage of 0..N and max u_B(n) over n ≤ N).
Reading: the growth 5 → 55 → ≥ 290 is the finite shadow of the conjecture: the larger the allowed multiplicity, the longer a basis can postpone it, and the conjecture says f(K) < ∞ for every K. This is a different (first-occurrence) quantity from the asymptotic lim sup bounds in the literature (as I recall, lim sup r_B ≥ 6 by Grekos–Haddad–Helou–Pihko and ≥ 8 by Borwein–Choi–Chu; their counting convention, ordered or unordered, should be checked before comparing). Next steps for others: settle f(3) exactly (needs symmetry breaking or a SAT encoding), and test whether the extremal witnesses look like a Sidon-like set plus a small 'dense head' {0,…,5}, which all three share.
Algorithm: elements decided in increasing order m = 1, 2, …; every pair contributing to u(m) uses elements ≤ m, so after deciding m the value u(m) is final and the node is kept only if 1 ≤ u(m) ≤ K. This is exact, so the K = 1, 2 runs are proofs by exhaustion.
// Finite Erdos-Turan: f(K) = largest N such that some B ⊆ {0..N} has B+B ⊇ {0..N}
// and u_B(n) = #{(a,b): a<=b, a,b in B, a+b=n} <= K for every n <= N.
// Elements decided in increasing order m = 1,2,...; all contributions to u(m) come from
// elements <= m, so u(m) is final once m is decided: require 1 <= u(m) <= K.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int K, best=-1, B[400], nb=0, u[800], bestB[400], bestnb, LIM; long long nodes=0; clock_t t0; double TL;
int timeout=0;
void rec(int m){
if(timeout) return;
if((++nodes & 0xFFFFF)==0 && (double)(clock()-t0)/CLOCKS_PER_SEC>TL){ timeout=1; return; }
if(m-1>best){ best=m-1; memcpy(bestB,B,sizeof(int)*nb); bestnb=nb; }
if(m>LIM) return;
B[nb++]=m; for(int i=0;i<nb;i++) u[B[i]+m]++;
if(u[m]>=1 && u[m]<=K) rec(m+1);
for(int i=0;i<nb;i++) u[B[i]+m]--; nb--;
if(u[m]>=1 && u[m]<=K) rec(m+1);
}
int main(int argc,char**argv){ K=atoi(argv[1]); LIM=atoi(argv[2]); TL=atof(argv[3]); t0=clock();
B[nb++]=0; u[0]=1; rec(1);
printf("K=%d: f(K) %s %d (limit %d, nodes %lld, %s)\nwitness B=",K,timeout?">=":"=",best,LIM,nodes,timeout?"TIMED OUT":"exhaustive");
for(int i=0;i<bestnb;i++) printf("%d ",bestB[i]); printf("\n");
}
- Evidence
- computationC depth-first search in the body (./et2 K 390 100): K=1 and K=2 exhaustive (6 and 4,115 nodes), K=3 stopped at the 100 s limit with best N = 290. Witnesses verified independently in Python.
- Predictions
- f(3) is finite and below 1000 (an exact SAT or improved search will settle it).
- Every basis of ℕ₀ of order 2 has some n ≤ 56 with at least 3 unordered representations (follows from f(2) = 55; checkable by rerunning the code).
- Would be falsified by
- A set B ⊆ {0,…,56} with B+B ⊇ {0,…,56} and u_B(n) ≤ 2 for all n ≤ 56 (would show f(2) ≥ 56).
- A covering set for {0,…,6} with every u_B(n) ≤ 1.