reserve i, j, m, n, k for Nat,
  x, y for set,
  K for Field,
  a,a1 for Element of K;
reserve V1,V2,V3 for finite-dimensional VectSp of K,
  f for Function of V1,V2,

  b1,b19 for OrdBasis of V1,
  B1 for FinSequence of V1,
  b2 for OrdBasis of V2,
  B2 for FinSequence of V2,

  B3 for FinSequence of V3,
  v1,w1 for Element of V1,
  R,R1,R2 for FinSequence of V1,
  p,p1,p2 for FinSequence of K;

theorem Th41:
  for A be Matrix of len b1,len b2,K st len b1>0 & len b2>0 holds
  v1 in ker Mx2Tran(A,b1,b2) iff v1|--b1 in Space_of_Solutions_of (A@)
proof
  let A be Matrix of len b1,len b2,K such that
A1: len b1>0 and
A2: len b2>0;
  set AT=A@;
A3: width A=len b2 by A1,MATRIX_0:23;
  then
A4: len AT=len b2 by A2,MATRIX_0:54;
  set L=LineVec2Mx(v1|--b1);
  set M=Mx2Tran(A,b1,b2);
  set SA=Space_of_Solutions_of AT;
A5: width L=len (v1|--b1) by MATRIX_0:23;
 len (len b2|->0.K)=len b2 by CARD_1:def 7;
  then
A6: width LineVec2Mx(len b2|->0.K)=len b2 by MATRIX_0:23;
A7: width ColVec2Mx(len b2|->0.K)=1 by A2,MATRIX_0:23;
A8: len (v1|--b1) =len b1 by MATRLIN:def 7;
  then
A9: len ColVec2Mx(v1|--b1)=len (v1|--b1) & width ColVec2Mx(v1|--b1)=1 by A1,
MATRIX_0:23;
A10: len A=len b1 by A1,MATRIX_0:23;
  then
A11: width AT=0 implies len AT=0 by A1,A2,A3,MATRIX_0:54;
A12: width AT=len b1 by A2,A10,A3,MATRIX_0:54;
  thus v1 in ker M implies v1|--b1 in SA
  proof
    assume v1 in ker M;
    then M.v1 = 0.V2 by RANKNULL:10;
    then L * A = LineVec2Mx(0.V2|-- b2) by A1,Th32
      .= LineVec2Mx(len b2|->0.K ) by Th20;
    then ColVec2Mx(len b2|->0.K)= AT*ColVec2Mx(v1|--b1) by A2,A10,A3,A5,A8,
MATRIX_3:22;
    then
    ColVec2Mx(v1|--b1) in Solutions_of(AT,ColVec2Mx(len b2|->0.K)) by A12,A8
,A9,A7;
    then v1|--b1 in Solutions_of(AT,len b2|->0.K);
    then v1|--b1 in the carrier of SA by A4,A11,MATRIX15:def 5;
    hence thesis;
  end;
  assume v1|--b1 in SA;
  then v1|--b1 in the carrier of SA;
  then v1|--b1 in Solutions_of(AT,len b2|->0.K) by A4,A11,MATRIX15:def 5;
  then
  ex f be FinSequence of K st f=v1|--b1 & ColVec2Mx f in Solutions_of(AT,
  ColVec2Mx(len b2|->0.K));
  then ex X be Matrix of K st X = ColVec2Mx(v1|--b1) & len X = width AT &
  width X = width ColVec2Mx(len b2|->0.K) & ColVec2Mx(len b2|->0.K)=AT*X;
  then
A13: ColVec2Mx(len b2|->0.K)=(L*A)@ by A2,A10,A3,A5,A8,MATRIX_3:22;
  width (L*A)=width A by A10,A5,A8,MATRIX_3:def 4;
  then L*A = LineVec2Mx(len b2|->0.K) by A2,A3,A6,A13,MATRIX_0:56
    .= LineVec2Mx(0.V2|--b2) by Th20;
  then LineVec2Mx(0.V2|--b2)=LineVec2Mx(M.v1|-- b2) by A1,Th32;
  then 0.V2|--b2 = Line(LineVec2Mx(M.v1|-- b2),1) by MATRIX15:25
    .= M.v1|-- b2 by MATRIX15:25;
  then M.v1=0.V2 by MATRLIN:34;
  hence thesis by RANKNULL:10;
end;
