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

Value-returning chain lattice ops — the honest T × T → T meet / join. More...

Public Member Functions

template<SupInfOperand T>
constexpr T operator() (const T &a, const T &b) const
 Value-returning join: returns max(a,b) by value (a copy of the winner), never a reference into an argument.

Detailed Description

Value-returning chain lattice ops — the honest T × T → T meet / join.

(Sup / Inf)

The std::ranges::max / std::ranges::min niebloids select and alias an argument: they return const T&, not a fresh T. So IsClosedUnder<T, Op> (which demands { Op{}(a,b) } -> same_as<T>) rejects them, and the strict monoid / bounded-lattice ladder (IsMonoid → IsMagma → IsClosedUnder in :total) is unreachable through the niebloid — only the lenient IsOrderLatticeOperations path (which checks convertible_to<T>) admits it. Sup / Inf return a copy of the winner, so they are honest T × T → T ops that reach the whole ladder and never dangle on temporaries. They compute the ternary directly (no niebloid inside).

Sole lattice ops (#934): Sup / Inf are now the only carriers of the order-lattice laws (idempotence, associativity, commutativity, distributivity, absorption). The ref-returning std::ranges::max / std::ranges::min niebloids no longer carry any lattice-law registration — every carrier lattice-op site (defaults + concept template args across :lattice / :mereology / :posetal / :total / :order) was migrated to Sup / Inf, retiring the pre-existing niebloid blanket. Reaching the strict monoid / bounded-lattice rung (IsClosedUnder needs same_as<T>) may flip a carrier's bounded-lattice status (see #941 for Chain<int>). The law blanket stays gated on the SupInfLattice certificate (see mereology__Lattice_Op_Gate above).

Join ∨: the least upper bound on a chain (max), returned by value as an honest T × T → T.


The documentation for this struct was generated from the following file: