Documentation

CsdLean4.RecordLayer.JoinLuders

SigmaLayer/JoinLuders: BlockLudersObligation, inhabited — the degenerate arc closed #

Category: 7-SigmaLayer (dynamical measurement — degenerate Lüders, brick 5: the conditioned marginal).

The headline #

★★ joinWitness_blockLuders: the join witness satisfies BlockLudersObligation — the §8.3 demand that swap_not_blockLuders proved no fixed ray-level calibration can meet is inhabited by the join protocol. For every preparation ψ with nonvanishing block-i component, the sector-conditioned post-measurement system readout is exactly epistemicMeasure [Πᵢψ] — the ψ-dependent Lüders update, from a fixed block-supported calibration family, through Liouville-preserving dynamics.

How the marginal computation runs (join_luders_marginal) #

The canonical preparation is a pushforward from a parameter space (phase θ, system fibre θₛ, ancilla fibre θₐ, register r): join point = the phase-orbit point [χ(θ)ψ ⊕ α], fibres Haar, register ready. Then:

  1. conditioning commutes with the pushforward (cond_map);
  2. on the ready support, the outcome-i sector pulls back to a cylinder over the system fibre aloneθₛ ∈ goodTheta (the block's basin cells) — because the phase orbit has constant system ray, so the selector never sees θ;
  3. conditioning the product on that cylinder conditions only the θₛ factor (cond_prod_prod);
  4. on the conditioned support the evolved readout is constant in everything but θₐ: the ray is [Πᵢψ] at every phase (joinPoint_collapse, from join_block_luders), and the post-measurement system fibre is the ancilla's;
  5. so the marginal is δ_{[Πᵢψ]} ⊗ Haar = epistemicMeasure [Πᵢψ]. The conditioned original fibre (the θₛ factor) integrates out — it was moved to the ancilla slot, stored.

goodTheta_vol_pos discharges the conditioning positivity from Πᵢψ ≠ 0 alone (a nonzero block coordinate has a positive-width basin cell), so the obligation carries no measure hypothesis. (The generic conditioning toolkit was extracted to CsdLean4/Mathlib/Probability/ConditionalProbability.lean on 2026-08-02.)

What this closes #

The degenerate-Lüders arc, bricks 1–5: relocation target (BlockCollapse) → phase-slot mechanism (PhaseSlot) → Liouville-preserving pointwise update on the join (JoinArena) → the MeasurementProtocol (JoinProtocol) → the obligation itself (here). The rank-one and degenerate Lüders updates now stand on the same architectural footing: explicit propagators, measure-preserving, records created and persistent, post-states as pushforward theorems. swap_not_blockLuders stands as the theorem explaining why the ray-pair arena could not host this.

References #

SigmaLayer/DegenerateLuders.lean (BlockLudersObligation, swap_not_blockLuders); SigmaLayer/JoinProtocol.lean (the protocol); SigmaLayer/JoinArena.lean (join_block_luders — the pointwise input); SigmaLayer/SwapLuders.lean (the rank-one precedent whose conditioning toolkit this mirrors); specs/BACKLOG.md.

Conditioning toolkit — moved to the staging tree 2026-08-02 #

(CsdLean4/Mathlib/Probability/ConditionalProbability.lean: ProbabilityTheory.cond_map, cond_prod_prod, cond_eq_self).

The ready register never leaves the ready arc.

Conditioning a probability measure on the whole space does nothing.

The sector, characterised on the ready support #

theorem CSD.RecordLayer.shear_sector_iff_of_ready {K : } {Xs : Type u_1} [MeasurableSpace Xs] (idx : XsFin K) (hidx : Measurable idx) (i : Fin K) {x : Xs × LF4.KTorus} (hr : x.2 readyArc K) :
x (shearProtocol idx hidx).outcomeSector i idx x.1 = i

On the ready arc, the shear's outcome-i sector is exactly the selector-i fibre.

The join protocol's outcome sector is the shear's — the record trigger never moves the register.

The canonical preparation #

noncomputable def CSD.RecordLayer.joinPoint {N : } (ψ α : EuclideanSpace (Fin N)) (hψ0 : ψ 0) (θ : AddCircle 1) :
LF4.CPN (N + N)

One phase-orbit join point.

Equations
Instances For

    The first-copy embedding, linearly.

    Equations
    Instances For

      The doubled vector is the linear first part plus the constant slot part.

      theorem CSD.RecordLayer.measurable_joinPoint {N : } (ψ α : EuclideanSpace (Fin N)) (hψ0 : ψ 0) :
      Measurable (joinPoint ψ α hψ0)

      The parameter space of the canonical preparation: phase, system fibre, ancilla fibre, register.

      Equations
      Instances For

        The parameter measure, as its defining product (interface lemma, §9.1).

        noncomputable def CSD.RecordLayer.jF {N : } (ψ α : EuclideanSpace (Fin N)) (hψ0 : ψ 0) (q : ((AddCircle 1 × LF4.KTorus) × LF4.KTorus) × LF4.KTorus) :

        The preparation map: phase-orbit join point, fibres and register threaded through.

        Equations
        Instances For
          theorem CSD.RecordLayer.measurable_jF {N : } (ψ α : EuclideanSpace (Fin N)) (hψ0 : ψ 0) :
          Measurable (jF ψ α hψ0)
          noncomputable def CSD.RecordLayer.joinPrep {N K : } (ψ α : EuclideanSpace (Fin N)) (hψ0 : ψ 0) :

          The canonical preparation: phase-orbit join point, Haar fibres, ready register.

          Equations
          Instances For

            The selector on the orbit #

            theorem CSD.RecordLayer.joinFst_joinPoint {N : } [NeZero N] (ψ α : EuclideanSpace (Fin N)) (hψ0 : ψ 0) (θ : AddCircle 1) :
            joinFst (joinPoint ψ α hψ0 θ) = Projectivization.mk ψ hψ0

            The phase orbit has constant system ray.

            def CSD.RecordLayer.goodTheta {N K : } [NeZero N] (b : Fin NFin K) (ψ : EuclideanSpace (Fin N)) (hψ0 : ψ 0) (i : Fin K) :

            The good system fibres: those whose basin lies in block i.

            Equations
            Instances For
              theorem CSD.RecordLayer.measurableSet_goodTheta {N K : } [NeZero N] (b : Fin NFin K) (ψ : EuclideanSpace (Fin N)) (hψ0 : ψ 0) (i : Fin K) :
              MeasurableSet (goodTheta b ψ hψ0 i)
              theorem CSD.RecordLayer.joinIdx_jF {N K : } [NeZero N] (b : Fin NFin K) (ψ α : EuclideanSpace (Fin N)) (hψ0 : ψ 0) (q : ((AddCircle 1 × LF4.KTorus) × LF4.KTorus) × LF4.KTorus) :
              joinIdx b (jF ψ α hψ0 q).1 = b (basinIndex (momentContext N) (Projectivization.mk ψ hψ0, q.1.1.2))

              The selector at a preparation point reads the system fibre alone.

              The sector pulls back to a fibre cylinder #

              theorem CSD.RecordLayer.jF_mem_sector_iff {N K : } [NeZero N] (b : Fin NFin K) (ψ α : EuclideanSpace (Fin N)) (hψ0 : ψ 0) (i : Fin K) {q : ((AddCircle 1 × LF4.KTorus) × LF4.KTorus) × LF4.KTorus} (hr : q.2 readyArc K) :
              jF ψ α hψ0 q (joinProtocol b).outcomeSector i q.1.1.2 goodTheta b ψ hψ0 i
              theorem CSD.RecordLayer.preimage_sector_ae {N K : } [NeZero N] (b : Fin NFin K) (ψ α : EuclideanSpace (Fin N)) (hψ0 : ψ 0) (i : Fin K) :

              The pulled-back sector agrees a.e. with the fibre cylinder.

              Positivity from the block component #

              theorem CSD.RecordLayer.goodTheta_vol_pos {N K : } [NeZero N] (b : Fin NFin K) (ψ : EuclideanSpace (Fin N)) (hψ0 : ψ 0) (i : Fin K) (hPi : (blockProj b i) ψ 0) :

              A nonzero block component gives the good-fibre set positive measure.

              The readout on the sector #

              noncomputable def CSD.RecordLayer.sysRead {N : } [NeZero N] :

              The post-measurement system readout: system ray and system fibre of the join state.

              Equations
              Instances For
                theorem CSD.RecordLayer.sysRead_evolve_on_sector {N K : } [NeZero N] (b : Fin NFin K) (i : Fin K) {x : JoinSel N × LF4.KTorus} (hx : x (joinProtocol b).outcomeSector i) :
                sysRead (joinEvolve b 0 1 x) = (joinFst (joinSwap b i x.1.1.1), x.1.2)

                On the sector, the evolved readout is the collapsed ray with the ancilla's fibre.

                theorem CSD.RecordLayer.joinPoint_collapse {N K : } [NeZero N] (b : Fin NFin K) (ψ α : EuclideanSpace (Fin N)) (hψ0 : ψ 0) (i : Fin K) (hPi : (blockProj b i) ψ 0) ( : (blockProj b i) α = α) (θ : AddCircle 1) :
                joinFst (joinSwap b i (joinPoint ψ α hψ0 θ)) = Projectivization.mk ((blockProj b i) ψ) hPi

                The collapsed ray at every phase.

                ★★ The conditioned marginal #

                theorem CSD.RecordLayer.join_luders_marginal {N K : } [NeZero N] (b : Fin NFin K) (ψ α : EuclideanSpace (Fin N)) (hψ0 : ψ 0) (i : Fin K) (hPi : (blockProj b i) ψ 0) ( : (blockProj b i) α = α) :

                ★★ The degenerate Lüders marginal. For the canonical preparation, conditioned on the coarse outcome i, the post-measurement system readout is exactly the collapsed epistemic state epistemicMeasure [Πᵢψ].

                ★★ The obligation, inhabited #

                noncomputable def CSD.RecordLayer.joinPostMarg {N K : } [NeZero N] (b : Fin NFin K) (α : Fin KEuclideanSpace (Fin N)) (ψ : EuclideanSpace (Fin N)) (hψ0 : ψ 0) (i : Fin K) :

                The join witness's post-measurement system marginal, for calibration family α.

                Equations
                Instances For
                  theorem CSD.RecordLayer.joinWitness_blockLuders {N K : } [NeZero N] (b : Fin NFin K) (α : Fin KEuclideanSpace (Fin N)) ( : ∀ (i : Fin K), (blockProj b i) (α i) = α i) :

                  ★★ BlockLudersObligation, inhabited. With any block-supported calibration family, the join witness satisfies the §8.3 degenerate-Lüders demand — the construction swap_not_blockLuders proved impossible for every fixed ray-level calibration, delivered by the phase-carrying join arena through Liouville-preserving dynamics.