def make_LI_krotov_chi_constructor(gate, canonical_basis, unitarity_weight=0):
    """Return a constructor for the χ's in an LI optimization.

    Return a `chi_constructor` that determines the boundary condition of the
    backwards propagation in an optimization towards the local equivalence
    class of `gate` in Krotov's method, based on the foward-propagtion of the
    Bell states.

    Args:
        gate (qutip.Qobj): A 4×4 quantum gate, in the `canonical_basis`.
        canonical_basis (list[qutip.Qobj]): A list of four basis states that
            define the canonical basis $\\ket{00}$, $\\ket{01}$, $\\ket{10}$, and
            $\\ket{11}$ of the logical subspace.
        unitarity_weight (float): A weight in [0, 1] that determines how much
            emphasis is placed on  maintaining population in the logical
            subspace.

    Returns:
        callable: a function ``chi_constructor(fw_states_T, *args)`` that
        receive the result of a foward propagation of the Bell states (obtained
        from `canonical_basis` via :func:`weylchamber.gates.bell_basis`), and
        returns a list of statex $\\ket{\\chi}$ that are the boundary condition
        for the backward propagation in Krotov's method. Positional arguments
        beyond `fw_states_T` are ignored.
    """
    raise NotImplementedError()
