
theorem Th15:
  Fusc 0 = 0 & Fusc 1 = 1 &
  for n being Nat holds Fusc (2*n) = Fusc n &
  Fusc (2*n+1) = Fusc n + Fusc (n+1)
proof
reconsider single1 = <*1*> as Element of NAT* by FINSEQ_1:def 11;
consider fusc being sequence of NAT* such that
Lm3: fusc.0 = single1 and
Lm4: for n being Nat holds P[n,fusc.n,fusc.(n+1)] from RECDEF_1:sch 2(Lm1);
  thus
A1: Fusc 0 = 0 by Def2;
  0+1 = 1 & 1 = (<*1*>)/.1 by FINSEQ_4:16;
  hence Fusc 1 = 1 by Def2,Lm3,Lm4;
  let n be Nat;
  per cases;
  suppose n = 0;
    hence thesis by A1;
  end;
  suppose n <> 0;
    then consider l being Nat such that
A2: n = l+1 by NAT_1:6;
    defpred P[Nat] means len (fusc.$1) = $1+1 & for k being Element
    of NAT st k <= $1 holds (fusc.$1)/.(k+1) = Fusc (k+1);
A3: for n be Nat st P[n] holds P[n+1]
    proof
      let n be Nat;
      assume that
A4:   len (fusc.n) = n+1 and
A5:   for k being Element of NAT st k <= n holds (fusc.n)/.(k+1) = Fusc ( k+1);
A6:   len <*((fusc.n)/.(n+2 div 2))+((fusc.n)/.(n+2 div 2+1))*> = 1 by
FINSEQ_1:40;
      n+2 = 2*(n+2 div 2)+(n+2 mod 2) by NAT_D:2;
      then
A7:   n+2=2*(n+2 div 2)+0 or n+2=2*(n+2 div 2)+1 by NAT_D:12;
A8:   len <*((fusc.n)/.(n+2 div 2))*> = 1 by FINSEQ_1:40;
      per cases by A7;
      suppose
        n+2 = 2*(n+2 div 2);
        then
A9:     fusc.(n+1) = fusc.n^<*(fusc.n)/.(n+2 div 2)*> by Lm4;
        hence len (fusc.(n+1)) = n+1+1 by A4,A8,FINSEQ_1:22;
        let k be Element of NAT;
A10:    now
          assume
A11:      k <= n;
          then 0+1 <= k+1 & k+1 <= n+1 by XREAL_1:7;
          then k+1 in dom (fusc.n) by A4,FINSEQ_3:25;
          hence (fusc.(n+1))/.(k+1) = (fusc.n)/.(k+1) by A9,FINSEQ_4:68
            .= Fusc (k+1) by A5,A11;
        end;
        assume k <= n+1;
        then k = n+1 or k <= n by NAT_1:8;
        hence thesis by A10,Def2,Lm3,Lm4;
      end;
      suppose
        n+2 = 2*(n+2 div 2)+1;
        then
A12:    fusc.(n+1)=fusc.n^<*((fusc.n)/.(n+2 div 2))+((fusc.n)/.(n+ 2 div
        2+1) )*> by Lm4;
        hence len (fusc.(n+1)) = n+1+1 by A4,A6,FINSEQ_1:22;
        let k be Element of NAT;
A13:    now
          assume
A14:      k <= n;
          then 0+1 <= k+1 & k+1 <= n+1 by XREAL_1:7;
          then k+1 in dom (fusc.n) by A4,FINSEQ_3:25;
          hence (fusc.(n+1))/.(k+1) = (fusc.n)/.(k+1) by A12,FINSEQ_4:68
            .= Fusc (k+1) by A5,A14;
        end;
        assume k <= n+1;
        then k = n+1 or k <= n by NAT_1:8;
        hence thesis by A13,Def2,Lm3,Lm4;
      end;
    end;
    reconsider l,n1=n as Element of NAT by ORDINAL1:def 12;
    2*l+1+(1+1) = 2*l+1+1+1;
    then
A15: fusc.(2*n1) = fusc.(2*l+1)^ <*((fusc.(2*l+1))/.n1)+((fusc.(2*l+1))/.(
    n1+1))*> by A2,Lm4;
A16: P[0]
    proof
      thus len (fusc.0) = 0+1 by Lm3,FINSEQ_1:40;
      let k be Element of NAT;
      assume k <= 0;
      then k = 0;
      hence thesis by Def2,Lm3,Lm4;
    end;
A17: for n being Nat holds P[n] from NAT_1:sch 2(A16,A3);
    then
A18: len (fusc.(2*l+1)) = 2*l+1+1;
A19: l+l = (1+1)*l;
    then
A20: l <= 2*l by NAT_1:11;
    then
A21: Fusc (n+1) = (fusc.(2*l+1))/.(n+1) by A2,A17,XREAL_1:7;
A22: len (fusc.(2*l)) = 2*l+1 by A17;
    2*l <= 2*l+1 by NAT_1:11;
    then
A23: Fusc n = (fusc.(2*l+1))/.n by A2,A17,A20,XXREAL_0:2;
    reconsider nn=2*n as Element of NAT by ORDINAL1:def 12;
    2*n = 2*l+2*1 by A2;
    then fusc.(2*l+1) = fusc.(2*l)^<*(fusc.(2*l))/.n1*> by Lm4;
    hence Fusc (2*n) = (fusc.(2*l)^<*(fusc.(2*l))/.n*>)/.(2*l+1+1) by A2,Def2
,Lm3,Lm4
      .= (fusc.(2*l))/.n by A22,FINSEQ_4:67
      .= Fusc n by A2,A17,A19,NAT_1:11;
    thus Fusc (2*n+1) = (fusc.nn)/.(2*n+1) by Def2,Lm3,Lm4
      .= Fusc n + Fusc (n+1) by A2,A18,A15,A23,A21,FINSEQ_4:67;
  end;
end;
