{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Math.FiniteCategories.NumberCategory
(
NumberCategoryObject(..),
NumberCategoryMorphism(..),
IsSmallerThan(..),
NumberCategory(..),
numberCategory,
)
where
import Math.FiniteCategory
import Math.FiniteCategories.FullSubcategory
import Math.Categories.TotalOrder
import Math.Categories.Omega
import Numeric.Natural
import Data.WeakSet.Safe
type NumberCategoryObject = Natural
type NumberCategoryMorphism = IsSmallerThan Natural
type NumberCategory = InheritedFullSubcategory Omega (IsSmallerThan Natural) Natural
numberCategory :: Natural -> NumberCategory
numberCategory :: Natural -> NumberCategory
numberCategory Natural
n = (Omega -> Set Natural -> NumberCategory
forall c m o. c -> Set o -> InheritedFullSubcategory c m o
InheritedFullSubcategory Omega
omega ([Natural] -> Set Natural
forall a. [a] -> Set a
set [Natural
1..Natural
n]))