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"