:: MATRIXR1 semantic presentation

theorem Th1: :: MATRIXR1:1
for b1, b2 being Real
for b3, b4 being Element of F_Real st b1 = b3 & b2 = b4 holds
b1 + b2 = b3 + b4
proof end;

theorem Th2: :: MATRIXR1:2
for b1, b2 being Real
for b3, b4 being Element of F_Real st b1 = b3 & b2 = b4 holds
b1 * b2 = b3 * b4
proof end;

theorem Th3: :: MATRIXR1:3
for b1 being FinSequence of REAL holds
( b1 + (- b1) = 0* (len b1) & b1 - b1 = 0* (len b1) )
proof end;

theorem Th4: :: MATRIXR1:4
for b1, b2 being FinSequence of REAL st len b1 = len b2 holds
b1 - b2 = b1 + (- b2)
proof end;

theorem Th5: :: MATRIXR1:5
for b1 being FinSequence of REAL holds b1 - (0* (len b1)) = b1
proof end;

theorem Th6: :: MATRIXR1:6
for b1 being FinSequence of REAL holds (0* (len b1)) - b1 = - b1
proof end;

theorem Th7: :: MATRIXR1:7
for b1, b2 being FinSequence of REAL st len b1 = len b2 holds
b1 - (- b2) = b1 + b2
proof end;

theorem Th8: :: MATRIXR1:8
for b1, b2 being FinSequence of REAL st len b1 = len b2 holds
- (b1 - b2) = b2 - b1
proof end;

theorem Th9: :: MATRIXR1:9
for b1, b2 being FinSequence of REAL st len b1 = len b2 holds
- (b1 - b2) = (- b1) + b2
proof end;

theorem Th10: :: MATRIXR1:10
for b1, b2 being FinSequence of REAL st len b1 = len b2 & b1 - b2 = 0* (len b1) holds
b1 = b2
proof end;

theorem Th11: :: MATRIXR1:11
for b1, b2, b3 being FinSequence of REAL st len b1 = len b2 & len b2 = len b3 holds
(b1 - b2) - b3 = b1 - (b2 + b3)
proof end;

theorem Th12: :: MATRIXR1:12
for b1, b2, b3 being FinSequence of REAL st len b1 = len b2 & len b2 = len b3 holds
b1 + (b2 - b3) = (b1 + b2) - b3
proof end;

theorem Th13: :: MATRIXR1:13
for b1, b2, b3 being FinSequence of REAL st len b1 = len b2 & len b2 = len b3 holds
b1 - (b2 - b3) = (b1 - b2) + b3
proof end;

theorem Th14: :: MATRIXR1:14
for b1, b2 being FinSequence of REAL st len b1 = len b2 holds
b1 = (b1 + b2) - b2
proof end;

theorem Th15: :: MATRIXR1:15
for b1, b2 being FinSequence of REAL st len b1 = len b2 holds
b1 = (b1 - b2) + b2
proof end;

theorem Th16: :: MATRIXR1:16
for b1 being non empty HGrStr
for b2 being FinSequence of b1
for b3 being Element of b1 holds len (b3 * b2) = len b2
proof end;

theorem Th17: :: MATRIXR1:17
for b1 being Real
for b2 being Element of F_Real
for b3 being FinSequence of REAL
for b4 being FinSequence of F_Real st b1 = b2 & b3 = b4 holds
b1 * b3 = b2 * b4
proof end;

theorem Th18: :: MATRIXR1:18
for b1 being Field
for b2 being Element of b1
for b3 being Matrix of b1 holds Indices (b2 * b3) = Indices b3
proof end;

theorem Th19: :: MATRIXR1:19
for b1 being Nat
for b2 being Field
for b3 being Element of b2
for b4 being Matrix of b2 st 1 <= b1 & b1 <= width b4 holds
Col (b3 * b4),b1 = b3 * (Col b4,b1)
proof end;

theorem Th20: :: MATRIXR1:20
for b1 being Field
for b2 being Element of b1
for b3 being Matrix of b1
for b4 being Nat st 1 <= b4 & b4 <= len b3 holds
Line (b2 * b3),b4 = b2 * (Line b3,b4)
proof end;

