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

theorem
  Fusc_Program c= F implies
  for N being Element of NAT st N > 0
  for s being 0-started State-consisting of <%2,N,1,0%>
   holds F halts_on s &
  (Result(F,s)).dl.3 = Fusc N &
  LifeSpan(F,s) = 6 * ([\ log(2, N) /] + 1) + 1
proof
  set c2 = dl.0, n = dl.1, a = dl.2, b = 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;
  assume
A1: Fusc_Program c= F;
  let N be Element of NAT such that
A2: N > 0;
  set k = [\log(2, N)/];
  log(2, N) - 1 < k by INT_1:def 6;
  then
A3: log(2, N) < k+1 by XREAL_1:19;
  N >= 0+1 by A2,NAT_1:13;
  then log (2, N) >= log (2, 1) by PRE_FF:10;
  then log (2, N) >= 0 by POWER:51;
  then k+1 > 0 by A3;
  then reconsider k as Element of NAT by INT_1:3,7;
  2 to_power (k+1) > 2 to_power log(2, N) by A3,POWER:39;
  then 2 to_power (k+1) > N by A2,POWER:def 3;
  then
A4: 2 |^ (k+1) > N by POWER:41;
  let S be 0-started State-consisting of <%2,N,1,0%>;
  consider s being State of SCM such that
A5: s = S;
  defpred P[Nat] means $1 <= log(2, N) + 1 implies for u being
  State of SCM st u = Comput(F,s,6*$1) holds IC u = L0 & u.c2 = 2
& u.n = N
qua Integer div (2 |^ $1) & u.n is Element of NAT & Fusc N = u.a*Fusc' u.n + u.
  b*Fusc' (u.n+1);
A6: F.L0 = n =0_goto L8 by A1,Lm17;
A7: F.L7 = SCM-goto L0 by A1,Lm17;
A8: F.L1 = aux := c2 by A1,Lm17;
A9: F.L4 = AddTo(b, a) by A1,Lm17;
A10: F.L2 = Divide(n, aux) by A1,Lm17;
A11: F.L6 = AddTo(a, b) by A1,Lm17;
A12: F.L3 = aux =0_goto L6 by A1,Lm17;
A13: F.L5 = SCM-goto L0 by A1,Lm17;
A14: for k being Nat st P[k] holds P[k+1]
  proof
    let k be Nat;
    assume
A15: k <= log(2, N) + 1 implies for u being State of SCM st u =
Comput(F,s,6*k) holds IC u = L0 & u.c2 = 2 & u.n = N qua Integer
div (2 |^ k
    ) & u.n is Element of NAT & Fusc N = u.a*Fusc' u.n + u.b*Fusc' (u.n+1);
    set t = 6*k;
    set t0 = Comput(F,s,t);
    assume
A16: k+1 <= log(2, N) + 1;
    then k <= log(2, N) by XREAL_1:6;
    then 2 to_power k <= 2 to_power log(2, N) by PRE_FF:8;
    then 2 to_power k <= N by A2,POWER:def 3;
    then
A17: 2 |^ k <= N by POWER:41;
A18: k <= k+1 by NAT_1:11;
    then
A19: t0.n is Element of NAT by A15,A16,XXREAL_0:2;
A20: t0.n = N qua Integer div (2 |^ k) by A15,A16,A18,XXREAL_0:2;
A21: IC t0 = L0 by A15,A16,A18,XXREAL_0:2;
    set t3 = Comput(F,s,t+3);
    set t2 = Comput(F,s,t+2);
    set t1 = Comput(F,s,t+1);
A22: t+1+1 = t + 2;
    (2 |^ k) > 0 by NEWTON:83;
    then t0.n <> 0 by A20,A17,PRE_FF:3;
    then
A23: IC t1 = (0+1) by A6,A21,SCM_1:10;
    then
A24: IC t2 = (1+1) by A8,A22,SCM_1:4;
A25: t+2+1 = t+3;
    then
A26: IC t3 = (2+1) by A10,A24,Lm14,SCM_1:8;
    t1.n = t0.n by A6,A21,SCM_1:10;
    then
A27: t2.n = t0.n by A8,A23,A22,Lm14,SCM_1:4;
A28: t0.n mod 2 = t0.n - (t0.n div 2)*2 by INT_1:def 10;
    let u be State of SCM;
    assume
A29: u = Comput(F,s,6*(k+1));
    t0.c2 = 2 by A15,A16,A18,XXREAL_0:2;
    then
