begin
theorem
canceled;
theorem
canceled;
theorem Th3:
theorem
canceled;
theorem Th5:
theorem Th6:
theorem
canceled;
theorem
:: deftheorem GRCAT_1:def 1 :
canceled;
:: deftheorem GRCAT_1:def 2 :
canceled;
:: deftheorem GRCAT_1:def 3 :
canceled;
:: deftheorem GRCAT_1:def 4 :
canceled;
:: deftheorem defines Morphs GRCAT_1:def 5 :
for C being Category
for O being non empty Subset of the carrier of C holds Morphs O = union { (Hom (a,b)) where a, b is Object of C : ( a in O & b in O ) } ;
definition
let C be
Category;
let O be non
empty Subset of the
carrier of
C;
func dom O -> Function of
(Morphs O),
O equals
the
Source of
C | (Morphs O);
coherence
the Source of C | (Morphs O) is Function of (Morphs O),O
by CAT_2:29;
func cod O -> Function of
(Morphs O),
O equals
the
Target of
C | (Morphs O);
coherence
the Target of C | (Morphs O) is Function of (Morphs O),O
by CAT_2:29;
func comp O -> PartFunc of
[:(Morphs O),(Morphs O):],
(Morphs O) equals
the
Comp of
C || (Morphs O);
coherence
the Comp of C || (Morphs O) is PartFunc of [:(Morphs O),(Morphs O):],(Morphs O)
by CAT_2:29;
func ID O -> Function of
O,
(Morphs O) equals
the
Id of
C | O;
coherence
the Id of C | O is Function of O,(Morphs O)
by CAT_2:29;
end;
:: deftheorem defines dom GRCAT_1:def 6 :
for C being Category
for O being non empty Subset of the carrier of C holds dom O = the Source of C | (Morphs O);
:: deftheorem defines cod GRCAT_1:def 7 :
for C being Category
for O being non empty Subset of the carrier of C holds cod O = the Target of C | (Morphs O);
:: deftheorem defines comp GRCAT_1:def 8 :
for C being Category
for O being non empty Subset of the carrier of C holds comp O = the Comp of C || (Morphs O);
:: deftheorem defines ID GRCAT_1:def 9 :
for C being Category
for O being non empty Subset of the carrier of C holds ID O = the Id of C | O;
definition
let C be
Category;
let O be non
empty Subset of the
carrier of
C;
func cat O -> Subcategory of
C equals
CatStr(#
O,
(Morphs O),
(dom O),
(cod O),
(comp O),
(ID O) #);
coherence
CatStr(# O,(Morphs O),(dom O),(cod O),(comp O),(ID O) #) is Subcategory of C
end;
:: deftheorem defines cat GRCAT_1:def 10 :
for C being Category
for O being non empty Subset of the carrier of C holds cat O = CatStr(# O,(Morphs O),(dom O),(cod O),(comp O),(ID O) #);
theorem
canceled;
theorem
:: deftheorem GRCAT_1:def 11 :
canceled;
:: deftheorem defines ZeroMap GRCAT_1:def 12 :
for G being non empty 1-sorted
for H being non empty ZeroStr holds ZeroMap (G,H) = the carrier of G --> (0. H);
:: deftheorem Def13 defines additive GRCAT_1:def 13 :
for G, H being non empty addMagma
for f being Function of G,H holds
( f is additive iff for x, y being Element of G holds f . (x + y) = (f . x) + (f . y) );
theorem
canceled;
theorem
canceled;
theorem Th13:
theorem Th14:
:: deftheorem defines dom GRCAT_1:def 14 :
for f being GroupMorphismStr holds dom f = the Source of f;
:: deftheorem defines cod GRCAT_1:def 15 :
for f being GroupMorphismStr holds cod f = the Target of f;
:: deftheorem defines fun GRCAT_1:def 16 :
for f being GroupMorphismStr holds fun f = the Fun of f;
theorem
canceled;
theorem
canceled;
theorem
:: deftheorem defines ZERO GRCAT_1:def 17 :
for G, H being AddGroup holds ZERO (G,H) = GroupMorphismStr(# G,H,(ZeroMap (G,H)) #);
:: deftheorem Def18 defines GroupMorphism-like GRCAT_1:def 18 :
for IT being GroupMorphismStr holds
( IT is GroupMorphism-like iff fun IT is additive );
theorem Th18:
:: deftheorem Def19 defines Morphism GRCAT_1:def 19 :
for G, H being AddGroup
for b3 being GroupMorphism holds
( b3 is Morphism of G,H iff ( dom b3 = G & cod b3 = H ) );
theorem Th19:
theorem Th20:
:: deftheorem defines ID GRCAT_1:def 20 :
for G being AddGroup holds ID G = GroupMorphismStr(# G,G,(id G) #);
theorem
canceled;
theorem Th22:
theorem Th23:
theorem Th24:
theorem
theorem Th26:
definition
let G,
F be
GroupMorphism;
assume A1:
dom G = cod F
;
func G * F -> strict GroupMorphism means :
Def21:
for
G1,
G2,
G3 being
AddGroup for
g being
Function of
G2,
G3 for
f being
Function of
G1,
G2 st
GroupMorphismStr(# the
Source of
G, the
Target of
G, the
Fun of
G #)
= GroupMorphismStr(#
G2,
G3,
g #) &
GroupMorphismStr(# the
Source of
F, the
Target of
F, the
Fun of
F #)
= GroupMorphismStr(#
G1,
G2,
f #) holds
it = GroupMorphismStr(#
G1,
G3,
(g * f) #);
existence
ex b1 being strict GroupMorphism st
for G1, G2, G3 being AddGroup
for g being Function of G2,G3
for f being Function of G1,G2 st GroupMorphismStr(# the Source of G, the Target of G, the Fun of G #) = GroupMorphismStr(# G2,G3,g #) & GroupMorphismStr(# the Source of F, the Target of F, the Fun of F #) = GroupMorphismStr(# G1,G2,f #) holds
b1 = GroupMorphismStr(# G1,G3,(g * f) #)
uniqueness
for b1, b2 being strict GroupMorphism st ( for G1, G2, G3 being AddGroup
for g being Function of G2,G3
for f being Function of G1,G2 st GroupMorphismStr(# the Source of G, the Target of G, the Fun of G #) = GroupMorphismStr(# G2,G3,g #) & GroupMorphismStr(# the Source of F, the Target of F, the Fun of F #) = GroupMorphismStr(# G1,G2,f #) holds
b1 = GroupMorphismStr(# G1,G3,(g * f) #) ) & ( for G1, G2, G3 being AddGroup
for g being Function of G2,G3
for f being Function of G1,G2 st GroupMorphismStr(# the Source of G, the Target of G, the Fun of G #) = GroupMorphismStr(# G2,G3,g #) & GroupMorphismStr(# the Source of F, the Target of F, the Fun of F #) = GroupMorphismStr(# G1,G2,f #) holds
b2 = GroupMorphismStr(# G1,G3,(g * f) #) ) holds
b1 = b2
end;
:: deftheorem Def21 defines * GRCAT_1:def 21 :
for G, F being GroupMorphism st dom G = cod F holds
for b3 being strict GroupMorphism holds
( b3 = G * F iff for G1, G2, G3 being AddGroup
for g being Function of G2,G3
for f being Function of G1,G2 st GroupMorphismStr(# the Source of G, the Target of G, the Fun of G #) = GroupMorphismStr(# G2,G3,g #) & GroupMorphismStr(# the Source of F, the Target of F, the Fun of F #) = GroupMorphismStr(# G1,G2,f #) holds
b3 = GroupMorphismStr(# G1,G3,(g * f) #) );
theorem
canceled;
theorem Th28:
theorem Th29:
for
G1,
G2,
G3 being
AddGroup for
G being
Morphism of
G2,
G3 for
F being
Morphism of
G1,
G2 for
g being
Function of
G2,
G3 for
f being
Function of
G1,
G2 st
G = GroupMorphismStr(#
G2,
G3,
g #) &
F = GroupMorphismStr(#
G1,
G2,
f #) holds
G * F = GroupMorphismStr(#
G1,
G3,
(g * f) #)
theorem Th30:
for
f,
g being
strict GroupMorphism st
dom g = cod f holds
ex
G1,
G2,
G3 being
AddGroup ex
f0 being
Function of
G1,
G2 ex
g0 being
Function of
G2,
G3 st
(
f = GroupMorphismStr(#
G1,
G2,
f0 #) &
g = GroupMorphismStr(#
G2,
G3,
g0 #) &
g * f = GroupMorphismStr(#
G1,
G3,
(g0 * f0) #) )
theorem Th31:
theorem Th32:
theorem Th33:
theorem Th34:
:: deftheorem Def22 defines Group_DOMAIN-like GRCAT_1:def 22 :
for IT being set holds
( IT is Group_DOMAIN-like iff for x being set st x in IT holds
x is strict AddGroup );
:: deftheorem Def23 defines GroupMorphism_DOMAIN-like GRCAT_1:def 23 :
for IT being set holds
( IT is GroupMorphism_DOMAIN-like iff for x being set st x in IT holds
x is strict GroupMorphism );
theorem
canceled;
theorem
canceled;
theorem Th37:
:: deftheorem Def24 defines GroupMorphism_DOMAIN GRCAT_1:def 24 :
for G, H being AddGroup
for b3 being GroupMorphism_DOMAIN holds
( b3 is GroupMorphism_DOMAIN of G,H iff for x being Element of b3 holds x is strict Morphism of G,H );
theorem Th38:
theorem
:: deftheorem Def25 defines MapsSet GRCAT_1:def 25 :
for G, H being 1-sorted
for b3 being set holds
( b3 is MapsSet of G,H iff for x being set st x in b3 holds
x is Function of G,H );
:: deftheorem defines Maps GRCAT_1:def 26 :
for G, H being 1-sorted holds Maps (G,H) = Funcs ( the carrier of G, the carrier of H);
definition
let G,
H be
AddGroup;
func Morphs (
G,
H)
-> GroupMorphism_DOMAIN of
G,
H means :
Def27:
for
x being
set holds
(
x in it iff
x is
strict Morphism of
G,
H );
existence
ex b1 being GroupMorphism_DOMAIN of G,H st
for x being set holds
( x in b1 iff x is strict Morphism of G,H )
uniqueness
for b1, b2 being GroupMorphism_DOMAIN of G,H st ( for x being set holds
( x in b1 iff x is strict Morphism of G,H ) ) & ( for x being set holds
( x in b2 iff x is strict Morphism of G,H ) ) holds
b1 = b2
end;
:: deftheorem Def27 defines Morphs GRCAT_1:def 27 :
for G, H being AddGroup
for b3 being GroupMorphism_DOMAIN of G,H holds
( b3 = Morphs (G,H) iff for x being set holds
( x in b3 iff x is strict Morphism of G,H ) );
:: deftheorem Def28 defines GO GRCAT_1:def 28 :
for x, y being set holds
( GO x,y iff ex x1, x2, x3, x4 being set st
( x = [x1,x2,x3,x4] & ex G being strict AddGroup st
( y = G & x1 = the carrier of G & x2 = the addF of G & x3 = comp G & x4 = 0. G ) ) );
theorem Th40:
for
x,
y1,
y2 being
set st
GO x,
y1 &
GO x,
y2 holds
y1 = y2
theorem Th41:
:: deftheorem Def29 defines GroupObjects GRCAT_1:def 29 :
for UN being Universe
for b2 being set holds
( b2 = GroupObjects UN iff for y being set holds
( y in b2 iff ex x being set st
( x in UN & GO x,y ) ) );
theorem Th42:
theorem Th43:
:: deftheorem Def30 defines Morphs GRCAT_1:def 30 :
for V being Group_DOMAIN
for b2 being GroupMorphism_DOMAIN holds
( b2 = Morphs V iff for x being set holds
( x in b2 iff ex G, H being strict Element of V st x is strict Morphism of G,H ) );
:: deftheorem defines ID GRCAT_1:def 31 :
for V being Group_DOMAIN
for G being Element of V holds ID G = ID G;
definition
let V be
Group_DOMAIN;
func dom V -> Function of
(Morphs V),
V means :
Def32:
for
f being
Element of
Morphs V holds
it . f = dom f;
existence
ex b1 being Function of (Morphs V),V st
for f being Element of Morphs V holds b1 . f = dom f
uniqueness
for b1, b2 being Function of (Morphs V),V st ( for f being Element of Morphs V holds b1 . f = dom f ) & ( for f being Element of Morphs V holds b2 . f = dom f ) holds
b1 = b2
func cod V -> Function of
(Morphs V),
V means :
Def33:
for
f being
Element of
Morphs V holds
it . f = cod f;
existence
ex b1 being Function of (Morphs V),V st
for f being Element of Morphs V holds b1 . f = cod f
uniqueness
for b1, b2 being Function of (Morphs V),V st ( for f being Element of Morphs V holds b1 . f = cod f ) & ( for f being Element of Morphs V holds b2 . f = cod f ) holds
b1 = b2
func ID V -> Function of
V,
(Morphs V) means :
Def34:
for
G being
Element of
V holds
it . G = ID G;
existence
ex b1 being Function of V,(Morphs V) st
for G being Element of V holds b1 . G = ID G
uniqueness
for b1, b2 being Function of V,(Morphs V) st ( for G being Element of V holds b1 . G = ID G ) & ( for G being Element of V holds b2 . G = ID G ) holds
b1 = b2
end;
:: deftheorem Def32 defines dom GRCAT_1:def 32 :
for V being Group_DOMAIN
for b2 being Function of (Morphs V),V holds
( b2 = dom V iff for f being Element of Morphs V holds b2 . f = dom f );
:: deftheorem Def33 defines cod GRCAT_1:def 33 :
for V being Group_DOMAIN
for b2 being Function of (Morphs V),V holds
( b2 = cod V iff for f being Element of Morphs V holds b2 . f = cod f );
:: deftheorem Def34 defines ID GRCAT_1:def 34 :
for V being Group_DOMAIN
for b2 being Function of V,(Morphs V) holds
( b2 = ID V iff for G being Element of V holds b2 . G = ID G );
theorem Th44:
theorem Th45:
definition
let V be
Group_DOMAIN;
func comp V -> PartFunc of
[:(Morphs V),(Morphs V):],
(Morphs V) means :
Def35:
( ( for
g,
f being
Element of
Morphs V holds
(
[g,f] in dom it iff
dom g = cod f ) ) & ( for
g,
f being
Element of
Morphs V st
[g,f] in dom it holds
it . (
g,
f)
= g * f ) );
existence
ex b1 being PartFunc of [:(Morphs V),(Morphs V):],(Morphs V) st
( ( for g, f being Element of Morphs V holds
( [g,f] in dom b1 iff dom g = cod f ) ) & ( for g, f being Element of Morphs V st [g,f] in dom b1 holds
b1 . (g,f) = g * f ) )
uniqueness
for b1, b2 being PartFunc of [:(Morphs V),(Morphs V):],(Morphs V) st ( for g, f being Element of Morphs V holds
( [g,f] in dom b1 iff dom g = cod f ) ) & ( for g, f being Element of Morphs V st [g,f] in dom b1 holds
b1 . (g,f) = g * f ) & ( for g, f being Element of Morphs V holds
( [g,f] in dom b2 iff dom g = cod f ) ) & ( for g, f being Element of Morphs V st [g,f] in dom b2 holds
b2 . (g,f) = g * f ) holds
b1 = b2
end;
:: deftheorem Def35 defines comp GRCAT_1:def 35 :
for V being Group_DOMAIN
for b2 being PartFunc of [:(Morphs V),(Morphs V):],(Morphs V) holds
( b2 = comp V iff ( ( for g, f being Element of Morphs V holds
( [g,f] in dom b2 iff dom g = cod f ) ) & ( for g, f being Element of Morphs V st [g,f] in dom b2 holds
b2 . (g,f) = g * f ) ) );
definition
let UN be
Universe;
func GroupCat UN -> CatStr equals
CatStr(#
(GroupObjects UN),
(Morphs (GroupObjects UN)),
(dom (GroupObjects UN)),
(cod (GroupObjects UN)),
(comp (GroupObjects UN)),
(ID (GroupObjects UN)) #);
coherence
CatStr(# (GroupObjects UN),(Morphs (GroupObjects UN)),(dom (GroupObjects UN)),(cod (GroupObjects UN)),(comp (GroupObjects UN)),(ID (GroupObjects UN)) #) is CatStr
;
end;
:: deftheorem defines GroupCat GRCAT_1:def 36 :
for UN being Universe holds GroupCat UN = CatStr(# (GroupObjects UN),(Morphs (GroupObjects UN)),(dom (GroupObjects UN)),(cod (GroupObjects UN)),(comp (GroupObjects UN)),(ID (GroupObjects UN)) #);
theorem Th46:
theorem Th47:
theorem Th48:
theorem
canceled;
theorem Th50:
Lm1:
for UN being Universe
for f, g being Morphism of (GroupCat UN) st dom g = cod f holds
( dom (g * f) = dom f & cod (g * f) = cod g )
Lm2:
for UN being Universe
for f, g, h being Morphism of (GroupCat UN) st dom h = cod g & dom g = cod f holds
h * (g * f) = (h * g) * f
Lm3:
for UN being Universe
for b being Object of (GroupCat UN) holds
( dom (id b) = b & cod (id b) = b & ( for f being Morphism of (GroupCat UN) st cod f = b holds
(id b) * f = f ) & ( for g being Morphism of (GroupCat UN) st dom g = b holds
g * (id b) = g ) )
:: deftheorem defines AbGroupObjects GRCAT_1:def 37 :
for UN being Universe holds AbGroupObjects UN = { G where G is Element of (GroupCat UN) : ex H being AbGroup st G = H } ;
theorem Th51:
:: deftheorem defines AbGroupCat GRCAT_1:def 38 :
for UN being Universe holds AbGroupCat UN = cat (AbGroupObjects UN);
theorem
:: deftheorem defines MidOpGroupObjects GRCAT_1:def 39 :
for UN being Universe holds MidOpGroupObjects UN = { G where G is Element of (AbGroupCat UN) : ex H being midpoint_operator AbGroup st G = H } ;
:: deftheorem defines MidOpGroupCat GRCAT_1:def 40 :
for UN being Universe holds MidOpGroupCat UN = cat (MidOpGroupObjects UN);
theorem
theorem
theorem
canceled;
theorem