refactor Morphisms.gf and InitialAndTerminal.gf

This commit is contained in:
krasimir
2010-03-15 10:43:20 +00:00
parent 52d5967008
commit 77be515422
2 changed files with 49 additions and 27 deletions

View File

@@ -1,35 +1,44 @@
abstract InitialAndTerminal = Morphisms ** { abstract InitialAndTerminal = Morphisms ** {
cat Initial (c : Category) ; cat Initial ({c} : Category) (El c) ;
data initial : ({c} : Category) data initial : ({c} : Category)
-> (x : El c) -> (x : El c)
-> ((y : El c) -> Arrow x y) -> ((y : El c) -> Arrow x y)
-> Initial c ; -> Initial x ;
fun initEl : ({c} : Category) fun initAr : ({c} : Category)
-> Initial c -> ({x} : El c)
-> El c ; -> Initial x
def initEl {c} (initial {c} x f) = x ; -> (y : El c)
-> Arrow x y ;
def initAr {c} {x} (initial {c} x f) y = f y ;
fun initials2iso : ({c} : Category) fun initials2iso : ({c} : Category)
-> ({x,y} : Initial c) -> ({x,y} : El c)
-> Iso (initEl x) (initEl y) ; -> (ix : Initial x)
-> (iy : Initial y)
-> Iso (initAr ix y) (initAr iy x) ;
-- def initials2iso = .. ; -- def initials2iso = .. ;
cat Terminal (c : Category) ;
cat Terminal ({c} : Category) (El c) ;
data terminal : ({c} : Category) data terminal : ({c} : Category)
-> (y : El c) -> (y : El c)
-> ((x : El c) -> Arrow x y) -> ((x : El c) -> Arrow x y)
-> Terminal c ; -> Terminal y ;
fun termEl : ({c} : Category) fun terminalAr : ({c} : Category)
-> Terminal c -> (x : El c)
-> El c ; -> ({y} : El c)
def termEl {c} (terminal {c} x f) = x ; -> Terminal y
-> Arrow x y ;
def terminalAr {c} x {y} (terminal {c} y f) = f x ;
fun terminals2iso : ({c} : Category) fun terminals2iso : ({c} : Category)
-> ({x,y} : Terminal c) -> ({x,y} : El c)
-> Iso (termEl x) (termEl y) ; -> (tx : Terminal x)
-> (ty : Terminal y)
-> Iso (terminalAr x ty) (terminalAr y tx) ;
-- def terminals2iso = .. ; -- def terminals2iso = .. ;
} }

View File

@@ -1,6 +1,6 @@
abstract Morphisms = Categories ** { abstract Morphisms = Categories ** {
cat Iso ({c} : Category) (x,y : El c) ; cat Iso ({c} : Category) ({x,y} : El c) (Arrow x y) (Arrow y x) ;
data iso : ({c} : Category) data iso : ({c} : Category)
-> ({x,y} : El c) -> ({x,y} : El c)
@@ -8,12 +8,23 @@ data iso : ({c} : Category)
-> (g : Arrow y x) -> (g : Arrow y x)
-> (EqAr (comp f g) (id y)) -> (EqAr (comp f g) (id y))
-> (EqAr (comp g f) (id x)) -> (EqAr (comp g f) (id x))
-> Iso x y ; -> Iso f g ;
fun isoOp : ({c} : Category)
-> ({x,y} : El c)
-> ({f} : Arrow x y)
-> ({g} : Arrow y x)
-> Iso f g
-> Iso (opAr g) (opAr f) ;
def isoOp {c} {x} {y} {f} {g} (iso {c} {x} {y} f g id_fg id_gf) =
iso {Op c} (opAr g) (opAr f) (eqOp id_fg) (eqOp id_gf) ;
fun iso2mono : ({c} : Category) fun iso2mono : ({c} : Category)
-> ({x,y} : El c) -> ({x,y} : El c)
-> (Iso x y -> Mono x y) ; -> ({f} : Arrow x y)
def iso2mono {c} {x} {y} (iso {c} {x} {y} f g id_fg id_gf) = -> ({g} : Arrow y x)
-> (Iso f g -> Mono f) ;
def iso2mono {c} {x} {y} {f} {g} (iso {c} {x} {y} f g id_fg id_gf) =
mono f (\h,m,eq_fh_fm -> mono f (\h,m,eq_fh_fm ->
eqSym (eqTran (eqIdR m) -- h = m eqSym (eqTran (eqIdR m) -- h = m
(eqTran (eqCompR id_gf m) -- id . m = h (eqTran (eqCompR id_gf m) -- id . m = h
@@ -26,8 +37,10 @@ def iso2mono {c} {x} {y} (iso {c} {x} {y} f g id_fg id_gf) =
fun iso2epi : ({c} : Category) fun iso2epi : ({c} : Category)
-> ({x,y} : El c) -> ({x,y} : El c)
-> (Iso x y -> Epi x y) ; -> ({f} : Arrow x y)
def iso2epi {c} {x} {y} (iso {c} {x} {y} f g id_fg id_gf) = -> ({g} : Arrow y x)
-> (Iso f g -> Epi f) ;
def iso2epi {c} {x} {y} {f} {g} (iso {c} {x} {y} f g id_fg id_gf) =
epi {c} {x} {y} f (\{z},h,m,eq_hf_mf -> epi {c} {x} {y} f (\{z},h,m,eq_hf_mf ->
eqSym (eqTran (eqIdL m) -- h = m eqSym (eqTran (eqIdL m) -- h = m
(eqTran (eqCompL m id_fg) -- m . id = h (eqTran (eqCompL m id_fg) -- m . id = h
@@ -38,21 +51,21 @@ def iso2epi {c} {x} {y} (iso {c} {x} {y} f g id_fg id_gf) =
(eqCompR eq_hf_mf g))))))))) ; -- (h . f) . g = (m . f) . g (eqCompR eq_hf_mf g))))))))) ; -- (h . f) . g = (m . f) . g
-- h . f = m . f -- h . f = m . f
cat Mono ({c} : Category) (x,y : El c) ; cat Mono ({c} : Category) ({x,y} : El c) (Arrow x y) ;
data mono : ({c} : Category) data mono : ({c} : Category)
-> ({x,y} : El c) -> ({x,y} : El c)
-> (f : Arrow x y) -> (f : Arrow x y)
-> (({z} : El c) -> (h,m : Arrow z x) -> EqAr (comp f h) (comp f m) -> EqAr h m) -> (({z} : El c) -> (h,m : Arrow z x) -> EqAr (comp f h) (comp f m) -> EqAr h m)
-> Mono x y ; -> Mono f ;
cat Epi ({c} : Category) (x,y : El c) ; cat Epi ({c} : Category) ({x,y} : El c) (Arrow x y) ;
data epi : ({c} : Category) data epi : ({c} : Category)
-> ({x,y} : El c) -> ({x,y} : El c)
-> (f : Arrow x y) -> (f : Arrow x y)
-> (({z} : El c) -> (h,m : Arrow y z) -> EqAr (comp h f) (comp m f) -> EqAr h m) -> (({z} : El c) -> (h,m : Arrow y z) -> EqAr (comp h f) (comp m f) -> EqAr h m)
-> Epi x y ; -> Epi f ;
} }