Documentation

CsdLean4.RecordLayer.PointerLudersMarginal

SigmaLayer/PointerLudersMarginal: the smooth horn's Lüders theorem (B3b, brick 2) #

Category: dynamical measurement — specs/BACKLOG.md B3b, second (final) brick.

Glossary: https://glossary.constraintsurfacedynamics.com/luders-rule/ Plain-language, CSD-role and formal statements of the Luders rule, with this module as its Lean anchor. Kept symmetric by scripts/check-glossary.sh.

What brick 1 owed, delivered here #

Brick 1 (PointerLuders.lean) built the composed arena (Σ × ℂℙ^N) × bank and defined the two-stroke composite — smooth record stroke, then record-triggered relocation — while explicitly not claiming two things. Both are proved here:

Why this does not contradict the no-collapse results #

pointerEvolve_base_marginal_unchanged still holds: the smooth stroke does not collapse. The update is the second stroke, and it moves the system by relocation — the slot swap exchanges volume 1:1 (pointerRelocate_measurePreserving), so no_exact_collapse is not in play. After the swap, slot i holds the pre-measurement system state: a perfect ontic memory, with irreversibility priced only at erasure (collapse_accuracy_bound).

⚠️ Honest scope #

References #

specs/BACKLOG.md B3b; SigmaLayer/PointerLuders.lean (brick 1 — arena, relocation, slot swap); SigmaLayer/SwapLuders.lean (swap_luders_marginal, cond_prod_cylinder — the torus-triggered original whose shape this transports); Mathlib/MeasureTheory/ PiecewisePreserving.lean (measurePreserving_of_partition, Measure.map_eval_pi'); SigmaLayer/PointerBorn.lean (pointerPrep, pointer_born_lower — the non-vacuity supply); SigmaLayer/GlobalBasin.lean (epistemicMeasure, globalBasin_prob); SigmaLayer/PointerGeneration.lean (pointerEvolve_base_marginal_unchanged — why the update needed a second stroke at all).

The relocation partition: record cylinders and the no-record piece #

The relocation's partition piece for label k: the record cylinder for some j, the no-record set for none.

Equations
Instances For

    The relocation's piece map for label k: the slot swap on a record cylinder, the identity on the no-record piece.

    Equations
    Instances For
      theorem CSD.RecordLayer.pointerIndex_eq_none {N : } {q : Pointer N} (h : ¬∃ (j : Fin N), q recordRegion j) :

      The readout is none off every record region.

      Off every record region, the relocation does nothing.

      The relocation agrees with the piece map on each piece.

      Each piece map fixes its own piece as a preimage — the slot swap never moves the pointer, so a record cylinder is invariant.

      The relocation is measurable — piecewise, over the record-cylinder partition.

      The record-triggered relocation preserves the arena measure — brick 1's explicitly-owed piecewise invariance. On each record cylinder the relocation is the slot swap (measure-preserving, pointerBankSwap_measurePreserving) and the cylinder is its own preimage (pointerRelocate_pointer: the relocation never moves the pointer); off every record region it is the identity. measurePreserving_of_partition assembles the pieces — the same argument the torus witness used for swapG, with record cylinders in place of register arcs.

      The smooth stroke on the composed arena #

      The smooth stroke preserves μs ⊗ μ_FS for any s-finite sector measure — the skew product over the pointer factor, with each slice an FS-preserving unitary. (The brick-2b statement pointerEvolve_measurePreserving is the pointerLiouville instance.)

      theorem CSD.RecordLayer.measurable_pointerLudersStroke {N : } (c : ContextField N) (hc : ∀ (j : Fin N), Continuous fun (p : LF4.CPN N) => c.rate p j) (ε : ) :

      The two-stroke composite conserves Liouville measure: record stroke (skew product) then relocation (piecewise slot swap). Collapse as relocation, not contraction — no_exact_collapse is respected because volume is exchanged 1:1, on the smooth horn exactly as on the exact horns.

      The conditioned post-measurement marginal #

      theorem CSD.RecordLayer.pointerProtocol_outcomeSector {N : } (c : ContextField N) (hc : ∀ (j : Fin N), Continuous fun (p : LF4.CPN N) => c.rate p j) {ε δ : } ( : δ 1 / 2) (i : Fin N) :

      The sector identification: the smooth protocol's outcome sector is the brick-2b propagator's preimage of the record cylinder. Pins down the trigger the relocation reads.

      theorem CSD.RecordLayer.pointerLudersStroke_sys_on_sector {N : } (c : ContextField N) (hc : ∀ (j : Fin N), Continuous fun (p : LF4.CPN N) => c.rate p j) {ε δ : } ( : δ 1 / 2) (i : Fin N) {y : PointerLudersArena N} (hy : y.1 (pointerProtocol c hc ε ).outcomeSector i) :
      (pointerLudersStroke c ε y).1.1 = y.2 i

      On the outcome-i sector, the post-stroke system coordinate is bank slot i: the stroke lands the pointer in recordRegion i, so the relocation is the slot-i swap.

      theorem CSD.RecordLayer.pointer_luders_marginal {N : } (c : ContextField N) (hc : ∀ (j : Fin N), Continuous fun (p : LF4.CPN N) => c.rate p j) {ε δ : } ( : δ 1 / 2) (μsp : MeasureTheory.Measure (PointerArena N N)) [MeasureTheory.IsProbabilityMeasure μsp] (ν : Fin NMeasureTheory.Measure (LF4.KSigma N)) [∀ (j : Fin N), MeasureTheory.IsProbabilityMeasure (ν j)] (i : Fin N) (hpos : μsp ((pointerProtocol c hc ε ).outcomeSector i) 0) :

      ★★ The Lüders update for the smooth horn, as a pushforward.

      Initial state: system-and-pointer μsp, bank slots independently calibrated to ν j. Conditioned on the outcome-i sector — the smooth protocol's own sector, cylindered over the bank, which is the statement that the bank plays no part in which outcome occurs — the post-stroke system marginal is the slot-i calibration. Collapse as measure-preserving relocation, now on the smooth horn: the same three moves as swap_luders_marginal, with the trigger read off the pointer's record region instead of a torus arc. The conditioned marginal is exact; the ε lives only in which outcome occurs.

      The CSD form: sequential statistics are Lüders on the smooth horn #

      theorem CSD.RecordLayer.pointer_luders_born {N : } (c : ContextField N) (hc : ∀ (j : Fin N), Continuous fun (p : LF4.CPN N) => c.rate p j) {ε δ : } ( : δ 1 / 2) (μsp : MeasureTheory.Measure (PointerArena N N)) [MeasureTheory.IsProbabilityMeasure μsp] (i : Fin N) (hpos : μsp ((pointerProtocol c hc ε ).outcomeSector i) 0) (c' : ContextField N) (j : Fin N) :

      Lüders for CSD on the smooth horn: with the bank calibrated to the vertex preparations, the post-outcome-i system marginal is epistemicMeasure (vertexPoint i), so for any context field c' the follow-up outcome-j probability is c'.rate [eᵢ] j — Born of the collapsed state. The system after the measurement behaves, in every subsequent measurement, exactly as a fresh preparation of eᵢ.

      theorem CSD.RecordLayer.pointer_luders_born_prep {N : } (c : ContextField N) (hc : ∀ (j : Fin N), Continuous fun (p : LF4.CPN N) => c.rate p j) {ε δ : } ( : 0 < ε) (hδpos : 0 < δ) ( : δ 1 / 2) (p : LF4.CPN N) (q₀ : Pointer N) (i : Fin N) (hi : 2 * ε < c.rate p i) (c' : ContextField N) (j : Fin N) :

      ★★ The composite on the witness's own preparation — B3b closes. For the smooth witness's ready-conditioned preparation pointerPrep, whenever the context gives outcome i a rate above the ε-floor (2ε < rate i), the ε-Born lower bound makes the conditioning non-vacuous, and follow-up statistics after outcome i are exactly the collapsed state's Born weights. The smooth horn now delivers records (ε-Born, smoothWitnessClosure/pointer_born_frequency) and a Lüders update, on one arena.