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.