reserve x,y for object,
        D,D1,D2 for non empty set,
        i,j,k,m,n for Nat,
        f,g for FinSequence of D*,
        f1 for FinSequence of D1*,
        f2 for FinSequence of D2*;
reserve f for complex-valued Function,
        g,h for complex-valued FinSequence;

theorem Th16:
  n >= len h implies
     (h,k) +...+ (h,n) = (h,k) +...+ (h,len h)
proof
  assume A1: n >= len h;
  per cases;
  suppose k >len h;
    then (h,k) +...+ (h,len h) = 0 & (h,k) +...+ (h,n) = 0 by Th15;
    hence thesis;
  end;
  suppose A2: k <= len h;
    defpred P[Nat] means (h,k) +...+ (h,len h+$1) = (h,k) +...+ (h,len h);
    A3:P[0];
    A4:P[i] implies P[i+1]
    proof
      set i1=i+1;
      assume A5:P[i];
      len h + i1 > len h +0 by XREAL_1:6;
      then A6:not len h+i1 in dom h by FINSEQ_3:25;
      A7: len h <= len h+i1 by NAT_1:11;
      A8: h.(len h+i1) = 0 by A6,FUNCT_1:def 2;
      (h,k) +...+ (h,len h+i+1) = (h,k) +...+ (h,len h+i) + h.(len h+i+1)
        by Th12,A7,XXREAL_0:2,A2;
      hence thesis by A8,A5;
    end;
    A9:P[i] from NAT_1:sch 2(A3,A4);
    reconsider nl=n-len h as Nat by A1,NAT_1:21;
    P[nl] by A9;
    hence thesis;
  end;
end;
