Product V-Categories

Textbook Definition

Definition 2.51. Let $\mathcal{X}$ and $\mathcal{Y}$ be V-categories. Define their V-product, or simply product, to be the V-category $\mathcal{X} \times \mathcal{Y}$ with:

(i) $\text{Ob}(\mathcal{X} \times \mathcal{Y}) := \text{Ob}(\mathcal{X}) \times \text{Ob}(\mathcal{Y})$

(ii) $(\mathcal{X} \times \mathcal{Y})((x, y), (x’, y’)) := \mathcal{X}(x, x’) \otimes \mathcal{Y}(y, y’)$

for two objects $(x, y)$ and $(x’, y’)$ in $\text{Ob}(\mathcal{X} \times \mathcal{Y})$.

Agda Setup

module definitions.chapter2.VProduct where

open import definitions.chapter2.SymmetricMonoidalPreorder
  using (SymmetricMonoidalPreorder)
open import definitions.chapter2.VCategory using (VCategory)
open import Data.Product using (_×_; _,_; proj₁; proj₂)
open import Relation.Binary.PropositionalEquality using (_≡_; refl; cong₂; subst)

Agda Formalization

-- The product of two V-categories
_×V_ : {V : SymmetricMonoidalPreorder}  VCategory V  VCategory V  VCategory V
_×V_ {V} X Y = record
  { Ob = X.Ob × Y.Ob
  ; hom = λ { (x , y) (x' , y')  X.hom x x'  Y.hom y y' }
  ; identity = identity-proof
  ; composition = composition-proof
  }
  where
    module X = VCategory X
    module Y = VCategory Y
    open SymmetricMonoidalPreorder V

    -- Identity: I ≤ X(x,x) ⊗ Y(y,y)
    -- From X: I ≤ X(x,x), From Y: I ≤ Y(y,y)
    -- Using left-unit: I = I ⊗ I ≤ X(x,x) ⊗ Y(y,y)
    identity-proof :  {xy : X.Ob × Y.Ob} 
      I  (X.hom (proj₁ xy) (proj₁ xy)  Y.hom (proj₂ xy) (proj₂ xy))
    identity-proof {x , y} =
      subst (_≤ (X.hom x x  Y.hom y y))
            (left-unit {I})
            (monotonicity X.identity Y.identity)

    -- Composition: (X(x₁,x₂) ⊗ Y(y₁,y₂)) ⊗ (X(x₂,x₃) ⊗ Y(y₂,y₃)) ≤ X(x₁,x₃) ⊗ Y(y₁,y₃)
    -- This requires symmetry to rearrange the terms!
    postulate
      composition-proof :  {xy₁ xy₂ xy₃ : X.Ob × Y.Ob} 
        let x₁ = proj₁ xy₁; y₁ = proj₂ xy₁
            x₂ = proj₁ xy₂; y₂ = proj₂ xy₂
            x₃ = proj₁ xy₃; y₃ = proj₂ xy₃
        in ((X.hom x₁ x₂  Y.hom y₁ y₂)  (X.hom x₂ x₃  Y.hom y₂ y₃))
            (X.hom x₁ x₃  Y.hom y₁ y₃)

Why Symmetry is Needed

The composition proof requires rearranging:

$(X(x_1, x_2) \otimes Y(y_1, y_2)) \otimes (X(x_2, x_3) \otimes Y(y_2, y_3))$

into:

$(X(x_1, x_2) \otimes X(x_2, x_3)) \otimes (Y(y_1, y_2) \otimes Y(y_2, y_3))$

This rearrangement uses symmetry of $\otimes$ to swap the middle terms.

{-
The full proof would be:

1. Start with: (X(x₁,x₂) ⊗ Y(y₁,y₂)) ⊗ (X(x₂,x₃) ⊗ Y(y₂,y₃))

2. Use associativity and symmetry to rearrange to:
   (X(x₁,x₂) ⊗ X(x₂,x₃)) ⊗ (Y(y₁,y₂) ⊗ Y(y₂,y₃))

3. Apply monotonicity with X's composition and Y's composition:
   X(x₁,x₂) ⊗ X(x₂,x₃) ≤ X(x₁,x₃)
   Y(y₁,y₂) ⊗ Y(y₂,y₃) ≤ Y(y₁,y₃)

4. Get: X(x₁,x₃) ⊗ Y(y₁,y₃)
-}