Wiki
Research notes on every problem, and a library of the papers behind them. Built from the open erdos repository.
erdos_699_index_5_cofactor_range.py
py
"""Effective positive-power bounds for both cofactors in a bad quintic row."""
import argparse
from fractions import Fraction
import json
from pathlib import Path
from mpmath import iv
import erdos_699_index_13_interpolation_gcd as jet
from erdos_699_off_diagonal_pade import growth_parameters, rational
def sources():
records = []
for direction, ell, targets in [
((13, 12, 49), Fraction(3597, 625), (Fraction(1, 100), Fraction(57, 100))),
((33, 9, 10), Fraction(43743, 10000), (Fraction(23, 40), Fraction(1, 100))),
]:
A, B, C = direction
_, k0, record = growth_parameters(9, 8, 1, 1, A, B, C, ell, terms=1000)
alpha = {2: 1 - (B+C)*iv.log(8)/k0,
3: 1 - (A+B)*iv.log(9)/k0}
for p, target in zip((2, 3), targets):
assert alpha[p] > rational(target + Fraction(1, 10000))
record.update({
"pair": [2, 3],
"targets": {str(p): str(t) for p, t in zip((2, 3), targets)},
"limiting_exponents": {str(p): iv.nstr(alpha[p], 35) for p in (2, 3)},
"strict_margin": "1/10000",
})
records.append(record)
return records
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--arithmetic-only", action="store_true")
args = parser.parse_args()
records = sources()
h = [101, 76, 27, 0, 0]
m = [0, 223, 190, 142, 114]
D = 164
jet.LINE_EXPONENTS, jet.ROW_MULTIPLICITIES = h, m
jet.DEGREE, jet.PRIME = D, 251
rows, basis = jet.symmetric_jets(), jet.symmetric_basis()
assert (len(rows), len(basis)) == (6817, 6889)
total_degree = 2*sum(h) + D + 1
assert total_degree == 573
gain = Fraction(57, 100)*m[1] + sum(m[2:]) - total_degree
assert gain == Fraction(11, 100)
if not args.arithmetic_only:
print(f"Checking {len(rows)} x {len(basis)} jet matrix", flush=True)
assert jet.jet_matrix(basis, rows).rank() == len(rows)
ramp = {"line_exponents": [3, 2, 1, 0, 0],
"multiplicities": [6, 5, 4, 3, 2], "degree": 12}
for r, multiplicity in enumerate(ramp["multiplicities"]):
assert all(ramp["line_exponents"][x] + ramp["line_exponents"][r-x] >= multiplicity
for x in range(r+1))
ramp_gain = Fraction(57, 100)*6 + 4 + 3 + 2 - 12
assert ramp_gain == Fraction(21, 50)
result = {
"index": 5,
"scope": "Beyond an effectively computable, unevaluated threshold.",
"required_position_result": "erdos_699_index_5_maximal_positions.json",
"sources": records,
"ramp_certificate": ramp | {"gain": str(ramp_gain)},
"jet_certificate": {
"line_exponents": h, "multiplicities": m, "interpolation_degree": D,
"modular_prime": 251, "matrix_rows": len(rows), "matrix_columns": len(basis),
"rank": len(rows), "total_degree": total_degree, "gain": str(gain),
},
"ranks_checked": not args.arithmetic_only,
"conclusion": "For h=n-4, every bad quintic triple has h^(1/100)<u,v<h^(57/100).",
}
if not args.arithmetic_only:
Path(__file__).with_suffix(".json").write_text(json.dumps(result, indent=2) + "\n")
print(json.dumps({"conclusion": result["conclusion"], "rank": len(rows),
"gain": str(gain), "ranks_checked": not args.arithmetic_only}, indent=2))
if __name__ == "__main__":
main()
Graph