defpred S1[ Element of NAT ] means for x, y being nonpair-yielding FinSeqLen of $1 holds InputVertices ($1 -BitAdderStr x,y) = (rng x) \/ (rng y);
A1:
S1[ 0 ]
A2:
for i being Element of NAT st S1[i] holds
S1[i + 1]
proof
let i be
Element of
NAT ;
( S1[i] implies S1[i + 1] )
assume A3:
S1[
i]
;
S1[i + 1]
let x,
y be
nonpair-yielding FinSeqLen of
i + 1;
InputVertices ((i + 1) -BitAdderStr x,y) = (rng x) \/ (rng y)
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:3;
A7:
dom <*z1*> = Seg 1
by FINSEQ_1:def 8;
A8:
<*z1*> . 1
= z1
by FINSEQ_1:def 8;
len x9 = i
by FINSEQ_1:def 18;
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
by FINSEQ_1:def 8;
len y9 = i
by FINSEQ_1:def 18;
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:100;
A14:
rng x =
(rng x9) \/ (rng <*z1*>)
by A4, FINSEQ_1:44
.=
(rng x9) \/ {z1}
by FINSEQ_1:55
;
A15:
rng y =
(rng y9) \/ (rng <*z2*>)
by A5, FINSEQ_1:44
.=
(rng y9) \/ {z2}
by FINSEQ_1:55
;
A16:
i -BitMajorityOutput x,
y <> [<*z1,z2*>,'&' ]
by Th26;
A17:
i -BitMajorityOutput x,
y <> [<*z1,z2*>,'xor' ]
by Th26;
A18:
x9 = x9 ^ {}
by FINSEQ_1:47;
y9 = y9 ^ {}
by FINSEQ_1:47;
then
i -BitAdderStr x,
y = i -BitAdderStr x9,
y9
by A4, A5, A18, Th11;
hence InputVertices ((i + 1) -BitAdderStr x,y) =
(InputVertices (i -BitAdderStr x9,y9)) \/ ((InputVertices (BitAdderWithOverflowStr z1,z2,(i -BitMajorityOutput x,y))) \ {(i -BitMajorityOutput x,y)})
by A9, A12, Th27
.=
((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, Th23
.=
((rng x9) \/ (rng y9)) \/ {z1,z2}
by A13, ENUMSET1:136
.=
((rng x9) \/ (rng y9)) \/ ({z1} \/ {z2})
by ENUMSET1:41
.=
(((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
;
verum
end;
thus
for i being Element of NAT holds S1[i]
from NAT_1:sch 1(A1, A2); verum