 reserve x,y,z for object,
   i,j,k,l,n,m for Nat,
   D,E for non empty set;
 reserve M for Matrix of D;
 reserve L for Matrix of E;
 reserve k,t,i,j,m,n for Nat,
   D for non empty set;
 reserve V for free Z_Module;
 reserve a for Element of INT.Ring,
   W for Element of V;
 reserve KL1,KL2,KL3 for Linear_Combination of V,
   X for Subset of V;
 reserve V for finite-rank free Z_Module,
   W for Element of V;
 reserve KL1,KL2,KL3 for Linear_Combination of V,
   X for Subset of V;
 reserve s for FinSequence,
   V1,V2,V3 for finite-rank free Z_Module,
   f,f1,f2 for Function of V1,V2,
   g for Function of V2,V3,
   b1 for OrdBasis of V1,
   b2 for OrdBasis of V2,
   b3 for OrdBasis of V3,
   v1,v2 for Vector of V2,
   v,w for Element of V1;
 reserve p2,F for FinSequence of V1,
   p1,d for FinSequence of INT.Ring,
   KL for Linear_Combination of V1;

theorem Th21:
  for A being set, p being FinSequence of V1 st rng p c= A holds
  f1 is additive homogeneous & f2 is additive homogeneous &
  (for v st v in A holds f1.v = f2.v) implies f1.Sum p = f2.Sum p
  proof
    let A be set;
    let p be FinSequence of V1 such that
    A1: rng p c= A;
    defpred P[FinSequence of V1] means rng $1 c= A implies
    f1.Sum($1) = f2.Sum($1);
    assume that
    A2: f1 is additive homogeneous and
    A3: f2 is additive homogeneous;
    assume
    A4: for v st v in A holds f1.v = f2.v;
    A5: for p being FinSequence of V1, x being Element of V1 st P[p]
    holds P[p^<*x*>]
    proof
      let p be FinSequence of V1, x be Element of V1 such that
      A6: rng p c= A implies f1.Sum p = f2.Sum p;
      A7: rng p c= rng p \/ rng <*x*> by XBOOLE_1:7;
      assume rng (p^<*x*>) c= A;
      then
      A8: rng p \/ rng <*x*> c= A by FINSEQ_1:31;
      rng <*x*> c= rng p \/ rng <*x*> by XBOOLE_1:7;
      then rng <*x*> c= A by A8;
      then A9: {x} c= A by FINSEQ_1:39;
      thus f1.Sum(p^<*x*>) = f1.(Sum(p) + Sum(<*x*>)) by RLVECT_1:41
      .= f2.(Sum p) + f1.(Sum(<*x*>)) by A2,A6,A8,A7
      .= f2.(Sum p) + f1.x by RLVECT_1:44
      .= f2.(Sum p) + f2.x by A4,A9,ZFMISC_1:31
      .= f2.(Sum p) + f2.(Sum(<*x*>)) by RLVECT_1:44
      .= f2.(Sum(p) + Sum(<*x*>)) by A3
      .= f2.Sum(p^<*x*>) by RLVECT_1:41;
    end;
    A10: P[<*>(the carrier of V1)]
    proof
      assume rng<*>(the carrier of V1) c= A;
      set I0 = 0.INT.Ring;
      thus f1.Sum(<*>(the carrier of V1)) = f1.(0.V1) by RLVECT_1:43
      .= f1.(I0* 0.V1) by ZMODUL01:1
      .= I0* f1.(0.V1) by A2
      .= 0.V2 by ZMODUL01:1
      .= I0* f2.(0.V1) by ZMODUL01:1
      .= f2.(I0* 0.V1) by A3
      .= f2.(0.V1) by ZMODUL01:1
      .= f2.Sum(<*>(the carrier of V1)) by RLVECT_1:43;
    end;
    for p being FinSequence of V1 holds P[p] from FINSEQ_2:sch 2(A10,A5);
    hence thesis by A1;
  end;
