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

An exemple of 'dataMigration' pretty printed.


-}
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.PrettyPrint
    import              Math.FiniteCategory

    
    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' pretty printed.

    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)))}

        -- putStrLn $ pprintFiniteCategory graphSketch 

        -- putStrLn $ pprintFiniteCategory autographSketch 

        -- putStrLn $ pprint f 

        -- putStrLn (show f)

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

        -- let delta = (deltaFunctor universe f)

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

        -- putStrLn $ pprint anInstance 

        -- putStrLn $ pprint (delta ->$ anInstance) 

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

        -- let pii = (piFunctor universe f)

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

        -- putStrLn $ pprint anInstance 

        -- putStrLn $ pprint (pii ->$ anInstance) 

        
        -- 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{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}
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  Parallel
  ParallelAr
  ParallelOb
-> String
forall a. PrettyPrint a => a -> String
pprint Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  Parallel
  ParallelAr
  ParallelOb
f 
        
        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{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}
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
-> String
forall a. PrettyPrint a => a -> String
pprint Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
anInstance 
        String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
-> String
forall a. PrettyPrint a => a -> String
pprint Diagram
  (DiscreteCategory Char)
  (StarIdentity Char)
  Char
  (Ens Int)
  (Function Int)
  (Set Int)
anInstance 
        
        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)
        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. PrettyPrint a => a -> String
pprint (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 -> 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. PrettyPrint a => a -> String
pprint (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 -> 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)
        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. PrettyPrint a => a -> String
pprint (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 -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ Diagram
  Parallel ParallelAr ParallelOb (Ens Int) (Function Int) (Set Int)
-> String
forall a. PrettyPrint a => a -> String
pprint (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 -> 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"