
theorem LM100:
  for x,y be Element of NAT
  holds Nat2BL.(x+y) = Nat2BL.x + Nat2BL.y
  proof
    let x,y be Element of NAT;
    x+y is Element of NAT by ORDINAL1:def 12;
    then
    Nat2BL.(x+y) = (LenBSeq (x+y)) -BinarySequence (x+y) by Def2;
    then
    reconsider adxy = Nat2BL.(x+y) as Tuple of LenBSeq (x+y), BOOLEAN;
    set Nx = Nat2BL.x;
    set Ny = Nat2BL.y;
    PX2: Nx = (LenBSeq x) -BinarySequence x by Def2;
    PA3: Ny = (LenBSeq y) -BinarySequence y by Def2;
    then
    A3: len Nx <> 0 & len Ny <> 0 by PX2;
    B1:Nx = (LenBSeq x) -BinarySequence x by Def2;
    B2:Ny = (LenBSeq y) -BinarySequence y by Def2;
    H1: Nx in rng Nat2BL by FUNCT_2:4;
    PH3: Ny in rng Nat2BL by FUNCT_2:4;
    PD0:LenMax(Nx,Ny) = max(len Nx,len Ny) by PA3,Def15,PX2;
    then
    len Nx <= LenMax(Nx,Ny) & len Ny <= LenMax(Nx,Ny) by XXREAL_0:25;
    then
    E0: len Nx + 0 <= LenMax(Nx,Ny) + 1
    &
    len Ny + 0 <= LenMax(Nx,Ny) + 1 by XREAL_1:7;
    per cases;
    suppose C1: ExtBit(Nx,LenMax(Nx,Ny)),
      ExtBit(Ny,LenMax(Nx,Ny)) are_summable;
      then
      C2: Nx+Ny=ExtBit(Nx,LenMax(Nx,Ny))+ExtBit(Ny,LenMax(Nx,Ny))
      by Def3,A3;
      set ENx = ExtBit(Nx,LenMax(Nx,Ny));
      set ENy = ExtBit(Ny,LenMax(Nx,Ny));
      D1: ENx = Nx^(0* ( LenMax(Nx,Ny)-' len Nx) ) by Def20,PD0,XXREAL_0:25;
      D2: ENy = Ny^(0* ( LenMax(Nx,Ny)-' len Ny) ) by Def20,PD0,XXREAL_0:25;
      A4: x = Absval ( (LenBSeq x) -BinarySequence x )
      by LM007
      .= Absval ENx by LM080,B1,D1;
      y = Absval ( (LenBSeq y) -BinarySequence y )
      by LM007
      .= Absval ENy by LM080,B2,D2;
      then
      A6: Nat2BL. Absval (ENx+ENy)=Nat2BL.(x+y)
      by A4,C1,BINARITH:22;
      consider L be Element of NAT such that
      H5: ENx+ENy = Nat2BL.L by FUNCT_2:113,PH3,C2,LM071,H1;
      thus Nat2BL.(x+y) = Nat2BL.x + Nat2BL.y by A6,C2,LM090,H5;
    end;
    suppose not ExtBit(Nx,LenMax(Nx,Ny)),
      ExtBit(Ny,LenMax(Nx,Ny)) are_summable; then
      C2: Nx+Ny=ExtBit(Nx,LenMax(Nx,Ny)+1)+ExtBit(Ny,LenMax(Nx,Ny)+1)
      by Def3,A3;
      set ENx = ExtBit(Nx,LenMax(Nx,Ny)+1);
      set ENy = ExtBit(Ny,LenMax(Nx,Ny)+1);

      XX1: ENx = ExtBit(Nx,LenMax(Nx,Ny)) ^ <* 0 *>
        by PD0,LMExtBit1,XXREAL_0:25;
      XX2: ENy = ExtBit(Ny,LenMax(Nx,Ny)) ^ <* 0 *>
        by PD0,LMExtBit1,XXREAL_0:25;
      D1: ENx = Nx^(0* ( LenMax(Nx,Ny)+1-' len Nx) ) by Def20,E0;
      D2: ENy = Ny^(0* ( LenMax(Nx,Ny)+1-' len Ny) ) by Def20,E0;
      A4: x = Absval ( (LenBSeq x) -BinarySequence x )
      by LM007
      .= Absval ENx by LM080,B1,D1;
      y = Absval ( (LenBSeq y) -BinarySequence y ) by LM007
      .= Absval ENy by LM080,B2,D2; then
      A6: Nat2BL. Absval (ENx+ENy) =Nat2BL.(x+y)
      by A4,BINARITH:22,XX1,XX2,LMExtBit2;
      consider L be Element of NAT such that
      H5: ENx+ENy = Nat2BL.L by FUNCT_2:113,PH3,C2,LM071,H1;
      thus Nat2BL.(x+y) = Nat2BL.x + Nat2BL.y by A6,C2,LM090,H5;
    end;
  end;
