set f1 = and2c ;
set f0 = xor2c ;
defpred S1[ Nat] means for x, y being nonpair-yielding FinSeqLen of $1 holds InputVertices ($1 -BitGFA1Str (x,y)) = (rng x) \/ (rng y);
A1:
S1[ 0 ]
A2:
for i being Nat st S1[i] holds
S1[i + 1]
proof
let i be
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) -BitGFA1Str (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 FACIRC_2:34;
consider y9 being
nonpair-yielding FinSeqLen of
i,
z2 being non
pair set such that A5:
y = y9 ^ <*z2*>
by FACIRC_2:34;
A6:
1
in Seg 1
by FINSEQ_1:1;
then A7:
1
in dom <*z1*>
by FINSEQ_1:def 8;
len x9 = i
by CARD_1:def 7;
then A8:
x . (i + 1) =
<*z1*> . 1
by A4, A7, FINSEQ_1:def 7
.=
z1
by FINSEQ_1:def 8
;
A9:
1
in dom <*z2*>
by A6, FINSEQ_1:def 8;
len y9 = i
by CARD_1:def 7;
then A10:
y . (i + 1) =
<*z2*> . 1
by A5, A9, FINSEQ_1:def 7
.=
z2
by FINSEQ_1:def 8
;
deffunc H1(
Nat)
-> Element of
InnerVertices ($1 -BitGFA1Str (x,y)) = $1
-BitGFA1CarryOutput (
x,
y);
A11:
{z1,z2,H1(i)} = {H1(i),z1,z2}
by ENUMSET1:59;
A12:
rng x =
(rng x9) \/ (rng <*z1*>)
by A4, FINSEQ_1:31
.=
(rng x9) \/ {z1}
by FINSEQ_1:38
;
A13:
rng y =
(rng y9) \/ (rng <*z2*>)
by A5, FINSEQ_1:31
.=
(rng y9) \/ {z2}
by FINSEQ_1:38
;
A14:
H1(
i)
<> [<*z1,z2*>,and2c]
by Lm4;
A15:
H1(
i)
<> [<*z1,z2*>,xor2c]
by Lm4;
A16:
x9 = x9 ^ {}
by FINSEQ_1:34;
y9 = y9 ^ {}
by FINSEQ_1:34;
then
i -BitGFA1Str (
x,
y)
= i -BitGFA1Str (
x9,
y9)
by A4, A5, A16, Th19;
hence InputVertices ((i + 1) -BitGFA1Str (x,y)) =
(InputVertices (i -BitGFA1Str (x9,y9))) \/ ((InputVertices (BitGFA1Str (z1,z2,H1(i)))) \ {H1(i)})
by A8, A10, Th26
.=
((rng x9) \/ (rng y9)) \/ ((InputVertices (BitGFA1Str (z1,z2,H1(i)))) \ {H1(i)})
by A3
.=
((rng x9) \/ (rng y9)) \/ ({z1,z2,H1(i)} \ {H1(i)})
by A14, A15, GFACIRC1:65
.=
((rng x9) \/ (rng y9)) \/ {z1,z2}
by A11, 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 A12, A13, XBOOLE_1:4
;
verum
end;
thus
for i being Nat holds S1[i]
from NAT_1:sch 2(A1, A2); verum