Documentation

CsdLean4.RecordLayer.PointerLuders

SigmaLayer/PointerLuders: the smooth stroke and the relocation on one arena (B3b, brick 1) #

Category: dynamical measurement — specs/BACKLOG.md B3b, first brick.

Why this module has to exist #

The smooth witness provably does not collapse: pointerEvolve_base_marginal_unchanged says the measurement stroke leaves every initial measure's sector marginal untouched. That is a feature — records without back-reaction — but it means the smooth horn on its own delivers records and Born and no state update. The update lives on the swap/join witnesses, which are triggered by a torus arc.

Composing the two therefore needs an arena carrying the pointer and a bank, and a relocation triggered by the pointer's record region rather than by a register arc. That is what this brick builds.

What is proved here #

⚠️ Deliberately not claimed here: measure preservation of pointerRelocate itself. Discharged 2026-08-05 (SigmaLayer/PointerLudersMarginal.lean, pointerRelocate_measurePreserving): exactly the predicted partition argument — the swapG route with record cylinders in place of register arcs.

⚠️ Honest scope — this is brick 1 of B3b, not B3b. Brick 2 landed 2026-08-05 (SigmaLayer/PointerLudersMarginal.lean): the conditioned post-measurement system marginal is now a theorem (pointer_luders_marginal), so the smooth horn claims a Lüders update — records (ε-Born) and collapse-as-relocation on one arena. B3b is closed. Nothing in brick 2 weakens pointerEvolve_base_marginal_unchanged: the relocation is a second stroke, so the first still does not collapse — that division of labour is now load-bearing rather than aspirational.

What brick 2 owed — delivered 2026-08-05 #

The conditioned post-measurement system marginal (pointer_luders_marginal, with the CSD forms pointer_luders_born/pointer_luders_born_prep) and the piecewise invariance (pointerRelocate_measurePreserving, plus the full-composite pointerLudersStroke_measurePreserving). See SigmaLayer/PointerLudersMarginal.lean.

References #

specs/BACKLOG.md B3b; SigmaLayer/PointerBorn.lean (the smooth stroke and its arena); SigmaLayer/SwapWitness.lean (bankSwap, measurePreserving_bankSwap — the torus- triggered original this mirrors); SigmaLayer/PointerGeneration.lean (pointerEvolve_base_marginal_unchanged, the theorem that makes this module necessary).

@[reducible, inline]

The composed arena: the smooth witness's (Σ × pointer) with a bank of N slots.

Equations
Instances For
    noncomputable def CSD.RecordLayer.pointerIndex {N : } (q : Pointer N) :

    The pointer readout: which record region the pointer occupies, if any. Well defined because distinct record regions are disjoint.

    Equations
    Instances For

      The slot swap on the composed arena: exchange the system with bank slot j, leaving the pointer alone.

      Equations
      Instances For

        The record-triggered relocation: if the pointer displays j, exchange the system with bank slot j; otherwise do nothing. Triggered by the pointer's record, which is what makes this composable with the smooth stroke.

        Equations
        Instances For

          The relocation never moves the pointer — so the record survives its own relocation, exactly as in the torus-triggered version.

          The two-stroke composite: run the smooth record stroke on the system-and-pointer factor, then relocate against the record it created. This is the map whose conditioned marginal brick 2 must compute; it is defined here so that the arena and the dynamics are pinned down before the analysis.

          Equations
          Instances For

            The composite leaves the bank's slot count and the pointer's record intact: the record that triggers the relocation is the one the stroke just created.

            The arena measure and its invariance #

            The composed arena measure: system ⊗ pointer ⊗ calibrated bank.

            Equations
            Instances For

              The slot swap preserves the arena measure — the same conjugation the torus version uses (measurePreserving_bankSwap); that the register measure is Fubini–Study rather than Haar plays no part in the argument.