Article MATRIX15, MML version 4.99.1005

:: MATRIX15:th 1
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being Element of the carrier of b1
for b3, b4 being tabular FinSequence of (the carrier of b1) *
      st width b3 = len b4
   holds (b2 * b3) * b4 = b2 * (b3 * b4);

:: MATRIX15:th 2
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being Element of the carrier of b1
for b4 being tabular FinSequence of (the carrier of b1) * holds
   (1_ b1) * b4 = b4 &
    b2 * (b3 * b4) = (b2 * b3) * b4;

:: MATRIX15:th 3
theorem
for b1 being non empty addLoopStr
for b2, b3, b4, b5 being FinSequence of the carrier of b1
      st len b2 = len b3 & len b4 = len b5
   holds (b2 ^ b4) + (b3 ^ b5) = (b2 + b3) ^ (b4 + b5);

:: MATRIX15:th 4
theorem
for b1 being non empty multMagma
for b2, b3 being FinSequence of the carrier of b1
for b4 being Element of the carrier of b1 holds
   b4 * (b2 ^ b3) = (b4 * b2) ^ (b4 * b3);

:: MATRIX15:th 5
theorem
for b1 being Relation-like Function-like set
for b2, b3, b4, b5 being Relation-like Function-like FinSequence-like set
      st proj2 b2 c= proj1 b1 & proj2 b3 c= proj1 b1 & b4 = b2 * b1 & b5 = b3 * b1
   holds (b2 ^ b3) * b1 = b4 ^ b5;

:: MATRIX15:th 6
theorem
for b1 being FinSequence of NAT
for b2 being natural set
      st b1 is one-to-one &
         proj2 b1 c= Seg b2 &
         (for b3, b4 being natural set
               st b3 in dom b1 & b4 in dom b1 & b3 < b4
            holds b1 . b3 < b1 . b4)
   holds Sgm proj2 b1 = b1;

:: MATRIX15:th 7
theorem
for b1 being non empty right_complementable Abelian add-associative right_zeroed addLoopStr
for b2 being FinSequence of the carrier of b1
for b3, b4 being natural set
      st b3 in dom b2 &
         b4 in dom b2 &
         b3 <> b4 &
         (for b5 being natural set
               st b5 in dom b2 & b5 <> b3 & b5 <> b4
            holds b2 . b5 = 0. b1)
   holds Sum b2 = (b2 /. b3) + (b2 /. b4);

:: MATRIX15:th 8
theorem
for b1, b2, b3 being natural set
      st b1 in Seg b2
   holds (Sgm ((Seg (b3 + b2)) \ Seg b3)) . b1 = b3 + b1;

:: MATRIX15:th 9
theorem
for b1 being non empty set
for b2 being tabular FinSequence of b1 *
for b3, b4, b5, b6 being finite with_non-empty_elements Element of bool NAT
   st [:b3,b4:] c= Indices b2 & [:b5,b6:] c= Indices b2
for b7 being Matrix of card b3,card b4,b1
for b8 being Matrix of card b5,card b6,b1
      st for b9, b10, b11, b12, b13, b14 being natural set
              st [b9,b10] in [:b3,b4:] /\ [:b5,b6:] &
                 b11 = (Sgm b3) " . b9 &
                 b12 = (Sgm b4) " . b10 &
                 b13 = (Sgm b5) " . b9 &
                 b14 = (Sgm b6) " . b10
           holds b7 *(b11,b12) = b8 *(b13,b14)
   holds ex b9 being Matrix of len b2,width b2,b1 st
      Segm(b9,b3,b4) = b7 &
       Segm(b9,b5,b6) = b8 &
       (for b10, b11 being natural set
             st [b10,b11] in (Indices b9) \ ([:b3,b4:] \/ [:b5,b6:])
          holds b9 *(b10,b11) = b2 *(b10,b11));

:: MATRIX15:th 10
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
for b3, b4, b5 being finite with_non-empty_elements Element of bool NAT
   st [:b3,b5:] c= Indices b2
for b6, b7 being natural set
      st b6 in (dom b2) \ b3 &
         b7 in (Seg width b2) \ b4 &
         b2 *(b6,b7) <> 0. b1 &
         b4 c= b5 &
         (Line(b2,b6)) * Sgm b5 = (card b5) |-> 0. b1
   holds the_rank_of Segm(b2,b3,b4) < the_rank_of b2;

