defpred S1[ Nat] means for x1, x2, y1, y2 being FinSequence st len x1 = $1 & F1() = x1 ^ x2 & len y1 = $1 & F2() = y1 ^ y2 holds
P1[y1 ^ x2];
A5:
S1[ 0 ]
A10:
for i being Nat st S1[i] holds
S1[i + 1]
proof
let i be
Nat;
( S1[i] implies S1[i + 1] )
assume A11:
for
x1,
x2,
y1,
y2 being
FinSequence st
len x1 = i &
F1()
= x1 ^ x2 &
len y1 = i &
F2()
= y1 ^ y2 holds
P1[
y1 ^ x2]
;
S1[i + 1]
let x1,
x2,
y1,
y2 be
FinSequence;
( len x1 = i + 1 & F1() = x1 ^ x2 & len y1 = i + 1 & F2() = y1 ^ y2 implies P1[y1 ^ x2] )
assume that A12:
len x1 = i + 1
and A13:
F1()
= x1 ^ x2
and A14:
len y1 = i + 1
and A15:
F2()
= y1 ^ y2
;
P1[y1 ^ x2]
A16:
x1 <> {}
by A12;
A17:
y1 <> {}
by A14;
consider x9 being
FinSequence,
xx being
object such that A18:
x1 = x9 ^ <*xx*>
by A16, FINSEQ_1:46;
consider y9 being
FinSequence,
yy being
object such that A19:
y1 = y9 ^ <*yy*>
by A17, FINSEQ_1:46;
A20:
dom x1 = Seg (len x1)
by FINSEQ_1:def 3;
A21:
dom y1 = Seg (len y1)
by FINSEQ_1:def 3;
A22:
len <*xx*> = 1
by FINSEQ_1:40;
A23:
len <*yy*> = 1
by FINSEQ_1:40;
A24:
len x1 = (len x9) + 1
by A18, A22, FINSEQ_1:22;
A25:
len y1 = (len y9) + 1
by A19, A23, FINSEQ_1:22;
A26:
F1()
= x9 ^ (<*xx*> ^ x2)
by A13, A18, FINSEQ_1:32;
A27:
F2()
= y9 ^ (<*yy*> ^ y2)
by A15, A19, FINSEQ_1:32;
A28:
i + 1
in dom x1
by A12, A20, FINSEQ_1:4;
A29:
dom x1 c= dom F1()
by A13, FINSEQ_1:26;
A30:
x1 . ((len x9) + 1) = xx
by A18, FINSEQ_1:42;
A31:
y1 . ((len y9) + 1) = yy
by A19, FINSEQ_1:42;
A32:
P1[
y9 ^ (<*xx*> ^ x2)]
by A11, A12, A14, A24, A25, A26, A27;
A33:
F1()
. (i + 1) = xx
by A12, A13, A24, A28, A30, FINSEQ_1:def 7;
A34:
F2()
. (i + 1) = yy
by A12, A14, A15, A20, A21, A25, A28, A31, FINSEQ_1:def 7;
P1[
(y9 ^ <*xx*>) ^ x2]
by A32, FINSEQ_1:32;
hence
P1[
y1 ^ x2]
by A3, A4, A19, A28, A29, A33, A34;
verum
end;
A35:
for i being Nat holds S1[i]
from NAT_1:sch 2(A5, A10);
A36:
F1() = F1() ^ {}
by FINSEQ_1:34;
F2() = F2() ^ {}
by FINSEQ_1:34;
hence
P1[F2()]
by A2, A35, A36; verum