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

A small category equipped with a terminal object 1 and binary products × — a "cartesian category" in the textbook sense (Pierce, Basic Category Theory for Computer Scientists §1.4; Awodey). More...

Concept definition

template<typename Cat>
typename Cat::Terminal;
} && requires(typename Cat::Arrow::Domain A, typename Cat::Arrow::Codomain B) {
typename Cat::template Product<decltype(A), decltype(B)>;
requires IsProduct<typename Cat::template Product<decltype(A), decltype(B)>,
decltype(A), decltype(B)>;
}
A small category equipped with a terminal object 1 and binary products × — a "cartesian category" in ...
Definition limit.cppm:763
Categorification of std::pair<A, B> as the categorical product (A × B).
Definition limit.cppm:498
A point-free, morphism-only reification of a Category.
Definition small.cppm:216
A type that plays the role of a terminal object — either the canonical global One (std::monostate,...
Definition limit.cppm:140

Detailed Description

A small category equipped with a terminal object 1 and binary products × — a "cartesian category" in the textbook sense (Pierce, Basic Category Theory for Computer Scientists §1.4; Awodey).

Concept-as-predicate framing: IsCartesian narrows the type-class IsSmallCategory by intersecting with the finite-product structure (terminal + binary products). This is the finite-products subset of finite limits — finitely complete categories also have equalisers and pullbacks, which are not pinned here; IsCartesian deliberately stops at the products-and-terminal layer.

Position in the size-and-structure lattice (read top-down as narrowing intersections; cf. paper §2.3):

∧ has terminal object @c Cat::Terminal
∧ has binary product @c Cat::template Product<A, B>

The CCC-completing exponentials live downstream in :cartesian; IsCartesianClosed = IsCartesian + has-exponentials. Re-using IsCartesian as the prerequisite gates IsCartesianClosed cleanly against the chain IsSmallCategory → IsCartesian → IsCartesianClosed.