module Math.Functors.SetValued.Example
(
main
)
where
import Math.FiniteCategory
import Math.IO.PrettyPrint
import Math.FiniteCategories
import Math.Categories.FinSet
import Math.Functors.SetValued
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
import Data.Text (pack)
main :: IO ()
main :: IO ()
main = do
String -> IO ()
putStrLn String
"Start of Math.Functors.SetValued.Example"
let Right SCG
c1 = String
-> Either (FiniteCategoryError (SCGMorphism Text Text) Text) SCG
readSCGString String
"2\nA -f-> B\nC -g-> B\n"
String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ SCG -> String
forall c m o.
(FiniteCategory c m o, Morphism m o, PrettyPrint c, PrettyPrint m,
PrettyPrint o, Eq m, Eq o) =>
c -> String
pprintFiniteCategory SCG
c1
let Right SCG
c2 = String
-> Either (FiniteCategoryError (SCGMorphism Text Text) Text) SCG
readSCGString String
"2\nA -f-> B\nC -g-> B\nB -h-> C\nA -i-> C\nC -g-> B -h-> C = <ID>\nB -h-> C -g-> B = <ID>\nA -i-> C -g-> B = A -f-> B\nA -f-> B -h-> C = A -i-> C\n"
String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ SCG -> String
forall c m o.
(FiniteCategory c m o, Morphism m o, PrettyPrint c, PrettyPrint m,
PrettyPrint o, Eq m, Eq o) =>
c -> String
pprintFiniteCategory SCG
c2
let Right SCGD
f = String
-> Either
(DiagramError
SCG (SCGMorphism Text Text) Text SCG (SCGMorphism Text Text) Text)
SCGD
readSCGDString String
"<SRC>\n2\nA -f-> B\nC -g-> B\n</SRC>\n<TGT>\n2\nA -f-> B\nC -g-> B\nB -h-> C\nA -i-> C\nC -g-> B -h-> C = <ID>\nB -h-> C -g-> B = <ID>\nA -i-> C -g-> B = A -f-> B\nA -f-> B -h-> C = A -i-> C\n</TGT>\nA -f-> B => A -f-> B\nC -g-> B => C -g-> B\n"
String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ SCGD -> String
forall a. PrettyPrint a => a -> String
pprint SCGD
f
let x :: Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet Int)
(Function Int)
(Set Int)
x = Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet Int)
(Function Int)
(Set Int)
-> Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet 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 :: SCG
src=SCG
c1,tgt :: FinSet Int
tgt=FinSet Int
forall a. FinSet a
FinSet,omap :: Map Text (Set Int)
omap=AssociationList Text (Set Int) -> Map Text (Set Int)
forall k v. AssociationList k v -> Map k v
weakMap [(String -> Text
pack String
"A",[Int] -> Set Int
forall a. [a] -> Set a
set [Int
1 :: Int]),(String -> Text
pack String
"B",[Int] -> Set Int
forall a. [a] -> Set a
set [Int
2,Int
3]),(String -> Text
pack String
"C",[Int] -> Set Int
forall a. [a] -> Set a
set [Int
4,Int
5])], mmap :: Map (SCGMorphism Text Text) (Function Int)
mmap= AssociationList (SCGMorphism Text Text) (Function Int)
-> Map (SCGMorphism Text Text) (Function Int)
forall k v. AssociationList k v -> Map k v
weakMap [(Set (SCGMorphism Text Text) -> SCGMorphism Text Text
forall a. Set a -> a
anElement (SCG -> Text -> Text -> Set (SCGMorphism Text Text)
forall c m o.
(Category c m o, Morphism m o) =>
c -> o -> o -> Set m
genAr SCG
c1 (String -> Text
pack String
"A") (String -> Text
pack String
"B")),Function{function :: Map Int Int
function=AssociationList Int Int -> Map Int Int
forall k v. AssociationList k v -> Map k v
weakMap [(Int
1,Int
2)], codomain :: Set Int
codomain = [Int] -> Set Int
forall a. [a] -> Set a
set [Int
2,Int
3]}),(Set (SCGMorphism Text Text) -> SCGMorphism Text Text
forall a. Set a -> a
anElement (SCG -> Text -> Text -> Set (SCGMorphism Text Text)
forall c m o.
(Category c m o, Morphism m o) =>
c -> o -> o -> Set m
genAr SCG
c1 (String -> Text
pack String
"C") (String -> Text
pack String
"B")),Function{function :: Map Int Int
function=AssociationList Int Int -> Map Int Int
forall k v. AssociationList k v -> Map k v
weakMap [(Int
4,Int
2),(Int
5,Int
3)], codomain :: Set Int
codomain = [Int] -> Set Int
forall a. [a] -> Set a
set [Int
2,Int
3]})]}
String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ Diagram
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory (FinSet Int) (Function Int) (Set Int))
(Function Int)
(Set Int)
-> String
forall a. PrettyPrint a => a -> String
pprint (Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet Int)
(Function Int)
(Set Int)
-> Diagram
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory (FinSet Int) (Function Int) (Set Int))
(Function Int)
(Set Int)
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq m1, Eq o1) =>
Diagram c1 m1 o1 c2 m2 o2
-> Diagram c1 m1 o1 (InheritedSubcategory c2 m2 o2) m2 o2
fullDiagram2 Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet Int)
(Function Int)
(Set Int)
x)
let (Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
ran, NaturalTransformation
SCG
(SCGMorphism Text Text)
Text
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
epsilon) = SCGD
-> Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet Int)
(Function Int)
(Set Int)
-> (Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int)),
NaturalTransformation
SCG
(SCGMorphism Text Text)
Text
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int)))
forall c1 m1 o1 c2 m2 o2 a.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
FiniteCategory c2 m2 o2, Morphism m2 o2, Eq m2, Eq o2, Eq a) =>
Diagram c1 m1 o1 c2 m2 o2
-> Diagram c1 m1 o1 (FinSet a) (Function a) (Set a)
-> (Diagram
c2
m2
o2
(FinSet (LimitObject o1 m2 a))
(Function (LimitObject o1 m2 a))
(Set (LimitObject o1 m2 a)),
NaturalTransformation
c1
m1
o1
(FinSet (LimitObject o1 m2 a))
(Function (LimitObject o1 m2 a))
(Set (LimitObject o1 m2 a)))
rightKanSetValued SCGD
f Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet Int)
(Function Int)
(Set Int)
x
String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ Diagram
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int)))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
-> String
forall a. PrettyPrint a => a -> String
pprint (Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
-> Diagram
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int)))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq m1, Eq o1) =>
Diagram c1 m1 o1 c2 m2 o2
-> Diagram c1 m1 o1 (InheritedSubcategory c2 m2 o2) m2 o2
fullDiagram2 Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
ran)
String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ Diagram
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int)))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
-> String
forall a. PrettyPrint a => a -> String
pprint (Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
-> Diagram
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int)))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq m1, Eq o1) =>
Diagram c1 m1 o1 c2 m2 o2
-> Diagram c1 m1 o1 (InheritedSubcategory c2 m2 o2) m2 o2
fullDiagram2 Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
ran)
String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ NaturalTransformation
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int)))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
-> String
forall a. PrettyPrint a => a -> String
pprint (NaturalTransformation
SCG
(SCGMorphism Text Text)
Text
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
-> NaturalTransformation
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int)))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Category c2 m2 o2, Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
NaturalTransformation c1 m1 o1 c2 m2 o2
-> NaturalTransformation
c1 m1 o1 (InheritedSubcategory c2 m2 o2) m2 o2
fullNaturalTransformation2 NaturalTransformation
SCG
(SCGMorphism Text Text)
Text
(FinSet (LimitObject Text (SCGMorphism Text Text) Int))
(Function (LimitObject Text (SCGMorphism Text Text) Int))
(Set (LimitObject Text (SCGMorphism Text Text) Int))
epsilon)
let (Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
lan, NaturalTransformation
SCG
(SCGMorphism Text Text)
Text
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
eta) = SCGD
-> Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet Int)
(Function Int)
(Set Int)
-> (Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int)),
NaturalTransformation
SCG
(SCGMorphism Text Text)
Text
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int)))
forall c1 m1 o1 c2 m2 o2 a.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
FiniteCategory c2 m2 o2, Morphism m2 o2, Eq m2, Eq o2, Eq a) =>
Diagram c1 m1 o1 c2 m2 o2
-> Diagram c1 m1 o1 (FinSet a) (Function a) (Set a)
-> (Diagram
c2
m2
o2
(FinSet (ColimitObject o1 m2 a))
(Function (ColimitObject o1 m2 a))
(Set (ColimitObject o1 m2 a)),
NaturalTransformation
c1
m1
o1
(FinSet (ColimitObject o1 m2 a))
(Function (ColimitObject o1 m2 a))
(Set (ColimitObject o1 m2 a)))
leftKanSetValued SCGD
f Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet Int)
(Function Int)
(Set Int)
x
String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ Diagram
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int)))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
-> String
forall a. PrettyPrint a => a -> String
pprint (Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
-> Diagram
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int)))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq m1, Eq o1) =>
Diagram c1 m1 o1 c2 m2 o2
-> Diagram c1 m1 o1 (InheritedSubcategory c2 m2 o2) m2 o2
fullDiagram2 Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
lan)
String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ Diagram
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int)))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
-> String
forall a. PrettyPrint a => a -> String
pprint (Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
-> Diagram
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int)))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq m1, Eq o1) =>
Diagram c1 m1 o1 c2 m2 o2
-> Diagram c1 m1 o1 (InheritedSubcategory c2 m2 o2) m2 o2
fullDiagram2 Diagram
SCG
(SCGMorphism Text Text)
Text
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
lan)
String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ NaturalTransformation
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int)))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
-> String
forall a. PrettyPrint a => a -> String
pprint (NaturalTransformation
SCG
(SCGMorphism Text Text)
Text
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
-> NaturalTransformation
SCG
(SCGMorphism Text Text)
Text
(InheritedSubcategory
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int)))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Category c2 m2 o2, Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
NaturalTransformation c1 m1 o1 c2 m2 o2
-> NaturalTransformation
c1 m1 o1 (InheritedSubcategory c2 m2 o2) m2 o2
fullNaturalTransformation2 NaturalTransformation
SCG
(SCGMorphism Text Text)
Text
(FinSet (ColimitObject Text (SCGMorphism Text Text) Int))
(Function (ColimitObject Text (SCGMorphism Text Text) Int))
(Set (ColimitObject Text (SCGMorphism Text Text) Int))
eta)
String -> IO ()
putStrLn String
"End of Math.Functors.SetValued.Example"