reserve n for Nat,
  a,b,c,d for Real,
  s for Real_Sequence;

theorem
  (for n st n>=1 holds s.n = n & s.0 = 1) implies for n st n>=1 holds (
  Partial_Product s).n = n!
proof
  defpred X[Nat] means (Partial_Product s).$1 = $1!;
  assume
A1: for n st n>=1 holds s.n= n & s.0 = 1;
A2: for n be Nat st n>=1 & X[n] holds X[n+1]
  proof
    let n be Nat;
    assume that
    n>=1 and
A3: (Partial_Product s).n = n!;
A4: n+1>=1 by NAT_1:11;
    (Partial_Product s).(n+1)=(Partial_Product s).n*s.(n+1) by
SERIES_3:def 1
      .= n!*(n+1) by A1,A3,A4
      .= (n+1)! by NEWTON:15;
    hence thesis;
  end;
  (Partial_Product s).(1+0) = (Partial_Product s).0 * s.(1+0) by SERIES_3:def 1
    .= s.0 * s.(1+0) by SERIES_3:def 1
    .=1*s.1 by A1
    .=1! by A1,NEWTON:13;
  then
A5: X[1];
  for n be Nat st n>=1 holds X[n] from NAT_1:sch 8(A5,A2);
  hence thesis;
end;
