|
Dedekind 0.0.0
A structuralist C++23 Module Library
|
Transpose is its own inverse at the type level: decltype((a.transpose()).transpose()) is M. More...
Transpose is its own inverse at the type level: decltype((a.transpose()).transpose()) is M.
This is the structural half of the involution law (Mᵀ)ᵀ = M. The value-level equality (a.transpose()).transpose() == a is a per-type theorem, witnessed via static_assert on concrete instances; the concept just pins that the types round-trip.
Involutions generate a ℤ/2 action on matrix carriers: the two-element group {identity, transpose} under composition. Matrix2x2V<T> is a degenerate witness (the orbit {M, Mᵀ} lives entirely inside Matrix2x2V<T>); the non-degenerate action is the Vec2V<T> ↔ Covec2V<T> exchange captured by IsTransposeDualPair.