{-# OPTIONS --safe #-} module Cubical.Categories.Additive.Instances.Terminal where open import Cubical.Foundations.Prelude open import Cubical.Foundations.HLevels open import Cubical.Categories.Category open import Cubical.Categories.Additive.Base open import Cubical.Categories.Instances.Terminal open import Cubical.Algebra.AbGroup open import Cubical.Algebra.AbGroup.Instances.Unit open import Cubical.Data.Unit private variable ℓ ℓ' : Level open PreaddCategory open PreaddCategoryStr open AdditiveCategory open AdditiveCategoryStr private terminalAbGroupStr : AbGroupStr {ℓ = ℓ} Unit* terminalAbGroupStr = snd UnitAbGroup homProp : (x y : Category.ob {ℓ = ℓ} TerminalCategory) → isProp (TerminalCategory [ x , y ]) homProp x y = isOfHLevelUnit* 2 x y homContr : (x y : Category.ob {ℓ = ℓ} TerminalCategory) → isContr (TerminalCategory [ x , y ]) homContr x y = isProp→isContrPath (isOfHLevelUnit* 1) x y terminalPreAdd : PreaddCategory ℓ ℓ cat terminalPreAdd = TerminalCategory homAbStr (preadd terminalPreAdd) = λ x y → subst AbGroupStr (sym (isContr→≡Unit* (homContr x y))) terminalAbGroupStr ⋆distl+ (preadd terminalPreAdd) = λ _ _ _ _ → refl ⋆distr+ (preadd terminalPreAdd) = λ _ _ _ → refl terminalAdditiveCategory : AdditiveCategory ℓ ℓ preaddcat terminalAdditiveCategory = terminalPreAdd ZeroObject.z (zero (addit terminalAdditiveCategory)) = tt* ZeroObject.zInit (zero (addit terminalAdditiveCategory)) y = homContr _ _ ZeroObject.zTerm (zero (addit terminalAdditiveCategory)) y = homContr _ _ biprod (addit terminalAdditiveCategory) x y = trivProd where trivProd : Biproduct terminalPreAdd x y Biproduct.x⊕y trivProd = tt* Biproduct.i₁ trivProd = refl Biproduct.i₂ trivProd = refl Biproduct.π₁ trivProd = refl Biproduct.π₂ trivProd = refl IsBiproduct.i₁⋆π₁ (Biproduct.isBipr trivProd) = homProp _ _ _ _ IsBiproduct.i₁⋆π₂ (Biproduct.isBipr trivProd) = homProp _ _ _ _ IsBiproduct.i₂⋆π₁ (Biproduct.isBipr trivProd) = homProp _ _ _ _ IsBiproduct.i₂⋆π₂ (Biproduct.isBipr trivProd) = homProp _ _ _ _ IsBiproduct.∑π⋆i (Biproduct.isBipr trivProd) = homProp _ _ _ _