:: MATRIX15 semantic presentation

theorem Th1: :: MATRIX15:1
for K being Field
for a being Element of K
for A, B being Matrix of K st width A = len B holds
(a * A) * B = a * (A * B)
proof end;

theorem Th2: :: MATRIX15:2
for K being Field
for a, b being Element of K
for A being Matrix of K holds
( (1_ K) * A = A & a * (b * A) = (a * b) * A )
proof end;

Lm1: for K being Field
for A being Matrix of K holds Indices A = Indices (- A)
proof end;

Lm2: for n being Nat
for K being Field
for a being Element of K st a <> 0. K holds
(power K) . a,n <> 0. K
proof end;

theorem Th3: :: MATRIX15:3
for K being non empty addLoopStr
for f, g, h, w being FinSequence of K st len f = len g & len h = len w holds
(f ^ h) + (g ^ w) = (f + g) ^ (h + w)
proof end;

theorem Th4: :: MATRIX15:4
for K being non empty multMagma
for f, g being FinSequence of K
for a being Element of K holds a * (f ^ g) = (a * f) ^ (a * g)
proof end;

theorem Th5: :: MATRIX15:5
for f being Function
for p1, p2, f1, f2 being FinSequence st rng p1 c= dom f & rng p2 c= dom f & f1 = f * p1 & f2 = f * p2 holds
f * (p1 ^ p2) = f1 ^ f2
proof end;

theorem Th6: :: MATRIX15:6
for f being FinSequence of NAT
for n being Nat st f is one-to-one & rng f c= Seg n & ( for i, j being Nat st i in dom f & j in dom f & i < j holds
f . i < f . j ) holds
Sgm (rng f) = f
proof end;

theorem Th7: :: MATRIX15:7
for K being non empty right_complementable Abelian add-associative right_zeroed addLoopStr
for p being FinSequence of K
for i, j being Nat st i in dom p & j in dom p & i <> j & ( for k being Nat st k in dom p & k <> i & k <> j holds
p . k = 0. K ) holds
Sum p = (p /. i) + (p /. j)
proof end;

theorem Th8: :: MATRIX15:8
for i, m, n being Nat st i in Seg m holds
(Sgm ((Seg (n + m)) \ (Seg n))) . i = n + i
proof end;

theorem Th9: :: MATRIX15:9
for D being non empty set
for A being Matrix of D
for Bx, By, Cx, Cy being finite without_zero Subset of NAT st [:Bx,By:] c= Indices A & [:Cx,Cy:] c= Indices A holds
for B being Matrix of card Bx, card By,D
for C being Matrix of card Cx, card Cy,D st ( for i, j, bi, bj, ci, cj being Nat st [i,j] in [:Bx,By:] /\ [:Cx,Cy:] & bi = ((Sgm Bx) " ) . i & bj = ((Sgm By) " ) . j & ci = ((Sgm Cx) " ) . i & cj = ((Sgm Cy) " ) . j holds
B * bi,bj = C * ci,cj ) holds
ex M being Matrix of len A, width A,D st
( Segm M,Bx,By = B & Segm M,Cx,Cy = C & ( for i, j being Nat st [i,j] in (Indices M) \ ([:Bx,By:] \/ [:Cx,Cy:]) holds
M * i,j = A * i,j ) )
proof end;

