{-| Module  : FiniteCategories
Description : An exemple of a 'diagonalFunctor' exported with GraphViz.
Copyright   : Guillaume Sabbagh 2022
License     : GPL-3
Maintainer  : guillaumesabbagh@protonmail.com
Stability   : experimental
Portability : portable

An exemple of 'diagonalFunctor' exported with GraphViz.

Export a diagonal functor in the directory "OutputGraphViz\/Examples\/Functor\/DiagonalFunctor".
-}
module Math.Functors.DiagonalFunctor.Example
(
    main
)
where
    import              Math.FiniteCategory  
    import              Math.FiniteCategories.DiscreteCategory
    import              Math.FiniteCategories.V
    import              Math.Functors.DiagonalFunctor
    import              Math.IO.FiniteCategories.ExportGraphViz
    
    import              Data.WeakSet             (Set)
    import qualified    Data.WeakSet           as Set
    import              Data.WeakSet.Safe
    import              Data.WeakMap             (Map)
    import qualified    Data.WeakMap           as Map
    import              Data.WeakMap.Safe
    
    -- | An exemple of 'diagonalFunctor' exported with GraphViz.

    main :: IO ()
    main :: IO ()
main = do
        String -> IO ()
putStrLn String
"Start of Math.Functors.DiagonalFunctor.Example"
        DiscreteCategory Int -> String -> IO ()
forall o m c.
(Eq o, PrettyPrint o, PrettyPrint m, Morphism m o,
 FiniteCategory c m o) =>
c -> String -> IO ()
catToPdf (Set Int -> DiscreteCategory Int
forall a. Set a -> DiscreteCategory a
discreteCategory ([Int] -> Set Int
forall a. [a] -> Set a
set [Int
1 :: Int,Int
2])) String
"OutputGraphViz/Examples/Functors/DiagonalFunctor/indexing"
        V -> String -> IO ()
forall o m c.
(Eq o, PrettyPrint o, PrettyPrint m, Morphism m o,
 FiniteCategory c m o) =>
c -> String -> IO ()
catToPdf V
V String
"OutputGraphViz/Examples/Functors/DiagonalFunctor/target"
        Diagram
  V
  VAr
  VOb
  (FunctorCategory
     (DiscreteCategory Int) (StarIdentity Int) Int V VAr VOb)
  (NaturalTransformation
     (DiscreteCategory Int) (StarIdentity Int) Int V VAr VOb)
  (Diagram (DiscreteCategory Int) (StarIdentity Int) Int V VAr VOb)
-> String -> IO ()
forall m1 o1 c1 m2 o2 c2.
(Morphism m1 o1, FiniteCategory c1 m1 o1, Eq o1, Eq m1,
 PrettyPrint m1, PrettyPrint o1, Morphism m2 o2,
 FiniteCategory c2 m2 o2, Eq o2, Eq m2, PrettyPrint m2,
 PrettyPrint o2) =>
Diagram c1 m1 o1 c2 m2 o2 -> String -> IO ()
diagToPdf2 (DiscreteCategory Int
-> V
-> Diagram
     V
     VAr
     VOb
     (FunctorCategory
        (DiscreteCategory Int) (StarIdentity Int) Int V VAr VOb)
     (NaturalTransformation
        (DiscreteCategory Int) (StarIdentity Int) Int V VAr VOb)
     (Diagram (DiscreteCategory Int) (StarIdentity Int) Int V VAr VOb)
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, FiniteCategory c2 m2 o2,
 Morphism m2 o2) =>
c1
-> c2
-> Diagram
     c2
     m2
     o2
     (FunctorCategory c1 m1 o1 c2 m2 o2)
     (NaturalTransformation c1 m1 o1 c2 m2 o2)
     (Diagram c1 m1 o1 c2 m2 o2)
diagonalFunctor (Set Int -> DiscreteCategory Int
forall a. Set a -> DiscreteCategory a
discreteCategory ([Int] -> Set Int
forall a. [a] -> Set a
set [Int
1 :: Int,Int
2])) V
V) String
"OutputGraphViz/Examples/Functors/DiagonalFunctor/diagonalFunctor"
        String -> IO ()
putStrLn String
"End of Math.Functors.DiagonalFunctor.Example"