"""Verification script for "Robin's Inequality at Colossally Abundant Numbers and Nicolas' Inequality at Their Largest Prime Factor" (F. Vega). Written with the help of Claude Opus 5.5 (Anthropic), as was the script of the earlier version of this work; run by the author. Every numerical inequality between explicit constants used in the paper is checked with mpmath at 60 significant digits; the computed left-hand side is printed. Part 1 constants of Lemma Pboot, Lemma LlogL, Lemma corekernel and Theorem nicSA (counterexamples and superabundant counterexamples). Part 2 constants of Lemmas theta, S2, T1, IN and of the proof of the main theorem (colossally abundant numbers with log xi >= 31). Part 3 constants of the corollaries and of Proposition NicRH. Self-contained: needs only Python 3.12 and mpmath (no package install). Run: python verify_robin_nicolas.py """ import sys from fractions import Fraction as D from math import gcd from mpmath import mp, mpf, euler, exp, log, pi, sqrt mp.dps = 60 results = [] def check(label, ok, value=None): results.append(bool(ok)) detail = f" ({mp.nstr(value, 15)})" if value is not None else "" print(f"[{'PASS' if ok else 'FAIL'}] {label}{detail}") def eps(P): """Axler's epsilon(P) = 1/(20 P^3) + 3/(16 P^4).""" return 1 / (20 * P ** 3) + mpf(3) / (16 * P ** 4) eg = exp(euler) L31 = mpf(31) # --------------------------------------------------------------------------- print("=== Part 1: counterexamples and superabundant counterexamples ===") LMP = mpf("13.11485") * log(10) + log(log(10)) check("loglog(10^(10^13.11485)) > 31.032", LMP > mpf("31.032"), LMP) x0 = mpf(46909038) check("log(46909038) < 17.6638", log(x0) < mpf("17.6638"), log(x0)) v = 1 / (1 - eps(log(x0))) check("(1 - eps(log 46909038))^{-1} < 1.000011", v < mpf("1.000011"), v) check("17.6638 * 1.000011 < 31.032", D("17.6638") * D("1.000011") < D("31.032")) v = mpf("31.032") / mpf("1.000011") check("31.032/1.000011 > 31.0316", v > mpf("31.0316"), v) v = 1 / (1 - eps(mpf("31.0316"))) check("(1 - eps(31.0316))^{-1} < 1.000002", v < mpf("1.000002"), v) v = mpf("31.032") / mpf("1.000002") check("31.032/1.000002 > 31.0319", v > mpf("31.0319"), v) P1 = mpf("31.0319") v = (mpf("0.05") + mpf(3) / (16 * P1)) / (1 - eps(P1)) check("(1/20 + 3/(16*31.0319))/(1 - eps(31.0319)) < 0.0562", v < mpf("0.0562"), v) Q0 = mpf("31.03") v = exp(mpf("0.0562") / Q0 ** 2) * (1 + mpf("0.0562") / Q0 ** 3) check("e^(0.0562/31.03^2) (1 + 0.0562/31.03^3) < 1.0000603", v < mpf("1.0000603"), v) v = exp(mpf("15.515")) check("e^15.515 > 5.47e6", v > mpf("5.47e6"), v) v = 1 - mpf("1.94") / sqrt(mpf("5.47e6")) check("1 - 1.94/sqrt(5.47e6) > 0.99917", v > mpf("0.99917"), v) v = mpf("0.99917") / mpf("1.0000603") check("0.99917/1.0000603 > 0.9991", v > mpf("0.9991"), v) v = eg * mpf("31.032") check("e^gamma * 31.032 > 55", v > 55, v) phi = lambda m: sum(1 for j in range(1, m + 1) if gcd(j, m) == 1) v = max(mpf(m) / phi(m) for m in range(1, 16)) check("max m/phi(m) over 1 <= m <= 15 equals 3", v == 3, v) # --------------------------------------------------------------------------- print("\n=== Part 2: colossally abundant numbers with log xi >= 31 ===") h = log(2) / 2 check("e^31 > 10^9 + 7 and e^31 > 89967803", exp(L31) > 10 ** 9 + 7 and exp(L31) > 89967803, exp(L31)) v = 1 - log(2) / (2 * L31) check("1 - log 2/(2*31) > 0.98882", v > mpf("0.98882"), v) v = sqrt(2) * mpf("0.98882") check("sqrt(2) * 0.98882 > 1.39838", v > mpf("1.39838"), v) v = sqrt(mpf("1.39838")) check("sqrt(1.39838) > 1.18253", v > mpf("1.18253"), v) v = mpf("1.94") * L31 * exp(-L31 / 4) / mpf("1.18253") check("1.94 * 31 * e^(-31/4) / 1.18253 < 0.022", v < mpf("0.022"), v) v = 1 / log(mpf(10) ** 19) ** 3 check("1/log^3(10^19) < 0.000012", v < mpf("0.000012"), v) v = 2 / log(mpf(10) ** 19) ** 2 check("2 log(10^19)/log^3(10^19) < 0.022", v < mpf("0.022"), v) v = mpf(8) / L31 ** 2 check("8/31^2 < 0.022", v < mpf("0.022"), v) v = -log(1 - log(2) / (2 * L31)) check("-log(1 - log 2/62) < 0.011306", v < mpf("0.011306"), v) v = 2 * (h - mpf("0.011306")) check("2*(log 2/2 - 0.011306) >= 0.670535", v >= mpf("0.670535"), v) v = log(2) - mpf("0.323") check("log 2 - 0.323 < 0.370148", v < mpf("0.370148"), v) v = mpf("0.670535") - h - h * mpf("0.670535") / L31 check("0.670535 - log2/2 - (log2/2)(0.670535)/31 > 0.316464", v > mpf("0.316464"), v) v = mpf("0.316464") - mpf("0.316464") ** 2 / L31 check("0.316464 - 0.316464^2/31 > 0.313233", v > mpf("0.313233"), v) v = 2 * (1 - (mpf("0.370148") + log(2)) / L31) check("2*(1 - (0.370148 + log 2)/31) > 1.9314", v > mpf("1.9314"), v) v = D("0.066") + D("0.370148") + 2 check("0.066 + 0.370148 + 2 <= 2.436148", v <= D("2.436148"), mpf(v.numerator) / v.denominator) v = mpf("1.0022") * L31 * exp(-L31 / 2) / sqrt(2) check("1.0022 * 31 * e^(-31/2)/sqrt(2) < 4.08e-6", v < mpf("4.08e-6"), v) check("1 + 3*0.022/31 < 1.0022", 1 + 3 * mpf("0.022") / L31 < mpf("1.0022")) check("2.436148 + 4.08e-6 < 2.43616", D("2.436148") + D("4.08e-6") < D("2.43616")) v = 8 * (1 + mpf("0.022") / L31) check("8*(1 + 0.022/31) < 8.006", v < mpf("8.006"), v) v = mpf("8.006") / L31 check("8.006/31 < 0.258259", v < mpf("0.258259"), v) v = D("0.313233") - D("0.066") + D("1.9314") - D("0.258259") check("0.313233 - 0.066 + 1.9314 - 0.258259 >= 1.920374", v >= D("1.920374"), mpf(v.numerator) / v.denominator) check("0.022 + log 2/2 <= 0.368574", mpf("0.022") + h <= mpf("0.368574"), mpf("0.022") + h) check("0.323 - 0.022 >= 0.301", D("0.323") - D("0.022") >= D("0.301")) check("e^(31/3) > 853 and > 1418", exp(L31 / 3) > 1418, exp(L31 / 3)) check("0.945 * e^(31/3) > 31", mpf("0.945") * exp(L31 / 3) > L31, mpf("0.945") * exp(L31 / 3)) v = mpf("1.000012") * mpf("1.9769") / sqrt(2) check("1.000012 * 1.9769/sqrt(2) < 1.397905", v < mpf("1.397905"), v) v = mpf("1.397905") * L31 * exp(-L31 / 6) check("1.397905 * 31 * e^(-31/6) < 0.24717", v < mpf("0.24717"), v) check("0.301 - 0.24717 >= 0.0538", D("0.301") - D("0.24717") >= D("0.0538")) v = 1 / L31 ** 2 + sqrt(2) * L31 * exp(-L31 / 2) check("1/31^2 + sqrt(2)*31*e^(-31/2) < 0.0010488", v < mpf("0.0010488"), v) v = mpf("0.0010488") / L31 check("0.0010488/31 < 0.0000339", v < mpf("0.0000339"), v) v = mpf("0.0010488") + mpf("0.0000339") + mpf("0.0010488") * mpf("0.0000339") / L31 check("0.0010488 + 0.0000339 + (0.0010488*0.0000339)/31 < 0.001085", v < mpf("0.001085"), v) v = 1 / L31 ** 2 + mpf("1.0001") / L31 ** 3 check("1/31^2 + 1.0001/31^3 < 0.00108", v < mpf("0.00108"), v) v = 1 / (1 - L31 ** -3) check("1/(1 - 31^-3) < 1.0001 (so -log(1 - x) <= 1.0001 x)", v < mpf("1.0001"), v) check("0.368574 + 0.001085 <= 0.369659", D("0.368574") + D("0.001085") <= D("0.369659")) check("0.0538 - 0.00108 >= 0.05272", D("0.0538") - D("0.00108") >= D("0.05272")) v = mpf("0.086") / (1 - mpf(1418) ** -3) check("0.086/(1 - 1418^-3) < 0.0861", v < mpf("0.0861"), v) v = 3 * mpf("1.26") * mpf(3) ** (mpf(1) / 3) check("3 * 1.26 * 3^(1/3) < 5.4518", v < mpf("5.4518"), v) v = mpf("5.4518") / L31 * (1 + mpf(10) ** -12) check("(5.4518/31)(1 + 1e-12) < 0.17587", v < mpf("0.17587"), v) v = mpf("0.0861") + mpf("0.17587") + exp(-L31 / 3) check("0.0861 + 0.17587 + e^(-31/3) < 0.26201", v < mpf("0.26201"), v) v = mpf("0.26201") * L31 ** 2 * exp(-L31 / 6) / sqrt(2) check("0.26201 * 31^2 * e^(-31/6)/sqrt(2) < 1.0155", v < mpf("1.0155"), v) v = 2 * mpf("1.39838") ** -2 * exp(-L31) * L31 check("2 xi_2^-2 * 31 < 1e-4 with xi_2 >= 1.39838 e^(31/2)", v < mpf("1e-4"), v) check("1.0155 + 1e-4 <= 1.0156", D("1.0155") + D("1e-4") <= D("1.0156")) check("0.369659 + 2.43616 <= 2.805819", D("0.369659") + D("2.43616") <= D("2.805819")) check("0.05272 + 1.920374 - 1.0156 >= 0.957494", D("0.05272") + D("1.920374") - D("1.0156") >= D("0.957494")) v = mpf("0.5") / L31 ** 2 + 1 / L31 ** 3 check("1/(2*31^2) + 1/31^3 < 0.000554", v < mpf("0.000554"), v) v = mpf("0.957494") * (1 - L31 ** -4) check("0.957494 (1 - 31^-4) > 0.9574", v > mpf("0.9574"), v) check("2.805819 + 2*0.000554 < 2.8070", D("2.805819") + 2 * D("0.000554") < D("2.8070")) v = mpf("0.9574") * sqrt(2) check("0.9574 sqrt(2) > 1.353", v > mpf("1.353"), v) v = mpf("2.8070") * sqrt(2) check("2.8070 sqrt(2) < 3.970", v < mpf("3.970"), v) check("0.9574/2 >= 0.4787 and 2.8070/2 <= 1.4035", D("0.9574") / 2 >= D("0.4787") and D("2.8070") / 2 <= D("1.4035")) # --------------------------------------------------------------------------- print("\n=== Part 3: corollaries ===") v = 2 * sqrt(2) * (1 - mpf("1.4035") / mpf("31.0319")) check("2 sqrt(2) (1 - 1.4035/31.0319) > 2.70", v > mpf("2.70"), v) check("e^31.0319 > 10^9", exp(mpf("31.0319")) > mpf(10) ** 9, exp(mpf("31.0319"))) tau = 2 + euler - log(4 * pi) check("tau = 2 + gamma - log(4 pi) < 0.0462", tau < mpf("0.0462"), tau) check("2 + tau < 2.0462 < 2.70", 2 + tau < mpf("2.0462") < mpf("2.70"), 2 + tau) v = 2 + tau - 2 * sqrt(2) + 2 * sqrt(2) * mpf("1.4035") / L31 check("2 + tau - 2 sqrt(2) + 2 sqrt(2) 1.4035/31 < -0.654", v < mpf("-0.654"), v) v = 2 * sqrt(2) - 2 - tau print(f" 2 sqrt(2) - 2 - tau = {mp.nstr(v, 15)}") print(f"\n{sum(results)}/{len(results)} checks passed") sys.exit(0 if all(results) else 1)