Research-Stack/0-Core-Formalism/lean/Semantics/Semantics/BraidVCNBridge.lean
Brandon Schneider 37af86f3cd fix: BraidVCNBridge field names + MeshRouting OfNat saturation + VCN types
BraidVCNBridge.lean:
- phaseVec → phaseAcc
- crossingResidual now takes 3 brackets (bij, bi, bj)
- open Semantics.BraidBracket.BraidBracket for crossingResidual

MeshRouting.lean:
- Fixed vcnReceiptValidCompression sorry (OfNat saturation)
- 0x00010000 → Q16_16.one (avoids OfNat clamping to maxVal)
- Proof: Int.le_ediv_iff_mul_le + nlinarith
- Added VCN substrate types (VCNCodec, VCNResolution, VCNFrameRate)
- Remaining sorry: goxelFieldEnergyConservation (pre-existing)

Build: 3305 jobs, 0 errors, 1 pre-existing sorry
2026-05-28 16:10:07 -05:00

48 lines
1.6 KiB
Text

import Semantics.FixedPoint
import Semantics.BraidStrand
import Semantics.BraidBracket
import Semantics.MeshRouting
/-!
# BraidVCNBridge — Map braid operations to VCN frame encoding.
Bridges the braid algebra (BraidStrand, BraidBracket) to the VCN video encode
substrate for GPU-accelerated computation.
-/
namespace Semantics.BraidVCNBridge
open Semantics
open Semantics.BraidBracket
open Semantics.BraidBracket.BraidBracket
open Semantics.BraidStrand
def encodeBraidStrand (s : BraidStrand) : Array UInt8 :=
let px := s.phaseAcc.x.val.toNat
let py := s.phaseAcc.y.val.toNat
let mag := s.magnitude.val.toNat
let gap := s.bracket.gap.val.toNat
let packQ16 (v : Nat) : Array UInt8 :=
#[ UInt8.ofNat (v % 256),
UInt8.ofNat ((v / 256) % 256),
UInt8.ofNat ((v / 65536) % 256),
UInt8.ofNat ((v / 16777216) % 256) ]
packQ16 px ++ packQ16 py ++ packQ16 mag ++ packQ16 gap
def encodeBraidCrossing (bij bi bj : BraidBracket) : Array UInt8 :=
let res := crossingResidual bij bi bj
let packQ16 (v : Q16_16) : Array UInt8 :=
let n := v.val.toNat
#[ UInt8.ofNat (n % 256),
UInt8.ofNat ((n / 256) % 256),
UInt8.ofNat ((n / 65536) % 256),
UInt8.ofNat ((n / 16777216) % 256) ]
packQ16 res.lower ++ packQ16 res.upper ++
packQ16 res.gap ++ packQ16 res.kappa ++ packQ16 res.phi
-- TODO(lean-port): Mountain merge encoding (needs BraidField import)
-- TODO(lean-port): PISTField frame encoding (needs BraidField import)
-- TODO(lean-port): eigensolid_convergence — crossing loop stabilizes
-- TODO(lean-port): receipt_invertible — encode + decode is bijective
end Semantics.BraidVCNBridge