set GA = GCD-Algorithm ;
defpred S1[ Element of NAT ] means for s being State of SCMPDS st GCD-Algorithm c= s & IC s = inspos 5 & s . SBP > 0 & s . GBP = 0 & s . (DataLoc (s . SBP ),3) <= $1 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) holds
ex n being Element of NAT st
( CurInstr (Computation s,n) = return SBP & s . SBP = (Computation s,n) . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) );
now let s be
State of
SCMPDS ;
:: thesis: ( GCD-Algorithm c= s & IC s = inspos 5 & s . SBP > 0 & s . GBP = 0 & s . (DataLoc (s . SBP ),3) <= 0 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation s,n) = return SBP & (Computation s,n) . SBP = s . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) ) )set x =
s . (DataLoc (s . SBP ),2);
set y =
s . (DataLoc (s . SBP ),3);
assume A1:
GCD-Algorithm c= s
;
:: thesis: ( IC s = inspos 5 & s . SBP > 0 & s . GBP = 0 & s . (DataLoc (s . SBP ),3) <= 0 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation s,n) = return SBP & (Computation s,n) . SBP = s . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) ) )assume A2:
IC s = inspos 5
;
:: thesis: ( s . SBP > 0 & s . GBP = 0 & s . (DataLoc (s . SBP ),3) <= 0 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation s,n) = return SBP & (Computation s,n) . SBP = s . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) ) )assume
s . SBP > 0
;
:: thesis: ( s . GBP = 0 & s . (DataLoc (s . SBP ),3) <= 0 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation s,n) = return SBP & (Computation s,n) . SBP = s . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) ) )assume
s . GBP = 0
;
:: thesis: ( s . (DataLoc (s . SBP ),3) <= 0 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation s,n) = return SBP & (Computation s,n) . SBP = s . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) ) )assume A3:
s . (DataLoc (s . SBP ),3) <= 0
;
:: thesis: ( s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation s,n) = return SBP & (Computation s,n) . SBP = s . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) ) )assume A4:
s . (DataLoc (s . SBP ),3) >= 0
;
:: thesis: ( s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation s,n) = return SBP & (Computation s,n) . SBP = s . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) ) )assume A5:
s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3)
;
:: thesis: ex n being Element of NAT st
( CurInstr (Computation s,n) = return SBP & (Computation s,n) . SBP = s . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) )A6:
Computation s,
(1 + 0 ) =
Following (Computation s,0 )
by AMI_1:14
.=
Following s
by AMI_1:13
.=
Exec (SBP ,3 <=0_goto 9),
s
by A1, A2, Lm1
;
then A7:
IC (Computation s,1) =
ICplusConst s,9
by A3, SCMPDS_2:68
.=
inspos (5 + 9)
by A2, SCMPDS_6:23
;
take n = 1;
:: thesis: ( CurInstr (Computation s,n) = return SBP & (Computation s,n) . SBP = s . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) )thus CurInstr (Computation s,n) =
s . (inspos 14)
by A7, AMI_1:54
.=
return SBP
by A1, Lm1
;
:: thesis: ( (Computation s,n) . SBP = s . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) )thus
(Computation s,n) . SBP = s . SBP
by A6, SCMPDS_2:68;
:: thesis: ( (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) )A8:
s . (DataLoc (s . SBP ),3) = 0
by A3, A4, XXREAL_0:1;
then A9:
abs (s . (DataLoc (s . SBP ),3)) = 0
by ABSVALUE:def 1;
thus (Computation s,n) . (DataLoc (s . SBP ),2) =
s . (DataLoc (s . SBP ),2)
by A6, SCMPDS_2:68
.=
abs (s . (DataLoc (s . SBP ),2))
by A5, A8, ABSVALUE:def 1
.=
(abs (s . (DataLoc (s . SBP ),2))) gcd (abs (s . (DataLoc (s . SBP ),3)))
by A9, NEWTON:65
.=
(s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3))
by INT_2:51
;
:: thesis: for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j)thus
for
j being
Element of
NAT st 1
< j &
j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j)
by A6, SCMPDS_2:68;
:: thesis: verum end;
then A10:
S1[ 0 ]
;
A11:
now let k be
Element of
NAT ;
:: thesis: ( S1[k] implies S1[k + 1] )assume A12:
S1[
k]
;
:: thesis: S1[k + 1]now let s be
State of
SCMPDS ;
:: thesis: ( GCD-Algorithm c= s & IC s = inspos 5 & s . SBP > 0 & s . GBP = 0 & s . (DataLoc (s . SBP ),3) <= k + 1 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation n,b2) = return SBP & n . SBP = (Computation n,b2) . SBP & (Computation n,b2) . (DataLoc (n . SBP ),2) = (n . (DataLoc (n . SBP ),2)) gcd (n . (DataLoc (n . SBP ),3)) & ( for j being Element of NAT st 1 < b3 & b3 <= (n . SBP ) + 1 holds
n . (intpos b3) = (Computation n,j) . (intpos b3) ) ) )set x =
s . (DataLoc (s . SBP ),2);
set y =
s . (DataLoc (s . SBP ),3);
set yy =
s . (DataLoc (s . SBP ),3);
assume A13:
GCD-Algorithm c= s
;
:: thesis: ( IC s = inspos 5 & s . SBP > 0 & s . GBP = 0 & s . (DataLoc (s . SBP ),3) <= k + 1 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation n,b2) = return SBP & n . SBP = (Computation n,b2) . SBP & (Computation n,b2) . (DataLoc (n . SBP ),2) = (n . (DataLoc (n . SBP ),2)) gcd (n . (DataLoc (n . SBP ),3)) & ( for j being Element of NAT st 1 < b3 & b3 <= (n . SBP ) + 1 holds
n . (intpos b3) = (Computation n,j) . (intpos b3) ) ) )assume A14:
IC s = inspos 5
;
:: thesis: ( s . SBP > 0 & s . GBP = 0 & s . (DataLoc (s . SBP ),3) <= k + 1 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation n,b2) = return SBP & n . SBP = (Computation n,b2) . SBP & (Computation n,b2) . (DataLoc (n . SBP ),2) = (n . (DataLoc (n . SBP ),2)) gcd (n . (DataLoc (n . SBP ),3)) & ( for j being Element of NAT st 1 < b3 & b3 <= (n . SBP ) + 1 holds
n . (intpos b3) = (Computation n,j) . (intpos b3) ) ) )assume A15:
s . SBP > 0
;
:: thesis: ( s . GBP = 0 & s . (DataLoc (s . SBP ),3) <= k + 1 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation n,b2) = return SBP & n . SBP = (Computation n,b2) . SBP & (Computation n,b2) . (DataLoc (n . SBP ),2) = (n . (DataLoc (n . SBP ),2)) gcd (n . (DataLoc (n . SBP ),3)) & ( for j being Element of NAT st 1 < b3 & b3 <= (n . SBP ) + 1 holds
n . (intpos b3) = (Computation n,j) . (intpos b3) ) ) )assume A16:
s . GBP = 0
;
:: thesis: ( s . (DataLoc (s . SBP ),3) <= k + 1 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation n,b2) = return SBP & n . SBP = (Computation n,b2) . SBP & (Computation n,b2) . (DataLoc (n . SBP ),2) = (n . (DataLoc (n . SBP ),2)) gcd (n . (DataLoc (n . SBP ),3)) & ( for j being Element of NAT st 1 < b3 & b3 <= (n . SBP ) + 1 holds
n . (intpos b3) = (Computation n,j) . (intpos b3) ) ) )assume A17:
s . (DataLoc (s . SBP ),3) <= k + 1
;
:: thesis: ( s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation n,b2) = return SBP & n . SBP = (Computation n,b2) . SBP & (Computation n,b2) . (DataLoc (n . SBP ),2) = (n . (DataLoc (n . SBP ),2)) gcd (n . (DataLoc (n . SBP ),3)) & ( for j being Element of NAT st 1 < b3 & b3 <= (n . SBP ) + 1 holds
n . (intpos b3) = (Computation n,j) . (intpos b3) ) ) )assume A18:
s . (DataLoc (s . SBP ),3) >= 0
;
:: thesis: ( s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation n,b2) = return SBP & n . SBP = (Computation n,b2) . SBP & (Computation n,b2) . (DataLoc (n . SBP ),2) = (n . (DataLoc (n . SBP ),2)) gcd (n . (DataLoc (n . SBP ),3)) & ( for j being Element of NAT st 1 < b3 & b3 <= (n . SBP ) + 1 holds
n . (intpos b3) = (Computation n,j) . (intpos b3) ) ) )assume A19:
s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3)
;
:: thesis: ex n being Element of NAT st
( CurInstr (Computation n,b2) = return SBP & n . SBP = (Computation n,b2) . SBP & (Computation n,b2) . (DataLoc (n . SBP ),2) = (n . (DataLoc (n . SBP ),2)) gcd (n . (DataLoc (n . SBP ),3)) & ( for j being Element of NAT st 1 < b3 & b3 <= (n . SBP ) + 1 holds
n . (intpos b3) = (Computation n,j) . (intpos b3) ) )then A20:
s . (DataLoc (s . SBP ),2) >= 0
by A18, XXREAL_0:2;
reconsider y =
s . (DataLoc (s . SBP ),3) as
Element of
NAT by A18, INT_1:16;
per cases
( y <= k or y = k + 1 )
by A17, NAT_1:8;
suppose
y <= k
;
:: thesis: ex n being Element of NAT st
( CurInstr (Computation n,b2) = return SBP & n . SBP = (Computation n,b2) . SBP & (Computation n,b2) . (DataLoc (n . SBP ),2) = (n . (DataLoc (n . SBP ),2)) gcd (n . (DataLoc (n . SBP ),3)) & ( for j being Element of NAT st 1 < b3 & b3 <= (n . SBP ) + 1 holds
n . (intpos b3) = (Computation n,j) . (intpos b3) ) )hence
ex
n being
Element of
NAT st
(
CurInstr (Computation s,n) = return SBP &
s . SBP = (Computation s,n) . SBP &
(Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for
j being
Element of
NAT st 1
< j &
j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) )
by A12, A13, A14, A15, A16, A18, A19;
:: thesis: verum end; suppose A21:
y = k + 1
;
:: thesis: ex n being Element of NAT st
( CurInstr (Computation n,b2) = return SBP & (Computation n,b2) . SBP = n . SBP & (Computation n,b2) . (DataLoc (n . SBP ),2) = (n . (DataLoc (n . SBP ),2)) gcd (n . (DataLoc (n . SBP ),3)) & ( for j being Element of NAT st 1 < b3 & b3 <= (n . SBP ) + 1 holds
n . (intpos b3) = (Computation n,j) . (intpos b3) ) )then A22:
y > 0
by NAT_1:5;
reconsider pn =
s . SBP as
Element of
NAT by A15, INT_1:16;
A23:
pn = s . SBP
;
then A24:
(
IC (Computation s,7) = inspos (5 + 7) &
Computation s,8
= Exec (goto (- 7)),
(Computation s,7) &
(Computation s,7) . SBP = pn + 4 &
(Computation s,7) . GBP = 0 &
(Computation s,7) . (intpos (pn + 7)) = (s . (DataLoc (s . SBP ),2)) mod y &
(Computation s,7) . (intpos (pn + 6)) = y &
(Computation s,7) . (intpos (pn + 4)) = pn &
(Computation s,7) . (intpos (pn + 5)) = inspos 11 )
by A13, A14, A16, A22, Lm4;
set s8 =
Computation s,8;
A25:
IC (Computation s,8) =
ICplusConst (Computation s,7),
(- 7)
by A24, SCMPDS_2:66
.=
inspos 5
by A24, Th6
;
A26:
GCD-Algorithm c= Computation s,8
by A13, AMI_1:81;
A27:
(Computation s,8) . SBP = pn + 4
by A24, SCMPDS_2:66;
A28:
4
<= pn + 4
by NAT_1:11;
then A29:
(Computation s,8) . SBP > 0
by A27, XXREAL_0:2;
A30:
(Computation s,8) . GBP = 0
by A24, SCMPDS_2:66;
set x1 =
(Computation s,8) . (DataLoc ((Computation s,8) . SBP ),2);
set y1 =
(Computation s,8) . (DataLoc ((Computation s,8) . SBP ),3);
A31:
(Computation s,8) . (DataLoc ((Computation s,8) . SBP ),2) =
(Computation s,8) . (intpos ((pn + 4) + 2))
by A27, Th5
.=
y
by A24, SCMPDS_2:66
;
A32:
(Computation s,8) . (DataLoc ((Computation s,8) . SBP ),3) =
(Computation s,8) . (intpos ((pn + 4) + 3))
by A27, Th5
.=
(s . (DataLoc (s . SBP ),2)) mod y
by A24, SCMPDS_2:66
;
then A33:
(Computation s,8) . (DataLoc ((Computation s,8) . SBP ),3) < y
by A21, NAT_1:5, NEWTON:79;
then A34:
(Computation s,8) . (DataLoc ((Computation s,8) . SBP ),3) <= k
by A21, INT_1:20;
(Computation s,8) . (DataLoc ((Computation s,8) . SBP ),3) >= 0
by A22, A32, NEWTON:78;
then consider m being
Element of
NAT such that A35:
(
CurInstr (Computation (Computation s,8),m) = return SBP &
(Computation s,8) . SBP = (Computation (Computation s,8),m) . SBP &
(Computation (Computation s,8),m) . (DataLoc ((Computation s,8) . SBP ),2) = ((Computation s,8) . (DataLoc ((Computation s,8) . SBP ),2)) gcd ((Computation s,8) . (DataLoc ((Computation s,8) . SBP ),3)) & ( for
j being
Element of
NAT st 1
< j &
j <= ((Computation s,8) . SBP ) + 1 holds
(Computation s,8) . (intpos j) = (Computation (Computation s,8),m) . (intpos j) ) )
by A12, A25, A26, A29, A30, A31, A33, A34;
set s9 =
Computation s,
(m + 8);
A36:
(Computation s,8) . SBP = (Computation s,(m + 8)) . SBP
by A35, AMI_1:51;
A37:
Computation s,
(m + (8 + 1)) =
Computation s,
((m + 8) + 1)
.=
Following (Computation s,(m + 8))
by AMI_1:14
.=
Exec (return SBP ),
(Computation s,(m + 8))
by A35, AMI_1:51
;
A38:
1
< pn + 4
by A28, XXREAL_0:2;
pn + 4
< ((Computation s,8) . SBP ) + 1
by A27, XREAL_1:31;
then A39:
(Computation s,8) . (intpos (pn + 4)) =
(Computation (Computation s,8),m) . (intpos (pn + 4))
by A35, A38
.=
(Computation s,(m + 8)) . (intpos (pn + 4))
by AMI_1:51
;
5
<= pn + 5
by NAT_1:11;
then A40:
1
< pn + 5
by XXREAL_0:2;
A41:
inspos 11 =
(Computation s,8) . (intpos (pn + 5))
by A24, SCMPDS_2:66
.=
(Computation (Computation s,8),m) . (intpos (pn + 5))
by A27, A35, A40
.=
(Computation s,(m + 8)) . (intpos ((pn + 4) + 1))
by AMI_1:51
.=
(Computation s,(m + 8)) . (DataLoc ((Computation s,(m + 8)) . SBP ),RetIC )
by A27, A36, Th5, SCMPDS_1:def 23
;
A42:
IC (Computation s,(m + 9)) =
(abs ((Computation s,(m + 8)) . (DataLoc ((Computation s,(m + 8)) . SBP ),RetIC ))) + 2
by A37, SCMPDS_2:70
.=
inspos (11 + 2)
by A41, Th3
;
then A43:
CurInstr (Computation s,(m + 9)) =
s . (inspos 13)
by AMI_1:54
.=
SBP ,2
:= SBP ,6
by A13, Lm1
;
A44:
Computation s,
(m + (9 + 1)) =
Computation s,
((m + 9) + 1)
.=
Following (Computation s,(m + 9))
by AMI_1:14
.=
Exec (SBP ,2 := SBP ,6),
(Computation s,(m + 9))
by A43
;
A45:
(Computation s,(m + 9)) . SBP =
(Computation s,(m + 8)) . (DataLoc (pn + 4),RetSP )
by A27, A36, A37, SCMPDS_2:70
.=
(Computation s,(m + 8)) . (intpos ((pn + 4) + 0 ))
by Th5, SCMPDS_1:def 22
.=
pn
by A24, A39, SCMPDS_2:66
;
SBP <> intpos (pn + 6)
by Lm3;
then A46:
(Computation s,(m + 9)) . (intpos (pn + 6)) =
(Computation s,(m + 8)) . (intpos ((pn + 4) + 2))
by A37, SCMPDS_2:70
.=
(Computation s,(m + 8)) . (DataLoc ((Computation s,8) . SBP ),2)
by A27, Th5
.=
((Computation s,8) . (DataLoc ((Computation s,8) . SBP ),2)) gcd ((Computation s,8) . (DataLoc ((Computation s,8) . SBP ),3))
by A35, AMI_1:51
;
IC (Computation s,(m + 10)) =
Next (IC (Computation s,(m + 9)))
by A44, SCMPDS_2:59
.=
inspos (13 + 1)
by A42
;
then A47:
CurInstr (Computation s,(m + 10)) =
s . (inspos 14)
by AMI_1:54
.=
return SBP
by A13, Lm1
;
hereby :: thesis: verum
take n =
m + 10;
:: thesis: ( CurInstr (Computation s,n) = return SBP & (Computation s,n) . SBP = s . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) )thus
CurInstr (Computation s,n) = return SBP
by A47;
:: thesis: ( (Computation s,n) . SBP = s . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) )A48:
DataLoc ((Computation s,(m + 9)) . SBP ),2
= intpos (pn + 2)
by A45, Th5;
then
SBP <> DataLoc ((Computation s,(m + 9)) . SBP ),2
by Lm3;
hence
(Computation s,n) . SBP = s . SBP
by A44, A45, SCMPDS_2:59;
:: thesis: ( (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) )thus (Computation s,n) . (DataLoc (s . SBP ),2) =
(Computation s,(m + 9)) . (DataLoc pn,6)
by A44, A45, SCMPDS_2:59
.=
(s . (DataLoc (s . SBP ),3)) gcd ((s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)))
by A31, A32, A46, Th5
.=
(s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3))
by A20, A21, NAT_1:5, NAT_D:30
;
:: thesis: for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j)hereby :: thesis: verum
let j be
Element of
NAT ;
:: thesis: ( 1 < j & j <= (s . SBP ) + 1 implies s . (intpos j) = (Computation s,n) . (intpos j) )assume A49:
( 1
< j &
j <= (s . SBP ) + 1 )
;
:: thesis: s . (intpos j) = (Computation s,n) . (intpos j)
s . SBP <= (Computation s,8) . SBP
by A27, NAT_1:11;
then
(s . SBP ) + 1
<= ((Computation s,8) . SBP ) + 1
by XREAL_1:8;
then A50:
j <= ((Computation s,8) . SBP ) + 1
by A49, XXREAL_0:2;
intpos j <> SBP
by A49, AMI_3:52;
then A51:
(Computation s,(m + 9)) . (intpos j) =
(Computation s,(m + 8)) . (intpos j)
by A37, SCMPDS_2:70
.=
(Computation (Computation s,8),m) . (intpos j)
by AMI_1:51
.=
(Computation s,8) . (intpos j)
by A35, A49, A50
;
pn + 1
< pn + 2
by XREAL_1:8;
then A52:
intpos j <> DataLoc ((Computation s,(m + 9)) . SBP ),2
by A48, A49, AMI_3:52;
(Computation s,7) . (intpos j) = s . (intpos j)
by A13, A14, A16, A21, A23, A49, Lm5, NAT_1:5;
hence s . (intpos j) =
(Computation s,8) . (intpos j)
by A24, SCMPDS_2:66
.=
(Computation s,n) . (intpos j)
by A44, A51, A52, SCMPDS_2:59
;
:: thesis: verum
end;
end; end; end; end; hence
S1[
k + 1]
;
:: thesis: verum end;
A53:
for n being Element of NAT holds S1[n]
from NAT_1:sch 1(A10, A11);
let s be State of SCMPDS ; :: thesis: ( GCD-Algorithm c= s & IC s = inspos 5 & s . SBP > 0 & s . GBP = 0 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) implies ex n being Element of NAT st
( CurInstr (Computation s,n) = return SBP & s . SBP = (Computation s,n) . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) ) )
assume A54:
( GCD-Algorithm c= s & IC s = inspos 5 & s . SBP > 0 & s . GBP = 0 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) )
; :: thesis: ex n being Element of NAT st
( CurInstr (Computation s,n) = return SBP & s . SBP = (Computation s,n) . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) )
then reconsider m = s . (DataLoc (s . SBP ),3) as Element of NAT by INT_1:16;
S1[m]
by A53;
hence
ex n being Element of NAT st
( CurInstr (Computation s,n) = return SBP & s . SBP = (Computation s,n) . SBP & (Computation s,n) . (DataLoc (s . SBP ),2) = (s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3)) & ( for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Computation s,n) . (intpos j) ) )
by A54; :: thesis: verum