let s be State of SCMPDS; :: thesis: for I being halt-free shiftable Program of SCMPDS
for a being Int_position
for i, c being Integer
for f, g being FinSequence of INT
for m, n, m1 being Element of NAT st card I > 0 & s . a = c & len f = n & len g = n & f is_FinSequence_on s,m & g is_FinSequence_on IExec ((while>0 (a,i,I)),s),m & 1 = s . (DataLoc (c,i)) & m1 = (m + n) + 1 & m + 1 = s . (intpos m1) & m + n = s . (intpos (m1 + 1)) & ( for t being State of SCMPDS
for f1, f2 being FinSequence of INT
for k1, k2, y1, yn being Element of NAT st t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) holds
( I is_closed_on t & I is_halting_on t & (IExec (I,t)) . a = t . a & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(IExec (I,t)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & ( y1 >= yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) - 1 & ( for j being Element of NAT st 1 <= j & j <= n holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) ) ) & ( y1 < yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) + 3 & ( for j being Element of NAT st ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) & ex ym being Element of NAT st
( y1 <= ym & ym <= yn & m + y1 = (IExec (I,t)) . (intpos k2) & (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) & (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) & m + yn = (IExec (I,t)) . (intpos (k2 + 3)) & ( for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) ) & ( for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) ) ) ) ) & ( f1 is_FinSequence_on t,m & f2 is_FinSequence_on IExec (I,t),m & len f1 = n & len f2 = n implies f1,f2 are_fiberwise_equipotent ) ) ) holds
( while>0 (a,i,I) is_halting_on s & f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n )

let I be halt-free shiftable Program of SCMPDS; :: thesis: for a being Int_position
for i, c being Integer
for f, g being FinSequence of INT
for m, n, m1 being Element of NAT st card I > 0 & s . a = c & len f = n & len g = n & f is_FinSequence_on s,m & g is_FinSequence_on IExec ((while>0 (a,i,I)),s),m & 1 = s . (DataLoc (c,i)) & m1 = (m + n) + 1 & m + 1 = s . (intpos m1) & m + n = s . (intpos (m1 + 1)) & ( for t being State of SCMPDS
for f1, f2 being FinSequence of INT
for k1, k2, y1, yn being Element of NAT st t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) holds
( I is_closed_on t & I is_halting_on t & (IExec (I,t)) . a = t . a & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(IExec (I,t)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & ( y1 >= yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) - 1 & ( for j being Element of NAT st 1 <= j & j <= n holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) ) ) & ( y1 < yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) + 3 & ( for j being Element of NAT st ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) & ex ym being Element of NAT st
( y1 <= ym & ym <= yn & m + y1 = (IExec (I,t)) . (intpos k2) & (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) & (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) & m + yn = (IExec (I,t)) . (intpos (k2 + 3)) & ( for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) ) & ( for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) ) ) ) ) & ( f1 is_FinSequence_on t,m & f2 is_FinSequence_on IExec (I,t),m & len f1 = n & len f2 = n implies f1,f2 are_fiberwise_equipotent ) ) ) holds
( while>0 (a,i,I) is_halting_on s & f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n )

let a be Int_position ; :: thesis: for i, c being Integer
for f, g being FinSequence of INT
for m, n, m1 being Element of NAT st card I > 0 & s . a = c & len f = n & len g = n & f is_FinSequence_on s,m & g is_FinSequence_on IExec ((while>0 (a,i,I)),s),m & 1 = s . (DataLoc (c,i)) & m1 = (m + n) + 1 & m + 1 = s . (intpos m1) & m + n = s . (intpos (m1 + 1)) & ( for t being State of SCMPDS
for f1, f2 being FinSequence of INT
for k1, k2, y1, yn being Element of NAT st t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) holds
( I is_closed_on t & I is_halting_on t & (IExec (I,t)) . a = t . a & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(IExec (I,t)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & ( y1 >= yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) - 1 & ( for j being Element of NAT st 1 <= j & j <= n holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) ) ) & ( y1 < yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) + 3 & ( for j being Element of NAT st ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) & ex ym being Element of NAT st
( y1 <= ym & ym <= yn & m + y1 = (IExec (I,t)) . (intpos k2) & (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) & (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) & m + yn = (IExec (I,t)) . (intpos (k2 + 3)) & ( for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) ) & ( for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) ) ) ) ) & ( f1 is_FinSequence_on t,m & f2 is_FinSequence_on IExec (I,t),m & len f1 = n & len f2 = n implies f1,f2 are_fiberwise_equipotent ) ) ) holds
( while>0 (a,i,I) is_halting_on s & f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n )

let i, c be Integer; :: thesis: for f, g being FinSequence of INT
for m, n, m1 being Element of NAT st card I > 0 & s . a = c & len f = n & len g = n & f is_FinSequence_on s,m & g is_FinSequence_on IExec ((while>0 (a,i,I)),s),m & 1 = s . (DataLoc (c,i)) & m1 = (m + n) + 1 & m + 1 = s . (intpos m1) & m + n = s . (intpos (m1 + 1)) & ( for t being State of SCMPDS
for f1, f2 being FinSequence of INT
for k1, k2, y1, yn being Element of NAT st t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) holds
( I is_closed_on t & I is_halting_on t & (IExec (I,t)) . a = t . a & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(IExec (I,t)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & ( y1 >= yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) - 1 & ( for j being Element of NAT st 1 <= j & j <= n holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) ) ) & ( y1 < yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) + 3 & ( for j being Element of NAT st ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) & ex ym being Element of NAT st
( y1 <= ym & ym <= yn & m + y1 = (IExec (I,t)) . (intpos k2) & (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) & (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) & m + yn = (IExec (I,t)) . (intpos (k2 + 3)) & ( for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) ) & ( for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) ) ) ) ) & ( f1 is_FinSequence_on t,m & f2 is_FinSequence_on IExec (I,t),m & len f1 = n & len f2 = n implies f1,f2 are_fiberwise_equipotent ) ) ) holds
( while>0 (a,i,I) is_halting_on s & f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n )

let f, g be FinSequence of INT ; :: thesis: for m, n, m1 being Element of NAT st card I > 0 & s . a = c & len f = n & len g = n & f is_FinSequence_on s,m & g is_FinSequence_on IExec ((while>0 (a,i,I)),s),m & 1 = s . (DataLoc (c,i)) & m1 = (m + n) + 1 & m + 1 = s . (intpos m1) & m + n = s . (intpos (m1 + 1)) & ( for t being State of SCMPDS
for f1, f2 being FinSequence of INT
for k1, k2, y1, yn being Element of NAT st t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) holds
( I is_closed_on t & I is_halting_on t & (IExec (I,t)) . a = t . a & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(IExec (I,t)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & ( y1 >= yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) - 1 & ( for j being Element of NAT st 1 <= j & j <= n holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) ) ) & ( y1 < yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) + 3 & ( for j being Element of NAT st ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) & ex ym being Element of NAT st
( y1 <= ym & ym <= yn & m + y1 = (IExec (I,t)) . (intpos k2) & (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) & (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) & m + yn = (IExec (I,t)) . (intpos (k2 + 3)) & ( for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) ) & ( for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) ) ) ) ) & ( f1 is_FinSequence_on t,m & f2 is_FinSequence_on IExec (I,t),m & len f1 = n & len f2 = n implies f1,f2 are_fiberwise_equipotent ) ) ) holds
( while>0 (a,i,I) is_halting_on s & f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n )

