SigmaLayer/SwapClosure: all six dynamical facts on ONE arena #
Category: 7-SigmaLayer (the record layer — arena unification, step 1 of 2).
Why #
DynamicMeasurementClosure was honest about a split: its ready/record/persistence/Born fields
were shear-protocol statements on Σ_sel × T²_R, while its Lüders field was a
swap-protocol statement on the bank-augmented SwapArena. The external review (2026-08-02)
correctly listed "package all six facts on the swap arena alone" as the precursor to the engine
migration. This module does that:
SwapMeasurementClosure— ready ⇒ no record, record created, outcomes exclusive, record persists, dynamical Born sector weights, and the rank-one Lüders update — every field a statement aboutswapProtocolonSwapArena, at one canonical preparation.swapMeasurementClosure— discharged, for every state, withCorrelatesOn/PointerInvariantOnproved (swap_correlates,swap_pointerInvariant), not assumed.
Two genuine upgrades over the shear-side bundle, beyond the arena move:
sector_bornis the dynamical Born, not the kinematic selector Born: the measure of the outcome sector (initial states destined for recordi) equals the Born weight — viameasure_outcomeSector_eq_of_correlates, so the correlation theorem is genuinely consumed.luders_followupcarries nohposhypothesis about the measure — positivity of the Born weight itself licenses the conditioning (prep_outcome_pos, moved here from the empirical layer, where it was born one layer too high).
What remains for the engine migration (step 2, recorded) #
The operational closure (FiniteQMClosure) still lives on productDynamics over
ℂℙ^M × T². CsdFiniteQMClosure remains a conjunction over two arenas; this module removes
the split within the dynamical bundle only. See specs/BACKLOG.md.
References #
SigmaLayer/DynamicMeasurementClosure.lean (the predecessor bundle, untouched);
SigmaLayer/SwapWitness.lean (swapProtocol, selReadyBank, swap_correlates,
swap_pointerInvariant); SigmaLayer/SwapLuders.lean (swap_luders_born);
SigmaLayer/MeasurementProtocol.lean (measure_outcomeSector_eq_of_correlates);
SigmaLayer/DynamicBorn.lean (basinIndex, measure_basinIndex_fibre);
Empirical/CSD/SequentialMeasurement.lean (the empirical consumer); specs/BACKLOG.md.
The canonical preparation and its bank #
The canonical sequential-round preparation: system at the ontic point p, register in the
ready arc. (Moved from Empirical/CSD/SequentialMeasurement.lean, 2026-08-02 — it is
SigmaLayer machinery.)
Equations
Instances For
The vertex-calibrated ancilla bank of the swap witness.
Equations
Instances For
The full swap-arena preparation: system-and-register at readyPrep p, bank calibrated.
Equations
Instances For
hpos as a theorem (moved from the empirical layer) #
The ready arc has full conditional measure.
hpos is a theorem for the canonical ready preparation. The outcome-i sector has
nonzero measure whenever the Born weight momentMap p i is nonzero: the selector-and-ready set
sits inside the sector (shear_correlates) and factors as (basin fibre) × (ready arc), both of
nonzero measure. Generalises vertex_outcome_pos. (Moved from
Empirical/CSD/SequentialMeasurement.lean, 2026-08-02.)
The selector-and-ready-and-bank partition, measured #
The canonical preparation weights the selector-and-ready-and-bank set with exactly the Born weight.
The dynamical Born on the swap arena #
★ The dynamical Born weight, on the swap arena. The measure of the outcome-i sector —
the initial states destined to display record i — equals the Born weight momentMap p i,
for every preparation. Proved through measure_outcomeSector_eq_of_correlates, so the
correlation theorem (swap_correlates) is genuinely consumed: this is Born as a consequence of
the dynamics, stated where the Lüders update also lives.
The dynamical Born for an arbitrary context (Q25, 2026-08-21) #
The two-time composition (RecordLayer/TwoTimeLuders.lean) needs the sector
Born for the SECOND measurement's context, which is arbitrary. The assembly is
swap_sector_born's, with globalBasin_prob consumed at a general
ContextField — the momentContext statement above stays as the canonical
special case.
The canonical preparation weights the selector-and-ready-and-bank set of an ARBITRARY
context with that context's rate. Generalises swapPrep_selReadyBank.
★ The dynamical Born weight for an arbitrary context, on the swap arena. The measure of
the outcome-i sector of the swap protocol built on ANY context field c equals that context's
rate at the preparation — swap_sector_born with the context general. This is what lets a
SECOND measurement, in whatever basis, read its Born weights off the relocated state
(RecordLayer/TwoTimeLuders.lean).
The closure: six facts, one arena, one preparation #
The swap-arena measurement closure. The six dynamical facts, every one a statement
about swapProtocol on SwapArena at the canonical preparation swapPrep [ψ] — the
single-arena bundle DynamicMeasurementClosure could not honestly be.
- ready_no_record (x : SwapArena (LF4.KSigma N) N) : x.1.2 ∈ readyArc N → (swapProtocol (basinIndex (momentContext N)) ⋯).readout x = none
Ready ⇒ no record.
- record_created (i : Fin N) (x : SwapArena (LF4.KSigma N) N) : x ∈ selReadyBank (basinIndex (momentContext N)) i → (swapProtocol (basinIndex (momentContext N)) ⋯).readout ((swapProtocol (basinIndex (momentContext N)) ⋯).evolve 0 1 x) = some i
A record is created, and it is the outcome the hidden selector had fixed.
- outcomes_exclusive : Pairwise (Function.onFun Disjoint (swapProtocol (basinIndex (momentContext N)) ⋯).outcomeSector)
Distinct outcomes are exclusive.
- record_persists (i : Fin N) (x : SwapArena (LF4.KSigma N) N) (t : SigmaLayer.OnticTime) : x ∈ (swapProtocol (basinIndex (momentContext N)) ⋯).outcomeSector i → 1 ≤ t → t ≤ 1 + 1 → (swapProtocol (basinIndex (momentContext N)) ⋯).readout ((swapProtocol (basinIndex (momentContext N)) ⋯).evolve 0 t x) = some i
The record persists across the operational window.
- sector_born (hψ0 : ψ ≠ 0) : ‖ψ‖ = 1 → ∀ (i : Fin N), (swapPrep (Projectivization.mk ℂ ψ hψ0)) ((swapProtocol (basinIndex (momentContext N)) ⋯).outcomeSector i) = ENNReal.ofReal (‖inner ℂ (EuclideanSpace.single i 1) ψ‖ ^ 2)
★ The dynamical Born: the outcome sector's measure is the Born weight.
- luders_followup (hψ0 : ψ ≠ 0) (i : Fin N) : LF4.momentMap (Projectivization.mk ℂ ψ hψ0) i ≠ 0 → ∀ (c' : ContextField N) (j : Fin N), ((swapProtocol (basinIndex (momentContext N)) ⋯).postMeasure (swapPrep (Projectivization.mk ℂ ψ hψ0)) i) ((fun (y : SwapArena (LF4.KSigma N) N) => y.1.1) ⁻¹' globalBasin c' j) = ENNReal.ofReal (c'.rate (vertexPoint i) j)
★ The rank-one Lüders update, with the conditioning licensed by the Born weight itself — no measure-positivity hypothesis.
Instances For
★ The swap-arena closure holds — for every state, with CorrelatesOn and
PointerInvariantOn proved of the constructed propagator, never assumed.