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

An example of 'FullSubcategory' of __'FinGrph'__ exported with GraphViz.

Export the category in the directory "OutputGraphViz\/Examples\/FiniteCategories\/FinGrph".
-}
module Math.FiniteCategories.FinGrph.Example
(
    main
)
where
    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
    import              Data.Text           (Text, pack)
    
    import              Math.Categories  
    import              Math.FiniteCategories
    import              Math.IO.FiniteCategories.ExportGraphViz
    
    import              Numeric.Natural
    
    
    -- | A 'FullSubcategory' __'FinGrph'__ exported with GraphViz.

    main :: IO ()
    main :: IO ()
main = do
        String -> IO ()
putStrLn String
"Start of Math.FiniteCategories.FinGrph.Example"
        let c :: FullSubcategory
  (FinGrph Natural Text)
  (GraphHomomorphism Natural Text)
  (Graph Natural Text)
c = FinGrph Natural Text
-> Set (Graph Natural Text)
-> FullSubcategory
     (FinGrph Natural Text)
     (GraphHomomorphism Natural Text)
     (Graph Natural Text)
forall c m o. c -> Set o -> FullSubcategory c m o
FullSubcategory FinGrph Natural Text
forall n e. FinGrph n e
FinGrph (Set (Graph Natural Text)
 -> FullSubcategory
      (FinGrph Natural Text)
      (GraphHomomorphism Natural Text)
      (Graph Natural Text))
-> Set (Graph Natural Text)
-> FullSubcategory
     (FinGrph Natural Text)
     (GraphHomomorphism Natural Text)
     (Graph Natural Text)
forall a b. (a -> b) -> a -> b
$ ((Natural -> Natural)
-> (IsSmallerThan Natural -> Text)
-> NumberCategory
-> Graph Natural Text
forall c m o a b.
(FiniteCategory c m o, Morphism m o) =>
(o -> a) -> (m -> b) -> c -> Graph a b
underlyingGraphFormat Natural -> Natural
forall a. a -> a
id (Text -> IsSmallerThan Natural -> Text
forall a b. a -> b -> a
const(Text -> IsSmallerThan Natural -> Text)
-> (String -> Text) -> String -> IsSmallerThan Natural -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
.String -> Text
pack (String -> IsSmallerThan Natural -> Text)
-> String -> IsSmallerThan Natural -> Text
forall a b. (a -> b) -> a -> b
$ String
""))(NumberCategory -> Graph Natural Text)
-> (Natural -> NumberCategory) -> Natural -> Graph Natural Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Natural -> NumberCategory
numberCategory (Natural -> Graph Natural Text)
-> Set Natural -> Set (Graph Natural Text)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Natural] -> Set Natural
forall a. [a] -> Set a
set [Natural
0..Natural
2] :: FullSubcategory (FinGrph Natural Text) (GraphHomomorphism Natural Text) (Graph Natural Text)
        FullSubcategory
  (FinGrph Natural Text)
  (GraphHomomorphism Natural Text)
  (Graph Natural Text)
-> String -> IO ()
forall o m c.
(Eq o, PrettyPrint o, PrettyPrint m, Morphism m o,
 FiniteCategory c m o) =>
c -> String -> IO ()
catToPdf FullSubcategory
  (FinGrph Natural Text)
  (GraphHomomorphism Natural Text)
  (Graph Natural Text)
c String
"OutputGraphViz/Examples/FiniteCategories/FinGrph/FinGrph"
        String -> IO ()
putStrLn String
"End of Math.FiniteCategories.FinGrph.Example"