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

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...

Concept definition

template<typename T>
concept dedekind::category::SupInfOperand = std::totally_ordered<T> && std::copy_constructible<T>
A carrier on which Sup / Inf (and max / min) are a genuine, usable value op: totally ordered (for <) ...
Definition mereology.cppm:424

Detailed Description

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

(Sup / Inf law gate)

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

Either std::less_equal spelling, complete per relation.
Carriers register their order traits under one of two conventions: the typed 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.
A chain, not a poset (#1043).
The certificate is a total order: reflexive, transitive, antisymmetric and connex. 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.
Template Parameters
TThe candidate carrier type.