let s be State of SCMPDS ; ( Initialized GCD-Algorithm c= s implies for x, y being Integer st s . (intpos 9) = x & s . (intpos 10) = y & x >= 0 & y >= 0 holds
(Result s) . (intpos 9) = x gcd y )
set GA = GCD-Algorithm ;
assume A1:
Initialized GCD-Algorithm c= s
; for x, y being Integer st s . (intpos 9) = x & s . (intpos 10) = y & x >= 0 & y >= 0 holds
(Result s) . (intpos 9) = x gcd y
let x, y be Integer; ( s . (intpos 9) = x & s . (intpos 10) = y & x >= 0 & y >= 0 implies (Result s) . (intpos 9) = x gcd y )
assume that
A2:
s . (intpos 9) = x
and
A3:
s . (intpos 10) = y
and
A4:
x >= 0
and
A5:
y >= 0
; (Result s) . (intpos 9) = x gcd y
set s4 = Comput (ProgramPart s),s,4;
A6:
GCD-Algorithm c= s
by A1, SCMPDS_4:57;
A7:
GCD-Algorithm c= Comput (ProgramPart s),s,4
by A1, AMI_1:81, SCMPDS_4:57;
A8:
IC (Comput (ProgramPart s),s,4) = 5
by A1, Th15;
A9:
(Comput (ProgramPart s),s,4) . GBP = 0
by A1, Th15;
A10:
(Comput (ProgramPart s),s,4) . SBP = 7
by A1, Th15;
A11:
(Comput (ProgramPart s),s,4) . (intpos (7 + RetIC )) = 2
by A1, Th15;
A12:
(Comput (ProgramPart s),s,4) . (intpos 9) = s . (intpos 9)
by A1, Th15;
A13: (Comput (ProgramPart s),s,4) . (DataLoc ((Comput (ProgramPart s),s,4) . SBP ),3) =
(Comput (ProgramPart s),s,4) . (intpos (7 + 3))
by A10, Th5
.=
y
by A1, A3, Th15
;
A14:
DataLoc ((Comput (ProgramPart s),s,4) . SBP ),2 = intpos (7 + 2)
by A10, Th5;
then A15:
(Comput (ProgramPart s),s,4) . (DataLoc ((Comput (ProgramPart s),s,4) . SBP ),2) = x
by A1, A2, Th15;
consider n being Element of NAT such that
A16:
CurInstr (ProgramPart (Comput (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart s),s,4),n)),(Comput (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart s),s,4),n) = return SBP
and
A17:
(Comput (ProgramPart s),s,4) . SBP = (Comput (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart s),s,4),n) . SBP
and
A18:
(Comput (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart s),s,4),n) . (DataLoc ((Comput (ProgramPart s),s,4) . SBP ),2) = ((Comput (ProgramPart s),s,4) . (DataLoc ((Comput (ProgramPart s),s,4) . SBP ),2)) gcd ((Comput (ProgramPart s),s,4) . (DataLoc ((Comput (ProgramPart s),s,4) . SBP ),3))
and
A19:
for j being Element of NAT st 1 < j & j <= ((Comput (ProgramPart s),s,4) . SBP ) + 1 holds
(Comput (ProgramPart s),s,4) . (intpos j) = (Comput (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart s),s,4),n) . (intpos j)
by A2, A4, A5, A7, A8, A9, A10, A12, A13, A14, Th17;
A20:
DataLoc ((Comput (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart s),s,4),n) . SBP ),RetIC = intpos (7 + 1)
by A10, A17, Th5, SCMPDS_1:def 23;
T:
ProgramPart (Comput (ProgramPart s),s,4) = ProgramPart (Comput (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart s),s,4),n)
by AMI_1:144;
A21: Comput (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart s),s,4),(n + 1) =
Following (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart s),s,4),n)
by AMI_1:14
.=
Exec (return SBP ),(Comput (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart s),s,4),n)
by A16, T
;
T:
ProgramPart s = ProgramPart (Comput (ProgramPart s),s,4)
by AMI_1:144;
IC (Comput (ProgramPart s),s,(4 + (n + 1))) =
(Comput (ProgramPart s),(Comput (ProgramPart s),s,4),(n + 1)) . (IC SCMPDS )
by AMI_1:51
.=
(abs ((Comput (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart s),s,4),n) . (DataLoc ((Comput (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart s),s,4),n) . SBP ),RetIC ))) + 2
by A21, SCMPDS_2:70, T
.=
2 + 2
by A10, A11, A19, A20, Th3, SCMPDS_1:def 23
;
then
s . (IC (Comput (ProgramPart s),s,(4 + (n + 1)))) = halt SCMPDS
by A6, Lm1;
then Result s =
Comput (ProgramPart s),s,(4 + (n + 1))
by AMI_1:56
.=
Comput (ProgramPart (Comput (ProgramPart s),s,4)),(Comput (ProgramPart s),s,4),(n + 1)
by AMI_1:51, T
;
hence
(Result s) . (intpos 9) = x gcd y
by A13, A14, A15, A18, A21, AMI_3:52, SCMPDS_2:70; verum