let m, n, m1 be Element of NAT ; :: thesis: ( card I > 0 & s . a = c & len f = n & len g = n & f is_FinSequence_on s,m & g is_FinSequence_on IExec ((while>0 (a,i,I)),s),m & 1 = s . (DataLoc (c,i)) & m1 = (m + n) + 1 & m + 1 = s . (intpos m1) & m + n = s . (intpos (m1 + 1)) & ( for t being State of SCMPDS
for f1, f2 being FinSequence of INT
for k1, k2, y1, yn being Element of NAT st t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) holds
( I is_closed_on t & I is_halting_on t & (IExec (I,t)) . a = t . a & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(IExec (I,t)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & ( y1 >= yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) - 1 & ( for j being Element of NAT st 1 <= j & j <= n holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) ) ) & ( y1 < yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) + 3 & ( for j being Element of NAT st ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) & ex ym being Element of NAT st
( y1 <= ym & ym <= yn & m + y1 = (IExec (I,t)) . (intpos k2) & (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) & (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) & m + yn = (IExec (I,t)) . (intpos (k2 + 3)) & ( for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) ) & ( for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) ) ) ) ) & ( f1 is_FinSequence_on t,m & f2 is_FinSequence_on IExec (I,t),m & len f1 = n & len f2 = n implies f1,f2 are_fiberwise_equipotent ) ) ) implies ( while>0 (a,i,I) is_halting_on s & f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n ) )

set b = DataLoc (c,i);
assume that
A1: card I > 0 and
A2: s . a = c and
A3: len f = n and
A4: len g = n ; :: thesis: ( not f is_FinSequence_on s,m or not g is_FinSequence_on IExec ((while>0 (a,i,I)),s),m or not 1 = s . (DataLoc (c,i)) or not m1 = (m + n) + 1 or not m + 1 = s . (intpos m1) or not m + n = s . (intpos (m1 + 1)) or ex t being State of SCMPDS ex f1, f2 being FinSequence of INT ex k1, k2, y1, yn being Element of NAT st
( t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) & not ( I is_closed_on t & I is_halting_on t & (IExec (I,t)) . a = t . a & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(IExec (I,t)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & ( y1 >= yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) - 1 & ( for j being Element of NAT st 1 <= j & j <= n holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) ) ) & ( y1 < yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) + 3 & ( for j being Element of NAT st ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) & ex ym being Element of NAT st
( y1 <= ym & ym <= yn & m + y1 = (IExec (I,t)) . (intpos k2) & (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) & (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) & m + yn = (IExec (I,t)) . (intpos (k2 + 3)) & ( for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) ) & ( for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) ) ) ) ) & ( f1 is_FinSequence_on t,m & f2 is_FinSequence_on IExec (I,t),m & len f1 = n & len f2 = n implies f1,f2 are_fiberwise_equipotent ) ) ) or ( while>0 (a,i,I) is_halting_on s & f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n ) )

set WH = while>0 (a,i,I);
set sWH = stop (while>0 (a,i,I));
set iWH = Initialize (stop (while>0 (a,i,I)));
assume A5: f is_FinSequence_on s,m ; :: thesis: ( not g is_FinSequence_on IExec ((while>0 (a,i,I)),s),m or not 1 = s . (DataLoc (c,i)) or not m1 = (m + n) + 1 or not m + 1 = s . (intpos m1) or not m + n = s . (intpos (m1 + 1)) or ex t being State of SCMPDS ex f1, f2 being FinSequence of INT ex k1, k2, y1, yn being Element of NAT st
( t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) & not ( I is_closed_on t & I is_halting_on t & (IExec (I,t)) . a = t . a & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(IExec (I,t)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & ( y1 >= yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) - 1 & ( for j being Element of NAT st 1 <= j & j <= n holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) ) ) & ( y1 < yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) + 3 & ( for j being Element of NAT st ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) & ex ym being Element of NAT st
( y1 <= ym & ym <= yn & m + y1 = (IExec (I,t)) . (intpos k2) & (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) & (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) & m + yn = (IExec (I,t)) . (intpos (k2 + 3)) & ( for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) ) & ( for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) ) ) ) ) & ( f1 is_FinSequence_on t,m & f2 is_FinSequence_on IExec (I,t),m & len f1 = n & len f2 = n implies f1,f2 are_fiberwise_equipotent ) ) ) or ( while>0 (a,i,I) is_halting_on s & f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n ) )

defpred S1[ Element of NAT ] means for t being State of SCMPDS
for f1 being FinSequence of INT
for k1, k2, y1, yn being Element of NAT st t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & yn - y1 <= $1 & f1 is_FinSequence_on t,m & len f1 = n holds
ex k being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k) & f2 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k),m & len f2 = n & f1,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c );
assume A6: g is_FinSequence_on IExec ((while>0 (a,i,I)),s),m ; :: thesis: ( not 1 = s . (DataLoc (c,i)) or not m1 = (m + n) + 1 or not m + 1 = s . (intpos m1) or not m + n = s . (intpos (m1 + 1)) or ex t being State of SCMPDS ex f1, f2 being FinSequence of INT ex k1, k2, y1, yn being Element of NAT st
( t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) & not ( I is_closed_on t & I is_halting_on t & (IExec (I,t)) . a = t . a & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(IExec (I,t)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & ( y1 >= yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) - 1 & ( for j being Element of NAT st 1 <= j & j <= n holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) ) ) & ( y1 < yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) + 3 & ( for j being Element of NAT st ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) & ex ym being Element of NAT st
( y1 <= ym & ym <= yn & m + y1 = (IExec (I,t)) . (intpos k2) & (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) & (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) & m + yn = (IExec (I,t)) . (intpos (k2 + 3)) & ( for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) ) & ( for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) ) ) ) ) & ( f1 is_FinSequence_on t,m & f2 is_FinSequence_on IExec (I,t),m & len f1 = n & len f2 = n implies f1,f2 are_fiberwise_equipotent ) ) ) or ( while>0 (a,i,I) is_halting_on s & f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n ) )

assume A7: 1 = s . (DataLoc (c,i)) ; :: thesis: ( not m1 = (m + n) + 1 or not m + 1 = s . (intpos m1) or not m + n = s . (intpos (m1 + 1)) or ex t being State of SCMPDS ex f1, f2 being FinSequence of INT ex k1, k2, y1, yn being Element of NAT st
( t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) & not ( I is_closed_on t & I is_halting_on t & (IExec (I,t)) . a = t . a & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(IExec (I,t)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & ( y1 >= yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) - 1 & ( for j being Element of NAT st 1 <= j & j <= n holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) ) ) & ( y1 < yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) + 3 & ( for j being Element of NAT st ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) & ex ym being Element of NAT st
( y1 <= ym & ym <= yn & m + y1 = (IExec (I,t)) . (intpos k2) & (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) & (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) & m + yn = (IExec (I,t)) . (intpos (k2 + 3)) & ( for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) ) & ( for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) ) ) ) ) & ( f1 is_FinSequence_on t,m & f2 is_FinSequence_on IExec (I,t),m & len f1 = n & len f2 = n implies f1,f2 are_fiberwise_equipotent ) ) ) or ( while>0 (a,i,I) is_halting_on s & f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n ) )

assume that
A8: m1 = (m + n) + 1 and
A9: m + 1 = s . (intpos m1) and
A10: m + n = s . (intpos (m1 + 1)) ; :: thesis: ( ex t being State of SCMPDS ex f1, f2 being FinSequence of INT ex k1, k2, y1, yn being Element of NAT st
( t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) & not ( I is_closed_on t & I is_halting_on t & (IExec (I,t)) . a = t . a & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(IExec (I,t)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & ( y1 >= yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) - 1 & ( for j being Element of NAT st 1 <= j & j <= n holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) ) ) & ( y1 < yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) + 3 & ( for j being Element of NAT st ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) & ex ym being Element of NAT st
( y1 <= ym & ym <= yn & m + y1 = (IExec (I,t)) . (intpos k2) & (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) & (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) & m + yn = (IExec (I,t)) . (intpos (k2 + 3)) & ( for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) ) & ( for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) ) ) ) ) & ( f1 is_FinSequence_on t,m & f2 is_FinSequence_on IExec (I,t),m & len f1 = n & len f2 = n implies f1,f2 are_fiberwise_equipotent ) ) ) or ( while>0 (a,i,I) is_halting_on s & f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n ) )