theorem Th21: :: MATRIXR1:21
for b1 being Field
for b2, b3 being Matrix of b1 st width b2 = len b3 holds
ex b4 being Matrix of b1 st
( len b4 = len b2 & width b4 = width b3 & ( for b5, b6 being Nat st [b5,b6] in Indices b4 holds
b4 * b5,b6 = (Line b2,b5) "*" (Col b3,b6) ) )
proof end;

theorem Th22: :: MATRIXR1:22
for b1 being Field
for b2 being Element of b1
for b3, b4 being Matrix of b1 st width b3 = len b4 & len b3 > 0 & len b4 > 0 holds
b3 * (b2 * b4) = b2 * (b3 * b4)
proof end;

definition
let c1 be Matrix of REAL ;
func MXR2MXF c1 -> Matrix of F_Real equals :: MATRIXR1:def 1
a1;
coherence
c1 is Matrix of F_Real
;
end;

:: deftheorem Def1 defines MXR2MXF MATRIXR1:def 1 :
for b1 being Matrix of REAL holds MXR2MXF b1 = b1;

definition
let c1 be Matrix of F_Real ;
func MXF2MXR c1 -> Matrix of REAL equals :: MATRIXR1:def 2
a1;
coherence
c1 is Matrix of REAL
;
end;

:: deftheorem Def2 defines MXF2MXR MATRIXR1:def 2 :
for b1 being Matrix of F_Real holds MXF2MXR b1 = b1;

theorem Th23: :: MATRIXR1:23
for b1, b2 being set
for b3 being Matrix of b1
for b4 being Matrix of b2 st b3 = b4 holds
for b5, b6 being Nat st [b5,b6] in Indices b3 holds
b3 * b5,b6 = b4 * b5,b6
proof end;

theorem Th24: :: MATRIXR1:24
for b1 being Field
for b2, b3 being Matrix of b1 holds Indices (b2 + b3) = Indices b2
proof end;

definition
let c1, c2 be Matrix of REAL ;
func c1 + c2 -> Matrix of REAL equals :: MATRIXR1:def 3
MXF2MXR ((MXR2MXF a1) + (MXR2MXF a2));
coherence
MXF2MXR ((MXR2MXF c1) + (MXR2MXF c2)) is Matrix of REAL
;
end;

:: deftheorem Def3 defines + MATRIXR1:def 3 :
for b1, b2 being Matrix of REAL holds b1 + b2 = MXF2MXR ((MXR2MXF b1) + (MXR2MXF b2));

theorem Th25: :: MATRIXR1:25
for b1, b2 being Matrix of REAL holds
( len (b1 + b2) = len b1 & width (b1 + b2) = width b1 & ( for b3, b4 being Nat st [b3,b4] in Indices b1 holds
(b1 + b2) * b3,b4 = (b1 * b3,b4) + (b2 * b3,b4) ) )
proof end;

theorem Th26: :: MATRIXR1:26
for b1, b2, b3 being Matrix of REAL st len b1 = len b2 & width b1 = width b2 & len b3 = len b1 & width b3 = width b1 & ( for b4, b5 being Nat st [b4,b5] in Indices b1 holds
b3 * b4,b5 = (b1 * b4,b5) + (b2 * b4,b5) ) holds
b3 = b1 + b2
proof end;

definition
let c1 be Matrix of REAL ;
func - c1 -> Matrix of REAL equals :: MATRIXR1:def 4
MXF2MXR (- (MXR2MXF a1));
coherence
MXF2MXR (- (MXR2MXF c1)) is Matrix of REAL
;
end;

:: deftheorem Def4 defines - MATRIXR1:def 4 :
for b1 being Matrix of REAL holds - b1 = MXF2MXR (- (MXR2MXF b1));

definition
let c1, c2 be Matrix of REAL ;
func c1 - c2 -> Matrix of REAL equals :: MATRIXR1:def 5
MXF2MXR ((MXR2MXF a1) - (MXR2MXF a2));
coherence
MXF2MXR ((MXR2MXF c1) - (MXR2MXF c2)) is Matrix of REAL
;
func c1 * c2 -> Matrix of REAL equals :: MATRIXR1:def 6
MXF2MXR ((MXR2MXF a1) * (MXR2MXF a2));
coherence
MXF2MXR ((MXR2MXF c1) * (MXR2MXF c2)) is Matrix of REAL
;
end;

