Article MATRIX_3, MML version 4.99.1005

:: MATRIX_3:funcnot 1 => MATRIX_3:func 1
definition
  let a1 be non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr;
  let a2, a3 be natural set;
  func 0.(A1,A2,A3) -> Matrix of a2,a3,the carrier of a1 equals
    a2 |-> (a3 |-> 0. a1);
end;

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

:: MATRIX_3:funcnot 2 => MATRIX_3:func 2
definition
  let a1 be non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr;
  let a2 be tabular FinSequence of (the carrier of a1) *;
  func - A2 -> tabular FinSequence of (the carrier of a1) * means
    len it = len a2 &
     width it = width a2 &
     (for b1, b2 being natural set
           st [b1,b2] in Indices a2
        holds it *(b1,b2) = - (a2 *(b1,b2)));
end;

:: MATRIX_3:def 2
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) * holds
   b3 = - b2
iff
   len b3 = len b2 &
    width b3 = width b2 &
    (for b4, b5 being natural set
          st [b4,b5] in Indices b2
       holds b3 *(b4,b5) = - (b2 *(b4,b5)));

:: MATRIX_3:funcnot 3 => MATRIX_3:func 3
definition
  let a1 be non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr;
  let a2, a3 be tabular FinSequence of (the carrier of a1) *;
  func A2 + A3 -> tabular FinSequence of (the carrier of a1) * means
    len it = len a2 &
     width it = width a2 &
     (for b1, b2 being natural set
           st [b1,b2] in Indices a2
        holds it *(b1,b2) = (a2 *(b1,b2)) + (a3 *(b1,b2)));
end;

:: MATRIX_3:def 3
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b2, b3, b4 being tabular FinSequence of (the carrier of b1) * holds
   b4 = b2 + b3
iff
   len b4 = len b2 &
    width b4 = width b2 &
    (for b5, b6 being natural set
          st [b5,b6] in Indices b2
       holds b4 *(b5,b6) = (b2 *(b5,b6)) + (b3 *(b5,b6)));

:: MATRIX_3:th 3
theorem
for b1, b2 being natural set
for b3 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b4, b5 being natural set
      st [b4,b5] in Indices 0.(b3,b1,b2)
   holds (0.(b3,b1,b2)) *(b4,b5) = 0. b3;

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

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

:: MATRIX_3:th 6
theorem
for b1, b2 being natural set
for b3 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b4 being Matrix of b1,b2,the carrier of b3 holds
   b4 + 0.(b3,b1,b2) = b4;

:: MATRIX_3:th 7
theorem
for b1, b2 being natural set
for b3 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b4 being Matrix of b1,b2,the carrier of b3 holds
   b4 + - b4 = 0.(b3,b1,b2);

:: MATRIX_3:funcnot 4 => MATRIX_3:func 4
definition
  let a1 be non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr;
  let a2, a3 be tabular FinSequence of (the carrier of a1) *;
  assume width a2 = len a3;
  func A2 * A3 -> tabular FinSequence of (the carrier of a1) * means
    len it = len a2 &
     width it = width a3 &
     (for b1, b2 being natural set
           st [b1,b2] in Indices it
        holds it *(b1,b2) = (Line(a2,b1)) "*" Col(a3,b2));
end;

:: MATRIX_3:def 4
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b2, b3 being tabular FinSequence of (the carrier of b1) *
   st width b2 = len b3
for b4 being tabular FinSequence of (the carrier of b1) * holds
      b4 = b2 * b3
   iff
      len b4 = len b2 &
       width b4 = width b3 &
       (for b5, b6 being natural set
             st [b5,b6] in Indices b4
          holds b4 *(b5,b6) = (Line(b2,b5)) "*" Col(b3,b6));

:: MATRIX_3:funcnot 5 => MATRIX_3:func 5
definition
  let a1, a2, a3 be natural set;
  let a4 be non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr;
  let a5 be Matrix of a1,a2,the carrier of a4;
  let a6 be Matrix of width a5,a3,the carrier of a4;
  redefine func a5 * a6 -> Matrix of len a5,width a6,the carrier of a4;
