SigmaLayer/JoinArena: the projective join — Liouville-preserving degenerate Lüders #
Category: 7-SigmaLayer (dynamical measurement — the degenerate-Lüders construction, brick 3: the Liouville half).
The identification that makes brick 3 cheap #
PhaseSlot.lean realised the degenerate Lüders update on phase-enriched vector pairs. This
module observes that the phase-enriched pair arena is the projective join: a point of
ℙ(ℂᴺ ⊕ ℂᴺ) = ℙ(ℂ^{N+N}) is a system-and-slot pair quotiented only by the global phase — so
the relative phase, the coordinate the sharpened wall demanded, survives in the point
itself. On this arena:
- the component swap is a coordinate permutation (
joinPerm), hence a permutation unitary (joinMat,joinMat_mem_unitaryGroup), acting on rays through the standard unitary action; - ★★ Liouville preservation is Fubini–Study unitary invariance
(
joinSwap_measurePreserving): the measure-preservation obligation recorded as brick 3's hard half is discharged byfubiniStudyMeasure_smul_invariant, because the dynamics is a unitary; - ★★ the Lüders update is pointwise deterministic (
join_block_luders): for every join microstate[ψ ⊕ α]with nonvanishing block component and block-calibrated slot, the post-swap system readout is exactly[Πᵢψ]. Every microstate updates correctly; thePhaseSlotmeasure form is the orbit-averaged shadow of this.
The three-brick arc, closed at the state level #
BlockCollapse.lean: the target is a relocation; the mechanism exists on vectors; the wall is the relative phase.PhaseSlot.lean: keep the phase → the update works with fixed calibration (measure form).- Here: the phase-kept arena is
ℙ(ℂ^{N+N}), the dynamics is unitary — Liouville-preserving by FS invariance, Lüders pointwise.
⚠️ What remains for full protocol integration (recorded, mechanical) #
The register/sector plumbing: a MeasurementProtocol on ℙ(ℂ^{N+N}) × T²_R whose record
trigger fires joinSwap, mirroring SwapWitness, and the conditioned-marginal bookkeeping
tying join_block_luders to a BlockLudersObligation instance. Both consume only theorems
proved here and machinery that already exists (specs/BACKLOG.md, effort M); neither requires
new mathematics. Until that lands, swap_not_blockLuders remains the recorded boundary for
the ray-pair SwapArena — the join arena is where degenerate measurements live.
References #
SigmaLayer/BlockCollapse.lean (componentSwap, brick 1);
SigmaLayer/PhaseSlot.lean (brick 2 — the measure form);
SigmaLayer/DegenerateLuders.lean (swap_not_blockLuders, blockProj);
Mathlib/LinearAlgebra/Projectivization/FubiniStudy.lean
(fubiniStudyMeasure_smul_invariant — the Liouville driver); specs/BACKLOG.md.
componentSwap, entrywise #
The join permutation and its unitary #
The block-complement swap on the doubled index set: fix the block-i coordinates of both
copies, exchange the complements.
Equations
Instances For
The join permutation on Fin (N + N).
Equations
- CSD.RecordLayer.joinPerm b i j = finSumFinEquiv (CSD.RecordLayer.swpSum b i (finSumFinEquiv.symm j))
Instances For
The join unitary.
Equations
- CSD.RecordLayer.joinU b i = ⟨CSD.RecordLayer.joinMat b i, ⋯⟩
Instances For
The doubled vectors #
The doubled vector: system in the first copy, slot in the second.
Equations
- CSD.RecordLayer.dblVec v α = WithLp.toLp 2 fun (j : Fin (N + N)) => Sum.elim (fun (k : Fin N) => v.ofLp k) (fun (k : Fin N) => α.ofLp k) (finSumFinEquiv.symm j)
Instances For
The action of the join unitary on a doubled vector is exactly the component swap.
The join dynamics #
The join swap on rays: the unitary action of the permutation on ℙ(ℂ^{N+N}).
Equations
- CSD.RecordLayer.joinSwap b i p = CSD.RecordLayer.joinU b i • p
Instances For
★★ Liouville preservation, discharged. The join swap is a unitary, so it preserves the
Fubini–Study measure — the obligation recorded as brick 3's hard half, closed by
fubiniStudyMeasure_smul_invariant.
The system readout #
The first-copy projection, as a linear map.
Equations
- CSD.RecordLayer.fstPart = { toFun := fun (w : EuclideanSpace ℂ (Fin (N + N))) => WithLp.toLp 2 fun (k : Fin N) => w.ofLp (finSumFinEquiv (Sum.inl k)), map_add' := ⋯, map_smul' := ⋯ }
Instances For
On the physical branch (nonzero system component), the readout representative IS the first copy (interface lemma, §9.1 — the case split its unfold sites re-derive).
The system readout from the join: project a join microstate to its system ray (junk vertex where the system component vanishes — documented, off the physical set).
Equations
- CSD.RecordLayer.joinFst = Projectivization.lift (fun (v : { v : EuclideanSpace ℂ (Fin (N + N)) // v ≠ 0 }) => Projectivization.mk' ℂ (CSD.RecordLayer.joinFstAux v)) ⋯
Instances For
The readout is measurable — same coinduced-Borel route as blockCollapse.
The pointwise Lüders update #
★★ Degenerate Lüders on the join arena, pointwise. For every join microstate
[ψ ⊕ α] with nonvanishing block-i component and block-calibrated slot, the post-swap
system readout is exactly the Lüders-collapsed ray [Πᵢψ]. Deterministic at every microstate;
combined with joinSwap_measurePreserving, the update is a Liouville-preserving unitary
dynamics whose readout is the Lüders update — the construction swap_not_blockLuders
proved impossible on the ray-pair arena, delivered on the join.