defpred S1[ non zero Nat] means for k being Nat st k + 1 < 2 to_power $1 holds
$1 -BinarySequence (k + 1) = ($1 -BinarySequence k) + (Bin1 $1);
A1:
for n being non zero Nat st S1[n] holds
S1[n + 1]
proof
let n be non
zero Nat;
( S1[n] implies S1[n + 1] )
assume A2:
S1[
n]
;
S1[n + 1]
let k be
Nat;
( k + 1 < 2 to_power (n + 1) implies (n + 1) -BinarySequence (k + 1) = ((n + 1) -BinarySequence k) + (Bin1 (n + 1)) )
assume A3:
k + 1
< 2
to_power (n + 1)
;
(n + 1) -BinarySequence (k + 1) = ((n + 1) -BinarySequence k) + (Bin1 (n + 1))
then A4:
k < 2
to_power (n + 1)
by NAT_1:13;
now (n + 1) -BinarySequence (k + 1) = ((n + 1) -BinarySequence k) + (Bin1 (n + 1))per cases
( k + 1 < 2 to_power n or k + 1 > 2 to_power n or k + 1 = 2 to_power n )
by XXREAL_0:1;
suppose A8:
k + 1
> 2
to_power n
;
(n + 1) -BinarySequence (k + 1) = ((n + 1) -BinarySequence k) + (Bin1 (n + 1))then A9:
k >= 2
to_power n
by NAT_1:13;
k + 1
< (2 to_power n) * (2 to_power 1)
by A3, POWER:27;
then
k + 1
< (2 to_power n) * 2
by POWER:25;
then
k + 1
< (2 to_power n) + (2 to_power n)
;
then
(k + 1) - (2 to_power n) < 2
to_power n
by XREAL_1:19;
then
(k - (2 to_power n)) + 1
< 2
to_power n
;
then A10:
(k -' (2 to_power n)) + 1
< 2
to_power n
by A9, XREAL_1:233;
then A11:
add_ovfl (
(n -BinarySequence (k -' (2 to_power n))),
(Bin1 n))
= FALSE
by Th32;
thus (n + 1) -BinarySequence (k + 1) =
(n -BinarySequence ((k + 1) -' (2 to_power n))) ^ <*TRUE*>
by A3, A8, Lm3
.=
(n -BinarySequence ((k -' (2 to_power n)) + 1)) ^ <*TRUE*>
by A9, NAT_D:38
.=
((n -BinarySequence (k -' (2 to_power n))) + (Bin1 n)) ^ <*((TRUE 'xor' FALSE) 'xor' (add_ovfl ((n -BinarySequence (k -' (2 to_power n))),(Bin1 n))))*>
by A2, A10, A11
.=
((n -BinarySequence (k -' (2 to_power n))) ^ <*TRUE*>) + ((Bin1 n) ^ <*FALSE*>)
by BINARITH:19
.=
((n -BinarySequence (k -' (2 to_power n))) ^ <*TRUE*>) + (Bin1 (n + 1))
by BINARI_2:7
.=
((n + 1) -BinarySequence k) + (Bin1 (n + 1))
by A4, A9, Lm3
;
verum end; end; end;
hence
(n + 1) -BinarySequence (k + 1) = ((n + 1) -BinarySequence k) + (Bin1 (n + 1))
;
verum
end;
A15:
S1[1]
thus
for n being non zero Nat holds S1[n]
from NAT_1:sch 10(A15, A1); verum