0 | module Control.Category
2 | import Data.Morphisms
6 | interface Category (m : o -> o -> Type) where
7 | identity : (a : o) -> m a a
8 | cmp : m b c -> m a b -> m a c
11 | Category Morphism where
13 | cmp (Mor g) (Mor f) = Mor (g . f)
16 | record Op (m : o -> o -> Type) (a : o) (b : o) where
27 | data ProdC : (m1 : o1 -> o1 -> Type) -> (m2 : o2 -> o2 -> Type) -> (o1,o2) -> (o1,o2) -> Type where
28 | MkProdC : {0 a1 : o1} -> {0 b1 : o1} -> {0 a2 : o2} -> {0 b2 : o2} -> m1 a1 b1 -> m2 a2 b2 -> ProdC m1 m2 (a1,a2) (b1,b2)
30 | proj1C : ProdC m1 m2 (a1,a2) (b1,b2) -> m1 a1 b1
31 | proj1C (MkProdC f _) = f
33 | proj2C : ProdC m1 m2 (a1,a2) (b1,b2) -> m2 a2 b2
34 | proj2C (MkProdC _ f) = f