FiniteCategories-0.2.0.0: src/Math/Functors/KanExtension/Example.hs
{-| 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 = <ID>\nB -g-> A -f-> B = <ID>\n"
catToPdf c "OutputGraphViz/Examples/Functors/KanExtension/NotPointwise/C"
let f = unsafeReadSCGDString "<SRC>\n2\nA\n</SRC>\n<TGT>\n2\nA -f-> B -g-> A = <ID>\nB -g-> A -f-> B = <ID>\n</TGT>\nA => A"
diagToPdf2 f "OutputGraphViz/Examples/Functors/KanExtension/NotPointwise/F"
let g = unsafeReadSCGDString "<SRC>\n2\nA\n</SRC>\n<TGT>\n2\nA -f-> B\n</TGT>\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"