:: MATRIX15:th 11
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
for b3 being finite with_non-empty_elements Element of bool NAT
      st b3 c= dom b2 &
         (for b4 being natural set
               st b4 in (dom b2) \ b3
            holds Line(b2,b4) = (width b2) |-> 0. b1)
   holds the_rank_of b2 = the_rank_of Segm(b2,b3,Seg width b2);

:: MATRIX15:th 12
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
for b3 being finite with_non-empty_elements Element of bool NAT
      st b3 c= Seg width b2 &
         (for b4 being natural set
               st b4 in (Seg width b2) \ b3
            holds Col(b2,b4) = (len b2) |-> 0. b1)
   holds the_rank_of b2 = the_rank_of Segm(b2,Seg len b2,b3);

:: MATRIX15:th 13
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1
for b3 being finite Element of bool the carrier of b2
for b4, b5 being Element of the carrier of b2
for b6 being Element of the carrier of b1
      st b4 in b3 & b5 in b3
   holds Lin ((b3 \ {b4}) \/ {b4 + (b6 * b5)}) is Subspace of Lin b3;

:: MATRIX15:th 14
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1
for b3 being finite Element of bool the carrier of b2
for b4, b5 being Element of the carrier of b2
for b6 being Element of the carrier of b1
      st b4 in b3 &
         b5 in b3 &
         (b4 = b5 & b6 = - 1_ b1 implies b4 = 0. b2)
   holds Lin ((b3 \ {b4}) \/ {b4 + (b6 * b5)}) = Lin b3;

:: MATRIX15:funcnot 1 => MATRIX15:func 1
definition
  let a1 be non empty set;
  let a2, a3, a4 be natural set;
  let a5 be Matrix of a2,a3,a1;
  let a6 be Matrix of a2,a4,a1;
  redefine func a5 ^^ a6 -> Matrix of a2,(width a5) + width a6,a1;
end;

:: MATRIX15:th 15
theorem
for b1, b2, b3 being natural set
for b4 being non empty set
for b5 being Matrix of b1,b2,b4
for b6 being Matrix of b1,b3,b4
for b7 being natural set
      st b7 in Seg b1
   holds Line(b5 ^^ b6,b7) = (Line(b5,b7)) ^ Line(b6,b7);

:: MATRIX15:th 16
theorem
for b1, b2, b3 being natural set
for b4 being non empty set
for b5 being Matrix of b1,b2,b4
for b6 being Matrix of b1,b3,b4
for b7 being natural set
      st b7 in Seg width b5
   holds Col(b5 ^^ b6,b7) = Col(b5,b7);

:: MATRIX15:th 17
theorem
for b1, b2, b3 being natural set
for b4 being non empty set
for b5 being Matrix of b1,b2,b4
for b6 being Matrix of b1,b3,b4
for b7 being natural set
      st b7 in Seg width b6
   holds Col(b5 ^^ b6,(width b5) + b7) = Col(b6,b7);

:: MATRIX15:th 18
theorem
for b1, b2, b3, b4 being natural set
for b5 being non empty set
for b6 being Matrix of b1,b2,b5
for b7 being Matrix of b1,b3,b5
for b8, b9 being FinSequence of b5
      st len b8 = width b6 & len b9 = width b7
   holds ReplaceLine(b6 ^^ b7,b4,b8 ^ b9) = (ReplaceLine(b6,b4,b8)) ^^ ReplaceLine(b7,b4,b9);

:: MATRIX15:th 19
theorem
for b1, b2, b3 being natural set
for b4 being non empty set
for b5 being Matrix of b1,b2,b4
for b6 being Matrix of b1,b3,b4 holds
   Segm(b5 ^^ b6,Seg b1,Seg width b5) = b5 &
    Segm(b5 ^^ b6,Seg b1,(Seg ((width b5) + width b6)) \ Seg width b5) = b6;

:: MATRIX15:th 20
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) *
      st len b2 = len b3
   holds the_rank_of b2 <= the_rank_of (b2 ^^ b3) & the_rank_of b3 <= the_rank_of (b2 ^^ b3);

:: MATRIX15:th 21
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) *
      st len b2 = len b3 & len b2 = the_rank_of b2
   holds the_rank_of b2 = the_rank_of (b2 ^^ b3);

:: MATRIX15:th 22
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) *
      st len b2 = len b3 & width b2 = {}
   holds b2 ^^ b3 = b3 & b3 ^^ b2 = b3;

