defpred S1[ Element of NAT ] means for x, y being nonpair-yielding FinSeqLen of holds InputVertices ($1 -BitSubtracterStr x,y) = (rng x) \/ (rng y);
A1: S1[ 0 ]
proof end;
A3: for i being Element of NAT st S1[i] holds
S1[i + 1]
proof
let i be Element of NAT ; :: thesis: ( S1[i] implies S1[i + 1] )
assume A4: S1[i] ; :: thesis: S1[i + 1]
let x, y be nonpair-yielding FinSeqLen of ; :: thesis: InputVertices ((i + 1) -BitSubtracterStr x,y) = (rng x) \/ (rng y)
consider x' being nonpair-yielding FinSeqLen of , z1 being non pair set such that
A5: x = x' ^ <*z1*> by FACIRC_2:36;
consider y' being nonpair-yielding FinSeqLen of , z2 being non pair set such that
A6: y = y' ^ <*z2*> by FACIRC_2:36;
set S = (i + 1) -BitSubtracterStr x,y;
A7: 1 in Seg 1 by FINSEQ_1:3;
then A8: 1 in dom <*z1*> by FINSEQ_1:def 8;
len x' = i by FINSEQ_1:def 18;
then A9: x . (i + 1) = <*z1*> . 1 by A5, A8, FINSEQ_1:def 7
.= z1 by FINSEQ_1:def 8 ;
A10: 1 in dom <*z2*> by A7, FINSEQ_1:def 8;
len y' = i by FINSEQ_1:def 18;
then A11: y . (i + 1) = <*z2*> . 1 by A6, A10, FINSEQ_1:def 7
.= z2 by FINSEQ_1:def 8 ;
A12: {z1,z2,(i -BitBorrowOutput x,y)} = {(i -BitBorrowOutput x,y),z1,z2} by ENUMSET1:100;
A13: rng x = (rng x') \/ (rng <*z1*>) by A5, FINSEQ_1:44
.= (rng x') \/ {z1} by FINSEQ_1:55 ;
A14: rng y = (rng y') \/ (rng <*z2*>) by A6, FINSEQ_1:44
.= (rng y') \/ {z2} by FINSEQ_1:55 ;
A15: ( z1 <> [<*z2,(i -BitBorrowOutput x,y)*>,and2 ] & z2 <> [<*z1,(i -BitBorrowOutput x,y)*>,and2a ] & i -BitBorrowOutput x,y <> [<*z1,z2*>,and2a ] & i -BitBorrowOutput x,y <> [<*z1,z2*>,'xor' ] ) by Th19;
( x' = x' ^ {} & y' = y' ^ {} ) by FINSEQ_1:47;
then i -BitSubtracterStr x,y = i -BitSubtracterStr x',y' by A5, A6, Th5;
hence InputVertices ((i + 1) -BitSubtracterStr x,y) = (InputVertices (i -BitSubtracterStr x',y')) \/ ((InputVertices (BitSubtracterWithBorrowStr z1,z2,(i -BitBorrowOutput x,y))) \ {(i -BitBorrowOutput x,y)}) by A9, A11, Th20
.= ((rng x') \/ (rng y')) \/ ((InputVertices (BitSubtracterWithBorrowStr z1,z2,(i -BitBorrowOutput x,y))) \ {(i -BitBorrowOutput x,y)}) by A4
.= ((rng x') \/ (rng y')) \/ ({z1,z2,(i -BitBorrowOutput x,y)} \ {(i -BitBorrowOutput x,y)}) by A15, Th16
.= ((rng x') \/ (rng y')) \/ {z1,z2} by A12, ENUMSET1:136
.= ((rng x') \/ (rng y')) \/ ({z1} \/ {z2}) by ENUMSET1:41
.= (((rng x') \/ (rng y')) \/ {z1}) \/ {z2} by XBOOLE_1:4
.= (((rng x') \/ {z1}) \/ (rng y')) \/ {z2} by XBOOLE_1:4
.= (rng x) \/ (rng y) by A13, A14, XBOOLE_1:4 ;
:: thesis: verum
end;
thus for i being Element of NAT holds S1[i] from NAT_1:sch 1(A1, A3); :: thesis: verum