reserve x,y for object,
  N for Element of NAT,
  c,i,j,k,m,n for Nat,
  D for non empty set,
  s for Element of 2Set Seg (n+2),
  p for Element of Permutations(n) ,
  p1, q1 for Element of Permutations(n+1),
  p2 for Element of Permutations(n +2),
  K for Field,
  a for Element of K,
  f for FinSequence of K,
  A for (Matrix of K),
  AD for Matrix of n,m,D,
  pD for FinSequence of D,
  M for Matrix of n,K;

theorem
  for A be Matrix of n,K st Det A <> 0.K for x,b be FinSequence of K st
len x = n & A * x = <*b*>@ holds <*x*>@ = A~ * b & for i st i in Seg n holds x.
  i = (Det A)" * Det ReplaceCol(A,i,b)
proof
  let A be Matrix of n,K such that
A1: Det A <> 0.K;
  let x,b be FinSequence of K such that
A2: len x = n and
A3: A * x = <*b*>@;
  set X=<*x*>;
  len X=1 by MATRIX_0:def 2;
  then
A4: len x=width X by MATRIX_0:20;
  then
A5: len (X@)=len x by MATRIX_0:def 6;
  hence X@ = A~ * b by A1,A2,A3,Th37;
  set B=<*b*>;
A6: 1 in Seg 1;
  then
A7: Line(X,1)=X.1 by MATRIX_0:52;
  len B=1 by MATRIX_0:def 2;
  then
A8: 1 in dom B by A6,FINSEQ_1:def 3;
A9: Line(B,1)=B.1 by A6,MATRIX_0:52;
  let i such that
A10: i in Seg n;
  n>0 by A10;
  then width (X@) = len X by A2,A4,MATRIX_0:54
    .= 1 by MATRIX_0:def 2;
  then Indices (X@)=[:Seg n,Seg 1:] by A2,A5,FINSEQ_1:def 3;
  then
A11: [i,1] in Indices (X@) by A10,A6,ZFMISC_1:87;
  then [1,i] in Indices X by MATRIX_0:def 6;
  then (X@)*(i,1) = X*(1,i) by MATRIX_0:def 6
    .= Line(X,1).i by A2,A4,A10,MATRIX_0:def 7
    .= x.i by A7;
  hence x.i = (Det A)" * Det ReplaceCol(A,i,Col(B@,1)) by A1,A2,A3,A5,A11,Th37
    .= (Det A)" * Det ReplaceCol(A,i,Line(B,1)) by A8,MATRIX_0:58
    .= (Det A)" * Det ReplaceCol(A,i,b) by A9;
end;
