
theorem
  for n being Nat
  for x,y being nonpair-yielding FinSeqLen of n holds
  InputVertices (n-BitAdderStr(x,y)) = rng x \/ rng y
proof
  defpred P[Nat] means
  for x,y being nonpair-yielding FinSeqLen of $1 holds
  InputVertices ($1-BitAdderStr(x,y)) = rng x \/ rng y;
A1: P[ 0 ]
  proof
    let x,y be nonpair-yielding FinSeqLen of 0;
    set f = (0-tuples_on BOOLEAN)-->FALSE;
    0-BitAdderStr(x,y) = 1GateCircStr(<*>, f) by Th7;
    hence thesis by CIRCCOMB:42;
  end;
A2: for i being Nat st P[i] holds P[i+1]
  proof
    let i be Nat such that
A3: P[i];
    let x,y be nonpair-yielding FinSeqLen of i+1;
    consider x9 being nonpair-yielding FinSeqLen of i,
    z1 being non pair set such that
A4: x = x9^<*z1*> by Lm2;
    consider y9 being nonpair-yielding FinSeqLen of i,
    z2 being non pair set such that
A5: y = y9^<*z2*> by Lm2;
    set S = (i+1)-BitAdderStr(x, y);
A6: 1 in Seg 1 by FINSEQ_1:1;
A7: dom <*z1*> = Seg 1 by FINSEQ_1:def 8;
A8: <*z1*>.1 = z1;
    len x9 = i by CARD_1:def 7;
    then
A9: x .(i+1) = z1 by A4,A6,A7,A8,FINSEQ_1:def 7;
A10: dom <*z2*> = Seg 1 by FINSEQ_1:def 8;
A11: <*z2*>.1 = z2;
    len y9 = i by CARD_1:def 7;
    then
A12: y .(i+1) = z2 by A5,A6,A10,A11,FINSEQ_1:def 7;
A13: {z1,z2,i-BitMajorityOutput(x,y)} = {i-BitMajorityOutput(x,y),z1,z2}
    by ENUMSET1:59;
A14: rng x = rng x9 \/ rng <*z1*> by A4,FINSEQ_1:31
      .= rng x9 \/ {z1} by FINSEQ_1:38;
A15: rng y = rng y9 \/ rng <*z2*> by A5,FINSEQ_1:31
      .= rng y9 \/ {z2} by FINSEQ_1:38;
A16: i-BitMajorityOutput(x,y) <> [<*z1,z2*>, '&'] by Th25;
A17: i-BitMajorityOutput(x,y) <> [<*z1,z2*>, 'xor'] by Th25;
A18: x9 = x9^{} by FINSEQ_1:34;
    y9 = y9^{} by FINSEQ_1:34;
    then i-BitAdderStr(x,y) = i-BitAdderStr(x9,y9) by A4,A5,A18,Th10;
    hence InputVertices S = (InputVertices (i-BitAdderStr(x9,y9)))\/
    ((InputVertices BitAdderWithOverflowStr(z1,z2,
    i-BitMajorityOutput(x,y)) \ {i-BitMajorityOutput(x,y)})) by A9,A12,Th26
      .= (rng x9 \/ rng y9)\/ ((InputVertices BitAdderWithOverflowStr(z1,z2,
    i-BitMajorityOutput(x,y)) \ {i-BitMajorityOutput(x,y)})) by A3
      .= (rng x9 \/ rng y9)\/
    ({z1,z2,i-BitMajorityOutput(x,y)} \ {i-BitMajorityOutput(x,y)})
    by A16,A17,Th22
      .= (rng x9 \/ rng y9)\/ {z1,z2} by A13,ENUMSET1:86
      .= rng x9 \/ rng y9 \/ ({z1} \/ {z2}) by ENUMSET1:1
      .= rng x9 \/ rng y9 \/ {z1} \/ {z2} by XBOOLE_1:4
      .= rng x9 \/ {z1} \/ rng y9 \/ {z2} by XBOOLE_1:4
      .= rng x \/ rng y by A14,A15,XBOOLE_1:4;
  end;
  thus for i being Nat holds P[i] from NAT_1:sch 2(A1,A2);
end;
