:: MATRIXR1 semantic presentation

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

theorem Th2: :: MATRIXR1:2
for b1, b2 being Real
for b3, b4 being Element of F_Real holds
( b1 = b3 & b2 = b4 implies 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 holds
( len b1 = len b2 implies 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 holds
( len b1 = len b2 implies b1 - (- b2) = b1 + b2 )
proof end;

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

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

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

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

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

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

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

theorem Th15: :: MATRIXR1:15
for b1, b2 being FinSequence of REAL holds
( len b1 = len b2 implies 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 holds
( b1 = b2 & b3 = b4 implies 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 holds
( 1 <= b1 & b1 <= width b4 implies 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 holds
( 1 <= b4 & b4 <= len b3 implies 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 holds
not ( width b2 = len b3 & ( for b4 being Matrix of b1 holds
not ( len b4 = len b2 & width b4 = width b3 & ( for b5, b6 being Nat holds
( [b5,b6] in Indices b4 implies 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 holds
( width b3 = len b4 & len b3 > 0 & len b4 > 0 implies 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 holds
( b3 = b4 implies for b5, b6 being Nat holds
( [b5,b6] in Indices b3 implies 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 holds
( [b3,b4] in Indices b1 implies (b1 + b2) * b3,b4 = (b1 * b3,b4) + (b2 * b3,b4) ) ) )
proof end;

theorem Th26: :: MATRIXR1:26
for b1, b2, b3 being Matrix of REAL holds
( len b1 = len b2 & width b1 = width b2 & len b3 = len b1 & width b3 = width b1 & ( for b4, b5 being Nat holds
( [b4,b5] in Indices b1 implies b3 * b4,b5 = (b1 * b4,b5) + (b2 * b4,b5) ) ) implies 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 holds
( b1 = a1 implies a3 = MXF2MXR (b1 * (MXR2MXF a2)) );
existence
ex b1 being Matrix of REAL st
for b2 being Element of F_Real holds
( b2 = c1 implies b1 = MXF2MXR (b2 * (MXR2MXF c2)) )
proof end;
uniqueness
for b1, b2 being Matrix of REAL holds
( ( for b3 being Element of F_Real holds
( b3 = c1 implies b1 = MXF2MXR (b3 * (MXR2MXF c2)) ) ) & ( for b3 being Element of F_Real holds
( b3 = c1 implies b2 = MXF2MXR (b3 * (MXR2MXF c2)) ) ) implies 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 holds
( b4 = b1 implies 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 holds
( [b3,b4] in Indices b2 implies (b1 * b2) * b3,b4 = b1 * (b2 * b3,b4) )
proof end;

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

theorem Th31: :: MATRIXR1:31
for b1 being Real
for b2 being Nat
for b3 being Matrix of REAL holds
( len b3 > 0 & b2 in dom b3 implies ( ex b4 being FinSequence of REAL st b4 = b3 . b2 & ( for b4 being FinSequence of REAL holds
( b4 = b3 . b2 implies (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 holds
( len b2 > 0 implies b1 - (- b2) = b1 + b2 )
proof end;

theorem Th36: :: MATRIXR1:36
for b1, b2 being Nat
for b3 being Matrix of REAL holds
( len b3 = b1 & width b3 = b2 & b1 > 0 implies ( 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 holds
( len b1 = len b2 & width b1 = width b2 & len b1 > 0 & b1 = b1 + b2 implies b2 = 0_Rmatrix (len b1),(width b1) )
proof end;

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

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

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

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

theorem Th42: :: MATRIXR1:42
for b1 being Matrix of REAL holds
( len b1 > 0 implies 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 holds
( len b2 = len b3 & width b2 = width b3 & len b2 > 0 implies b1 * (b2 + b3) = (b1 * b2) + (b1 * b3) )
proof end;

theorem Th44: :: MATRIXR1:44
for b1 being Matrix of REAL holds
( len b1 > 0 implies 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 holds
( b1 in dom a1 implies a2 . b1 = <*(a1 . b1)*> ) ) );
existence
ex b1 being Matrix of REAL st
( len b1 = len c1 & width b1 = 1 & ( for b2 being Nat holds
( b2 in dom c1 implies b1 . b2 = <*(c1 . b2)*> ) ) )
proof end;
uniqueness
for b1, b2 being Matrix of REAL holds
( len b1 = len c1 & width b1 = 1 & ( for b3 being Nat holds
( b3 in dom c1 implies b1 . b3 = <*(c1 . b3)*> ) ) & len b2 = len c1 & width b2 = 1 & ( for b3 being Nat holds
( b3 in dom c1 implies b2 . b3 = <*(c1 . b3)*> ) ) implies b1 = b2 )
proof end;
end;

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

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

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

theorem Th47: :: MATRIXR1:47
for b1 being Real
for b2 being FinSequence of REAL holds
( len b2 > 0 implies 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 holds
( b1 in dom a1 implies a2 * 1,b1 = a1 . b1 ) ) );
existence
ex b1 being Matrix of REAL st
( width b1 = len c1 & len b1 = 1 & ( for b2 being Nat holds
( b2 in dom c1 implies b1 * 1,b2 = c1 . b2 ) ) )
proof end;
uniqueness
for b1, b2 being Matrix of REAL holds
( width b1 = len c1 & len b1 = 1 & ( for b3 being Nat holds
( b3 in dom c1 implies b1 * 1,b3 = c1 . b3 ) ) & width b2 = len c1 & len b2 = 1 & ( for b3 being Nat holds
( b3 in dom c1 implies b2 * 1,b3 = c1 . b3 ) ) implies 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 holds
( b3 in dom b1 implies 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 holds
( len b1 > 0 implies ( (LineVec2Mx b1) @ = ColVec2Mx b1 & (ColVec2Mx b1) @ = LineVec2Mx b1 ) )
proof end;

theorem Th50: :: MATRIXR1:50
for b1, b2 being FinSequence of REAL holds
( len b1 = len b2 & len b1 > 0 implies 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 holds
( len b2 > 0 & width b2 > 0 & ( len b2 = len b1 or width (b2 @ ) = len b1 ) implies (b2 @ ) * b1 = b1 * b2 )
proof end;

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

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

theorem Th55: :: MATRIXR1:55
for b1, b2 being Matrix of REAL holds
( len b1 = len b2 & width b1 = width b2 implies for b3 being Nat holds
( 1 <= b3 & b3 <= len b1 implies 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 holds
( 1 <= b3 & b3 <= width b2 implies 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 holds
( len b1 = len b2 & width b3 = len b1 & len b1 > 0 & len b3 > 0 implies 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 holds
( len b1 = len b2 & len b3 = len b1 & len b1 > 0 implies (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 holds
( width b3 = len b2 & len b2 > 0 & len b3 > 0 implies 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 holds
( len b3 = len b2 & len b2 > 0 & width b3 > 0 implies (b1 * b2) * b3 = b1 * (b2 * b3) )
proof end;

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

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

theorem Th63: :: MATRIXR1:63
for b1 being FinSequence of REAL
for b2, b3 being Matrix of REAL holds
( len b2 = len b3 & width b2 = width b3 & width b2 = len b1 & len b2 > 0 & len b1 > 0 implies (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 holds
( len b2 = len b3 & width b2 = width b3 & len b2 = len b1 & width b2 > 0 & len b1 > 0 implies b1 * (b2 + b3) = (b1 * b2) + (b1 * b3) )
proof end;

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

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