|
Dedekind 0.0.0
A structuralist C++23 Module Library
|
Set-level sibling of HasCarrier: an algebra is a product of (set object, operations on the underlying type).
More...
Set-level sibling of HasCarrier: an algebra is a product of (set object, operations on the underlying type).
Where element-level HasCarrier<Algebra, Carrier, Ops...> reads the carrier as a TYPE (e.g. int, bool, unsigned), this set-level concept reads the carrier as a SET OBJECT — something with both an underlying species and a characteristic morphism χ. In universal- algebra vocabulary (Burris–Sankappanavar §I.1): every algebra (A, F) is a pair of (carrier set A, operations F); element-level HasCarrier names the (A_type, F) reading, this set-level concept names the full (A_set, F) reading where A_set is the categorical set object carrying both the underlying type and the membership predicate.
The two concepts are siblings, not replacements:
HasCarrier: the C++-idiomatic form ("algebra over @c int")AlgebraAsProduct: the textbook-idiomatic form ("algebra over a set")Composition (read as &&-as-intersection):
SetAsProduct<Set, Underlying, Classifier> in :category:concrete. Together they encode the nested-product structure algebra → set → underlying as typed obligations rather than naming conventions. The pilot witness on a real named carrier (Rational) ships in #573 slice 4 (#646).| A | The algebra (whole). |
| Set | The underlying set object (an IsSubobject; the left part of the (Set, Operations) pair). |
| Ops | The operations on Set::Domain (the right part). |
HasCarrier above (element-level sibling, this partition). SetAsProduct (set-level sibling, :category:concrete; #644 slice 2). (A, F) pair).