:: MATRIX15:th 23
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b3, b4 being tabular FinSequence of (the carrier of b2) *
      st b4 = 0.(b2,len b3,b1)
   holds the_rank_of b3 = the_rank_of (b3 ^^ b4);

:: MATRIX15:th 24
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) *
   st the_rank_of b2 = the_rank_of (b2 ^^ b3) & len b2 = len b3
for b4 being finite with_non-empty_elements Element of bool NAT
   st b4 c= dom b2 &
      (for b5 being natural set
            st b5 in b4
         holds Line(b2,b5) = (width b2) |-> 0. b1)
for b5 being natural set
      st b5 in b4
   holds Line(b3,b5) = (width b3) |-> 0. b1;

:: MATRIX15:funcnot 2 => MATRIX15:func 2
definition
  let a1 be non empty set;
  let a2 be FinSequence of a1;
  func LineVec2Mx A2 -> Matrix of 1,len a2,a1 equals
    <*a2*>;
end;

:: MATRIX15:def 1
theorem
for b1 being non empty set
for b2 being FinSequence of b1 holds
   LineVec2Mx b2 = <*b2*>;

:: MATRIX15:funcnot 3 => MATRIX15:func 3
definition
  let a1 be non empty set;
  let a2 be FinSequence of a1;
  func ColVec2Mx A2 -> Matrix of len a2,1,a1 equals
    <*a2*> @;
end;

:: MATRIX15:def 2
theorem
for b1 being non empty set
for b2 being FinSequence of b1 holds
   ColVec2Mx b2 = <*b2*> @;

:: MATRIX15:th 25
theorem
for b1 being non empty set
for b2 being FinSequence of b1
for b3 being tabular FinSequence of b1 * holds
      b3 = LineVec2Mx b2
   iff
      Line(b3,1) = b2 & len b3 = 1;

:: MATRIX15:th 26
theorem
for b1 being non empty set
for b2 being FinSequence of b1
for b3 being tabular FinSequence of b1 *
      st (len b3 = {} implies len b2 <> {})
   holds    b3 = ColVec2Mx b2
   iff
      Col(b3,1) = b2 & width b3 = 1;

:: MATRIX15:th 27
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being FinSequence of the carrier of b1
      st len b2 = len b3
   holds (LineVec2Mx b2) + LineVec2Mx b3 = LineVec2Mx (b2 + b3);

:: MATRIX15:th 28
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being FinSequence of the carrier of b1
      st len b2 = len b3
   holds (ColVec2Mx b2) + ColVec2Mx b3 = ColVec2Mx (b2 + b3);

:: MATRIX15:th 29
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being Element of the carrier of b1
for b3 being FinSequence of the carrier of b1 holds
   b2 * LineVec2Mx b3 = LineVec2Mx (b2 * b3);

:: MATRIX15:th 30
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being Element of the carrier of b1
for b3 being FinSequence of the carrier of b1 holds
   b2 * ColVec2Mx b3 = ColVec2Mx (b2 * b3);

:: MATRIX15:th 31
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr holds
   LineVec2Mx (b1 |-> 0. b2) = 0.(b2,1,b1);

:: MATRIX15:th 32
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr holds
   ColVec2Mx (b1 |-> 0. b2) = 0.(b2,b1,1);

:: MATRIX15:funcnot 4 => MATRIX15:func 4
definition
  let a1 be non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2, a3 be tabular FinSequence of (the carrier of a1) *;
  func Solutions_of(A2,A3) -> set equals
    {b1 where b1 is tabular FinSequence of (the carrier of a1) *: len b1 = width a2 & width b1 = width a3 & a2 * b1 = a3};
end;

:: MATRIX15:def 3
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) * holds
Solutions_of(b2,b3) = {b4 where b4 is tabular FinSequence of (the carrier of b1) *: len b4 = width b2 & width b4 = width b3 & b2 * b4 = b3};

:: MATRIX15:th 33
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) *
      st Solutions_of(b2,b3) is not empty
   holds len b2 = len b3;

:: MATRIX15:th 34
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b3, b4, b5 being tabular FinSequence of (the carrier of b2) *
      st b3 in Solutions_of(b4,b5) & b1 in Seg width b3 & Col(b3,b1) = (len b3) |-> 0. b2
   holds Col(b5,b1) = (len b5) |-> 0. b2;

