Wiki
Wiki

Research notes on every problem, and a library of the papers behind them. Built from the open erdos repository.

erdos_699_index_7_numerical_tail.py

py
"""Combine the fully numerical source and polynomial bounds for index seven.

The default checks source bindings and every exact relaxed Farkas leaf.
--sources also regenerates the analytic gcd and finite-constant estimates.
Neither mode repeats interpolation ranks or enumerates binomial rows.
"""
import argparse
import contextlib
from fractions import Fraction as F
import io
import json
from pathlib import Path

HERE = Path(__file__).parent
OUTPUT = Path(__file__).with_suffix('.json')
JOINT = 'erdos_699_index_7_joint_numerical.json'


def load(name):
    return json.loads((HERE/name).read_text())


def report(*, sources=False):
    original_name = 'erdos_699_index_7_effective.json'
    relaxed_name = 'erdos_699_index_7_relaxed_sources.json'
    gcd_name = 'erdos_699_index_7_gcd_numerical.json'
    initial_name = 'erdos_699_index_7_base_pairs_numerical_relaxed.json'
    original, relaxed, gcd, initial = map(load,
        (original_name, relaxed_name, gcd_name, initial_name))
    joint = load(JOINT)
    for kind in ('source', 'relaxation', 'theta_helper'):
        assert (HERE/gcd[f'{kind}_file']).is_file(), kind
    assert gcd['source_file'] == original_name
    assert gcd['relaxation_file'] == relaxed_name
    assert gcd['source_eta'] == relaxed['source_eta']
    from erdos_699_index_7_gcd_numerical import shared_requirements
    expected = shared_requirements(original['sources'], relaxed['source_eta'])
    assert len(expected) == len(gcd['records']) == 210
    for group, required in zip(gcd['records'], expected):
        assert all(group[key] == value for key, value in required.items())
        analytic = group['analytic_gcd_certificate']
        assert analytic['directions'] == group['directions']
        assert F(analytic['ell_lower']) > F(group['requested_log_rate'])
        assert F(group['analytic_strict_rate_margin']) == (
            F(analytic['ell_lower'])-F(group['requested_log_rate']))
        if sources:
            from erdos_699_off_diagonal_gcd_sharp import gcd_exponent_lower
            replay = gcd_exponent_lower(*analytic['directions'],
                terms=analytic['terms'], m0=analytic['m0'],
                scale=analytic['rounding_denominator'],
                root_scale=analytic['root_scale'])
            assert replay == analytic
    by_direction = {tuple(row['directions']): row for row in gcd['records']}
    by_source = {row['source_id']: row for row in joint}
    assert len(joint) == len(by_source) == len(original['sources']) == 258
    assert set(by_source) == set(relaxed['source_eta'])
    for source in original['sources']:
        name, clause = source['id'], source['certificate']
        row = by_source[name]
        group = by_direction[tuple(clause['source']['directions'])]
        assert row['directions'] == group['directions']
        assert row['gcd_m0'] == group['analytic_gcd_certificate']['m0']
        assert F(row['gcd_log_rate']) == F(group['requested_log_rate'])
        assert F(row['threshold_weakening']) == F(relaxed['source_eta'][name])
        assert F(row['positive_part_threshold']) == (
            F(clause['positive_part_threshold'])-F(relaxed['source_eta'][name]))
        assert row['positive_part_intercepts'] == clause['positive_part_intercepts']
        assert F(row['block_parameter']) == F(clause['block_parameter'])
        assert row['gap_bound'] == (6 if source['hypothesis']['kind'] == 'pair' else 36)
        assert row['maximum_shift'] == 6
        if sources:
            from erdos_699_off_diagonal_explicit_clauses import joint_clause_threshold
            replay = joint_clause_threshold(clause, row['gcd_m0'],
                gap=row['gap_bound'], maximum_shift=6,
                gcd_log_rate=row['gcd_log_rate'],
                threshold_weakening=row['threshold_weakening'])
            assert replay == {key: value for key, value in row.items() if key != 'source_id'}
    from erdos_699_index_7_relaxed_sources import certify as certify_forest
    forest = certify_forest(relaxed)
    # JSON represents the checker's edge tuples as lists.
    assert json.loads(json.dumps(forest)) == relaxed['certificate']
    assert [row['edge'] for row in initial['records']] == relaxed['certificate']['baseline_edges_scaled']
    if sources:
        from erdos_699_index_7_base_pairs_numerical_relaxed import certify as certify_initial
        certify_initial(initial)
    initial_cap = max(row['numerical_threshold']['threshold_power_of_ten']
                      for row in initial['records'])
    assert initial_cap == initial['maximum_threshold_power_of_ten']
    original_joint_cap = max(row['threshold_power_of_ten'] for row in joint)
    adjusted_name = 'erdos_699_index_7_reblocked_numerical.json'
    adjusted = load(adjusted_name)
    for kind in ('original', 'relaxed', 'old_numerical'):
        assert (HERE/adjusted[f'{kind}_file']).is_file(), kind
    for name in adjusted['helper_files']:
        assert (HERE/name).is_file(), name
    assert {row['source_id'] for row in adjusted['records']} == set(by_source)
    assert len(adjusted['records']) == 258
    for row in adjusted['records']:
        numeric = row['uniform_numerical_certificate']
        old = by_source[row['source_id']]
        assert numeric['positive_part_intercepts'] == old['positive_part_intercepts']
        assert F(numeric['positive_part_threshold']) == F(old['positive_part_threshold'])
        assert F(numeric['threshold_weakening']) == F(old['threshold_weakening'])
        assert 0 < F(numeric['witness_block_parameter']) <= F(old['block_parameter'])
        assert F(numeric['denominator_cost_rate']) == max(F(0),
            F(numeric['positive_part_threshold'])-F(numeric['kappa_lower'])*(
                F(old['block_parameter'])-F(numeric['witness_block_parameter'])))
    if sources:
        from erdos_699_index_7_reblocked_numerical import check as check_adjustment
        with contextlib.redirect_stdout(io.StringIO()):
            check_adjustment()
    joint_cap = max(row['uniform_numerical_certificate']['threshold_power_of_ten']
                    for row in adjusted['records'])
    assert joint_cap == adjusted['uniform_summary']['maximum_threshold_power_of_ten']
    polynomial_cap = forest['algebraic_height_power_of_ten']
    height_cap = max(initial_cap, joint_cap, polynomial_cap)
    inputs = (original_name, relaxed_name, gcd_name, initial_name, JOINT,
        adjusted_name, 'erdos_699_index_7_reblocked_numerical.py',
        'erdos_699_off_diagonal_reblocking.py',
        'erdos_699_index_7_relaxed_sources.py',
        'erdos_699_index_7_gcd_numerical.py',
        'erdos_699_index_7_base_pairs_numerical_relaxed.py',
        'erdos_699_index_7_polynomial_bounds.py',
        'erdos_699_index_7_polynomial_bounds.json',
        'erdos_699_index_7_nonvanishing.py',
        'erdos_699_index_7_nonvanishing.json',
        'erdos_699_off_diagonal_explicit_clauses.py',
        'erdos_699_off_diagonal_gcd_sharp.py')
    return {
        'index': 7, 'height_variable': 'h=n-6',
        'covered_root_cases': forest['coverage']['roots'],
        'farkas_leaf_count': forest['coverage']['leaves'],
        'initial_pair_edges': 5, 'joint_source_count': 258,
        'gcd_direction_count': 210,
        'initial_pair_endpoint_weakening': relaxed['baseline_weakening'],
        'initial_source_threshold_power_of_ten': initial_cap,
        'joint_source_threshold_power_of_ten': joint_cap,
        'original_joint_source_threshold_power_of_ten': original_joint_cap,
        'polynomial_height_threshold_power_of_ten': polynomial_cap,
        'complete_height_cap_power_of_ten': height_cap,
        'complete_row_cap_power_of_ten': height_cap+1,
        'limiting_source': max(adjusted['records'], key=lambda row:
            row['uniform_numerical_certificate']['threshold_power_of_ten'])['source_id'],
        'input_files': list(inputs),
        'conclusion': 'Every bad triple at index seven has n below 10 raised to complete_row_cap_power_of_ten. The finite range below this bound is not excluded here.',
    }


def main():
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument('--sources', action='store_true')
    parser.add_argument('--write', action='store_true')
    args = parser.parse_args()
    result = report(sources=args.sources)
    if args.write:
        OUTPUT.write_text(json.dumps(result, indent=2)+'\n')
    else:
        assert result == load(OUTPUT.name)
    print(json.dumps({key: result[key] for key in (
        'index', 'initial_source_threshold_power_of_ten',
        'joint_source_threshold_power_of_ten',
        'polynomial_height_threshold_power_of_ten',
        'complete_row_cap_power_of_ten')}, indent=2))


if __name__ == '__main__':
    main()