module Cat.Diagram.Biproduct where

BiproductsπŸ”—

Recall that, in an -enriched category, products and coproducts automatically coincide: these are called biproducts and are written

Following (Karvonen 2020), we can define what it means to be a biproduct in a general category: we say that a diagram like the one above is a biproduct diagram if is a product diagram, is a coproduct diagram, and the following equations relating the product projections and coproduct injections hold:

  record is-biproduct {A B P}
    (π₁ : Hom P A) (Ο€β‚‚ : Hom P B)
    (ι₁ : Hom A P) (ΞΉβ‚‚ : Hom B P)
    : Type (o βŠ” β„“) where
    field
      has-is-product   : is-product C π₁ Ο€β‚‚
      has-is-coproduct : is-coproduct C ι₁ ΞΉβ‚‚
      πι₁ : π₁ ∘ ι₁ ≑ id
      πι₂ : Ο€β‚‚ ∘ ΞΉβ‚‚ ≑ id
      ΞΉΟ€-comm : ι₁ ∘ π₁ ∘ ΞΉβ‚‚ ∘ Ο€β‚‚ ≑ ΞΉβ‚‚ ∘ Ο€β‚‚ ∘ ι₁ ∘ π₁

  record Biproduct (A B : Ob) : Type (o βŠ” β„“) where
    field
      biapex : Ob
      π₁ : Hom biapex A
      Ο€β‚‚ : Hom biapex B
      ι₁ : Hom A biapex
      ΞΉβ‚‚ : Hom B biapex
      has-is-biproduct : is-biproduct π₁ Ο€β‚‚ ι₁ ΞΉβ‚‚

Semiadditive categoriesπŸ”—

Just like terminal objects (resp. initial objects) are 0-ary products (resp. coproducts), zero objects are 0-ary biproducts. A category with a zero object and binary biproducts (hence all finite biproducts) is called semiadditive.

  record is-semiadditive : Type (o βŠ” β„“) where
    field
      has-zero : Zero C
      has-biproducts : βˆ€ {A B} β†’ Biproduct A B

As the name hints, every additive category is semiadditive. However, quite surprisingly, it turns out that the structure1 of a semiadditive category is already enough to define an enrichment of in commutative monoids!

