FiniteCategories-0.1.0.0: test/ExampleDiagram/ExampleParallelDiagram.hs
{-| Module : FiniteCategories
Description : An example of parallel diagram.
Copyright : Guillaume Sabbagh 2021
License : GPL-3
Maintainer : guillaumesabbagh@protonmail.com
Stability : experimental
Portability : portable
An example of parallel diagram.
-}
module ExampleDiagram.ExampleParallelDiagram
(
parallelDiag,
main
)
where
import RandomCompositionGraph.RandomCompositionGraph
import System.Random
import ExportGraphViz.ExportGraphViz (catToPdf,diagToPdf,diagToPdf2)
import Diagram.Diagram (mkParallel, src)
import Utils.Sample
import FiniteCategory.FiniteCategory hiding (FiniteCategoryError(..))
import Data.Maybe (fromJust)
(rcg1,newGen) = (mkRandomCompositionGraph 10 15 3 (mkStdGen 1234))
(arToPickFrom,newGen2) = (pickOne [ar rcg1 a b|a <- ob rcg1, b <- ob rcg1, length (ar rcg1 a b) > 1, a/=b] newGen)
([f,g],newGen3) = (sample arToPickFrom 2 newGen2)
-- | We select a two parallel morphism in a random category.
parallelDiag = fromJust $ (mkParallel rcg1 f g)
-- | Export the diagram as a pdf with GraphViz.
main = do
putStrLn "Start of ExampleParallelDiagram"
catToPdf rcg1 "OutputGraphViz/Examples/Diagram/ParallelDiagram/rcg1"
catToPdf (src parallelDiag) "OutputGraphViz/Examples/Diagram/ParallelDiagram/Parallel"
diagToPdf parallelDiag "OutputGraphViz/Examples/Diagram/ParallelDiagram/functor"
diagToPdf2 parallelDiag "OutputGraphViz/Examples/Diagram/ParallelDiagram/diag"
putStrLn "End of ExampleParallelDiagram"