{-| Module  : FiniteCategories
Description : An exemple of a 'dataMigration' exported with GraphViz.
Copyright   : Guillaume Sabbagh 2022
License     : GPL-3
Maintainer  : guillaumesabbagh@protonmail.com
Stability   : experimental
Portability : portable

An exemple of 'dataMigration' exported with GraphViz.

Export a data migration in the directory "OutputGraphViz\/Examples\/Functor\/DataMigration".
-}
module Math.Functors.DataMigration.Example
(
    main
)
where
    import              Math.FiniteCategory
    import              Math.FiniteCategories.SafeCompositionGraph
    import              Math.FiniteCategories
    import              Math.Functors.DataMigration
    import              Math.Categories.FinSet
    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 'DataMigration' exported with GraphViz.

    main :: IO ()
    main :: IO ()
main = do
        String -> IO ()
putStrLn String
"Start of Math.Functors.DataMigration.Example"
        -- let Right graphSketch = readSCGString "3\nE -s-> V\nE -t-> V"

        -- let Right autographSketch = readSCGString "3\nA -s-> A -s-> A = A -t-> A\nA -s-> A -t-> A = <ID>\nA -t-> A -s-> A = <ID>\n A -t-> A -t-> A = A -s-> A"

        -- let f = (setToList $ ob (FunctorCategory graphSketch autographSketch)) !! 7

        -- --Diagram{src=graphSketch, tgt=autographSketch, omap=memorizeFunction (const.anElement.ob $ autographSketch) (ob graphSketch), mmap = weakMap (zip (setToList (arrows graphSketch)) (setToList (arrows autographSketch)))}

        -- catToPdf graphSketch "OutputGraphViz/Examples/Functors/DataMigration/graphSketch"

        -- catToPdf autographSketch "OutputGraphViz/Examples/Functors/DataMigration/autographSketch"

        -- diagToPdf2 f "OutputGraphViz/Examples/Functors/DataMigration/f"

        -- putStrLn (show f)

        -- let universe = ens $ set [set [1 :: Int,2]]

        -- let delta = (deltaFunctor universe f)

        -- let anInstance = anElement (ob.source $ delta)

        -- diagToPdf anInstance "OutputGraphViz/Examples/Functors/DataMigration/autograph1"

        -- diagToPdf (delta ->$ anInstance) "OutputGraphViz/Examples/Functors/DataMigration/delta_autograph1"

        
        -- let universe = ens $ set [set[], set[1], set[1 :: Int,2]]

        -- let pii = (piFunctor universe f)

        -- let anInstance = (setToList.ob.source $ delta) !! 0

        -- diagToPdf anInstance "OutputGraphViz/Examples/Functors/DataMigration/graph1"

        -- diagToPdf (pii ->$ anInstance) "OutputGraphViz/Examples/Functors/DataMigration/pi_graph1"

        
        -- let c = V

        -- let d = numberCategory 2

        -- let f = completeDiagram Diagram{src=c,tgt=d,omap=weakMap [(VA,2),(VB,1),(VC,1)],mmap=weakMap [(VF,IsSmallerThan 1 2),(VG,IsSmallerThan 1 2)]}

        let c :: Parallel
c = Parallel
Parallel
        let d :: DiscreteCategory Char
d = Set Char -> DiscreteCategory Char
forall a. Set a -> DiscreteCategory a
discreteCategory (String -> Set Char
forall a. [a] -> Set a
set String
"A")
        let f :: Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  Parallel
  ParallelAr
  ParallelOb
f = Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  Parallel
  ParallelAr
  ParallelOb
-> Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     Parallel
     ParallelAr
     ParallelOb
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq m1, Eq o1,
 Category c2 m2 o2, Morphism m2 o2) =>
Diagram c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
completeDiagram Diagram :: forall c1 m1 o1 c2 m2 o2.
c1 -> c2 -> Map o1 o2 -> Map m1 m2 -> Diagram c1 m1 o1 c2 m2 o2
Diagram{src :: DiscreteCategory Char
src=DiscreteCategory Char
d,tgt :: Parallel
tgt=Parallel
c,omap :: Map Char ParallelOb
omap=AssociationList Char ParallelOb -> Map Char ParallelOb
forall k v. AssociationList k v -> Map k v
weakMap [(Char
'A',ParallelOb
ParallelA)],mmap :: Map (StarIdentity Char) ParallelAr
mmap = Map (StarIdentity Char) ParallelAr
forall k a. Map k a
Map.empty}
        Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  Parallel
  ParallelAr
  ParallelOb
-> String -> IO ()
forall m1 o1 c1 m2 o2 c2.
(Morphism m1 o1, FiniteCategory c1 m1 o1, Eq o1, Eq m1,
 PrettyPrint m1, PrettyPrint o1, Morphism m2 o2,
 FiniteCategory c2 m2 o2, Eq o2, Eq m2, PrettyPrint m2,
 PrettyPrint o2) =>
