native_decide +revert fails on Q16_16 (Subtype Int, infinite type).
gapQ16_canonical (verified) proves the computation works on {zero,one}.
The bridge from arbitrary Q16_16 to canonical values requires proving
predicate invariance under canonicalization — which is the same lemma.
The fundamental chicken-and-egg: to use native_decide, we need finite
values. To get finite values, we canonicalize. To prove canonicalization
preserves predicates, we need the bridge. The bridge is the lemma we
are trying to prove.
7 bridge sorries remain, all list-induction over 8 elements.
Build: 3314 jobs, 0 errors
gapQ16_canonical: for all 2^8 boolean patterns, verifySpectralGap on
canonical Q16_16 bins (zero or one) = boolGapPat on the pattern.
Verified by native_decide — the first time verifySpectralGap has been
computationally verified on concrete Q16_16 values.
Three independent computational kernels now verified:
- mergeCheck_all_256: 256×256 byte pairs (native_decide)
- gap_byte_pat: 256 boolean patterns (native_decide)
- gapQ16_canonical: 256 Q16_16 patterns (native_decide)
The bridge lemmas (canonicalize_pattern, gap_preserved, etc.) remain
as sorry — each is ~20 lines of list simp on 8-element lists.
Build: 3314 jobs, 0 errors
A boolean is a bit. Eight bins = eight bits = one byte.
mergeCheck_all_256: closed Bool term verified by native_decide over
all 256×256 byte pairs. Zero assumptions, zero free variables, zero sorry.
The kernel proves: for any two bytes where gap(s) ∧ gap(e) ∧ disjoint ∧
crossGap all hold, gap(s OR e) also holds. This is the complete
computational proof of the spectral gap merge property at the bit level.
The remaining sorry is the Q16_16→byte bridge: converting SpectralSignature
bins to/from Nat bytes and showing the predicates correspond. This is
standard list-level reasoning over 8 elements (unzip, map, filter, all).
Build: 3314 jobs, 0 errors (Compiler surface)
Theorem restated with crossInputGap hypothesis (no active bin from s
adjacent to active bin from e). Without this, the theorem is false:
counterexample s=[1,0,1,0,...] e=[0,0,0,1,0,1,...] has merge with
adjacent active bins despite resonanceDegeneracy=0.
Added to Spectrum.lean:
- crossInputGap: cross-input adjacency check on adjacent bin pairs
Added to GraphRank.lean:
- boolGap8: boolean gap check on 8 explicit values
- Complete mathematical proof sketch in docstring (4 steps)
The sorry remains: the Q16_16↔Bool bridge for 8-element lists requires
list-level induction on activeBins/verifySpectralGap/resonanceDegeneracy/
crossInputGap. The boolean kernel (boolGap8) is defined and ready for
native_decide verification once the bridge is automated.
Build: 3314 jobs, 0 errors (Compiler surface)
Discovery: the theorem with only resonanceDegeneracy=0 is FALSE.
Counterexample: s=[1,0,1,0,...] e=[0,0,0,1,0,1,...] — no overlap,
both gap-valid, but merge has adjacent active bins at positions 2,3.
Missing hypothesis: cross-input gap (no active bin from s adjacent to
active bin from e). This holds in Sidon-basis context (powers-of-2
labels ensure min separation ≥ 2).
The sorry is now documented with:
- Exact counterexample
- Required cross-input gap hypothesis
- Proof path when cross-gap is available
- Boolean model (Fin 8 → Bool) verification strategy
Build: 3314 jobs, 0 errors (Compiler surface)
The sorry remains but now has a concrete proof strategy:
- Boolean abstraction: convert Q16_16 bins to Bool (zero vs non-zero)
- Prove gap-preservation on finite 2^8 boolean model (native_decide)
- Lift to Q16_16 via contrapositive: merge active → input active
Blocker: native_decide can't handle free List Bool variables;
needs Fin 8 → Bool representation or custom tactic for the lift.
See TODO(lean-port) marker in theorem docstring.
Adds logViscosityRatio, log_viscosity_monotone, and ν_eff_monotone
to Semantics/NKHodgeFAMM.lean section 6b. The adaptive viscosity law
ν_eff = ν₀*(1+μ) is multiplicative in ν₀ and additive in scar density μ;
taking λ = log(ν_eff/ν₀) = log(1+μ) turns the multiplicative feedback into
an additive coordinate. This gives nlinarith a direct handle on viscosity
monotonicity and connects the module to Kritchevsky's "Everything Is
Logarithms" framing (SilverSight CITATION.cff).
Also marks a few pre-existing unused variables with underscores to silence
the linter.
Build: 8316 jobs, 0 errors (lake build Semantics.NKHodgeFAMM)
Moves all classification authority from Python into Lean:
- Adds `0-Core-Formalism/lean/Semantics/PistClassifyTrace.lean` executable.
Reads a raw trace JSON and emits spectral radius, RRC shape, and tactic
family using `Semantics.PIST.Spectral` and `Semantics.PIST.Classify`.
- Registers `pist-classify-trace` in `lakefile.toml`.
- Fixes `Semantics.PIST.Spectral` power iteration to handle directed
transition matrices:
- `symmetrize` now preserves half-integer weights as Q16_16 raw values.
- `matVecMul` uses saturated Q16_16 arithmetic to prevent overflow.
- Rewrites `4-Infrastructure/shim/pist_trace_classify_offline.py` as a pure
I/O wrapper: reads JSON, calls the Lean classifier, optionally calls
`rrc-watchdog`, and emits the combined JSON. Removes Python-side spectral
computation, shape thresholds, tactic heuristic, and KNN.
- Updates `AGENTS.md` and `4-Infrastructure/AGENTS.md` with the new build
baseline and shim contract.
Verification:
- `lake build` → 8604 jobs, 0 errors
- Canary trace outputs match previous Python outputs to within Q16_16 rounding
(e.g., apply_chain λ_q16 = 59044 vs 59045).
- `python3 -m py_compile` on the rewritten shim passes.
Add Semantics.ChentsovBridge with:
- Discrete simplex, tangent vectors, Markov morphisms
- Fisher-Rao metric field and quadratic form
- Axiom for Chentsov uniqueness (literature reference)
- SIM metric from RandersMetric alpha component
- Main theorem: torsion-free => SIM = Fisher (up to scale)
- mergeTwo coarse-graining example (2 bookkeeping sorries)
- simMetricIsMonotone axiom with TODO(lean-port) proof sketch
Update AGENTS.md pending proof work section.
Verification: narrow target lake build Semantics.ChentsovBridge is pending
because upstream oleans (TransportTheory -> AdjugateMatrix -> FixedPoint) are
stale and require a long rebuild. Syntax was checked via lake env lean.
- Corrected type mismatches in SOSCertificate and SemialgebraicSet constraints, ensuring polynomial components are correctly typed as ((σ → ℝ) → ℝ).
- Resolved block comment syntax errors (/-- unexpected token) by converting section commentaries to standard block comments.
- Decomposed foldl list inductions into generalized induction helper lemmas foldl_nonneg and foldl_weighted_nonneg to resolve type mismatches.
- Unfolded let bindings in softplus_derivative_bounded via dsimp only to allow linarith to successfully find contradictions.
- Updated CITATION.cff, GEMINI.md, and local AGENTS.md files with baseline records.
Build: 3314 jobs, 0 errors (lake build Compiler)
- Unfolded decideGate and used dsimp only to eliminate local let/have bindings in stableSignal_implies_coherent and noCfd_avoids_continuum.
- Used split_ifs to automatically resolve contradictory branches and extracted correct boolean/decidable subgoals.
- Unfolded tensegrityCoherent and applied decide_eq_true_iff.mp to resolve the tensegrity_implies_braid_coherence theorem.
- Updated 0-Core-Formalism/lean/Semantics/AGENTS.md to reflect the completed tasks.
Build: 8332 jobs, 0 errors (lake build)
Created the new TopologicalBraidAdapter.lean module, connecting AnyonBraid, SLUG3State, UnitQuaternion, DualQuaternion, SemanticMassPoint, and TopoPhinVector types. Fixed trailing comma let-expression syntax for eval statements and verified correctness of Fibonacci Hilbert space dimensions.
Build: 8332 jobs, 0 errors (lake build)
Replace the TODO(lean-port) sorry with a complete proof of the
projectionOrdering theorem: for positive SourceValue pairs s1 < s2
with s2 ≤ maxExpected, projectToCoding preserves strict ordering
of the Q0_64 values.
The proof uses Nat-only arithmetic (no Float) and handles two cases:
- a2 < d: both values fit in Q0_64 range, ordering follows from
monotonicity of integer division
- a2 = d: a2*s/d = s clamped to q0_64MaxRaw; a1*s/d < q0_64MaxRaw
via the key inequality (d-1)*s < (s-1)*d
Build: 8598 jobs, 0 errors (lake build)
Key change: goormaghtigh_finite_search is no longer an axiom. Replaced
with native_decide proof using nested ∀ x ∈ Icc, ∀ m ∈ Icc, ... which
is fast (avoids constructing a 958K-element Finset).
Also added:
- repunit_mod_pred lemma: R(x,m) ≡ m (mod x-1)
- goormaghtigh_collision_mod lemma: cross-residue sieve
- Theorem now includes 4 ordered forms (adding (2,5,5,3) and
(2,13,90,3) for completeness)
Only goormaghtigh_boundedness remains as axiom.
Build: 8317 jobs, 0 errors.
repunit_collisions_unique proven via native_decide on a 979-element Finset:
only 2 repunit values (31 and 8191) have multiplicity > 1 in [2,90]×[3,13].
goormaghtigh_finite_search remains an axiom (the full finite search
conclusion requires the specific collision pairs, not just their count).
Build: 8317 jobs, 0 errors.
Theorem: For x>1, y>1, m>2, n>2, (x,m)≠(y,n),
if R(x,m) = R(y,n) then (x,m,y,n) = (5,3,2,5) or (90,3,2,13).
Two axioms remain:
- goormaghtigh_finite_search: 979 repunit pairs enumerated in Python,
only 2 collisions (31 and 8191) — verified externally
- goormaghtigh_boundedness: the 16D→0D projection bounds x,y≤90, m,n≤13
(equivalent to the full conjecture — this is the open number theory)
Goormaghtigh's requirement m,n>2 ensures no trivial solutions like
R(6,2)=7=R(2,3). The (x,m)≠(y,n) condition excludes identity solutions.
Build: 8317 jobs, 0 errors.
AGENTS.md: added SpherionTwinPrime architecture section, updated Burgers energy dissipation to parametric form.
spherion_twin_prime.py (20KB): priority-queue walk with polarity energy tuning.
Build: 8598 jobs, 0 errors.
General theorem: for speeds [1,2,...,k] at t = 1/(k+1), the origin
is uncovered. Proves the Lonely Runner Conjecture for the infinite
family of consecutive integer speeds. Subsumes k=2 and k=3 lemmas.
A. ode_existence (AVMRTheorems.lean) — proven via
ContDiffAt.exists_forall_mem_closedBall_exists_eq_forall_mem_Ioo_hasDerivAt.
vectorFieldℝ is affine linear (ContDiff ℝ 1 via fun_prop), satisfying
Picard-Lindelöf. Zero sorries remaining in file.
B. BurgersNKConsistency.lean (167 lines) — 4 theorems mapping Burgers
theorems to NK-Hodge-FAMM conditions. Main theorem: energy bounded
for all n via applyViscosity_energy_le induction.
C. LonelyRunner.lean (311 lines) — 10 sections: circle distance, runner
positions, coverage density, scar region, scar complex, beta0.
Proved lonely_k2_speeds_1_2 and lonely_k3_speeds_1_2_3.
Betti bridge to NK-Hodge-FAMM framework.
All builds: 8598/8313 jobs, 0 errors.