:: deftheorem Def5 defines - MATRIXR1:def 5 :
for b1, b2 being Matrix of REAL holds b1 - b2 = MXF2MXR ((MXR2MXF b1) - (MXR2MXF b2));

:: deftheorem Def6 defines * MATRIXR1:def 6 :
for b1, b2 being Matrix of REAL holds b1 * b2 = MXF2MXR ((MXR2MXF b1) * (MXR2MXF b2));

definition
let c1 be real number ;
let c2 be Matrix of REAL ;
func c1 * c2 -> Matrix of REAL means :Def7: :: MATRIXR1:def 7
for b1 being Element of F_Real st b1 = a1 holds
a3 = MXF2MXR (b1 * (MXR2MXF a2));
existence
ex b1 being Matrix of REAL st
for b2 being Element of F_Real st b2 = c1 holds
b1 = MXF2MXR (b2 * (MXR2MXF c2))
proof end;
uniqueness
for b1, b2 being Matrix of REAL st ( for b3 being Element of F_Real st b3 = c1 holds
b1 = MXF2MXR (b3 * (MXR2MXF c2)) ) & ( for b3 being Element of F_Real st b3 = c1 holds
b2 = MXF2MXR (b3 * (MXR2MXF c2)) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def7 defines * MATRIXR1:def 7 :
for b1 being real number
for b2, b3 being Matrix of REAL holds
( b3 = b1 * b2 iff for b4 being Element of F_Real st b4 = b1 holds
b3 = MXF2MXR (b4 * (MXR2MXF b2)) );

theorem Th27: :: MATRIXR1:27
for b1 being Real
for b2 being Matrix of REAL holds
( len (b1 * b2) = len b2 & width (b1 * b2) = width b2 )
proof end;

theorem Th28: :: MATRIXR1:28
for b1 being Real
for b2 being Matrix of REAL holds Indices (b1 * b2) = Indices b2
proof end;

theorem Th29: :: MATRIXR1:29
for b1 being Real
for b2 being Matrix of REAL
for b3, b4 being Nat st [b3,b4] in Indices b2 holds
(b1 * b2) * b3,b4 = b1 * (b2 * b3,b4)
proof end;

theorem Th30: :: MATRIXR1:30
for b1 being Real
for b2 being Matrix of REAL st len b2 > 0 & width b2 > 0 holds
(b1 * b2) @ = b1 * (b2 @ )
proof end;

theorem Th31: :: MATRIXR1:31
for b1 being Real
for b2 being Nat
for b3 being Matrix of REAL st len b3 > 0 & b2 in dom b3 holds
( ex b4 being FinSequence of REAL st b4 = b3 . b2 & ( for b4 being FinSequence of REAL st b4 = b3 . b2 holds
(b1 * b3) . b2 = b1 * b4 ) )
proof end;

theorem Th32: :: MATRIXR1:32
for b1 being Matrix of REAL holds 1 * b1 = b1
proof end;

theorem Th33: :: MATRIXR1:33
for b1 being Matrix of REAL holds b1 + b1 = 2 * b1
proof end;

theorem Th34: :: MATRIXR1:34
for b1 being Matrix of REAL holds (b1 + b1) + b1 = 3 * b1
proof end;

definition
let c1, c2 be Nat;
func 0_Rmatrix c1,c2 -> Matrix of REAL equals :: MATRIXR1:def 8
MXF2MXR (0. F_Real ,a1,a2);
coherence
MXF2MXR (0. F_Real ,c1,c2) is Matrix of REAL
;
end;

:: deftheorem Def8 defines 0_Rmatrix MATRIXR1:def 8 :
for b1, b2 being Nat holds 0_Rmatrix b1,b2 = MXF2MXR (0. F_Real ,b1,b2);

theorem Th35: :: MATRIXR1:35
for b1, b2 being Matrix of REAL st len b2 > 0 holds
b1 - (- b2) = b1 + b2
proof end;

theorem Th36: :: MATRIXR1:36
for b1, b2 being Nat
for b3 being Matrix of REAL st len b3 = b1 & width b3 = b2 & b1 > 0 holds
( b3 + (0_Rmatrix b1,b2) = b3 & (0_Rmatrix b1,b2) + b3 = b3 )
proof end;

theorem Th37: :: MATRIXR1:37
for b1, b2 being Matrix of REAL st len b1 = len b2 & width b1 = width b2 & len b1 > 0 & b1 = b1 + b2 holds
b2 = 0_Rmatrix (len b1),(width b1)
proof end;

theorem Th38: :: MATRIXR1:38
for b1, b2 being Matrix of REAL st len b1 = len b2 & width b1 = width b2 & len b1 > 0 & b1 + b2 = 0_Rmatrix (len b1),(width b1) holds
b2 = - b1
proof end;

theorem Th39: :: MATRIXR1:39
for b1, b2 being Matrix of REAL st len b1 = len b2 & width b1 = width b2 & len b1 > 0 & b2 - b1 = b2 holds
b1 = 0_Rmatrix (len b1),(width b1)
proof end;

theorem Th40: :: MATRIXR1:40
for b1 being Real
for b2, b3 being Matrix of REAL st width b2 = len b3 & len b2 > 0 & len b3 > 0 holds
b2 * (b1 * b3) = b1 * (b2 * b3)
proof end;

theorem Th41: :: MATRIXR1:41
for b1 being Real
for b2, b3 being Matrix of REAL st width b2 = len b3 & len b2 > 0 & len b3 > 0 & width b3 > 0 holds
(b1 * b2) * b3 = b1 * (b2 * b3)
proof end;

theorem Th42: :: MATRIXR1:42
for b1 being Matrix of REAL st len b1 > 0 holds
b1 + (0_Rmatrix (len b1),(width b1)) = b1
proof end;

theorem Th43: :: MATRIXR1:43
for b1 being real number
for b2, b3 being Matrix of REAL st len b2 = len b3 & width b2 = width b3 & len b2 > 0 holds
b1 * (b2 + b3) = (b1 * b2) + (b1 * b3)
proof end;

theorem Th44: :: MATRIXR1:44
for b1 being Matrix of REAL st len b1 > 0 holds
0 * b1 = 0_Rmatrix (len b1),(width b1)
proof end;

definition
let c1 be FinSequence of REAL ;
assume E18: len c1 > 0 ;
func ColVec2Mx c1 -> Matrix of REAL means :Def9: :: MATRIXR1:def 9
( len a2 = len a1 & width a2 = 1 & ( for b1 being Nat st b1 in dom a1 holds
a2 . b1 = <*(a1 . b1)*> ) );
existence
ex b1 being Matrix of REAL st
( len b1 = len c1 & width b1 = 1 & ( for b2 being Nat st b2 in dom c1 holds
b1 . b2 = <*(c1 . b2)*> ) )
proof end;
uniqueness
for b1, b2 being Matrix of REAL st len b1 = len c1 & width b1 = 1 & ( for b3 being Nat st b3 in dom c1 holds
b1 . b3 = <*(c1 . b3)*> ) & len b2 = len c1 & width b2 = 1 & ( for b3 being Nat st b3 in dom c1 holds
b2 . b3 = <*(c1 . b3)*> ) holds
b1 = b2
proof end;
end;

:: deftheorem Def9 defines ColVec2Mx MATRIXR1:def 9 :
for b1 being FinSequence of REAL st len b1 > 0 holds
for b2 being Matrix of REAL holds
( b2 = ColVec2Mx b1 iff ( len b2 = len b1 & width b2 = 1 & ( for b3 being Nat st b3 in dom b1 holds
b2 . b3 = <*(b1 . b3)*> ) ) );

theorem Th45: :: MATRIXR1:45
for b1 being FinSequence of REAL
for b2 being Matrix of REAL st len b1 > 0 holds
( b2 = ColVec2Mx b1 iff ( Col b2,1 = b1 & width b2 = 1 ) )
proof end;

theorem Th46: :: MATRIXR1:46
for b1, b2 being FinSequence of REAL st len b1 = len b2 & len b1 > 0 holds
ColVec2Mx (b1 + b2) = (ColVec2Mx b1) + (ColVec2Mx b2)
proof end;

theorem Th47: :: MATRIXR1:47
for b1 being Real
for b2 being FinSequence of REAL st len b2 > 0 holds
ColVec2Mx (b1 * b2) = b1 * (ColVec2Mx b2)
proof end;

definition
let c1 be FinSequence of REAL ;
func LineVec2Mx c1 -> Matrix of REAL means :Def10: :: MATRIXR1:def 10
( width a2 = len a1 & len a2 = 1 & ( for b1 being Nat st b1 in dom a1 holds
a2 * 1,b1 = a1 . b1 ) );
existence
ex b1 being Matrix of REAL st
( width b1 = len c1 & len b1 = 1 & ( for b2 being Nat st b2 in dom c1 holds
b1 * 1,b2 = c1 . b2 ) )
proof end;
uniqueness
for b1, b2 being Matrix of REAL st width b1 = len c1 & len b1 = 1 & ( for b3 being Nat st b3 in dom c1 holds
b1 * 1,b3 = c1 . b3 ) & width b2 = len c1 & len b2 = 1 & ( for b3 being Nat st b3 in dom c1 holds
b2 * 1,b3 = c1 . b3 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def10 defines LineVec2Mx MATRIXR1:def 10 :
for b1 being FinSequence of REAL
for b2 being Matrix of REAL holds
( b2 = LineVec2Mx b1 iff ( width b2 = len b1 & len b2 = 1 & ( for b3 being Nat st b3 in dom b1 holds
b2 * 1,b3 = b1 . b3 ) ) );

theorem Th48: :: MATRIXR1:48
for b1 being FinSequence of REAL
for b2 being Matrix of REAL holds
( b2 = LineVec2Mx b1 iff ( Line b2,1 = b1 & len b2 = 1 ) )
proof end;

theorem Th49: :: MATRIXR1:49
for b1 being FinSequence of REAL st len b1 > 0 holds
( (LineVec2Mx b1) @ = ColVec2Mx b1 & (ColVec2Mx b1) @ = LineVec2Mx b1 )
proof end;

theorem Th50: :: MATRIXR1:50
for b1, b2 being FinSequence of REAL st len b1 = len b2 & len b1 > 0 holds
LineVec2Mx (b1 + b2) = (LineVec2Mx b1) + (LineVec2Mx b2)
proof end;

theorem Th51: :: MATRIXR1:51
for b1 being Real
for b2 being FinSequence of REAL holds LineVec2Mx (b1 * b2) = b1 * (LineVec2Mx b2)
proof end;

definition
let c1 be Matrix of REAL ;
let c2 be FinSequence of REAL ;
func c1 * c2 -> FinSequence of REAL equals :: MATRIXR1:def 11
Col (a1 * (ColVec2Mx a2)),1;
coherence
Col (c1 * (ColVec2Mx c2)),1 is FinSequence of REAL
;
func c2 * c1 -> FinSequence of REAL equals :: MATRIXR1:def 12
Line ((LineVec2Mx a2) * a1),1;
coherence
Line ((LineVec2Mx c2) * c1),1 is FinSequence of REAL
;
end;

:: deftheorem Def11 defines * MATRIXR1:def 11 :
for b1 being Matrix of REAL
for b2 being FinSequence of REAL holds b1 * b2 = Col (b1 * (ColVec2Mx b2)),1;

:: deftheorem Def12 defines * MATRIXR1:def 12 :
for b1 being Matrix of REAL
for b2 being FinSequence of REAL holds b2 * b1 = Line ((LineVec2Mx b2) * b1),1;

theorem Th52: :: MATRIXR1:52
for b1 being FinSequence of REAL
for b2 being Matrix of REAL st len b2 > 0 & width b2 > 0 & ( len b2 = len b1 or width (b2 @ ) = len b1 ) holds
(b2 @ ) * b1 = b1 * b2
proof end;

theorem Th53: :: MATRIXR1:53
for b1 being FinSequence of REAL
for b2 being Matrix of REAL st len b2 > 0 & width b2 > 0 & ( width b2 = len b1 or len (b2 @ ) = len b1 ) holds
b2 * b1 = b1 * (b2 @ )
proof end;

theorem Th54: :: MATRIXR1:54
for b1, b2 being Matrix of REAL st len b1 = len b2 & width b1 = width b2 holds
for b3 being Nat st 1 <= b3 & b3 <= width b1 holds
Col (b1 + b2),b3 = (Col b1,b3) + (Col b2,b3)
proof end;

theorem Th55: :: MATRIXR1:55
for b1, b2 being Matrix of REAL st len b1 = len b2 & width b1 = width b2 holds
for b3 being Nat st 1 <= b3 & b3 <= len b1 holds
Line (b1 + b2),b3 = (Line b1,b3) + (Line b2,b3)
proof end;

theorem Th56: :: MATRIXR1:56
for b1 being Real
for b2 being Matrix of REAL
for b3 being Nat st 1 <= b3 & b3 <= width b2 holds
Col (b1 * b2),b3 = b1 * (Col b2,b3)
proof end;

theorem Th57: :: MATRIXR1:57
for b1, b2 being FinSequence of REAL
for b3 being Matrix of REAL st len b1 = len b2 & width b3 = len b1 & len b1 > 0 & len b3 > 0 holds
b3 * (b1 + b2) = (b3 * b1) + (b3 * b2)
proof end;

theorem Th58: :: MATRIXR1:58
for b1, b2 being FinSequence of REAL
for b3 being Matrix of REAL st len b1 = len b2 & len b3 = len b1 & len b1 > 0 holds
(b1 + b2) * b3 = (b1 * b3) + (b2 * b3)
proof end;

theorem Th59: :: MATRIXR1:59
for b1 being Real
for b2 being FinSequence of REAL
for b3 being Matrix of REAL st width b3 = len b2 & len b2 > 0 & len b3 > 0 holds
b3 * (b1 * b2) = b1 * (b3 * b2)
proof end;

theorem Th60: :: MATRIXR1:60
for b1 being Real
for b2 being FinSequence of REAL
for b3 being Matrix of REAL st len b3 = len b2 & len b2 > 0 & width b3 > 0 holds
(b1 * b2) * b3 = b1 * (b2 * b3)
proof end;

theorem Th61: :: MATRIXR1:61
for b1 being FinSequence of REAL
for b2 being Matrix of REAL st width b2 = len b1 & len b1 > 0 & len b2 > 0 holds
len (b2 * b1) = len b2
proof end;

theorem Th62: :: MATRIXR1:62
for b1 being FinSequence of REAL
for b2 being Matrix of REAL st len b2 = len b1 & len b1 > 0 & width b2 > 0 holds
len (b1 * b2) = width b2
proof end;

theorem Th63: :: MATRIXR1:63
for b1 being FinSequence of REAL
for b2, b3 being Matrix of REAL st len b2 = len b3 & width b2 = width b3 & width b2 = len b1 & len b2 > 0 & len b1 > 0 holds
(b2 + b3) * b1 = (b2 * b1) + (b3 * b1)
proof end;

theorem Th64: :: MATRIXR1:64
for b1 being FinSequence of REAL
for b2, b3 being Matrix of REAL st len b2 = len b3 & width b2 = width b3 & len b2 = len b1 & width b2 > 0 & len b1 > 0 holds
b1 * (b2 + b3) = (b1 * b2) + (b1 * b3)
proof end;

theorem Th65: :: MATRIXR1:65
for b1, b2 being Nat
for b3 being FinSequence of REAL st len b3 = b2 & b1 > 0 & b2 > 0 holds
(0_Rmatrix b1,b2) * b3 = 0* b1
proof end;

theorem Th66: :: MATRIXR1:66
for b1, b2 being Nat
for b3 being FinSequence of REAL st len b3 = b1 & b1 > 0 & b2 > 0 holds
b3 * (0_Rmatrix b1,b2) = 0* b2
proof end;