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

An exponential E : A → B that also satisfies the project's morphism vocabulary (IsArrow with matching Domain / Codomain typedefs). #706. More...

Concept definition

template<typename E, typename A, typename B>
std::same_as<Dom<E>, A> && std::same_as<Cod<E>, B>
An exponential E : A → B that also satisfies the project's morphism vocabulary (IsArrow with matching...
Definition cartesian.cppm:178
A type that knows its own Domain (A) and Codomain (B), objects it maps between: called at the domain'...
Definition morphism.cppm:168
Categorical exponential object B^A — generalised structural recogniser of "eval morphism via call exp...
Definition cartesian.cppm:139

Detailed Description

An exponential E : A → B that also satisfies the project's morphism vocabulary (IsArrow with matching Domain / Codomain typedefs). #706.

Refines IsExponential to additionally require IsArrow's structural commitments — E::Domain typedef equal to A, E::Codomain typedef equal to B. Function-space inhabitants (std::function<B(A)>, raw lambdas) satisfy IsExponential but not IsArrowExponential because they don't expose the Domain / Codomain typedefs. Project-shipped arrow-shaped exponentials — outputs of arrow<A, B>(…), HeytingExponential, :morphism::Morphism, etc. — satisfy both.

cartesian__IsArrowExponential_Consumer

Migrated from an ad hoc IsExponential <…> && IsArrow <…> combination at :etcs::HasAxiom6Exponentiation, which named the same content inline. Refactoring that consumer to the named refinement removes a chicken-and-egg seam (the supply for the refinement was inlined at the one demand site) — see #706 for the triage rationale.

Consumers that want the project's morphism discipline gate on IsArrowExponential; consumers that accept any callable (function-spaces, raw lambdas, structural-only) use the bare IsExponential. Split mirrors the :morphism IsArrow vs. generic-callable distinction.

Template Parameters
EThe exponential object (must be IsArrow-shaped).
AThe domain.
BThe codomain.