|
Dedekind 0.0.0
A structuralist C++23 Module Library
|
A carrier on which Sup / Inf (and max / min) are a genuine, usable value op: totally ordered (for <) and copy-constructible (the winner is returned by value). This is the CALL gate: Sup{}(1.0, 2.0) is a valid call that returns a value, so raw floats are not excluded here; only the lattice laws fail on them (see SupInfLattice).
More...
A carrier on which Sup / Inf (and max / min) are a genuine, usable value op: totally ordered (for <) and copy-constructible (the winner is returned by value). This is the CALL gate: Sup{}(1.0, 2.0) is a valid call that returns a value, so raw floats are not excluded here; only the lattice laws fail on them (see SupInfLattice).
The value-returning Sup / Inf order-lattice law blanket below is gated on SupInfLattice<T> so it never over-certifies a carrier on which the ops are not honest lattice ops. The gate is defined here, upstream of the blanket. (#934 retired the parallel std::ranges::max / std::ranges::min niebloid blanket that this gate used to guard as well.)
std::less_equal spelling, complete per relation.std::less_equal<T> (int / bool via the integral blanket, Ternary) or the transparent std::less_equal<> (safe_float<F>, Rational, Cut<Q>, cardinals). Both are :species traits (no DAG dependency on :order, which is downstream), so the gate accepts a certificate under either spelling. The three laws are grouped per relation and the two complete certificates are OR'd, not OR'd law-by-law: a mixed carrier (antisymmetry certified typed, transitivity only transparent) has all four laws under neither single relation, so it must not pass.Sup / Inf are max / min, honest lattice ops only on a chain: on a poset, Sup of incomparable a, b is order-dependent, so commutative<T>(Sup{}) would be false. Connexity is certified per carrier (is_connex_v), not read off the syntactic std::totally_ordered<T>, which double satisfies.| T | The candidate carrier type. |