packages feed

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

{-| 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 = 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)))}
        -- 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
        let d = discreteCategory (set "A")
        let f = completeDiagram Diagram{src=d,tgt=c,omap=weakMap [('A',ParallelA)],mmap = Map.empty}
        diagToPdf f "OutputGraphViz/Examples/Functors/DataMigration/functor"
        
        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}
        diagToPdf anInstance "OutputGraphViz/Examples/Functors/DataMigration/anInstance"
        diagToPdf2 anInstance "OutputGraphViz/Examples/Functors/DataMigration/anInstance2"
        
        let pii = (piFunctor universe f)
        diagToPdf (pii ->$ anInstance) "OutputGraphViz/Examples/Functors/DataMigration/pi_anInstance1"
        diagToPdf2 (pii ->$ anInstance) "OutputGraphViz/Examples/Functors/DataMigration/pi_anInstance2"
        putStrLn $ show (pii ->$ anInstance)
        
        let sigmaa = (sigmaFunctor universe f)
        diagToPdf (sigmaa ->$ anInstance) "OutputGraphViz/Examples/Functors/DataMigration/sigma_anInstance1"
        diagToPdf2 (sigmaa ->$ anInstance) "OutputGraphViz/Examples/Functors/DataMigration/sigma_anInstance2"
        putStrLn $ show (sigmaa ->$ anInstance)
        
        putStrLn "End of Math.Functors.DataMigration.Example"