Diagram c1 m1 o1 c2 m2 o2 -> String -> IO ()
diagToPdf Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  Parallel
  ParallelAr
  ParallelOb
f String
"OutputGraphViz/Examples/Functors/DataMigration/functor"
        
        let universe :: Ens Int
universe = Set (Set Int) -> Ens Int
forall a. Set (Set a) -> Ens a
ens (Set (Set Int) -> Ens Int) -> Set (Set Int) -> Ens Int
forall a b. (a -> b) -> a -> b
$ [Set Int] -> Set (Set Int)
forall a. [a] -> Set a
set [[Int] -> Set Int
forall a. [a] -> Set a
set[], [Int] -> Set Int
forall a. [a] -> Set a
set [Int
1 :: Int,Int
2], [Int] -> Set Int
forall a. [a] -> Set a
set [Int
1]]
        let anInstance :: Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
anInstance = Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
-> Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int)
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq m1, Eq o1,
 Category c2 m2 o2, Morphism m2 o2) =>
Diagram c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
completeDiagram Diagram :: forall c1 m1 o1 c2 m2 o2.
c1 -> c2 -> Map o1 o2 -> Map m1 m2 -> Diagram c1 m1 o1 c2 m2 o2
Diagram{src :: DiscreteCategory Char
src=DiscreteCategory Char
d,tgt :: Ens Int
tgt=Ens Int
universe,omap :: Map Char (Set Int)
omap=AssociationList Char (Set Int) -> Map Char (Set Int)
forall k v. AssociationList k v -> Map k v
weakMap [(Char
'A',[Int] -> Set Int
forall a. [a] -> Set a
set [Int
1])],mmap :: Map (StarIdentity Char) (Function Int)
mmap=Map (StarIdentity Char) (Function Int)
forall k a. Map k a
Map.empty}
        Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
-> String -> IO ()
forall m1 o1 c1 m2 o2 c2.
(Morphism m1 o1, FiniteCategory c1 m1 o1, Eq o1, Eq m1,
 PrettyPrint m1, PrettyPrint o1, Morphism m2 o2,
 FiniteCategory c2 m2 o2, Eq o2, Eq m2, PrettyPrint m2,
 PrettyPrint o2) =>
Diagram c1 m1 o1 c2 m2 o2 -> String -> IO ()
diagToPdf Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
anInstance String
"OutputGraphViz/Examples/Functors/DataMigration/anInstance"
        Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
-> String -> IO ()
forall m1 o1 c1 m2 o2 c2.
(Morphism m1 o1, FiniteCategory c1 m1 o1, Eq o1, Eq m1,
 PrettyPrint m1, PrettyPrint o1, Morphism m2 o2,
 FiniteCategory c2 m2 o2, Eq o2, Eq m2, PrettyPrint m2,
 PrettyPrint o2) =>
Diagram c1 m1 o1 c2 m2 o2 -> String -> IO ()
diagToPdf2 Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
anInstance String
"OutputGraphViz/Examples/Functors/DataMigration/anInstance2"
        
        let pii :: Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
pii = (Ens Int
-> Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     Parallel
     ParallelAr
     ParallelOb
-> Diagram
     (FunctorCategory
        (DiscreteCategory Char)
        (StarIdentity Char)
        Char
        (Ens Int)
        (Function Int)
        (Set Int))
     (NaturalTransformation
        (DiscreteCategory Char)
        (StarIdentity Char)
        Char
        (Ens Int)
        (Function Int)
        (Set Int))
     (Diagram
        (DiscreteCategory Char)
        (StarIdentity Char)
        Char
        (Ens Int)
        (Function Int)
        (Set Int))
     (FunctorCategory
        Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
     (NaturalTransformation
        Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
     (Diagram
        Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
forall {c1} {m1} {o1} {c3} {m3} {o3} {c2} {m2} {o2}.
(FiniteCategory c1 m1 o1, FiniteCategory c3 m3 o3,
 FiniteCategory c2 m2 o2, Morphism m1 o1, Morphism m3 o3,
 Morphism m2 o2, Eq c1, Eq m1, Eq o1, Eq c3, Eq m3, Eq o3, Eq c2,
 Eq m2, Eq o2) =>
c3
-> Diagram c1 m1 o1 c2 m2 o2
-> Diagram
     (FunctorCategory c1 m1 o1 c3 m3 o3)
     (NaturalTransformation c1 m1 o1 c3 m3 o3)
     (Diagram c1 m1 o1 c3 m3 o3)
     (FunctorCategory c2 m2 o2 c3 m3 o3)
     (NaturalTransformation c2 m2 o2 c3 m3 o3)
     (Diagram c2 m2 o2 c3 m3 o3)
piFunctor Ens Int
universe Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  Parallel
  ParallelAr
  ParallelOb
f)
        Diagram
  Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int)
-> String -> IO ()
forall m1 o1 c1 m2 o2 c2.
(Morphism m1 o1, FiniteCategory c1 m1 o1, Eq o1, Eq m1,
 PrettyPrint m1, PrettyPrint o1, Morphism m2 o2,
 FiniteCategory c2 m2 o2, Eq o2, Eq m2, PrettyPrint m2,
 PrettyPrint o2) =>
Diagram c1 m1 o1 c2 m2 o2 -> String -> IO ()
diagToPdf (Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
pii Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
-> Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int)
-> Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
anInstance) String
"OutputGraphViz/Examples/Functors/DataMigration/pi_anInstance1"
        Diagram
  Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int)