A30: t1.c2 = 2 by A6,A21,SCM_1:10;
    then t2.c2 = 2 by A8,A23,A22,Lm13,SCM_1:4;
    then
A31: t3.c2 = 2 by A10,A24,A25,Lm7,Lm13,Lm14,SCM_1:8;
A32: t2.aux = 2 by A8,A23,A30,A22,SCM_1:4;
    then
A33: t3.n = t0.n div 2 by A10,A24,A27,A25,Lm14,SCM_1:8;
    then
A34: t3.n = N qua Integer div (2|^k)*2 by A20,PRE_FF:5
      .= N qua Integer div (2|^(k+1)) by NEWTON:6;
A35: t3.aux = t0.n mod 2 by A10,A24,A32,A27,A25,Lm14,SCM_1:8;
    set t6 = Comput(F,s,t+6);
    set t5 = Comput(F,s,t+5);
    set t4 = Comput(F,s,t+4);
A36: t+3+1 = t+4;
    t1.b = t0.b by A6,A21,SCM_1:10;
    then t2.b = t0.b by A8,A23,A22,Lm16,SCM_1:4;
    then
A37: t3.b = t0.b by A10,A24,A25,Lm11,Lm14,Lm16,SCM_1:8;
A38: t+5+1 = t+6;
    t1.a = t0.a by A6,A21,SCM_1:10;
    then t2.a = t0.a by A8,A23,A22,Lm15,SCM_1:4;
    then
A39: t3.a = t0.a by A10,A24,A25,Lm10,Lm14,Lm15,SCM_1:8;
A40: t+4+1 = t+5;
    per cases;
    suppose
A41:  t3.aux <> 0;
      reconsider ta = t0.a, tb = t0.b as Integer;
A42:  t4.a = t0.a by A12,A26,A39,A36,SCM_1:10;
A43:  IC t4 = (3+1) by A12,A26,A36,A41,SCM_1:10;
      then
A44:  IC t5 = (4+1) by A9,A40,SCM_1:5;
      t4.n = t3.n by A12,A26,A36,SCM_1:10;
      then
A45:  t5.n = t3.n by A9,A40,A43,Lm11,SCM_1:5;
      then
A46:  t6.n = t3.n by A13,A38,A44,SCM_1:9;
      then reconsider un = u.n, tn = t0.n as Element of NAT by A29,A19,A33,
PRE_FF:7;
A47:  tn = (t0.n div 2)*2 + (t0.n mod 2) by A28
        .= 2 * un + 1 by A29,A33,A35,A41,A46,PRE_FF:6;
      then
A48:  tn+1 = 2*(un+1);
      t4.c2 = 2 by A12,A26,A31,A36,SCM_1:10;
      then t5.c2 = 2 by A9,A40,A43,Lm9,SCM_1:5;
      hence IC u = L0 & u.c2 = 2 & u.n = N qua Integer div (2 |^ (k+1)) by A13
,A29,A34,A38,A44,A45,SCM_1:9;
      thus u.n is Element of NAT by A29,A19,A33,A46,PRE_FF:7;
A49:  Fusc' (t0.n+1) = Fusc (tn+1) by Def2
        .= Fusc (un+1) by A48,PRE_FF:15
        .= Fusc' (u.n+1) by Def2;
      t4.b = t0.b by A12,A26,A37,A36,SCM_1:10;
      then t5.b = t0.b + t0.a by A9,A40,A43,A42,SCM_1:5;
      then