theorem Th10: :: MATRIX15:10
for K being Field
for A being Matrix of K
for P, Q, Q' being finite without_zero Subset of NAT st [:P,Q':] c= Indices A holds
for i, j being Nat st i in (dom A) \ P & j in (Seg (width A)) \ Q & A * i,j <> 0. K & Q c= Q' & (Line A,i) * (Sgm Q') = (card Q') |-> (0. K) holds
the_rank_of A > the_rank_of (Segm A,P,Q)
proof end;

theorem Th11: :: MATRIX15:11
for K being Field
for A being Matrix of K
for N being finite without_zero Subset of NAT st N c= dom A & ( for i being Nat st i in (dom A) \ N holds
Line A,i = (width A) |-> (0. K) ) holds
the_rank_of A = the_rank_of (Segm A,N,(Seg (width A)))
proof end;

theorem Th12: :: MATRIX15:12
for K being Field
for A being Matrix of K
for N being finite without_zero Subset of NAT st N c= Seg (width A) & ( for i being Nat st i in (Seg (width A)) \ N holds
Col A,i = (len A) |-> (0. K) ) holds
the_rank_of A = the_rank_of (Segm A,(Seg (len A)),N)
proof end;

theorem Th13: :: MATRIX15:13
for K being Field
for V being VectSp of K
for U being finite Subset of V
for u, v being Vector of V
for a being Element of K st u in U & v in U holds
Lin ((U \ {u}) \/ {(u + (a * v))}) is Subspace of Lin U
proof end;

theorem Th14: :: MATRIX15:14
for K being Field
for V being VectSp of K
for U being finite Subset of V
for u, v being Vector of V
for a being Element of K st u in U & v in U & ( not u = v or a <> - (1_ K) or u = 0. V ) holds
Lin ((U \ {u}) \/ {(u + (a * v))}) = Lin U
proof end;

definition
let D be non empty set ;
let n, m, k be Nat;
let A be Matrix of n,m,D;
let B be Matrix of n,k,D;
:: original: ^^
redefine func A ^^ B -> Matrix of n,(width A) + (width B),D;
coherence
A ^^ B is Matrix of n,(width A) + (width B),D
proof end;
end;

theorem Th15: :: MATRIX15:15
for n, m, k being Nat
for D being non empty set
for A being Matrix of n,m,D
for B being Matrix of n,k,D
for i being Nat st i in Seg n holds
Line (A ^^ B),i = (Line A,i) ^ (Line B,i)
proof end;

theorem Th16: :: MATRIX15:16
for n, m, k being Nat
for D being non empty set
for A being Matrix of n,m,D
for B being Matrix of n,k,D
for i being Nat st i in Seg (width A) holds
Col (A ^^ B),i = Col A,i
proof end;

theorem Th17: :: MATRIX15:17
for n, m, k being Nat
for D being non empty set
for A being Matrix of n,m,D
for B being Matrix of n,k,D
for i being Nat st i in Seg (width B) holds
Col (A ^^ B),((width A) + i) = Col B,i
proof end;

theorem Th18: :: MATRIX15:18
for n, m, k, i being Nat
for D being non empty set
for A being Matrix of n,m,D
for B being Matrix of n,k,D
for pA, pB being FinSequence of D st len pA = width A & len pB = width B holds
ReplaceLine (A ^^ B),i,(pA ^ pB) = (ReplaceLine A,i,pA) ^^ (ReplaceLine B,i,pB)
proof end;

theorem Th19: :: MATRIX15:19
for n, m, k being Nat
for D being non empty set
for A being Matrix of n,m,D
for B being Matrix of n,k,D holds
( Segm (A ^^ B),(Seg n),(Seg (width A)) = A & Segm (A ^^ B),(Seg n),((Seg ((width A) + (width B))) \ (Seg (width A))) = B )
proof end;

theorem Th20: :: MATRIX15:20
for K being Field
for A, B being Matrix of K st len A = len B holds
( the_rank_of A <= the_rank_of (A ^^ B) & the_rank_of B <= the_rank_of (A ^^ B) )
proof end;

theorem :: MATRIX15:21
for K being Field
for A, B being Matrix of K st len A = len B & len A = the_rank_of A holds
the_rank_of A = the_rank_of (A ^^ B)
proof end;

theorem Th22: :: MATRIX15:22
for K being Field
for A, B being Matrix of K st len A = len B & width A = 0 holds
( A ^^ B = B & B ^^ A = B )
proof end;

theorem Th23: :: MATRIX15:23
for m being Nat
for K being Field
for A, B being Matrix of K st B = 0. K,(len A),m holds
the_rank_of A = the_rank_of (A ^^ B)
proof end;

theorem Th24: :: MATRIX15:24
for K being Field
for A, B being Matrix of K st the_rank_of A = the_rank_of (A ^^ B) & len A = len B holds
for N being finite without_zero Subset of NAT st N c= dom A & ( for i being Nat st i in N holds
Line A,i = (width A) |-> (0. K) ) holds
for i being Nat st i in N holds
Line B,i = (width B) |-> (0. K)
proof end;

definition
let D be non empty set ;
let b be FinSequence of D;
func LineVec2Mx b -> Matrix of 1, len b,D equals :: MATRIX15:def 1
<*b*>;
coherence
<*b*> is Matrix of 1, len b,D
;
func ColVec2Mx b -> Matrix of len b,1,D equals :: MATRIX15:def 2
<*b*> @ ;
coherence
<*b*> @ is Matrix of len b,1,D
proof end;
end;

:: deftheorem defines LineVec2Mx MATRIX15:def 1 :
for D being non empty set
for b being FinSequence of D holds LineVec2Mx b = <*b*>;

:: deftheorem defines ColVec2Mx MATRIX15:def 2 :
for D being non empty set
for b being FinSequence of D holds ColVec2Mx b = <*b*> @ ;

theorem Th25: :: MATRIX15:25
for D being non empty set
for bD being FinSequence of D
for MD being Matrix of D holds
( MD = LineVec2Mx bD iff ( Line MD,1 = bD & len MD = 1 ) )
proof end;

theorem Th26: :: MATRIX15:26
for D being non empty set
for bD being FinSequence of D
for MD being Matrix of D st ( len MD <> 0 or len bD <> 0 ) holds
( MD = ColVec2Mx bD iff ( Col MD,1 = bD & width MD = 1 ) )
proof end;

theorem :: MATRIX15:27
for K being Field
for f, g being FinSequence of K st len f = len g holds
(LineVec2Mx f) + (LineVec2Mx g) = LineVec2Mx (f + g)
proof end;

theorem Th28: :: MATRIX15:28
for K being Field
for f, g being FinSequence of K st len f = len g holds
(ColVec2Mx f) + (ColVec2Mx g) = ColVec2Mx (f + g)
proof end;

theorem :: MATRIX15:29
for K being Field
for a being Element of K
for f being FinSequence of K holds a * (LineVec2Mx f) = LineVec2Mx (a * f)
proof end;

theorem Th30: :: MATRIX15:30
for K being Field
for a being Element of K
for f being FinSequence of K holds a * (ColVec2Mx f) = ColVec2Mx (a * f)
proof end;

theorem :: MATRIX15:31
for k being Nat
for K being Field holds LineVec2Mx (k |-> (0. K)) = 0. K,1,k
proof end;

theorem Th32: :: MATRIX15:32
for k being Nat
for K being Field holds ColVec2Mx (k |-> (0. K)) = 0. K,k,1
proof end;

definition
let K be Field;
let A, B be Matrix of K;
func Solutions_of A,B -> set equals :: MATRIX15:def 3
{ X where X is Matrix of K : ( len X = width A & width X = width B & A * X = B ) } ;
coherence
{ X where X is Matrix of K : ( len X = width A & width X = width B & A * X = B ) } is set
;
end;

:: deftheorem defines Solutions_of MATRIX15:def 3 :
for K being Field
for A, B being Matrix of K holds Solutions_of A,B = { X where X is Matrix of K : ( len X = width A & width X = width B & A * X = B ) } ;

theorem Th33: :: MATRIX15:33
for K being Field
for A, B being Matrix of K st not Solutions_of A,B is empty holds
len A = len B
proof end;

theorem :: MATRIX15:34
for i being Nat
for K being Field
for X, A, B being Matrix of K st X in Solutions_of A,B & i in Seg (width X) & Col X,i = (len X) |-> (0. K) holds
Col B,i = (len B) |-> (0. K)
proof end;

theorem Th35: :: MATRIX15:35
for K being Field
for a being Element of K
for X, A, B being Matrix of K st X in Solutions_of A,B holds
( a * X in Solutions_of A,(a * B) & X in Solutions_of (a * A),(a * B) )
proof end;

theorem :: MATRIX15:36
for K being Field
for a being Element of K
for A, B being Matrix of K st a <> 0. K holds
Solutions_of A,B = Solutions_of (a * A),(a * B)
proof end;

Lm3: for D being non empty set
for A, B being Matrix of D st len A = len B & width A = 0 & width B = 0 holds
A = B
proof end;

theorem Th37: :: MATRIX15:37
for K being Field
for X1, A, B1, X2, B2 being Matrix of K st X1 in Solutions_of A,B1 & X2 in Solutions_of A,B2 & width B1 = width B2 holds
X1 + X2 in Solutions_of A,(B1 + B2)
proof end;

theorem Th38: :: MATRIX15:38
for n, m, k, i being Nat
for K being Field
for a being Element of K
for X being Matrix of K
for A' being Matrix of m,n,K
for B' being Matrix of m,k,K st X in Solutions_of A',B' holds
X in Solutions_of (RLine A',i,(a * (Line A',i))),(RLine B',i,(a * (Line B',i)))
proof end;

