let s be State of SCMPDS; ( Initialize 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 ((ProgramPart s),s)) . (intpos 9) = x gcd y )
set GA = GCD-Algorithm ;
assume A1:
Initialize GCD-Algorithm c= s
; for x, y being Integer st s . (intpos 9) = x & s . (intpos 10) = y & x >= 0 & y >= 0 holds
(Result ((ProgramPart s),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 ((ProgramPart s),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 ((ProgramPart s),s)) . (intpos 9) = x gcd y
set s4 = Comput ((ProgramPart s),s,4);
A6:
GCD-Algorithm c= s
by A1, COMPOS_1:132;
A7:
GCD-Algorithm c= Comput ((ProgramPart s),s,4)
by A1, AMI_1:81, COMPOS_1:132;
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:123;
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 EXTPRO_1:4
.=
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:123;
Th3x:
for m being Element of NAT st m = (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)) holds
m = 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)))
by ABSVALUE:46;
X: IC (Comput ((ProgramPart s),s,(4 + (n + 1)))) =
(Comput ((ProgramPart s),(Comput ((ProgramPart s),s,4)),(n + 1))) . (IC SCMPDS)
by EXTPRO_1:5
.=
(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, T, SCMPDS_2:70
.=
2 + 2
by A10, A11, A19, A20, Th3x, SCMPDS_1:def 23
;
(ProgramPart s) . (IC (Comput ((ProgramPart s),s,(4 + (n + 1))))) =
s . (IC (Comput ((ProgramPart s),s,(4 + (n + 1)))))
by COMPOS_1:2
.=
halt SCMPDS
by A6, Lm1, X
;
then Result ((ProgramPart s),s) =
Comput ((ProgramPart s),s,(4 + (n + 1)))
by EXTPRO_1:8
.=
Comput ((ProgramPart (Comput ((ProgramPart s),s,4))),(Comput ((ProgramPart s),s,4)),(n + 1))
by T, EXTPRO_1:5
;
hence
(Result ((ProgramPart s),s)) . (intpos 9) = x gcd y
by A13, A14, A15, A18, A21, AMI_3:52, SCMPDS_2:70; verum