reserve k,m,n,p for Nat;

theorem Th4:
  for m, n being Nat holds
  Fib(m + (n + 1)) = (Fib(n) * Fib (m)) + (Fib(n + 1) * Fib (m + 1))
proof
  defpred P[Nat] means for n being Nat holds Fib($1 + (n + 1)) = (Fib(n) * Fib
  ($1)) + (Fib(n + 1) * Fib($1 + 1));
A1: P[0] by PRE_FF:1;
A2: now
    let k be Nat;
    assume that
A3: P[k] and
A4: P[k+1];
    thus P[k+2]
    proof
      let n be Nat;
A5:   Fib(((k+1) + 1) + (n+1)) = Fib(((k + (n + 1)) + 1) + 1)
        .= Fib(k + (n+1)) + Fib((k+1) + (n+1)) by PRE_FF:1;
      set a = Fib(n) * Fib(k), b = Fib(n+1) * Fib(k+1), c = Fib(n) * Fib(k+1),
      d = Fib(n+1) * Fib((k+1) + 1);
A6:   (a + b) + (c + d) = (a + c) + (b + d);
A7:   b + d = Fib(n+1) * (Fib(k+1) + Fib ((k+1) + 1))
        .= Fib(n+1) * Fib(((k + 1) + 1) + 1) by PRE_FF:1;
A8:   a + c = Fib(n) * (Fib(k) + Fib(k+1))
        .= Fib(n) * Fib((k+1) + 1) by PRE_FF:1;
      Fib(k + (n+1)) = Fib(n) * Fib(k) + Fib(n+1) * Fib(k+1) by A3;
      hence thesis by A4,A5,A6,A8,A7;
    end;
  end;
A9: P[1] by Lm1,PRE_FF:1;
  thus for k being Nat holds P[k] from FibInd(A1, A9, A2);
end;
