defpred S1[ non empty Nat] means for k being Nat st k + 1 < 2 to_power $1 holds
$1 -BinarySequence (k + 1) = ($1 -BinarySequence k) + (Bin1 $1);
A1:
S1[1]
A7:
for n being non empty Nat st S1[n] holds
S1[n + 1]
proof
let n be non
empty Nat;
:: thesis: ( S1[n] implies S1[n + 1] )
assume A8:
S1[
n]
;
:: thesis: S1[n + 1]
let k be
Nat;
:: thesis: ( k + 1 < 2 to_power (n + 1) implies (n + 1) -BinarySequence (k + 1) = ((n + 1) -BinarySequence k) + (Bin1 (n + 1)) )
assume A9:
k + 1
< 2
to_power (n + 1)
;
:: thesis: (n + 1) -BinarySequence (k + 1) = ((n + 1) -BinarySequence k) + (Bin1 (n + 1))
then A10:
k < 2
to_power (n + 1)
by NAT_1:13;
now 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 A14:
k + 1
> 2
to_power n
;
:: thesis: (n + 1) -BinarySequence (k + 1) = ((n + 1) -BinarySequence k) + (Bin1 (n + 1))then A15:
k >= 2
to_power n
by NAT_1:13;
k + 1
< (2 to_power n) * (2 to_power 1)
by A9, POWER:32;
then
k + 1
< (2 to_power n) * 2
by POWER:30;
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:21;
then
(k - (2 to_power n)) + 1
< 2
to_power n
;
then A16:
(k -' (2 to_power n)) + 1
< 2
to_power n
by A15, XREAL_1:235;
then A17:
add_ovfl (n -BinarySequence (k -' (2 to_power n))),
(Bin1 n) = FALSE
by Th33;
thus (n + 1) -BinarySequence (k + 1) =
(n -BinarySequence ((k + 1) -' (2 to_power n))) ^ <*TRUE *>
by A9, A14, Lm3
.=
(n -BinarySequence ((k -' (2 to_power n)) + 1)) ^ <*TRUE *>
by A15, 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 A8, A16, A17
.=
((n -BinarySequence (k -' (2 to_power n))) ^ <*TRUE *>) + ((Bin1 n) ^ <*FALSE *>)
by BINARITH:45
.=
((n -BinarySequence (k -' (2 to_power n))) ^ <*TRUE *>) + (Bin1 (n + 1))
by BINARI_2:9
.=
((n + 1) -BinarySequence k) + (Bin1 (n + 1))
by A10, A15, Lm3
;
:: thesis: verum end; end; end;
hence
(n + 1) -BinarySequence (k + 1) = ((n + 1) -BinarySequence k) + (Bin1 (n + 1))
;
:: thesis: verum
end;
thus
for n being non empty Nat holds S1[n]
from NAT_1:sch 10(A1, A7); :: thesis: verum