Stinespring dilation #
stinespringOp is often written as V.
Equations
- stinespringOp K = fun (x : m × r) (y : m) => (∑ i : r, Matrix.kroneckerMap (fun (x1 x2 : R) => x1 * x2) (K i) (Matrix.single i 0 1)) x (y, 0)
Instances For
Equations
- stinespringDilation K ρ = stinespringOp K * ρ * (stinespringOp K).conjTranspose
Instances For
Equations
- stinespringForm K ρ = tr₂ (stinespringDilation K ρ)
Instances For
Mar 16, 2026
(Mar 27: RCLike version)
Proving the columns of V = stinespringOp K are independent is a step
on the way to constructing the unitary dilation.
m will of course be finite and bounded by n here,
but no need to assume or prove that.
We need the 1 matrix, which we don't seem to have for an arbitrary
[Fintype m].
Since we are comparing Fin r and Fin (r-1) we also cannot too
easily use an arbitrary [Fintype r] [Zero r].
See discussion at https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/succAbove.20and.20predAbove.20lemmas/with/584270574
Instances For
The way this is written, Fin r and Fin (r-1) both occur
so it is tricky to go to a general Fintype.
Equations
Instances For
Also known as unitaryDilation. Respects x,y order.
Equations
- Ud hK z x y = if hy : y.2 = z then stinespringOp K x y.1 else onbPart hK y hy x
Instances For
One version of it.
The best version.
Equations
- stinespringUnitaryForm hK z ρ = tr₂ (Ud hK z * Matrix.kroneckerMap (fun (x1 x2 : R) => x1 * x2) ρ (Matrix.single z z 1) * (Ud hK z).conjTranspose)
Instances For
Equations
- stinespringUnitaryForm_e hK z e ρ = tr₂ (Ud hK z * Matrix.kroneckerMap (fun (x1 x2 : R) => x1 * x2) ρ e * (Ud hK z).conjTranspose)
Instances For
Unitary dilation, processing a whole word
Instances For
Equations
- stinespringGeneralForm K z M = fun (ρ : Matrix m m R) => tr₂ (dilation K z M * Matrix.kroneckerMap (fun (x1 x2 : R) => x1 * x2) ρ (Matrix.single z z 1) * (dilation K z M).conjTranspose)
Instances For
Equations
- stinespringGeneralForm_e K z e M = fun (ρ : Matrix m m R) => tr₂ (dilation K z M * Matrix.kroneckerMap (fun (x1 x2 : R) => x1 * x2) ρ e * (dilation K z M).conjTranspose)
Instances For
When we plug in M = Ud hK
into the general stinespringGeneralForm,
then we do get
stinespringUnitaryForm hK
Mar 26, 2026 Note we don't need any special properties of M, and we don't need K to be CPTP.
Uses Fin types because of the use of
Fin.sum_univ_succAbove in the proof.
Mar 25, 2026 Behold...
Notice that unitarity is a side property, it is not why the Stinespring form works.
Here z is the coordinate used for the ancilla.
The "orthogonal" CPTP completion of a CPTNI map.
Vtilde is an alternative name for krausCompletion.
Equations
- krausCompletion K x = if H : ↑x.2 < r then stinespringOp K (x.1, ⟨↑x.2, H⟩) else CFC.sqrt (1 - (stinespringOp K).conjTranspose * stinespringOp K) x.1
Instances For
Feb 2, 2026 The "not orthogonal" CPTP completion of a CPTNI map.