{-| 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 = \nA -t-> A -s-> A = \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"