 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 Th22:
  f1 is additive homogeneous & f2 is additive homogeneous implies
  for b1 being OrdBasis of V1 st len b1 > 0 holds f1*b1 = f2*b1
  implies f1 = f2
  proof
    assume that
    A1: f1 is additive homogeneous and
    A2: f2 is additive homogeneous;
    let b1 be OrdBasis of V1 such that
    A3: len b1 > 0;
    reconsider b = rng b1 as Basis of V1 by defOrdBasis;
    assume
    A4: f1*b1 = f2*b1;
    now
      len b1 in Seg len b1 by A3,FINSEQ_1:3;
      then reconsider D = dom b1 as non empty set by FINSEQ_1:def 3;
      let v be Element of V1;
      Lin(b) = the ModuleStr of V1 by VECTSP_7:def 3;
      then v in Lin(b);
      then consider KL be Linear_Combination of b such that
      A5: v = Sum(KL) by ZMODUL02:64;
      set p = KL (#) b1;
      set A = the set of all KL.(b1/.i)*(b1/.i) where i is Element of D;
      A6: rng p c= A
      proof
        let x be object;
        assume x in rng p;
        then consider i be Nat such that
        A7: i in dom p and
        A8: p.i = x by FINSEQ_2:10;
        dom p = Seg len p by FINSEQ_1:def 3;
        then i in Seg len b1 by A7,VECTSP_6:def 5;
        then
        A9: i in dom b1 by FINSEQ_1:def 3;
        (KL (#) b1).i = KL.(b1/.i) * (b1/.i) by A7,VECTSP_6:def 5;
        hence thesis by A8,A9;
      end;
      A10: for w st w in A holds f1.w = f2.w
      proof
        let w;
        assume w in A;
        then consider i be Element of D such that
        A11: w = KL.(b1/.i)*(b1/.i);
        f1.(b1/.i) = f1.(b1.i) by PARTFUN1:def 6
        .= (f2*b1).i by A4,FUNCT_1:13
        .= f2.(b1.i) by FUNCT_1:13
        .= f2.(b1/.i) by PARTFUN1:def 6;
        then f1.(KL.(b1/.i)*(b1/.i)) = KL.(b1/.i)*(f2.(b1/.i)) by A1
        .= f2.(KL.(b1/.i)*(b1/.i)) by A2;
        hence thesis by A11;
      end;
      A12: b1 is one-to-one & Carrier KL c= rng b1
      by defOrdBasis,VECTSP_6:def 4;
      hence f1.v = f1.Sum(KL (#) b1) by A5,Th20
      .= f2.Sum p by A1,A2,A6,A10,Th21
      .= f2.v by A5,A12,Th20;
    end;
    hence thesis by FUNCT_2:63;
  end;