A11: m1 = ((m + n) + (2 * 0)) + 1 by A8;
assume A12: for t being State of SCMPDS
for f1, f2 being FinSequence of INT
for k1, k2, y1, yn being Element of NAT st t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) holds
( I is_closed_on t & I is_halting_on t & (IExec (I,t)) . a = t . a & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(IExec (I,t)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & ( y1 >= yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) - 1 & ( for j being Element of NAT st 1 <= j & j <= n holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) ) ) & ( y1 < yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) + 3 & ( for j being Element of NAT st ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) & ex ym being Element of NAT st
( y1 <= ym & ym <= yn & m + y1 = (IExec (I,t)) . (intpos k2) & (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) & (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) & m + yn = (IExec (I,t)) . (intpos (k2 + 3)) & ( for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) ) & ( for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) ) ) ) ) & ( f1 is_FinSequence_on t,m & f2 is_FinSequence_on IExec (I,t),m & len f1 = n & len f2 = n implies f1,f2 are_fiberwise_equipotent ) ) ; :: thesis: ( while>0 (a,i,I) is_halting_on s & f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n )
A13: S1[ 0 ]
proof
let t be State of SCMPDS; :: thesis: for f1 being FinSequence of INT
for k1, k2, y1, yn being Element of NAT st t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & yn - y1 <= 0 & f1 is_FinSequence_on t,m & len f1 = n holds
ex k being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k) & f2 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k),m & len f2 = n & f1,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c )

let f1 be FinSequence of INT ; :: thesis: for k1, k2, y1, yn being Element of NAT st t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & yn - y1 <= 0 & f1 is_FinSequence_on t,m & len f1 = n holds
ex k being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k) & f2 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k),m & len f2 = n & f1,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c )

let k1, k2, y1, yn be Element of NAT ; :: thesis: ( t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & yn - y1 <= 0 & f1 is_FinSequence_on t,m & len f1 = n implies ex k being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k) & f2 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k),m & len f2 = n & f1,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c ) )

assume that
A14: t . a = c and
A15: (2 * k1) + 1 = t . (DataLoc (c,i)) and
A16: k2 = ((m + n) + (2 * k1)) + 1 and
A17: ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) and
A18: m + y1 = t . (intpos k2) and
A19: m + yn = t . (intpos (k2 + 1)) and
A20: yn - y1 <= 0 and
A21: f1 is_FinSequence_on t,m and
A22: len f1 = n ; :: thesis: ex k being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k) & f2 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k),m & len f2 = n & f1,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c )

A23: I is_halting_on t by A12, A14, A15, A16, A17, A18, A19;
take k = (LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2; :: thesis: ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k) & f2 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k),m & len f2 = n & f1,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c )

set tk = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k);
A24: I is_closed_on t by A12, A14, A15, A16, A17, A18, A19;
then A25: DataPart (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) = DataPart (IExec (I,t)) by A14, A15, A23, Th2;
consider f2 being FinSequence of INT such that
A26: len f2 = n and
A27: for i being Element of NAT st 1 <= i & i <= len f2 holds
f2 . i = (IExec (I,t)) . (intpos (m + i)) by SCPISORT:2;
take f2 ; :: thesis: ( (Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k) & f2 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k),m & len f2 = n & f1,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c )

thus (Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k) by A14, A15, A24, A23, Th2; :: thesis: ( f2 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k),m & len f2 = n & f1,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c )

now
let i be Element of NAT ; :: thesis: ( 1 <= i & i <= len f2 implies f2 . i = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos (m + i)) )
assume that
A28: 1 <= i and
A29: i <= len f2 ; :: thesis: f2 . i = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos (m + i))
thus f2 . i = (IExec (I,t)) . (intpos (m + i)) by A27, A28, A29
.= (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos (m + i)) by A25, SCMPDS_4:23 ; :: thesis: verum
end;
hence f2 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k),m by SCPISORT:def 1; :: thesis: ( len f2 = n & f1,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c )

thus len f2 = n by A26; :: thesis: ( f1,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c )

f2 is_FinSequence_on IExec (I,t),m by A27, SCPISORT:def 1;
hence f1,f2 are_fiberwise_equipotent by A12, A14, A15, A16, A17, A18, A19, A21, A22, A26; :: thesis: ( f2 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c )

thus f2 is_non_decreasing_on y1,yn by A20, SCPISORT:1, XREAL_1:52; :: thesis: ( ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c )

thus for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) by A20, XREAL_1:52; :: thesis: ( ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c )

hereby :: thesis: ( ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c )
let j be Element of NAT ; :: thesis: ( y1 >= yn & 1 <= j & j <= n implies f2 . j = t . (intpos (m + j)) )
assume that
A30: y1 >= yn and
A31: 1 <= j and
A32: j <= n ; :: thesis: f2 . j = t . (intpos (m + j))
thus f2 . j = (IExec (I,t)) . (intpos (m + j)) by A26, A27, A31, A32
.= t . (intpos (m + j)) by A12, A14, A15, A16, A18, A19, A30, A31, A32 ; :: thesis: verum
end;
hereby :: thesis: ( (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c )
let j be Element of NAT ; :: thesis: ( 1 <= j & j < (2 * k1) + 1 implies (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) )
assume that
A33: 1 <= j and
A34: j < (2 * k1) + 1 ; :: thesis: (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j))
thus (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = (IExec (I,t)) . (intpos ((m + n) + j)) by A25, SCMPDS_4:23
.= t . (intpos ((m + n) + j)) by A12, A14, A15, A16, A17, A18, A19, A33, A34 ; :: thesis: verum
end;
( y1 >= yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) - 1 & ( for j being Element of NAT st 1 <= j & j <= n holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) ) ) by A12, A14, A15, A16, A18, A19;
hence (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 by A15, A20, A25, SCMPDS_4:23, XREAL_1:52; :: thesis: (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c
(IExec (I,t)) . a = t . a by A12, A14, A15, A16, A17, A18, A19;
hence (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),k)) . a = c by A14, A25, SCMPDS_4:23; :: thesis: verum
end;
A35: now
let k be Element of NAT ; :: thesis: ( S1[k] implies S1[k + 1] )
assume A36: S1[k] ; :: thesis: S1[k + 1]
now
let t be State of SCMPDS; :: thesis: for f1 being FinSequence of INT
for k1, k2, y1, ym, yn being Element of NAT st t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & yn - y1 <= k + 1 & f1 is_FinSequence_on t,m & len f1 = n holds
ex kk being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b14))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b14) & b15 is_FinSequence_on Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b14),m & len b15 = n & f2,b15 are_fiberwise_equipotent & b15 is_non_decreasing_on b11,b13 & ( for j being Element of NAT st b11 < b13 & ( ( 1 <= b16 & b16 < b11 ) or ( b13 < b16 & b16 <= n ) ) holds
b15 . b16 = kk . (intpos (m + b16)) ) & ( for j being Element of NAT st b11 >= b13 & 1 <= b16 & b16 <= n holds
b15 . b16 = kk . (intpos (m + b16)) ) & ( for j being Element of NAT st 1 <= b16 & b16 < (2 * j) + 1 holds
(Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b14)) . (intpos ((m + n) + b16)) = kk . (intpos ((m + n) + b16)) ) & (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b14)) . (DataLoc (c,i)) = (kk . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b14)) . a = c )