:: MATRIX15:th 35
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being Element of the carrier of b1
for b3, b4, b5 being tabular FinSequence of (the carrier of b1) *
      st b3 in Solutions_of(b4,b5)
   holds b2 * b3 in Solutions_of(b4,b2 * b5) & b3 in Solutions_of(b2 * b4,b2 * b5);

:: MATRIX15:th 36
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being Element of the carrier of b1
for b3, b4 being tabular FinSequence of (the carrier of b1) *
      st b2 <> 0. b1
   holds Solutions_of(b3,b4) = Solutions_of(b2 * b3,b2 * b4);

:: MATRIX15:th 37
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3, b4, b5, b6 being tabular FinSequence of (the carrier of b1) *
      st b2 in Solutions_of(b3,b4) & b5 in Solutions_of(b3,b6) & width b4 = width b6
   holds b2 + b5 in Solutions_of(b3,b4 + b6);

:: MATRIX15:th 38
theorem
for b1, b2, b3, b4 being natural set
for b5 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b6 being Element of the carrier of b5
for b7 being tabular FinSequence of (the carrier of b5) *
for b8 being Matrix of b2,b1,the carrier of b5
for b9 being Matrix of b2,b3,the carrier of b5
      st b7 in Solutions_of(b8,b9)
   holds b7 in Solutions_of(ReplaceLine(b8,b4,b6 * Line(b8,b4)),ReplaceLine(b9,b4,b6 * Line(b9,b4)));

:: MATRIX15:th 39
theorem
for b1, b2, b3, b4, b5 being natural set
for b6 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b7 being Element of the carrier of b6
for b8 being tabular FinSequence of (the carrier of b6) *
for b9 being Matrix of b4,b1,the carrier of b6
for b10 being Matrix of b4,b2,the carrier of b6
      st b8 in Solutions_of(b9,b10) & b3 in Seg b4 & b5 <> b3
   holds b8 in Solutions_of(ReplaceLine(b9,b5,(Line(b9,b5)) + (b7 * Line(b9,b3))),ReplaceLine(b10,b5,(Line(b10,b5)) + (b7 * Line(b10,b3))));

:: MATRIX15:th 40
theorem
for b1, b2, b3, b4, b5 being natural set
for b6 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b7 being Element of the carrier of b6
for b8 being Matrix of b4,b1,the carrier of b6
for b9 being Matrix of b4,b2,the carrier of b6
      st b3 in Seg b4 & (b5 = b3 implies b7 <> - 1_ b6)
   holds Solutions_of(b8,b9) = Solutions_of(ReplaceLine(b8,b5,(Line(b8,b5)) + (b7 * Line(b8,b3))),ReplaceLine(b9,b5,(Line(b9,b5)) + (b7 * Line(b9,b3))));

:: MATRIX15:th 41
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b3, b4, b5 being tabular FinSequence of (the carrier of b2) *
      st b3 in Solutions_of(b4,b5) & b1 in dom b4 & Line(b4,b1) = (width b4) |-> 0. b2
   holds Line(b5,b1) = (width b5) |-> 0. b2;

:: MATRIX15:th 42
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b3, b4 being tabular FinSequence of (the carrier of b2) *
for b5 being Element of b1 -tuples_on NAT
      st proj2 b5 c= dom b3 & {} < b1
   holds Solutions_of(b3,b4) c= Solutions_of(Segm(b3,b5,Sgm Seg width b3),Segm(b4,b5,Sgm Seg width b4));

:: MATRIX15:th 43
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b3, b4 being tabular FinSequence of (the carrier of b2) *
for b5 being Element of b1 -tuples_on NAT
      st proj2 b5 c= dom b3 &
         dom b3 = dom b4 &
         {} < b1 &
         (for b6 being natural set
               st b6 in (dom b3) \ proj2 b5
            holds Line(b3,b6) = (width b3) |-> 0. b2 & Line(b4,b6) = (width b4) |-> 0. b2)
   holds Solutions_of(b3,b4) = Solutions_of(Segm(b3,b5,Sgm Seg width b3),Segm(b4,b5,Sgm Seg width b4));

:: MATRIX15:th 44
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) *
for b4 being finite with_non-empty_elements Element of bool NAT
      st b4 c= dom b2 & b4 is not empty
   holds Solutions_of(b2,b3) c= Solutions_of(Segm(b2,b4,Seg width b2),Segm(b3,b4,Seg width b3));

