packages feed

FiniteCategories-0.1.0.0: test/ExampleAdjunction/ExampleAdjunction.hs

{-| Module  : FiniteCategories
Description : An example of adjunction.
Copyright   : Guillaume Sabbagh 2021
License     : GPL-3
Maintainer  : guillaumesabbagh@protonmail.com
Stability   : experimental
Portability : portable

An example of adjunction.
-}
module ExampleAdjunction.ExampleAdjunction
(
    main
)
where
    import              ExportGraphViz.ExportGraphViz          (catToPdf,genToPdf, diagToPdf, diagToPdf2, natToPdf)
    import              Diagram.Diagram
    import              Limit.Limit
    import              UsualCategories.DiscreteCategory
    import              Utils.AssociationList
    import              CompositionGraph.CompositionGraph
    import              IO.Parsers.Lexer
    import              IO.Parsers.SafeCompositionGraph
    import              IO.Parsers.SafeCompositionGraphFunctor
    import              FunctorCategory.FunctorCategory
    import              FiniteCategory.FiniteCategory
    import              ConeCategory.ConeCategory
    
    -- | Export the categories defined above as pdf with GraphViz.
    main = do
        putStrLn "Start of ExampleAdjunction"
        cg <- readSCGFile "test/ExampleAdjunction/ExampleAdjunction.scg"
        catToPdf cg "OutputGraphViz/Examples/Adjunction/category"
        diag1 <- readFSCGFile "test/ExampleAdjunction/ExampleAdjunctionDiag1.fscg"
        diagToPdf2 diag1 "OutputGraphViz/Examples/Adjunction/diag1"
        diag2 <- readFSCGFile "test/ExampleAdjunction/ExampleAdjunctionDiag2.fscg"
        diagToPdf2 diag2 "OutputGraphViz/Examples/Adjunction/diag2"
        catToPdf (mkConeCategory diag1) "OutputGraphViz/Examples/Adjunction/coneCat1"
        catToPdf (mkConeCategory diag2) "OutputGraphViz/Examples/Adjunction/coneCat2"
        putStrLn $ show $ (omap (limitFunctor (src diag1) (tgt diag1))) !-! diag1
        putStrLn $ show $ (omap (limitFunctor (src diag2) (tgt diag2))) !-! diag2
        putStrLn $ show $ (mmap (limitFunctor (src diag1) (tgt diag1))) !-! (head (ar FunctorCategory{sourceCat = src diag1, targetCat = tgt diag1} diag1 diag2))
        putStrLn "End of ExampleAdjunction"