:: ISOCAT_2 semantic presentation
theorem Th1: :: ISOCAT_2:1
theorem Th2: :: ISOCAT_2:2
theorem Th3: :: ISOCAT_2:3
theorem Th4: :: ISOCAT_2:4
theorem Th5: :: ISOCAT_2:5
theorem Th6: :: ISOCAT_2:6
theorem Th7: :: ISOCAT_2:7
theorem Th8: :: ISOCAT_2:8
theorem Th9: :: ISOCAT_2:9
definition
let c1,
c2 be
Category;
let c3 be
Object of
c1;
func c3 |-> c2 -> Functor of
Functors a1,
a2,
a2 means :
Def1:
:: ISOCAT_2:def 1
for
b1,
b2 being
Functor of
a1,
a2 for
b3 being
natural_transformation of
b1,
b2 st
b1 is_naturally_transformable_to b2 holds
a4 . [[b1,b2],b3] = b3 . a3;
existence
ex b1 being Functor of Functors c1,c2,c2 st
for b2, b3 being Functor of c1,c2
for b4 being natural_transformation of b2,b3 st b2 is_naturally_transformable_to b3 holds
b1 . [[b2,b3],b4] = b4 . c3
uniqueness
for b1, b2 being Functor of Functors c1,c2,c2 st ( for b3, b4 being Functor of c1,c2
for b5 being natural_transformation of b3,b4 st b3 is_naturally_transformable_to b4 holds
b1 . [[b3,b4],b5] = b5 . c3 ) & ( for b3, b4 being Functor of c1,c2
for b5 being natural_transformation of b3,b4 st b3 is_naturally_transformable_to b4 holds
b2 . [[b3,b4],b5] = b5 . c3 ) holds
b1 = b2
end;
:: deftheorem Def1 defines |-> ISOCAT_2:def 1 :
Lemma11:
for b1, b2 being set holds
( the Objects of (1Cat b1,b2) = {b1} & the Morphisms of (1Cat b1,b2) = {b2} )
theorem Th10: :: ISOCAT_2:10
canceled;
theorem Th11: :: ISOCAT_2:11
theorem Th12: :: ISOCAT_2:12
theorem Th13: :: ISOCAT_2:13
theorem Th14: :: ISOCAT_2:14
for
b1,
b2 being
Category for
b3,
b4 being
Object of
b1 for
b5,
b6 being
Object of
b2 st
Hom [b3,b5],
[b4,b6] <> {} holds
for
b7 being
Morphism of
b1 for
b8 being
Morphism of
b2 holds
(
[b7,b8] is
Morphism of
[b3,b5],
[b4,b6] iff (
b7 is
Morphism of
b3,
b4 &
b8 is
Morphism of
b5,
b6 ) )
theorem Th15: :: ISOCAT_2:15
:: deftheorem Def2 defines curry ISOCAT_2:def 2 :
theorem Th16: :: ISOCAT_2:16
theorem Th17: :: ISOCAT_2:17
:: deftheorem Def3 defines ?- ISOCAT_2:def 3 :
theorem Th18: :: ISOCAT_2:18
theorem Th19: :: ISOCAT_2:19
theorem Th20: :: ISOCAT_2:20
theorem Th21: :: ISOCAT_2:21
definition
let c1,
c2,
c3 be
Category;
let c4 be
Functor of
[:c1,c2:],
c3;
func export c4 -> Functor of
a1,
Functors a2,
a3 means :
Def4:
:: ISOCAT_2:def 4
for
b1 being
Morphism of
a1 holds
a5 . b1 = [[(a4 ?- (dom b1)),(a4 ?- (cod b1))],(a4 ?- b1)];
existence
ex b1 being Functor of c1, Functors c2,c3 st
for b2 being Morphism of c1 holds b1 . b2 = [[(c4 ?- (dom b2)),(c4 ?- (cod b2))],(c4 ?- b2)]
uniqueness
for b1, b2 being Functor of c1, Functors c2,c3 st ( for b3 being Morphism of c1 holds b1 . b3 = [[(c4 ?- (dom b3)),(c4 ?- (cod b3))],(c4 ?- b3)] ) & ( for b3 being Morphism of c1 holds b2 . b3 = [[(c4 ?- (dom b3)),(c4 ?- (cod b3))],(c4 ?- b3)] ) holds
b1 = b2
end;
:: deftheorem Def4 defines export ISOCAT_2:def 4 :
Lemma23:
for b1, b2 being Category
for b3, b4 being Functor of b1,b2 st b3 is_transformable_to b4 holds
for b5 being transformation of b3,b4
for b6 being Object of b1 holds b5 . b6 in Hom (b3 . b6),(b4 . b6)
theorem Th22: :: ISOCAT_2:22
canceled;
theorem Th23: :: ISOCAT_2:23
canceled;
theorem Th24: :: ISOCAT_2:24
theorem Th25: :: ISOCAT_2:25
theorem Th26: :: ISOCAT_2:26
theorem Th27: :: ISOCAT_2:27
for
b1,
b2,
b3 being
Category for
b4,
b5 being
Functor of
[:b1,b2:],
b3 st
b4 is_naturally_transformable_to b5 holds
for
b6 being
natural_transformation of
b4,
b5 holds
(
export b4 is_naturally_transformable_to export b5 & ex
b7 being
natural_transformation of
export b4,
export b5 st
for
b8 being
Function of
[:the Objects of b1,the Objects of b2:],the
Morphisms of
b3 st
b6 = b8 holds
for
b9 being
Object of
b1 holds
b7 . b9 = [[((export b4) . b9),((export b5) . b9)],((curry b8) . b9)] )
definition
let c1,
c2,
c3 be
Category;
let c4,
c5 be
Functor of
[:c1,c2:],
c3;
assume E28:
c4 is_naturally_transformable_to c5
;
let c6 be
natural_transformation of
c4,
c5;
func export c6 -> natural_transformation of
export a4,
export a5 means :
Def5:
:: ISOCAT_2:def 5
for
b1 being
Function of
[:the Objects of a1,the Objects of a2:],the
Morphisms of
a3 st
a6 = b1 holds
for
b2 being
Object of
a1 holds
a7 . b2 = [[((export a4) . b2),((export a5) . b2)],((curry b1) . b2)];
existence
ex b1 being natural_transformation of export c4, export c5 st
for b2 being Function of [:the Objects of c1,the Objects of c2:],the Morphisms of c3 st c6 = b2 holds
for b3 being Object of c1 holds b1 . b3 = [[((export c4) . b3),((export c5) . b3)],((curry b2) . b3)]
by E28, Th27;
uniqueness
for b1, b2 being natural_transformation of export c4, export c5 st ( for b3 being Function of [:the Objects of c1,the Objects of c2:],the Morphisms of c3 st c6 = b3 holds
for b4 being Object of c1 holds b1 . b4 = [[((export c4) . b4),((export c5) . b4)],((curry b3) . b4)] ) & ( for b3 being Function of [:the Objects of c1,the Objects of c2:],the Morphisms of c3 st c6 = b3 holds
for b4 being Object of c1 holds b2 . b4 = [[((export c4) . b4),((export c5) . b4)],((curry b3) . b4)] ) holds
b1 = b2
end;
:: deftheorem Def5 defines export ISOCAT_2:def 5 :
for
b1,
b2,
b3 being
Category for
b4,
b5 being
Functor of
[:b1,b2:],
b3 st
b4 is_naturally_transformable_to b5 holds
for
b6 being
natural_transformation of
b4,
b5 for
b7 being
natural_transformation of
export b4,
export b5 holds
(
b7 = export b6 iff for
b8 being
Function of
[:the Objects of b1,the Objects of b2:],the
Morphisms of
b3 st
b6 = b8 holds
for
b9 being
Object of
b1 holds
b7 . b9 = [[((export b4) . b9),((export b5) . b9)],((curry b8) . b9)] );
theorem Th28: :: ISOCAT_2:28
theorem Th29: :: ISOCAT_2:29
theorem Th30: :: ISOCAT_2:30
theorem Th31: :: ISOCAT_2:31
theorem Th32: :: ISOCAT_2:32
definition
let c1,
c2,
c3 be
Category;
func export c1,
c2,
c3 -> Functor of
Functors [:a1,a2:],
a3,
Functors a1,
(Functors a2,a3) means :
Def6:
:: ISOCAT_2:def 6
for
b1,
b2 being
Functor of
[:a1,a2:],
a3 st
b1 is_naturally_transformable_to b2 holds
for
b3 being
natural_transformation of
b1,
b2 holds
a4 . [[b1,b2],b3] = [[(export b1),(export b2)],(export b3)];
existence
ex b1 being Functor of Functors [:c1,c2:],c3, Functors c1,(Functors c2,c3) st
for b2, b3 being Functor of [:c1,c2:],c3 st b2 is_naturally_transformable_to b3 holds
for b4 being natural_transformation of b2,b3 holds b1 . [[b2,b3],b4] = [[(export b2),(export b3)],(export b4)]
uniqueness
for b1, b2 being Functor of Functors [:c1,c2:],c3, Functors c1,(Functors c2,c3) st ( for b3, b4 being Functor of [:c1,c2:],c3 st b3 is_naturally_transformable_to b4 holds
for b5 being natural_transformation of b3,b4 holds b1 . [[b3,b4],b5] = [[(export b3),(export b4)],(export b5)] ) & ( for b3, b4 being Functor of [:c1,c2:],c3 st b3 is_naturally_transformable_to b4 holds
for b5 being natural_transformation of b3,b4 holds b2 . [[b3,b4],b5] = [[(export b3),(export b4)],(export b5)] ) holds
b1 = b2
end;
:: deftheorem Def6 defines export ISOCAT_2:def 6 :
for
b1,
b2,
b3 being
Category for
b4 being
Functor of
Functors [:b1,b2:],
b3,
Functors b1,
(Functors b2,b3) holds
(
b4 = export b1,
b2,
b3 iff for
b5,
b6 being
Functor of
[:b1,b2:],
b3 st
b5 is_naturally_transformable_to b6 holds
for
b7 being
natural_transformation of
b5,
b6 holds
b4 . [[b5,b6],b7] = [[(export b5),(export b6)],(export b7)] );
theorem Th33: :: ISOCAT_2:33
theorem Th34: :: ISOCAT_2:34
theorem Th35: :: ISOCAT_2:35
definition
let c1,
c2 be
Category;
redefine func pr1 as
pr1 c1,
c2 -> Functor of
[:a1,a2:],
a1;
coherence
pr1 c1,c2 is Functor of [:c1,c2:],c1
;
redefine func pr2 as
pr2 c1,
c2 -> Functor of
[:a1,a2:],
a2;
coherence
pr2 c1,c2 is Functor of [:c1,c2:],c2
;
end;
definition
let c1,
c2,
c3 be
Category;
let c4 be
Functor of
c1,
c2;
let c5 be
Functor of
c1,
c3;
redefine func <: as
<:c4,c5:> -> Functor of
a1,
[:a2,a3:];
coherence
<:c4,c5:> is Functor of c1,[:c2,c3:]
end;
definition
let c1,
c2,
c3 be
Category;
let c4 be
Functor of
c1,
[:c2,c3:];
func Pr1 c4 -> Functor of
a1,
a2 equals :: ISOCAT_2:def 7
(pr1 a2,a3) * a4;
correctness
coherence
(pr1 c2,c3) * c4 is Functor of c1,c2;
;
func Pr2 c4 -> Functor of
a1,
a3 equals :: ISOCAT_2:def 8
(pr2 a2,a3) * a4;
correctness
coherence
(pr2 c2,c3) * c4 is Functor of c1,c3;
;
end;
:: deftheorem Def7 defines Pr1 ISOCAT_2:def 7 :
:: deftheorem Def8 defines Pr2 ISOCAT_2:def 8 :
theorem Th36: :: ISOCAT_2:36
theorem Th37: :: ISOCAT_2:37
definition
let c1,
c2,
c3 be
Category;
let c4,
c5 be
Functor of
c1,
[:c2,c3:];
let c6 be
natural_transformation of
c4,
c5;
func Pr1 c6 -> natural_transformation of
Pr1 a4,
Pr1 a5 equals :: ISOCAT_2:def 9
(pr1 a2,a3) * a6;
coherence
(pr1 c2,c3) * c6 is natural_transformation of Pr1 c4, Pr1 c5
;
func Pr2 c6 -> natural_transformation of
Pr2 a4,
Pr2 a5 equals :: ISOCAT_2:def 10
(pr2 a2,a3) * a6;
coherence
(pr2 c2,c3) * c6 is natural_transformation of Pr2 c4, Pr2 c5
;
end;
:: deftheorem Def9 defines Pr1 ISOCAT_2:def 9 :
:: deftheorem Def10 defines Pr2 ISOCAT_2:def 10 :
theorem Th38: :: ISOCAT_2:38
theorem Th39: :: ISOCAT_2:39
theorem Th40: :: ISOCAT_2:40
theorem Th41: :: ISOCAT_2:41
Lemma43:
for b1, b2, b3 being Category
for b4, b5 being Functor of b1,b2
for b6, b7 being Functor of b1,b3 st b4 is_transformable_to b5 & b6 is_transformable_to b7 holds
for b8 being transformation of b4,b5
for b9 being transformation of b6,b7
for b10 being Object of b1 holds <:b8,b9:> . b10 = [(b8 . b10),(b9 . b10)]
theorem Th42: :: ISOCAT_2:42
theorem Th43: :: ISOCAT_2:43
Lemma46:
for b1, b2, b3 being Category
for b4, b5 being Functor of b1,b2
for b6, b7 being Functor of b1,b3 st b4 is_transformable_to b5 & b6 is_transformable_to b7 holds
for b8 being transformation of b4,b5
for b9 being transformation of b6,b7
for b10 being Object of b1 holds <:b8,b9:> . b10 in Hom (<:b4,b6:> . b10),(<:b5,b7:> . b10)
theorem Th44: :: ISOCAT_2:44
definition
let c1,
c2,
c3 be
Category;
let c4,
c5 be
Functor of
c1,
c2;
let c6,
c7 be
Functor of
c1,
c3;
assume E48:
(
c4 is_transformable_to c5 &
c6 is_transformable_to c7 )
;
let c8 be
transformation of
c4,
c5;
let c9 be
transformation of
c6,
c7;
func <:c8,c9:> -> transformation of
<:a4,a6:>,
<:a5,a7:> equals :
Def11:
:: ISOCAT_2:def 11
<:a8,a9:>;
coherence
<:c8,c9:> is transformation of <:c4,c6:>,<:c5,c7:>
end;
:: deftheorem Def11 defines <: ISOCAT_2:def 11 :
for
b1,
b2,
b3 being
Category for
b4,
b5 being
Functor of
b1,
b2 for
b6,
b7 being
Functor of
b1,
b3 st
b4 is_transformable_to b5 &
b6 is_transformable_to b7 holds
for
b8 being
transformation of
b4,
b5 for
b9 being
transformation of
b6,
b7 holds
<:b8,b9:> = <:b8,b9:>;
theorem Th45: :: ISOCAT_2:45
for
b1,
b2,
b3 being
Category for
b4,
b5 being
Functor of
b1,
b2 for
b6,
b7 being
Functor of
b1,
b3 st
b4 is_transformable_to b5 &
b6 is_transformable_to b7 holds
for
b8 being
transformation of
b4,
b5 for
b9 being
transformation of
b6,
b7 for
b10 being
Object of
b1 holds
<:b8,b9:> . b10 = [(b8 . b10),(b9 . b10)]
Lemma50:
for b1, b2, b3 being Category
for b4, b5 being Functor of b1,b2
for b6, b7 being Functor of b1,b3 st b4 is_naturally_transformable_to b5 & b6 is_naturally_transformable_to b7 holds
for b8 being natural_transformation of b4,b5
for b9 being natural_transformation of b6,b7
for b10, b11 being Object of b1 st Hom b10,b11 <> {} holds
for b12 being Morphism of b10,b11 holds (<:b8,b9:> . b11) * (<:b4,b6:> . b12) = (<:b5,b7:> . b12) * (<:b8,b9:> . b10)
theorem Th46: :: ISOCAT_2:46
definition
let c1,
c2,
c3 be
Category;
let c4,
c5 be
Functor of
c1,
c2;
let c6,
c7 be
Functor of
c1,
c3;
assume that E52:
c4 is_naturally_transformable_to c5
and E53:
c6 is_naturally_transformable_to c7
;
let c8 be
natural_transformation of
c4,
c5;
let c9 be
natural_transformation of
c6,
c7;
func <:c8,c9:> -> natural_transformation of
<:a4,a6:>,
<:a5,a7:> equals :
Def12:
:: ISOCAT_2:def 12
<:a8,a9:>;
coherence
<:c8,c9:> is natural_transformation of <:c4,c6:>,<:c5,c7:>
end;
:: deftheorem Def12 defines <: ISOCAT_2:def 12 :
for
b1,
b2,
b3 being
Category for
b4,
b5 being
Functor of
b1,
b2 for
b6,
b7 being
Functor of
b1,
b3 st
b4 is_naturally_transformable_to b5 &
b6 is_naturally_transformable_to b7 holds
for
b8 being
natural_transformation of
b4,
b5 for
b9 being
natural_transformation of
b6,
b7 holds
<:b8,b9:> = <:b8,b9:>;
theorem Th47: :: ISOCAT_2:47
for
b1,
b2,
b3 being
Category for
b4,
b5 being
Functor of
b1,
b2 for
b6,
b7 being
Functor of
b1,
b3 st
b4 is_naturally_transformable_to b5 &
b6 is_naturally_transformable_to b7 holds
for
b8 being
natural_transformation of
b4,
b5 for
b9 being
natural_transformation of
b6,
b7 holds
(
Pr1 <:b8,b9:> = b8 &
Pr2 <:b8,b9:> = b9 )
definition
let c1,
c2,
c3 be
Category;
func distribute c1,
c2,
c3 -> Functor of
Functors a1,
[:a2,a3:],
[:(Functors a1,a2),(Functors a1,a3):] means :
Def13:
:: ISOCAT_2:def 13
for
b1,
b2 being
Functor of
a1,
[:a2,a3:] st
b1 is_naturally_transformable_to b2 holds
for
b3 being
natural_transformation of
b1,
b2 holds
a4 . [[b1,b2],b3] = [[[(Pr1 b1),(Pr1 b2)],(Pr1 b3)],[[(Pr2 b1),(Pr2 b2)],(Pr2 b3)]];
existence
ex b1 being Functor of Functors c1,[:c2,c3:],[:(Functors c1,c2),(Functors c1,c3):] st
for b2, b3 being Functor of c1,[:c2,c3:] st b2 is_naturally_transformable_to b3 holds
for b4 being natural_transformation of b2,b3 holds b1 . [[b2,b3],b4] = [[[(Pr1 b2),(Pr1 b3)],(Pr1 b4)],[[(Pr2 b2),(Pr2 b3)],(Pr2 b4)]]
uniqueness
for b1, b2 being Functor of Functors c1,[:c2,c3:],[:(Functors c1,c2),(Functors c1,c3):] st ( for b3, b4 being Functor of c1,[:c2,c3:] st b3 is_naturally_transformable_to b4 holds
for b5 being natural_transformation of b3,b4 holds b1 . [[b3,b4],b5] = [[[(Pr1 b3),(Pr1 b4)],(Pr1 b5)],[[(Pr2 b3),(Pr2 b4)],(Pr2 b5)]] ) & ( for b3, b4 being Functor of c1,[:c2,c3:] st b3 is_naturally_transformable_to b4 holds
for b5 being natural_transformation of b3,b4 holds b2 . [[b3,b4],b5] = [[[(Pr1 b3),(Pr1 b4)],(Pr1 b5)],[[(Pr2 b3),(Pr2 b4)],(Pr2 b5)]] ) holds
b1 = b2
end;
:: deftheorem Def13 defines distribute ISOCAT_2:def 13 :
for
b1,
b2,
b3 being
Category for
b4 being
Functor of
Functors b1,
[:b2,b3:],
[:(Functors b1,b2),(Functors b1,b3):] holds
(
b4 = distribute b1,
b2,
b3 iff for
b5,
b6 being
Functor of
b1,
[:b2,b3:] st
b5 is_naturally_transformable_to b6 holds
for
b7 being
natural_transformation of
b5,
b6 holds
b4 . [[b5,b6],b7] = [[[(Pr1 b5),(Pr1 b6)],(Pr1 b7)],[[(Pr2 b5),(Pr2 b6)],(Pr2 b7)]] );
theorem Th48: :: ISOCAT_2:48
theorem Th49: :: ISOCAT_2:49