defpred S1[ set , set , set ] means ( ex A' being non empty set ex d' being distance_function of A',L ex Aq being non empty set ex dq being distance_function of Aq,L st
( Aq,dq is_extension_of A',d' & $2 = [A',d'] & $3 = [Aq,dq] ) or ( $3 = 0 & ( for A' being non empty set
for d' being distance_function of A',L
for Aq being non empty set
for dq being distance_function of Aq,L holds
( not Aq,dq is_extension_of A',d' or not $2 = [A',d'] ) ) ) );
A1: for n being Element of NAT
for x being set ex y being set st S1[n,x,y]
proof
let n be Element of NAT ; :: thesis: for x being set ex y being set st S1[n,x,y]
let x be set ; :: thesis: ex y being set st S1[n,x,y]
per cases ( ex A' being non empty set ex d' being distance_function of A',L ex Aq being non empty set ex dq being distance_function of Aq,L st
( Aq,dq is_extension_of A',d' & x = [A',d'] ) or for A' being non empty set
for d' being distance_function of A',L
for Aq being non empty set
for dq being distance_function of Aq,L holds
( not Aq,dq is_extension_of A',d' or not x = [A',d'] ) )
;
suppose ex A' being non empty set ex d' being distance_function of A',L ex Aq being non empty set ex dq being distance_function of Aq,L st
( Aq,dq is_extension_of A',d' & x = [A',d'] ) ; :: thesis: ex y being set st S1[n,x,y]
then consider A' being non empty set , d' being distance_function of A',L, Aq being non empty set , dq being distance_function of Aq,L such that
A2: Aq,dq is_extension_of A',d' and
A3: x = [A',d'] ;
take [Aq,dq] ; :: thesis: S1[n,x,[Aq,dq]]
thus S1[n,x,[Aq,dq]] by A2, A3; :: thesis: verum
end;
suppose A4: for A' being non empty set
for d' being distance_function of A',L
for Aq being non empty set
for dq being distance_function of Aq,L holds
( not Aq,dq is_extension_of A',d' or not x = [A',d'] ) ; :: thesis: ex y being set st S1[n,x,y]
take 0 ; :: thesis: S1[n,x, 0 ]
thus S1[n,x, 0 ] by A4; :: thesis: verum
end;
end;
end;
consider f being Function such that
A5: dom f = NAT and
A6: f . 0 = [A,d] and
A7: for n being Element of NAT holds S1[n,f . n,f . (n + 1)] from RECDEF_1:sch 1(A1);
take f ; :: thesis: ( dom f = NAT & f . 0 = [A,d] & ( for n being Element of NAT ex A' being non empty set ex d' being distance_function of A',L ex Aq being non empty set ex dq being distance_function of Aq,L st
( Aq,dq is_extension_of A',d' & f . n = [A',d'] & f . (n + 1) = [Aq,dq] ) ) )

thus dom f = NAT by A5; :: thesis: ( f . 0 = [A,d] & ( for n being Element of NAT ex A' being non empty set ex d' being distance_function of A',L ex Aq being non empty set ex dq being distance_function of Aq,L st
( Aq,dq is_extension_of A',d' & f . n = [A',d'] & f . (n + 1) = [Aq,dq] ) ) )

thus f . 0 = [A,d] by A6; :: thesis: for n being Element of NAT ex A' being non empty set ex d' being distance_function of A',L ex Aq being non empty set ex dq being distance_function of Aq,L st
( Aq,dq is_extension_of A',d' & f . n = [A',d'] & f . (n + 1) = [Aq,dq] )

defpred S2[ Element of NAT ] means ex A' being non empty set ex d' being distance_function of A',L ex Aq being non empty set ex dq being distance_function of Aq,L st
( Aq,dq is_extension_of A',d' & f . $1 = [A',d'] & f . ($1 + 1) = [Aq,dq] );
ex A' being non empty set ex d' being distance_function of A',L ex Aq being non empty set ex dq being distance_function of Aq,L st
( Aq,dq is_extension_of A',d' & f . 0 = [A',d'] )
proof
take A ; :: thesis: ex d' being distance_function of A,L ex Aq being non empty set ex dq being distance_function of Aq,L st
( Aq,dq is_extension_of A,d' & f . 0 = [A,d'] )

take d ; :: thesis: ex Aq being non empty set ex dq being distance_function of Aq,L st
( Aq,dq is_extension_of A,d & f . 0 = [A,d] )

consider q being QuadrSeq of d;
set Aq = NextSet d;
consider dq being distance_function of (NextSet d),L such that
A8: dq = NextDelta q ;
take NextSet d ; :: thesis: ex dq being distance_function of (NextSet d),L st
( NextSet d,dq is_extension_of A,d & f . 0 = [A,d] )

take dq ; :: thesis: ( NextSet d,dq is_extension_of A,d & f . 0 = [A,d] )
thus NextSet d,dq is_extension_of A,d by A8, Def20; :: thesis: f . 0 = [A,d]
thus f . 0 = [A,d] by A6; :: thesis: verum
end;
then A9: S2[ 0 ] by A7;
A10: for k being Element of NAT st S2[k] holds
S2[k + 1]
proof
let k be Element of NAT ; :: thesis: ( S2[k] implies S2[k + 1] )
given A' being non empty set , d' being distance_function of A',L, Aq being non empty set , dq being distance_function of Aq,L such that Aq,dq is_extension_of A',d' and
f . k = [A',d'] and
A11: f . (k + 1) = [Aq,dq] ; :: thesis: S2[k + 1]
ex A1 being non empty set ex d1 being distance_function of A1,L ex AQ being non empty set ex DQ being distance_function of AQ,L st
( AQ,DQ is_extension_of A1,d1 & f . (k + 1) = [A1,d1] )
proof
take Aq ; :: thesis: ex d1 being distance_function of Aq,L ex AQ being non empty set ex DQ being distance_function of AQ,L st
( AQ,DQ is_extension_of Aq,d1 & f . (k + 1) = [Aq,d1] )

take dq ; :: thesis: ex AQ being non empty set ex DQ being distance_function of AQ,L st
( AQ,DQ is_extension_of Aq,dq & f . (k + 1) = [Aq,dq] )

set AQ = NextSet dq;
consider Q being QuadrSeq of dq;
set DQ = NextDelta Q;
take NextSet dq ; :: thesis: ex DQ being distance_function of (NextSet dq),L st
( NextSet dq,DQ is_extension_of Aq,dq & f . (k + 1) = [Aq,dq] )

take NextDelta Q ; :: thesis: ( NextSet dq, NextDelta Q is_extension_of Aq,dq & f . (k + 1) = [Aq,dq] )
thus NextSet dq, NextDelta Q is_extension_of Aq,dq by Def20; :: thesis: f . (k + 1) = [Aq,dq]
thus f . (k + 1) = [Aq,dq] by A11; :: thesis: verum
end;
hence S2[k + 1] by A7; :: thesis: verum
end;
thus for k being Element of NAT holds S2[k] from NAT_1:sch 1(A9, A10); :: thesis: verum