end;

:: MATRIX_3:funcnot 6 => MATRIX_3:func 6
definition
  let a1 be non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr;
  let a2 be tabular FinSequence of (the carrier of a1) *;
  let a3 be Element of the carrier of a1;
  func A3 * A2 -> tabular FinSequence of (the carrier of a1) * means
    len it = len a2 &
     width it = width a2 &
     (for b1, b2 being natural set
           st [b1,b2] in Indices a2
        holds it *(b1,b2) = a3 * (a2 *(b1,b2)));
end;

:: MATRIX_3:def 5
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b2 being tabular FinSequence of (the carrier of b1) *
for b3 being Element of the carrier of b1
for b4 being tabular FinSequence of (the carrier of b1) * holds
      b4 = b3 * b2
   iff
      len b4 = len b2 &
       width b4 = width b2 &
       (for b5, b6 being natural set
             st [b5,b6] in Indices b2
          holds b4 *(b5,b6) = b3 * (b2 *(b5,b6)));

:: MATRIX_3:funcnot 7 => MATRIX_3:func 7
definition
  let a1 be non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr;
  let a2 be tabular FinSequence of (the carrier of a1) *;
  let a3 be Element of the carrier of a1;
  func A2 * A3 -> tabular FinSequence of (the carrier of a1) * equals
    a3 * a2;
end;

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

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

:: MATRIX_3:th 9
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b3, b4 being natural set
      st [b3,b4] in Indices 1.(b2,b1) & b4 = b3
   holds (Line(1.(b2,b1),b3)) . b4 = 1. b2;

:: MATRIX_3:th 10
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b3, b4 being natural set
      st [b3,b4] in Indices 1.(b2,b1) & b4 <> b3
   holds (Line(1.(b2,b1),b3)) . b4 = 0. b2;

:: MATRIX_3:th 11
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b3, b4 being natural set
      st [b3,b4] in Indices 1.(b2,b1) & b3 = b4
   holds (Col(1.(b2,b1),b4)) . b3 = 1. b2;

:: MATRIX_3:th 12
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b3, b4 being natural set
      st [b3,b4] in Indices 1.(b2,b1) & b3 <> b4
   holds (Col(1.(b2,b1),b4)) . b3 = 0. b2;

:: MATRIX_3:th 13
theorem
for b1 being Element of NAT
for b2 being non empty right_complementable add-associative right_zeroed addLoopStr holds
   Sum (b1 |-> 0. b2) = 0. b2;

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

:: MATRIX_3:th 15
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b2, b3 being FinSequence of the carrier of b1 holds
len mlt(b2,b3) = min(len b2,len b3);

:: MATRIX_3:th 16
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b2, b3 being FinSequence of the carrier of b1
for b4 being natural set
   st b4 in dom b2 &
      b2 . b4 = 1. b1 &
      (for b5 being natural set
            st b5 in dom b2 & b5 <> b4
         holds b2 . b5 = 0. b1)
for b5 being natural set
      st b5 in dom mlt(b2,b3)
   holds (b4 = b5 implies (mlt(b2,b3)) . b5 = b3 . b4) &
    (b4 = b5 or (mlt(b2,b3)) . b5 = 0. b1);

:: MATRIX_3:th 17
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b3, b4 being natural set
      st [b3,b4] in Indices 1.(b2,b1)
   holds (b3 = b4 implies (Line(1.(b2,b1),b3)) . b4 = 1. b2) &
    (b3 = b4 or (Line(1.(b2,b1),b3)) . b4 = 0. b2);

:: MATRIX_3:th 18
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b3, b4 being natural set
      st [b3,b4] in Indices 1.(b2,b1)
   holds (b3 = b4 implies (Col(1.(b2,b1),b4)) . b3 = 1. b2) &
    (b3 = b4 or (Col(1.(b2,b1),b4)) . b3 = 0. b2);

:: MATRIX_3:th 19
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b2, b3 being FinSequence of the carrier of b1
for b4 being natural set
      st b4 in dom b2 &
         b4 in dom b3 &
         b2 . b4 = 1. b1 &
         (for b5 being natural set
               st b5 in dom b2 & b5 <> b4
            holds b2 . b5 = 0. b1)
   holds Sum mlt(b2,b3) = b3 . b4;

