pygsti.tools.sdptools

Functions for constructing semidefinite programming models

Module Contents

Functions

diamond_norm_model_jamiolkowski(→ tuple[cvxpy.Problem, ...)

diamond_norm_canon(→ Tuple[cvxpy.Expression, ...)

This more or less implements canonicalization of the nonlinear expression

cptp_superop_variable(→ Tuple[cvxpy.Expression, ...)

diamond_distance_projection_model(superop, basis[, ...])

root_fidelity_canon(→ Tuple[cvxpy.Expression, ...)

pyGSTi defines fidelity as

Attributes

ExpressionLike

BasisLike

CVXPY_ENABLED

pygsti.tools.sdptools.ExpressionLike
pygsti.tools.sdptools.BasisLike
pygsti.tools.sdptools.CVXPY_ENABLED = 'True'
pygsti.tools.sdptools.diamond_norm_model_jamiolkowski(J: ExpressionLike) tuple[cvxpy.Problem, List[cvxpy.Variable]]
pygsti.tools.sdptools.diamond_norm_canon(arg: cvxpy.Expression, basis) Tuple[cvxpy.Expression, List[cvxpy.Constraint]]

This more or less implements canonicalization of the nonlinear expression |arg|_{diamond} into CVXPY Constraints and a representation of its epigraph. The canonicalization isn’t quite “complete” in CVXPY’s usual sense, which would require that the epigraph is affine and that no structured variables (like Hermitian matrices) are used.

pygsti.tools.sdptools.cptp_superop_variable(purestate_dim: int, basis: BasisLike) Tuple[cvxpy.Expression, List[cvxpy.Constraint]]
pygsti.tools.sdptools.diamond_distance_projection_model(superop: numpy.ndarray, basis: pygsti.baseobjs.Basis, leakfree: bool = False, seepfree: bool = False, n_leak: int = 0, cptp: bool = True, subspace_diamond: bool = False)
pygsti.tools.sdptools.root_fidelity_canon(sigma: cvxpy.Expression, rho: cvxpy.Expression) Tuple[cvxpy.Expression, List[cvxpy.Constraint]]

pyGSTi defines fidelity as

F(sigma, rho) = tr([sigma^{1/2} rho sigma^{1/2}]^{1/2})^2.

Others (including Neilson and Chuang, Sect. 9.2.2) define it without the square on the trace. We’ll call the unsquared version the root fidelity, and denote it by

sqrt{F}(sigma, rho) = (F(sigma, rho))^{1/2}.

The root fidelity is jointly concave (Neilson and Chuang, Exercise 9.19). In fact, it admits the following semidefinite programming characterization

sqrt{F}(sigma, rho) = Maximize real(tr(X))

s.t. [[sigma, X],[X.T.conj(), rho]] >> 0

– see Section 7.1.3 of Killoran’s PhD thesis, “Entanglement quantification and quantum benchmarking of optical communication devices.”

This function returns a pair (expr, constraints) where expr is the hypograph variable for sqrt{F}(sigma, rho) and constraints is a list of CVXPY Constraint objects used in the semidefinite representation of the hypograph.