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

A Category equipped with Terminal Objects, Products, and Exponentials. More...

Concept definition

template<typename Cat>
requires(typename Cat::Arrow::Domain A, typename Cat::Arrow::Codomain B) {
typename Cat::template Exponential<decltype(A), decltype(B)>;
requires IsExponential<
typename Cat::template Exponential<decltype(A), decltype(B)>,
decltype(A), decltype(B)>;
}
A Category equipped with Terminal Objects, Products, and Exponentials.
Definition cartesian.cppm:798
A small category equipped with a terminal object 1 and binary products × — a "cartesian category" in ...
Definition limit.cppm:763
Categorical exponential object B^A — generalised structural recogniser of "eval morphism via call exp...
Definition cartesian.cppm:139
decltype(exponential< A, B >(std::declval< std::function< B(A)> >())) Exponential
The Exponential Object B^A (Type Alias).
Definition cartesian.cppm:211

Detailed Description

A Category equipped with Terminal Objects, Products, and Exponentials.

This concept extends IsSmallCategory to satisfy the three axioms of a Cartesian Closed Category (CCC):

  1. Terminal Object — a unique sink 1 (represented by One / std::monostate).
  2. Products — for any two objects A, B, a product A × B exists (represented by std::pair<A, B>).
  3. Exponentials — for any two objects A, B, a function space B^A exists: an object whose inhabitants are functions A→B (IsExponential). B^A is an object, not an arrow; arrow-shaped carriers that also carry Domain/Codomain are a representation refinement (IsArrowExponential), used e.g. by Set<T>::Exponential's default — not required here.

This triple of structures provides the categorical foundations required for the Dedekind topos (ETCS).