|
Dedekind 0.0.0
A structuralist C++23 Module Library
|
The standard characterisation (nLab; Freyd and Scedrov, Categories, Allegories; Bird and de Moor, Algebra of Programming): a relation is functional (single-valued / right-unique) and entire (total / left-total), and a function is precisely a relation that is both functional and entire. These property faces are thin aliases over the :cartesian opt-in traits (one source of truth), so IsFunction is definitionally the same claim as category::IsBinaryFunction and cannot drift from it. Because IsFunction refines IsBinaryRelation, the inclusion \(\{\text{functions}\} \subset \{\text{relations}\}\) is genuine C++ concept subsumption: a function type-checks anywhere a relation is required. (IsFunctional / IsEntire / IsFunction are defined above, ahead of the relative product that gates on them; this section is their exposition.)