defpred S1[ Element of NAT , set , set ] means ex f being Function st
( f = p . $1 & $3 = f . $2 );
A1:
for i being Element of NAT st 1 <= i & i < (len p) + 1 holds
for x being set ex y being set st S1[i,x,y]
proof
let i be
Element of
NAT ;
:: thesis: ( 1 <= i & i < (len p) + 1 implies for x being set ex y being set st S1[i,x,y] )
assume
1
<= i
;
:: thesis: ( not i < (len p) + 1 or for x being set ex y being set st S1[i,x,y] )
assume
i < (len p) + 1
;
:: thesis: for x being set ex y being set st S1[i,x,y]
reconsider f =
p . i as
Function ;
let x be
set ;
:: thesis: ex y being set st S1[i,x,y]
take
f . x
;
:: thesis: S1[i,x,f . x]
take
f
;
:: thesis: ( f = p . i & f . x = f . x )
thus
(
f = p . i &
f . x = f . x )
;
:: thesis: verum
end;
consider q being FinSequence such that
A3:
len q = (len p) + 1
and
A4:
( q . 1 = x or (len p) + 1 = 0 )
and
A5:
for i being Element of NAT st 1 <= i & i < (len p) + 1 holds
S1[i,q . i,q . (i + 1)]
from RECDEF_1:sch 3(A1);
take
q
; :: thesis: ( len q = (len p) + 1 & q . 1 = x & ( for i being Element of NAT
for f being Function st i in dom p & f = p . i holds
q . (i + 1) = f . (q . i) ) )
thus
( len q = (len p) + 1 & q . 1 = x )
by A3, A4; :: thesis: for i being Element of NAT
for f being Function st i in dom p & f = p . i holds
q . (i + 1) = f . (q . i)
let i be Element of NAT ; :: thesis: for f being Function st i in dom p & f = p . i holds
q . (i + 1) = f . (q . i)
let f be Function; :: thesis: ( i in dom p & f = p . i implies q . (i + 1) = f . (q . i) )
assume
i in dom p
; :: thesis: ( not f = p . i or q . (i + 1) = f . (q . i) )
then
( i >= 1 & i <= len p )
by FINSEQ_3:27;
then
( i >= 1 & i < (len p) + 1 )
by NAT_1:13;
then
ex f being Function st
( f = p . i & q . (i + 1) = f . (q . i) )
by A5;
hence
( not f = p . i or q . (i + 1) = f . (q . i) )
; :: thesis: verum