|
Dedekind 0.0.0
A structuralist C++23 Module Library
|
Structural witness types for the bottom (initial) and top (terminal) of the lattice over (T, Rel), playing the role of initial / terminal objects of the lattice viewed as a thin category.
More...
Structural witness types for the bottom (initial) and top (terminal) of the lattice over (T, Rel), playing the role of initial / terminal objects of the lattice viewed as a thin category.
Each wrapper type:
is_initial_object_tag / is_terminal_object_tag typedef so it satisfies the relaxed :limit::IsInitialObject / IsTerminalObject (tag-discovery branch).constexpr value member (extractable when consumers need the actual lattice element).Specialisations are provided for arithmetic carriers under std::less_equal: std::numeric_limits<T>::min() / max() are the lattice bottom / top. This covers bool (false / true), int (INT_MIN / INT_MAX), unsigned (0 / UINT_MAX), size_t, and the rest of the arithmetic family.
Downstream sub-categories (set algebras, posets with named extremes, …) opt in by specialising the wrappers for their (T, Rel) pair; no change to :species or duplicate concept surface.
The abstract bottom of the lattice over (T, Rel), as a value the complement law can produce. Untagged: a carrier registers its own bottom (with its value and the initial-object tag) by specialising, so the bare placeholder opts nothing into IsInitialObject.