
theorem LMExtBit3:
  for K be non zero Nat,
  x,y be Tuple of K, BOOLEAN
  st y=0*K
  holds
  for n be non zero Nat st n <= K
  holds
  (carry (x,y)) /. n = 0
  &
  (carry (y,x)) /. n = 0
  proof
    let K be non zero Nat,
    x,y be Tuple of K, BOOLEAN;
    assume AS: y=0*K;
    defpred P[Nat] means
    1<=$1 & $1 <=K
    implies carry (x,y) /.$1 = 0;
    P1: P[1] by BINARITH:def 2;
    P2: for i being non zero Nat st P[i] holds P[i+1]
    proof
      let i be non zero Nat;
      assume A2: P[i];
      assume 1<=i+1 & i+1 <=K;
      then
      A4: 1 <=i & i < K by NAT_1:25,XXREAL_0:2,NAT_1:16;
      hence
      carry (x,y) /. (i + 1) = (((x /. i) '&' (y /. i)) 'or' ((x /. i)
      '&' (carry (x,y) /. i))) 'or' ((y /. i) '&' (carry (x,y) /. i))
      by BINARITH:def 2
      .= 0 by A4,A2,AS,LMExtBit4;
    end;
    P3: for k being non zero Nat holds P[k] from NAT_1:sch 10(P1,P2);
    let n be non zero Nat;
    assume n <= K; then
    1 <=n & n <= K by NAT_1:25;
    hence carry (x,y) /.n = 0 by P3;
    hence carry (y,x) /.n = 0 by LMExtBit501;
  end;
