let P be Instruction-Sequence of SCMPDS; :: thesis: for s being 0 -started State of SCMPDS
for I being halt-free shiftable Program of SCMPDS
for a, b, c being Int_position
for i, d being Integer st s . a = d & s . b > 0 & s . c > 0 & s . (DataLoc (d,i)) = (s . b) - (s . c) & ( for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st t . b > 0 & t . c > 0 & t . a = d & t . (DataLoc (d,i)) = (t . b) - (t . c) & t . b <> t . c holds
( (IExec (I,Q,t)) . a = d & I is_closed_on t,Q & I is_halting_on t,Q & ( t . b > t . c implies ( (IExec (I,Q,t)) . b = (t . b) - (t . c) & (IExec (I,Q,t)) . c = t . c ) ) & ( t . b <= t . c implies ( (IExec (I,Q,t)) . c = (t . c) - (t . b) & (IExec (I,Q,t)) . b = t . b ) ) & (IExec (I,Q,t)) . (DataLoc (d,i)) = ((IExec (I,Q,t)) . b) - ((IExec (I,Q,t)) . c) ) ) holds
( (IExec ((while<>0 (a,i,I)),P,s)) . b = (s . b) gcd (s . c) & (IExec ((while<>0 (a,i,I)),P,s)) . c = (s . b) gcd (s . c) )

let s be 0 -started State of SCMPDS; :: thesis: for I being halt-free shiftable Program of SCMPDS
for a, b, c being Int_position
for i, d being Integer st s . a = d & s . b > 0 & s . c > 0 & s . (DataLoc (d,i)) = (s . b) - (s . c) & ( for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st t . b > 0 & t . c > 0 & t . a = d & t . (DataLoc (d,i)) = (t . b) - (t . c) & t . b <> t . c holds
( (IExec (I,Q,t)) . a = d & I is_closed_on t,Q & I is_halting_on t,Q & ( t . b > t . c implies ( (IExec (I,Q,t)) . b = (t . b) - (t . c) & (IExec (I,Q,t)) . c = t . c ) ) & ( t . b <= t . c implies ( (IExec (I,Q,t)) . c = (t . c) - (t . b) & (IExec (I,Q,t)) . b = t . b ) ) & (IExec (I,Q,t)) . (DataLoc (d,i)) = ((IExec (I,Q,t)) . b) - ((IExec (I,Q,t)) . c) ) ) holds
( (IExec ((while<>0 (a,i,I)),P,s)) . b = (s . b) gcd (s . c) & (IExec ((while<>0 (a,i,I)),P,s)) . c = (s . b) gcd (s . c) )

let I be halt-free shiftable Program of SCMPDS; :: thesis: for a, b, c being Int_position
for i, d being Integer st s . a = d & s . b > 0 & s . c > 0 & s . (DataLoc (d,i)) = (s . b) - (s . c) & ( for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st t . b > 0 & t . c > 0 & t . a = d & t . (DataLoc (d,i)) = (t . b) - (t . c) & t . b <> t . c holds
( (IExec (I,Q,t)) . a = d & I is_closed_on t,Q & I is_halting_on t,Q & ( t . b > t . c implies ( (IExec (I,Q,t)) . b = (t . b) - (t . c) & (IExec (I,Q,t)) . c = t . c ) ) & ( t . b <= t . c implies ( (IExec (I,Q,t)) . c = (t . c) - (t . b) & (IExec (I,Q,t)) . b = t . b ) ) & (IExec (I,Q,t)) . (DataLoc (d,i)) = ((IExec (I,Q,t)) . b) - ((IExec (I,Q,t)) . c) ) ) holds
( (IExec ((while<>0 (a,i,I)),P,s)) . b = (s . b) gcd (s . c) & (IExec ((while<>0 (a,i,I)),P,s)) . c = (s . b) gcd (s . c) )

