{-| Module  : FiniteCategories
Description : Examples of 'CommaCategory' pretty printed.
Copyright   : Guillaume Sabbagh 2022
License     : GPL-3
Maintainer  : guillaumesabbagh@protonmail.com
Stability   : experimental
Portability : portable

Examples of 'CommaCategory' pretty printed.
-}
module Math.FiniteCategories.CommaCategory.Example
(
    main
)
where
    import qualified Data.WeakSet as Set
    import Data.WeakSet.Safe
    import Data.WeakMap.Safe
    
    import Math.FiniteCategory
    import Math.Categories
    import Math.FiniteCategories
    import Math.IO.PrettyPrint
    
    -- | Examples of 'CommaCategory' pretty printed.

    main :: IO ()
    main :: IO ()
main = do
        String -> IO ()
putStrLn String
"Start of Math.FiniteCategories.CommaCategory.Example"
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ NumberCategory -> String
forall c m o.
(FiniteCategory c m o, Morphism m o, PrettyPrint c, PrettyPrint m,
 PrettyPrint o, Eq m, Eq o) =>
c -> String
pprintFiniteCategory (Natural -> NumberCategory
numberCategory Natural
4)
        let Just CommaCategory
  NumberCategory
  (IsSmallerThan Natural)
  Natural
  One
  One
  One
  NumberCategory
  (IsSmallerThan Natural)
  Natural
slice = NumberCategory
-> Natural
-> Maybe
     (CommaCategory
        NumberCategory
        (IsSmallerThan Natural)
        Natural
        One
        One
        One
        NumberCategory
        (IsSmallerThan Natural)
        Natural)
forall c m o.
(FiniteCategory c m o, Morphism m o, Eq c, Eq m, Eq o) =>
c -> o -> Maybe (CommaCategory c m o One One One c m o)
sliceCategory (Natural -> NumberCategory
numberCategory Natural
4) Natural
2
        let Just CommaCategory
  One
  One
  One
  NumberCategory
  (IsSmallerThan Natural)
  Natural
  NumberCategory
  (IsSmallerThan Natural)
  Natural
coslice = NumberCategory
-> Natural
-> Maybe
     (CommaCategory
        One
        One
        One
        NumberCategory
        (IsSmallerThan Natural)
        Natural
        NumberCategory
        (IsSmallerThan Natural)
        Natural)
forall c m o.
(FiniteCategory c m o, Morphism m o, Eq c, Eq m, Eq o) =>
c -> o -> Maybe (CommaCategory One One One c m o c m o)
cosliceCategory (Natural -> NumberCategory
numberCategory Natural
4) Natural
2
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ CommaCategory
  NumberCategory
  (IsSmallerThan Natural)
  Natural
  One
  One
  One
  NumberCategory
  (IsSmallerThan Natural)
  Natural
-> String
forall c m o.
(FiniteCategory c m o, Morphism m o, PrettyPrint c, PrettyPrint m,
 PrettyPrint o, Eq m, Eq o) =>
c -> String
pprintFiniteCategory CommaCategory
  NumberCategory
  (IsSmallerThan Natural)
  Natural
  One
  One
  One
  NumberCategory
  (IsSmallerThan Natural)
  Natural
slice
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ CommaCategory
  One
  One
  One
  NumberCategory
  (IsSmallerThan Natural)
  Natural
  NumberCategory
  (IsSmallerThan Natural)
  Natural
-> String
forall c m o.
(FiniteCategory c m o, Morphism m o, PrettyPrint c, PrettyPrint m,
 PrettyPrint o, Eq m, Eq o) =>
c -> String
pprintFiniteCategory CommaCategory
  One
  One
  One
  NumberCategory
  (IsSmallerThan Natural)
  Natural
  NumberCategory
  (IsSmallerThan Natural)
  Natural
coslice
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ CommaCategory
  NumberCategory
  (IsSmallerThan Natural)
  Natural
  NumberCategory
  (IsSmallerThan Natural)
  Natural
  NumberCategory
  (IsSmallerThan Natural)
  Natural
-> String
forall c m o.
(FiniteCategory c m o, Morphism m o, PrettyPrint c, PrettyPrint m,
 PrettyPrint o, Eq m, Eq o) =>
c -> String
pprintFiniteCategory (NumberCategory
-> CommaCategory
     NumberCategory
     (IsSmallerThan Natural)
     Natural
     NumberCategory
     (IsSmallerThan Natural)
     Natural
     NumberCategory
     (IsSmallerThan Natural)
     Natural
forall c m o.
(FiniteCategory c m o, Morphism m o, Eq c, Eq m, Eq o) =>
c -> CommaCategory c m o c m o c m o
arrowCategory (Natural -> NumberCategory
numberCategory Natural
4))
        String -> IO ()
putStrLn String
"End of Math.FiniteCategories.CommaCategory.Example"