-> String -> IO ()
forall m1 o1 c1 m2 o2 c2.
(Morphism m1 o1, FiniteCategory c1 m1 o1, Eq o1, Eq m1,
 PrettyPrint m1, PrettyPrint o1, Morphism m2 o2,
 FiniteCategory c2 m2 o2, Eq o2, Eq m2, PrettyPrint m2,
 PrettyPrint o2) =>
Diagram c1 m1 o1 c2 m2 o2 -> String -> IO ()
diagToPdf2 (Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
pii Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
-> Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int)
-> Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
anInstance) String
"OutputGraphViz/Examples/Functors/DataMigration/pi_anInstance2"
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ Diagram
  Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int)
-> String
forall a. Show a => a -> String
show (Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
pii Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
-> Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int)
-> Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
anInstance)
        
        let sigmaa :: Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
sigmaa = (Ens Int
-> Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     Parallel
     ParallelAr
     ParallelOb
-> Diagram
     (FunctorCategory
        (DiscreteCategory Char)
        (StarIdentity Char)
        Char
        (Ens Int)
        (Function Int)
        (Set Int))
     (NaturalTransformation
        (DiscreteCategory Char)
        (StarIdentity Char)
        Char
        (Ens Int)
        (Function Int)
        (Set Int))
     (Diagram
        (DiscreteCategory Char)
        (StarIdentity Char)
        Char
        (Ens Int)
        (Function Int)
        (Set Int))
     (FunctorCategory
        Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
     (NaturalTransformation
        Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
     (Diagram
        Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
forall {c2} {m2} {o2} {c3} {m3} {o3} {c1} {m1} {o1}.
(FiniteCategory c2 m2 o2, FiniteCategory c3 m3 o3,
 FiniteCategory c1 m1 o1, Morphism m2 o2, Morphism m3 o3,
 Morphism m1 o1, Eq c2, Eq m2, Eq o2, Eq c3, Eq m3, Eq o3, Eq c1,
 Eq m1, Eq o1) =>
c3
-> Diagram c1 m1 o1 c2 m2 o2
-> Diagram
     (FunctorCategory c1 m1 o1 c3 m3 o3)
     (NaturalTransformation c1 m1 o1 c3 m3 o3)
     (Diagram c1 m1 o1 c3 m3 o3)
     (FunctorCategory c2 m2 o2 c3 m3 o3)
     (NaturalTransformation c2 m2 o2 c3 m3 o3)
     (Diagram c2 m2 o2 c3 m3 o3)
sigmaFunctor Ens Int
universe Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  Parallel
  ParallelAr
  ParallelOb
f)
        Diagram
  Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int)
-> String -> IO ()
forall m1 o1 c1 m2 o2 c2.
(Morphism m1 o1, FiniteCategory c1 m1 o1, Eq o1, Eq m1,
 PrettyPrint m1, PrettyPrint o1, Morphism m2 o2,
 FiniteCategory c2 m2 o2, Eq o2, Eq m2, PrettyPrint m2,
 PrettyPrint o2) =>
Diagram c1 m1 o1 c2 m2 o2 -> String -> IO ()
diagToPdf (Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
sigmaa Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
-> Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int)
-> Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
anInstance) String
"OutputGraphViz/Examples/Functors/DataMigration/sigma_anInstance1"
        Diagram
  Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int)
-> String -> IO ()
forall m1 o1 c1 m2 o2 c2.
(Morphism m1 o1, FiniteCategory c1 m1 o1, Eq o1, Eq m1,
 PrettyPrint m1, PrettyPrint o1, Morphism m2 o2,
 FiniteCategory c2 m2 o2, Eq o2, Eq m2, PrettyPrint m2,
 PrettyPrint o2) =>
Diagram c1 m1 o1 c2 m2 o2 -> String -> IO ()
diagToPdf2 (Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
sigmaa Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
-> Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int)
-> Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
anInstance) String
"OutputGraphViz/Examples/Functors/DataMigration/sigma_anInstance2"
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ Diagram
  Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int)
-> String
forall a. Show a => a -> String
show (Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
sigmaa Diagram
  (FunctorCategory
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (NaturalTransformation
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int))
  (FunctorCategory
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (NaturalTransformation
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
  (Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int))
-> Diagram
     (DiscreteCategory Char)
     (StarIdentity Char)
     Char
     (Ens Int)
     (Function Int)
     (Set Int)
-> Diagram
     Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
anInstance)
        
        String -> IO ()
putStrLn String
"End of Math.Functors.DataMigration.Example"