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"