Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::algebra::AlgebraAsProduct Concept Referenceexport

Set-level sibling of HasCarrier: an algebra is a product of (set object, operations on the underlying type). More...

Concept definition

template<typename A, typename Set, typename... Ops>
HasCarrier<A, typename Set::Domain, Ops...>
Set-level sibling of HasCarrier: an algebra is a product of (set object, operations on the underlying...
Definition universal.cppm:484
The HAS-A posture in code: an Algebra HAS-A Carrier (under operations Ops) iff the carrier closes the...
Definition universal.cppm:328
The categorical witness of a monomorphism ι: S ↣ A — a characteristic morphism χ: A → Ω together with...
Definition topoi.cppm:367
The Category of C++ Types (Set). Formally reified as a Cartesian Closed Category.
Definition cartesian.cppm:838

Detailed Description

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):

AlgebraAsProduct<A, Set, Ops...>
:= IsSubobject<Set, Set::Domain> (Set is a set object)
∧ HasCarrier<A, Set::Domain, Ops...> (A has Set::Domain as
carrier with these Ops)
Sollbruchstelle (#573)
Names the (Set, Operations) product reading of an algebra explicitly, complementing slice 2's 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).
Template Parameters
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).
See also
HasCarrier above (element-level sibling, this partition).
SetAsProduct (set-level sibling, :category:concrete; #644 slice 2).
Burris & Sankappanavar 1981 §I.1 (algebra (A, F) pair).