let a, b, c be Int_position ; :: thesis: for i, d being Integer st s . a = d & s . b > 0 & s . c > 0 & s . (DataLoc (d,i)) = (s . b) - (s . c) & ( for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st t . b > 0 & t . c > 0 & t . a = d & t . (DataLoc (d,i)) = (t . b) - (t . c) & t . b <> t . c holds
( (IExec (I,Q,t)) . a = d & I is_closed_on t,Q & I is_halting_on t,Q & ( t . b > t . c implies ( (IExec (I,Q,t)) . b = (t . b) - (t . c) & (IExec (I,Q,t)) . c = t . c ) ) & ( t . b <= t . c implies ( (IExec (I,Q,t)) . c = (t . c) - (t . b) & (IExec (I,Q,t)) . b = t . b ) ) & (IExec (I,Q,t)) . (DataLoc (d,i)) = ((IExec (I,Q,t)) . b) - ((IExec (I,Q,t)) . c) ) ) holds
( (IExec ((while<>0 (a,i,I)),P,s)) . b = (s . b) gcd (s . c) & (IExec ((while<>0 (a,i,I)),P,s)) . c = (s . b) gcd (s . c) )

let i, d be Integer; :: thesis: ( s . a = d & s . b > 0 & s . c > 0 & s . (DataLoc (d,i)) = (s . b) - (s . c) & ( for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st t . b > 0 & t . c > 0 & t . a = d & t . (DataLoc (d,i)) = (t . b) - (t . c) & t . b <> t . c holds
( (IExec (I,Q,t)) . a = d & I is_closed_on t,Q & I is_halting_on t,Q & ( t . b > t . c implies ( (IExec (I,Q,t)) . b = (t . b) - (t . c) & (IExec (I,Q,t)) . c = t . c ) ) & ( t . b <= t . c implies ( (IExec (I,Q,t)) . c = (t . c) - (t . b) & (IExec (I,Q,t)) . b = t . b ) ) & (IExec (I,Q,t)) . (DataLoc (d,i)) = ((IExec (I,Q,t)) . b) - ((IExec (I,Q,t)) . c) ) ) implies ( (IExec ((while<>0 (a,i,I)),P,s)) . b = (s . b) gcd (s . c) & (IExec ((while<>0 (a,i,I)),P,s)) . c = (s . b) gcd (s . c) ) )

set ci = DataLoc ((s . a),i);
consider f being Function of (product the Object-Kind of SCMPDS),NAT such that
A2: for s being State of SCMPDS holds
( ( s . b = s . c implies f . s = 0 ) & ( s . b <> s . c implies f . s = max ((abs (s . b)),(abs (s . c))) ) ) by Th6;
deffunc H1( State of SCMPDS) -> Element of NAT = f . $1;
set s1 = IExec ((while<>0 (a,i,I)),P,s);
set ss = IExec ((while<>0 (a,i,I)),P,s);
defpred S1[ set ] means ex t being 0 -started State of SCMPDS st
( t = $1 & t . b > 0 & t . c > 0 & (t . b) gcd (t . c) = (s . b) gcd (s . c) & t . (DataLoc (d,i)) = (t . b) - (t . c) );
assume that
A3: s . a = d and
A4: s . b > 0 and
A5: s . c > 0 and
A6: s . (DataLoc (d,i)) = (s . b) - (s . c) ; :: thesis: ( ex t being 0 -started State of SCMPDS ex Q being Instruction-Sequence of SCMPDS st
( t . b > 0 & t . c > 0 & t . a = d & t . (DataLoc (d,i)) = (t . b) - (t . c) & t . b <> t . c & not ( (IExec (I,Q,t)) . a = d & I is_closed_on t,Q & I is_halting_on t,Q & ( t . b > t . c implies ( (IExec (I,Q,t)) . b = (t . b) - (t . c) & (IExec (I,Q,t)) . c = t . c ) ) & ( t . b <= t . c implies ( (IExec (I,Q,t)) . c = (t . c) - (t . b) & (IExec (I,Q,t)) . b = t . b ) ) & (IExec (I,Q,t)) . (DataLoc (d,i)) = ((IExec (I,Q,t)) . b) - ((IExec (I,Q,t)) . c) ) ) or ( (IExec ((while<>0 (a,i,I)),P,s)) . b = (s . b) gcd (s . c) & (IExec ((while<>0 (a,i,I)),P,s)) . c = (s . b) gcd (s . c) ) )

