let s be State of SCMPDS ; ( GCD-Algorithm c= s & IC s = 5 & s . SBP > 0 & s . GBP = 0 & s . (DataLoc (s . SBP ),3) >= 0 & s . (DataLoc (s . SBP ),2) >= 0 implies ex n being Element of NAT st
( CurInstr (ProgramPart (Comput (ProgramPart s),s,n)),(Comput (ProgramPart s),s,n) = return SBP & s . SBP = (Comput (ProgramPart s),s,n) . SBP & (Comput (ProgramPart s),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) = (Comput (ProgramPart s),s,n) . (intpos j) ) ) )
set GA = GCD-Algorithm ;
set x = s . (DataLoc (s . SBP ),2);
set y = s . (DataLoc (s . SBP ),3);
set yy = s . (DataLoc (s . SBP ),3);
assume that
A1:
GCD-Algorithm c= s
and
A2:
IC s = 5
and
A3:
s . SBP > 0
and
A4:
s . GBP = 0
and
A5:
s . (DataLoc (s . SBP ),3) >= 0
and
A6:
s . (DataLoc (s . SBP ),2) >= 0
; ex n being Element of NAT st
( CurInstr (ProgramPart (Comput (ProgramPart s),s,n)),(Comput (ProgramPart s),s,n) = return SBP & s . SBP = (Comput (ProgramPart s),s,n) . SBP & (Comput (ProgramPart s),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) = (Comput (ProgramPart s),s,n) . (intpos j) ) )
per cases
( s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3) or s . (DataLoc (s . SBP ),2) < s . (DataLoc (s . SBP ),3) )
;
suppose
s . (DataLoc (s . SBP ),2) >= s . (DataLoc (s . SBP ),3)
;
ex n being Element of NAT st
( CurInstr (ProgramPart (Comput (ProgramPart s),s,n)),(Comput (ProgramPart s),s,n) = return SBP & s . SBP = (Comput (ProgramPart s),s,n) . SBP & (Comput (ProgramPart s),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) = (Comput (ProgramPart s),s,n) . (intpos j) ) )hence
ex
n being
Element of
NAT st
(
CurInstr (ProgramPart (Comput (ProgramPart s),s,n)),
(Comput (ProgramPart s),s,n) = return SBP &
s . SBP = (Comput (ProgramPart s),s,n) . SBP &
(Comput (ProgramPart s),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) = (Comput (ProgramPart s),s,n) . (intpos j) ) )
by A1, A2, A3, A4, A5, Th16;
verum end; suppose
s . (DataLoc (s . SBP ),2) < s . (DataLoc (s . SBP ),3)
;
ex n being Element of NAT st
( CurInstr (ProgramPart (Comput (ProgramPart s),s,n)),(Comput (ProgramPart s),s,n) = return SBP & s . SBP = (Comput (ProgramPart s),s,n) . SBP & (Comput (ProgramPart s),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) = (Comput (ProgramPart s),s,n) . (intpos j) ) )then A7:
s . (DataLoc (s . SBP ),3) > 0
by A6, XXREAL_0:2;
reconsider y =
s . (DataLoc (s . SBP ),3) as
Element of
NAT by A5, INT_1:16;
reconsider pn =
s . SBP as
Element of
NAT by A3, INT_1:16;
A8:
pn = s . SBP
;
then A9:
IC (Comput (ProgramPart s),s,7) = 5
+ 7
by A1, A2, A4, A7, Lm4;
A10:
Comput (ProgramPart s),
s,8
= Exec (goto (- 7)),
(Comput (ProgramPart s),s,7)
by A1, A2, A4, A7, A8, Lm4;
A11:
(Comput (ProgramPart s),s,7) . SBP = pn + 4
by A1, A2, A4, A7, Lm4;
A12:
(Comput (ProgramPart s),s,7) . GBP = 0
by A1, A2, A4, A7, A8, Lm4;
A13:
(Comput (ProgramPart s),s,7) . (intpos (pn + 7)) = (s . (DataLoc (s . SBP ),2)) mod y
by A1, A2, A4, A7, Lm4;
A14:
(Comput (ProgramPart s),s,7) . (intpos (pn + 6)) = y
by A1, A2, A4, A7, Lm4;
A15:
(Comput (ProgramPart s),s,7) . (intpos (pn + 4)) = pn
by A1, A2, A4, A7, Lm4;
A16:
(Comput (ProgramPart s),s,7) . (intpos (pn + 5)) = 11
by A1, A2, A4, A7, Lm4;
set s8 =
Comput (ProgramPart s),
s,8;
A17:
IC (Comput (ProgramPart s),s,8) =
ICplusConst (Comput (ProgramPart s),s,7),
(- 7)
by A10, SCMPDS_2:66
.=
5
by A9, Th6
;
A18:
GCD-Algorithm c= Comput (ProgramPart s),
s,8
by A1, AMI_1:81;
A19:
(Comput (ProgramPart s),s,8) . SBP = pn + 4
by A10, A11, SCMPDS_2:66;
A20:
4
<= pn + 4
by NAT_1:11;
then A21:
(Comput (ProgramPart s),s,8) . SBP > 0
by A19, XXREAL_0:2;
A22:
(Comput (ProgramPart s),s,8) . GBP = 0
by A10, A12, SCMPDS_2:66;
set x1 =
(Comput (ProgramPart s),s,8) . (DataLoc ((Comput (ProgramPart s),s,8) . SBP ),2);
set y1 =
(Comput (ProgramPart s),s,8) . (DataLoc ((Comput (ProgramPart s),s,8) . SBP ),3);
A23:
(Comput (ProgramPart s),s,8) . (DataLoc ((Comput (ProgramPart s),s,8) . SBP ),2) =
(Comput (ProgramPart s),s,8) . (intpos ((pn + 4) + 2))
by A19, Th5
.=
y
by A10, A14, SCMPDS_2:66
;
A24:
(Comput (ProgramPart s),s,8) . (DataLoc ((Comput (ProgramPart s),s,8) . SBP ),3) =
(Comput (ProgramPart s),s,8) . (intpos ((pn + 4) + 3))
by A19, Th5
.=
(s . (DataLoc (s . SBP ),2)) mod y
by A10, A13, SCMPDS_2:66
;
then
(Comput (ProgramPart s),s,8) . (DataLoc ((Comput (ProgramPart s),s,8) . SBP ),3) < y
by A7, NEWTON:79;
then consider m being
Element of
NAT such that A25:
CurInstr (ProgramPart (Comput (ProgramPart (Comput (ProgramPart s),s,8)),(Comput (ProgramPart s),s,8),m)),
(Comput (ProgramPart (Comput (ProgramPart s),s,8)),(Comput (ProgramPart s),s,8),m) = return SBP
and A26:
(Comput (ProgramPart s),s,8) . SBP = (Comput (ProgramPart (Comput (ProgramPart s),s,8)),(Comput (ProgramPart s),s,8),m) . SBP
and A27:
(Comput (ProgramPart (Comput (ProgramPart s),s,8)),(Comput (ProgramPart s),s,8),m) . (DataLoc ((Comput (ProgramPart s),s,8) . SBP ),2) = ((Comput (ProgramPart s),s,8) . (DataLoc ((Comput (ProgramPart s),s,8) . SBP ),2)) gcd ((Comput (ProgramPart s),s,8) . (DataLoc ((Comput (ProgramPart s),s,8) . SBP ),3))
and A28:
for
j being
Element of
NAT st 1
< j &
j <= ((Comput (ProgramPart s),s,8) . SBP ) + 1 holds
(Comput (ProgramPart s),s,8) . (intpos j) = (Comput (ProgramPart (Comput (ProgramPart s),s,8)),(Comput (ProgramPart s),s,8),m) . (intpos j)
by A5, A17, A18, A21, A22, A23, A24, Th16, NEWTON:78;
set s9 =
Comput (ProgramPart s),
s,
(m + 8);
T9:
ProgramPart s = ProgramPart (Comput (ProgramPart s),s,8)
by AMI_1:123;
then A29:
(Comput (ProgramPart s),s,8) . SBP = (Comput (ProgramPart s),s,(m + 8)) . SBP
by A26, AMI_1:51;
T:
ProgramPart s = ProgramPart (Comput (ProgramPart s),s,8)
by AMI_1:123;
x:
Comput (ProgramPart s),
s,
(m + 8) = Comput (ProgramPart s),
(Comput (ProgramPart s),s,8),
m
by AMI_1:51;
S:
ProgramPart s = ProgramPart (Comput (ProgramPart s),s,(m + 8))
by AMI_1:123;
A30:
Comput (ProgramPart s),
s,
(m + (8 + 1)) =
Comput (ProgramPart s),
s,
((m + 8) + 1)
.=
Following (ProgramPart s),
(Comput (ProgramPart s),s,(m + 8))
by AMI_1:14
.=
Exec (return SBP ),
(Comput (ProgramPart s),s,(m + 8))
by A25, x, T, S
;
A31:
1
< pn + 4
by A20, XXREAL_0:2;
pn + 4
< ((Comput (ProgramPart s),s,8) . SBP ) + 1
by A19, XREAL_1:31;
then A32:
(Comput (ProgramPart s),s,8) . (intpos (pn + 4)) =
(Comput (ProgramPart (Comput (ProgramPart s),s,8)),(Comput (ProgramPart s),s,8),m) . (intpos (pn + 4))
by A28, A31
.=
(Comput (ProgramPart s),s,(m + 8)) . (intpos (pn + 4))
by T9, AMI_1:51
;
5
<= pn + 5
by NAT_1:11;
then A33:
1
< pn + 5
by XXREAL_0:2;
A34: 11 =
(Comput (ProgramPart s),s,8) . (intpos (pn + 5))
by A10, A16, SCMPDS_2:66
.=
(Comput (ProgramPart (Comput (ProgramPart s),s,8)),(Comput (ProgramPart s),s,8),m) . (intpos (pn + 5))
by A19, A28, A33
.=
(Comput (ProgramPart s),s,(m + 8)) . (intpos ((pn + 4) + 1))
by T9, AMI_1:51
.=
(Comput (ProgramPart s),s,(m + 8)) . (DataLoc ((Comput (ProgramPart s),s,(m + 8)) . SBP ),RetIC )
by A19, A29, Th5, SCMPDS_1:def 23
;
Y:
(ProgramPart (Comput (ProgramPart s),s,(m + 9))) /. (IC (Comput (ProgramPart s),s,(m + 9))) = (Comput (ProgramPart s),s,(m + 9)) . (IC (Comput (ProgramPart s),s,(m + 9)))
by COMPOS_1:38;
A35:
IC (Comput (ProgramPart s),s,(m + 9)) =
(abs ((Comput (ProgramPart s),s,(m + 8)) . (DataLoc ((Comput (ProgramPart s),s,(m + 8)) . SBP ),RetIC ))) + 2
by A30, SCMPDS_2:70
.=
11
+ 2
by A34, Th3
;
then A36:
CurInstr (ProgramPart (Comput (ProgramPart s),s,(m + 9))),
(Comput (ProgramPart s),s,(m + 9)) =
s . 13
by Y, AMI_1:54
.=
SBP ,2
:= SBP ,6
by A1, Lm1
;
T:
ProgramPart s = ProgramPart (Comput (ProgramPart s),s,(m + 9))
by AMI_1:123;
A37:
Comput (ProgramPart s),
s,
(m + (9 + 1)) =
Comput (ProgramPart s),
s,
((m + 9) + 1)
.=
Following (ProgramPart s),
(Comput (ProgramPart s),s,(m + 9))
by AMI_1:14
.=
Exec (SBP ,2 := SBP ,6),
(Comput (ProgramPart s),s,(m + 9))
by A36, T
;
A38:
(Comput (ProgramPart s),s,(m + 9)) . SBP =
(Comput (ProgramPart s),s,(m + 8)) . (DataLoc (pn + 4),RetSP )
by A19, A29, A30, SCMPDS_2:70
.=
(Comput (ProgramPart s),s,(m + 8)) . (intpos ((pn + 4) + 0 ))
by Th5, SCMPDS_1:def 22
.=
pn
by A10, A15, A32, SCMPDS_2:66
;
A39:
(Comput (ProgramPart s),s,(m + 9)) . (intpos (pn + 6)) =
(Comput (ProgramPart s),s,(m + 8)) . (intpos ((pn + 4) + 2))
by A30, Lm3, SCMPDS_2:70
.=
(Comput (ProgramPart s),s,(m + 8)) . (DataLoc ((Comput (ProgramPart s),s,8) . SBP ),2)
by A19, Th5
.=
((Comput (ProgramPart s),s,8) . (DataLoc ((Comput (ProgramPart s),s,8) . SBP ),2)) gcd ((Comput (ProgramPart s),s,8) . (DataLoc ((Comput (ProgramPart s),s,8) . SBP ),3))
by A27, T9, AMI_1:51
;
Y:
(ProgramPart (Comput (ProgramPart s),s,(m + 10))) /. (IC (Comput (ProgramPart s),s,(m + 10))) = (Comput (ProgramPart s),s,(m + 10)) . (IC (Comput (ProgramPart s),s,(m + 10)))
by COMPOS_1:38;
IC (Comput (ProgramPart s),s,(m + 10)) =
succ (IC (Comput (ProgramPart s),s,(m + 9)))
by A37, SCMPDS_2:59
.=
13
+ 1
by A35
;
then A40:
CurInstr (ProgramPart (Comput (ProgramPart s),s,(m + 10))),
(Comput (ProgramPart s),s,(m + 10)) =
s . 14
by Y, AMI_1:54
.=
return SBP
by A1, Lm1
;
hereby verum
take n =
m + 10;
( CurInstr (ProgramPart (Comput (ProgramPart s),s,n)),(Comput (ProgramPart s),s,n) = return SBP & (Comput (ProgramPart s),s,n) . SBP = s . SBP & (Comput (ProgramPart s),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) = (Comput (ProgramPart s),s,n) . (intpos j) ) )thus
CurInstr (ProgramPart (Comput (ProgramPart s),s,n)),
(Comput (ProgramPart s),s,n) = return SBP
by A40;
( (Comput (ProgramPart s),s,n) . SBP = s . SBP & (Comput (ProgramPart s),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) = (Comput (ProgramPart s),s,n) . (intpos j) ) )A41:
DataLoc ((Comput (ProgramPart s),s,(m + 9)) . SBP ),2
= intpos (pn + 2)
by A38, Th5;
hence
(Comput (ProgramPart s),s,n) . SBP = s . SBP
by A37, A38, Lm3, SCMPDS_2:59;
( (Comput (ProgramPart s),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) = (Comput (ProgramPart s),s,n) . (intpos j) ) )thus (Comput (ProgramPart s),s,n) . (DataLoc (s . SBP ),2) =
(Comput (ProgramPart s),s,(m + 9)) . (DataLoc pn,6)
by A37, A38, SCMPDS_2:59
.=
(s . (DataLoc (s . SBP ),3)) gcd ((s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)))
by A23, A24, A39, Th5
.=
(s . (DataLoc (s . SBP ),2)) gcd (s . (DataLoc (s . SBP ),3))
by A6, A7, NAT_D:30
;
for j being Element of NAT st 1 < j & j <= (s . SBP ) + 1 holds
s . (intpos j) = (Comput (ProgramPart s),s,n) . (intpos j)hereby verum
let j be
Element of
NAT ;
( 1 < j & j <= (s . SBP ) + 1 implies s . (intpos j) = (Comput (ProgramPart s),s,n) . (intpos j) )assume that A42:
1
< j
and A43:
j <= (s . SBP ) + 1
;
s . (intpos j) = (Comput (ProgramPart s),s,n) . (intpos j)
s . SBP <= (Comput (ProgramPart s),s,8) . SBP
by A19, NAT_1:11;
then
(s . SBP ) + 1
<= ((Comput (ProgramPart s),s,8) . SBP ) + 1
by XREAL_1:8;
then A44:
j <= ((Comput (ProgramPart s),s,8) . SBP ) + 1
by A43, XXREAL_0:2;
A45:
(Comput (ProgramPart s),s,(m + 9)) . (intpos j) =
(Comput (ProgramPart s),s,(m + 8)) . (intpos j)
by A30, A42, AMI_3:52, SCMPDS_2:70
.=
(Comput (ProgramPart (Comput (ProgramPart s),s,8)),(Comput (ProgramPart s),s,8),m) . (intpos j)
by T9, AMI_1:51
.=
(Comput (ProgramPart s),s,8) . (intpos j)
by A28, A42, A44
;
A46:
pn + 1
< pn + 2
by XREAL_1:8;
(Comput (ProgramPart s),s,7) . (intpos j) = s . (intpos j)
by A1, A2, A4, A7, A8, A42, A43, Lm5;
hence s . (intpos j) =
(Comput (ProgramPart s),s,8) . (intpos j)
by A10, SCMPDS_2:66
.=
(Comput (ProgramPart s),s,n) . (intpos j)
by A37, A41, A43, A45, A46, AMI_3:52, SCMPDS_2:59
;
verum
end;
end; end; end;