let f1 be FinSequence of INT ; :: thesis: for k1, k2, y1, ym, yn being Element of NAT st t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & yn - y1 <= k + 1 & f1 is_FinSequence_on t,m & len f1 = n holds
ex kk being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b13))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b13) & b14 is_FinSequence_on Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b13),m & len b14 = n & f2,b14 are_fiberwise_equipotent & b14 is_non_decreasing_on b10,b12 & ( for j being Element of NAT st b10 < b12 & ( ( 1 <= b15 & b15 < b10 ) or ( b12 < b15 & b15 <= n ) ) holds
b14 . b15 = kk . (intpos (m + b15)) ) & ( for j being Element of NAT st b10 >= b12 & 1 <= b15 & b15 <= n holds
b14 . b15 = kk . (intpos (m + b15)) ) & ( for j being Element of NAT st 1 <= b15 & b15 < (2 * j) + 1 holds
(Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b13)) . (intpos ((m + n) + b15)) = kk . (intpos ((m + n) + b15)) ) & (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b13)) . (DataLoc (c,i)) = (kk . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b13)) . a = c )

let k1, k2, y1, ym, yn be Element of NAT ; :: thesis: ( t . a = c & (2 * k1) + 1 = t . (DataLoc (c,i)) & k2 = ((m + n) + (2 * k1)) + 1 & ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) & m + y1 = t . (intpos k2) & m + yn = t . (intpos (k2 + 1)) & yn - y1 <= k + 1 & f1 is_FinSequence_on t,m & len f1 = n implies ex kk being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8) & b9 is_FinSequence_on Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8),m & len b9 = n & f2,b9 are_fiberwise_equipotent & b9 is_non_decreasing_on b5,b7 & ( for j being Element of NAT st b5 < b7 & ( ( 1 <= b10 & b10 < b5 ) or ( b7 < b10 & b10 <= n ) ) holds
b9 . b10 = kk . (intpos (m + b10)) ) & ( for j being Element of NAT st b5 >= b7 & 1 <= b10 & b10 <= n holds
b9 . b10 = kk . (intpos (m + b10)) ) & ( for j being Element of NAT st 1 <= b10 & b10 < (2 * j) + 1 holds
(Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8)) . (intpos ((m + n) + b10)) = kk . (intpos ((m + n) + b10)) ) & (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8)) . (DataLoc (c,i)) = (kk . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8)) . a = c ) )

assume that
A37: t . a = c and
A38: (2 * k1) + 1 = t . (DataLoc (c,i)) and
A39: k2 = ((m + n) + (2 * k1)) + 1 and
A40: ( ( 1 <= y1 & yn <= n ) or y1 >= yn ) and
A41: m + y1 = t . (intpos k2) and
A42: m + yn = t . (intpos (k2 + 1)) and
A43: yn - y1 <= k + 1 and
A44: f1 is_FinSequence_on t,m and
A45: len f1 = n ; :: thesis: ex kk being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8) & b9 is_FinSequence_on Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8),m & len b9 = n & f2,b9 are_fiberwise_equipotent & b9 is_non_decreasing_on b5,b7 & ( for j being Element of NAT st b5 < b7 & ( ( 1 <= b10 & b10 < b5 ) or ( b7 < b10 & b10 <= n ) ) holds
b9 . b10 = kk . (intpos (m + b10)) ) & ( for j being Element of NAT st b5 >= b7 & 1 <= b10 & b10 <= n holds
b9 . b10 = kk . (intpos (m + b10)) ) & ( for j being Element of NAT st 1 <= b10 & b10 < (2 * j) + 1 holds
(Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8)) . (intpos ((m + n) + b10)) = kk . (intpos ((m + n) + b10)) ) & (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8)) . (DataLoc (c,i)) = (kk . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8)) . a = c )

per cases ( yn - y1 <= 0 or yn - y1 > 0 ) ;
suppose yn - y1 <= 0 ; :: thesis: ex kk being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8) & b9 is_FinSequence_on Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8),m & len b9 = n & f2,b9 are_fiberwise_equipotent & b9 is_non_decreasing_on b5,b7 & ( for j being Element of NAT st b5 < b7 & ( ( 1 <= b10 & b10 < b5 ) or ( b7 < b10 & b10 <= n ) ) holds
b9 . b10 = kk . (intpos (m + b10)) ) & ( for j being Element of NAT st b5 >= b7 & 1 <= b10 & b10 <= n holds
b9 . b10 = kk . (intpos (m + b10)) ) & ( for j being Element of NAT st 1 <= b10 & b10 < (2 * j) + 1 holds
(Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8)) . (intpos ((m + n) + b10)) = kk . (intpos ((m + n) + b10)) ) & (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8)) . (DataLoc (c,i)) = (kk . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize kk) +* (stop (while>0 (a,i,I))))),((Initialize kk) +* (stop (while>0 (a,i,I)))),b8)) . a = c )

hence ex kk being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),kk))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),kk) & f2 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),kk),m & len f2 = n & f1,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f2 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),kk)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),kk)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),kk)) . a = c ) by A13, A37, A38, A39, A40, A41, A42, A44, A45; :: thesis: verum
end;
suppose A46: yn - y1 > 0 ; :: thesis: ex mm being Element of NAT ex f4 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize mm) +* (stop (while>0 (a,i,I))))),((Initialize mm) +* (stop (while>0 (a,i,I)))),b8))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize mm) +* (stop (while>0 (a,i,I))))),((Initialize mm) +* (stop (while>0 (a,i,I)))),b8) & b9 is_FinSequence_on Comput ((ProgramPart ((Initialize mm) +* (stop (while>0 (a,i,I))))),((Initialize mm) +* (stop (while>0 (a,i,I)))),b8),m & len b9 = n & f4,b9 are_fiberwise_equipotent & b9 is_non_decreasing_on b5,b7 & ( for j being Element of NAT st b5 < b7 & ( ( 1 <= b10 & b10 < b5 ) or ( b7 < b10 & b10 <= n ) ) holds
b9 . b10 = mm . (intpos (m + b10)) ) & ( for j being Element of NAT st b5 >= b7 & 1 <= b10 & b10 <= n holds
b9 . b10 = mm . (intpos (m + b10)) ) & ( for j being Element of NAT st 1 <= b10 & b10 < (2 * j) + 1 holds
(Comput ((ProgramPart ((Initialize mm) +* (stop (while>0 (a,i,I))))),((Initialize mm) +* (stop (while>0 (a,i,I)))),b8)) . (intpos ((m + n) + b10)) = mm . (intpos ((m + n) + b10)) ) & (Comput ((ProgramPart ((Initialize mm) +* (stop (while>0 (a,i,I))))),((Initialize mm) +* (stop (while>0 (a,i,I)))),b8)) . (DataLoc (c,i)) = (mm . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize mm) +* (stop (while>0 (a,i,I))))),((Initialize mm) +* (stop (while>0 (a,i,I)))),b8)) . a = c )

