packages feed

FiniteCategories-0.3.0.0: src/Math/Functors/DataMigration/Example.hs

{-| 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 = do
        putStrLn "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
        let d = discreteCategory (set "A")
        let f = completeDiagram Diagram{src=d,tgt=c,omap=weakMap [('A',ParallelA)],mmap = Map.empty}
        putStrLn $ pprint f 
        
        let universe = ens $ set [set[], set [1 :: Int,2], set [1]]
        let anInstance = completeDiagram Diagram{src=d,tgt=universe,omap=weakMap [('A',set [1])],mmap=Map.empty}
        putStrLn $ pprint anInstance 
        putStrLn $ pprint anInstance 
        
        let pii = (piFunctor universe f)
        putStrLn $ pprint (pii ->$ anInstance) 
        putStrLn $ pprint (pii ->$ anInstance) 
        putStrLn $ show (pii ->$ anInstance)
        
        let sigmaa = (sigmaFunctor universe f)
        putStrLn $ pprint (sigmaa ->$ anInstance) 
        putStrLn $ pprint (sigmaa ->$ anInstance) 
        putStrLn $ show (sigmaa ->$ anInstance)
        
        putStrLn "End of Math.Functors.DataMigration.Example"