|
Dedekind 0.0.0
A structuralist C++23 Module Library
|
A column vector: an IsSemimodule with ColumnOrientation and a finite dimension. "A matrix column is a (semimodule) vector" — every column_type on an IsMatrix carrier models this. Over a ring the carrier further satisfies dedekind::algebra::IsModule; over a dioid (MaxPlus) it does not, and none is asked.
More...
A column vector: an IsSemimodule with ColumnOrientation and a finite dimension. "A matrix column is a (semimodule) vector" — every column_type on an IsMatrix carrier models this. Over a ring the carrier further satisfies dedekind::algebra::IsModule; over a dioid (MaxPlus) it does not, and none is asked.
A column/row vector is not a new operational predicate — it is the canonical dedekind::algebra::IsSemimodule (an additive commutative monoid under a linear scalar action), plus a ColumnOrientation / RowOrientation tag and a finite dimension. The default is the semimodule (over a semiring), because that is the structure a max-plus / tropical vector actually has — a dioid has no additive inverse. The ring/field carriers (Vec2V<Field>) refine it to dedekind::algebra::IsModule / IsVectorSpace, the concepts that add the inverse; there is no bespoke *Like duplicate here (that operational family was retired in algebra:modules).
The scalar's ⊕/⊗ come straight from its semiring structure — if S IsSemiring it has the ops, so we read them off the single defaulted seam dedekind::algebra::semiring_ops (default +/ an ordinary ring, specialized for tropical / bool / · forMat(S)). The old semiring_ops_of fallback resolver is retired now that the seam defaults.