assume A7: for t being 0 -started State of SCMPDS
for Q being Instruction-Sequence of SCMPDS st t . b > 0 & t . c > 0 & t . a = d & t . (DataLoc (d,i)) = (t . b) - (t . c) & t . b <> t . c holds
( (IExec (I,Q,t)) . a = d & I is_closed_on t,Q & I is_halting_on t,Q & ( t . b > t . c implies ( (IExec (I,Q,t)) . b = (t . b) - (t . c) & (IExec (I,Q,t)) . c = t . c ) ) & ( t . b <= t . c implies ( (IExec (I,Q,t)) . c = (t . c) - (t . b) & (IExec (I,Q,t)) . b = t . b ) ) & (IExec (I,Q,t)) . (DataLoc (d,i)) = ((IExec (I,Q,t)) . b) - ((IExec (I,Q,t)) . c) ) ; :: thesis: ( (IExec ((while<>0 (a,i,I)),P,s)) . b = (s . b) gcd (s . c) & (IExec ((while<>0 (a,i,I)),P,s)) . c = (s . b) gcd (s . c) )
A8: now
let t be 0 -started State of SCMPDS; :: thesis: for Q being Instruction-Sequence of SCMPDS st S1[t] & t . a = s . a & t . (DataLoc ((s . a),i)) <> 0 holds
( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & H1( Initialize (IExec (I,Q,t))) < H1(t) & S1[ Initialize (IExec (I,Q,t))] )