We define the addition of morphisms by the following diagram, where (resp. is the diagonal map (resp. codiagonal map).

    _+β†’_ : βˆ€ {x y} β†’ Hom x y β†’ Hom x y β†’ Hom x y
    f +β†’ g = βˆ‡ ∘ (f βŠ—β‚ g) ∘ Ξ΄

We start by noticing a few properties of finite biproducts. First, while we are of course justified in writing without ambiguity for objects, we must prove that so that we can write without ambiguity for morphisms.

To that end, we start by showing that and are zero morphisms.

    π₁-ΞΉβ‚‚ : βˆ€ {a b} β†’ π₁ {a} {b} ∘ ΞΉβ‚‚ ≑ zeroβ†’
    Ο€β‚‚-ι₁ : βˆ€ {a b} β†’ Ο€β‚‚ {a} {b} ∘ ι₁ ≑ zeroβ†’
The proofs follow (Karvonen 2020) and are unenlightening.
    π₁-ΞΉβ‚‚ = zero-unique Ξ» f g β†’
      let h = ⟨ π₁ ∘ ΞΉβ‚‚ ∘ g , f ⟩ in
      (π₁ ∘ ΞΉβ‚‚) ∘ f                   β‰‘βŸ¨ insertl πι₁ βŸ©β‰‘
      π₁ ∘ ι₁ ∘ (π₁ ∘ ΞΉβ‚‚) ∘ f         β‰‘Λ˜βŸ¨ refl⟩∘⟨ refl⟩∘⟨ assoc _ _ _ βˆ™ (refl⟩∘⟨ Ο€β‚‚βˆ˜βŸ¨βŸ©) βŸ©β‰‘Λ˜
      π₁ ∘ ι₁ ∘ π₁ ∘ ΞΉβ‚‚ ∘ Ο€β‚‚ ∘ h      β‰‘βŸ¨ refl⟩∘⟨ pulll4 ΞΉΟ€-comm βŸ©β‰‘
      π₁ ∘ (ΞΉβ‚‚ ∘ Ο€β‚‚ ∘ ι₁ ∘ π₁) ∘ h    β‰‘βŸ¨ refl⟩∘⟨ pullr (pullr (pullr Ο€β‚βˆ˜βŸ¨βŸ©)) βŸ©β‰‘
      π₁ ∘ ΞΉβ‚‚ ∘ Ο€β‚‚ ∘ ι₁ ∘ π₁ ∘ ΞΉβ‚‚ ∘ g β‰‘Λ˜βŸ¨ refl⟩∘⟨ extendl4 ΞΉΟ€-comm βŸ©β‰‘Λ˜
      π₁ ∘ ι₁ ∘ π₁ ∘ ΞΉβ‚‚ ∘ Ο€β‚‚ ∘ ΞΉβ‚‚ ∘ g β‰‘βŸ¨ cancell πι₁ βŸ©β‰‘
      π₁ ∘ ΞΉβ‚‚ ∘ Ο€β‚‚ ∘ ΞΉβ‚‚ ∘ g           β‰‘βŸ¨ pushr (refl⟩∘⟨ cancell πι₂) βŸ©β‰‘
      (π₁ ∘ ΞΉβ‚‚) ∘ g                   ∎

    Ο€β‚‚-ι₁ = zero-unique Ξ» f g β†’
      let h = ⟨ f , Ο€β‚‚ ∘ ι₁ ∘ g ⟩ in
      (Ο€β‚‚ ∘ ι₁) ∘ f                   β‰‘βŸ¨ insertl πι₂ βŸ©β‰‘
      Ο€β‚‚ ∘ ΞΉβ‚‚ ∘ (Ο€β‚‚ ∘ ι₁) ∘ f         β‰‘Λ˜βŸ¨ refl⟩∘⟨ refl⟩∘⟨ assoc _ _ _ βˆ™ (refl⟩∘⟨ Ο€β‚βˆ˜βŸ¨βŸ©) βŸ©β‰‘Λ˜
      Ο€β‚‚ ∘ ΞΉβ‚‚ ∘ Ο€β‚‚ ∘ ι₁ ∘ π₁ ∘ h      β‰‘Λ˜βŸ¨ refl⟩∘⟨ pushl4 ΞΉΟ€-comm βŸ©β‰‘Λ˜
      Ο€β‚‚ ∘ (ι₁ ∘ π₁ ∘ ΞΉβ‚‚ ∘ Ο€β‚‚) ∘ h    β‰‘βŸ¨ refl⟩∘⟨ pullr (pullr (pullr Ο€β‚‚βˆ˜βŸ¨βŸ©)) βŸ©β‰‘
      Ο€β‚‚ ∘ ι₁ ∘ π₁ ∘ ΞΉβ‚‚ ∘ Ο€β‚‚ ∘ ι₁ ∘ g β‰‘βŸ¨ refl⟩∘⟨ extendl4 ΞΉΟ€-comm βŸ©β‰‘
      Ο€β‚‚ ∘ ΞΉβ‚‚ ∘ Ο€β‚‚ ∘ ι₁ ∘ π₁ ∘ ι₁ ∘ g β‰‘βŸ¨ cancell πι₂ βŸ©β‰‘
      Ο€β‚‚ ∘ ι₁ ∘ π₁ ∘ ι₁ ∘ g           β‰‘βŸ¨ pushr (refl⟩∘⟨ cancell πι₁) βŸ©β‰‘
      (Ο€β‚‚ ∘ ι₁) ∘ g                   ∎

Next, we note that maps are uniquely determined, thanks to the universal properties of the product and coproduct, by the four components for In other words, admits a unique matrix representation

    unique-matrix
      : βˆ€ {a b c d} {f g : Hom (a βŠ•β‚€ b) (c βŠ•β‚€ d)}
      β†’ (π₁ ∘ f ∘ ι₁ ≑ π₁ ∘ g ∘ ι₁)
      β†’ (Ο€β‚‚ ∘ f ∘ ι₁ ≑ Ο€β‚‚ ∘ g ∘ ι₁)
      β†’ (π₁ ∘ f ∘ ΞΉβ‚‚ ≑ π₁ ∘ g ∘ ΞΉβ‚‚)
      β†’ (Ο€β‚‚ ∘ f ∘ ΞΉβ‚‚ ≑ Ο€β‚‚ ∘ g ∘ ΞΉβ‚‚)
      β†’ f ≑ g
    unique-matrix p₁₁ p₁₂ p₂₁ pβ‚‚β‚‚ = Biprod.[]-uniqueβ‚‚
      (Biprod.⟨⟩-uniqueβ‚‚ p₁₁ p₁₂ refl refl)
      (Biprod.⟨⟩-uniqueβ‚‚ p₂₁ pβ‚‚β‚‚ refl refl)
      refl refl

This implies that and are equal, as they both have the same matrix representation:

    βŠ•β‚β‰‘βŠ—β‚ : βˆ€ {a b c d} {f : Hom a b} {g : Hom c d} β†’ f βŠ•β‚ g ≑ f βŠ—β‚ g
    βŠ•β‚β‰‘βŠ—β‚ = unique-matrix
      ((refl⟩∘⟨ []βˆ˜ΞΉβ‚) βˆ™ cancell πι₁ βˆ™ sym (pulll Ο€β‚βˆ˜βŸ¨βŸ© βˆ™ cancelr πι₁))
      ((refl⟩∘⟨ []βˆ˜ΞΉβ‚) βˆ™ pulll Ο€β‚‚-ι₁ βˆ™ zero-∘r _ βˆ™ sym (pulll Ο€β‚‚βˆ˜βŸ¨βŸ© βˆ™ pullr Ο€β‚‚-ι₁ βˆ™ zero-∘l _))
      ((refl⟩∘⟨ []βˆ˜ΞΉβ‚‚) βˆ™ pulll π₁-ΞΉβ‚‚ βˆ™ zero-∘r _ βˆ™ sym (pulll Ο€β‚βˆ˜βŸ¨βŸ© βˆ™ pullr π₁-ΞΉβ‚‚ βˆ™ zero-∘l _))
      ((refl⟩∘⟨ []βˆ˜ΞΉβ‚‚) βˆ™ cancell πι₂ βˆ™ sym (pulll Ο€β‚‚βˆ˜βŸ¨βŸ© βˆ™ cancelr πι₂))

Similarly, we show that the associators and braidings for products and coproducts coincide.

    coassoc≑assoc : βˆ€ {a b c} β†’ βŠ•-assoc {a} {b} {c} ≑ Γ—-assoc
    coswap≑swap : βˆ€ {a b} β†’ coswap {a} {b} ≑ swap
    coassoc≑assoc = unique-matrix
      ((refl⟩∘⟨ []βˆ˜ΞΉβ‚) βˆ™ cancell πι₁ βˆ™ sym (pulll Ο€β‚βˆ˜βŸ¨βŸ© βˆ™ Biprod.⟨⟩-uniqueβ‚‚
        (pulll Ο€β‚βˆ˜βŸ¨βŸ© βˆ™ πι₁)
        (pulll Ο€β‚‚βˆ˜βŸ¨βŸ© βˆ™ pullr Ο€β‚‚-ι₁ βˆ™ zero-∘l _)
        πι₁ Ο€β‚‚-ι₁))
      ((refl⟩∘⟨ []βˆ˜ΞΉβ‚) βˆ™ pulll Ο€β‚‚-ι₁ βˆ™ zero-∘r _ βˆ™ sym (pulll Ο€β‚‚βˆ˜βŸ¨βŸ© βˆ™ pullr Ο€β‚‚-ι₁ βˆ™ zero-∘l _))
      ((refl⟩∘⟨ []βˆ˜ΞΉβ‚‚) βˆ™ unique-matrix
        ((refl⟩∘⟨ pullr []βˆ˜ΞΉβ‚ βˆ™ cancell πι₁) βˆ™ π₁-ΞΉβ‚‚ βˆ™ sym (pulll (pulll Ο€β‚βˆ˜βŸ¨βŸ©) βˆ™ (π₁-ΞΉβ‚‚ ⟩∘⟨refl) βˆ™ zero-∘r _))
        ((refl⟩∘⟨ pullr []βˆ˜ΞΉβ‚ βˆ™ cancell πι₁) βˆ™ πι₂ βˆ™ sym (pulll (pulll Ο€β‚‚βˆ˜βŸ¨βŸ©) βˆ™ (cancelr πι₂ ⟩∘⟨refl) βˆ™ πι₁))
        ((refl⟩∘⟨ pullr []βˆ˜ΞΉβ‚‚ βˆ™ π₁-ΞΉβ‚‚) βˆ™ zero-∘l _ βˆ™ sym (pulll (pulll Ο€β‚βˆ˜βŸ¨βŸ©) βˆ™ (π₁-ΞΉβ‚‚ ⟩∘⟨refl) βˆ™ zero-∘r _))
        ((refl⟩∘⟨ pullr []βˆ˜ΞΉβ‚‚ βˆ™ π₁-ΞΉβ‚‚) βˆ™ zero-∘l _ βˆ™ sym (pulll (pulll Ο€β‚‚βˆ˜βŸ¨βŸ©) βˆ™ (cancelr πι₂ ⟩∘⟨refl) βˆ™ π₁-ΞΉβ‚‚))
      βˆ™ sym (pulll Ο€β‚βˆ˜βŸ¨βŸ©))
      ((refl⟩∘⟨ []βˆ˜ΞΉβ‚‚) βˆ™ Biprod.[]-uniqueβ‚‚
        (pullr []βˆ˜ΞΉβ‚ βˆ™ pulll Ο€β‚‚-ι₁ βˆ™ zero-∘r _)
        (pullr []βˆ˜ΞΉβ‚‚ βˆ™ πι₂)
        ((cancelr πι₂ ⟩∘⟨refl) βˆ™ Ο€β‚‚-ι₁)
        ((cancelr πι₂ ⟩∘⟨refl) βˆ™ πι₂)
      βˆ™ sym (pulll Ο€β‚‚βˆ˜βŸ¨βŸ©))

    coswap≑swap = ⟨⟩-unique
      (Biprod.[]-uniqueβ‚‚
        (pullr []βˆ˜ΞΉβ‚ βˆ™ π₁-ΞΉβ‚‚) (pullr []βˆ˜ΞΉβ‚‚ βˆ™ πι₁)
        Ο€β‚‚-ι₁ πι₂)
      (Biprod.[]-uniqueβ‚‚
        (pullr []βˆ˜ΞΉβ‚ βˆ™ πι₂) (pullr []βˆ˜ΞΉβ‚‚ βˆ™ Ο€β‚‚-ι₁)
        πι₁ π₁-ΞΉβ‚‚)

We are finally ready to show that addition of morphisms is associative, commutative and unital. These properties essentially follow from the corresponding properties of biproducts. For associativity, we use the following diagram:

    +-assoc : βˆ€ {x y} {f g h : Hom x y} β†’ f +β†’ (g +β†’ h) ≑ (f +β†’ g) +β†’ h
    +-assoc {f = f} {g} {h} =
      βˆ‡ ∘ (f βŠ—β‚ (βˆ‡ ∘ (g βŠ—β‚ h) ∘ Ξ΄)) ∘ Ξ΄                           β‰‘Λ˜βŸ¨ refl⟩∘⟨ βŠ—.pulll3 (idl _ βˆ™ idr _ ,β‚š refl) ⟩
      βˆ‡ ∘ (id βŠ—β‚ βˆ‡) ∘ (f βŠ—β‚ (g βŠ—β‚ h)) ∘ (id βŠ—β‚ Ξ΄) ∘ Ξ΄             β‰‘Λ˜βŸ¨ refl⟩∘⟨ βŠ•β‚β‰‘βŠ—β‚ ⟩∘⟨refl ⟩
      βˆ‡ ∘ (id βŠ•β‚ βˆ‡) ∘ (f βŠ—β‚ (g βŠ—β‚ h)) ∘ (id βŠ—β‚ Ξ΄) ∘ Ξ΄             β‰‘Λ˜βŸ¨ pushl βˆ‡-assoc ⟩
      (βˆ‡ ∘ (βˆ‡ βŠ•β‚ id) ∘ βŠ•-assoc) ∘ (f βŠ—β‚ (g βŠ—β‚ h)) ∘ (id βŠ—β‚ Ξ΄) ∘ Ξ΄ β‰‘βŸ¨ (refl⟩∘⟨ βŠ•β‚β‰‘βŠ—β‚ ⟩∘⟨refl) ⟩∘⟨refl ⟩
      (βˆ‡ ∘ (βˆ‡ βŠ—β‚ id) ∘ βŠ•-assoc) ∘ (f βŠ—β‚ (g βŠ—β‚ h)) ∘ (id βŠ—β‚ Ξ΄) ∘ Ξ΄ β‰‘βŸ¨ pullr (pullr (coassoc≑assoc ⟩∘⟨refl)) ⟩
      βˆ‡ ∘ (βˆ‡ βŠ—β‚ id) ∘ Γ—-assoc ∘ (f βŠ—β‚ (g βŠ—β‚ h)) ∘ (id βŠ—β‚ Ξ΄) ∘ Ξ΄   β‰‘βŸ¨ refl⟩∘⟨ refl⟩∘⟨ extendl (associator .Isoⁿ.from .is-natural _ _ _) ⟩
      βˆ‡ ∘ (βˆ‡ βŠ—β‚ id) ∘ ((f βŠ—β‚ g) βŠ—β‚ h) ∘ Γ—-assoc ∘ (id βŠ—β‚ Ξ΄) ∘ Ξ΄   β‰‘βŸ¨ refl⟩∘⟨ refl⟩∘⟨ refl⟩∘⟨ assoc-Ξ΄ ⟩
      βˆ‡ ∘ (βˆ‡ βŠ—β‚ id) ∘ ((f βŠ—β‚ g) βŠ—β‚ h) ∘ (Ξ΄ βŠ—β‚ id) ∘ Ξ΄             β‰‘βŸ¨ refl⟩∘⟨ βŠ—.pulll3 (refl ,β‚š idl _ βˆ™ idr _) ⟩
      βˆ‡ ∘ ((βˆ‡ ∘ (f βŠ—β‚ g) ∘ Ξ΄) βŠ—β‚ h) ∘ Ξ΄                           ∎

Commutativity follows from the following diagram, where is the braiding:

    +-comm : βˆ€ {x y} {f g : Hom x y} β†’ f +β†’ g ≑ g +β†’ f
    +-comm {f = f} {g} =
      βˆ‡ ∘ (f βŠ—β‚ g) ∘ Ξ΄          β‰‘Λ˜βŸ¨ pulll βˆ‡-coswap ⟩
      βˆ‡ ∘ coswap ∘ (f βŠ—β‚ g) ∘ Ξ΄ β‰‘βŸ¨ refl⟩∘⟨ coswap≑swap ⟩∘⟨refl ⟩
      βˆ‡ ∘ swap ∘ (f βŠ—β‚ g) ∘ Ξ΄   β‰‘Λ˜βŸ¨ refl⟩∘⟨ extendl (swap-natural _) ⟩
      βˆ‡ ∘ (g βŠ—β‚ f) ∘ swap ∘ Ξ΄   β‰‘βŸ¨ refl⟩∘⟨ refl⟩∘⟨ swap-Ξ΄ ⟩
      βˆ‡ ∘ (g βŠ—β‚ f) ∘ Ξ΄          ∎

Since addition is commutative, it suffices to show that the zero morphism is a left unit. We again use the analogous property of biproducts, which is that the zero object is a left unit for

    βˆ‡-Β‘l : βˆ€ {a} β†’ βˆ‡ {a} ∘ (Β‘ βŠ•β‚ id) ≑ Ο€β‚‚
    βˆ‡-Β‘l = Biprod.[]-uniqueβ‚‚
      (Β‘-uniqueβ‚‚ _ _) (pullr []βˆ˜ΞΉβ‚‚ βˆ™ cancell []βˆ˜ΞΉβ‚‚)
      refl πι₂

    +-idl : βˆ€ {x y} {f : Hom x y} β†’ zeroβ†’ +β†’ f ≑ f
    +-idl {f = f} =
      βˆ‡ ∘ (zeroβ†’ βŠ—β‚ f) ∘ Ξ΄         β‰‘βŸ¨ refl⟩∘⟨ βŠ—.pushl (refl ,β‚š sym (idl _)) ⟩
      βˆ‡ ∘ (Β‘ βŠ—β‚ id) ∘ (! βŠ—β‚ f) ∘ Ξ΄ β‰‘Λ˜βŸ¨ refl⟩∘⟨ βŠ•β‚β‰‘βŠ—β‚ ⟩∘⟨refl ⟩
      βˆ‡ ∘ (Β‘ βŠ•β‚ id) ∘ (! βŠ—β‚ f) ∘ Ξ΄ β‰‘βŸ¨ pulll βˆ‡-Β‘l ⟩
      Ο€β‚‚ ∘ (! βŠ—β‚ f) ∘ Ξ΄            β‰‘βŸ¨ pulll Ο€β‚‚βˆ˜βŸ¨βŸ© ⟩
      (f ∘ Ο€β‚‚) ∘ Ξ΄                 β‰‘βŸ¨ cancelr Ο€β‚‚βˆ˜βŸ¨βŸ© ⟩
      f                            ∎

    +-idr : βˆ€ {x y} {f : Hom x y} β†’ f +β†’ zeroβ†’ ≑ f
    +-idr = +-comm βˆ™ +-idl

Naturality of the (co)diagonals implies that composition is bilinear with respect to our defined addition.

    ∘-linear-l
      : βˆ€ {a b c} {f g : Hom b c} {h : Hom a b}
      β†’ f ∘ h +β†’ g ∘ h ≑ (f +β†’ g) ∘ h
    ∘-linear-l {f = f} {g} {h} =
      βˆ‡ ∘ ((f ∘ h) βŠ—β‚ (g ∘ h)) ∘ Ξ΄ β‰‘βŸ¨ refl⟩∘⟨ βŠ—.pushl refl ⟩
      βˆ‡ ∘ (f βŠ—β‚ g) ∘ (h βŠ—β‚ h) ∘ Ξ΄  β‰‘Λ˜βŸ¨ pullr (pullr (Ξ΄-natural _ _ _)) ⟩
      (βˆ‡ ∘ (f βŠ—β‚ g) ∘ Ξ΄) ∘ h       ∎

    ∘-linear-r
      : βˆ€ {a b c} {f g : Hom a b} {h : Hom b c}
      β†’ h ∘ f +β†’ h ∘ g ≑ h ∘ (f +β†’ g)
    ∘-linear-r {f = f} {g} {h} =
      βˆ‡ ∘ ((h ∘ f) βŠ—β‚ (h ∘ g)) ∘ Ξ΄ β‰‘βŸ¨ refl⟩∘⟨ βŠ—.pushl refl ⟩
      βˆ‡ ∘ (h βŠ—β‚ h) ∘ (f βŠ—β‚ g) ∘ Ξ΄  β‰‘Λ˜βŸ¨ refl⟩∘⟨ βŠ•β‚β‰‘βŠ—β‚ ⟩∘⟨refl ⟩
      βˆ‡ ∘ (h βŠ•β‚ h) ∘ (f βŠ—β‚ g) ∘ Ξ΄  β‰‘βŸ¨ extendl (βˆ‡-natural _ _ _) ⟩
      h ∘ βˆ‡ ∘ (f βŠ—β‚ g) ∘ Ξ΄         ∎

This provides an alternative route to defining additive categories: instead of starting with an -enriched category and requiring finite (co)products, we can start with a semiadditive category and require that every be a group.

In order to construct a semiadditive category from a category with a zero object, binary products and coproducts, it suffices to require that the map defined by the matrix representation

is invertible.

  record make-semiadditive : Type (o βŠ” β„“) where
    field
      has-zero : Zero C
      has-coprods : βˆ€ a b β†’ Coproduct C a b
      has-prods : βˆ€ a b β†’ Product C a b

    open Zero has-zero
    open Binary-products C has-prods
    open Binary-coproducts C has-coprods

    coproductβ†’product : βˆ€ {a b} β†’ Hom (a βŠ•β‚€ b) (a βŠ—β‚€ b)
    coproductβ†’product = ⟨ [ id , zeroβ†’ ]
                        , [ zeroβ†’ , id ] ⟩

    field
      coproductβ‰…product : βˆ€ {a b} β†’ is-invertible (coproductβ†’product {a} {b})

If that is the case, then the coproduct is a biproduct when equipped with the projections and

    has-biproducts : βˆ€ {a b} β†’ Biproduct a b
    has-biproducts {a} {b} .Biproduct.biapex = a βŠ•β‚€ b
    has-biproducts .Biproduct.π₁ = [ id , zeroβ†’ ]
    has-biproducts .Biproduct.π₂ = [ zero→ , id ]
    has-biproducts .Biproduct.ι₁ = ι₁
    has-biproducts .Biproduct.ΞΉβ‚‚ = ΞΉβ‚‚
    has-biproducts .Biproduct.has-is-biproduct .is-biproduct.has-is-product =
        is-product-iso-apex coproductβ‰…product Ο€β‚βˆ˜βŸ¨βŸ© Ο€β‚‚βˆ˜βŸ¨βŸ© has-is-product
    has-biproducts .Biproduct.has-is-biproduct .is-biproduct.has-is-coproduct = has-is-coproduct
    has-biproducts .Biproduct.has-is-biproduct .is-biproduct.πι₁ = []βˆ˜ΞΉβ‚
    has-biproducts .Biproduct.has-is-biproduct .is-biproduct.πι₂ = []βˆ˜ΞΉβ‚‚
    has-biproducts .Biproduct.has-is-biproduct .is-biproduct.ΞΉΟ€-comm =
      ι₁ ∘ [ id , zeroβ†’ ] ∘ ΞΉβ‚‚ ∘ [ zeroβ†’ , id ] β‰‘βŸ¨ refl⟩∘⟨ pulll []βˆ˜ΞΉβ‚‚ ⟩
      ι₁ ∘ zeroβ†’ ∘ [ zeroβ†’ , id ]               β‰‘βŸ¨ pulll (zero-∘l _) βˆ™ zero-∘r _ ⟩
      zeroβ†’                                     β‰‘Λ˜βŸ¨ pulll (zero-∘l _) βˆ™ zero-∘r _ ⟩
      ΞΉβ‚‚ ∘ zeroβ†’ ∘ [ id , zeroβ†’ ]               β‰‘Λ˜βŸ¨ refl⟩∘⟨ pulll []βˆ˜ΞΉβ‚ ⟩
      ΞΉβ‚‚ ∘ [ zeroβ†’ , id ] ∘ ι₁ ∘ [ id , zeroβ†’ ] ∎

  open make-semiadditive

  to-semiadditive : make-semiadditive β†’ is-semiadditive
  to-semiadditive mk .is-semiadditive.has-zero = has-zero mk
  to-semiadditive mk .is-semiadditive.has-biproducts = has-biproducts mk

  1. Really property, in a univalent category.β†©οΈŽ


References