 reserve x, y, y1, y2 for set;
 reserve V for Z_Module;
 reserve u, v, w for Vector of V;
 reserve F, G, H, I for FinSequence of V;
 reserve W, W1, W2, W3 for Submodule of V;
 reserve KL1, KL2 for Linear_Combination of V;
 reserve X for Subset of V;

theorem Th25:
  for p being prime Element of INT.Ring, V being free Z_Module,
  I being Basis of V,
  X be non empty Subset of Z_MQ_VectSp(V,p)
  st X = {ZMtoMQV(V,p,u) where u is Vector of V : u in I} holds
  ex F be Function of X, the carrier of V
  st (for u be Vector of V st u in I holds F.(ZMtoMQV(V,p,u)) = u)
  & F is one-to-one & dom F = X & rng F = I
  proof
    let p be prime Element of INT.Ring, V be free Z_Module, I be Basis of V,
    X be non empty Subset of Z_MQ_VectSp(V,p);
    assume A1: X = {ZMtoMQV(V,p,u) where u is Vector of V : u in I};
    set ZQ = Z_MQ_VectSp(V,p);
    defpred F0[Element of X, Element of V] means
    $2 in $1 & $2 in I;
    A2: for x being Element of X holds ex v being Element of V st F0[x,v]
    proof
      let x be Element of X;
      x in X;
      then consider v be Vector of V such that
      A3: x = ZMtoMQV(V,p,v) & v in I by A1;
      thus ex v be Element of V st F0[x,v] by A3,ZMODUL01:58;
    end;
    consider F being Function of X, the carrier of V such that
    A4:  for x being Element of X holds F0[x,F.x] from FUNCT_2:sch 3(A2);
    take F;
    thus for v be Vector of V st v in I holds F.(ZMtoMQV(V,p,v)) = v
    proof
      let v be Vector of V;
      assume A5: v in I;
      then ZMtoMQV(V,p,v) in X by A1;
      then reconsider w = ZMtoMQV(V,p,v) as Element of X;
      A6: F.w in w & F.w in I by A4;
      ZMtoMQV(V,p,F.w) = ZMtoMQV(V,p,v) by A4,ZMODUL01:67;
      hence thesis by A5,A6,Th21;
    end;
    now let x1,x2 be object;
      assume A7: x1 in X & x2 in X & F.x1=F.x2;
      then reconsider x10=x1,x20=x2 as Element of X;
      consider v1 be Vector of V such that
      A8: x1 = ZMtoMQV(V,p,v1) & v1 in I by A7,A1;
      consider v2 be Vector of V such that
      A9: x2 = ZMtoMQV(V,p,v2) & v2 in I by A7,A1;
      F.x10 in ZMtoMQV(V,p,v1) & F.x10 in ZMtoMQV(V,p,v2) by A7,A8,A9,A4;
      then F.x10 in ZMtoMQV(V,p,v1) /\ ZMtoMQV(V,p,v2) by XBOOLE_0:def 4;
      hence x1 = x2 by A8,A9,Lm2;
    end;
    hence F is one-to-one by FUNCT_2:19;
    thus dom F = X by FUNCT_2:def 1;
    now let y be object;
      assume y in rng F;
      then consider x be object such that
      A10: x in X & F.x = y by FUNCT_2:11;
      reconsider x as Element of X by A10;
      thus y in I by A10,A4;
    end;
    then
    A11: rng F c= I;
    now let y be object;
      assume A12:y in I;
      then reconsider u=y as Vector of V;
      ZMtoMQV(V,p,u) in X by A12,A1;
      then reconsider z = ZMtoMQV(V,p,u) as Element of X;
      A13: F.z in z & F.z in I by A4;
      ZMtoMQV(V,p,F.z) = ZMtoMQV(V,p,u) by A4,ZMODUL01:67;
      then F.z = u by Th21,A13,A12;
      hence y in rng F by FUNCT_2:4;
    end;
    then I c= rng F;
    hence I = rng F by A11,XBOOLE_0:def 10;
  end;