A50:  t6.b = t0.b+t0.a by A13,A38,A44,SCM_1:9;
A51:  Fusc' t0.n = Fusc tn by Def2
        .= Fusc un + Fusc (un+1) by A47,PRE_FF:15
        .= Fusc' u.n + Fusc (un+1) by Def2
        .= Fusc' u.n + Fusc' (u.n+1) by Def2;
      reconsider un = u.n, tn = t0.n as Integer;
      t5.a = t0.a by A9,A40,A43,A42,Lm12,SCM_1:5;
      then t6.a = t0.a by A13,A38,A44,SCM_1:9;
      then (ta * Fusc' tn) + (tb * Fusc' (tn+1)) = (u.a * Fusc' un) + (u.b) *
      Fusc' (un+1) by A29,A50,A51,A49;
      hence thesis by A15,A16,A18,XXREAL_0:2;
    end;
    suppose
A52:  t3.aux = 0;
      then
A53:  IC t4 = 6 by A12,A26,A36,SCM_1:10;
      then
A54:  IC t5 = (6+1) by A11,A40,SCM_1:5;
      t4.n = t3.n by A12,A26,A36,SCM_1:10;
      then t5.n = t3.n by A11,A40,A53,Lm10,SCM_1:5;
      then
A55:  t6.n = t3.n by A7,A38,A54,SCM_1:9;
      then reconsider un = u.n, tn = t0.n as Element of NAT by A29,A19,A33,
PRE_FF:7;
A56:  Fusc' (t0.n+1) = Fusc (tn+1) by Def2
        .= Fusc un + Fusc (un+1) by A29,A33,A35,A28,A52,A55,PRE_FF:15
        .= Fusc un + Fusc' (u.n+1) by Def2
        .= Fusc' u.n + Fusc' (u.n+1) by Def2;
A57:  t4.b = t0.b by A12,A26,A37,A36,SCM_1:10;
      then t5.b = t0.b by A11,A40,A53,Lm12,SCM_1:5;
      then
A58:  t6.b = t0.b by A7,A38,A54,SCM_1:9;
      t4.c2 = 2 by A12,A26,A31,A36,SCM_1:10;
      then t5.c2 = 2 by A11,A40,A53,Lm8,SCM_1:5;
      hence IC u = L0 & u.c2 = 2 & u.n = N qua Integer div (2 |^ (k+1)) & u.n
      is Element of NAT by A7,A29,A19,A33,A34,A38,A54,A55,PRE_FF:7,SCM_1:9;
A59:  Fusc' t0.n = Fusc tn by Def2
        .= Fusc un by A29,A33,A35,A28,A52,A55,PRE_FF:15
        .= Fusc' u.n by Def2;
      t4.a = t0.a by A12,A26,A39,A36,SCM_1:10;
      then t5.a = t0.a + t0.b by A11,A40,A53,A57,SCM_1:5;
      then
A60:  t6.a = t0.a+t0.b by A7,A38,A54,SCM_1:9;
      reconsider un = u.n, tn = t0.n, ta = t0.a, tb = t0.b as Integer;
      (ta * Fusc' tn) + (tb * Fusc' (tn+1)) = (ta+tb) * Fusc' un + tb *
      Fusc' (un+1) by A59,A56;
      hence thesis by A15,A16,A29,A18,A60,A58,XXREAL_0:2;
    end;
  end;
  set h = Comput(F,s,6*(k+1)+1);
  set u = Comput(F,s,6*(k+1));
A61: s.n = N by A5,SCM_1:1;
A62: s.a = 1 & s.b = 0 by A5,SCM_1:1;
A63: P[0]
  proof
    assume 0 <= log(2, N) + 1;
    let u be State of SCM;
    assume u = Comput(F,s,6*0);
    then
A64: u = s by EXTPRO_1:2;
    hence IC u = L0 & u.c2 = 2 by A5,MEMSTR_0:def 12,SCM_1:1;
    thus u.n = N qua Integer div 1 by A61,A64,PRE_FF:2
      .= N qua Integer div (2 |^ 0) by NEWTON:4;
    thus u.n is Element of NAT by A5,A64,SCM_1:1;
    thus thesis by A61,A62,A64,Def2;
  end;
A65: for k being Nat holds P[k] from NAT_1:sch 2( A63, A14 );
  [\log(2, N)/] <= log(2, N) by INT_1:def 6;
  then
A66: k+1 <= log(2, N)+1 by XREAL_1:6;
  then
A67: Fusc N = u.a*Fusc' u.n + u.b*Fusc' (u.n+1) by A65;
A68: IC u = L0 by A65,A66;
  then
A69: h.b = u.b by A6,SCM_1:10;
  u.n = N qua Integer div (2 |^ (k+1)) by A65,A66;
  then
A70: u.n = 0 by A4,PRE_FF:4;
  then
A71: IC h = L8 by A6,A68,SCM_1:10;
A72: F.IC u<>halt SCM by A6,A68,SCM_1:12;
A73: F.L8 = halt SCM by A1,Lm17;
  hence F halts_on S by A5,A71,EXTPRO_1:30;
  u.a*Fusc' u.n + u.b*Fusc' (u.n+1) = u.a * 0 + u.b * Fusc' (u.n+1) by A70,Def2
,PRE_FF:15
    .= u.b * Fusc (0+1) by A70,Def2
    .= u.b by PRE_FF:15;
  hence (Result(F,S)).dl.3 = Fusc N by A5,A73,A67,A71,A69,EXTPRO_1:7;
  F.IC h=halt SCM by A71,A1,Lm17;
  hence thesis by A5,A72,EXTPRO_1:33;
end;
