{-# OPTIONS --without-K --safe #-} module Categories.Category.Finite where open import Level open import Categories.Adjoint.Equivalence open import Categories.Category.Core open import Categories.Category.Finite.Fin -- definition of a finite category -- -- the idea is to require a functor from C to a category generated from a finite shape -- is the right adjoint. -- -- Question: it seems to me right adjoint is enough, though the original plan is to -- use adjoint equivalence. intuitively, the shape category is an "overapproximation" -- of C, which is a very strong constraint. so requiring adjoint equivalence sounds an -- unnecessarily stronger constraint. is adjoint equivalence necessary? -- -- Answer: probably yes. adjoint equivalence seems necessary as the notion needs to -- show that shapes are preserved. -- -- c.f. Categories.Adjoint.Equivalence.Properties.⊣equiv-preserves-diagram record Finite {o ℓ e} (C : Category o ℓ e) : Set (o ⊔ ℓ ⊔ e) where field shape : FinCatShape open FinCatShape public renaming (size to ∣Obj∣) shapeCat : Category _ _ _ shapeCat = FinCategory shape -- -- /------------\ -- < - \ -- C | S -- \ - ^ -- \------------/ -- field ⊣equiv : ⊣Equivalence shapeCat C module ⊣equiv = ⊣Equivalence ⊣equiv open ⊣equiv public