let Q be Instruction-Sequence of SCMPDS; :: thesis: ( S1[t] & t . a = s . a & t . (DataLoc ((s . a),i)) <> 0 implies ( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & H1( Initialize (IExec (I,Q,t))) < H1(t) & S1[ Initialize (IExec (I,Q,t))] ) )
assume that
A9: S1[t] and
A10: t . a = s . a and
A11: t . (DataLoc ((s . a),i)) <> 0 ; :: thesis: ( (IExec (I,Q,t)) . a = t . a & I is_closed_on t,Q & I is_halting_on t,Q & H1( Initialize (IExec (I,Q,t))) < H1(t) & S1[ Initialize (IExec (I,Q,t))] )
set It = IExec (I,Q,t);
set t2 = Initialize (IExec (I,Q,t));
set t1 = t;
set x = (IExec (I,Q,t)) . b;
set y = (IExec (I,Q,t)) . c;
consider v being State of SCMPDS such that
A12: v = t and
A13: v . b > 0 and
A14: v . c > 0 and
A15: (v . b) gcd (v . c) = (s . b) gcd (s . c) and
A16: v . (DataLoc (d,i)) = (v . b) - (v . c) by A9;
A17: t . b > 0 by A12, A13;
A18: t . c > 0 by A12, A14;
A19: t . (DataLoc (d,i)) = (v . b) - (v . c) by A12, A16
.= (t . b) - (v . c) by A12
.= (t . b) - (t . c) by A12 ;
then A20: ( t . b > t . c implies ( (IExec (I,Q,t)) . b = (t . b) - (t . c) & (IExec (I,Q,t)) . c = t . c ) ) by A3, A7, A10, A17, A18;
A21: t . b <> t . c by A3, A11, A19;
hence (IExec (I,Q,t)) . a = t . a by A3, A7, A10, A17, A18, A19; :: thesis: ( I is_closed_on t,Q & I is_halting_on t,Q & H1( Initialize (IExec (I,Q,t))) < H1(t) & S1[ Initialize (IExec (I,Q,t))] )
thus ( I is_closed_on t,Q & I is_halting_on t,Q ) by A3, A7, A10, A17, A18, A19, A21; :: thesis: ( H1( Initialize (IExec (I,Q,t))) < H1(t) & S1[ Initialize (IExec (I,Q,t))] )
A22: ( t . b <= t . c implies ( (IExec (I,Q,t)) . c = (t . c) - (t . b) & (IExec (I,Q,t)) . b = t . b ) ) by A3, A7, A10, A17, A18, A19, A21;
A23: now
per cases ( t . b > t . c or t . b <= t . c ) ;
suppose A24: t . b > t . c ; :: thesis: ( (IExec (I,Q,t)) . b > 0 & (IExec (I,Q,t)) . c > 0 & ((IExec (I,Q,t)) . b) gcd ((IExec (I,Q,t)) . c) = (t . b) gcd (t . c) & max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c)) )
then (t . b) - (t . c) > 0 by XREAL_1:50;
hence (IExec (I,Q,t)) . b > 0 by A3, A7, A10, A17, A18, A19, A24; :: thesis: ( (IExec (I,Q,t)) . c > 0 & ((IExec (I,Q,t)) . b) gcd ((IExec (I,Q,t)) . c) = (t . b) gcd (t . c) & max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c)) )
thus (IExec (I,Q,t)) . c > 0 by A3, A7, A10, A17, A18, A19, A24; :: thesis: ( ((IExec (I,Q,t)) . b) gcd ((IExec (I,Q,t)) . c) = (t . b) gcd (t . c) & max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c)) )
thus ((IExec (I,Q,t)) . b) gcd ((IExec (I,Q,t)) . c) = (t . b) gcd (t . c) by A17, A18, A20, A22, PREPOWER:97; :: thesis: max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c))
A25: (IExec (I,Q,t)) . b = (t . b) - (t . c) by A3, A7, A10, A17, A18, A19, A24;
hereby :: thesis: verum
A26: max ((t . b),(t . c)) = t . b by A24, XXREAL_0:def 10;
per cases ( max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) = (IExec (I,Q,t)) . b or max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) = (IExec (I,Q,t)) . c ) by XXREAL_0:16;
suppose max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) = (IExec (I,Q,t)) . b ; :: thesis: max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c))
hence max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c)) by A18, A25, A26, XREAL_1:44; :: thesis: verum
end;
suppose max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) = (IExec (I,Q,t)) . c ; :: thesis: max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c))
hence max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c)) by A3, A7, A10, A17, A18, A19, A24, A26; :: thesis: verum
end;
end;
end;
end;
suppose A27: t . b <= t . c ; :: thesis: ( (IExec (I,Q,t)) . b > 0 & (IExec (I,Q,t)) . c > 0 & ((IExec (I,Q,t)) . b) gcd ((IExec (I,Q,t)) . c) = (t . b) gcd (t . c) & max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c)) )
hence (IExec (I,Q,t)) . b > 0 by A3, A7, A10, A17, A18, A19, A21; :: thesis: ( (IExec (I,Q,t)) . c > 0 & ((IExec (I,Q,t)) . b) gcd ((IExec (I,Q,t)) . c) = (t . b) gcd (t . c) & max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c)) )
t . b < t . c by A21, A27, XXREAL_0:1;
then (t . c) - (t . b) > 0 by XREAL_1:50;
hence (IExec (I,Q,t)) . c > 0 by A3, A7, A10, A17, A18, A19, A21, A27; :: thesis: ( ((IExec (I,Q,t)) . b) gcd ((IExec (I,Q,t)) . c) = (t . b) gcd (t . c) & max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c)) )
thus ((IExec (I,Q,t)) . b) gcd ((IExec (I,Q,t)) . c) = (t . b) gcd (t . c) by A17, A18, A20, A22, PREPOWER:97; :: thesis: max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c))
A28: (IExec (I,Q,t)) . c = (t . c) - (t . b) by A3, A7, A10, A17, A18, A19, A21, A27;
A29: (IExec (I,Q,t)) . b = t . b by A3, A7, A10, A17, A18, A19, A21, A27;
hereby :: thesis: verum
A30: max ((t . b),(t . c)) = t . c by A27, XXREAL_0:def 10;
per cases ( max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) = (IExec (I,Q,t)) . c or max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) = (IExec (I,Q,t)) . b ) by XXREAL_0:16;
suppose max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) = (IExec (I,Q,t)) . c ; :: thesis: max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c))
hence max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c)) by A17, A28, A30, XREAL_1:44; :: thesis: verum
end;
suppose max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) = (IExec (I,Q,t)) . b ; :: thesis: max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c))
hence max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) < max ((t . b),(t . c)) by A21, A27, A29, A30, XXREAL_0:1; :: thesis: verum
end;
end;
end;
end;
end;
end;
thus H1( Initialize (IExec (I,Q,t))) < H1(t) :: thesis: S1[ Initialize (IExec (I,Q,t))]
proof
t . b <> t . c by A21;
then t . b <> t . c ;
then A31: H1(t) = max ((abs (t . b)),(abs (t . c))) by A2
.= max ((abs (t . b)),(abs (t . c)))
.= max ((abs (t . b)),(abs (t . c)))
.= max ((t . b),(abs (t . c))) by A17, ABSVALUE:def 1
.= max ((t . b),(t . c)) by A18, ABSVALUE:def 1 ;
then H1(t) >= t . b by XXREAL_0:25;
then A32: H1(t) > 0 by A17, XXREAL_0:2;
per cases ( (Initialize (IExec (I,Q,t))) . b = (Initialize (IExec (I,Q,t))) . c or (Initialize (IExec (I,Q,t))) . b <> (Initialize (IExec (I,Q,t))) . c ) ;
suppose (Initialize (IExec (I,Q,t))) . b = (Initialize (IExec (I,Q,t))) . c ; :: thesis: H1( Initialize (IExec (I,Q,t))) < H1(t)
hence H1( Initialize (IExec (I,Q,t))) < H1(t) by A2, A32; :: thesis: verum
end;
suppose (Initialize (IExec (I,Q,t))) . b <> (Initialize (IExec (I,Q,t))) . c ; :: thesis: H1( Initialize (IExec (I,Q,t))) < H1(t)
then H1( Initialize (IExec (I,Q,t))) = max ((abs ((Initialize (IExec (I,Q,t))) . b)),(abs ((Initialize (IExec (I,Q,t))) . c))) by A2
.= max ((abs ((IExec (I,Q,t)) . b)),(abs ((Initialize (IExec (I,Q,t))) . c))) by SCMPDS_5:15
.= max ((abs ((IExec (I,Q,t)) . b)),(abs ((IExec (I,Q,t)) . c))) by SCMPDS_5:15
.= max (((IExec (I,Q,t)) . b),(abs ((IExec (I,Q,t)) . c))) by A23, ABSVALUE:def 1
.= max (((IExec (I,Q,t)) . b),((IExec (I,Q,t)) . c)) by A23, ABSVALUE:def 1 ;
hence H1( Initialize (IExec (I,Q,t))) < H1(t) by A23, A31; :: thesis: verum
end;
end;
end;
A33: (IExec (I,Q,t)) . (DataLoc (d,i)) = ((IExec (I,Q,t)) . b) - ((IExec (I,Q,t)) . c) by A3, A7, A10, A17, A18, A19, A21;
thus S1[ Initialize (IExec (I,Q,t))] :: thesis: verum
proof
take u = Initialize (IExec (I,Q,t)); :: thesis: ( u = Initialize (IExec (I,Q,t)) & u . b > 0 & u . c > 0 & (u . b) gcd (u . c) = (s . b) gcd (s . c) & u . (DataLoc (d,i)) = (u . b) - (u . c) )
thus u = Initialize (IExec (I,Q,t)) ; :: thesis: ( u . b > 0 & u . c > 0 & (u . b) gcd (u . c) = (s . b) gcd (s . c) & u . (DataLoc (d,i)) = (u . b) - (u . c) )
thus ( u . b > 0 & u . c > 0 ) by A23, SCMPDS_5:15; :: thesis: ( (u . b) gcd (u . c) = (s . b) gcd (s . c) & u . (DataLoc (d,i)) = (u . b) - (u . c) )
thus (u . b) gcd (u . c) = ((IExec (I,Q,t)) . b) gcd (u . c) by SCMPDS_5:15
.= (t . b) gcd (t . c) by A23, SCMPDS_5:15
.= (v . b) gcd (t . c) by A12
.= (s . b) gcd (s . c) by A12, A15 ; :: thesis: u . (DataLoc (d,i)) = (u . b) - (u . c)
thus u . (DataLoc (d,i)) = ((IExec (I,Q,t)) . b) - ((IExec (I,Q,t)) . c) by A33, SCMPDS_5:15
.= (u . b) - ((IExec (I,Q,t)) . c) by SCMPDS_5:15
.= (u . b) - (u . c) by SCMPDS_5:15 ; :: thesis: verum
end;
end;
A34: for t being 0 -started State of SCMPDS st S1[t] holds
( H1(t) = 0 iff t . (DataLoc ((s . a),i)) = 0 )
proof
let t be 0 -started State of SCMPDS; :: thesis: ( S1[t] implies ( H1(t) = 0 iff t . (DataLoc ((s . a),i)) = 0 ) )
assume S1[t] ; :: thesis: ( H1(t) = 0 iff t . (DataLoc ((s . a),i)) = 0 )
then consider v being State of SCMPDS such that
A35: v = t and
A36: v . b > 0 and
v . c > 0 and
(v . b) gcd (v . c) = (s . b) gcd (s . c) and
A37: v . (DataLoc (d,i)) = (v . b) - (v . c) ;
A38: t . (DataLoc ((s . a),i)) = (v . b) - (v . c) by A3, A35, A37
.= (t . b) - (v . c) by A35
.= (t . b) - (t . c) by A35 ;
hereby :: thesis: ( t . (DataLoc ((s . a),i)) = 0 implies H1(t) = 0 )
assume A39: H1(t) = 0 ; :: thesis: t . (DataLoc ((s . a),i)) = 0
now
assume t . b <> t . c ; :: thesis: contradiction
then t . b <> t . c ;
then t . b <> t . c ;
then A40: H1(t) = max ((abs (t . b)),(abs (t . c))) by A2
.= max ((abs (t . b)),(abs (t . c)))
.= max ((abs (t . b)),(abs (t . c))) ;
t . b > 0 by A35, A36;
then abs (t . b) > 0 by COMPLEX1:47;
hence contradiction by A39, A40, XXREAL_0:25; :: thesis: verum
end;
hence t . (DataLoc ((s . a),i)) = 0 by A38; :: thesis: verum
end;
thus ( t . (DataLoc ((s . a),i)) = 0 implies H1(t) = 0 ) by A2, A38; :: thesis: verum
end;
A41: S1[s] by A4, A5, A6;
A42: ( H1( Initialize (IExec ((while<>0 (a,i,I)),P,s))) = 0 & S1[ Initialize (IExec ((while<>0 (a,i,I)),P,s))] ) from SCPINVAR:sch 5(A34, A41, A8);
then consider w being 0 -started State of SCMPDS such that
A43: w = Initialize (IExec ((while<>0 (a,i,I)),P,s)) and
A44: w . b > 0 and
w . c > 0 and
A45: (w . b) gcd (w . c) = (s . b) gcd (s . c) and
A46: w . (DataLoc (d,i)) = (w . b) - (w . c) ;
CI: (Initialize (IExec ((while<>0 (a,i,I)),P,s))) . (DataLoc ((s . a),i)) = (IExec ((while<>0 (a,i,I)),P,s)) . (DataLoc ((s . a),i)) by SCMPDS_5:15;
B: (Initialize (IExec ((while<>0 (a,i,I)),P,s))) . b = (IExec ((while<>0 (a,i,I)),P,s)) . b by SCMPDS_5:15;
C: (Initialize (IExec ((while<>0 (a,i,I)),P,s))) . c = (IExec ((while<>0 (a,i,I)),P,s)) . c by SCMPDS_5:15;
A47: (w . b) - (w . c) = (IExec ((while<>0 (a,i,I)),P,s)) . (DataLoc ((s . a),i)) by A3, A43, A46, SCMPDS_5:15
.= 0 by A34, A42, CI ;
then A48: abs (w . b) = (abs (w . b)) gcd (abs (w . c)) by NAT_D:32
.= (s . b) gcd (s . c) by A45, INT_2:34 ;
thus (IExec ((while<>0 (a,i,I)),P,s)) . b = (IExec ((while<>0 (a,i,I)),P,s)) . b
.= (s . b) gcd (s . c) by A43, A44, A48, B, ABSVALUE:def 1 ; :: thesis: (IExec ((while<>0 (a,i,I)),P,s)) . c = (s . b) gcd (s . c)
thus (IExec ((while<>0 (a,i,I)),P,s)) . c = (IExec ((while<>0 (a,i,I)),P,s)) . c
.= (s . b) gcd (s . c) by A43, A44, A47, A48, C, ABSVALUE:def 1 ; :: thesis: verum