definition
attr c1 is
strict ;
struct ProdCatStr -> CatStr ;
aggr ProdCatStr(#
carrier,
carrier',
Source,
Target,
Comp,
TerminalObj,
CatProd,
Proj1,
Proj2 #)
-> ProdCatStr ;
sel TerminalObj c1 -> Element of the
carrier of
c1;
sel CatProd c1 -> Function of
[: the carrier of c1, the carrier of c1:], the
carrier of
c1;
sel Proj1 c1 -> Function of
[: the carrier of c1, the carrier of c1:], the
carrier' of
c1;
sel Proj2 c1 -> Function of
[: the carrier of c1, the carrier of c1:], the
carrier' of
c1;
end;
definition
let o,
m be
set ;
func c1Cat (
o,
m)
-> strict ProdCatStr equals
ProdCatStr(#
{o},
{m},
(m :-> o),
(m :-> o),
((m,m) :-> m),
(Extract o),
((o,o) :-> o),
((o,o) :-> m),
((o,o) :-> m) #);
correctness
coherence
ProdCatStr(# {o},{m},(m :-> o),(m :-> o),((m,m) :-> m),(Extract o),((o,o) :-> o),((o,o) :-> m),((o,o) :-> m) #) is strict ProdCatStr ;
;
end;
::
deftheorem defines
c1Cat CAT_4:def 7 :
for o, m being set holds c1Cat (o,m) = ProdCatStr(# {o},{m},(m :-> o),(m :-> o),((m,m) :-> m),(Extract o),((o,o) :-> o),((o,o) :-> m),((o,o) :-> m) #);
theorem
for
o,
m being
set holds
CatStr(# the
carrier of
(c1Cat (o,m)), the
carrier' of
(c1Cat (o,m)), the
Source of
(c1Cat (o,m)), the
Target of
(c1Cat (o,m)), the
Comp of
(c1Cat (o,m)) #)
= 1Cat (
o,
m) ;
Lm1:
for o, m being set holds c1Cat (o,m) is Category-like
definition
let C be
Cartesian_category;
let a,
b,
c be
Object of
C;
let f be
Morphism of
c,
a;
let g be
Morphism of
c,
b;
assume A1:
(
Hom (
c,
a)
<> {} &
Hom (
c,
b)
<> {} )
;
existence
ex b1 being Morphism of c,a [x] b st
( (pr1 (a,b)) * b1 = f & (pr2 (a,b)) * b1 = g )
uniqueness
for b1, b2 being Morphism of c,a [x] b st (pr1 (a,b)) * b1 = f & (pr2 (a,b)) * b1 = g & (pr1 (a,b)) * b2 = f & (pr2 (a,b)) * b2 = g holds
b1 = b2
end;
::
deftheorem Def10 defines
<: CAT_4:def 10 :
for C being Cartesian_category
for a, b, c being Object of C
for f being Morphism of c,a
for g being Morphism of c,b st Hom (c,a) <> {} & Hom (c,b) <> {} holds
for b7 being Morphism of c,a [x] b holds
( b7 = <:f,g:> iff ( (pr1 (a,b)) * b7 = f & (pr2 (a,b)) * b7 = g ) );
theorem Th25:
for
C being
Cartesian_category for
a,
b,
c,
d being
Object of
C for
f being
Morphism of
c,
a for
g being
Morphism of
c,
b for
h being
Morphism of
d,
c st
Hom (
c,
a)
<> {} &
Hom (
c,
b)
<> {} &
Hom (
d,
c)
<> {} holds
<:(f * h),(g * h):> = <:f,g:> * h
theorem Th26:
for
C being
Cartesian_category for
a,
b,
c being
Object of
C for
f,
k being
Morphism of
c,
a for
g,
h being
Morphism of
c,
b st
Hom (
c,
a)
<> {} &
Hom (
c,
b)
<> {} &
<:f,g:> = <:k,h:> holds
(
f = k &
g = h )
definition
let C be
Cartesian_category;
let a,
b,
c be
Object of
C;
func Alpha (
a,
b,
c)
-> Morphism of
(a [x] b) [x] c,
a [x] (b [x] c) equals
<:((pr1 (a,b)) * (pr1 ((a [x] b),c))),<:((pr2 (a,b)) * (pr1 ((a [x] b),c))),(pr2 ((a [x] b),c)):>:>;
correctness
coherence
<:((pr1 (a,b)) * (pr1 ((a [x] b),c))),<:((pr2 (a,b)) * (pr1 ((a [x] b),c))),(pr2 ((a [x] b),c)):>:> is Morphism of (a [x] b) [x] c,a [x] (b [x] c);
;
func Alpha' (
a,
b,
c)
-> Morphism of
a [x] (b [x] c),
(a [x] b) [x] c equals
<:<:(pr1 (a,(b [x] c))),((pr1 (b,c)) * (pr2 (a,(b [x] c)))):>,((pr2 (b,c)) * (pr2 (a,(b [x] c)))):>;
correctness
coherence
<:<:(pr1 (a,(b [x] c))),((pr1 (b,c)) * (pr2 (a,(b [x] c)))):>,((pr2 (b,c)) * (pr2 (a,(b [x] c)))):> is Morphism of a [x] (b [x] c),(a [x] b) [x] c;
;
end;
::
deftheorem defines
Alpha CAT_4:def 17 :
for C being Cartesian_category
for a, b, c being Object of C holds Alpha (a,b,c) = <:((pr1 (a,b)) * (pr1 ((a [x] b),c))),<:((pr2 (a,b)) * (pr1 ((a [x] b),c))),(pr2 ((a [x] b),c)):>:>;
::
deftheorem defines
Alpha' CAT_4:def 18 :
for C being Cartesian_category
for a, b, c being Object of C holds Alpha' (a,b,c) = <:<:(pr1 (a,(b [x] c))),((pr1 (b,c)) * (pr2 (a,(b [x] c)))):>,((pr2 (b,c)) * (pr2 (a,(b [x] c)))):>;
theorem Th37:
for
C being
Cartesian_category for
a,
b,
c being
Object of
C holds
(
(Alpha (a,b,c)) * (Alpha' (a,b,c)) = id (a [x] (b [x] c)) &
(Alpha' (a,b,c)) * (Alpha (a,b,c)) = id ((a [x] b) [x] c) )
theorem Th41:
for
C being
Cartesian_category for
a,
b,
c,
d,
e being
Object of
C for
f being
Morphism of
a,
b for
h being
Morphism of
c,
d for
g being
Morphism of
e,
a for
k being
Morphism of
e,
c st
Hom (
a,
b)
<> {} &
Hom (
c,
d)
<> {} &
Hom (
e,
a)
<> {} &
Hom (
e,
c)
<> {} holds
(f [x] h) * <:g,k:> = <:(f * g),(h * k):>
theorem
for
C being
Cartesian_category for
a,
b,
c,
d,
e,
s being
Object of
C for
f being
Morphism of
a,
b for
h being
Morphism of
c,
d for
g being
Morphism of
e,
a for
k being
Morphism of
s,
c st
Hom (
a,
b)
<> {} &
Hom (
c,
d)
<> {} &
Hom (
e,
a)
<> {} &
Hom (
s,
c)
<> {} holds
(f [x] h) * (g [x] k) = (f * g) [x] (h * k)
definition
attr c1 is
strict ;
struct CoprodCatStr -> CatStr ;
aggr CoprodCatStr(#
carrier,
carrier',
Source,
Target,
Comp,
Initial,
Coproduct,
Incl1,
Incl2 #)
-> CoprodCatStr ;
sel Initial c1 -> Element of the
carrier of
c1;
sel Coproduct c1 -> Function of
[: the carrier of c1, the carrier of c1:], the
carrier of
c1;
sel Incl1 c1 -> Function of
[: the carrier of c1, the carrier of c1:], the
carrier' of
c1;
sel Incl2 c1 -> Function of
[: the carrier of c1, the carrier of c1:], the
carrier' of
c1;
end;
definition
let o,
m be
set ;
func c1Cat* (
o,
m)
-> strict CoprodCatStr equals
CoprodCatStr(#
{o},
{m},
(m :-> o),
(m :-> o),
((m,m) :-> m),
(Extract o),
((o,o) :-> o),
((o,o) :-> m),
((o,o) :-> m) #);
correctness
coherence
CoprodCatStr(# {o},{m},(m :-> o),(m :-> o),((m,m) :-> m),(Extract o),((o,o) :-> o),((o,o) :-> m),((o,o) :-> m) #) is strict CoprodCatStr ;
;
end;
::
deftheorem defines
c1Cat* CAT_4:def 25 :
for o, m being set holds c1Cat* (o,m) = CoprodCatStr(# {o},{m},(m :-> o),(m :-> o),((m,m) :-> m),(Extract o),((o,o) :-> o),((o,o) :-> m),((o,o) :-> m) #);
Lm2:
for o, m being set holds c1Cat* (o,m) is Category-like
definition
let C be
Cocartesian_category;
let a,
b,
c be
Object of
C;
let f be
Morphism of
a,
c;
let g be
Morphism of
b,
c;
assume A1:
(
Hom (
a,
c)
<> {} &
Hom (
b,
c)
<> {} )
;
existence
ex b1 being Morphism of a + b,c st
( b1 * (in1 (a,b)) = f & b1 * (in2 (a,b)) = g )
uniqueness
for b1, b2 being Morphism of a + b,c st b1 * (in1 (a,b)) = f & b1 * (in2 (a,b)) = g & b2 * (in1 (a,b)) = f & b2 * (in2 (a,b)) = g holds
b1 = b2
end;
::
deftheorem Def28 defines
[$ CAT_4:def 28 :
for C being Cocartesian_category
for a, b, c being Object of C
for f being Morphism of a,c
for g being Morphism of b,c st Hom (a,c) <> {} & Hom (b,c) <> {} holds
for b7 being Morphism of a + b,c holds
( b7 = [$f,g$] iff ( b7 * (in1 (a,b)) = f & b7 * (in2 (a,b)) = g ) );
theorem Th67:
for
C being
Cocartesian_category for
a,
b,
c,
d being
Object of
C for
f being
Morphism of
a,
c for
g being
Morphism of
b,
c for
h being
Morphism of
c,
d st
Hom (
a,
c)
<> {} &
Hom (
b,
c)
<> {} &
Hom (
c,
d)
<> {} holds
[$(h * f),(h * g)$] = h * [$f,g$]
theorem Th68:
for
C being
Cocartesian_category for
a,
b,
c being
Object of
C for
f,
k being
Morphism of
a,
c for
g,
h being
Morphism of
b,
c st
Hom (
a,
c)
<> {} &
Hom (
b,
c)
<> {} &
[$f,g$] = [$k,h$] holds
(
f = k &
g = h )
theorem Th75:
for
C being
Cocartesian_category for
a,
b,
c,
d,
e being
Object of
C for
f being
Morphism of
a,
c for
h being
Morphism of
b,
d for
g being
Morphism of
c,
e for
k being
Morphism of
d,
e st
Hom (
a,
c)
<> {} &
Hom (
b,
d)
<> {} &
Hom (
c,
e)
<> {} &
Hom (
d,
e)
<> {} holds
[$g,k$] * (f + h) = [$(g * f),(k * h)$]
theorem
for
C being
Cocartesian_category for
a,
b,
c,
d,
e,
s being
Object of
C for
f being
Morphism of
a,
c for
h being
Morphism of
b,
d for
g being
Morphism of
c,
e for
k being
Morphism of
d,
s st
Hom (
a,
c)
<> {} &
Hom (
b,
d)
<> {} &
Hom (
c,
e)
<> {} &
Hom (
d,
s)
<> {} holds
(g + k) * (f + h) = (g * f) + (k * h)