:: MATRIX15:th 45
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) *
for b4 being finite with_non-empty_elements Element of bool NAT
      st b4 c= dom b2 &
         b4 is not empty &
         dom b2 = dom b3 &
         (for b5 being natural set
               st b5 in (dom b2) \ b4
            holds Line(b2,b5) = (width b2) |-> 0. b1 & Line(b3,b5) = (width b3) |-> 0. b1)
   holds Solutions_of(b2,b3) = Solutions_of(Segm(b2,b4,Seg width b2),Segm(b3,b4,Seg width b3));

:: MATRIX15:th 46
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b3, b4 being tabular FinSequence of (the carrier of b2) *
      st b1 in dom b3 & 1 < len b3
   holds Solutions_of(b3,b4) c= Solutions_of(DelLine(b3,b1),DelLine(b4,b1));

:: MATRIX15:th 47
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) *
for b4 being natural set
      st b4 in dom b2 & 1 < len b2 & Line(b2,b4) = (width b2) |-> 0. b1 & b4 in dom b3 & Line(b3,b4) = (width b3) |-> 0. b1
   holds Solutions_of(b2,b3) = Solutions_of(DelLine(b2,b4),DelLine(b3,b4));

:: MATRIX15:th 48
theorem
for b1, b2, b3 being natural set
for b4 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b5 being Matrix of b1,b2,the carrier of b4
for b6 being Matrix of b1,b3,the carrier of b4
for b7 being Function-like quasi_total Relation of Seg b1,Seg b1 holds
   Solutions_of(b5,b6) c= Solutions_of(b5 * b7,b6 * b7) &
    (b7 is one-to-one implies Solutions_of(b5,b6) = Solutions_of(b5 * b7,b6 * b7));

