begin
Lm1:
for R being Ring holds VectSpStr(# 1,op2,op0,(pr2 ( the carrier of R,1)) #) is strict LeftMod of R
:: deftheorem MOD_2:def 1 :
canceled;
:: deftheorem defines TrivialLMod MOD_2:def 2 :
for R being Ring holds TrivialLMod R = VectSpStr(# 1,op2,op0,(pr2 ( the carrier of R,1)) #);
theorem
:: deftheorem Def3 defines homogeneous MOD_2:def 3 :
for R being non empty multMagma
for G, H being non empty VectSpStr of R
for f being Function of G,H holds
( f is homogeneous iff for a being Scalar of R
for x being Vector of G holds f . (a * x) = a * (f . x) );
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem Th5:
:: deftheorem MOD_2:def 4 :
canceled;
:: deftheorem MOD_2:def 5 :
canceled;
:: deftheorem defines dom MOD_2:def 6 :
for R being Ring
for f being LModMorphismStr of R holds dom f = the Dom of f;
:: deftheorem defines cod MOD_2:def 7 :
for R being Ring
for f being LModMorphismStr of R holds cod f = the Cod of f;
:: deftheorem defines fun MOD_2:def 8 :
for R being Ring
for f being LModMorphismStr of R holds fun f = the Fun of f;
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem
:: deftheorem defines ZERO MOD_2:def 9 :
for R being Ring
for G, H being LeftMod of R holds ZERO (G,H) = LModMorphismStr(# G,H,(ZeroMap (G,H)) #);
:: deftheorem Def10 defines LModMorphism-like MOD_2:def 10 :
for R being Ring
for IT being LModMorphismStr of R holds
( IT is LModMorphism-like iff ( fun IT is additive & fun IT is homogeneous ) );
theorem Th10:
:: deftheorem Def11 defines Morphism MOD_2:def 11 :
for R being Ring
for G, H being LeftMod of R
for b4 being LModMorphism of R holds
( b4 is Morphism of G,H iff ( dom b4 = G & cod b4 = H ) );
theorem Th11:
theorem Th12:
:: deftheorem defines ID MOD_2:def 12 :
for R being Ring
for G being LeftMod of R holds ID G = LModMorphismStr(# G,G,(id G) #);
theorem
canceled;
theorem Th14:
theorem Th15:
theorem Th16:
theorem
theorem Th18:
definition
let R be
Ring;
let G,
F be
LModMorphism of
R;
assume A1:
dom G = cod F
;
func G * F -> strict LModMorphism of
R means :
Def13:
for
G1,
G2,
G3 being
LeftMod of
R for
g being
Function of
G2,
G3 for
f being
Function of
G1,
G2 st
LModMorphismStr(# the
Dom of
G, the
Cod of
G, the
Fun of
G #)
= LModMorphismStr(#
G2,
G3,
g #) &
LModMorphismStr(# the
Dom of
F, the
Cod of
F, the
Fun of
F #)
= LModMorphismStr(#
G1,
G2,
f #) holds
it = LModMorphismStr(#
G1,
G3,
(g * f) #);
existence
ex b1 being strict LModMorphism of R st
for G1, G2, G3 being LeftMod of R
for g being Function of G2,G3
for f being Function of G1,G2 st LModMorphismStr(# the Dom of G, the Cod of G, the Fun of G #) = LModMorphismStr(# G2,G3,g #) & LModMorphismStr(# the Dom of F, the Cod of F, the Fun of F #) = LModMorphismStr(# G1,G2,f #) holds
b1 = LModMorphismStr(# G1,G3,(g * f) #)
uniqueness
for b1, b2 being strict LModMorphism of R st ( for G1, G2, G3 being LeftMod of R
for g being Function of G2,G3
for f being Function of G1,G2 st LModMorphismStr(# the Dom of G, the Cod of G, the Fun of G #) = LModMorphismStr(# G2,G3,g #) & LModMorphismStr(# the Dom of F, the Cod of F, the Fun of F #) = LModMorphismStr(# G1,G2,f #) holds
b1 = LModMorphismStr(# G1,G3,(g * f) #) ) & ( for G1, G2, G3 being LeftMod of R
for g being Function of G2,G3
for f being Function of G1,G2 st LModMorphismStr(# the Dom of G, the Cod of G, the Fun of G #) = LModMorphismStr(# G2,G3,g #) & LModMorphismStr(# the Dom of F, the Cod of F, the Fun of F #) = LModMorphismStr(# G1,G2,f #) holds
b2 = LModMorphismStr(# G1,G3,(g * f) #) ) holds
b1 = b2
end;
:: deftheorem Def13 defines * MOD_2:def 13 :
for R being Ring
for G, F being LModMorphism of R st dom G = cod F holds
for b4 being strict LModMorphism of R holds
( b4 = G * F iff for G1, G2, G3 being LeftMod of R
for g being Function of G2,G3
for f being Function of G1,G2 st LModMorphismStr(# the Dom of G, the Cod of G, the Fun of G #) = LModMorphismStr(# G2,G3,g #) & LModMorphismStr(# the Dom of F, the Cod of F, the Fun of F #) = LModMorphismStr(# G1,G2,f #) holds
b4 = LModMorphismStr(# G1,G3,(g * f) #) );
theorem
canceled;
theorem Th20:
:: deftheorem defines *' MOD_2:def 14 :
for R being Ring
for G1, G2, G3 being LeftMod of R
for G being Morphism of G2,G3
for F being Morphism of G1,G2 holds G *' F = G * F;
theorem Th21:
for
R being
Ring for
G2,
G3,
G1 being
LeftMod of
R 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 = LModMorphismStr(#
G2,
G3,
g #) &
F = LModMorphismStr(#
G1,
G2,
f #) holds
(
G *' F = LModMorphismStr(#
G1,
G3,
(g * f) #) &
G * F = LModMorphismStr(#
G1,
G3,
(g * f) #) )
theorem Th22:
for
R being
Ring for
f,
g being
strict LModMorphism of
R st
dom g = cod f holds
ex
G1,
G2,
G3 being
LeftMod of
R ex
f0 being
Function of
G1,
G2 ex
g0 being
Function of
G2,
G3 st
(
f = LModMorphismStr(#
G1,
G2,
f0 #) &
g = LModMorphismStr(#
G2,
G3,
g0 #) &
g * f = LModMorphismStr(#
G1,
G3,
(g0 * f0) #) )
theorem
theorem Th24:
theorem
theorem
theorem
canceled;
theorem Th28:
theorem Th29:
theorem Th30:
Lm2:
ex c being Element of {0,1,2} st c = 0
Lm3:
ex c being Element of {0,1,2} st c = 1
Lm4:
ex c being Element of {0,1,2} st c = 2
definition
let a be
Element of
{0,1,2};
func - a -> Element of
{0,1,2} equals :
Def15:
0 if a = 0 2
if a = 1
1
if a = 2
;
coherence
( ( a = 0 implies 0 is Element of {0,1,2} ) & ( a = 1 implies 2 is Element of {0,1,2} ) & ( a = 2 implies 1 is Element of {0,1,2} ) )
by Lm3, Lm4;
consistency
for b1 being Element of {0,1,2} holds
( ( a = 0 & a = 1 implies ( b1 = 0 iff b1 = 2 ) ) & ( a = 0 & a = 2 implies ( b1 = 0 iff b1 = 1 ) ) & ( a = 1 & a = 2 implies ( b1 = 2 iff b1 = 1 ) ) )
;
let b be
Element of
{0,1,2};
func a + b -> Element of
{0,1,2} equals :
Def16:
b if a = 0 a if b = 0 2
if (
a = 1 &
b = 1 )
0 if (
a = 1 &
b = 2 )
0 if (
a = 2 &
b = 1 )
1
if (
a = 2 &
b = 2 )
;
coherence
( ( a = 0 implies b is Element of {0,1,2} ) & ( b = 0 implies a is Element of {0,1,2} ) & ( a = 1 & b = 1 implies 2 is Element of {0,1,2} ) & ( a = 1 & b = 2 implies 0 is Element of {0,1,2} ) & ( a = 2 & b = 1 implies 0 is Element of {0,1,2} ) & ( a = 2 & b = 2 implies 1 is Element of {0,1,2} ) )
by Lm2, Lm3, Lm4;
consistency
for b1 being Element of {0,1,2} holds
( ( a = 0 & b = 0 implies ( b1 = b iff b1 = a ) ) & ( a = 0 & a = 1 & b = 1 implies ( b1 = b iff b1 = 2 ) ) & ( a = 0 & a = 1 & b = 2 implies ( b1 = b iff b1 = 0 ) ) & ( a = 0 & a = 2 & b = 1 implies ( b1 = b iff b1 = 0 ) ) & ( a = 0 & a = 2 & b = 2 implies ( b1 = b iff b1 = 1 ) ) & ( b = 0 & a = 1 & b = 1 implies ( b1 = a iff b1 = 2 ) ) & ( b = 0 & a = 1 & b = 2 implies ( b1 = a iff b1 = 0 ) ) & ( b = 0 & a = 2 & b = 1 implies ( b1 = a iff b1 = 0 ) ) & ( b = 0 & a = 2 & b = 2 implies ( b1 = a iff b1 = 1 ) ) & ( a = 1 & b = 1 & a = 1 & b = 2 implies ( b1 = 2 iff b1 = 0 ) ) & ( a = 1 & b = 1 & a = 2 & b = 1 implies ( b1 = 2 iff b1 = 0 ) ) & ( a = 1 & b = 1 & a = 2 & b = 2 implies ( b1 = 2 iff b1 = 1 ) ) & ( a = 1 & b = 2 & a = 2 & b = 1 implies ( b1 = 0 iff b1 = 0 ) ) & ( a = 1 & b = 2 & a = 2 & b = 2 implies ( b1 = 0 iff b1 = 1 ) ) & ( a = 2 & b = 1 & a = 2 & b = 2 implies ( b1 = 0 iff b1 = 1 ) ) )
;
func a * b -> Element of
{0,1,2} equals :
Def17:
0 if b = 0 0 if a = 0 a if b = 1
b if a = 1
1
if (
a = 2 &
b = 2 )
;
coherence
( ( b = 0 implies 0 is Element of {0,1,2} ) & ( a = 0 implies 0 is Element of {0,1,2} ) & ( b = 1 implies a is Element of {0,1,2} ) & ( a = 1 implies b is Element of {0,1,2} ) & ( a = 2 & b = 2 implies 1 is Element of {0,1,2} ) )
by Lm3;
consistency
for b1 being Element of {0,1,2} holds
( ( b = 0 & a = 0 implies ( b1 = 0 iff b1 = 0 ) ) & ( b = 0 & b = 1 implies ( b1 = 0 iff b1 = a ) ) & ( b = 0 & a = 1 implies ( b1 = 0 iff b1 = b ) ) & ( b = 0 & a = 2 & b = 2 implies ( b1 = 0 iff b1 = 1 ) ) & ( a = 0 & b = 1 implies ( b1 = 0 iff b1 = a ) ) & ( a = 0 & a = 1 implies ( b1 = 0 iff b1 = b ) ) & ( a = 0 & a = 2 & b = 2 implies ( b1 = 0 iff b1 = 1 ) ) & ( b = 1 & a = 1 implies ( b1 = a iff b1 = b ) ) & ( b = 1 & a = 2 & b = 2 implies ( b1 = a iff b1 = 1 ) ) & ( a = 1 & a = 2 & b = 2 implies ( b1 = b iff b1 = 1 ) ) )
;
end;
:: deftheorem Def15 defines - MOD_2:def 15 :
for a being Element of {0,1,2} holds
( ( a = 0 implies - a = 0 ) & ( a = 1 implies - a = 2 ) & ( a = 2 implies - a = 1 ) );
:: deftheorem Def16 defines + MOD_2:def 16 :
for a, b being Element of {0,1,2} holds
( ( a = 0 implies a + b = b ) & ( b = 0 implies a + b = a ) & ( a = 1 & b = 1 implies a + b = 2 ) & ( a = 1 & b = 2 implies a + b = 0 ) & ( a = 2 & b = 1 implies a + b = 0 ) & ( a = 2 & b = 2 implies a + b = 1 ) );
:: deftheorem Def17 defines * MOD_2:def 17 :
for a, b being Element of {0,1,2} holds
( ( b = 0 implies a * b = 0 ) & ( a = 0 implies a * b = 0 ) & ( b = 1 implies a * b = a ) & ( a = 1 implies a * b = b ) & ( a = 2 & b = 2 implies a * b = 1 ) );
definition
func add3 -> BinOp of
{0,1,2} means :
Def18:
for
a,
b being
Element of
{0,1,2} holds
it . (
a,
b)
= a + b;
existence
ex b1 being BinOp of {0,1,2} st
for a, b being Element of {0,1,2} holds b1 . (a,b) = a + b
uniqueness
for b1, b2 being BinOp of {0,1,2} st ( for a, b being Element of {0,1,2} holds b1 . (a,b) = a + b ) & ( for a, b being Element of {0,1,2} holds b2 . (a,b) = a + b ) holds
b1 = b2
func mult3 -> BinOp of
{0,1,2} means :
Def19:
for
a,
b being
Element of
{0,1,2} holds
it . (
a,
b)
= a * b;
existence
ex b1 being BinOp of {0,1,2} st
for a, b being Element of {0,1,2} holds b1 . (a,b) = a * b
uniqueness
for b1, b2 being BinOp of {0,1,2} st ( for a, b being Element of {0,1,2} holds b1 . (a,b) = a * b ) & ( for a, b being Element of {0,1,2} holds b2 . (a,b) = a * b ) holds
b1 = b2
func compl3 -> UnOp of
{0,1,2} means :
Def20:
for
a being
Element of
{0,1,2} holds
it . a = - a;
existence
ex b1 being UnOp of {0,1,2} st
for a being Element of {0,1,2} holds b1 . a = - a
uniqueness
for b1, b2 being UnOp of {0,1,2} st ( for a being Element of {0,1,2} holds b1 . a = - a ) & ( for a being Element of {0,1,2} holds b2 . a = - a ) holds
b1 = b2
func unit3 -> Element of
{0,1,2} equals
1;
coherence
1 is Element of {0,1,2}
by ENUMSET1:def 1;
func zero3 -> Element of
{0,1,2} equals
0 ;
coherence
0 is Element of {0,1,2}
by ENUMSET1:def 1;
end;
:: deftheorem Def18 defines add3 MOD_2:def 18 :
for b1 being BinOp of {0,1,2} holds
( b1 = add3 iff for a, b being Element of {0,1,2} holds b1 . (a,b) = a + b );
:: deftheorem Def19 defines mult3 MOD_2:def 19 :
for b1 being BinOp of {0,1,2} holds
( b1 = mult3 iff for a, b being Element of {0,1,2} holds b1 . (a,b) = a * b );
:: deftheorem Def20 defines compl3 MOD_2:def 20 :
for b1 being UnOp of {0,1,2} holds
( b1 = compl3 iff for a being Element of {0,1,2} holds b1 . a = - a );
:: deftheorem defines unit3 MOD_2:def 21 :
unit3 = 1;
:: deftheorem defines zero3 MOD_2:def 22 :
zero3 = 0 ;
definition
func Z3 -> strict doubleLoopStr equals :
Def23:
doubleLoopStr(#
{0,1,2},
add3,
mult3,
unit3,
zero3 #);
coherence
doubleLoopStr(# {0,1,2},add3,mult3,unit3,zero3 #) is strict doubleLoopStr
;
end;
:: deftheorem Def23 defines Z3 MOD_2:def 23 :
Z3 = doubleLoopStr(# {0,1,2},add3,mult3,unit3,zero3 #);
theorem
canceled;
theorem Th32:
Lm6:
for x, y, z being Scalar of Z3
for X, Y, Z being Element of {0,1,2} st X = x & Y = y & Z = z holds
( (x + y) + z = (X + Y) + Z & x + (y + z) = X + (Y + Z) & (x * y) * z = (X * Y) * Z & x * (y * z) = X * (Y * Z) )
Lm7:
for x, y, z, a being Element of {0,1,2} st a = 0 holds
( x + (- x) = a & x + a = x & (x + y) + z = x + (y + z) )
theorem Th33:
theorem Th34:
for
x,
y,
z being
Scalar of
Z3 for
X,
Y,
Z being
Element of
{0,1,2} st
X = x &
Y = y &
Z = z holds
(
(x + y) + z = (X + Y) + Z &
x + (y + z) = X + (Y + Z) &
(x * y) * z = (X * Y) * Z &
x * (y * z) = X * (Y * Z) )
theorem Th35:
for
x,
y,
z,
a,
b being
Element of
{0,1,2} st
a = 0 &
b = 1 holds
(
x + y = y + x &
(x + y) + z = x + (y + z) &
x + a = x &
x + (- x) = a &
x * y = y * x &
(x * y) * z = x * (y * z) &
b * x = x & (
x <> a implies ex
y being
Element of
{0,1,2} st
x * y = b ) &
a <> b &
x * (y + z) = (x * y) + (x * z) )
theorem Th36:
theorem Th37:
Lm8:
for UN being Universe holds the carrier of Z3 in UN
theorem Th38:
Lm9:
for D being non empty set
for UN being Universe holds
( ( for f being BinOp of D st D in UN holds
f in UN ) & ( for f being UnOp of D st D in UN holds
f in UN ) )
theorem
canceled;
theorem