Lm4: for n, m, k, i being Nat
for K being Field
for a being Element of K
for A' being Matrix of m,n,K
for B' being Matrix of m,k,K st a <> 0. K holds
Solutions_of A',B' = Solutions_of (RLine A',i,(a * (Line A',i))),(RLine B',i,(a * (Line B',i)))
proof end;

theorem Th39: :: MATRIX15:39
for n, k, j, m, i being Nat
for K being Field
for a being Element of K
for X being Matrix of K
for A' being Matrix of m,n,K
for B' being Matrix of m,k,K st X in Solutions_of A',B' & j in Seg m & i <> j holds
X in Solutions_of (RLine A',i,((Line A',i) + (a * (Line A',j)))),(RLine B',i,((Line B',i) + (a * (Line B',j))))
proof end;

Lm5: for n, k, j, m, i being Nat
for K being Field
for a being Element of K
for A' being Matrix of m,n,K
for B' being Matrix of m,k,K st j in Seg m & i <> j holds
Solutions_of A',B' = Solutions_of (RLine A',i,((Line A',i) + (a * (Line A',j)))),(RLine B',i,((Line B',i) + (a * (Line B',j))))
proof end;

theorem Th40: :: MATRIX15:40
for n, k, j, m, i being Nat
for K being Field
for a being Element of K
for A' being Matrix of m,n,K
for B' being Matrix of m,k,K st j in Seg m & ( i = j implies a <> - (1_ K) ) holds
Solutions_of A',B' = Solutions_of (RLine A',i,((Line A',i) + (a * (Line A',j)))),(RLine B',i,((Line B',i) + (a * (Line B',j))))
proof end;

theorem Th41: :: MATRIX15:41
for i being Nat
for K being Field
for X, A, B being Matrix of K st X in Solutions_of A,B & i in dom A & Line A,i = (width A) |-> (0. K) holds
Line B,i = (width B) |-> (0. K)
proof end;

Lm6: for n, i being Nat
for K being Field
for A being Matrix of K
for nt being Element of n -tuples_on NAT st i in Seg n holds
Line (Segm A,nt,(Sgm (Seg (width A)))),i = Line A,(nt . i)
proof end;

theorem Th42: :: MATRIX15:42
for n being Nat
for K being Field
for A, B being Matrix of K
for nt being Element of n -tuples_on NAT st rng nt c= dom A & n > 0 holds
Solutions_of A,B c= Solutions_of (Segm A,nt,(Sgm (Seg (width A)))),(Segm B,nt,(Sgm (Seg (width B))))
proof end;

theorem Th43: :: MATRIX15:43
for n being Nat
for K being Field
for A, B being Matrix of K
for nt being Element of n -tuples_on NAT st rng nt c= dom A & dom A = dom B & n > 0 & ( for i being Nat st i in (dom A)