set m1 = (LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2;
set t1 = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2));
A47: I is_halting_on t by A12, A37, A38, A39, A40, A41, A42;
y1 - 1 >= 0 by A40, A46, XREAL_1:49, XREAL_1:50;
then reconsider y0 = y1 - 1 as Element of NAT by INT_1:16;
set jj = (2 * k1) + 1;
A48: (yn - y1) - 1 <= (k + 1) - 1 by A43, XREAL_1:11;
A49: yn <= y1 + (k + 1) by A43, XREAL_1:22;
consider f2 being FinSequence of INT such that
A50: len f2 = n and
A51: for i being Element of NAT st 1 <= i & i <= len f2 holds
f2 . i = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + i)) by SCPISORT:2;
A52: f2 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)),m by A51, SCPISORT:def 1;
set It = IExec (I,t);
A53: ( y1 < yn implies ( (IExec (I,t)) . (DataLoc (c,i)) = (2 * k1) + 3 & ( for j being Element of NAT st ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
(IExec (I,t)) . (intpos (m + j)) = t . (intpos (m + j)) ) & ex ym being Element of NAT st
( y1 <= ym & ym <= yn & m + y1 = (IExec (I,t)) . (intpos k2) & (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) & (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) & m + yn = (IExec (I,t)) . (intpos (k2 + 3)) & ( for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) ) & ( for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) ) ) ) ) by A12, A37, A38, A39, A40, A41, A42;
then consider ym being Element of NAT such that
A54: y1 <= ym and
A55: ym <= yn and
A56: m + y1 = (IExec (I,t)) . (intpos k2) and
A57: (m + ym) - 1 = (IExec (I,t)) . (intpos (k2 + 1)) and
A58: (m + ym) + 1 = (IExec (I,t)) . (intpos (k2 + 2)) and
A59: m + yn = (IExec (I,t)) . (intpos (k2 + 3)) and
A60: for j being Element of NAT st y1 <= j & j < ym holds
(IExec (I,t)) . (intpos (m + j)) <= (IExec (I,t)) . (intpos (m + ym)) and
A61: for j being Element of NAT st ym < j & j <= yn holds
(IExec (I,t)) . (intpos (m + j)) >= (IExec (I,t)) . (intpos (m + ym)) by A46, XREAL_1:49;
A62: I is_closed_on t by A12, A37, A38, A39, A40, A41, A42;
then A63: DataPart (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) = DataPart (IExec (I,t)) by A37, A38, A47, Th2;
then A64: (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (DataLoc (c,i)) = (2 * k1) + 3 by A46, A53, SCMPDS_4:23, XREAL_1:49;
A65: ym >= 1 by A40, A46, A54, XREAL_1:49, XXREAL_0:2;
then reconsider yc = ym - 1 as Element of NAT by INT_1:16, XREAL_1:50;
A66: yc <= yn by A55, XREAL_1:148, XXREAL_0:2;
then A67: yc <= n by A40, A46, XREAL_1:49, XXREAL_0:2;
A68: (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (DataLoc (c,i)) = (2 * (k1 + 1)) + 1 by A46, A53, A63, SCMPDS_4:23, XREAL_1:49;
(IExec (I,t)) . a = t . a by A12, A37, A38, A39, A40, A41, A42;
then A69: (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . a = c by A37, A63, SCMPDS_4:23;
set k3 = ((m + n) + (2 * (k1 + 1))) + 1;
set yd = ym + 1;
A70: ym + 1 > ym by XREAL_1:31;
then A71: ym + 1 >= y1 by A54, XXREAL_0:2;
then A72: ym + 1 >= 1 by A40, A46, XREAL_1:49, XXREAL_0:2;
A73: (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos ((((m + n) + (2 * (k1 + 1))) + 1) + 1)) = m + yn by A39, A63, A59, SCMPDS_4:23;
ym + (1 + k) >= y1 + (1 + k) by A54, XREAL_1:8;
then yn <= (ym + 1) + k by A49, XXREAL_0:2;
then A74: yn - (ym + 1) <= k by XREAL_1:22;
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (((m + n) + (2 * (k1 + 1))) + 1)) = m + (ym + 1) by A39, A63, A58, SCMPDS_4:23;
then consider kl being Element of NAT , f3 being FinSequence of INT such that
A75: (Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl) and
A76: f3 is_FinSequence_on Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl),m and
A77: len f3 = n and
A78: f2,f3 are_fiberwise_equipotent and
A79: f3 is_non_decreasing_on ym + 1,yn and
A80: for j being Element of NAT st ym + 1 < yn & ( ( 1 <= j & j < ym + 1 ) or ( yn < j & j <= n ) ) holds
f3 . j = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + j)) and
A81: for j being Element of NAT st ym + 1 >= yn & 1 <= j & j <= n holds
f3 . j = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + j)) and
A82: for j being Element of NAT st 1 <= j & j < (2 * (k1 + 1)) + 1 holds
(Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos ((m + n) + j)) = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos ((m + n) + j)) and
A83: (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (DataLoc (c,i)) = ((Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (DataLoc (c,i))) - 2 and
A84: (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . a = c by A36, A40, A46, A69, A68, A72, A73, A74, A50, A52, XREAL_1:49;
TT: ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I)))) = ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))) by A75, AMI_1:123;
set t2 = Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl);
A85: (2 * k1) + 3 = (2 * (k1 + 1)) + 1 ;
then (2 * k1) + 1 < (2 * (k1 + 1)) + 1 by XREAL_1:8;
then A86: (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos k2) = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos ((m + n) + ((2 * k1) + 1))) by A39, A82, NAT_1:11
.= m + y1 by A39, A63, A56, SCMPDS_4:23 ;
A87: ym <= n by A40, A46, A55, XREAL_1:49, XXREAL_0:2;
A88: now
per cases ( ym + 1 < yn or ym + 1 >= yn ) ;
suppose ym + 1 < yn ; :: thesis: f3 . ym = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + ym))
hence f3 . ym = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + ym)) by A70, A80, A65; :: thesis: verum
end;
suppose ym + 1 >= yn ; :: thesis: f3 . ym = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + ym))
hence f3 . ym = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + ym)) by A81, A65, A87; :: thesis: verum
end;
end;
end;
A89: now
let i be Element of NAT ; :: thesis: ( 1 <= i & i <= ym implies f3 . i = f2 . i )
assume that
A90: 1 <= i and
A91: i <= ym ; :: thesis: f3 . i = f2 . i
A92: i <= n by A87, A91, XXREAL_0:2;
A93: i < ym + 1 by A70, A91, XXREAL_0:2;
now
per cases ( ym + 1 < yn or ym + 1 >= yn ) ;
suppose ym + 1 < yn ; :: thesis: f3 . i = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + i))
hence f3 . i = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + i)) by A80, A90, A93; :: thesis: verum
end;
suppose ym + 1 >= yn ; :: thesis: f3 . i = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + i))
hence f3 . i = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + i)) by A81, A90, A92; :: thesis: verum
end;
end;
end;
hence f3 . i = f2 . i by A50, A51, A90, A92; :: thesis: verum
end;
yc <= yn - 1 by A55, XREAL_1:11;
then yc - y1 <= (yn - 1) - y1 by XREAL_1:11;
then A94: yc - y1 <= k by A48, XXREAL_0:2;
A95: yc < ym + 1 by A70, XREAL_1:148, XXREAL_0:2;
set jj = (2 * k1) + 2;
(2 * k1) + 2 >= 2 by NAT_1:11;
then A96: (2 * k1) + 2 >= 1 by XXREAL_0:2;
(2 * k1) + 2 < (2 * (k1 + 1)) + 1 by A85, XREAL_1:8;
then (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (k2 + 1)) = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos ((m + n) + ((2 * k1) + 2))) by A39, A82, A96
.= m + yc by A39, A63, A57, SCMPDS_4:23 ;
then consider km being Element of NAT , f4 being FinSequence of INT such that
A97: (Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I)))),km))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I)))),km) and
A98: f4 is_FinSequence_on Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I)))),km),m and
A99: len f4 = n and
A100: f3,f4 are_fiberwise_equipotent and
A101: f4 is_non_decreasing_on y1,yc and
A102: for j being Element of NAT st y1 < yc & ( ( 1 <= j & j < y1 ) or ( yc < j & j <= n ) ) holds
f4 . j = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + j)) and
A103: for j being Element of NAT st y1 >= yc & 1 <= j & j <= n holds
f4 . j = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + j)) and
A104: for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I)))),km)) . (intpos ((m + n) + j)) = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos ((m + n) + j)) and
A105: (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I)))),km)) . (DataLoc (c,i)) = ((Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (DataLoc (c,i))) - 2 and
A106: (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I)))),km)) . a = c by A36, A39, A40, A46, A64, A76, A77, A83, A84, A67, A86, A94, XREAL_1:49;
A107: now
let i be Element of NAT ; :: thesis: ( yc < i & i <= len f4 implies f4 . i = f3 . i )
assume that
A108: yc < i and
A109: i <= len f4 ; :: thesis: f4 . i = f3 . i
A110: 1 + 0 <= i by A108, INT_1:20;
now
per cases ( y1 < yc or y1 >= yc ) ;
suppose y1 < yc ; :: thesis: f4 . i = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + i))
hence f4 . i = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + i)) by A99, A102, A108, A109; :: thesis: verum
end;
suppose y1 >= yc ; :: thesis: f4 . i = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + i))
hence f4 . i = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + i)) by A99, A103, A109, A110; :: thesis: verum
end;
end;
end;
hence f4 . i = f3 . i by A76, A77, A99, A109, A110, SCPISORT:def 1; :: thesis: verum
end;
then f4 . ym = f3 . ym by A99, A87, XREAL_1:148;
then A111: f4 . ym = (IExec (I,t)) . (intpos (m + ym)) by A63, A88, SCMPDS_4:23;
A112: now
let i be Element of NAT ; :: thesis: ( yn < i & i <= len f3 implies f3 . i = f2 . i )
assume that
A113: yn < i and
A114: i <= len f3 ; :: thesis: f3 . i = f2 . i
A115: 1 + 0 <= i by A113, INT_1:20;
now
per cases ( ym + 1 < yn or ym + 1 >= yn ) ;
suppose ym + 1 < yn ; :: thesis: f3 . i = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + i))
hence f3 . i = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + i)) by A77, A80, A113, A114; :: thesis: verum
end;
suppose ym + 1 >= yn ; :: thesis: f3 . i = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + i))
hence f3 . i = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + i)) by A77, A81, A114, A115; :: thesis: verum
end;
end;
end;
hence f3 . i = f2 . i by A50, A51, A77, A114, A115; :: thesis: verum
end;
A116: now
let i be Element of NAT ; :: thesis: ( ym < i & i <= yn implies f4 . ym <= f4 . i )
assume that
A117: ym < i and
A118: i <= yn ; :: thesis: f4 . ym <= f4 . i
consider j being Element of NAT such that
A119: ym < j and
A120: j <= yn and
A121: f3 . i = f2 . j by A40, A46, A55, A77, A78, A89, A112, A117, A118, RFINSEQ:45, XREAL_1:49;
A122: yc < i by A117, XREAL_1:148, XXREAL_0:2;
A123: 1 <= j by A65, A119, XXREAL_0:2;
A124: j <= len f2 by A40, A46, A50, A120, XREAL_1:49, XXREAL_0:2;
i <= len f4 by A40, A46, A99, A118, XREAL_1:49, XXREAL_0:2;
then f4 . i = f2 . j by A107, A122, A121
.= (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + j)) by A51, A123, A124
.= (IExec (I,t)) . (intpos (m + j)) by A63, SCMPDS_4:23 ;
hence f4 . ym <= f4 . i by A61, A111, A119, A120; :: thesis: verum
end;
A125: yn > y1 by A46, XREAL_1:49;
A126: now
let i be Element of NAT ; :: thesis: ( 1 <= i & i <= y0 implies f4 . i = f3 . i )
assume that
A127: 1 <= i and
A128: i <= y0 ; :: thesis: f4 . i = f3 . i
i - 1 < y1 - 1 by A128, XREAL_1:148, XXREAL_0:2;
then A129: i < y1 by XREAL_1:11;
y1 <= n by A40, A125, XXREAL_0:2;
then A130: i <= n by A129, XXREAL_0:2;
now
per cases ( y1 < yc or y1 >= yc ) ;
suppose y1 < yc ; :: thesis: f4 . i = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + i))
hence f4 . i = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + i)) by A102, A127, A129; :: thesis: verum
end;
suppose y1 >= yc ; :: thesis: f4 . i = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + i))
hence f4 . i = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + i)) by A103, A127, A130; :: thesis: verum
end;
end;
end;
hence f4 . i = f3 . i by A76, A77, A127, A130, SCPISORT:def 1; :: thesis: verum
end;
A131: y0 <= yc by A54, XREAL_1:11;
A132: now
let i be Element of NAT ; :: thesis: ( y1 <= i & i < ym implies f4 . i <= f4 . ym )
assume that
A133: y1 <= i and
A134: i < ym ; :: thesis: f4 . i <= f4 . ym
i + 1 <= ym by A134, INT_1:20;
then A135: i <= yc by XREAL_1:21;
y0 < i by A133, XREAL_1:148, XXREAL_0:2;
then consider j being Element of NAT such that
A136: y0 < j and
A137: j <= yc and
A138: f4 . i = f3 . j by A67, A99, A100, A131, A126, A107, A135, RFINSEQ:45;
A139: 1 + 0 <= j by A136, INT_1:20;
A140: j <= n by A67, A137, XXREAL_0:2;
A141: j < ym + 1 by A95, A137, XXREAL_0:2;
now
per cases ( ym + 1 < yn or ym + 1 >= yn ) ;
suppose ym + 1 < yn ; :: thesis: f3 . j = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + j))
hence f3 . j = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + j)) by A80, A139, A141; :: thesis: verum
end;
suppose ym + 1 >= yn ; :: thesis: f3 . j = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + j))
hence f3 . j = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + j)) by A81, A139, A140; :: thesis: verum
end;
end;
end;
then A142: f4 . i = (IExec (I,t)) . (intpos (m + j)) by A63, A138, SCMPDS_4:23;
A143: j < ym by A137, XREAL_1:148, XXREAL_0:2;
(y1 - 1) + 1 <= j by A136, INT_1:20;
hence f4 . i <= f4 . ym by A60, A111, A143, A142; :: thesis: verum
end;
take mm = ((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2) + (kl + km); :: thesis: ex f4 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm) & f4 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm),m & len f4 = n & f1,f4 are_fiberwise_equipotent & f4 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . a = c )