:: MATRIX_3:th 20
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b3 being Matrix of b1,b1,the carrier of b2 holds
   (1.(b2,b1)) * b3 = b3;

:: MATRIX_3:th 21
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b3 being Matrix of b1,b1,the carrier of b2 holds
   b3 * 1.(b2,b1) = b3;

:: MATRIX_3:th 22
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b2, b3 being Element of the carrier of b1 holds
<*<*b2*>*> * <*<*b3*>*> = <*<*b2 * b3*>*>;

:: MATRIX_3:th 23
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b2, b3, b4, b5, b6, b7, b8, b9 being Element of the carrier of b1 holds
((b2,b4)][(b6,b8)) * ((b3,b5)][(b7,b9)) = ((b2 * b3) + (b4 * b7),(b2 * b5) + (b4 * b9))][((b6 * b3) + (b8 * b7),(b6 * b5) + (b8 * b9));

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

:: MATRIX_3:funcnot 8 => MATRIX_3:func 8
definition
  let a1, a2 be non empty set;
  let a3 be Element of Fin a1;
  let a4 be Element of Fin a2;
  redefine func [:a3, a4:] -> Element of Fin [:a1,a2:];
end;

:: MATRIX_3:funcnot 9 => MATRIX_3:func 9
definition
  let a1, a2, a3 be non empty set;
  let a4 be Function-like quasi_total Relation of [:a3,a3:],a3;
  let a5 be Function-like quasi_total Relation of a1,a3;
  let a6 be Function-like quasi_total Relation of a2,a3;
  redefine func a4 *(a5,a6) -> Function-like quasi_total Relation of [:a1,a2:],a3;
end;

:: MATRIX_3:th 25
theorem
for b1, b2, b3 being non empty set
for b4, b5 being Function-like quasi_total Relation of [:b3,b3:],b3
for b6 being Function-like quasi_total Relation of b1,b3
for b7 being Function-like quasi_total Relation of b2,b3
for b8 being Element of Fin b1
for b9 being Element of Fin b2
      st b4 is commutative(b3) &
         b4 is associative(b3) &
         ([:b9,b8:] = {} implies b4 is having_a_unity(b3)) &
         b5 is commutative(b3)
   holds b4 $$([:b8,b9:],b5 *(b6,b7)) = b4 $$([:b9,b8:],b5 *(b7,b6));

:: MATRIX_3:th 26
theorem
for b1, b2, b3 being non empty set
for b4, b5 being Function-like quasi_total Relation of [:b1,b1:],b1
for b6 being Function-like quasi_total Relation of b2,b1
for b7 being Function-like quasi_total Relation of b3,b1
   st b4 is commutative(b1) & b4 is associative(b1) & b4 is having_a_unity(b1)
for b8 being Element of b2
for b9 being Element of b3 holds
   b4 $$([:{.b8.},{.b9.}:],b5 *(b6,b7)) = b4 $$({.b8.},b5 [:](b6,b4 $$({.b9.},b7)));

:: MATRIX_3:th 27
theorem
for b1, b2, b3 being non empty set
for b4, b5 being Function-like quasi_total Relation of [:b1,b1:],b1
for b6 being Function-like quasi_total Relation of b2,b1
for b7 being Function-like quasi_total Relation of b3,b1
for b8 being Element of Fin b2
for b9 being Element of Fin b3
   st b4 is commutative(b1) & b4 is associative(b1) & b4 is having_a_unity(b1) & b4 is having_an_inverseOp(b1) & b5 is_distributive_wrt b4
for b10 being Element of b2 holds
   b4 $$([:{.b10.},b9:],b5 *(b6,b7)) = b4 $$({.b10.},b5 [:](b6,b4 $$(b9,b7)));

:: MATRIX_3:th 28
theorem
for b1, b2, b3 being non empty set
for b4, b5 being Function-like quasi_total Relation of [:b1,b1:],b1
for b6 being Function-like quasi_total Relation of b2,b1
for b7 being Function-like quasi_total Relation of b3,b1
for b8 being Element of Fin b2
for b9 being Element of Fin b3
      st b4 is having_a_unity(b1) & b4 is commutative(b1) & b4 is associative(b1) & b4 is having_an_inverseOp(b1) & b5 is_distributive_wrt b4
   holds b4 $$([:b8,b9:],b5 *(b6,b7)) = b4 $$(b8,b5 [:](b6,b4 $$(b9,b7)));

:: MATRIX_3:th 29
theorem
for b1, b2, b3 being non empty set
for b4, b5 being Function-like quasi_total Relation of [:b1,b1:],b1
for b6 being Function-like quasi_total Relation of b2,b1
for b7 being Function-like quasi_total Relation of b3,b1
   st b4 is commutative(b1) & b4 is associative(b1) & b4 is having_a_unity(b1) & b5 is commutative(b1)
for b8 being Element of b2
for b9 being Element of b3 holds
   b4 $$([:{.b8.},{.b9.}:],b5 *(b6,b7)) = b4 $$({.b9.},b5 [;](b4 $$({.b8.},b6),b7));

:: MATRIX_3:th 30
theorem
for b1, b2, b3 being non empty set
for b4, b5 being Function-like quasi_total Relation of [:b1,b1:],b1
for b6 being Function-like quasi_total Relation of b2,b1
for b7 being Function-like quasi_total Relation of b3,b1
for b8 being Element of Fin b2
for b9 being Element of Fin b3
      st b4 is having_a_unity(b1) & b4 is commutative(b1) & b4 is associative(b1) & b4 is having_an_inverseOp(b1) & b5 is_distributive_wrt b4 & b5 is commutative(b1)
   holds b4 $$([:b8,b9:],b5 *(b6,b7)) = b4 $$(b9,b5 [;](b4 $$(b8,b6),b7));

:: MATRIX_3:th 31
theorem
for b1, b2, b3 being non empty set
for b4 being Function-like quasi_total Relation of [:b1,b1:],b1
for b5 being Function-like quasi_total Relation of [:b2,b3:],b1
for b6 being Function-like quasi_total Relation of b2,b1
for b7 being Element of Fin b3
   st b4 is having_a_unity(b1) & b4 is commutative(b1) & b4 is associative(b1) & b4 is having_an_inverseOp(b1)
for b8 being Element of b2
      st for b9 being Element of b2 holds
           b6 . b9 = b4 $$(b7,(curry b5) . b9)
   holds b4 $$([:{.b8.},b7:],b5) = b4 $$({.b8.},b6);

:: MATRIX_3:th 32
theorem
for b1, b2, b3 being non empty set
for b4 being Function-like quasi_total Relation of [:b1,b1:],b1
for b5 being Function-like quasi_total Relation of [:b2,b3:],b1
for b6 being Function-like quasi_total Relation of b2,b1
for b7 being Element of Fin b2
for b8 being Element of Fin b3
      st (for b9 being Element of b2 holds
            b6 . b9 = b4 $$(b8,(curry b5) . b9)) &
         b4 is having_a_unity(b1) &
         b4 is commutative(b1) &
         b4 is associative(b1) &
         b4 is having_an_inverseOp(b1)
   holds b4 $$([:b7,b8:],b5) = b4 $$(b7,b6);

:: MATRIX_3:th 33
theorem
for b1, b2, b3 being non empty set
for b4 being Function-like quasi_total Relation of [:b1,b1:],b1
for b5 being Function-like quasi_total Relation of [:b2,b3:],b1
for b6 being Function-like quasi_total Relation of b3,b1
for b7 being Element of Fin b2
   st b4 is having_a_unity(b1) & b4 is commutative(b1) & b4 is associative(b1) & b4 is having_an_inverseOp(b1)
for b8 being Element of b3
      st for b9 being Element of b3 holds
           b6 . b9 = b4 $$(b7,(curry' b5) . b9)
   holds b4 $$([:b7,{.b8.}:],b5) = b4 $$({.b8.},b6);

:: MATRIX_3:th 34
theorem
for b1, b2, b3 being non empty set
for b4 being Function-like quasi_total Relation of [:b1,b1:],b1
for b5 being Function-like quasi_total Relation of [:b2,b3:],b1
for b6 being Function-like quasi_total Relation of b3,b1
for b7 being Element of Fin b2
for b8 being Element of Fin b3
      st (for b9 being Element of b3 holds
            b6 . b9 = b4 $$(b7,(curry' b5) . b9)) &
         b4 is having_a_unity(b1) &
         b4 is commutative(b1) &
         b4 is associative(b1) &
         b4 is having_an_inverseOp(b1)
   holds b4 $$([:b7,b8:],b5) = b4 $$(b8,b6);

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

:: MATRIX_3:funcnot 10 => MATRIX_3:func 10
definition
  let a1 be natural set;
  let a2 be non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr;
  let a3 be Matrix of a1,a1,the carrier of a2;
  let a4 be Element of Permutations a1;
  func Path_matrix(A4,A3) -> FinSequence of the carrier of a2 means
    len it = a1 &
     (for b1, b2 being natural set
           st b1 in dom it & b2 = a4 . b1
        holds it . b1 = a3 *(b1,b2));
end;

:: MATRIX_3:def 7
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b3 being Matrix of b1,b1,the carrier of b2
for b4 being Element of Permutations b1
for b5 being FinSequence of the carrier of b2 holds
      b5 = Path_matrix(b4,b3)
   iff
      len b5 = b1 &
       (for b6, b7 being natural set
             st b6 in dom b5 & b7 = b4 . b6
          holds b5 . b6 = b3 *(b6,b7));

:: MATRIX_3:funcnot 11 => MATRIX_3:func 11
definition
  let a1 be natural set;
  let a2 be non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr;
  let a3 be Matrix of a1,a1,the carrier of a2;
  func Path_product A3 -> Function-like quasi_total Relation of Permutations a1,the carrier of a2 means
    for b1 being Element of Permutations a1 holds
       it . b1 = -((the multF of a2) "**" Path_matrix(b1,a3),b1);
end;

:: MATRIX_3:def 8
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b3 being Matrix of b1,b1,the carrier of b2
for b4 being Function-like quasi_total Relation of Permutations b1,the carrier of b2 holds
      b4 = Path_product b3
   iff
      for b5 being Element of Permutations b1 holds
         b4 . b5 = -((the multF of b2) "**" Path_matrix(b5,b3),b5);

:: MATRIX_3:funcnot 12 => MATRIX_3:func 12
definition
  let a1 be natural set;
  let a2 be non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr;
  let a3 be Matrix of a1,a1,the carrier of a2;
  func Det A3 -> Element of the carrier of a2 equals
    (the addF of a2) $$(FinOmega Permutations a1,Path_product a3);
end;

:: MATRIX_3:def 9
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b3 being Matrix of b1,b1,the carrier of b2 holds
   Det b3 = (the addF of b2) $$(FinOmega Permutations b1,Path_product b3);

:: MATRIX_3:th 36
theorem
for b1 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b2 being Element of the carrier of b1 holds
   Det <*<*b2*>*> = b2;

:: MATRIX_3:funcnot 13 => MATRIX_3:func 13
definition
  let a1 be natural set;
  let a2 be non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr;
  let a3 be Matrix of a1,a1,the carrier of a2;
  func diagonal_of_Matrix A3 -> FinSequence of the carrier of a2 means
    len it = a1 &
     (for b1 being natural set
           st b1 in Seg a1
        holds it . b1 = a3 *(b1,b1));
end;

:: MATRIX_3:def 10
theorem
for b1 being natural set
for b2 being non empty non degenerated right_complementable almost_left_invertible associative commutative Abelian add-associative right_zeroed well-unital distributive doubleLoopStr
for b3 being Matrix of b1,b1,the carrier of b2
for b4 being FinSequence of the carrier of b2 holds
      b4 = diagonal_of_Matrix b3
   iff
      len b4 = b1 &
       (for b5 being natural set
             st b5 in Seg b1
          holds b4 . b5 = b3 *(b5,b5));