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

Structural shape: Op{} sends (A, A) → B (binary) or A → B (unary) with A ≠ B. Pure deducible clause of IsClosureForcing. The universal-property side — that B is the smallest carrier closing Op over A — is carried by the is_closure_forcing_v opt-in trait below. More...

Concept definition

template<typename Op, typename A, typename B>
!std::same_as<A, B> &&
(requires(const A& a) {
{ Op{}(a) } -> std::same_as<B>;
} || requires(const A& a1, const A& a2) {
{ Op{}(a1, a2) } -> std::same_as<B>;
})
Structural shape: Op{} sends (A, A) → B (binary) or A → B (unary) with A ≠ B. Pure deducible clause o...
Definition total.cppm:1164

Detailed Description

Structural shape: Op{} sends (A, A) → B (binary) or A → B (unary) with A ≠ B. Pure deducible clause of IsClosureForcing. The universal-property side — that B is the smallest carrier closing Op over A — is carried by the is_closure_forcing_v opt-in trait below.

A ≠ B is the structural witness that something widens; if A = B the operation is closed and IsClosureForcing doesn't apply.