Commit graph

5 commits

Author SHA1 Message Date
8845c9c347 fix(lean): complete projectionOrdering proof in GeometricCompressionWorkspace
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)
2026-06-18 15:06:50 -05:00
5f80fd8429 chore(repo): push local 768-commit branch state onto clean remote baseline
This squashes all local history (768 commits) onto the scrubbed PR #90
baseline. Individual commits were lost during filter-repo corruption;
the working tree content is preserved intact.

Build: N/A (working tree state only)
2026-06-15 22:46:50 -05:00
Brandon Schneider
98d48c30d4 feat(codec): extend BraidDiatCodec with BraidDiatFrame encoder/decoder
- BraidDiatCodec.lean: BraidDiatFrame now handles encode/decode of full
  SpherionState × BraidReceipt with 256-bit header and variable mountain list
- braid_diat_codec.py: Python extraction updated to match, benchmark artifact
  at shared-data/artifacts/braid_diat_codec_benchmark.json (714B avg vs
  messagepack 1748B avg)

Build: lake build Compiler 3313 jobs, 0 errors
2026-05-30 16:23:41 -05:00
Brandon Schneider
1ec2b15af4 feat(lean): prove BraidDiatFrame roundtrip + MMR.mountainList
- Add BraidField.MMR.mountainList helper to convert MMR to List Mountain
  in decreasing-height order (unwrap cons structure)
- Fix BraidDiatFrame.encode: use UInt32.ofNat for stepCount (Nat → UInt32),
  fix DynamicCanal.IntNode → BraidField.IntNode reference
- Fix BraidDiatFrame.decode: use toNat for stepCount (UInt32 → Nat),
  remove List.ofFn (requires proof of in-bounds) with Fin-based loop
- Fix toMountain: replace List.ofFn with foldl over List.range
- Fix encode_decode_roundtrip: prove decode(encode(state,receipt,chir,n,residuals))
  recovers original state.mmr, chirality, n, and receipt fields when n valid
- Fix decode_encode_roundtrip: prove encode after decode recovers frame fields
- Change #eval example Chirality.positive → Chirality.right (correct variant)

Build: 3572 jobs, 0 errors (lake build)
2026-05-30 13:19:31 -05:00
Brandon Schneider
77d67323f3 feat(lean): BraidDiatCodec — chirality/MMR/braid residual codec
BraidField.lean fixes:
- MMR.append: fix termination with named rec + termination_by mmr
- burdenCost: replace Nat.abs → Int.ofNat + manual abs via Nat.preadJoin
- SpherionState: add Inhabited instance (was blocking BraidDiatCodec)
- PISTField: add Inhabited instance

BraidDiatCodec.lean (new):
- ChiralityDIAT: 2-bit chirality + 62-bit DIAT slot (encode/decode + roundtrip proof)
- MountainPacked: height(8)+apex(48)+base_count(8)+bases; fromMountain/toMountain
- BraidResidualPacked: 5 Q0_2 fields × 2 bits; bracket_roundtrip theorem
- BraidDiatFrame: 256-bit fixed header + variable mountain list; encode/decode

Codec layers the mountains-on-mountain stack:
  Layer 1: Chirality-DIAT slot address (spatial hierarchy + anti-correlation prod)
  Layer 2: Mountain pack (height/apex/base, self-similar inner MMR)
  Layer 3: Braid residual (Q0_2 crossing residuals, 10 bits/crossing)
  Layer 4: Complete frame (SpherionState × BraidReceipt → frame → back)

Build: 3560 jobs, 0 errors (lake build)

AGENTS.md: updated blessed surface + codec documentation
2026-05-30 02:51:30 -05:00