reserve F for total
 NAT-defined (the InstructionsF of SCM)-valued Function;

theorem
  Fib_Program c= F implies
  for N being Element of NAT,
      s being 0-started State-consisting of <%1,N,0,0%>
   holds F halts_on s &
   (N = 0 implies LifeSpan(F,s) = 1) &
   (N > 0 implies LifeSpan(F,s) = 6 * N - 2) &
   (Result(F,s)).dl.3 = Fib N
proof
  assume
A1: Fib_Program c= F;
  let N be Element of NAT,
      s be 0-started State-consisting of <%1,N,0,0%>;
  set C1 = dl.0, n = dl.1, FP = dl.2, FC = dl.3, AUX = dl.4;
  set L6 = 6, L7 = 7, L8 = 8;
  set L0 = 0, L1 = 1, L2 = 2, L3 = 3, L4 = 4, L5 = 5;
A2: IC s = L0 & F.L0 = n >0_goto L2 by A1,Lm17,MEMSTR_0:def 12;
  set s1 = Comput(F,s,0+1);
  set s0 = Comput(F,s,0);
A3: s = s0 by EXTPRO_1:2;
  s.C1 = 1 by SCM_1:1;
  then
A4: s1.C1 = 1 by A2,A3,SCM_1:11;
A5: F.L3 = SubFrom(n, C1) by A1,Lm17;
  s.FP = 0 by SCM_1:1;
  then
A6: s1.FP = 0 by A2,A3,SCM_1:11;
A7: F.L4 = n =0_goto L1 by A1,Lm17;
  s.FC = 0 by SCM_1:1;
  then
A8: s1.FC = 0 by A2,A3,SCM_1:11;
A9: F.L6 = FP := FC by A1,Lm17;
  defpred P[Nat] means $1 < N implies for u being State of SCM st u
= Comput(F,s,6*$1+3) holds u.C1 = 1 & u.n = N-1-$1 & u.FP = Fib $1
& u.FC =
  Fib ($1+1) & IC u = L4;
A10: F.L2 = FC := C1 by A1,Lm17;
A11: F.L7 = AddTo(FC, AUX) by A1,Lm17;
A12: F.L8 = SCM-goto L3 by A1,Lm17;
A13: F.L5 = AUX := FP by A1,Lm17;
A14: for k being Nat st P[k] holds P[k+1]
  proof
    let k be Nat such that
A15: k < N implies for u being State of SCM st u = Comput(F,s,6*k+
3
) holds u.C1 = 1 & u.n = N-1-k & u.FP = Fib k & u.FC = Fib (k+1) & IC u = L4
    and
A16: k+1 < N;
    set b = 6*k+3;
    set s5 = Comput(F,s,b+1);
    set s6 = Comput(F,s,b+1+1);
    set s7 = Comput(F,s,b+1+1+1);
    set s8 = Comput(F,s,b+1+1+1+1);
    set s9 = Comput(F,s,b+1+1+1+1+1);
    set s10 = Comput(F,s,b+1+1+1+1+1+1);
    set s4 = Comput(F,s,6*k+3);
A17: IC s4 = L4 by A15,A16,NAT_1:13;
    let t be State of SCM;
    assume
A18: t = Comput(F,s,6*(k+1)+3);
A19: s4.n = N-1-k by A15,A16,NAT_1:13;
    then s4.n <> 0 by A16;
    then
A20: IC s5 = (4+1) by A7,A17,SCM_1:10;
    then
A21: IC s6 = (5+1) by A13,SCM_1:4;
    then
A22: IC s7 = (6+1) by A9,SCM_1:4;
    then
A23: IC s8 = (7+1) by A11,SCM_1:5;
    then
A24: IC s9 = L3 by A12,SCM_1:9;
    then
A25: IC s10 = (3+1) by A5,SCM_1:6;
    s4.C1 = 1 by A15,A16,NAT_1:13;
    then s5.C1 = 1 by A7,A17,SCM_1:10;
    then s6.C1 = 1 by A13,A20,Lm13,SCM_1:4;
    then s7.C1 = 1 by A9,A21,Lm8,SCM_1:4;
    then s8.C1 = 1 by A11,A22,Lm9,SCM_1:5;
    then
A26: s9.C1 = 1 by A12,A23,SCM_1:9;
    s4.FC = Fib (k+1) by A15,A16,NAT_1:13;
    then s5.FC = Fib (k+1) by A7,A17,SCM_1:10;
    then
