{-| Module : FiniteCategories Description : Examples of Kan extensions exported with GraphViz. Copyright : Guillaume Sabbagh 2023 License : GPL-3 Maintainer : guillaumesabbagh@protonmail.com Stability : experimental Portability : portable Examples of Kan extensions exported with GraphViz. Export extensions in the directory "OutputGraphViz\/Examples\/Functor\/KanExtension". -} module Math.Functors.KanExtension.Example ( main ) where import Math.FiniteCategory import Math.FiniteCategories import Math.Functors.KanExtension 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 -- | Examples of Kan extensions exported with GraphViz. main :: IO () main = do putStrLn "Start of Math.Functors.KanExtension.Example" let d1 = (setToList $ ob (FunctorCategory (numberCategory 2) (numberCategory 4)))!! 3 let d2 = (setToList $ ob (FunctorCategory (numberCategory 2) (numberCategory 3)))!! 2 diagToPdf2 d1 "OutputGraphViz/Examples/Functors/KanExtension/F" diagToPdf2 d2 "OutputGraphViz/Examples/Functors/KanExtension/X" let Just (lk,lknat) = (leftKan d1 d2) diagToPdf2 lk "OutputGraphViz/Examples/Functors/KanExtension/Lan_F(X)" natToPdf lknat "OutputGraphViz/Examples/Functors/KanExtension/EtaLan_F(X)" let Just (rk,rknat) = (rightKan d1 d2) diagToPdf2 rk "OutputGraphViz/Examples/Functors/KanExtension/Ran_F(X)" natToPdf rknat "OutputGraphViz/Examples/Functors/KanExtension/RhoRan_F(X)" let a = unsafeReadSCGString "2\nA\n" catToPdf a "OutputGraphViz/Examples/Functors/KanExtension/NotPointwise/A" let b = unsafeReadSCGString "2\nA -f-> B\n" catToPdf b "OutputGraphViz/Examples/Functors/KanExtension/NotPointwise/B" let c = unsafeReadSCGString "2\nA -f-> B -g-> A = \nB -g-> A -f-> B = \n" catToPdf c "OutputGraphViz/Examples/Functors/KanExtension/NotPointwise/C" let f = unsafeReadSCGDString "\n2\nA\n\n\n2\nA -f-> B -g-> A = \nB -g-> A -f-> B = \n\nA => A" diagToPdf2 f "OutputGraphViz/Examples/Functors/KanExtension/NotPointwise/F" let g = unsafeReadSCGDString "\n2\nA\n\n\n2\nA -f-> B\n\nA => A" diagToPdf2 g "OutputGraphViz/Examples/Functors/KanExtension/NotPointwise/G" let Just (lk,lknat) = (leftKan f g) diagToPdf2 lk "OutputGraphViz/Examples/Functors/KanExtension/NotPointwise/Lan_F(G)" natToPdf lknat "OutputGraphViz/Examples/Functors/KanExtension/NotPointwise/EtaLan_F(G)" let Just (rk,rknat) = (rightKan f g) diagToPdf2 rk "OutputGraphViz/Examples/Functors/KanExtension/NotPointwise/Ran_F(G)" natToPdf rknat "OutputGraphViz/Examples/Functors/KanExtension/NotPointwise/EpsilonLan_F(G)" putStrLn "End of Math.Functors.KanExtension.Example"