:: MATRIX15:th 49
theorem
for b1, b2 being natural set
for b3 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b4 being Matrix of b1,b2,the carrier of b3
for b5 being finite with_non-empty_elements Element of bool NAT
      st card b5 = b1 & b5 c= Seg b2 & Segm(b4,Seg b1,b5) = 1.(b3,b1) & {} < b1
   holds ex b6 being Matrix of b2 -' b1,b2,the carrier of b3 st
      Segm(b6,Seg (b2 -' b1),(Seg b2) \ b5) = 1.(b3,b2 -' b1) &
       Segm(b6,Seg (b2 -' b1),b5) = - ((Segm(b4,Seg b1,(Seg b2) \ b5)) @) &
       (for b7 being natural set
       for b8 being Matrix of b2,b7,the carrier of b3
             st for b9 being natural set
                     st b9 in Seg b7 &
                        (for b10 being natural set
                              st b10 in Seg (b2 -' b1)
                           holds Col(b8,b9) <> Line(b6,b10))
                  holds Col(b8,b9) = b2 |-> 0. b3
          holds b8 in Solutions_of(b4,0.(b3,b1,b7)));

:: MATRIX15:th 50
theorem
for b1, b2, b3 being natural set
for b4 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b5 being Matrix of b1,b2,the carrier of b4
for b6 being Matrix of b1,b3,the carrier of b4
for b7 being finite with_non-empty_elements Element of bool NAT
      st card b7 = b1 & b7 c= Seg b2 & {} < b1 & Segm(b5,Seg b1,b7) = 1.(b4,b1)
   holds ex b8 being Matrix of b2,b3,the carrier of b4 st
      Segm(b8,(Seg b2) \ b7,Seg b3) = 0.(b4,b2 -' b1,b3) &
       Segm(b8,b7,Seg b3) = b6 &
       b8 in Solutions_of(b5,b6);

:: MATRIX15:th 51
theorem
for b1, b2 being natural set
for b3 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b4 being Matrix of {},b1,the carrier of b3
for b5 being Matrix of {},b2,the carrier of b3 holds
   Solutions_of(b4,b5) = {{}};

:: MATRIX15:th 52
theorem
for b1, b2 being natural set
for b3 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b4 being tabular FinSequence of (the carrier of b3) *
      st Solutions_of(0.(b3,b1,b2),b4) is not empty
   holds b4 = 0.(b3,b1,width b4);

:: MATRIX15:th 53
theorem
for b1 being set
for b2, b3, b4 being natural set
for b5 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b6 being Matrix of b2,b3,the carrier of b5
for b7 being Matrix of b2,b4,the carrier of b5
      st {} < b2 & b1 in Solutions_of(b6,b7)
   holds b1 is Matrix of b3,b4,the carrier of b5;

:: MATRIX15:th 54
theorem
for b1, b2, b3 being natural set
for b4 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
      st {} < b1 & {} < b2
   holds Solutions_of(0.(b4,b1,b2),0.(b4,b1,b3)) = {b5 where b5 is Matrix of b2,b3,the carrier of b4: TRUE};

:: MATRIX15:th 55
theorem
for b1, b2 being natural set
for b3 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
      st {} < b1 &
         Solutions_of(0.(b3,b1,{}),0.(b3,b1,b2)) is not empty
   holds b2 = {};

:: MATRIX15:th 56
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr holds
   Solutions_of(0.(b2,b1,{}),0.(b2,b1,{})) = {{}};

:: MATRIX15:sch 1
scheme MATRIX15:sch 1
{F1 -> non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr,
  F2 -> natural set,
  F3 -> natural set,
  F4 -> natural set,
  F5 -> Matrix of F2(),F3(),the carrier of F1(),
  F6 -> Matrix of F2(),F4(),the carrier of F1(),
  F7 -> Matrix of F2(),F4(),the carrier of F1()}:
ex b1 being Matrix of F2(),F3(),the carrier of F1() st
   ex b2 being Matrix of F2(),F4(),the carrier of F1() st
      ex b3 being finite with_non-empty_elements Element of bool NAT st
         b3 c= Seg F3() &
          the_rank_of F5() = the_rank_of b1 &
          the_rank_of F5() = card b3 &
          P1[b1, b2] &
          Segm(b1,Seg card b3,b3) is diagonal(F1()) &
          (for b4 being natural set
                st b4 in Seg card b3
             holds b1 *(b4,(Sgm b3) /. b4) <> 0. F1()) &
          (for b4 being natural set
                st b4 in dom b1 & card b3 < b4
             holds Line(b1,b4) = F3() |-> 0. F1()) &
          (for b4, b5 being natural set
                st b4 in Seg card b3 & b5 in Seg width b1 & b5 < (Sgm b3) . b4
             holds b1 *(b4,b5) = 0. F1())
provided
   P1[F5(), F6()]
and
   for b1 being Matrix of F2(),F3(),the carrier of F1()
   for b2 being Matrix of F2(),F4(),the carrier of F1()
      st P1[b1, b2]
   for b3, b4 being natural set
      st b3 <> b4 & b4 in dom b1
   for b5 being Element of the carrier of F1() holds
      P1[ReplaceLine(b1,b3,(Line(b1,b3)) + (b5 * Line(b1,b4))), F7(b2, b3, b4, b5)];


:: MATRIX15:sch 2
scheme MATRIX15:sch 2
{F1 -> non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr,
  F2 -> natural set,
  F3 -> natural set,
  F4 -> natural set,
  F5 -> Matrix of F2(),F3(),the carrier of F1(),
  F6 -> Matrix of F2(),F4(),the carrier of F1(),
  F7 -> Matrix of F2(),F4(),the carrier of F1()}:
ex b1 being Matrix of F2(),F3(),the carrier of F1() st
   ex b2 being Matrix of F2(),F4(),the carrier of F1() st
      ex b3 being finite with_non-empty_elements Element of bool NAT st
         b3 c= Seg F3() &
          the_rank_of F5() = the_rank_of b1 &
          the_rank_of F5() = card b3 &
          P1[b1, b2] &
          Segm(b1,Seg card b3,b3) = 1.(F1(),card b3) &
          (for b4 being natural set
                st b4 in dom b1 & card b3 < b4
             holds Line(b1,b4) = F3() |-> 0. F1()) &
          (for b4, b5 being natural set
                st b4 in Seg card b3 & b5 in Seg width b1 & b5 < (Sgm b3) . b4
             holds b1 *(b4,b5) = 0. F1())
provided
   P1[F5(), F6()]
and
   for b1 being Matrix of F2(),F3(),the carrier of F1()
   for b2 being Matrix of F2(),F4(),the carrier of F1()
      st P1[b1, b2]
   for b3 being Element of the carrier of F1()
   for b4, b5 being natural set
         st b5 in dom b1 & (b4 = b5 implies b3 <> - 1_ F1())
      holds P1[ReplaceLine(b1,b4,(Line(b1,b4)) + (b3 * Line(b1,b5))), F7(b2, b4, b5, b3)];


:: MATRIX15:th 57
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) *
      st len b2 = len b3 &
         (width b2 = {} implies width b3 = {})
   holds    the_rank_of b2 = the_rank_of (b2 ^^ b3)
   iff
      Solutions_of(b2,b3) is not empty;

:: MATRIX15:funcnot 5 => MATRIX15:func 5
definition
  let a1 be non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be tabular FinSequence of (the carrier of a1) *;
  let a3 be FinSequence of the carrier of a1;
  func Solutions_of(A2,A3) -> set equals
    {b1 where b1 is FinSequence of the carrier of a1: ColVec2Mx b1 in Solutions_of(a2,ColVec2Mx a3)};
end;

:: MATRIX15:def 4
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
for b3 being FinSequence of the carrier of b1 holds
   Solutions_of(b2,b3) = {b4 where b4 is FinSequence of the carrier of b1: ColVec2Mx b4 in Solutions_of(b2,ColVec2Mx b3)};

:: MATRIX15:th 58
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
for b3 being FinSequence of the carrier of b1
for b4 being set
      st b4 in Solutions_of(b2,ColVec2Mx b3)
   holds ex b5 being FinSequence of the carrier of b1 st
      b4 = ColVec2Mx b5 & len b5 = width b2;

:: MATRIX15:th 59
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
for b3, b4 being FinSequence of the carrier of b1
      st ColVec2Mx b4 in Solutions_of(b2,ColVec2Mx b3)
   holds len b4 = width b2;

:: MATRIX15:funcnot 6 => MATRIX15:func 6
definition
  let a1 be non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be tabular FinSequence of (the carrier of a1) *;
  let a3 be FinSequence of the carrier of a1;
  redefine func Solutions_of(a2,a3) -> Element of bool the carrier of (width a2) -VectSp_over a1;
end;

:: MATRIX15:funcreg 1
registration
  let a1 be non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be tabular FinSequence of (the carrier of a1) *;
  let a3 be Element of NAT;
  cluster Solutions_of(a2,a3 |-> 0. a1) -> linearly-closed;
end;

:: MATRIX15:th 60
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
for b3 being FinSequence of the carrier of b1
      st Solutions_of(b2,b3) is not empty & width b2 = {}
   holds len b2 = {};

:: MATRIX15:th 61
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
      st (width b2 = {} implies len b2 = {})
   holds Solutions_of(b2,(len b2) |-> 0. b1) is not empty;

:: MATRIX15:funcnot 7 => MATRIX15:func 7
definition
  let a1 be non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be tabular FinSequence of (the carrier of a1) *;
  assume (width a2 = {} implies len a2 = {});
  func Space_of_Solutions_of A2 -> strict Subspace of (width a2) -VectSp_over a1 means
    the carrier of it = Solutions_of(a2,(len a2) |-> 0. a1);
end;

:: MATRIX15:def 5
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
   st (width b2 = {} implies len b2 = {})
for b3 being strict Subspace of (width b2) -VectSp_over b1 holds
      b3 = Space_of_Solutions_of b2
   iff
      the carrier of b3 = Solutions_of(b2,(len b2) |-> 0. b1);

:: MATRIX15:th 62
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
for b3 being FinSequence of the carrier of b1
      st Solutions_of(b2,b3) is not empty
   holds Solutions_of(b2,b3) is Coset of Space_of_Solutions_of b2;

:: MATRIX15:th 63
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
      st (width b2 = {} implies len b2 = {}) &
         the_rank_of b2 = {}
   holds Space_of_Solutions_of b2 = (width b2) -VectSp_over b1;

:: MATRIX15:th 64
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
      st Space_of_Solutions_of b2 = (width b2) -VectSp_over b1
   holds the_rank_of b2 = {};

:: MATRIX15:th 65
theorem
for b1, b2 being natural set
for b3 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b4 being Element of the carrier of b3
for b5 being Matrix of b1,b2,the carrier of b3
for b6, b7 being natural set
      st b7 in Seg b1 & {} < b2 & (b6 = b7 implies b4 <> - 1_ b3)
   holds Space_of_Solutions_of b5 = Space_of_Solutions_of ReplaceLine(b5,b6,(Line(b5,b6)) + (b4 * Line(b5,b7)));

:: MATRIX15:th 66
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
for b3 being finite with_non-empty_elements Element of bool NAT
      st b3 c= dom b2 &
         b3 is not empty &
         {} < width b2 &
         (for b4 being natural set
               st b4 in (dom b2) \ b3
            holds Line(b2,b4) = (width b2) |-> 0. b1)
   holds Space_of_Solutions_of b2 = Space_of_Solutions_of Segm(b2,b3,Seg width b2);

:: MATRIX15:th 67
theorem
for b1, b2 being natural set
for b3 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b4 being Matrix of b1,b2,the carrier of b3
for b5 being finite with_non-empty_elements Element of bool NAT
      st card b5 = b1 & b5 c= Seg b2 & Segm(b4,Seg b1,b5) = 1.(b3,b1) & {} < b1 & {} < b2 -' b1
   holds ex b6 being Matrix of b2 -' b1,b2,the carrier of b3 st
      Segm(b6,Seg (b2 -' b1),(Seg b2) \ b5) = 1.(b3,b2 -' b1) &
       Segm(b6,Seg (b2 -' b1),b5) = - ((Segm(b4,Seg b1,(Seg b2) \ b5)) @) &
       Lin lines b6 = Space_of_Solutions_of b4;

:: MATRIX15:th 68
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
      st (width b2 = {} implies len b2 = {})
   holds dim Space_of_Solutions_of b2 = (width b2) - the_rank_of b2;

:: MATRIX15:th 69
theorem
for b1, b2 being natural set
for b3 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b4 being Matrix of b1,b2,the carrier of b3
for b5, b6 being natural set
for b7 being Element of the carrier of b3
      st b4 is one-to-one & b6 in dom b4 & (b5 = b6 implies b7 <> - 1_ b3)
   holds Lin lines b4 = Lin lines ReplaceLine(b4,b5,(Line(b4,b5)) + (b7 * Line(b4,b6)));

:: MATRIX15:th 70
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b3 being Subspace of b1 -VectSp_over b2 holds
   ex b4 being Matrix of dim b3,b1,the carrier of b2 st
      ex b5 being finite with_non-empty_elements Element of bool NAT st
         b5 c= Seg b1 &
          dim b3 = card b5 &
          Segm(b4,Seg dim b3,b5) = 1.(b2,dim b3) &
          the_rank_of b4 = dim b3 &
          lines b4 is Basis of b3;

:: MATRIX15:th 71
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b3 being strict Subspace of b1 -VectSp_over b2
      st dim b3 < b1
   holds ex b4 being Matrix of b1 -' dim b3,b1,the carrier of b2 st
      ex b5 being finite with_non-empty_elements Element of bool NAT st
         card b5 = b1 -' dim b3 &
          b5 c= Seg b1 &
          Segm(b4,Seg (b1 -' dim b3),b5) = 1.(b2,b1 -' dim b3) &
          b3 = Space_of_Solutions_of b4;

:: MATRIX15:th 72
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) *
      st width b2 = len b3 &
         (width b2 = {} implies len b2 = {}) &
         (width b3 = {} implies len b3 = {})
   holds Space_of_Solutions_of b3 is Subspace of Space_of_Solutions_of (b2 * b3);

:: MATRIX15:th 73
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) *
      st width b2 = len b3
   holds the_rank_of (b2 * b3) <= the_rank_of b2 & the_rank_of (b2 * b3) <= the_rank_of b3;

:: MATRIX15:th 74
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b3 being Matrix of b1,b1,the carrier of b2
for b4 being tabular FinSequence of (the carrier of b2) *
      st Det b3 <> 0. b2 &
         width b3 = len b4 &
         (width b4 = {} implies len b4 = {})
   holds Space_of_Solutions_of b4 = Space_of_Solutions_of (b3 * b4);

:: MATRIX15:th 75
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b3 being Matrix of b1,b1,the carrier of b2
for b4 being tabular FinSequence of (the carrier of b2) *
      st width b3 = len b4 & Det b3 <> 0. b2
   holds the_rank_of (b3 * b4) = the_rank_of b4;

:: MATRIX15:th 76
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b3 being Matrix of b1,b1,the carrier of b2
for b4 being tabular FinSequence of (the carrier of b2) *
      st len b3 = width b4 & Det b3 <> 0. b2
   holds the_rank_of (b4 * b3) = the_rank_of b4;