{-| Module : FiniteCategories Description : Examples of 'FunctorCategory'. Examples of 'Diagram's. Copyright : Guillaume Sabbagh 2022 License : GPL-3 Maintainer : guillaumesabbagh@protonmail.com Stability : experimental Portability : portable Examples of 'FunctorCategory'. Examples of 'Diagram's. -} module Math.FiniteCategories.FunctorCategory.Examples ( exampleFunctorCategory, exampleDiagramVToSquare, exampleDiagramHatToSquare, examplePrecomposedFunctorCategory, examplePostcomposedFunctorCategory, exampleCgdString, ) where import Data.WeakSet.Safe import Data.WeakMap.Safe import Math.FiniteCategory import Math.Categories import Math.FiniteCategories import Math.IO.PrettyPrint import Data.Text (Text) -- | The 'FunctorCategory' 3^2. exampleFunctorCategory :: FunctorCategory NumberCategory NumberCategoryMorphism NumberCategoryObject NumberCategory NumberCategoryMorphism NumberCategoryObject exampleFunctorCategory = FunctorCategory (numberCategory 2) (numberCategory 3) -- | Example of a 'Diagram' from V to Square. exampleDiagramVToSquare :: Diagram V VAr VOb Square SquareAr SquareOb exampleDiagramVToSquare = completeDiagram Diagram{src=V, tgt=Square, omap=weakMap [], mmap = weakMap [(VF,SquareH),(VG,SquareI)]} -- | Example of a 'Diagram' from Hat to Square. exampleDiagramHatToSquare :: Diagram Hat HatAr HatOb Square SquareAr SquareOb exampleDiagramHatToSquare = completeDiagram Diagram{src=Hat, tgt=Square, omap=weakMap [], mmap = weakMap [(HatF,SquareF),(HatG,SquareG)]} -- | Example of a 'PrecomposedFunctorCategory'. examplePrecomposedFunctorCategory :: PrecomposedFunctorCategory V VAr VOb Square SquareAr SquareOb Square SquareAr SquareOb examplePrecomposedFunctorCategory = PrecomposedFunctorCategory exampleDiagramVToSquare Square -- | Example of a 'PostcomposedFunctorCategory'. examplePostcomposedFunctorCategory :: PostcomposedFunctorCategory Square SquareAr SquareOb V VAr VOb Square SquareAr SquareOb examplePostcomposedFunctorCategory = PostcomposedFunctorCategory exampleDiagramVToSquare Square -- | Example of a 'Diagram' of 'CompositionGraph's constructed by reading a .cgd string. exampleCgdString :: Diagram (CompositionGraph Text Text) (CGMorphism Text Text) Text (CompositionGraph Text Text) (CGMorphism Text Text) Text Right exampleCgdString = readCGDString $ sourceCG++targetCG++"A -f-> B => 1 -a-> 2\n" where sourceCG = "\nA -f-> B\n\n" targetCG = "\n1 -a-> 2\n1 -b-> 3\n\n"