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...
|
|
using | Domain = std::pair<Dom<R>, Dom<S>> |
|
using | Codomain = std::pair<Cod<R>, Cod<S>> |
|
| 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>.
|
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
-
| R | the left leg A→C. |
| S | the 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.
◆ operator()()
template<IsArrow R, IsArrow S>
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
-
| p | the 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: