Rel is a stateless relation on a discrete bounded chain T on which a law of Arity variables can be decided: a step (successor, by argument-dependent lookup, as for HasNNOStep), a least and a greatest value (the identities of Sup and Inf), the top reached from the bottom within chain_walk_budget, and nᴬʳⁱᵗʸ within law_evaluation_budget, all as constant expressions (what cannot be evaluated at compile time is simply not decided here, rather than an error).
More...
template<typename T, typename Rel, std::size_t Arity>
std::default_initializable<Rel> && std::is_empty_v<Rel> && requires {
} &&
requires(
const Rel& r,
const T& x) {
{ r(x, x) } -> std::convertible_to<bool>;
{ x == x } -> std::convertible_to<bool>;
} && requires {
typename std::integral_constant<
Rel is a stateless relation on a discrete bounded chain T on which a law of Arity variables can be de...
Definition mereology.cppm:559
constexpr T unit(Op)
The unit of Op at the carrier T, read as unit<T>(Op{}).
Definition species.cppm:287
constexpr Ternary successor(Ternary a) noexcept
K₃'s step: the cover False → Unknown → True, saturating at the top (and its dual at the bottom),...
Definition logic.cppm:462
constexpr std::size_t chain_length(const T &lo, const T &hi)
The number of values from lo to hi by the carrier's successor; 0 when hi is not reached within chain_...
Definition mereology.cppm:527
constexpr bool fits_budget(std::size_t n, std::size_t arity)
Whether a law of arity variables on a chain of n values fits law_evaluation_budget.
Definition mereology.cppm:533
Rel
The comparison an atom makes.
Definition terms.cppm:201
Meet ∧: the greatest lower bound on a chain (min), returned by value. Value-returning sibling of Sup.
Definition mereology.cppm:494
Value-returning chain lattice ops — the honest T × T → T meet / join.
Definition mereology.cppm:484
Rel is a stateless relation on a discrete bounded chain T on which a law of Arity variables can be decided: a step (successor, by argument-dependent lookup, as for HasNNOStep), a least and a greatest value (the identities of Sup and Inf), the top reached from the bottom within chain_walk_budget, and nᴬʳⁱᵗʸ within law_evaluation_budget, all as constant expressions (what cannot be evaluated at compile time is simply not decided here, rather than an error).
- Note
- The step must be the chain's cover, so the walk visits every value: that is what makes the chain discrete, the carrier's obligation, not checked here. Order: a carrier's step and bounds must be declared before anything asks about one of its relations (as for every trait registration: an answer, once instantiated, is fixed).