toqito.state_props.learnability =============================== .. py:module:: toqito.state_props.learnability .. autoapi-nested-parse:: Evaluate the quantum learnability semidefinite programs. Module Contents --------------- .. py:function:: learnability(states, k, *, solver = 'SCS', solver_kwargs = None, verify_reduced = True, verify_tolerance = 0.0001, tol = 1e-08) Compute the average error value of the learnability semidefinite program. This routine minimizes \[ \frac{1}{n} \sum_{i = 1}^n \left\langle \rho_i, \sum_{S: i \notin S} M_S \right\rangle. \] over POVM elements \((M_S)\) indexed by ``k``-element subsets, subject to \(\sum_S M_S = \mathbb{I}\) and \(M_S \succeq 0\). When all inputs are pure, the reduced Gram-matrix SDP \[ \sum_{i = 1}^n \bra{i} \sum_{S: i \notin S} W_S \ket{i}. \] with constraint \(\sum_S W_S = G\) (Gram matrix) and \(W_S \succeq 0\) is also solved as a consistency check. .. rubric:: Examples ```python exec="1" source="above" from toqito.state_props import learnability from toqito.states import basis e0, e1 = basis(2, 0), basis(2, 1) print(learnability( [e0, e1], k=1, solver="SCS", solver_kwargs={"eps": 1e-6, "max_iters": 5_000}, )) ``` :param states: Sequence of state vectors or density matrices acting on the same space. :param k: Subset size for the POVM outcomes; must satisfy `1 <= k <= len(states)`. :param solver: Optional CVXPY solver name. Defaults to `"SCS"`. :param solver_kwargs: Extra keyword arguments forwarded to :meth:`cvxpy.Problem.solve`. :param verify_reduced: If `True` and the states are pure, also solve the reduced SDP. :param verify_tolerance: Absolute tolerance used when comparing the two optimal values. :param tol: Numerical tolerance used when validating positivity and rank-one states. :returns: Dictionary with keys `value`, `total_value`, `status`, `measurement_operators`, and optionally `reduced_value`, `reduced_total_value`, `reduced_status`, `reduced_operators`. :raises ValueError: If the data are inconsistent with valid quantum states or if `k` lies outside the permissible range. :raises cvxpy.error.SolverError: If the selected solver reports a failure.