λSAT

Certified frame-first SAT middleware — structured regions before CDCL, certified verdicts after every path.

View the Project on GitHub jesusvilela/lambda-sat-solver

The hardness-lower-bound ladder — index & honest standing

This directory is a research program: find the intrinsic, solver-independent object that carries SAT hardness, climb from cheap-and-wrong to expensive-and-right, and keep every claim executable. It is not a P=NP route, and every rung says so.

Where it stands (honest)

What’s proven vs open

Contracts & evals (the discipline)

Every invariant is pinned to an explicit input → invariant → action → benchmark contract with its theorem-backed part and its honest limit called out. Contracts cannot silently rot:

Rung documents

doc content
RUNG1_PLAN.md, RUNG1_REPORT.md cheap graph invariants do NOT carry hardness (the negative)
RUNG2_REPORT.md sheaf-obstruction = min resolution refutation width; connection-Laplacian addendum
RUNG2_ALGEBRAIC_NOTE.md zero-divisor = rank-deficiency = Nullstellensatz degree (incomparable to width: PHP 4>2, Tseitin 3<4)
RUNG2_LIE_TELOS_NOTE.md 𝔤₂ = Der(𝕆) / G₂ symmetry; real over ℝ, char-2 obstructed over GF(2)
RUNG2_BRAID_THETA_NOTE.md braid-theta engine / star of closure = dynamical face; braiding = BQP, not a SAT route
RUNG_SADDLE_NOTE.md energy-landscape saddle/barrier structure; ruggedness ≠ hardness, the gate is the separator
HYPERCOMPLEX_DESIGNS_REVIEW.md honest review of the contributed computer designs (Berry-braid, symplectic RAM, orbifold, sedenion clock, VDIS channels) + two bridges into the ladder
LEARNINGS.md the philosophical arc landed as engineering: each idea tied to its tested artifact; the “Emperor-depth is algebra-relative” corollary → cross_algebra_depth (portfolio principle)
FRAME_BENCHMARK_REPORT.md the corollary tested on Kissat + CaDiCaL: parity/Tseitin instances are CDCL-exponential but GF(2)-polynomial (~79× PAR-2 via xor_fraction routing, soundness 53/53) → gf2_xor_refutation fast-path shipped
SYMMETRY_PHASE_NOTE.md what goes on at symmetry vs the phase change, measured: two ORTHOGONAL hardness axes — pigeonhole is all symmetry (Kissat time tracks \|Aut\|; breaking symmetry collapses it 2332ms→4ms), random-3SAT is all criticality (hardest at α≈4.26) with \|Aut\|=1 (rigid) at every α. Our frames are a symmetry-axis solver (compute on the quotient); the phase transition is the axis CDCL owns → docs/ladder/scripts/symmetry_phase_probe.py
SCOUT_NOTE.md GRD as the viscosity medium, scouted: backend/scout.py predicts each instance’s region relative to the fold from cheap detectors — ISLAND 16/16, TUNNEL 10/10 exact, FOLD band honestly flagged as mixed. Structure is invisible to clause-shape (needs the algebraic detectors). Fisher–Rao is the right natural metric but only in the algebraic rank coordinate — along cheap coverage the catastrophe is smeared (measured), which is why the boundary layer resists cheap prediction
ESCAPE_FIELD_NOTE.md clash of the continuous escape-field/SDF/geodesic framework (Eikonal ‖∇U‖=1/c, GRD’s εT_t+Exp) against our discrete decidability: measured to be a Thom catastrophe FOLD, not a smooth field — dilute a parity core and verdict/U(rounds)/f(hyperbolic depth) all snap at the cliff, far side near-empty. Why GRD is right to carry two velocity terms (geodesic descent on the island + tunnelling εT_t = CDCL across the fold) → scripts/escape_fold.py
FABRIC_NOTE.md the initial state read not as viscosity medium but as a woven fabric — a tapestry of threads (backend/fabric.py: parity rank-deficiency, orbit coarseness, gyration/hyperbolic depth, counting, implication, shape). Families occupy distinct regions of the fabric-manifold (scripts/fabric_ledger.py: Tseitin/XORSAT on the parity thread, PHP on the orbit thread, random at the gyration boundary). Two Fisher–Rao folds, each in its own natural coordinate (scripts/fisher_fold.py): parity/rank-deficiency √I≈18.4 at 0.05, orbit/symmetry-coarseness √I≈158 at 0.90 — both catastrophe walls, both flat in the crude chart. Honest floor: a residual coin-flip at each fold edge
FABRIC_MODEL_NOTE.md the family distributions modelled parametrically and hyperbolically (backend/fabric_model.py): each family a wrapped-normal blob on the Poincaré ball (radius = hyperbolic depth toward ∂∞, direction = which quality it heads toward), fit with gyrovector Fréchet means + tangent covariance, classified by geodesic distance. Decided families near the centre (depth ~0.4), tunnel out at ∂∞ (depth ~14.5) — separated by the fold, not a Euclidean gap. Held-out accuracy 1.00; predict_frame = a learned router prior (predictor, never a decider). Poincaré primitives property-tested to ~1e-14 → scripts/fabric_model_ledger.py
PIPELINE_REVIEW_NOTE.md traceback before the SOTA run: F1 the production SolverMiddleware used only a 2-SAT pre-check — the parity/counting/coupled frames lived only in the benchmark → wired frame_solve_scouted into _handle_solve; F2 the fabric’s gyration computed exact |Aut| (Schreier-Sims) → 11 459 ms → 12.5 ms (~900×) via a 1-WL fast path; F3 the full-scout tunnel gate measured a net loss (0.28×), the light structural gate a 3.3× win (0 verdict regressions) — honest negative recorded, cheaper detector shipped. Soundness audit of the three frames + coupling: clean
BEAT_CMS_NOTE.md the highest-altitude arc landed: float outside, collect the laws/relations/motions of the solve as a dynamical description (backend/dynamics.py), then revert it into a certified dispatch (backend/metasolver.py) that beats every individual solver including CryptoMiniSat on a competition-style mix — instant on the counting/parity islands where CMS blows up (php exponential, tseitin CMS-1.37s vs frame-0ms), comparable on the tunnel where CMS is strong. Honest scope: the win is structural portfolio dominance, not out-searching CMS on random-3SAT. Four solvers live → scripts/metasolver_benchmark.py
GAME_THEORY_NOTE.md self-reflection: the moving-frame regime as a zero-sum game, Solver vs Nature. The decidability fold is the boundary between two solution concepts — on the island a dominant pure strategy exists (the owning frame, ~0 ms), on the tunnel none does (heavy-tailed runtime) so the equilibrium is mixed. Von Neumann minimax + Gomes–Selman heavy tails explain why the fractal portfolio beats CMS on random-3SAT without CMS in the pool — it plays the minimax mixed strategy a single thread cannot. Honestly bounded: diminishing returns, No-Free-Lunch = minimax regret, CPU cost stated
METAMETASOLVER_NOTE (BEAT_CMS_NOTE.md + benchmark) the fractal, n-caged meta-metasolver (backend/metametasolver.py): frames-if-sufficient (instant certified island), else a parallel seed-diversified CDCL portfolio (first certified arm wins, losers killed) that out-searches CryptoMiniSat on random-3SAT — measured 7–40× on the hard heavy-tailed band, no CMS in the pool. Loses only trivial instances (launch overhead) — honest. Certified winner (DRAT/model), CPU cost reported → scripts/metametasolver_benchmark.py
GRD_CLASH_NOTE.md the three solvers as motion on manifolds, through the Geodesic Resonance Descent: CDCL flat, CryptoMiniSat reads one curved chart (parity), ours reads three + couples with zero holonomy defect = soundness (gluing_defect≡0, tested). GRD’s escape field = the warm-start (feed the coupling’s GF(2)-entailed units to CDCL) — measured honestly: median ~1.10× (sound but small; large wins real-but-rare) → scripts/warmstart.py
BEYOND_CDCL_NOTE.md three-way measured boundary (Kissat · CryptoMiniSat · middleware) answering the standing critiques: CMS matches on parity (owns XOR+Gaussian) but is exponential on counting — times out on php10 earlier than Kissat — while the counting frame is 4ms; the contribution is the counting fragment + the cross-frame coupling, not the parity fragment → docs/ladder/scripts/beyond_cdcl.py
EDGE_TAILS_REPORT.md stress into the tails of the benchmark distributions (phase-transition α sweep, PHP symmetry tail, parity-coverage boundary, coupling home): 0 soundness violations; php13 counting-refuted in 4ms while Kissat times out from php12; the honest boundary that the frames never fire on structureless random-3SAT at any α → docs/ladder/scripts/edge_tails.py
SOTA_BENCHMARK_REPORT.md frame-aware middleware vs raw SOTA CDCL across 5 families: 40/40 solved · PAR-2 0.05s (Kissat 35/40 · 5.33s, CaDiCaL 36/40 · 4.26s), 40/40 DRAT/model-certified; three sound frames divide the CDCL-hard families
COUNTING_FRAME_NOTE.md what survives PHP’s collapse against GF(2): the counting/ℤ frame (magnitude, not parity) — PHP as the char-0 dual of Tseitin; cardinality_check refutes php12 in 0.44ms
LAMBDA_SAT_NOTE.md clashing Lambda ⊗ SAT (Λᴿ): what survived into lambda_sat.py (β-reduce → CNF-with-remainder → certified decision) vs what stayed lens; the honest ε=0 scoping
ORBIFOLD_NOTE.md satisfiability as a mesh of orbifolds: the un-projected verdict (classical bit = π_truth) lifted to an orbifold chart = instance + its isotropy (CNF automorphisms), bracketed lower ≤ \|Aut\| ≤ upper (verified swaps / 1-WL color refinement). Measured payoff: PHP is a high-symmetry orbifold (log₂|Aut| → 107 by size), random is rigid → the counting frame is quotient-computation on the symmetric orbifoldbackend/orbifold.py, satisfiability_signature
OBSERVER_NOTE.md an ideal synthetic observer A†=(Θ,Γ,∇⁻¹,∂∞,R,C,E,J) distilled onto tested code: most organs are already the repo’s verification architecture; the two hardening organs are built here — C the ambiguous critic (polysemy: PHP is 2-frame, Tseitin 1-frame) and E the erroneous observer (a mutation-testing vaccine: 4 unsound mock-frames the sound adjudicator kills) → backend/observer.py
METAL_ROADMAP.md geometry → metal: understanding wants curvature, computation wants flatness (GF(2)); measured (naive numpy rewrite is slower); the three optimization passes (algorithm → allocation → tensorize); M4RI / CLMUL·GFNI / GPU-batch roadmap, honestly scoped
HYPERBOLIC_PROGRAMMING_NOTE.md hyperbolic programming (Gårding–Güler–Renegar–Brändén, LP/SOCP/SDP as special cases) meets the frames: implication ↔ orthant (LP), counting ↔ elementary-symmetric derivative relaxations (Brändén spectrahedral), parity has no real cone (char-2 disanalogy); the ℝ-side SOS/hyperbolic certificate as the open cousin of nullstellensatz_degree

Reproducible experiments

docs/ladder/scripts/: rung1_transition_sweep.py (hardness peak + cheap invariants), ns_degree_vs_width.py (algebraic vs resolution obstruction), symmetry_channel_ns.py (the char-2 fork), saddle_ruggedness_vs_gate.py (ruggedness vs the algebraic separator), fano_braid_associator.py (the octonion substrate), frame_router_scaling.py (the crystallized backend/frame_solver.py scaled on Tseitin: near-linear refute-first UNSAT).