Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::category::Tensor< R, S > Struct Template Referenceexport

The parallel product ⊗ as the arrow-half of the product bifunctor: R⊗S : A×B→C×D is IsProduct acting on the morphism pair (R,S). The object-half is IsProduct itself (the carrier A×B is the product object); the arrow-half is this Tensor. The action is the mediating morphism ⟨R∘π₁, S∘π₂⟩ built from the product's own reified projections Π<1, P> / Π<2, P> (:limit) and its pairing (the std::pair mediator mediate_product wraps as an arrow); nothing here reimplements the universal property. More...

Collaboration diagram for dedekind::category::Tensor< R, S >:

Public Types

using Domain = std::pair<Dom<R>, Dom<S>>
using Codomain = std::pair<Cod<R>, Cod<S>>

Public Member Functions

constexpr Codomain operator() (const Domain &p) const
 Run both legs in parallel (R⊗S)(a,b)=(R(a),S(b)), routed through the product's own projections Π<1, P> / Π<2, P>.

Public Attributes

R r {}
S s {}

Detailed Description

template<IsArrow R, IsArrow S>
requires IsProduct<std::pair<Dom<R>, Dom<S>>, Dom<R>, Dom<S>> && IsProduct<std::pair<Cod<R>, Cod<S>>, Cod<R>, Cod<S>>
struct dedekind::category::Tensor< R, S >

The parallel product ⊗ as the arrow-half of the product bifunctor: R⊗S : A×B→C×D is IsProduct acting on the morphism pair (R,S). The object-half is IsProduct itself (the carrier A×B is the product object); the arrow-half is this Tensor. The action is the mediating morphism ⟨R∘π₁, S∘π₂⟩ built from the product's own reified projections Π<1, P> / Π<2, P> (:limit) and its pairing (the std::pair mediator mediate_product wraps as an arrow); nothing here reimplements the universal property.

Template Parameters
Rthe left leg A→C.
Sthe right leg B→D.
Note
Generalization seam. HERE, in the cartesian setting, ⊗ coincides with the categorical product × — the carrier is the product object and IsProduct expresses it. The name Tensor deliberately anticipates the later NON-cartesian monoidal regime (the LA / bra-ket layer, where ⊗ is the genuine tensor product with no projections and the copy/merge Frobenius algebra becomes an orthonormal basis / ZX spider), which IsProduct cannot express. Tensor-on-IsProduct now, carrier generalized later. FIXME(#946): generalize the carrier past IsProduct at that seam.

Member Function Documentation

◆ operator()()

template<IsArrow R, IsArrow S>
Codomain dedekind::category::Tensor< R, S >::operator() ( const Domain & p) const
inlineconstexpr

Run both legs in parallel (R⊗S)(a,b)=(R(a),S(b)), routed through the product's own projections Π<1, P> / Π<2, P>.

Parameters
pthe input pair (a,b) in A×B.
Returns
the pair (R(a),S(b)) in C×D.

The documentation for this struct was generated from the following file: