Skip to content

num::operators::restricted_laws

Defined in header <operator/projected.hpp>

template <class Op, class Subspace>
using restricted_laws = std::conditional_t<
    claims<Op, law::spd>, law::list<law::spd_on<Subspace>>,
    std::conditional_t<
        claims<Op, law::psd>, law::list<law::psd_on<Subspace>>,
        std::conditional_t<claims<Op, law::self_adjoint>,
                           law::list<law::self_adjoint_on<Subspace>>, law::list<>>>>;

The law of \(P_S A\) on S for an operator A claiming a self-adjoint law.

\(P_S A\) is not self-adjoint even when A is, but \(P_S A x = P_S A P_S x\) for \(x \in S\), and \(P_S A P_S\) keeps A's law on S. This lets num::pcg solve with a graph Laplacian on the zero-sum subspace without a second assertion.