set tm = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm);
take f4 = f4; :: thesis: ( (Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm) & f4 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm),m & len f4 = n & f1,f4 are_fiberwise_equipotent & f4 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . a = c )

t: ProgramPart (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) = ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I)))) by AMI_1:123;
(Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)) by A37, A38, A62, A47, Th2;
then A144: Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm) = Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),(kl + km)) by t, EXTPRO_1:5
.= Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl))) +* (stop (while>0 (a,i,I)))),km) by A75, TT, EXTPRO_1:5 ;
hence (Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm) by A97; :: thesis: ( f4 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm),m & len f4 = n & f1,f4 are_fiberwise_equipotent & f4 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . a = c )

thus f4 is_FinSequence_on Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm),m by A98, A144; :: thesis: ( len f4 = n & f1,f4 are_fiberwise_equipotent & f4 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . a = c )

thus len f4 = n by A99; :: thesis: ( f1,f4 are_fiberwise_equipotent & f4 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . a = c )

now
let i be Element of NAT ; :: thesis: ( 1 <= i & i <= len f2 implies f2 . i = (IExec (I,t)) . (intpos (m + i)) )
assume that
A145: 1 <= i and
A146: i <= len f2 ; :: thesis: f2 . i = (IExec (I,t)) . (intpos (m + i))
thus f2 . i = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + i)) by A51, A145, A146
.= (IExec (I,t)) . (intpos (m + i)) by A63, SCMPDS_4:23 ; :: thesis: verum
end;
then f2 is_FinSequence_on IExec (I,t),m by SCPISORT:def 1;
then f1,f2 are_fiberwise_equipotent by A12, A37, A38, A39, A40, A41, A42, A44, A45, A50;
then f1,f3 are_fiberwise_equipotent by A78, CLASSES1:84;
hence f1,f4 are_fiberwise_equipotent by A100, CLASSES1:84; :: thesis: ( f4 is_non_decreasing_on y1,yn & ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . a = c )

