{-| Module : FiniteCategories Description : An exemple of 'ConeCategory' exported with GraphViz. Copyright : Guillaume Sabbagh 2022 License : GPL-3 Maintainer : guillaumesabbagh@protonmail.com Stability : experimental Portability : portable An exemple of 'ConeCategory' exported with GraphViz. Export the 'ConeCategory' of a 'V' 'Diagram' in a square category in the directory "OutputGraphViz\/Examples\/FiniteCategories\/ConeCategory". -} module Math.FiniteCategories.ConeCategory.Example ( main ) where import Math.Category import Math.Categories.FinGrph import Math.FiniteCategories.ConeCategory import Math.FiniteCategories.FunctorCategory import Math.FiniteCategories.V import Math.FiniteCategories.Hat import Math.FiniteCategories.SafeCompositionGraph 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 -- | An exemple of 'ConeCategory' exported with GraphViz. main :: IO () main = do putStrLn "Start of Math.FiniteCategories.ConeCategory.Example" let Right scg = safeCompositionGraph (unsafeGraph (set "ABCD") (set [Arrow{sourceArrow = 'A', targetArrow = 'B', labelArrow='f'}, Arrow{sourceArrow = 'A', targetArrow = 'C', labelArrow='g'}, Arrow{sourceArrow = 'B', targetArrow = 'D', labelArrow='h'}, Arrow{sourceArrow = 'C', targetArrow = 'D', labelArrow='I'}])) (weakMap [([Arrow{sourceArrow = 'C', targetArrow = 'D', labelArrow='I'}, Arrow{sourceArrow = 'A', targetArrow = 'C', labelArrow='g'}],[Arrow{sourceArrow = 'B', targetArrow = 'D', labelArrow='h'}, Arrow{sourceArrow = 'A', targetArrow = 'B', labelArrow='f'}])]) 3 let diag = completeDiagram Diagram{src=V,tgt=scg,omap=weakMap [(VA,'D'),(VB,'B'),(VC,'C')], mmap=weakMap [(VF,anElement (genAr scg 'B' 'D')),(VG,anElement (genAr scg 'C' 'D'))]} diagToPdf2 diag "OutputGraphViz/Examples/FiniteCategories/ConeCategory/Diag" catToPdf (coneCategory diag) "OutputGraphViz/Examples/FiniteCategories/ConeCategory/ConeCategory" let diag2 = completeDiagram Diagram{src=Hat,tgt=scg,omap=weakMap [(HatA,'A'),(HatB,'B'),(HatC,'C')], mmap=weakMap [(HatF,anElement (genAr scg 'A' 'B')),(HatG,anElement (genAr scg 'A' 'C'))]} diagToPdf2 diag2 "OutputGraphViz/Examples/FiniteCategories/ConeCategory/Diag2" catToPdf (coconeCategory diag2) "OutputGraphViz/Examples/FiniteCategories/ConeCategory/CoconeCategory" putStrLn "End of Math.FiniteCategories.ConeCategory.Example"