FiniteCategories-0.1.0.0: test/ExampleCompositionGraph/ExampleCompositionGraphConstruction.hs
{-| Module : FiniteCategories
Description : An example of `CompositionGraph` construction with insertion, modification and deletion.
Copyright : Guillaume Sabbagh 2021
License : GPL-3
Maintainer : guillaumesabbagh@protonmail.com
Stability : experimental
Portability : portable
An example of `CompositionGraph` construction with insertion, modification and deletion.
-}
module ExampleCompositionGraph.ExampleCompositionGraphConstruction
(
main
)
where
import CompositionGraph.CompositionGraph
import ExportGraphViz.ExportGraphViz
import Diagram.Diagram
import FiniteCategory.FiniteCategory
import Data.Text (Text, pack)
import Data.List ((\\))
import Diagram.Conversion
cg1 = mkEmptyCompositionGraph :: CompositionGraph Text Text
(cg2,funct2) = insertObject cg1 (pack "1")
(cg3,funct3) = insertObject cg2 (pack "2")
Right (cg4,funct4) = insertMorphism cg3 ((pack "1")) ((pack "2")) (pack "f")
Right (cg5,funct5) = insertMorphism cg4 ((pack "1")) ((pack "1")) (pack "g")
Right (cg6,funct6) = identifyMorphisms cg5 ((head [f | f <- genAr cg5 ((pack "1")) ((pack "1")), isNotIdentity cg5 f]) @ (head [f | f <- genAr cg5 ((pack "1")) ((pack "1")), isNotIdentity cg5 f])) (head [f | f <- genAr cg5 ((pack "1")) ((pack "1")), isNotIdentity cg5 f])
Right (cg7,funct7) = replaceObject cg6 (pack "2") (pack "3")
Right (cg8,funct8) = replaceMorphism cg7 (head (ar cg7 (pack "1") (pack "3"))) (pack "h")
(cg9,funct9) = insertObject cg8 (pack "4")
Right (cg10,funct10) = insertMorphism cg9 ((pack "3")) ((pack "4")) (pack "i")
Right (cg11,funct11) = insertMorphism cg10 ((pack "1")) ((pack "4")) (pack "j")
Right (cg12,funct12) = identifyMorphisms cg11 (((ar cg11 (pack "1") (pack "4")) \\ (genAr cg11 (pack "1") (pack "4")))!!1) (head (genAr cg11 (pack "1") (pack "4")))
Right (cg13,funct13) = deleteMorphism cg12 (head (genAr cg12 (pack "1") (pack "4")))
Right (cg14,funct14) = deleteObject cg13 (pack "4")
Right (cg15,funct15) = identifyMorphisms cg14 ((ar cg14 (pack "1") (pack "3"))!!1) ((ar cg14 (pack "1") (pack "3"))!!0)
Right (cg16,funct16) = unidentifyMorphism cg15 ((ar cg15 (pack "1") (pack "3"))!!0)
Just diag2 = partialFunctorToDiagram funct2
Just diag3 = partialFunctorToDiagram funct3
Just diag4 = partialFunctorToDiagram funct4
-- we don't create diag5 and diag6 because their are not showable as categories are infinite.
Just diag7 = partialFunctorToDiagram funct7
Just diag8 = partialFunctorToDiagram funct8
Just diag9 = partialFunctorToDiagram funct9
Just diag10 = partialFunctorToDiagram funct10
Just diag11 = partialFunctorToDiagram funct11
-- we don't create diag12, diag13, diag14 and diag15 because they are not total.
Just diag16 = partialFunctorToDiagram funct16
-- | Exports the composition graphs and insertion functors as pdf file with GraphViz.
main = do
putStrLn "Start of ExampleCompositionGraphConstruction"
catToPdf cg1 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat1"
catToPdf cg2 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat2"
catToPdf cg3 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat3"
catToPdf cg4 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat4"
catToPdf cg6 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat6"
catToPdf cg7 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat7"
catToPdf cg8 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat8"
catToPdf cg9 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat9"
catToPdf cg10 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat10"
catToPdf cg11 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat11"
catToPdf cg12 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat12"
catToPdf cg13 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat13"
catToPdf cg14 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat14"
catToPdf cg15 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat15"
catToPdf cg16 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/cat16"
diagToPdf diag2 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/funct2"
diagToPdf diag3 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/funct3"
diagToPdf diag4 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/funct4"
diagToPdf diag7 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/funct7"
diagToPdf diag8 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/funct8"
diagToPdf diag9 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/funct9"
diagToPdf diag10 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/funct10"
diagToPdf diag11 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/funct11"
diagToPdf diag16 "OutputGraphViz/Examples/CompositionGraph/CompositionGraphConstruction/funct16"
putStrLn "End of ExampleCompositionGraphConstruction"