A147: now
let j be Element of NAT ; :: thesis: ( ym + 1 <= j & j <= yn implies f4 . j = f3 . j )
assume that
A148: ym + 1 <= j and
A149: j <= yn ; :: thesis: f4 . j = f3 . j
A150: 1 <= j by A72, A148, XXREAL_0:2;
A151: j <= n by A40, A46, A149, XREAL_1:49, XXREAL_0:2;
A152: yc < j by A95, A148, XXREAL_0:2;
now
per cases ( y1 < yc or y1 >= yc ) ;
suppose y1 < yc ; :: thesis: f4 . j = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + j))
hence f4 . j = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + j)) by A102, A151, A152; :: thesis: verum
end;
suppose y1 >= yc ; :: thesis: f4 . j = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + j))
hence f4 . j = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + j)) by A103, A151, A150; :: thesis: verum
end;
end;
end;
hence f4 . j = f3 . j by A76, A77, A151, A150, SCPISORT:def 1; :: thesis: verum
end;
now
let i, j be Element of NAT ; :: thesis: ( ym + 1 <= i & i <= j & j <= yn implies f4 . i <= f4 . j )
assume that
A153: ym + 1 <= i and
A154: i <= j and
A155: j <= yn ; :: thesis: f4 . i <= f4 . j
ym + 1 <= j by A153, A154, XXREAL_0:2;
then A156: f4 . j = f3 . j by A147, A155;
i <= yn by A154, A155, XXREAL_0:2;
then f4 . i = f3 . i by A147, A153;
hence f4 . i <= f4 . j by A79, A153, A154, A155, A156, GRAPH_2:def 13; :: thesis: verum
end;
then f4 is_non_decreasing_on ym + 1,yn by GRAPH_2:def 13;
hence f4 is_non_decreasing_on y1,yn by A101, A132, A116, Th8; :: thesis: ( ( for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . a = c )

thus for j being Element of NAT st y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) holds
f4 . j = t . (intpos (m + j)) :: thesis: ( ( for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f4 . j = t . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . a = c )
proof
let j be Element of NAT ; :: thesis: ( y1 < yn & ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) implies f4 . j = t . (intpos (m + j)) )
assume that
A157: y1 < yn and
A158: ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) ; :: thesis: f4 . j = t . (intpos (m + j))
A159: ( 1 <= j & j <= n )
proof
per cases ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) by A158;
suppose A160: ( 1 <= j & j < y1 ) ; :: thesis: ( 1 <= j & j <= n )
end;
suppose A161: ( yn < j & j <= n ) ; :: thesis: ( 1 <= j & j <= n )
end;
end;
end;
A162: ( ( 1 <= j & j < ym + 1 ) or ( yn < j & j <= n ) )
proof
per cases ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) by A158;
suppose ( 1 <= j & j < y1 ) ; :: thesis: ( ( 1 <= j & j < ym + 1 ) or ( yn < j & j <= n ) )
hence ( ( 1 <= j & j < ym + 1 ) or ( yn < j & j <= n ) ) by A71, XXREAL_0:2; :: thesis: verum
end;
suppose ( yn < j & j <= n ) ; :: thesis: ( ( 1 <= j & j < ym + 1 ) or ( yn < j & j <= n ) )
hence ( ( 1 <= j & j < ym + 1 ) or ( yn < j & j <= n ) ) ; :: thesis: verum
end;
end;
end;
A163: now
per cases ( ym + 1 < yn or ym + 1 >= yn ) ;
suppose ym + 1 < yn ; :: thesis: f3 . j = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + j))
hence f3 . j = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + j)) by A80, A162; :: thesis: verum
end;
suppose ym + 1 >= yn ; :: thesis: f3 . j = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + j))
hence f3 . j = (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos (m + j)) by A81, A159; :: thesis: verum
end;
end;
end;
A164: ( ( 1 <= j & j < y1 ) or ( yc < j & j <= n ) )
proof
per cases ( ( 1 <= j & j < y1 ) or ( yn < j & j <= n ) ) by A158;
suppose ( 1 <= j & j < y1 ) ; :: thesis: ( ( 1 <= j & j < y1 ) or ( yc < j & j <= n ) )
hence ( ( 1 <= j & j < y1 ) or ( yc < j & j <= n ) ) ; :: thesis: verum
end;
suppose ( yn < j & j <= n ) ; :: thesis: ( ( 1 <= j & j < y1 ) or ( yc < j & j <= n ) )
hence ( ( 1 <= j & j < y1 ) or ( yc < j & j <= n ) ) by A66, XXREAL_0:2; :: thesis: verum
end;
end;
end;
now
per cases ( y1 < yc or y1 >= yc ) ;
suppose y1 < yc ; :: thesis: f4 . j = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + j))
hence f4 . j = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + j)) by A102, A164; :: thesis: verum
end;
suppose y1 >= yc ; :: thesis: f4 . j = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + j))
hence f4 . j = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos (m + j)) by A103, A159; :: thesis: verum
end;
end;
end;
hence f4 . j = f3 . j by A76, A77, A159, SCPISORT:def 1
.= (IExec (I,t)) . (intpos (m + j)) by A63, A163, SCMPDS_4:23
.= t . (intpos (m + j)) by A12, A37, A38, A39, A40, A41, A42, A157, A158 ;
:: thesis: verum
end;
thus for j being Element of NAT st y1 >= yn & 1 <= j & j <= n holds
f4 . j = t . (intpos (m + j)) by A46, XREAL_1:49; :: thesis: ( ( for j being Element of NAT st 1 <= j & j < (2 * k1) + 1 holds
(Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . a = c )

hereby :: thesis: ( (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . a = c )
let j be Element of NAT ; :: thesis: ( 1 <= j & j < (2 * k1) + 1 implies (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j)) )
assume that
A165: 1 <= j and
A166: j < (2 * k1) + 1 ; :: thesis: (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (intpos ((m + n) + j)) = t . (intpos ((m + n) + j))
(2 * k1) + 1 < (2 * (k1 + 1)) + 1 by A85, XREAL_1:8;
then A167: j < (2 * (k1 + 1)) + 1 by A166, XXREAL_0:2;
thus (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (intpos ((m + n) + j)) = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2)))) +* (stop (while>0 (a,i,I)))),kl)) . (intpos ((m + n) + j)) by A104, A144, A165, A166
.= (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),((LifeSpan ((ProgramPart ((Initialize t) +* (stop I))),((Initialize t) +* (stop I)))) + 2))) . (intpos ((m + n) + j)) by A82, A165, A167
.= (IExec (I,t)) . (intpos ((m + n) + j)) by A63, SCMPDS_4:23
.= t . (intpos ((m + n) + j)) by A12, A37, A38, A39, A40, A41, A42, A165, A166 ; :: thesis: verum
end;
thus (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . (DataLoc (c,i)) = (t . (DataLoc (c,i))) - 2 by A38, A64, A83, A105, A144; :: thesis: (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . a = c
thus (Comput ((ProgramPart ((Initialize t) +* (stop (while>0 (a,i,I))))),((Initialize t) +* (stop (while>0 (a,i,I)))),mm)) . a = c by A106, A144; :: thesis: verum
end;
end;
end;
hence S1[k + 1] ; :: thesis: verum
end;
A168: for k being Element of NAT holds S1[k] from NAT_1:sch 1(A13, A35);
ex k being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k) & f2 is_FinSequence_on Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k),m & len f2 = n & f,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on 1,n & ( for j being Element of NAT st 1 < n & ( ( 1 <= j & j < 1 ) or ( n < j & j <= n ) ) holds
f2 . j = s . (intpos (m + j)) ) & ( for j being Element of NAT st 1 >= n & 1 <= j & j <= n holds
f2 . j = s . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * 0) + 1 holds
(Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = s . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (s . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . a = c )
proof
per cases ( n - 1 <= 0 or n - 1 > 0 ) ;
suppose n - 1 <= 0 ; :: thesis: ex k being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k) & f2 is_FinSequence_on Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k),m & len f2 = n & f,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on 1,n & ( for j being Element of NAT st 1 < n & ( ( 1 <= j & j < 1 ) or ( n < j & j <= n ) ) holds
f2 . j = s . (intpos (m + j)) ) & ( for j being Element of NAT st 1 >= n & 1 <= j & j <= n holds
f2 . j = s . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * 0) + 1 holds
(Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = s . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (s . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . a = c )

hence ex k being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k) & f2 is_FinSequence_on Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k),m & len f2 = n & f,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on 1,n & ( for j being Element of NAT st 1 < n & ( ( 1 <= j & j < 1 ) or ( n < j & j <= n ) ) holds
f2 . j = s . (intpos (m + j)) ) & ( for j being Element of NAT st 1 >= n & 1 <= j & j <= n holds
f2 . j = s . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * 0) + 1 holds
(Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = s . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (s . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . a = c ) by A2, A3, A5, A7, A9, A10, A13, A11; :: thesis: verum
end;
suppose n - 1 > 0 ; :: thesis: ex k being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k) & f2 is_FinSequence_on Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k),m & len f2 = n & f,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on 1,n & ( for j being Element of NAT st 1 < n & ( ( 1 <= j & j < 1 ) or ( n < j & j <= n ) ) holds
f2 . j = s . (intpos (m + j)) ) & ( for j being Element of NAT st 1 >= n & 1 <= j & j <= n holds
f2 . j = s . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * 0) + 1 holds
(Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = s . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (s . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . a = c )

then reconsider nn = n - 1 as Element of NAT by INT_1:16;
S1[nn] by A168;
hence ex k being Element of NAT ex f2 being FinSequence of INT st
( (Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k) & f2 is_FinSequence_on Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k),m & len f2 = n & f,f2 are_fiberwise_equipotent & f2 is_non_decreasing_on 1,n & ( for j being Element of NAT st 1 < n & ( ( 1 <= j & j < 1 ) or ( n < j & j <= n ) ) holds
f2 . j = s . (intpos (m + j)) ) & ( for j being Element of NAT st 1 >= n & 1 <= j & j <= n holds
f2 . j = s . (intpos (m + j)) ) & ( for j being Element of NAT st 1 <= j & j < (2 * 0) + 1 holds
(Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . (intpos ((m + n) + j)) = s . (intpos ((m + n) + j)) ) & (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (s . (DataLoc (c,i))) - 2 & (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . a = c ) by A2, A3, A5, A7, A9, A10, A11; :: thesis: verum
end;
end;
end;
then consider k being Element of NAT , f2 being FinSequence of INT such that
A169: (Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k) and
A170: f2 is_FinSequence_on Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k),m and
A171: len f2 = n and
A172: f,f2 are_fiberwise_equipotent and
A173: f2 is_non_decreasing_on 1,n and
A174: (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . (DataLoc (c,i)) = (s . (DataLoc (c,i))) - 2 and
A175: (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) . a = c ;
set sk = Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k);
set s1 = (Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)));
set s2 = Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),1);
I1: (Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) = (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k)) +* (Initialize (stop (while>0 (a,i,I)))) by COMPOS_1:125;
A176: IC ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))) = 0 by SCMPDS_6:21;
set i1 = (a,i) <=0_goto ((card I) + 2);
set i2 = goto (- ((card I) + 1));
A177: card (while>0 (a,i,I)) = (card I) + 2 by SCMPDS_8:17;
then A178: (card I) + 2 in dom (stop (while>0 (a,i,I))) by SCMPDS_6:25;
A179: dom g = Seg n by A4, FINSEQ_1:def 3;
Initialize (stop (while>0 (a,i,I))) c= (Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))) by I1, FUNCT_4:26;
then stop (while>0 (a,i,I)) c= Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),1) by AMI_1:81, COMPOS_1:132;
then A180: (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),1)) . ((card I) + 2) = (stop (while>0 (a,i,I))) . ((card I) + 2) by A178, GRFUNC_1:8
.= halt SCMPDS by A177, SCMPDS_6:25 ;
B181: while>0 (a,i,I) = ((a,i) <=0_goto ((card I) + 2)) ';' (I ';' (goto (- ((card I) + 1)))) by Lm2;
A182: Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),(0 + 1)) = Following ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),(Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),0))) by EXTPRO_1:4
.= Following ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))) by EXTPRO_1:3
.= Exec (((a,i) <=0_goto ((card I) + 2)),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))) by B181, I1, SCMPDS_6:22 ;
I4: s +* (Initialize (stop (while>0 (a,i,I)))) = (Initialize s) +* (stop (while>0 (a,i,I))) by COMPOS_1:125;
IC (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),1)) = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),1)) . (IC SCMPDS)
.= ICplusConst (((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),((card I) + 2)) by A7, A169, A174, A175, A182, SCMPDS_2:68
.= 0 + ((card I) + 2) by A176, SCMPDS_6:23 ;
then A183: CurInstr ((ProgramPart (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),1))),(Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),1))) = halt SCMPDS by A180, COMPOS_1:38;
ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),(s +* (Initialize (stop (while>0 (a,i,I))))),k))) +* (stop (while>0 (a,i,I)))) = ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I)))) by A169, I4, AMI_1:123;
then A184: Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),1) = Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),(k + 1)) by A169, I4, EXTPRO_1:5;
then TX: ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I)))) = ProgramPart (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),1)) by AMI_1:123;
then A185: ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I)))) halts_on (Initialize s) +* (stop (while>0 (a,i,I))) by A183, A184, EXTPRO_1:30;
hence while>0 (a,i,I) is_halting_on s by SCMPDS_6:def 3; :: thesis: ( f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n )
A186: Result ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I))))) = Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),1) by A183, A184, A185, TX, EXTPRO_1:def 8;
now
let i be Nat; :: thesis: ( i in dom g implies g . i = f2 . i )
reconsider a = i as Element of NAT by ORDINAL1:def 13;
set xi = intpos (m + a);
A187: dom (ProgramPart s) = NAT by COMPOS_1:34;
A188: not intpos (m + a) in dom (s | NAT) by A187, SCMPDS_2:53;
assume A189: i in dom g ; :: thesis: g . i = f2 . i
then A190: 1 <= i by A179, FINSEQ_1:3;
A191: i <= n by A179, A189, FINSEQ_1:3;
IExec ((while>0 (a,i,I)),s) = (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),1)) +* (s | NAT) by A186;
hence g . i = ((Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),1)) +* (s | NAT)) . (intpos (m + a)) by A4, A6, A190, A191, SCPISORT:def 1
.= (Comput ((ProgramPart ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I))))),((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))),1)) . (intpos (m + a)) by A188, FUNCT_4:12
.= ((Initialize (Comput ((ProgramPart ((Initialize s) +* (stop (while>0 (a,i,I))))),((Initialize s) +* (stop (while>0 (a,i,I)))),k))) +* (stop (while>0 (a,i,I)))) . (intpos (m + a)) by A182, SCMPDS_2:68
.= f2 . i by A169, A170, A171, A190, A191, SCPISORT:def 1 ;
:: thesis: verum
end;
hence ( f,g are_fiberwise_equipotent & g is_non_decreasing_on 1,n ) by A4, A171, A172, A173, FINSEQ_2:10; :: thesis: verum