deffunc H1( object , object ) -> object = [{$2},{}];
consider f1 being Function such that
A1:
( dom f1 = NAT & f1 . 0 = 0_No )
and
A2:
for n being Nat holds f1 . (n + 1) = H1(n,f1 . n)
from NAT_1:sch 11();
deffunc H2( object , object ) -> object = [{},{$2}];
consider f2 being Function such that
A3:
( dom f2 = NAT & f2 . 0 = 0_No )
and
A4:
for n being Nat holds f2 . (n + 1) = H2(n,f2 . n)
from NAT_1:sch 11();
defpred S1[ object , object ] means for i being Integer st i = $1 holds
( ( i >= 0 implies $2 = f1 . i ) & ( i < 0 implies $2 = f2 . (- i) ) );
A5:
for i being object st i in INT holds
ex j being object st S1[i,j]
consider f being ManySortedSet of INT such that
A8:
for i being object st i in INT holds
S1[i,f . i]
from PBOOLE:sch 3(A5);
take
f
; for n being Nat holds
( f . 0 = 0_No & f . (n + 1) = [{(f . n)},{}] & f . (- (n + 1)) = [{},{(f . (- n))}] )
let n be Nat; ( f . 0 = 0_No & f . (n + 1) = [{(f . n)},{}] & f . (- (n + 1)) = [{},{(f . (- n))}] )
0 in INT
by INT_1:def 2;
hence
f . 0 = 0_No
by A1, A8; ( f . (n + 1) = [{(f . n)},{}] & f . (- (n + 1)) = [{},{(f . (- n))}] )
A9:
( n + 1 in INT & n in INT )
by INT_1:def 2;
then
( f . (n + 1) = f1 . (n + 1) & f1 . (n + 1) = H1(n,f1 . n) )
by A2, A8;
hence
f . (n + 1) = [{(f . n)},{}]
by A9, A8; f . (- (n + 1)) = [{},{(f . (- n))}]
A10:
( - (n + 1) in INT & - n in INT )
by INT_1:def 2;
then A11:
( f . (- (n + 1)) = f2 . (- (- (n + 1))) & f2 . (- (- (n + 1))) = H2(n,f2 . n) )
by A4, A8;
f . (- n) = f2 . (- (- n))
hence
f . (- (n + 1)) = [{},{(f . (- n))}]
by A11; verum