binari_4.miz
    
    begin
    
    reserve n for non
    zero  
    Nat, 
    
j,k,l,m for
    Nat, 
    
g,h,i for
    Integer;
    
    theorem :: 
    
    BINARI_4:1
    
    
    
    
    
    Th1: for m be 
    Nat st m 
    >  
    0 holds (m 
    * 2) 
    >= (m 
    + 1) 
    
    proof
    
      let m be
    Nat;
    
      assume m
    >  
    0 ; 
    
      then
    
      
    
    A1: m 
    >= ( 
    0  
    + 1) by 
    INT_1: 7;
    
      (m
    * 2) 
    = (m 
    + m); 
    
      hence thesis by
    A1,
    XREAL_1: 6;
    
    end;
    
    theorem :: 
    
    BINARI_4:2
    
    
    
    
    
    Th2: for m be 
    Nat holds (2 
    to_power m) 
    >= m 
    
    proof
    
      defpred
    
    P[
    Nat] means (2
    to_power $1) 
    >= $1; 
    
      
    
      
    
    A1: for m be 
    Nat st 
    P[m] holds
    P[(m
    + 1)] 
    
      proof
    
        let m be
    Nat such that 
    
        
    
    A2: (2 
    to_power m) 
    >= m; 
    
        per cases ;
    
          suppose
    
          
    
    A3: m 
    =  
    0 ; 
    
          then (2
    to_power (m 
    + 1)) 
    = 2 by 
    POWER: 25;
    
          hence thesis by
    A3;
    
        end;
    
          suppose
    
          
    
    A4: m 
    >  
    0 ; 
    
          reconsider m2 = (2
    to_power m) as 
    Nat;
    
          (m2
    * 2) 
    >= (m 
    * 2) & (2 
    to_power 1) 
    = 2 by 
    A2,
    NAT_1: 4,
    POWER: 25;
    
          then
    
          
    
    A5: (2 
    to_power (m 
    + 1)) 
    >= (m 
    * 2) by 
    POWER: 27;
    
          (m
    * 2) 
    >= (m 
    + 1) by 
    A4,
    Th1;
    
          hence thesis by
    A5,
    XXREAL_0: 2;
    
        end;
    
      end;
    
      
    
      
    
    A6: 
    P[
    0 ]; 
    
      thus for m be
    Nat holds 
    P[m] from
    NAT_1:sch 2(
    A6,
    A1);
    
    end;
    
    theorem :: 
    
    BINARI_4:3
    
    for m be
    Nat holds (( 
    0* m) 
    + ( 
    0* m)) 
    = ( 
    0* m) 
    
    proof
    
      let m be
    Nat;
    
      
    
      
    
    A1: ( 
    dom ( 
    0* m)) 
    = ( 
    Seg m) by 
    FUNCOP_1: 13;
    
      (
    dom  
    addreal ) 
    =  
    [:
    REAL , 
    REAL :] & ( 
    rng ( 
    0* m)) 
    c=  
    REAL by 
    FINSEQ_1:def 4,
    FUNCT_2:def 1;
    
      then
    
      
    
    A2: 
    [:(
    rng ( 
    0* m)), ( 
    rng ( 
    0* m)):] 
    c= ( 
    dom  
    addreal ) by 
    ZFMISC_1: 96;
    
      
    
      
    
    A3: ( 
    dom (( 
    0* m) 
    + ( 
    0* m))) 
    = ( 
    dom ( 
    addreal  
    .: (( 
    0* m),( 
    0* m)))) by 
    RVSUM_1:def 4
    
      .= ((
    dom ( 
    0* m)) 
    /\ ( 
    dom ( 
    0* m))) by 
    A2,
    FUNCOP_1: 69
    
      .= (
    Seg m) by 
    FUNCOP_1: 13;
    
      for k be
    Nat st k 
    in ( 
    dom ( 
    0* m)) holds (( 
    0* m) 
    . k) 
    = ((( 
    0* m) 
    + ( 
    0* m)) 
    . k) 
    
      proof
    
        let k be
    Nat such that 
    
        
    
    A4: k 
    in ( 
    dom ( 
    0* m)); 
    
        ((
    0* m) 
    . k) 
    =  
    0 ; 
    
        then (((
    0* m) 
    + ( 
    0* m)) 
    . k) 
    = ( 
    0  
    +  
    0 ) by 
    A3,
    A1,
    A4,
    VALUED_1:def 1;
    
        hence thesis;
    
      end;
    
      hence thesis by
    A3,
    FINSEQ_1: 13,
    FUNCOP_1: 13;
    
    end;
    
    theorem :: 
    
    BINARI_4:4
    
    
    
    
    
    Th4: for k,m,l be 
    Nat holds k 
    <= l & l 
    <= m implies k 
    = l or (k 
    + 1) 
    <= l & l 
    <= m 
    
    proof
    
      defpred
    
    P[
    Nat] means for m,l be
    Nat holds $1 
    <= l & l 
    <= m implies $1 
    = l or (($1 
    + 1) 
    <= l & l 
    <= m); 
    
      
    
      
    
    A1: for k be 
    Nat st 
    P[k] holds
    P[(k
    + 1)] 
    
      proof
    
        let k be
    Nat such that 
    P[k];
    
        let m,l be
    Nat;
    
        assume that
    
        
    
    A2: (k 
    + 1) 
    <= l and 
    
        
    
    A3: l 
    <= m; 
    
        (k
    + 1) 
    = l or (k 
    + 1) 
    < l by 
    A2,
    XXREAL_0: 1;
    
        hence thesis by
    A3,
    NAT_1: 13;
    
      end;
    
      
    
      
    
    A4: 
    P[
    0 ] by 
    NAT_1: 13;
    
      thus for k be
    Nat holds 
    P[k] from
    NAT_1:sch 2(
    A4,
    A1);
    
    end;
    
    theorem :: 
    
    BINARI_4:5
    
    
    
    
    
    Th5: for n be non 
    zero  
    Nat holds for x,y be 
    Tuple of n, 
    BOOLEAN st x 
    = ( 
    0* n) & y 
    = ( 
    0* n) holds ( 
    carry (x,y)) 
    = ( 
    0* n) 
    
    proof
    
      let n be non
    zero  
    Nat;
    
      let x,y be
    Tuple of n, 
    BOOLEAN such that 
    
      
    
    A1: x 
    = ( 
    0* n) and 
    
      
    
    A2: y 
    = ( 
    0* n); 
    
      
    
      
    
    A3: for j be 
    Nat st 1 
    < j & j 
    <= n holds (( 
    carry (x,y)) 
    . j) 
    =  
    0  
    
      proof
    
        let j be
    Nat such that 
    
        
    
    A4: 1 
    < j and 
    
        
    
    A5: j 
    <= n; 
    
        reconsider k = (j
    - 1) as 
    Element of 
    NAT by 
    A4,
    INT_1: 5;
    
        (k
    + 1) 
    = j; 
    
        then
    
        
    
    A6: 1 
    <= k & k 
    < n by 
    A4,
    A5,
    NAT_1: 13;
    
        (
    len ( 
    0* n)) 
    = n by 
    CARD_1:def 7;
    
        
    
        then
    
        
    
    A7: (x 
    /. k) 
    = (( 
    0* n) 
    . k) by 
    A1,
    A6,
    FINSEQ_4: 15
    
        .=
    FALSE ; 
    
        
    
        
    
    A8: j 
    = (k 
    + 1); 
    
        (
    len ( 
    carry (x,y))) 
    = n by 
    CARD_1:def 7;
    
        
    
        then ((
    carry (x,y)) 
    . j) 
    = (( 
    carry (x,y)) 
    /. j) by 
    A4,
    A5,
    FINSEQ_4: 15
    
        .= (((
    FALSE  
    '&'  
    FALSE ) 
    'or' ( 
    FALSE  
    '&' (( 
    carry (x,y)) 
    /. k))) 
    'or' ( 
    FALSE  
    '&' (( 
    carry (x,y)) 
    /. k))) by 
    A1,
    A2,
    A6,
    A8,
    A7,
    BINARITH:def 2
    
        .=
    FALSE ; 
    
        hence thesis;
    
      end;
    
      1
    <= ( 
    len ( 
    carry (x,y))) by 
    NAT_1: 14;
    
      
    
      then
    
      
    
    A9: (( 
    carry (x,y)) 
    . 1) 
    = (( 
    carry (x,y)) 
    /. 1) by 
    FINSEQ_4: 15
    
      .=
    0 by 
    BINARITH:def 2;
    
      for l be
    Nat st l 
    in ( 
    Seg n) holds (( 
    carry (x,y)) 
    . l) 
    = (( 
    0* n) 
    . l) 
    
      proof
    
        let l be
    Nat such that 
    
        
    
    A10: l 
    in ( 
    Seg n); 
    
        
    
        
    
    A11: 1 
    <= l by 
    A10,
    FINSEQ_1: 1;
    
        
    
        
    
    A12: (( 
    0* n) 
    . l) 
    =  
    0 ; 
    
        per cases by
    A10,
    A11,
    Th4,
    FINSEQ_1: 1;
    
          suppose l
    = 1; 
    
          hence thesis by
    A9;
    
        end;
    
          suppose
    
          
    
    A13: (1 
    + 1) 
    <= l & l 
    <= n; 
    
          then 1
    < l by 
    NAT_1: 13;
    
          hence thesis by
    A3,
    A12,
    A13;
    
        end;
    
      end;
    
      hence thesis by
    A1,
    FINSEQ_2: 119;
    
    end;
    
    theorem :: 
    
    BINARI_4:6
    
    for n be non
    zero  
    Nat holds for x,y be 
    Tuple of n, 
    BOOLEAN st x 
    = ( 
    0* n) & y 
    = ( 
    0* n) holds (x 
    + y) 
    = ( 
    0* n) 
    
    proof
    
      let n be non
    zero  
    Nat;
    
      let x,y be
    Tuple of n, 
    BOOLEAN such that 
    
      
    
    A1: x 
    = ( 
    0* n) and 
    
      
    
    A2: y 
    = ( 
    0* n); 
    
      for k be
    Nat st k 
    in ( 
    Seg n) holds ((x 
    + y) 
    . k) 
    = (( 
    0* n) 
    . k) 
    
      proof
    
        let k be
    Nat such that 
    
        
    
    A3: k 
    in ( 
    Seg n); 
    
        reconsider k as
    Nat;
    
        
    
        
    
    A4: (( 
    0* n) 
    . k) 
    =  
    FALSE ; 
    
        
    
        
    
    A5: 1 
    <= k by 
    A3,
    FINSEQ_1: 1;
    
        (
    len x) 
    = n by 
    CARD_1:def 7;
    
        then k
    <= ( 
    len x) by 
    A3,
    FINSEQ_1: 1;
    
        then
    
        
    
    A6: (y 
    /. k) 
    =  
    FALSE by 
    A1,
    A2,
    A4,
    A5,
    FINSEQ_4: 15;
    
        (
    len ( 
    carry (x,y))) 
    = n by 
    CARD_1:def 7;
    
        then k
    <= ( 
    len ( 
    carry (x,y))) by 
    A3,
    FINSEQ_1: 1;
    
        
    
        then
    
        
    
    A7: (( 
    carry (x,y)) 
    /. k) 
    = (( 
    carry (x,y)) 
    . k) by 
    A5,
    FINSEQ_4: 15
    
        .=
    FALSE by 
    A1,
    A2,
    A4,
    Th5;
    
        (
    len (x 
    + y)) 
    = n by 
    CARD_1:def 7;
    
        then k
    <= ( 
    len (x 
    + y)) by 
    A3,
    FINSEQ_1: 1;
    
        
    
        then ((x
    + y) 
    . k) 
    = ((x 
    + y) 
    /. k) by 
    A5,
    FINSEQ_4: 15
    
        .= (
    FALSE  
    'xor'  
    FALSE ) by 
    A1,
    A2,
    A3,
    A6,
    A7,
    BINARITH:def 5
    
        .=
    FALSE ; 
    
        hence thesis;
    
      end;
    
      hence thesis by
    A1,
    FINSEQ_2: 119;
    
    end;
    
    theorem :: 
    
    BINARI_4:7
    
    for n be non
    zero  
    Nat holds for F be 
    Tuple of n, 
    BOOLEAN st F 
    = ( 
    0* n) holds ( 
    Intval F) 
    =  
    0  
    
    proof
    
      let n be non
    zero  
    Nat;
    
      let F be
    Tuple of n, 
    BOOLEAN such that 
    
      
    
    A1: F 
    = ( 
    0* n); 
    
      
    
      
    
    A2: 1 
    <= n by 
    NAT_1: 14;
    
      n
    <= ( 
    len F) by 
    CARD_1:def 7;
    
      
    
      then (F
    /. n) 
    = (F 
    . n) by 
    A2,
    FINSEQ_4: 15
    
      .=
    FALSE by 
    A1;
    
      then (
    Intval F) 
    = ( 
    Absval F) by 
    BINARI_2:def 3;
    
      hence thesis by
    A1,
    BINARI_3: 6;
    
    end;
    
    theorem :: 
    
    BINARI_4:8
    
    
    
    
    
    Th8: (l 
    + m) 
    <= (k 
    - 1) implies l 
    < k & m 
    < k 
    
    proof
    
      assume
    
      
    
    A1: (l 
    + m) 
    <= (k 
    - 1); 
    
      then
    
      
    
    A2: ((l 
    + m) 
    - m) 
    <= ((k 
    - 1) 
    - m) by 
    XREAL_1: 9;
    
      k
    <= (k 
    + m) by 
    NAT_1: 11;
    
      then
    
      
    
    A3: (k 
    - m) 
    <= ((k 
    + m) 
    - m) by 
    XREAL_1: 9;
    
      ((k
    - 1) 
    - m) 
    = ((k 
    - m) 
    - 1); 
    
      then ((k
    - 1) 
    - m) 
    < k by 
    A3,
    XREAL_1: 146,
    XXREAL_0: 2;
    
      hence l
    < k by 
    A2,
    XXREAL_0: 2;
    
      k
    <= (k 
    + l) by 
    NAT_1: 11;
    
      then
    
      
    
    A4: (k 
    - l) 
    <= ((k 
    + l) 
    - l) by 
    XREAL_1: 9;
    
      
    
      
    
    A5: ((m 
    + l) 
    - l) 
    <= ((k 
    - 1) 
    - l) by 
    A1,
    XREAL_1: 9;
    
      ((k
    - 1) 
    - l) 
    = ((k 
    - l) 
    - 1); 
    
      then ((k
    - 1) 
    - l) 
    < k by 
    A4,
    XREAL_1: 146,
    XXREAL_0: 2;
    
      hence thesis by
    A5,
    XXREAL_0: 2;
    
    end;
    
    theorem :: 
    
    BINARI_4:9
    
    
    
    
    
    Th9: g 
    <= (h 
    + i) & h 
    <  
    0 & i 
    <  
    0 implies g 
    < h & g 
    < i 
    
    proof
    
      assume that
    
      
    
    A1: g 
    <= (h 
    + i) and 
    
      
    
    A2: h 
    <  
    0 and 
    
      
    
    A3: i 
    <  
    0 ; 
    
      (g
    - i) 
    <= ((h 
    + i) 
    - i) by 
    A1,
    XREAL_1: 9;
    
      then (i
    + (g 
    + ( 
    - i))) 
    < ( 
    0  
    + h) by 
    A3,
    XREAL_1: 8;
    
      hence g
    < h; 
    
      (g
    - h) 
    <= ((i 
    + h) 
    - h) by 
    A1,
    XREAL_1: 9;
    
      then (h
    + (g 
    + ( 
    - h))) 
    < ( 
    0  
    + i) by 
    A2,
    XREAL_1: 8;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    BINARI_4:10
    
    
    
    
    
    Th10: (l 
    + m) 
    <= ((2 
    to_power n) 
    - 1) implies ( 
    add_ovfl ((n 
    -BinarySequence l),(n 
    -BinarySequence m))) 
    =  
    FALSE  
    
    proof
    
      set L = (n
    -BinarySequence l), M = (n 
    -BinarySequence m); 
    
      
    
      
    
    A1: (( 
    Absval (L 
    + M)) 
    + (2 
    to_power n)) 
    >= (2 
    to_power n) by 
    NAT_1: 11;
    
      assume
    
      
    
    A2: (l 
    + m) 
    <= ((2 
    to_power n) 
    - 1); 
    
      then
    
      
    
    A3: l 
    < (2 
    to_power n) by 
    Th8;
    
      assume (
    add_ovfl (L,M)) 
    <>  
    FALSE ; 
    
      then
    
      
    
    A4: ( 
    IFEQ (( 
    add_ovfl (L,M)), 
    FALSE , 
    0 ,(2 
    to_power n))) 
    = (2 
    to_power n) by 
    FUNCOP_1:def 8;
    
      
    
      
    
    A5: m 
    < (2 
    to_power n) by 
    A2,
    Th8;
    
      ((
    Absval (L 
    + M)) 
    + ( 
    IFEQ (( 
    add_ovfl (L,M)), 
    FALSE , 
    0 ,(2 
    to_power n)))) 
    = (( 
    Absval L) 
    + ( 
    Absval M)) by 
    BINARITH: 21
    
      .= (l
    + ( 
    Absval M)) by 
    A3,
    BINARI_3: 35
    
      .= (l
    + m) by 
    A5,
    BINARI_3: 35;
    
      hence contradiction by
    A2,
    A4,
    A1,
    XREAL_1: 146,
    XXREAL_0: 2;
    
    end;
    
    theorem :: 
    
    BINARI_4:11
    
    
    
    
    
    Th11: for n be non 
    zero  
    Nat, l,m be 
    Nat st (l 
    + m) 
    <= ((2 
    to_power n) 
    - 1) holds ( 
    Absval ((n 
    -BinarySequence l) 
    + (n 
    -BinarySequence m))) 
    = (l 
    + m) 
    
    proof
    
      let n be non
    zero  
    Nat, l,m be 
    Nat such that 
    
      
    
    A1: (l 
    + m) 
    <= ((2 
    to_power n) 
    - 1); 
    
      
    
      
    
    A2: l 
    < (2 
    to_power n) by 
    A1,
    Th8;
    
      set L = (n
    -BinarySequence l), M = (n 
    -BinarySequence m); 
    
      (
    add_ovfl (L,M)) 
    =  
    FALSE by 
    A1,
    Th10;
    
      then (L,M)
    are_summable by 
    BINARITH:def 7;
    
      
    
      then
    
      
    
    A3: ( 
    Absval (L 
    + M)) 
    = (( 
    Absval L) 
    + ( 
    Absval M)) by 
    BINARITH: 22
    
      .= (l
    + ( 
    Absval M)) by 
    A2,
    BINARI_3: 35;
    
      m
    < (2 
    to_power n) by 
    A1,
    Th8;
    
      hence thesis by
    A3,
    BINARI_3: 35;
    
    end;
    
    theorem :: 
    
    BINARI_4:12
    
    
    
    
    
    Th12: for n be non 
    zero  
    Nat holds for z be 
    Tuple of n, 
    BOOLEAN st (z 
    /. n) 
    =  
    TRUE holds ( 
    Absval z) 
    >= (2 
    to_power (n 
    -' 1)) 
    
    proof
    
      defpred
    
    P[
    Nat] means (for z be
    Tuple of $1, 
    BOOLEAN st (z 
    /. $1) 
    =  
    TRUE holds ( 
    Absval z) 
    >= (2 
    to_power ($1 
    -' 1))); 
    
      
    
      
    
    A1: for n be non 
    zero  
    Nat st 
    P[n] holds
    P[(n
    + 1)] 
    
      proof
    
        let n be non
    zero  
    Nat such that 
    P[n];
    
        let z be
    Tuple of (n 
    + 1), 
    BOOLEAN such that 
    
        
    
    A2: (z 
    /. (n 
    + 1)) 
    =  
    TRUE ; 
    
        consider x be
    Element of (n 
    -tuples_on  
    BOOLEAN ), a be 
    Element of 
    BOOLEAN such that 
    
        
    
    A3: z 
    = (x 
    ^  
    <*a*>) by
    FINSEQ_2: 117;
    
        
    
        
    
    A4: (n 
    + 1) 
    >= 1 by 
    NAT_1: 11;
    
        then ((n
    + 1) 
    - 1) 
    >= (1 
    - 1) by 
    XREAL_1: 9;
    
        then
    
        
    
    A5: ((n 
    + 1) 
    -' 1) 
    = n by 
    XREAL_0:def 2;
    
        (
    len z) 
    = (n 
    + 1) by 
    CARD_1:def 7;
    
        
    
        then
    
        
    
    A6: (z 
    /. (n 
    + 1)) 
    = ((x 
    ^  
    <*a*>)
    . (n 
    + 1)) by 
    A3,
    A4,
    FINSEQ_4: 15
    
        .= a by
    FINSEQ_2: 116;
    
        (
    Absval z) 
    = (( 
    Absval x) 
    + ( 
    IFEQ (a, 
    FALSE , 
    0 ,(2 
    to_power n)))) by 
    A3,
    BINARITH: 20
    
        .= ((
    Absval x) 
    + (2 
    to_power n)) by 
    A2,
    A6,
    FUNCOP_1:def 8;
    
        hence thesis by
    A5,
    NAT_1: 11;
    
      end;
    
      
    
      
    
    A7: 
    P[1]
    
      proof
    
        let z be
    Tuple of 1, 
    BOOLEAN such that 
    
        
    
    A8: (z 
    /. 1) 
    =  
    TRUE ; 
    
        
    
        
    
    A9: ( 
    len z) 
    = 1 by 
    CARD_1:def 7;
    
        then (z
    . 1) 
    = (z 
    /. 1) by 
    FINSEQ_4: 15;
    
        then z
    =  
    <*
    TRUE *> by 
    A8,
    A9,
    FINSEQ_1: 40;
    
        then
    
        
    
    A10: ( 
    Absval z) 
    = 1 by 
    BINARITH: 16;
    
        (2
    to_power (1 
    -' 1)) 
    = (2 
    to_power (1 
    - 1)) by 
    XREAL_0:def 2;
    
        hence thesis by
    A10,
    POWER: 24;
    
      end;
    
      thus for n be non
    zero  
    Nat holds 
    P[n] from
    NAT_1:sch 10(
    A7,
    A1);
    
    end;
    
    theorem :: 
    
    BINARI_4:13
    
    
    
    
    
    Th13: (l 
    + m) 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1) implies (( 
    carry ((n 
    -BinarySequence l),(n 
    -BinarySequence m))) 
    /. n) 
    =  
    FALSE  
    
    proof
    
      set L = (n
    -BinarySequence l), M = (n 
    -BinarySequence m), F = 
    FALSE , T = 
    TRUE ; 
    
      assume
    
      
    
    A1: (l 
    + m) 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1); 
    
      then
    
      
    
    A2: l 
    < (2 
    to_power (n 
    -' 1)) by 
    Th8;
    
      n
    >= 1 by 
    NAT_1: 14;
    
      then (n
    - 1) 
    >= (1 
    - 1) by 
    XREAL_1: 9;
    
      then (n
    -' 1) 
    = (n 
    - 1) by 
    XREAL_0:def 2;
    
      then (2
    to_power (n 
    -' 1)) 
    < (2 
    to_power n) by 
    POWER: 39,
    XREAL_1: 146;
    
      then
    
      
    
    A3: ((2 
    to_power (n 
    -' 1)) 
    - 1) 
    < ((2 
    to_power n) 
    - 1) by 
    XREAL_1: 14;
    
      assume not ((
    carry (L,M)) 
    /. n) 
    = F; 
    
      then
    
      
    
    A4: (( 
    carry (L,M)) 
    /. n) 
    = T by 
    XBOOLEAN:def 3;
    
      
    
      
    
    A5: m 
    < (2 
    to_power (n 
    -' 1)) by 
    A1,
    Th8;
    
      1
    <= n by 
    NAT_1: 14;
    
      then
    
      
    
    A6: n 
    in ( 
    Seg n) by 
    FINSEQ_1: 1;
    
      
    
      then
    
      
    
    A7: (M 
    /. n) 
    = ( 
    IFEQ (((m 
    div (2 
    to_power (n 
    -' 1))) 
    mod 2), 
    0 ,F,T)) by 
    BINARI_3:def 1
    
      .= (
    IFEQ (( 
    0  
    mod 2), 
    0 ,F,T)) by 
    A5,
    NAT_D: 27
    
      .= (
    IFEQ ( 
    0 , 
    0 ,F,T)) by 
    NAT_D: 26
    
      .= F by
    FUNCOP_1:def 8;
    
      (L
    /. n) 
    = ( 
    IFEQ (((l 
    div (2 
    to_power (n 
    -' 1))) 
    mod 2), 
    0 ,F,T)) by 
    A6,
    BINARI_3:def 1
    
      .= (
    IFEQ (( 
    0  
    mod 2), 
    0 ,F,T)) by 
    A2,
    NAT_D: 27
    
      .= (
    IFEQ ( 
    0 , 
    0 ,F,T)) by 
    NAT_D: 26
    
      .= F by
    FUNCOP_1:def 8;
    
      
    
      then ((L
    + M) 
    /. n) 
    = ((F 
    'xor' F) 
    'xor' T) by 
    A4,
    A6,
    A7,
    BINARITH:def 5
    
      .= T;
    
      then
    
      
    
    A8: ( 
    Absval (L 
    + M)) 
    >= (2 
    to_power (n 
    -' 1)) by 
    Th12;
    
      (l
    + m) 
    < (2 
    to_power (n 
    -' 1)) by 
    A1,
    XREAL_1: 146,
    XXREAL_0: 2;
    
      hence contradiction by
    A1,
    A3,
    A8,
    Th11,
    XXREAL_0: 2;
    
    end;
    
    theorem :: 
    
    BINARI_4:14
    
    
    
    
    
    Th14: for n be non 
    zero  
    Nat st (l 
    + m) 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1) holds ( 
    Intval ((n 
    -BinarySequence l) 
    + (n 
    -BinarySequence m))) 
    = (l 
    + m) 
    
    proof
    
      let n be non
    zero  
    Nat such that 
    
      
    
    A1: (l 
    + m) 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1); 
    
      
    
      
    
    A2: l 
    < (2 
    to_power (n 
    -' 1)) by 
    A1,
    Th8;
    
      set L = (n
    -BinarySequence l), M = (n 
    -BinarySequence m), F = 
    FALSE , T = 
    TRUE ; 
    
      n
    >= 1 by 
    NAT_1: 14;
    
      then (n
    - 1) 
    >= (1 
    - 1) by 
    XREAL_1: 9;
    
      then (n
    -' 1) 
    = (n 
    - 1) by 
    XREAL_0:def 2;
    
      then (2
    to_power (n 
    -' 1)) 
    < (2 
    to_power n) by 
    POWER: 39,
    XREAL_1: 146;
    
      then
    
      
    
    A3: ((2 
    to_power (n 
    -' 1)) 
    - 1) 
    < ((2 
    to_power n) 
    - 1) by 
    XREAL_1: 14;
    
      
    
      
    
    A4: m 
    < (2 
    to_power (n 
    -' 1)) by 
    A1,
    Th8;
    
      1
    <= n by 
    NAT_1: 14;
    
      then
    
      
    
    A5: n 
    in ( 
    Seg n) by 
    FINSEQ_1: 1;
    
      
    
      then
    
      
    
    A6: (M 
    /. n) 
    = ( 
    IFEQ (((m 
    div (2 
    to_power (n 
    -' 1))) 
    mod 2), 
    0 ,F,T)) by 
    BINARI_3:def 1
    
      .= (
    IFEQ (( 
    0  
    mod 2), 
    0 ,F,T)) by 
    A4,
    NAT_D: 27
    
      .= (
    IFEQ ( 
    0 , 
    0 ,F,T)) by 
    NAT_D: 26
    
      .= F by
    FUNCOP_1:def 8;
    
      (L
    /. n) 
    = ( 
    IFEQ (((l 
    div (2 
    to_power (n 
    -' 1))) 
    mod 2), 
    0 ,F,T)) by 
    A5,
    BINARI_3:def 1
    
      .= (
    IFEQ (( 
    0  
    mod 2), 
    0 ,F,T)) by 
    A2,
    NAT_D: 27
    
      .= (
    IFEQ ( 
    0 , 
    0 ,F,T)) by 
    NAT_D: 26
    
      .= F by
    FUNCOP_1:def 8;
    
      
    
      then ((L
    + M) 
    /. n) 
    = ((F 
    'xor' F) 
    'xor' (( 
    carry (L,M)) 
    /. n)) by 
    A5,
    A6,
    BINARITH:def 5
    
      .= F by
    A1,
    Th13;
    
      then (
    Intval (L 
    + M)) 
    = ( 
    Absval (L 
    + M)) by 
    BINARI_2:def 3;
    
      hence thesis by
    A1,
    A3,
    Th11,
    XXREAL_0: 2;
    
    end;
    
    theorem :: 
    
    BINARI_4:15
    
    
    
    
    
    Th15: for z be 
    Tuple of 1, 
    BOOLEAN st z 
    =  
    <*
    TRUE *> holds ( 
    Intval z) 
    = ( 
    - 1) 
    
    proof
    
      let z be
    Tuple of 1, 
    BOOLEAN such that 
    
      
    
    A1: z 
    =  
    <*
    TRUE *>; 
    
      (
    len z) 
    = 1 by 
    CARD_1:def 7;
    
      
    
      then (z
    /. 1) 
    = (z 
    . 1) by 
    FINSEQ_4: 15
    
      .=
    TRUE by 
    A1,
    FINSEQ_1: 40;
    
      
    
      then (
    Intval z) 
    = (( 
    Absval z) 
    - (2 
    to_power 1)) by 
    BINARI_2:def 3
    
      .= (1
    - (2 
    to_power 1)) by 
    A1,
    BINARITH: 16
    
      .= (1
    - (1 
    + 1)) by 
    POWER: 25
    
      .= (
    0  
    - 1); 
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    BINARI_4:16
    
    for z be
    Tuple of 1, 
    BOOLEAN st z 
    =  
    <*
    FALSE *> holds ( 
    Intval z) 
    =  
    0  
    
    proof
    
      let z be
    Tuple of 1, 
    BOOLEAN such that 
    
      
    
    A1: z 
    =  
    <*
    FALSE *>; 
    
      (
    len z) 
    = 1 by 
    CARD_1:def 7;
    
      
    
      then (z
    /. 1) 
    = (z 
    . 1) by 
    FINSEQ_4: 15
    
      .=
    FALSE by 
    A1,
    FINSEQ_1: 40;
    
      then (
    Intval z) 
    = ( 
    Absval z) by 
    BINARI_2:def 3;
    
      hence thesis by
    A1,
    BINARITH: 15;
    
    end;
    
    theorem :: 
    
    BINARI_4:17
    
    for x be
    boolean  
    object holds ( 
    TRUE  
    'or' x) 
    =  
    TRUE ; 
    
    theorem :: 
    
    BINARI_4:18
    
    for n be non
    zero  
    Nat holds 
    0  
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1) & ( 
    - (2 
    to_power (n 
    -' 1))) 
    <=  
    0  
    
    proof
    
      defpred
    
    P[
    Nat] means
    0  
    <= ((2 
    to_power ($1 
    -' 1)) 
    - 1) & ( 
    - (2 
    to_power ($1 
    -' 1))) 
    <=  
    0 ; 
    
      
    
      
    
    A1: for k be non 
    zero  
    Nat st 
    P[k] holds
    P[(k
    + 1)] 
    
      proof
    
        let k be non
    zero  
    Nat such that 
    
        
    
    A2: 
    0  
    <= ((2 
    to_power (k 
    -' 1)) 
    - 1) and ( 
    - (2 
    to_power (k 
    -' 1))) 
    <=  
    0 ; 
    
        ((k
    + 1) 
    -' 1) 
    = k by 
    NAT_D: 34;
    
        then (2
    to_power (k 
    -' 1)) 
    < (2 
    to_power ((k 
    + 1) 
    -' 1)) by 
    NAT_2: 9,
    POWER: 39;
    
        hence thesis by
    A2,
    XREAL_1: 9;
    
      end;
    
      (1
    - 1) 
    =  
    0 ; 
    
      
    
      then (2
    to_power (1 
    -' 1)) 
    = (2 
    to_power  
    0 ) by 
    XREAL_0:def 2
    
      .= 1 by
    POWER: 24;
    
      then
    
      
    
    A3: 
    P[1];
    
      thus for n be non
    zero  
    Nat holds 
    P[n] from
    NAT_1:sch 10(
    A3,
    A1);
    
    end;
    
    theorem :: 
    
    BINARI_4:19
    
    for x,y be
    Tuple of n, 
    BOOLEAN st x 
    = ( 
    0* n) & y 
    = ( 
    0* n) holds (x,y) 
    are_summable  
    
    proof
    
      let x,y be
    Tuple of n, 
    BOOLEAN such that 
    
      
    
    A1: x 
    = ( 
    0* n) and 
    
      
    
    A2: y 
    = ( 
    0* n); 
    
      
    
      
    
    A3: 1 
    <= n by 
    NAT_1: 14;
    
      (
    len x) 
    = n by 
    CARD_1:def 7;
    
      
    
      then (x
    /. n) 
    = (( 
    0* n) 
    . n) by 
    A1,
    A3,
    FINSEQ_4: 15
    
      .=
    FALSE ; 
    
      
    
      then (
    add_ovfl (x,y)) 
    = ((( 
    FALSE  
    '&'  
    FALSE ) 
    'or' ( 
    FALSE  
    '&' (( 
    carry (x,y)) 
    /. n))) 
    'or' ( 
    FALSE  
    '&' (( 
    carry (x,y)) 
    /. n))) by 
    A1,
    A2,
    BINARITH:def 6
    
      .=
    FALSE ; 
    
      hence thesis by
    BINARITH:def 7;
    
    end;
    
    theorem :: 
    
    BINARI_4:20
    
    
    
    
    
    Th20: ((i 
    * n) 
    mod n) 
    =  
    0 by 
    NAT_D: 71;
    
    begin
    
    definition
    
      let m,j be
    Nat;
    
      :: 
    
    BINARI_4:def1
    
      func
    
    MajP (m,j) -> 
    Nat means 
    
      :
    
    Def1: (2 
    to_power it ) 
    >= j & it 
    >= m & for k be 
    Nat st (2 
    to_power k) 
    >= j & k 
    >= m holds k 
    >= it ; 
    
      existence
    
      proof
    
        per cases ;
    
          suppose
    
          
    
    A1: (2 
    to_power m) 
    >= j; 
    
          for k be
    Nat st (2 
    to_power k) 
    >= j & k 
    >= m holds k 
    >= m; 
    
          hence thesis by
    A1;
    
        end;
    
          suppose
    
          
    
    A2: (2 
    to_power m) 
    < j; 
    
          defpred
    
    P[
    Nat] means (2
    to_power $1) 
    >= j & $1 
    >= m; 
    
          (2
    to_power m) 
    >= m by 
    Th2;
    
          then
    
          
    
    A3: j 
    >= m by 
    A2,
    XXREAL_0: 2;
    
          (2
    to_power j) 
    >= j by 
    Th2;
    
          then
    
          
    
    A4: ex k be 
    Nat st 
    P[k] by
    A3;
    
          ex k be
    Nat st 
    P[k] & for l be
    Nat st 
    P[l] holds l
    >= k from 
    NAT_1:sch 5(
    A4);
    
          hence thesis;
    
        end;
    
      end;
    
      uniqueness
    
      proof
    
        let p,q be
    Nat;
    
        assume (2
    to_power p) 
    >= j & p 
    >= m & (for k be 
    Nat st (2 
    to_power k) 
    >= j & k 
    >= m holds k 
    >= p) & (2 
    to_power q) 
    >= j & (q 
    >= m & for k be 
    Nat st (2 
    to_power k) 
    >= j & k 
    >= m holds k 
    >= q); 
    
        then p
    >= q & q 
    >= p; 
    
        hence thesis by
    XXREAL_0: 1;
    
      end;
    
    end
    
    theorem :: 
    
    BINARI_4:21
    
    j
    >= k implies ( 
    MajP (m,j)) 
    >= ( 
    MajP (m,k)) 
    
    proof
    
      assume
    
      
    
    A1: j 
    >= k; 
    
      
    
      
    
    A2: ( 
    MajP (m,j)) 
    >= m by 
    Def1;
    
      (2
    to_power ( 
    MajP (m,j))) 
    >= j by 
    Def1;
    
      then (2
    to_power ( 
    MajP (m,j))) 
    >= k by 
    A1,
    XXREAL_0: 2;
    
      hence thesis by
    A2,
    Def1;
    
    end;
    
    theorem :: 
    
    BINARI_4:22
    
    
    
    
    
    Th22: l 
    >= m implies ( 
    MajP (l,j)) 
    >= ( 
    MajP (m,j)) 
    
    proof
    
      assume
    
      
    
    A1: l 
    >= m; 
    
      
    
      
    
    A2: (2 
    to_power ( 
    MajP (l,j))) 
    >= j by 
    Def1;
    
      (
    MajP (l,j)) 
    >= l by 
    Def1;
    
      then (
    MajP (l,j)) 
    >= m by 
    A1,
    XXREAL_0: 2;
    
      hence thesis by
    A2,
    Def1;
    
    end;
    
    theorem :: 
    
    BINARI_4:23
    
    m
    >= 1 implies ( 
    MajP (m,1)) 
    = m 
    
    proof
    
      assume m
    >= 1; 
    
      then
    
      
    
    A1: (2 
    to_power m) 
    >= 1 by 
    POWER: 35;
    
      for k be
    Nat st (2 
    to_power k) 
    >= 1 & k 
    >= m holds k 
    >= m; 
    
      hence thesis by
    A1,
    Def1;
    
    end;
    
    theorem :: 
    
    BINARI_4:24
    
    
    
    
    
    Th24: j 
    <= (2 
    to_power m) implies ( 
    MajP (m,j)) 
    = m 
    
    proof
    
      
    
      
    
    A1: for k be 
    Nat st (2 
    to_power k) 
    >= j & k 
    >= m holds k 
    >= m; 
    
      assume j
    <= (2 
    to_power m); 
    
      hence thesis by
    A1,
    Def1;
    
    end;
    
    theorem :: 
    
    BINARI_4:25
    
    j
    > (2 
    to_power m) implies ( 
    MajP (m,j)) 
    > m 
    
    proof
    
      assume
    
      
    
    A1: j 
    > (2 
    to_power m); 
    
      (2
    to_power ( 
    MajP (m,j))) 
    >= j by 
    Def1;
    
      then (2
    to_power ( 
    MajP (m,j))) 
    > (2 
    to_power m) by 
    A1,
    XXREAL_0: 2;
    
      hence thesis by
    PRE_FF: 8;
    
    end;
    
    begin
    
    definition
    
      let m be
    Nat;
    
      let i be
    Integer;
    
      :: 
    
    BINARI_4:def2
    
      func
    
    2sComplement (m,i) -> 
    Tuple of m, 
    BOOLEAN equals 
    
      :
    
    Def2: (m 
    -BinarySequence  
    |.((2
    to_power ( 
    MajP (m, 
    |.i.|)))
    + i).|) if i 
    <  
    0  
    
      otherwise (m
    -BinarySequence  
    |.i.|);
    
      correctness ;
    
    end
    
    theorem :: 
    
    BINARI_4:26
    
    for m be
    Nat holds ( 
    2sComplement (m, 
    0 )) 
    = ( 
    0* m) 
    
    proof
    
      let m be
    Nat;
    
      (
    2sComplement (m, 
    0 )) 
    = (m 
    -BinarySequence  
    |.
    0 .|) by 
    Def2
    
      .= (m
    -BinarySequence  
    0 ) by 
    ABSVALUE: 2;
    
      hence thesis by
    BINARI_3: 25;
    
    end;
    
    theorem :: 
    
    BINARI_4:27
    
    for i be
    Integer st i 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1) & ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= i holds ( 
    Intval ( 
    2sComplement (n,i))) 
    = i 
    
    proof
    
      let i such that
    
      
    
    A1: i 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1) and 
    
      
    
    A2: ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= i; 
    
      
    
      
    
    A3: n 
    >= 1 by 
    NAT_1: 14;
    
      now
    
        per cases ;
    
          suppose i
    >=  
    0 ; 
    
          then
    
          reconsider i as
    Element of 
    NAT by 
    INT_1: 3;
    
          
    
          
    
    A4: ( 
    2sComplement (n,i)) 
    = (n 
    -BinarySequence  
    |.i.|) by
    Def2
    
          .= (n
    -BinarySequence i) by 
    ABSVALUE:def 1;
    
          (i
    + 1) 
    <= (((2 
    to_power (n 
    -' 1)) 
    - 1) 
    + 1) by 
    A1,
    XREAL_1: 6;
    
          then
    
          
    
    A5: i 
    < (2 
    to_power (n 
    -' 1)) by 
    NAT_1: 13;
    
          n
    >= 1 by 
    NAT_1: 14;
    
          then (n
    - 1) 
    >= (1 
    - 1) by 
    XREAL_1: 9;
    
          then (n
    -' 1) 
    = (n 
    - 1) by 
    XREAL_0:def 2;
    
          then (2
    to_power (n 
    -' 1)) 
    < (2 
    to_power n) by 
    POWER: 39,
    XREAL_1: 146;
    
          then i
    < (2 
    to_power n) by 
    A5,
    XXREAL_0: 2;
    
          then
    
          
    
    A6: ( 
    Absval (n 
    -BinarySequence i)) 
    = i by 
    BINARI_3: 35;
    
          1
    <= n by 
    NAT_1: 14;
    
          then n
    in ( 
    Seg n) by 
    FINSEQ_1: 1;
    
          
    
          then ((n
    -BinarySequence i) 
    /. n) 
    = ( 
    IFEQ (((i 
    div (2 
    to_power (n 
    -' 1))) 
    mod 2), 
    0 , 
    FALSE , 
    TRUE )) by 
    BINARI_3:def 1
    
          .= (
    IFEQ (( 
    0  
    mod 2), 
    0 , 
    FALSE , 
    TRUE )) by 
    A5,
    NAT_D: 27
    
          .= (
    IFEQ ( 
    0 , 
    0 , 
    FALSE , 
    TRUE )) by 
    NAT_D: 26
    
          .=
    FALSE by 
    FUNCOP_1:def 8;
    
          hence thesis by
    A4,
    A6,
    BINARI_2:def 3;
    
        end;
    
          suppose
    
          
    
    A7: i 
    <  
    0 ; 
    
          
    
          
    
    A8: (2 
    to_power n) 
    >= (2 
    to_power (n 
    -' 1)) by 
    NAT_2: 9,
    POWER: 39;
    
          then (
    - (2 
    to_power n)) 
    <= ( 
    - (2 
    to_power (n 
    -' 1))) by 
    XREAL_1: 24;
    
          then (
    - (2 
    to_power n)) 
    <= i by 
    A2,
    XXREAL_0: 2;
    
          then ((
    - (2 
    to_power n)) 
    - i) 
    <= (i 
    - i) by 
    XREAL_1: 9;
    
          then (
    - ((2 
    to_power n) 
    + i)) 
    <=  
    0 ; 
    
          then ((2
    to_power n) 
    + i) 
    >= ( 
    -  
    0 ); 
    
          then
    
          reconsider k = ((2
    to_power n) 
    + i) as 
    Element of 
    NAT by 
    INT_1: 3;
    
          
    |.i.|
    = ( 
    - i) by 
    A7,
    ABSVALUE:def 1;
    
          then
    |.i.|
    <= ( 
    - ( 
    - (2 
    to_power (n 
    -' 1)))) by 
    A2,
    XREAL_1: 24;
    
          then (
    MajP (n, 
    |.i.|))
    = n by 
    A8,
    Th24,
    XXREAL_0: 2;
    
          
    
          then
    
          
    
    A9: ( 
    2sComplement (n,i)) 
    = (n 
    -BinarySequence  
    |.k.|) by
    A7,
    Def2
    
          .= (n
    -BinarySequence k) by 
    ABSVALUE:def 1;
    
          k
    < ((2 
    to_power n) 
    +  
    0 ) by 
    A7,
    XREAL_1: 8;
    
          then k
    < ((2 
    to_power 1) 
    * (2 
    to_power (n 
    -' 1))) by 
    NAT_1: 14,
    NAT_2: 10;
    
          then k
    < (2 
    * (2 
    to_power (n 
    -' 1))) by 
    POWER: 25;
    
          then
    
          
    
    A10: k 
    < ((2 
    to_power (n 
    -' 1)) 
    + (2 
    to_power (n 
    -' 1))); 
    
          
    
          
    
    A11: ((2 
    to_power n) 
    + i) 
    < ((2 
    to_power n) 
    +  
    0 ) by 
    A7,
    XREAL_1: 6;
    
          ((2
    to_power n) 
    + ( 
    - (2 
    to_power (n 
    -' 1)))) 
    = ((2 
    to_power n) 
    - (2 
    to_power (n 
    -' 1))) 
    
          .= (((2
    to_power 1) 
    * (2 
    to_power (n 
    -' 1))) 
    - (2 
    to_power (n 
    -' 1))) by 
    NAT_1: 14,
    NAT_2: 10
    
          .= ((2
    * (2 
    to_power (n 
    -' 1))) 
    - (2 
    to_power (n 
    -' 1))) by 
    POWER: 25
    
          .= (2
    to_power (n 
    -' 1)); 
    
          then
    
          
    
    A12: k 
    >= (2 
    to_power (n 
    -' 1)) by 
    A2,
    XREAL_1: 6;
    
          n
    in ( 
    Seg n) by 
    A3,
    FINSEQ_1: 1;
    
          
    
          then ((n
    -BinarySequence k) 
    /. n) 
    = ( 
    IFEQ (((k 
    div (2 
    to_power (n 
    -' 1))) 
    mod 2), 
    0 , 
    FALSE , 
    TRUE )) by 
    BINARI_3:def 1
    
          .= (
    IFEQ ((1 
    mod 2), 
    0 , 
    FALSE , 
    TRUE )) by 
    A12,
    A10,
    NAT_2: 20
    
          .= (
    IFEQ (1, 
    0 , 
    FALSE , 
    TRUE )) by 
    NAT_D: 14
    
          .=
    TRUE by 
    FUNCOP_1:def 8;
    
          
    
          then (
    Intval ( 
    2sComplement (n,i))) 
    = (( 
    Absval (n 
    -BinarySequence k)) 
    - (2 
    to_power n)) by 
    A9,
    BINARI_2:def 3
    
          .= (k
    - (2 
    to_power n)) by 
    A11,
    BINARI_3: 35
    
          .= (
    0  
    + i); 
    
          hence thesis;
    
        end;
    
      end;
    
      hence thesis;
    
    end;
    
    
    
    
    
    Lm1: (k 
    mod n) 
    = (l 
    mod n) & k 
    > l implies ex s be 
    Integer st k 
    = (l 
    + (s 
    * n)) 
    
    proof
    
      assume that
    
      
    
    A1: (k 
    mod n) 
    = (l 
    mod n) and 
    
      
    
    A2: k 
    > l; 
    
      consider m be
    Nat such that 
    
      
    
    A3: k 
    = (l 
    + m) by 
    A2,
    NAT_1: 10;
    
      take (m
    div n); 
    
      l
    = (((l 
    div n) 
    * n) 
    + (l 
    mod n)) & k 
    = (((k 
    div n) 
    * n) 
    + (l 
    mod n)) by 
    A1,
    NAT_D: 2;
    
      
    
      then (m
    mod n) 
    = ((((k 
    div n) 
    - (l 
    div n)) 
    * n) 
    mod n) by 
    A3
    
      .=
    0 by 
    Th20;
    
      then ((l
    + m) 
    div n) 
    = ((l 
    div n) 
    + (m 
    div n)) by 
    NAT_D: 19;
    
      
    
      then k
    = ((((l 
    div n) 
    + (m 
    div n)) 
    * n) 
    + (l 
    mod n)) by 
    A1,
    A3,
    NAT_D: 2
    
      .= (((m
    div n) 
    * n) 
    + (((l 
    div n) 
    * n) 
    + (l 
    mod n))) 
    
      .= (((m
    div n) 
    * n) 
    + l) by 
    NAT_D: 2;
    
      hence thesis;
    
    end;
    
    
    
    
    
    Lm2: (k 
    mod n) 
    = (l 
    mod n) implies ex s be 
    Integer st k 
    = (l 
    + (s 
    * n)) 
    
    proof
    
      assume
    
      
    
    A1: (k 
    mod n) 
    = (l 
    mod n); 
    
      now
    
        per cases by
    XXREAL_0: 1;
    
          suppose
    
          
    
    A2: k 
    = l; 
    
          set s =
    0 ; 
    
          k
    = (l 
    + (s 
    * n)) by 
    A2;
    
          hence thesis;
    
        end;
    
          suppose
    
          
    
    A3: k 
    > l or l 
    > k; 
    
          now
    
            per cases by
    A3;
    
              suppose k
    > l; 
    
              hence thesis by
    A1,
    Lm1;
    
            end;
    
              suppose k
    < l; 
    
              then
    
              consider t be
    Integer such that 
    
              
    
    A4: l 
    = (k 
    + (t 
    * n)) by 
    A1,
    Lm1;
    
              k
    = (l 
    + (( 
    - t) 
    * n)) by 
    A4;
    
              hence thesis;
    
            end;
    
          end;
    
          hence thesis;
    
        end;
    
      end;
    
      hence thesis;
    
    end;
    
    
    
    
    
    Lm3: for k,l,m be 
    Nat st m 
    < n & (k 
    mod (2 
    to_power n)) 
    = (l 
    mod (2 
    to_power n)) holds ((k 
    div (2 
    to_power m)) 
    mod 2) 
    = ((l 
    div (2 
    to_power m)) 
    mod 2) 
    
    proof
    
      let k,l,m be
    Nat such that 
    
      
    
    A1: m 
    < n and 
    
      
    
    A2: (k 
    mod (2 
    to_power n)) 
    = (l 
    mod (2 
    to_power n)); 
    
      consider j be
    Nat such that 
    
      
    
    A3: n 
    = (m 
    + j) by 
    A1,
    NAT_1: 10;
    
      (2
    to_power n) 
    = (2 
    |^ n) by 
    POWER: 41;
    
      then (2
    to_power n) is non 
    zero by 
    PREPOWER: 5;
    
      then
    
      consider s be
    Integer such that 
    
      
    
    A4: k 
    = (l 
    + (s 
    * (2 
    to_power n))) by 
    A2,
    Lm2;
    
      reconsider j as
    Nat;
    
      set M = (2
    to_power m), J = (2 
    to_power j); 
    
      (m
    + ( 
    - m)) 
    < (n 
    + ( 
    - m)) by 
    A1,
    XREAL_1: 8;
    
      then (
    0  
    + 1) 
    < (j 
    + 1) by 
    A3,
    XREAL_1: 8;
    
      then 1
    <= j by 
    NAT_1: 13;
    
      then (2
    to_power 1) 
    divides (2 
    to_power j) by 
    NAT_2: 11;
    
      then 2
    divides (2 
    to_power j) by 
    POWER: 25;
    
      then (J
    mod 2) 
    =  
    0 by 
    PEPIN: 6;
    
      
    
      then
    
      
    
    A5: ((s 
    * J) 
    mod 2) 
    = (((s 
    mod 2) 
    *  
    0 ) 
    mod 2) by 
    NAT_D: 67
    
      .=
    0 by 
    NAT_D: 26;
    
      reconsider L = l as
    Integer;
    
      
    
      
    
    A6: M 
    >  
    0 by 
    POWER: 34;
    
      (k
    div M) 
    = ((l 
    + (s 
    * (J 
    * M))) 
    div M) by 
    A4,
    A3,
    POWER: 27
    
      .= ((l
    + ((s 
    * J) 
    * M)) 
    div M) 
    
      .= ((l
    div M) 
    + (s 
    * J)) by 
    A6,
    NAT_D: 61;
    
      
    
      then ((k
    div M) 
    mod 2) 
    = ((((L 
    div M) 
    mod 2) 
    +  
    0 ) 
    mod 2) by 
    A5,
    NAT_D: 66
    
      .= ((L
    div M) 
    mod 2) by 
    NAT_D: 65;
    
      hence thesis;
    
    end;
    
    
    
    
    
    Lm4: for h,i be 
    Integer st (h 
    mod (2 
    to_power n)) 
    = (i 
    mod (2 
    to_power n)) holds (((2 
    to_power ( 
    MajP (n, 
    |.h.|)))
    + h) 
    mod (2 
    to_power n)) 
    = (((2 
    to_power ( 
    MajP (n, 
    |.i.|)))
    + i) 
    mod (2 
    to_power n)) 
    
    proof
    
      let h,i be
    Integer such that 
    
      
    
    A1: (h 
    mod (2 
    to_power n)) 
    = (i 
    mod (2 
    to_power n)); 
    
      n
    <= ( 
    MajP (n, 
    |.i.|)) by
    Def1;
    
      then
    
      consider y be
    Nat such that 
    
      
    
    A2: ( 
    MajP (n, 
    |.i.|))
    = (n 
    + y) by 
    NAT_1: 10;
    
      reconsider L = (2
    to_power ( 
    MajP (n, 
    |.i.|))) as
    Integer;
    
      reconsider M = (2
    to_power ( 
    MajP (n, 
    |.h.|))) as
    Integer;
    
      n
    <= ( 
    MajP (n, 
    |.h.|)) by
    Def1;
    
      then
    
      consider x be
    Nat such that 
    
      
    
    A3: ( 
    MajP (n, 
    |.h.|))
    = (n 
    + x) by 
    NAT_1: 10;
    
      reconsider x as
    Nat;
    
      M
    = ((2 
    to_power n) 
    * (2 
    to_power x)) by 
    A3,
    POWER: 27;
    
      
    
      then
    
      
    
    A4: (M 
    mod (2 
    to_power n)) 
    = ((((2 
    to_power n) 
    mod (2 
    to_power n)) 
    * (2 
    to_power x)) 
    mod (2 
    to_power n)) by 
    EULER_2: 8
    
      .= ((
    0  
    * (2 
    to_power x)) 
    mod (2 
    to_power n)) by 
    NAT_D: 25
    
      .=
    0 by 
    NAT_D: 26;
    
      reconsider y as
    Nat;
    
      L
    = ((2 
    to_power n) 
    * (2 
    to_power y)) by 
    A2,
    POWER: 27;
    
      
    
      then
    
      
    
    A5: (L 
    mod (2 
    to_power n)) 
    = ((((2 
    to_power n) 
    mod (2 
    to_power n)) 
    * (2 
    to_power y)) 
    mod (2 
    to_power n)) by 
    EULER_2: 8
    
      .= ((
    0  
    * (2 
    to_power y)) 
    mod (2 
    to_power n)) by 
    NAT_D: 25
    
      .=
    0 by 
    NAT_D: 26;
    
      
    
      
    
    A6: ((L 
    + i) 
    mod (2 
    to_power n)) 
    = (((L 
    mod (2 
    to_power n)) 
    + (i 
    mod (2 
    to_power n))) 
    mod (2 
    to_power n)) by 
    NAT_D: 66
    
      .= ((i
    mod (2 
    to_power n)) 
    mod (2 
    to_power n)) by 
    A5;
    
      ((M
    + h) 
    mod (2 
    to_power n)) 
    = (((M 
    mod (2 
    to_power n)) 
    + (h 
    mod (2 
    to_power n))) 
    mod (2 
    to_power n)) by 
    NAT_D: 66
    
      .= ((h
    mod (2 
    to_power n)) 
    mod (2 
    to_power n)) by 
    A4;
    
      hence thesis by
    A1,
    A6;
    
    end;
    
    
    
    
    
    Lm5: for h,i be 
    Integer st h 
    >=  
    0 & i 
    >=  
    0 & (h 
    mod (2 
    to_power n)) 
    = (i 
    mod (2 
    to_power n)) holds ( 
    2sComplement (n,h)) 
    = ( 
    2sComplement (n,i)) 
    
    proof
    
      let h,i be
    Integer such that 
    
      
    
    A1: h 
    >=  
    0 & i 
    >=  
    0 and 
    
      
    
    A2: (h 
    mod (2 
    to_power n)) 
    = (i 
    mod (2 
    to_power n)); 
    
      
    
      
    
    A3: for j be 
    Nat st j 
    in ( 
    Seg n) holds ((n 
    -BinarySequence  
    |.h.|)
    . j) 
    = ((n 
    -BinarySequence  
    |.i.|)
    . j) 
    
      proof
    
        
    
        
    
    A4: 
    |.h.|
    = h & 
    |.i.|
    = i by 
    A1,
    ABSVALUE:def 1;
    
        let j be
    Nat such that 
    
        
    
    A5: j 
    in ( 
    Seg n); 
    
        reconsider j as
    Nat;
    
        
    
        
    
    A6: j 
    <= n by 
    A5,
    FINSEQ_1: 1;
    
        
    
        
    
    A7: 1 
    <= j by 
    A5,
    FINSEQ_1: 1;
    
        then (j
    - 1) 
    >= (1 
    - 1) by 
    XREAL_1: 9;
    
        then (j
    -' 1) 
    = (j 
    - 1) by 
    XREAL_0:def 2;
    
        then
    
        
    
    A8: (j 
    -' 1) 
    < n by 
    A6,
    XREAL_1: 146,
    XXREAL_0: 2;
    
        (
    len (n 
    -BinarySequence  
    |.i.|))
    = n by 
    CARD_1:def 7;
    
        
    
        then
    
        
    
    A9: ((n 
    -BinarySequence  
    |.i.|)
    . j) 
    = ((n 
    -BinarySequence  
    |.i.|)
    /. j) by 
    A7,
    A6,
    FINSEQ_4: 15
    
        .= (
    IFEQ ((( 
    |.i.|
    div (2 
    to_power (j 
    -' 1))) 
    mod 2), 
    0 , 
    FALSE , 
    TRUE )) by 
    A5,
    BINARI_3:def 1;
    
        (
    len (n 
    -BinarySequence  
    |.h.|))
    = n by 
    CARD_1:def 7;
    
        
    
        then ((n
    -BinarySequence  
    |.h.|)
    . j) 
    = ((n 
    -BinarySequence  
    |.h.|)
    /. j) by 
    A7,
    A6,
    FINSEQ_4: 15
    
        .= (
    IFEQ ((( 
    |.h.|
    div (2 
    to_power (j 
    -' 1))) 
    mod 2), 
    0 , 
    FALSE , 
    TRUE )) by 
    A5,
    BINARI_3:def 1
    
        .= (
    IFEQ ((( 
    |.i.|
    div (2 
    to_power (j 
    -' 1))) 
    mod 2), 
    0 , 
    FALSE , 
    TRUE )) by 
    A2,
    A8,
    A4,
    Lm3;
    
        hence thesis by
    A9;
    
      end;
    
      (
    2sComplement (n,h)) 
    = (n 
    -BinarySequence  
    |.h.|) & (
    2sComplement (n,i)) 
    = (n 
    -BinarySequence  
    |.i.|) by
    A1,
    Def2;
    
      hence thesis by
    A3,
    FINSEQ_2: 119;
    
    end;
    
    
    
    
    
    Lm6: for h,i be 
    Integer st h 
    <  
    0 & i 
    <  
    0 & (h 
    mod (2 
    to_power n)) 
    = (i 
    mod (2 
    to_power n)) holds ( 
    2sComplement (n,h)) 
    = ( 
    2sComplement (n,i)) 
    
    proof
    
      let h,i be
    Integer such that 
    
      
    
    A1: h 
    <  
    0 and 
    
      
    
    A2: i 
    <  
    0 and 
    
      
    
    A3: (h 
    mod (2 
    to_power n)) 
    = (i 
    mod (2 
    to_power n)); 
    
      
    |.i.|
    = ( 
    - i) by 
    A2,
    ABSVALUE:def 1;
    
      then (2
    to_power ( 
    MajP (n, 
    |.i.|)))
    >= ( 
    - i) by 
    Def1;
    
      then ((2
    to_power ( 
    MajP (n, 
    |.i.|)))
    + i) 
    >= (( 
    - i) 
    + i) by 
    XREAL_1: 6;
    
      then
    
      reconsider I = ((2
    to_power ( 
    MajP (n, 
    |.i.|)))
    + i) as 
    Element of 
    NAT by 
    INT_1: 3;
    
      
    |.h.|
    = ( 
    - h) by 
    A1,
    ABSVALUE:def 1;
    
      then (2
    to_power ( 
    MajP (n, 
    |.h.|)))
    >= ( 
    - h) by 
    Def1;
    
      then ((2
    to_power ( 
    MajP (n, 
    |.h.|)))
    + h) 
    >= (( 
    - h) 
    + h) by 
    XREAL_1: 6;
    
      then
    
      reconsider H = ((2
    to_power ( 
    MajP (n, 
    |.h.|)))
    + h) as 
    Element of 
    NAT by 
    INT_1: 3;
    
      
    
      
    
    A4: (H qua 
    Nat
    mod (2 
    to_power n)) 
    = (I qua 
    Nat
    mod (2 
    to_power n)) by 
    A3,
    Lm4;
    
      
    
      
    
    A5: for j be 
    Nat st j 
    in ( 
    Seg n) holds ((n 
    -BinarySequence  
    |.H.|)
    . j) 
    = ((n 
    -BinarySequence  
    |.I.|)
    . j) 
    
      proof
    
        
    
        
    
    A6: ( 
    len (n 
    -BinarySequence I)) 
    = n by 
    CARD_1:def 7;
    
        let j be
    Nat such that 
    
        
    
    A7: j 
    in ( 
    Seg n); 
    
        
    
        
    
    A8: 1 
    <= j by 
    A7,
    FINSEQ_1: 1;
    
        
    
        
    
    A9: j 
    <= n by 
    A7,
    FINSEQ_1: 1;
    
        reconsider j as
    Nat;
    
        (j
    - 1) 
    >= (1 
    - 1) by 
    A8,
    XREAL_1: 9;
    
        then (j
    -' 1) 
    = (j 
    - 1) by 
    XREAL_0:def 2;
    
        then
    
        
    
    A10: (j 
    -' 1) 
    < n by 
    A9,
    XREAL_1: 146,
    XXREAL_0: 2;
    
        (
    len (n 
    -BinarySequence H)) 
    = n & 
    |.H.|
    = H by 
    ABSVALUE:def 1,
    CARD_1:def 7;
    
        
    
        then ((n
    -BinarySequence  
    |.H.|)
    . j) 
    = ((n 
    -BinarySequence H) 
    /. j) by 
    A8,
    A9,
    FINSEQ_4: 15
    
        .= (
    IFEQ (((H 
    div (2 
    to_power (j 
    -' 1))) 
    mod 2), 
    0 , 
    FALSE , 
    TRUE )) by 
    A7,
    BINARI_3:def 1
    
        .= (
    IFEQ (((I 
    div (2 
    to_power (j 
    -' 1))) 
    mod 2), 
    0 , 
    FALSE , 
    TRUE )) by 
    A4,
    A10,
    Lm3
    
        .= ((n
    -BinarySequence I) 
    /. j) by 
    A7,
    BINARI_3:def 1
    
        .= ((n
    -BinarySequence I) 
    . j) by 
    A8,
    A9,
    A6,
    FINSEQ_4: 15;
    
        hence thesis by
    ABSVALUE:def 1;
    
      end;
    
      (
    2sComplement (n,h)) 
    = (n 
    -BinarySequence  
    |.((2
    to_power ( 
    MajP (n, 
    |.h.|)))
    + h).|) & ( 
    2sComplement (n,i)) 
    = (n 
    -BinarySequence  
    |.((2
    to_power ( 
    MajP (n, 
    |.i.|)))
    + i).|) by 
    A1,
    A2,
    Def2;
    
      hence thesis by
    A5,
    FINSEQ_2: 119;
    
    end;
    
    theorem :: 
    
    BINARI_4:28
    
    for h,i be
    Integer st (h 
    >=  
    0 & i 
    >=  
    0 or h 
    <  
    0 & i 
    <  
    0 ) & (h 
    mod (2 
    to_power n)) 
    = (i 
    mod (2 
    to_power n)) holds ( 
    2sComplement (n,h)) 
    = ( 
    2sComplement (n,i)) by 
    Lm5,
    Lm6;
    
    theorem :: 
    
    BINARI_4:29
    
    for h,i be
    Integer st (h 
    >=  
    0 & i 
    >=  
    0 or h 
    <  
    0 & i 
    <  
    0 ) & (h,i) 
    are_congruent_mod (2 
    to_power n) holds ( 
    2sComplement (n,h)) 
    = ( 
    2sComplement (n,i)) 
    
    proof
    
      let h,i be
    Integer such that 
    
      
    
    A1: h 
    >=  
    0 & i 
    >=  
    0 or h 
    <  
    0 & i 
    <  
    0 and 
    
      
    
    A2: (h,i) 
    are_congruent_mod (2 
    to_power n); 
    
      (h
    mod (2 
    to_power n)) 
    = (i 
    mod (2 
    to_power n)) by 
    A2,
    NAT_D: 64;
    
      hence thesis by
    A1,
    Lm5,
    Lm6;
    
    end;
    
    theorem :: 
    
    BINARI_4:30
    
    
    
    
    
    Th30: for l,m be 
    Nat st (l 
    mod (2 
    to_power n)) 
    = (m 
    mod (2 
    to_power n)) holds (n 
    -BinarySequence l) 
    = (n 
    -BinarySequence m) 
    
    proof
    
      let l,m be
    Nat such that 
    
      
    
    A1: (l 
    mod (2 
    to_power n)) 
    = (m 
    mod (2 
    to_power n)); 
    
      
    |.m.|
    = m by 
    ABSVALUE:def 1;
    
      then
    
      
    
    A2: ( 
    2sComplement (n,m)) 
    = (n 
    -BinarySequence m) by 
    Def2;
    
      
    |.l.|
    = l by 
    ABSVALUE:def 1;
    
      then (
    2sComplement (n,l)) 
    = (n 
    -BinarySequence l) by 
    Def2;
    
      hence thesis by
    A1,
    A2,
    Lm5;
    
    end;
    
    theorem :: 
    
    BINARI_4:31
    
    for l,m be
    Nat st (l,m) 
    are_congruent_mod (2 
    to_power n) holds (n 
    -BinarySequence l) 
    = (n 
    -BinarySequence m) 
    
    proof
    
      let l,m be
    Nat;
    
      assume (l,m)
    are_congruent_mod (2 
    to_power n); 
    
      then (l qua
    Integer
    mod (2 
    to_power n)) 
    = (m qua 
    Integer
    mod (2 
    to_power n)) by 
    NAT_D: 64;
    
      hence thesis by
    Th30;
    
    end;
    
    theorem :: 
    
    BINARI_4:32
    
    
    
    
    
    Th32: for j be 
    Nat st 1 
    <= j & j 
    <= n holds (( 
    2sComplement ((n 
    + 1),i)) 
    /. j) 
    = (( 
    2sComplement (n,i)) 
    /. j) 
    
    proof
    
      let j be
    Nat such that 
    
      
    
    A1: 1 
    <= j and 
    
      
    
    A2: j 
    <= n; 
    
      
    
      
    
    A3: j 
    in ( 
    Seg n) by 
    A1,
    A2,
    FINSEQ_1: 1;
    
      n
    <= (n 
    + 1) by 
    NAT_1: 11;
    
      then j
    <= (n 
    + 1) by 
    A2,
    XXREAL_0: 2;
    
      then
    
      
    
    A4: j 
    in ( 
    Seg (n 
    + 1)) by 
    A1,
    FINSEQ_1: 1;
    
      set N =
    |.((2
    to_power ( 
    MajP (n, 
    |.i.|)))
    + i).|; 
    
      set M =
    |.((2
    to_power ( 
    MajP ((n 
    + 1), 
    |.i.|)))
    + i).|; 
    
      
    
      
    
    A5: i 
    <  
    0 implies ((M 
    div (2 
    to_power (j 
    -' 1))) 
    mod 2) 
    = ((N 
    div (2 
    to_power (j 
    -' 1))) 
    mod 2) 
    
      proof
    
        (
    MajP ((n 
    + 1), 
    |.i.|))
    >= ( 
    MajP (n, 
    |.i.|)) by
    Th22,
    NAT_1: 11;
    
        then
    
        consider m be
    Nat such that 
    
        
    
    A6: ( 
    MajP ((n 
    + 1), 
    |.i.|))
    = (( 
    MajP (n, 
    |.i.|))
    + m) by 
    NAT_1: 10;
    
        reconsider m as
    Nat;
    
        set P = (
    MajP (n, 
    |.i.|));
    
        assume
    
        
    
    A7: i 
    <  
    0 ; 
    
        set Q = (2
    to_power P); 
    
        
    
        
    
    A8: ((Q 
    * (2 
    to_power m)) qua 
    Integer
    mod Q) 
    =  
    0 by 
    NAT_D: 13;
    
        (2
    to_power ( 
    MajP ((n 
    + 1), 
    |.i.|)))
    >=  
    |.i.| by
    Def1;
    
        then (2
    to_power ( 
    MajP ((n 
    + 1), 
    |.i.|)))
    >= ( 
    - i) by 
    A7,
    ABSVALUE:def 1;
    
        then ((2
    to_power ( 
    MajP ((n 
    + 1), 
    |.i.|)))
    + i) 
    >= (( 
    - i) 
    + i) by 
    XREAL_1: 6;
    
        
    
        then M
    = ((2 
    to_power (P 
    + m)) 
    + i) by 
    A6,
    ABSVALUE:def 1
    
        .= ((Q
    * (2 
    to_power m)) 
    + i) by 
    POWER: 27;
    
        
    
        then
    
        
    
    A9: (M 
    mod Q) 
    = ((((Q 
    * (2 
    to_power m)) qua 
    Integer
    mod Q) 
    + (i 
    mod Q)) 
    mod Q) by 
    NAT_D: 66
    
        .= ((i
    mod Q) 
    mod Q) by 
    A8;
    
        
    
        
    
    A10: (Q qua 
    Integer
    mod Q) 
    =  
    0 by 
    NAT_D: 25;
    
        (j
    + ( 
    - 1)) 
    >= (1 
    + ( 
    - 1)) by 
    A1,
    XREAL_1: 6;
    
        then (j
    -' 1) 
    = (j 
    - 1) by 
    XREAL_0:def 2;
    
        then
    
        
    
    A11: (j 
    -' 1) 
    < n by 
    A2,
    XREAL_1: 146,
    XXREAL_0: 2;
    
        P
    >= n by 
    Def1;
    
        then
    
        
    
    A12: (j 
    -' 1) 
    < P by 
    A11,
    XXREAL_0: 2;
    
        Q
    >=  
    |.i.| by
    Def1;
    
        then Q
    >= ( 
    - i) by 
    A7,
    ABSVALUE:def 1;
    
        then (Q
    + i) 
    >= (( 
    - i) 
    + i) by 
    XREAL_1: 6;
    
        then N
    = (Q 
    + i) by 
    ABSVALUE:def 1;
    
        
    
        then (N
    mod Q) 
    = (((Q qua 
    Integer
    mod Q) 
    + (i 
    mod Q)) 
    mod Q) by 
    NAT_D: 66
    
        .= ((i
    mod Q) 
    mod Q) by 
    A10;
    
        hence thesis by
    A9,
    A12,
    Lm3;
    
      end;
    
      per cases ;
    
        suppose i
    >=  
    0 ; 
    
        then
    
        reconsider i as
    Element of 
    NAT by 
    INT_1: 3;
    
        
    
        
    
    A13: (( 
    2sComplement (n,i)) 
    /. j) 
    = ((n 
    -BinarySequence  
    |.i.|)
    /. j) by 
    Def2
    
        .= ((n
    -BinarySequence i) 
    /. j) by 
    ABSVALUE:def 1
    
        .= (
    IFEQ (((i 
    div (2 
    to_power (j 
    -' 1))) 
    mod 2), 
    0 , 
    FALSE , 
    TRUE )) by 
    A3,
    BINARI_3:def 1;
    
        ((
    2sComplement ((n 
    + 1),i)) 
    /. j) 
    = (((n 
    + 1) 
    -BinarySequence  
    |.i.|)
    /. j) by 
    Def2
    
        .= (((n
    + 1) 
    -BinarySequence i) 
    /. j) by 
    ABSVALUE:def 1
    
        .= (
    IFEQ (((i 
    div (2 
    to_power (j 
    -' 1))) 
    mod 2), 
    0 , 
    FALSE , 
    TRUE )) by 
    A4,
    BINARI_3:def 1;
    
        hence thesis by
    A13;
    
      end;
    
        suppose
    
        
    
    A14: i 
    <  
    0 ; 
    
        
    
        then
    
        
    
    A15: (( 
    2sComplement (n,i)) 
    /. j) 
    = ((n 
    -BinarySequence N) 
    /. j) by 
    Def2
    
        .= (
    IFEQ (((N 
    div (2 
    to_power (j 
    -' 1))) 
    mod 2), 
    0 , 
    FALSE , 
    TRUE )) by 
    A3,
    BINARI_3:def 1;
    
        ((
    2sComplement ((n 
    + 1),i)) 
    /. j) 
    = (((n 
    + 1) 
    -BinarySequence M) 
    /. j) by 
    A14,
    Def2
    
        .= (
    IFEQ (((M 
    div (2 
    to_power (j 
    -' 1))) 
    mod 2), 
    0 , 
    FALSE , 
    TRUE )) by 
    A4,
    BINARI_3:def 1;
    
        hence thesis by
    A5,
    A14,
    A15;
    
      end;
    
    end;
    
    theorem :: 
    
    BINARI_4:33
    
    
    
    
    
    Th33: ex x be 
    Element of 
    BOOLEAN st ( 
    2sComplement ((m 
    + 1),i)) 
    = (( 
    2sComplement (m,i)) 
    ^  
    <*x*>)
    
    proof
    
      consider a be
    Element of (m 
    -tuples_on  
    BOOLEAN ), b be 
    Element of 
    BOOLEAN such that 
    
      
    
    A1: ( 
    2sComplement ((m 
    + 1),i)) 
    = (a 
    ^  
    <*b*>) by
    FINSEQ_2: 117;
    
      now
    
        per cases ;
    
          suppose m
    >  
    0 ; 
    
          then
    
          reconsider m as non
    zero  
    Nat;
    
          for j be
    Nat st j 
    in ( 
    Seg m) holds (( 
    2sComplement (m,i)) 
    . j) 
    = (a 
    . j) 
    
          proof
    
            
    
            
    
    A2: ( 
    len ( 
    2sComplement (m,i))) 
    = m by 
    CARD_1:def 7;
    
            let j be
    Nat such that 
    
            
    
    A3: j 
    in ( 
    Seg m); 
    
            reconsider j as
    Nat;
    
            
    
            
    
    A4: 1 
    <= j by 
    A3,
    FINSEQ_1: 1;
    
            (
    len a) 
    = m by 
    CARD_1:def 7;
    
            then
    
            
    
    A5: j 
    in ( 
    dom a) by 
    A3,
    FINSEQ_1:def 3;
    
            
    
            
    
    A6: j 
    <= m by 
    A3,
    FINSEQ_1: 1;
    
            m
    <= (m 
    + 1) by 
    NAT_1: 11;
    
            then (
    len ( 
    2sComplement ((m 
    + 1),i))) 
    = (m 
    + 1) & j 
    <= (m 
    + 1) by 
    A6,
    CARD_1:def 7,
    XXREAL_0: 2;
    
            
    
            then ((
    2sComplement ((m 
    + 1),i)) 
    . j) 
    = (( 
    2sComplement ((m 
    + 1),i)) 
    /. j) by 
    A4,
    FINSEQ_4: 15
    
            .= ((
    2sComplement (m,i)) 
    /. j) by 
    A4,
    A6,
    Th32
    
            .= ((
    2sComplement (m,i)) 
    . j) by 
    A2,
    A4,
    A6,
    FINSEQ_4: 15;
    
            hence thesis by
    A1,
    A5,
    FINSEQ_1:def 7;
    
          end;
    
          then a
    = ( 
    2sComplement (m,i)) by 
    FINSEQ_2: 119;
    
          hence thesis by
    A1;
    
        end;
    
          suppose
    
          
    
    A7: m 
    =  
    0 ; 
    
          then
    
          consider c be
    Element of 
    BOOLEAN such that 
    
          
    
    A8: ( 
    2sComplement ((m 
    + 1),i)) 
    =  
    <*c*> by
    FINSEQ_2: 97;
    
          
    
          
    
    A9: ( 
    2sComplement ((m 
    + 1),i)) 
    = ( 
    {}  
    ^  
    <*c*>) by
    A8,
    FINSEQ_1: 34;
    
          (
    2sComplement (m,i)) 
    =  
    {} by 
    A7;
    
          hence thesis by
    A9;
    
        end;
    
      end;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    BINARI_4:34
    
    ex x be
    Element of 
    BOOLEAN st ((m 
    + 1) 
    -BinarySequence l) 
    = ((m 
    -BinarySequence l) 
    ^  
    <*x*>)
    
    proof
    
      consider x be
    Element of 
    BOOLEAN such that 
    
      
    
    A1: ( 
    2sComplement ((m 
    + 1),l)) 
    = (( 
    2sComplement (m,l)) 
    ^  
    <*x*>) by
    Th33;
    
      
    
      
    
    A2: 
    |.l.|
    = l by 
    ABSVALUE:def 1;
    
      
    
      then ((m
    + 1) 
    -BinarySequence l) 
    = (( 
    2sComplement (m,l)) 
    ^  
    <*x*>) by
    A1,
    Def2
    
      .= ((m
    -BinarySequence l) 
    ^  
    <*x*>) by
    A2,
    Def2;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    BINARI_4:35
    
    
    
    
    
    Th35: for n be non 
    zero  
    Nat holds ( 
    - (2 
    to_power n)) 
    <= (h 
    + i) & h 
    <  
    0 & i 
    <  
    0 & ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= h & ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= i implies (( 
    carry (( 
    2sComplement ((n 
    + 1),h)),( 
    2sComplement ((n 
    + 1),i)))) 
    /. (n 
    + 1)) 
    =  
    TRUE  
    
    proof
    
      defpred
    
    P[
    Nat] means (
    - (2 
    to_power $1)) 
    <= (h 
    + i) & h 
    <  
    0 & i 
    <  
    0 & ( 
    - (2 
    to_power ($1 
    -' 1))) 
    <= h & ( 
    - (2 
    to_power ($1 
    -' 1))) 
    <= i implies (( 
    carry (( 
    2sComplement (($1 
    + 1),h)),( 
    2sComplement (($1 
    + 1),i)))) 
    /. ($1 
    + 1)) 
    =  
    TRUE ; 
    
      
    
      
    
    A1: for n be non 
    zero  
    Nat st 
    P[n] holds
    P[(n
    + 1)] 
    
      proof
    
        let n be non
    zero  
    Nat such that 
    P[n];
    
        assume that (
    - (2 
    to_power (n 
    + 1))) 
    <= (h 
    + i) and 
    
        
    
    A2: h 
    <  
    0 and 
    
        
    
    A3: i 
    <  
    0 and 
    
        
    
    A4: ( 
    - (2 
    to_power ((n 
    + 1) 
    -' 1))) 
    <= h and 
    
        
    
    A5: ( 
    - (2 
    to_power ((n 
    + 1) 
    -' 1))) 
    <= i; 
    
        set H1 = (
    2sComplement (((n 
    + 1) 
    + 1),h)), I1 = ( 
    2sComplement (((n 
    + 1) 
    + 1),i)), H = ( 
    2sComplement ((n 
    + 1),h)), I = ( 
    2sComplement ((n 
    + 1),i)), T = 
    TRUE , N = (n 
    + 1); 
    
        
    
        
    
    A6: (N 
    -' 1) 
    = (N 
    - 1) by 
    XREAL_0:def 2;
    
        then
    
        
    
    A7: (2 
    to_power (N 
    -' 1)) 
    < (2 
    to_power N) by 
    POWER: 39,
    XREAL_1: 146;
    
        ((2
    to_power (N 
    -' 1)) 
    + (2 
    to_power (N 
    -' 1))) 
    = (2 
    * (2 
    to_power (N 
    -' 1))) 
    
        .= ((2
    to_power 1) 
    * (2 
    to_power (N 
    -' 1))) by 
    POWER: 25
    
        .= (2
    to_power ( 
    0  
    + N)) by 
    A6,
    POWER: 27;
    
        then
    
        
    
    A8: (( 
    - (2 
    to_power (N 
    -' 1))) 
    + (2 
    to_power N)) 
    = (2 
    to_power (N 
    -' 1)); 
    
        then
    
        
    
    A9: (2 
    to_power (N 
    -' 1)) 
    <= ((2 
    to_power N) 
    + h) by 
    A4,
    XREAL_1: 6;
    
        
    
        
    
    A10: (2 
    to_power (N 
    -' 1)) 
    <= ((2 
    to_power N) 
    + i) by 
    A5,
    A8,
    XREAL_1: 6;
    
        
    
        
    
    A11: ((2 
    to_power N) 
    + i) 
    < ( 
    0  
    + (2 
    to_power N)) by 
    A3,
    XREAL_1: 8;
    
        (N
    - 1) 
    = n; 
    
        then
    
        
    
    A12: (N 
    -' 1) 
    = n by 
    XREAL_0:def 2;
    
        
    0  
    <= ((2 
    to_power N) 
    + h) & 
    0  
    <= ((2 
    to_power N) 
    + i) by 
    A4,
    A5,
    A8,
    XREAL_1: 6;
    
        then
    
        reconsider NH = ((2
    to_power N) 
    + h), NI = ((2 
    to_power N) 
    + i) as 
    Element of 
    NAT by 
    INT_1: 3;
    
        
    
        
    
    A13: ( 
    len (N 
    -BinarySequence NI)) 
    = N by 
    CARD_1:def 7;
    
        
    
        
    
    A14: 1 
    <= N by 
    NAT_1: 11;
    
        then
    
        
    
    A15: (H1 
    /. N) 
    = (H 
    /. N) & (I1 
    /. N) 
    = (I 
    /. N) by 
    Th32;
    
        
    
        
    
    A16: ((2 
    to_power N) 
    + h) 
    < ( 
    0  
    + (2 
    to_power N)) by 
    A2,
    XREAL_1: 8;
    
        
    
        
    
    A17: N 
    < (N 
    + 1) by 
    NAT_1: 13;
    
        
    |.i.|
    = ( 
    - i) by 
    A3,
    ABSVALUE:def 1;
    
        then (
    - ( 
    - (2 
    to_power (N 
    -' 1)))) 
    >=  
    |.i.| by
    A5,
    XREAL_1: 24;
    
        then (
    MajP (N, 
    |.i.|))
    = N by 
    A7,
    Th24,
    XXREAL_0: 2;
    
        
    
        then
    
        
    
    A18: (I 
    /. N) 
    = ((N 
    -BinarySequence  
    |.NI.|)
    /. N) by 
    A3,
    Def2
    
        .= ((N
    -BinarySequence NI) 
    /. N) by 
    ABSVALUE:def 1
    
        .= ((N
    -BinarySequence NI) 
    . N) by 
    A14,
    A13,
    FINSEQ_4: 15
    
        .= T by
    A12,
    A10,
    A11,
    BINARI_3: 29;
    
        
    
        
    
    A19: ( 
    len (N 
    -BinarySequence NH)) 
    = N by 
    CARD_1:def 7;
    
        
    |.h.|
    = ( 
    - h) by 
    A2,
    ABSVALUE:def 1;
    
        then (
    - ( 
    - (2 
    to_power (N 
    -' 1)))) 
    >=  
    |.h.| by
    A4,
    XREAL_1: 24;
    
        then (
    MajP (N, 
    |.h.|))
    = N by 
    A7,
    Th24,
    XXREAL_0: 2;
    
        
    
        then (H
    /. N) 
    = ((N 
    -BinarySequence  
    |.NH.|)
    /. N) by 
    A2,
    Def2
    
        .= ((N
    -BinarySequence NH) 
    /. N) by 
    ABSVALUE:def 1
    
        .= ((N
    -BinarySequence NH) 
    . N) by 
    A14,
    A19,
    FINSEQ_4: 15
    
        .= T by
    A12,
    A9,
    A16,
    BINARI_3: 29;
    
        
    
        then ((
    carry (H1,I1)) 
    /. (N 
    + 1)) 
    = (((T 
    '&' T) 
    'or' (T 
    '&' (( 
    carry (H1,I1)) 
    /. N))) 
    'or' (T 
    '&' (( 
    carry (H1,I1)) 
    /. N))) by 
    A14,
    A18,
    A15,
    A17,
    BINARITH:def 2
    
        .= (T
    'or' (( 
    carry (H1,I1)) 
    /. N)); 
    
        hence thesis;
    
      end;
    
      
    
      
    
    A20: 
    P[1]
    
      proof
    
        (1
    -' 1) 
    = (1 
    - 1) by 
    XREAL_0:def 2;
    
        
    
        then (3
    div (2 
    to_power (1 
    -' 1))) 
    = ((1 
    + 2) 
    div 1) by 
    POWER: 24
    
        .= 3 by
    NAT_2: 4;
    
        
    
        then
    
        
    
    A21: ((3 
    div (2 
    to_power (1 
    -' 1))) 
    mod 2) 
    = ((2 
    + 1) 
    mod 2) 
    
        .= (((2
    mod 2) 
    + 1) 
    mod 2) by 
    NAT_D: 22
    
        .= ((
    0  
    + 1) 
    mod 2) by 
    NAT_D: 25
    
        .= 1 by
    PEPIN: 5;
    
        
    
        
    
    A22: (( 
    - 2) 
    + 1) 
    = ( 
    - 1); 
    
        set H = (
    2sComplement (2,h)), I = ( 
    2sComplement (2,i)), T = 
    TRUE ; 
    
        assume that
    
        
    
    A23: ( 
    - (2 
    to_power 1)) 
    <= (h 
    + i) and 
    
        
    
    A24: h 
    <  
    0 and 
    
        
    
    A25: i 
    <  
    0 and ( 
    - (2 
    to_power (1 
    -' 1))) 
    <= h and ( 
    - (2 
    to_power (1 
    -' 1))) 
    <= i; 
    
        
    
        
    
    A26: i 
    <= ( 
    - 1) by 
    A25,
    INT_1: 8;
    
        (
    - (2 
    to_power 1)) 
    < h by 
    A23,
    A24,
    A25,
    Th9;
    
        then (
    - 2) 
    < h by 
    POWER: 25;
    
        then
    
        
    
    A27: ( 
    - 1) 
    <= h by 
    A22,
    INT_1: 7;
    
        (
    - (2 
    to_power 1)) 
    < i by 
    A23,
    A24,
    A25,
    Th9;
    
        then (
    - 2) 
    < i by 
    POWER: 25;
    
        then (
    - 1) 
    <= i by 
    A22,
    INT_1: 7;
    
        then
    
        
    
    A28: i 
    = ( 
    - 1) by 
    A26,
    XXREAL_0: 1;
    
        
    
        
    
    A29: 1 
    in ( 
    Seg 2) by 
    FINSEQ_1: 1;
    
        
    
        
    
    A30: (2 
    to_power 2) 
    = (2 
    |^ (1 
    + 1)) by 
    POWER: 41
    
        .= ((2
    |^ 1) 
    + (2 
    |^ 1)) by 
    PEPIN: 29
    
        .= ((2
    to_power 1) 
    + (2 
    |^ 1)) by 
    POWER: 41
    
        .= ((2
    to_power 1) 
    + (2 
    to_power 1)) by 
    POWER: 41
    
        .= (2
    + (2 
    to_power 1)) by 
    POWER: 25
    
        .= (2
    + 2) by 
    POWER: 25;
    
        
    
        
    
    A31: (2 
    to_power 2) 
    > (2 
    to_power  
    0 ) by 
    POWER: 39;
    
        
    
        
    
    A32: h 
    <= ( 
    - 1) by 
    A24,
    INT_1: 8;
    
        then
    
        
    
    A33: h 
    = ( 
    - 1) by 
    A27,
    XXREAL_0: 1;
    
        then
    |.h.|
    = ( 
    - ( 
    - 1)) by 
    ABSVALUE:def 1;
    
        then (2
    to_power  
    0 ) 
    =  
    |.h.| by
    POWER: 24;
    
        then (
    MajP (2, 
    |.h.|))
    = 2 by 
    A31,
    Th24;
    
        
    
        then
    |.((2
    to_power ( 
    MajP (2, 
    |.h.|)))
    + h).| 
    =  
    |.(4
    + ( 
    - 1)).| by 
    A27,
    A32,
    A30,
    XXREAL_0: 1
    
        .= 3 by
    ABSVALUE:def 1;
    
        
    
        then ((
    2sComplement (2,h)) 
    /. 1) 
    = ((2 
    -BinarySequence 3) 
    /. 1) by 
    A24,
    Def2
    
        .= (
    IFEQ (1, 
    0 , 
    FALSE , 
    TRUE )) by 
    A21,
    A29,
    BINARI_3:def 1
    
        .=
    TRUE by 
    FUNCOP_1:def 8;
    
        
    
        then ((
    carry (H,I)) 
    /. (1 
    + 1)) 
    = (((T 
    '&' T) 
    'or' (T 
    '&' (( 
    carry (H,I)) 
    /. 1))) 
    'or' (T 
    '&' (( 
    carry (H,I)) 
    /. 1))) by 
    A33,
    A28,
    BINARITH:def 2
    
        .= (T
    'or' (( 
    carry (H,I)) 
    /. 1)); 
    
        hence thesis;
    
      end;
    
      thus for n be non
    zero  
    Nat holds 
    P[n] from
    NAT_1:sch 10(
    A20,
    A1);
    
    end;
    
    theorem :: 
    
    BINARI_4:36
    
    for n be non
    zero  
    Nat st (h 
    + i) 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1) & h 
    >=  
    0 & i 
    >=  
    0 holds ( 
    Intval (( 
    2sComplement (n,h)) 
    + ( 
    2sComplement (n,i)))) 
    = (h 
    + i) 
    
    proof
    
      let n be non
    zero  
    Nat such that 
    
      
    
    A1: (h 
    + i) 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1) and 
    
      
    
    A2: h 
    >=  
    0 & i 
    >=  
    0 ; 
    
      reconsider h, i as
    Element of 
    NAT by 
    A2,
    INT_1: 3;
    
      
    
      
    
    A3: ( 
    2sComplement (n,i)) 
    = (n 
    -BinarySequence  
    |.i.|) by
    Def2
    
      .= (n
    -BinarySequence i) by 
    ABSVALUE:def 1;
    
      (
    2sComplement (n,h)) 
    = (n 
    -BinarySequence  
    |.h.|) by
    Def2
    
      .= (n
    -BinarySequence h) by 
    ABSVALUE:def 1;
    
      hence thesis by
    A1,
    A3,
    Th14;
    
    end;
    
    theorem :: 
    
    BINARI_4:37
    
    for n be non
    zero  
    Nat st ( 
    - (2 
    to_power ((n 
    + 1) 
    -' 1))) 
    <= (h 
    + i) & h 
    <  
    0 & i 
    <  
    0 & ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= h & ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= i holds ( 
    Intval (( 
    2sComplement ((n 
    + 1),h)) 
    + ( 
    2sComplement ((n 
    + 1),i)))) 
    = (h 
    + i) 
    
    proof
    
      let n be non
    zero  
    Nat such that 
    
      
    
    A1: ( 
    - (2 
    to_power ((n 
    + 1) 
    -' 1))) 
    <= (h 
    + i) and 
    
      
    
    A2: h 
    <  
    0 and 
    
      
    
    A3: i 
    <  
    0 and 
    
      
    
    A4: ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= h & ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= i; 
    
      
    
      
    
    A5: ((2 
    to_power (n 
    + 1)) 
    + ( 
    - (2 
    to_power n))) 
    = (( 
    - (2 
    to_power n)) 
    + ((2 
    to_power 1) 
    * (2 
    to_power n))) by 
    POWER: 27
    
      .= ((
    - (2 
    to_power n)) 
    + (2 
    * (2 
    to_power n))) by 
    POWER: 25
    
      .= (2
    to_power n); 
    
      ((n
    + 1) 
    - 1) 
    = n; 
    
      then
    
      
    
    A6: ( 
    - (2 
    to_power n)) 
    <= (h 
    + i) by 
    A1,
    XREAL_0:def 2;
    
      then
    
      
    
    A7: ( 
    - (2 
    to_power n)) 
    < h by 
    A2,
    A3,
    Th9;
    
      then
    
      
    
    A8: (2 
    to_power n) 
    <= ((2 
    to_power (n 
    + 1)) 
    + h) by 
    A5,
    XREAL_1: 6;
    
      
    
      
    
    A9: ( 
    - (2 
    to_power n)) 
    < i by 
    A2,
    A3,
    A6,
    Th9;
    
      then
    
      
    
    A10: 
    0  
    <= ((2 
    to_power (n 
    + 1)) 
    + i) by 
    A5,
    XREAL_1: 6;
    
      
    0  
    <= ((2 
    to_power (n 
    + 1)) 
    + h) by 
    A7,
    A5,
    XREAL_1: 6;
    
      then
    
      reconsider NH = ((2
    to_power (n 
    + 1)) 
    + h), NI = ((2 
    to_power (n 
    + 1)) 
    + i) as 
    Element of 
    NAT by 
    A10,
    INT_1: 3;
    
      
    
      
    
    A11: 1 
    <= (n 
    + 1) by 
    NAT_1: 11;
    
      set H = (
    2sComplement (n,h)), I = ( 
    2sComplement (n,i)), H1 = ( 
    2sComplement ((n 
    + 1),h)), I1 = ( 
    2sComplement ((n 
    + 1),i)), F = 
    FALSE , T = 
    TRUE ; 
    
      n
    < (n 
    + 1) by 
    XREAL_1: 29;
    
      then
    
      
    
    A12: (2 
    to_power n) 
    < (2 
    to_power (n 
    + 1)) by 
    POWER: 39;
    
      
    
      
    
    A13: (ex a be 
    Element of 
    BOOLEAN st H1 
    = (H 
    ^  
    <*a*>)) & ex a be
    Element of 
    BOOLEAN st I1 
    = (I 
    ^  
    <*a*>) by
    Th33;
    
      
    
      
    
    A14: ((2 
    to_power (n 
    + 1)) 
    + h) 
    < ((2 
    to_power (n 
    + 1)) 
    +  
    0 ) by 
    A2,
    XREAL_1: 8;
    
      (
    - h) 
    < ( 
    - ( 
    - (2 
    to_power n))) by 
    A7,
    XREAL_1: 24;
    
      then
    |.h.|
    < (2 
    to_power n) by 
    A2,
    ABSVALUE:def 1;
    
      then
    
      
    
    A15: ( 
    MajP ((n 
    + 1), 
    |.h.|))
    = (n 
    + 1) by 
    A12,
    Th24,
    XXREAL_0: 2;
    
      
    
      then
    
      
    
    A16: H1 
    = ((n 
    + 1) 
    -BinarySequence  
    |.((2
    to_power (n 
    + 1)) 
    + h).|) by 
    A2,
    Def2
    
      .= ((n
    + 1) 
    -BinarySequence NH) by 
    ABSVALUE:def 1;
    
      (
    len H1) 
    = (n 
    + 1) by 
    CARD_1:def 7;
    
      
    
      then
    
      
    
    A17: (H1 
    /. (n 
    + 1)) 
    = (H1 
    . (n 
    + 1)) by 
    A11,
    FINSEQ_4: 15
    
      .= (((n
    + 1) 
    -BinarySequence  
    |.((2
    to_power (n 
    + 1)) 
    + h).|) 
    . (n 
    + 1)) by 
    A2,
    A15,
    Def2
    
      .= (((n
    + 1) 
    -BinarySequence NH) 
    . (n 
    + 1)) by 
    ABSVALUE:def 1
    
      .= T by
    A14,
    A8,
    BINARI_3: 29;
    
      
    
      
    
    A18: (2 
    to_power n) 
    <= ((2 
    to_power (n 
    + 1)) 
    + i) by 
    A9,
    A5,
    XREAL_1: 6;
    
      
    
      
    
    A19: ((2 
    to_power (n 
    + 1)) 
    + i) 
    < ((2 
    to_power (n 
    + 1)) 
    +  
    0 ) by 
    A3,
    XREAL_1: 8;
    
      (
    - i) 
    < ( 
    - ( 
    - (2 
    to_power n))) by 
    A9,
    XREAL_1: 24;
    
      then
    |.i.|
    < (2 
    to_power n) by 
    A3,
    ABSVALUE:def 1;
    
      then
    
      
    
    A20: ( 
    MajP ((n 
    + 1), 
    |.i.|))
    = (n 
    + 1) by 
    A12,
    Th24,
    XXREAL_0: 2;
    
      
    
      then
    
      
    
    A21: I1 
    = ((n 
    + 1) 
    -BinarySequence  
    |.((2
    to_power (n 
    + 1)) 
    + i).|) by 
    A3,
    Def2
    
      .= ((n
    + 1) 
    -BinarySequence NI) by 
    ABSVALUE:def 1;
    
      (
    len I1) 
    = (n 
    + 1) by 
    CARD_1:def 7;
    
      
    
      then
    
      
    
    A22: (I1 
    /. (n 
    + 1)) 
    = (I1 
    . (n 
    + 1)) by 
    A11,
    FINSEQ_4: 15
    
      .= (((n
    + 1) 
    -BinarySequence  
    |.((2
    to_power (n 
    + 1)) 
    + i).|) 
    . (n 
    + 1)) by 
    A3,
    A20,
    Def2
    
      .= (((n
    + 1) 
    -BinarySequence NI) 
    . (n 
    + 1)) by 
    ABSVALUE:def 1
    
      .= T by
    A19,
    A18,
    BINARI_3: 29;
    
      
    
      then
    
      
    
    A23: ( 
    Intval I1) 
    = (( 
    Absval I1) 
    - (2 
    to_power (n 
    + 1))) by 
    BINARI_2:def 3
    
      .= (NI
    - (2 
    to_power (n 
    + 1))) by 
    A19,
    A21,
    BINARI_3: 35
    
      .= i;
    
      
    
      
    
    A24: (( 
    carry (H1,I1)) 
    /. (n 
    + 1)) 
    = T by 
    A2,
    A3,
    A4,
    A6,
    Th35;
    
      
    
      then
    
      
    
    A25: ( 
    Int_add_ovfl (H1,I1)) 
    = ((F 
    '&' ( 
    'not' T)) 
    '&' T) by 
    A17,
    A22,
    BINARI_2:def 4
    
      .= F;
    
      
    
      
    
    A26: ( 
    Int_add_udfl (H1,I1)) 
    = ((T 
    '&' T) 
    '&' ( 
    'not' T)) by 
    A17,
    A22,
    A24,
    BINARI_2:def 5
    
      .= F;
    
      (
    Intval H1) 
    = (( 
    Absval H1) 
    - (2 
    to_power (n 
    + 1))) by 
    A17,
    BINARI_2:def 3
    
      .= (NH
    - (2 
    to_power (n 
    + 1))) by 
    A14,
    A16,
    BINARI_3: 35
    
      .= h;
    
      
    
      then (
    Intval (H1 
    + I1)) 
    = (((h 
    + i) 
    - ( 
    IFEQ (F,F, 
    0 ,(2 
    to_power (n 
    + 1))))) 
    + ( 
    IFEQ (F,F, 
    0 ,(2 
    to_power (n 
    + 1))))) by 
    A13,
    A23,
    A25,
    A26,
    BINARI_2: 12
    
      .= (((h
    + i) 
    -  
    0 ) 
    +  
    0 ); 
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    BINARI_4:38
    
    for n be non
    zero  
    Nat holds ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= h & h 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1) & ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= i & i 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1) & ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= (h 
    + i) & (h 
    + i) 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1) & (h 
    >=  
    0 & i 
    <  
    0 or h 
    <  
    0 & i 
    >=  
    0 ) implies ( 
    Intval (( 
    2sComplement (n,h)) 
    + ( 
    2sComplement (n,i)))) 
    = (h 
    + i) 
    
    proof
    
      defpred
    
    P[ non
    zero  
    Nat] means (
    - (2 
    to_power ($1 
    -' 1))) 
    <= h & h 
    <= ((2 
    to_power ($1 
    -' 1)) 
    - 1) & ( 
    - (2 
    to_power ($1 
    -' 1))) 
    <= i & i 
    <= ((2 
    to_power ($1 
    -' 1)) 
    - 1) & ( 
    - (2 
    to_power ($1 
    -' 1))) 
    <= (h 
    + i) & (h 
    + i) 
    <= ((2 
    to_power ($1 
    -' 1)) 
    - 1) & ((h 
    >=  
    0 & i 
    <  
    0 ) or (h 
    <  
    0 & i 
    >=  
    0 )) implies ( 
    Intval (( 
    2sComplement ($1,h)) 
    + ( 
    2sComplement ($1,i)))) 
    = (h 
    + i); 
    
      
    
      
    
    A1: for n be non 
    zero  
    Nat st 
    P[n] holds
    P[(n
    + 1)] 
    
      proof
    
        let n be non
    zero  
    Nat such that ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= h & h 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1) & ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= i & i 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1) & ( 
    - (2 
    to_power (n 
    -' 1))) 
    <= (h 
    + i) & (h 
    + i) 
    <= ((2 
    to_power (n 
    -' 1)) 
    - 1) & (h 
    >=  
    0 & i 
    <  
    0 or h 
    <  
    0 & i 
    >=  
    0 ) implies ( 
    Intval (( 
    2sComplement (n,h)) 
    + ( 
    2sComplement (n,i)))) 
    = (h 
    + i); 
    
        assume that
    
        
    
    A2: ( 
    - (2 
    to_power ((n 
    + 1) 
    -' 1))) 
    <= h and 
    
        
    
    A3: h 
    <= ((2 
    to_power ((n 
    + 1) 
    -' 1)) 
    - 1) and 
    
        
    
    A4: ( 
    - (2 
    to_power ((n 
    + 1) 
    -' 1))) 
    <= i and 
    
        
    
    A5: i 
    <= ((2 
    to_power ((n 
    + 1) 
    -' 1)) 
    - 1) and ( 
    - (2 
    to_power ((n 
    + 1) 
    -' 1))) 
    <= (h 
    + i) and (h 
    + i) 
    <= ((2 
    to_power ((n 
    + 1) 
    -' 1)) 
    - 1) and 
    
        
    
    A6: h 
    >=  
    0 & i 
    <  
    0 or h 
    <  
    0 & i 
    >=  
    0 ; 
    
        set H = (
    2sComplement (n,h)), I = ( 
    2sComplement (n,i)), H1 = ( 
    2sComplement ((n 
    + 1),h)), I1 = ( 
    2sComplement ((n 
    + 1),i)), n2 = (2 
    to_power n), F = 
    FALSE , T = 
    TRUE ; 
    
        
    
        
    
    A7: ((n 
    + 1) 
    - 1) 
    = n; 
    
        then
    
        
    
    A8: ( 
    - n2) 
    <= h by 
    A2,
    XREAL_0:def 2;
    
        
    
        
    
    A9: i 
    <= (n2 
    - 1) by 
    A5,
    A7,
    XREAL_0:def 2;
    
        
    
        
    
    A10: (ex a be 
    Element of 
    BOOLEAN st H1 
    = (H 
    ^  
    <*a*>)) & ex b be
    Element of 
    BOOLEAN st I1 
    = (I 
    ^  
    <*b*>) by
    Th33;
    
        
    
        
    
    A11: ( 
    - n2) 
    <= i by 
    A4,
    A7,
    XREAL_0:def 2;
    
        
    
        
    
    A12: h 
    <= (n2 
    - 1) by 
    A3,
    A7,
    XREAL_0:def 2;
    
        now
    
          per cases by
    A6;
    
            suppose
    
            
    
    A13: h 
    >=  
    0 & i 
    <  
    0 ; 
    
            ((2
    to_power (n 
    + 1)) 
    + ( 
    - (2 
    to_power n))) 
    = (( 
    - (2 
    to_power n)) 
    + ((2 
    to_power 1) 
    * (2 
    to_power n))) by 
    POWER: 27
    
            .= ((
    - (2 
    to_power n)) 
    + (2 
    * (2 
    to_power n))) by 
    POWER: 25
    
            .= (2
    to_power n); 
    
            then
    
            
    
    A14: (2 
    to_power n) 
    <= ((2 
    to_power (n 
    + 1)) 
    + i) by 
    A11,
    XREAL_1: 6;
    
            then
    
            reconsider NI = ((2
    to_power (n 
    + 1)) 
    + i) as 
    Element of 
    NAT by 
    INT_1: 3;
    
            n
    < (n 
    + 1) by 
    XREAL_1: 29;
    
            then
    
            
    
    A15: (2 
    to_power n) 
    < (2 
    to_power (n 
    + 1)) by 
    POWER: 39;
    
            
    |.i.|
    = ( 
    - i) by 
    A13,
    ABSVALUE:def 1;
    
            then
    |.i.|
    <= ( 
    - ( 
    - (2 
    to_power n))) by 
    A11,
    XREAL_1: 24;
    
            then
    
            
    
    A16: ( 
    MajP ((n 
    + 1), 
    |.i.|))
    = (n 
    + 1) by 
    A15,
    Th24,
    XXREAL_0: 2;
    
            
    
            then
    
            
    
    A17: I1 
    = ((n 
    + 1) 
    -BinarySequence  
    |.((2
    to_power (n 
    + 1)) 
    + i).|) by 
    A13,
    Def2
    
            .= ((n
    + 1) 
    -BinarySequence NI) by 
    ABSVALUE:def 1;
    
            
    
            
    
    A18: ((2 
    to_power (n 
    + 1)) 
    + i) 
    < ((2 
    to_power (n 
    + 1)) 
    +  
    0 ) by 
    A13,
    XREAL_1: 8;
    
            reconsider h as
    Element of 
    NAT by 
    A13,
    INT_1: 3;
    
            
    
            
    
    A19: h 
    < (2 
    to_power n) by 
    A12,
    XREAL_1: 146,
    XXREAL_0: 2;
    
            
    
            
    
    A20: H1 
    = ((n 
    + 1) 
    -BinarySequence  
    |.h.|) by
    Def2
    
            .= ((n
    + 1) 
    -BinarySequence h) by 
    ABSVALUE:def 1;
    
            then
    
            
    
    A21: (H1 
    . (n 
    + 1)) 
    = F by 
    A19,
    BINARI_3: 26;
    
            (n
    +  
    0 ) 
    < (n 
    + 1) by 
    XREAL_1: 8;
    
            then (2
    to_power n) 
    < (2 
    to_power (n 
    + 1)) by 
    POWER: 39;
    
            then
    
            
    
    A22: h 
    < (2 
    to_power (n 
    + 1)) by 
    A19,
    XXREAL_0: 2;
    
            
    
            
    
    A23: 1 
    <= (n 
    + 1) by 
    NAT_1: 11;
    
            (
    len I1) 
    = (n 
    + 1) by 
    CARD_1:def 7;
    
            then
    
            
    
    A24: (I1 
    /. (n 
    + 1)) 
    = (I1 
    . (n 
    + 1)) by 
    A23,
    FINSEQ_4: 15;
    
            
    
            
    
    A25: (I1 
    . (n 
    + 1)) 
    = (((n 
    + 1) 
    -BinarySequence  
    |.((2
    to_power (n 
    + 1)) 
    + i).|) 
    . (n 
    + 1)) by 
    A13,
    A16,
    Def2
    
            .= (((n
    + 1) 
    -BinarySequence NI) 
    . (n 
    + 1)) by 
    ABSVALUE:def 1
    
            .= T by
    A18,
    A14,
    BINARI_3: 29;
    
            
    
            then
    
            
    
    A26: ( 
    Intval I1) 
    = (( 
    Absval I1) 
    - (2 
    to_power (n 
    + 1))) by 
    A24,
    BINARI_2:def 3
    
            .= (NI
    - (2 
    to_power (n 
    + 1))) by 
    A18,
    A17,
    BINARI_3: 35
    
            .= i;
    
            (
    len H1) 
    = (n 
    + 1) by 
    CARD_1:def 7;
    
            then
    
            
    
    A27: (H1 
    /. (n 
    + 1)) 
    = (H1 
    . (n 
    + 1)) by 
    A23,
    FINSEQ_4: 15;
    
            
    
            then
    
            
    
    A28: ( 
    Int_add_ovfl (H1,I1)) 
    = ((( 
    'not' F) 
    '&' ( 
    'not' T)) 
    '&' (( 
    carry (H1,I1)) 
    /. (n 
    + 1))) by 
    A21,
    A25,
    A24,
    BINARI_2:def 4
    
            .= F;
    
            
    
            
    
    A29: ( 
    Int_add_udfl (H1,I1)) 
    = ((F 
    '&' T) 
    '&' ( 
    'not' (( 
    carry (H1,I1)) 
    /. (n 
    + 1)))) by 
    A21,
    A25,
    A27,
    A24,
    BINARI_2:def 5
    
            .= F;
    
            (
    Intval H1) 
    = ( 
    Absval H1) by 
    A21,
    A27,
    BINARI_2:def 3
    
            .= h by
    A20,
    A22,
    BINARI_3: 35;
    
            
    
            then (
    Intval (H1 
    + I1)) 
    = (((h 
    + i) 
    - ( 
    IFEQ (F,F, 
    0 ,(2 
    to_power (n 
    + 1))))) 
    + ( 
    IFEQ (F,F, 
    0 ,(2 
    to_power (n 
    + 1))))) by 
    A10,
    A26,
    A28,
    A29,
    BINARI_2: 12
    
            .= (((h
    + i) 
    -  
    0 ) 
    +  
    0 ); 
    
            hence thesis;
    
          end;
    
            suppose
    
            
    
    A30: h 
    <  
    0 & i 
    >=  
    0 ; 
    
            ((2
    to_power (n 
    + 1)) 
    + ( 
    - (2 
    to_power n))) 
    = (( 
    - (2 
    to_power n)) 
    + ((2 
    to_power 1) 
    * (2 
    to_power n))) by 
    POWER: 27
    
            .= ((
    - (2 
    to_power n)) 
    + (2 
    * (2 
    to_power n))) by 
    POWER: 25
    
            .= (2
    to_power n); 
    
            then
    
            
    
    A31: (2 
    to_power n) 
    <= ((2 
    to_power (n 
    + 1)) 
    + h) by 
    A8,
    XREAL_1: 6;
    
            then
    
            reconsider NH = ((2
    to_power (n 
    + 1)) 
    + h) as 
    Element of 
    NAT by 
    INT_1: 3;
    
            n
    < (n 
    + 1) by 
    XREAL_1: 29;
    
            then
    
            
    
    A32: (2 
    to_power n) 
    < (2 
    to_power (n 
    + 1)) by 
    POWER: 39;
    
            
    |.h.|
    = ( 
    - h) by 
    A30,
    ABSVALUE:def 1;
    
            then
    |.h.|
    <= ( 
    - ( 
    - (2 
    to_power n))) by 
    A8,
    XREAL_1: 24;
    
            then
    
            
    
    A33: ( 
    MajP ((n 
    + 1), 
    |.h.|))
    = (n 
    + 1) by 
    A32,
    Th24,
    XXREAL_0: 2;
    
            
    
            then
    
            
    
    A34: H1 
    = ((n 
    + 1) 
    -BinarySequence  
    |.((2
    to_power (n 
    + 1)) 
    + h).|) by 
    A30,
    Def2
    
            .= ((n
    + 1) 
    -BinarySequence NH) by 
    ABSVALUE:def 1;
    
            
    
            
    
    A35: ((2 
    to_power (n 
    + 1)) 
    + h) 
    < ((2 
    to_power (n 
    + 1)) 
    +  
    0 ) by 
    A30,
    XREAL_1: 8;
    
            reconsider i as
    Element of 
    NAT by 
    A30,
    INT_1: 3;
    
            
    
            
    
    A36: i 
    < (2 
    to_power n) by 
    A9,
    XREAL_1: 146,
    XXREAL_0: 2;
    
            
    
            
    
    A37: I1 
    = ((n 
    + 1) 
    -BinarySequence  
    |.i.|) by
    Def2
    
            .= ((n
    + 1) 
    -BinarySequence i) by 
    ABSVALUE:def 1;
    
            then
    
            
    
    A38: (I1 
    . (n 
    + 1)) 
    = F by 
    A36,
    BINARI_3: 26;
    
            (n
    +  
    0 ) 
    < (n 
    + 1) by 
    XREAL_1: 8;
    
            then (2
    to_power n) 
    < (2 
    to_power (n 
    + 1)) by 
    POWER: 39;
    
            then
    
            
    
    A39: i 
    < (2 
    to_power (n 
    + 1)) by 
    A36,
    XXREAL_0: 2;
    
            
    
            
    
    A40: 1 
    <= (n 
    + 1) by 
    NAT_1: 11;
    
            (
    len H1) 
    = (n 
    + 1) by 
    CARD_1:def 7;
    
            then
    
            
    
    A41: (H1 
    /. (n 
    + 1)) 
    = (H1 
    . (n 
    + 1)) by 
    A40,
    FINSEQ_4: 15;
    
            
    
            
    
    A42: (H1 
    . (n 
    + 1)) 
    = (((n 
    + 1) 
    -BinarySequence  
    |.((2
    to_power (n 
    + 1)) 
    + h).|) 
    . (n 
    + 1)) by 
    A30,
    A33,
    Def2
    
            .= (((n
    + 1) 
    -BinarySequence NH) 
    . (n 
    + 1)) by 
    ABSVALUE:def 1
    
            .= T by
    A35,
    A31,
    BINARI_3: 29;
    
            
    
            then
    
            
    
    A43: ( 
    Intval H1) 
    = (( 
    Absval H1) 
    - (2 
    to_power (n 
    + 1))) by 
    A41,
    BINARI_2:def 3
    
            .= (NH
    - (2 
    to_power (n 
    + 1))) by 
    A35,
    A34,
    BINARI_3: 35
    
            .= h;
    
            (
    len I1) 
    = (n 
    + 1) by 
    CARD_1:def 7;
    
            then
    
            
    
    A44: (I1 
    /. (n 
    + 1)) 
    = (I1 
    . (n 
    + 1)) by 
    A40,
    FINSEQ_4: 15;
    
            
    
            then
    
            
    
    A45: ( 
    Int_add_ovfl (H1,I1)) 
    = ((( 
    'not' T) 
    '&' ( 
    'not' F)) 
    '&' (( 
    carry (H1,I1)) 
    /. (n 
    + 1))) by 
    A38,
    A42,
    A41,
    BINARI_2:def 4
    
            .= F;
    
            
    
            
    
    A46: ( 
    Int_add_udfl (H1,I1)) 
    = ((T 
    '&' F) 
    '&' ( 
    'not' (( 
    carry (H1,I1)) 
    /. (n 
    + 1)))) by 
    A38,
    A42,
    A44,
    A41,
    BINARI_2:def 5
    
            .= F;
    
            (
    Intval I1) 
    = ( 
    Absval I1) by 
    A38,
    A44,
    BINARI_2:def 3
    
            .= i by
    A37,
    A39,
    BINARI_3: 35;
    
            
    
            then (
    Intval (H1 
    + I1)) 
    = (((h 
    + i) 
    - ( 
    IFEQ (F,F, 
    0 ,(2 
    to_power (n 
    + 1))))) 
    + ( 
    IFEQ (F,F, 
    0 ,(2 
    to_power (n 
    + 1))))) by 
    A10,
    A43,
    A45,
    A46,
    BINARI_2: 12
    
            .= (((h
    + i) 
    -  
    0 ) 
    +  
    0 ); 
    
            hence thesis;
    
          end;
    
        end;
    
        hence thesis;
    
      end;
    
      
    
      
    
    A47: 
    P[1]
    
      proof
    
        
    
        
    
    A48: 
    |.(
    - 1).| 
    = ( 
    - ( 
    - 1)) by 
    ABSVALUE:def 1
    
        .= 1;
    
        (2
    to_power 1) 
    = 2 & for k be 
    Nat st (2 
    to_power k) 
    >= 1 & k 
    >= 1 holds k 
    >= 1 by 
    POWER: 25;
    
        then (
    MajP (1, 
    |.(
    - 1).|)) 
    = 1 by 
    A48,
    Def1;
    
        
    
        then
    
        
    
    A49: ( 
    2sComplement (1,( 
    - 1))) 
    = (1 
    -BinarySequence  
    |.((2
    to_power 1) 
    + ( 
    - 1)).|) by 
    Def2
    
        .= (1
    -BinarySequence  
    |.(2
    + ( 
    - 1)).|) by 
    POWER: 25
    
        .= (1
    -BinarySequence 1) by 
    ABSVALUE:def 1
    
        .= ((
    0  
    + 1) 
    -BinarySequence (2 
    to_power  
    0 )) by 
    POWER: 24
    
        .= ((
    0*  
    0 ) 
    ^  
    <*1*>) by
    BINARI_3: 28
    
        .=
    <*
    TRUE *> by 
    FINSEQ_1: 34;
    
        assume that
    
        
    
    A50: ( 
    - (2 
    to_power (1 
    -' 1))) 
    <= h and 
    
        
    
    A51: h 
    <= ((2 
    to_power (1 
    -' 1)) 
    - 1) and 
    
        
    
    A52: ( 
    - (2 
    to_power (1 
    -' 1))) 
    <= i and 
    
        
    
    A53: i 
    <= ((2 
    to_power (1 
    -' 1)) 
    - 1) and ( 
    - (2 
    to_power (1 
    -' 1))) 
    <= (h 
    + i) and (h 
    + i) 
    <= ((2 
    to_power (1 
    -' 1)) 
    - 1) and 
    
        
    
    A54: h 
    >=  
    0 & i 
    <  
    0 or h 
    <  
    0 & i 
    >=  
    0 ; 
    
        
    
        
    
    A55: (1 
    -' 1) 
    = (1 
    - 1) by 
    XREAL_0:def 2
    
        .=
    0 ; 
    
        then
    
        
    
    A56: h 
    <= (1 
    - 1) by 
    A51,
    POWER: 24;
    
        
    
        
    
    A57: i 
    <= (1 
    - 1) by 
    A53,
    A55,
    POWER: 24;
    
        
    
        
    
    A58: ( 
    - 1) 
    <= i by 
    A52,
    A55,
    POWER: 24;
    
        
    
        
    
    A59: ( 
    2sComplement (1, 
    0 )) 
    = (1 
    -BinarySequence  
    |.
    0 .|) by 
    Def2
    
        .= (1
    -BinarySequence  
    0 ) by 
    ABSVALUE:def 1
    
        .= (
    0* 1) by 
    BINARI_3: 25
    
        .=
    <*
    FALSE *> by 
    FINSEQ_2: 59;
    
        
    
        
    
    A60: ( 
    - 1) 
    <= h by 
    A50,
    A55,
    POWER: 24;
    
        now
    
          per cases by
    A54;
    
            suppose
    
            
    
    A61: h 
    >=  
    0 & i 
    <  
    0 ; 
    
            then i
    <= ( 
    - 1) by 
    INT_1: 8;
    
            then
    
            
    
    A62: i 
    = ( 
    - 1) by 
    A58,
    XXREAL_0: 1;
    
            h
    =  
    0 by 
    A56,
    A61;
    
            hence thesis by
    A59,
    A49,
    A62,
    Th15,
    BINARI_3: 17;
    
          end;
    
            suppose
    
            
    
    A63: h 
    <  
    0 & i 
    >=  
    0 ; 
    
            then h
    <= ( 
    - 1) by 
    INT_1: 8;
    
            then
    
            
    
    A64: h 
    = ( 
    - 1) by 
    A60,
    XXREAL_0: 1;
    
            i
    =  
    0 by 
    A57,
    A63;
    
            hence thesis by
    A59,
    A49,
    A64,
    Th15,
    BINARI_3: 17;
    
          end;
    
        end;
    
        hence thesis;
    
      end;
    
      thus for n be non
    zero  
    Nat holds 
    P[n] from
    NAT_1:sch 10(
    A47,
    A1);
    
    end;