SigmaLayer/LocalLuders: the local-measurement Lüders map and marginal invariance (brick 1) #
Category: dynamical measurement — dynamical no-signalling (A6, dynamical form), brick 1 of the recorded route: a local measurement on a composite is a block-degenerate measurement.
A measurement of the B factor of ℂ^{nA} ⊗ ℂ^{nB} in the computational basis acts by the
local projectors Pⱼ = 1_A ⊗ |fⱼ⟩⟨fⱼ| — here in coordinate form (localProjB), with no
Kronecker plumbing, exactly as OnticMarginals handles local unitaries. The projectors are
idempotent, they resolve the identity (sum_localProjB), and their weights resolve the norm
(sum_normSq_localProjB — the Born weights of the B-outcomes).
★ The marginal-invariance identity (reduceA_localLuders_mixture): for every composite
preparation, the Born-weighted mixture of the post-measurement A-marginals equals the
pre-measurement A-marginal:
∑ⱼ pⱼ · reduceA [Pⱼ v] = reduceA [v], pⱼ = ‖Pⱼv‖²/‖v‖².
This is the statics core of dynamical no-signalling: whatever B's apparatus does — and
the corpus's degenerate-Lüders machinery realises exactly this update dynamically — the A
side's density matrix, hence every A-side measurement statistic, is unchanged unless the
outcome is communicated. The unnormalised form (traceRight_sum_vecOuter_localProjB) is a
two-line entrywise computation: tracing out B collapses the projector sum before it can be
seen.
⚠️ Honest scope. (2026-08-04: the propagator arrived in brick 2 —
reduceA_blockLuders_mixture, SigmaLayer/LocalBlockBridge.lean; the sentence below
scopes THIS module and stays true of it.) This brick is statics: the Lüders mixture is
written down, not yet
produced by a propagator. Brick 2 wires it to the dynamical layer — the local B-block
structure b = snd under the Fin (nA·nB) ≃ Fin nA × Fin nB index bridge feeds
BlockLudersObligation, whose join witness (joinWitness_blockLuders) supplies the
ψ-dependent post-states dynamically; brick 3 is the eraser process (mark, then erase, as two
sequential measurements). Zero-weight outcomes are handled honestly: the dite branch is
multiplied by a vanishing weight, no positivity hypothesis is smuggled in.
References #
specs/BACKLOG.md (the dynamical no-signalling + eraser row); specs/future-work.md;
specs/reconstruction-status.md §2 (A6). Reused corpus API: reduceA/rayDensity
(SigmaLayer/OnticMarginals.lean), traceRight + linearity
(Mathlib/LinearAlgebra/Matrix/PartialTrace.lean staging); the operational-statics
counterparts are csd_no_communication (Empirical/CSD/NoCommunication.lean) and
singlet_hasNoSignalling (SigmaLayer/CompositeAdapters.lean).
The local projectors #
The local B-projector for outcome j: (Pⱼ v)(a, k) = v(a, k) if k = j, else 0 —
the coordinate form of 1_A ⊗ |fⱼ⟩⟨fⱼ|.
Equations
Instances For
The local projectors resolve the identity.
The unnormalised outer product and the invariance identity #
The unnormalised outer product v x · conj(v y) — rayDensity before normalisation.
Equations
Instances For
★ Tracing out B collapses the local Lüders sum:
∑ⱼ tr_B(Pⱼv ⊗ (Pⱼv)*) = tr_B(v ⊗ v*). The entrywise computation at the heart of
dynamical no-signalling.
reduceA at a representative: the normalised partial trace of the outer product.
★★ Dynamical no-signalling, the statics core: the Born-weighted mixture of the
post-measurement A-marginals of a local B-measurement equals the pre-measurement
A-marginal. Zero-weight outcomes carry weight 0 — no positivity hypothesis.