This is a C++ attempt at forming symmetric bloc matrices and condensing them at compile time using Schur complements. By condensation, we mean eliminating certain row blocks and substituting in the other block equations.
The goal is to manipulate KKT/augmented/saddle-point systems symbolically to obtain equivalent systems (typically: unsymmetric, symmetrized, and normal equations) that can be tackled by various numerical solvers.
An
A_{11} A_{12} ... A_{1n}
A_{22} ... A_{2n}
...
A_{nn}
Contributions are welcome!