A27: s6.FC = Fib (k+1) by A13,A20,Lm16,SCM_1:4;
    then
A28: s7.FC = Fib (k+1) by A9,A21,Lm12,SCM_1:4;
    s4.FP = Fib k by A15,A16,NAT_1:13;
    then s5.FP = Fib k by A7,A17,SCM_1:10;
    then s6.AUX = Fib k by A13,A20,SCM_1:4;
    then
A29: s7.AUX = Fib k by A9,A21,Lm15,SCM_1:4;
    s8.FC = s7.AUX + s7.FC by A11,A22,SCM_1:5
      .= Fib (k+1+1) by A28,A29,PRE_FF:1;
    then
A30: s9.FC = Fib (k+1+1) by A12,A23,SCM_1:9;
    s7.FP = Fib (k+1) by A9,A21,A27,SCM_1:4;
    then s8.FP = Fib (k+1) by A11,A22,Lm12,SCM_1:5;
    then
A31: s9.FP = Fib (k+1) by A12,A23,SCM_1:9;
    s5.n = N-1-k by A7,A19,A17,SCM_1:10;
    then s6.n = N-1-k by A13,A20,Lm14,SCM_1:4;
    then s7.n = N-1-k by A9,A21,Lm10,SCM_1:4;
    then s8.n = N-1-k by A11,A22,Lm11,SCM_1:5;
    then s9.n = N-1-k by A12,A23,SCM_1:9;
    then s10.n = N-1-k - 1 by A5,A24,A26,SCM_1:6;
    hence thesis by A5,A18,A24,A26,A31,A30,A25,Lm7,Lm10,Lm11,SCM_1:6;
  end;
A32: F.L1 = halt SCM by A1,Lm17;
A33: s.n = N by SCM_1:1;
  then
A34: s1.n = N by A2,A3,SCM_1:11;
A35: P[0]
  proof
    set s3 = Comput(F,s,2+1);
    set s2 = Comput(F,s,1+1);
    assume 0 < N;
    then
A36: IC s1 = L2 by A2,A33,A3,SCM_1:11;
    then
A37: s2.FC = 1 & s2.C1 = 1 by A10,A4,A8,SCM_1:4;
    let t be State of SCM;
    assume
A38: t = Comput(F,s,6*0+3);
A39: s2.n = N & s2.FP = 0 by A10,A34,A6,A36,Lm11,Lm12,SCM_1:4;
A40: IC s2 = (2+1) by A10,A36,SCM_1:4;
    then IC s3 = (3+1) by A5,SCM_1:6;
    hence thesis by A5,A38,A37,A39,A40,Lm7,Lm10,Lm11,PRE_FF:1,SCM_1:6;
  end;
A41: for k being Nat holds P[k] from NAT_1:sch 2(A35, A14);
  per cases by NAT_1:6;
  suppose
A42: N = 0;
    then
A43: F.(IC s1) = halt SCM by A2,A32,A33,A3,SCM_1:11;
    hence F halts_on s by EXTPRO_1:30;
    hereby
      assume N = 0;
      halt SCM <> n >0_goto L2 by SCM_1:12;
      hence LifeSpan(F,s) = 1 by A2,A3,A43,EXTPRO_1:33;
    end;
    thus N > 0 implies LifeSpan(F,s) = 6 * N - 2 by A42;
    thus thesis by A8,A42,A43,EXTPRO_1:7,PRE_FF:1;
  end;
  suppose
    ex k being Nat st N = k+1;
    then consider k being Nat such that
A44: N = k+1;
    reconsider k as Element of NAT by ORDINAL1:def 12;
    set r = Comput(F,s,6*k+3);
A45: k < N by A44,NAT_1:13;
    then
A46: IC r = L4 by A41;
A47: r.FC = Fib (k+1) by A41,A45;
    set t = Comput(F,s,6*k+3+1);
    r.n = k+(1-1)-k by A41,A44,A45
      .= 0;
    then
A48: IC t = L1 by A7,A46,SCM_1:10;
    hence F halts_on s by A32,EXTPRO_1:30;
    thus N = 0 implies LifeSpan(F,s) = 1 by A44;
    thus N > 0 implies LifeSpan(F,s) = 6 * N - 2 by A32,A44,A46,A48,EXTPRO_1:33
;
    thus (Result(F,s)).FC = t.FC by A32,A48,EXTPRO_1:7
      .= Fib N by A7,A44,A47,A46,SCM_1:10;
  end;
end;
