let n be Element of NAT ; :: thesis: for s being State of SCMPDS st GCD-Algorithm c= s & IC s = inspos 5 & n = s . SBP & s . GBP = 0 & s . (DataLoc (s . SBP ),3) > 0 holds
( IC (Computation s,7) = inspos (5 + 7) & Computation s,8 = Exec (goto (- 7)),(Computation s,7) & (Computation s,7) . SBP = n + 4 & (Computation s,7) . GBP = 0 & (Computation s,7) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) & (Computation s,7) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) & (Computation s,7) . (intpos (n + 4)) = n & (Computation s,7) . (intpos (n + 5)) = inspos 11 )

let s be State of SCMPDS ; :: thesis: ( GCD-Algorithm c= s & IC s = inspos 5 & n = s . SBP & s . GBP = 0 & s . (DataLoc (s . SBP ),3) > 0 implies ( IC (Computation s,7) = inspos (5 + 7) & Computation s,8 = Exec (goto (- 7)),(Computation s,7) & (Computation s,7) . SBP = n + 4 & (Computation s,7) . GBP = 0 & (Computation s,7) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) & (Computation s,7) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) & (Computation s,7) . (intpos (n + 4)) = n & (Computation s,7) . (intpos (n + 5)) = inspos 11 ) )
set x = s . (DataLoc (s . SBP ),2);
set y = s . (DataLoc (s . SBP ),3);
assume A1: GCD-Algorithm c= s ; :: thesis: ( not IC s = inspos 5 or not n = s . SBP or not s . GBP = 0 or not s . (DataLoc (s . SBP ),3) > 0 or ( IC (Computation s,7) = inspos (5 + 7) & Computation s,8 = Exec (goto (- 7)),(Computation s,7) & (Computation s,7) . SBP = n + 4 & (Computation s,7) . GBP = 0 & (Computation s,7) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) & (Computation s,7) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) & (Computation s,7) . (intpos (n + 4)) = n & (Computation s,7) . (intpos (n + 5)) = inspos 11 ) )
assume A2: IC s = inspos 5 ; :: thesis: ( not n = s . SBP or not s . GBP = 0 or not s . (DataLoc (s . SBP ),3) > 0 or ( IC (Computation s,7) = inspos (5 + 7) & Computation s,8 = Exec (goto (- 7)),(Computation s,7) & (Computation s,7) . SBP = n + 4 & (Computation s,7) . GBP = 0 & (Computation s,7) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) & (Computation s,7) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) & (Computation s,7) . (intpos (n + 4)) = n & (Computation s,7) . (intpos (n + 5)) = inspos 11 ) )
assume A3: n = s . SBP ; :: thesis: ( not s . GBP = 0 or not s . (DataLoc (s . SBP ),3) > 0 or ( IC (Computation s,7) = inspos (5 + 7) & Computation s,8 = Exec (goto (- 7)),(Computation s,7) & (Computation s,7) . SBP = n + 4 & (Computation s,7) . GBP = 0 & (Computation s,7) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) & (Computation s,7) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) & (Computation s,7) . (intpos (n + 4)) = n & (Computation s,7) . (intpos (n + 5)) = inspos 11 ) )
assume A4: s . GBP = 0 ; :: thesis: ( not s . (DataLoc (s . SBP ),3) > 0 or ( IC (Computation s,7) = inspos (5 + 7) & Computation s,8 = Exec (goto (- 7)),(Computation s,7) & (Computation s,7) . SBP = n + 4 & (Computation s,7) . GBP = 0 & (Computation s,7) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) & (Computation s,7) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) & (Computation s,7) . (intpos (n + 4)) = n & (Computation s,7) . (intpos (n + 5)) = inspos 11 ) )
assume A5: s . (DataLoc (s . SBP ),3) > 0 ; :: thesis: ( IC (Computation s,7) = inspos (5 + 7) & Computation s,8 = Exec (goto (- 7)),(Computation s,7) & (Computation s,7) . SBP = n + 4 & (Computation s,7) . GBP = 0 & (Computation s,7) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) & (Computation s,7) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) & (Computation s,7) . (intpos (n + 4)) = n & (Computation s,7) . (intpos (n + 5)) = inspos 11 )
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) = Next (IC s) by A5, SCMPDS_2:68
.= inspos (5 + 1) by A2 ;
then A8: CurInstr (Computation s,1) = s . (inspos 6) by AMI_1:54
.= SBP ,6 := SBP ,3 by A1, Lm1 ;
A9: Computation s,(1 + 1) = Following (Computation s,1) by AMI_1:14
.= Exec (SBP ,6 := SBP ,3),(Computation s,1) by A8 ;
A10: (Computation s,1) . SBP = n by A3, A6, SCMPDS_2:68;
A11: (Computation s,1) . GBP = 0 by A4, A6, SCMPDS_2:68;
A12: (Computation s,1) . (intpos (n + 3)) = (Computation s,1) . (DataLoc n,3) by Th5
.= s . (DataLoc (s . SBP ),3) by A3, A6, SCMPDS_2:68 ;
A13: (Computation s,1) . (intpos (n + 2)) = (Computation s,1) . (DataLoc n,2) by Th5
.= s . (DataLoc (s . SBP ),2) by A3, A6, SCMPDS_2:68 ;
A14: IC (Computation s,2) = Next (IC (Computation s,1)) by A9, SCMPDS_2:59
.= inspos (6 + 1) by A7 ;
then A15: CurInstr (Computation s,2) = s . (inspos 7) by AMI_1:54
.= Divide SBP ,2,SBP ,3 by A1, Lm1 ;
A16: Computation s,(2 + 1) = Following (Computation s,2) by AMI_1:14
.= Exec (Divide SBP ,2,SBP ,3),(Computation s,2) by A15 ;
A17: DataLoc ((Computation s,1) . SBP ),6 = intpos (n + 6) by A10, Th5;
then SBP <> DataLoc ((Computation s,1) . SBP ),6 by Lm3;
then A18: (Computation s,2) . SBP = n by A9, A10, SCMPDS_2:59;
GBP <> DataLoc ((Computation s,1) . SBP ),6 by A17, Lm2;
then A19: (Computation s,2) . GBP = 0 by A9, A11, SCMPDS_2:59;
A20: (Computation s,2) . (intpos (n + 6)) = (Computation s,1) . (DataLoc n,3) by A9, A10, A17, SCMPDS_2:59
.= s . (DataLoc (s . SBP ),3) by A12, Th5 ;
n + 3 <> n + 6 ;
then intpos (n + 3) <> DataLoc ((Computation s,1) . SBP ),6 by A17, AMI_3:52;
then A21: (Computation s,2) . (intpos (n + 3)) = s . (DataLoc (s . SBP ),3) by A9, A12, SCMPDS_2:59;
n + 2 <> n + 6 ;
then intpos (n + 2) <> DataLoc ((Computation s,1) . SBP ),6 by A17, AMI_3:52;
then A22: (Computation s,2) . (intpos (n + 2)) = s . (DataLoc (s . SBP ),2) by A9, A13, SCMPDS_2:59;
A23: IC (Computation s,3) = Next (IC (Computation s,2)) by A16, SCMPDS_2:64
.= inspos (7 + 1) by A14 ;
then A24: CurInstr (Computation s,3) = s . (inspos 8) by AMI_1:54
.= SBP ,7 := SBP ,3 by A1, Lm1 ;
A25: Computation s,(3 + 1) = Following (Computation s,3) by AMI_1:14
.= Exec (SBP ,7 := SBP ,3),(Computation s,3) by A24 ;
A26: DataLoc ((Computation s,2) . SBP ),2 = intpos (n + 2) by A18, Th5;
then A27: SBP <> DataLoc ((Computation s,2) . SBP ),2 by Lm3;
A28: DataLoc ((Computation s,2) . SBP ),3 = intpos (n + 3) by A18, Th5;
then SBP <> DataLoc ((Computation s,2) . SBP ),3 by Lm3;
then A29: (Computation s,3) . SBP = n by A16, A18, A27, SCMPDS_2:64;
A30: GBP <> DataLoc ((Computation s,2) . SBP ),2 by A26, Lm2;
GBP <> DataLoc ((Computation s,2) . SBP ),3 by A28, Lm2;
then A31: (Computation s,3) . GBP = 0 by A16, A19, A30, SCMPDS_2:64;
A32: (Computation s,3) . (intpos (n + 3)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) by A16, A21, A22, A26, A28, SCMPDS_2:64;
n + 6 <> n + 2 ;
then A33: intpos (n + 6) <> DataLoc ((Computation s,2) . SBP ),2 by A26, AMI_3:52;
n + 6 <> n + 3 ;
then intpos (n + 6) <> DataLoc ((Computation s,2) . SBP ),3 by A28, AMI_3:52;
then A34: (Computation s,3) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) by A16, A20, A33, SCMPDS_2:64;
A35: IC (Computation s,4) = Next (IC (Computation s,3)) by A25, SCMPDS_2:59
.= inspos (8 + 1) by A23 ;
then A36: CurInstr (Computation s,4) = s . (inspos 9) by AMI_1:54
.= SBP ,(4 + RetSP ) := GBP ,1 by A1, Lm1 ;
A37: Computation s,(4 + 1) = Following (Computation s,4) by AMI_1:14
.= Exec (SBP ,(4 + RetSP ) := GBP ,1),(Computation s,4) by A36 ;
A38: DataLoc ((Computation s,3) . SBP ),7 = intpos (n + 7) by A29, Th5;
then A39: SBP <> DataLoc ((Computation s,3) . SBP ),7 by Lm3;
then A40: (Computation s,4) . SBP = n by A25, A29, SCMPDS_2:59;
GBP <> DataLoc ((Computation s,3) . SBP ),7 by A38, Lm2;
then A41: (Computation s,4) . GBP = 0 by A25, A31, SCMPDS_2:59;
A42: (Computation s,4) . (intpos (n + 7)) = (Computation s,3) . (DataLoc n,3) by A25, A29, A38, SCMPDS_2:59
.= (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) by A32, Th5 ;
n + 6 <> n + 7 ;
then intpos (n + 6) <> DataLoc ((Computation s,3) . SBP ),7 by A38, AMI_3:52;
then A43: (Computation s,4) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) by A25, A34, SCMPDS_2:59;
A44: IC (Computation s,5) = Next (IC (Computation s,4)) by A37, SCMPDS_2:59
.= inspos (9 + 1) by A35 ;
then A45: CurInstr (Computation s,5) = s . (inspos 10) by AMI_1:54
.= AddTo GBP ,1,4 by A1, Lm1 ;
A46: Computation s,(5 + 1) = Following (Computation s,5) by AMI_1:14
.= Exec (AddTo GBP ,1,4),(Computation s,5) by A45 ;
A47: DataLoc ((Computation s,4) . SBP ),(4 + RetSP ) = intpos (n + (4 + 0 )) by A40, Th5, SCMPDS_1:def 22;
then SBP <> DataLoc ((Computation s,4) . SBP ),(4 + RetSP ) by Lm3;
then A48: (Computation s,5) . SBP = n by A37, A40, SCMPDS_2:59;
GBP <> DataLoc ((Computation s,4) . SBP ),(4 + RetSP ) by A47, Lm2;
then A49: (Computation s,5) . GBP = 0 by A37, A41, SCMPDS_2:59;
n + 7 <> n + 4 ;
then intpos (n + 7) <> DataLoc ((Computation s,4) . SBP ),(4 + RetSP ) by A47, AMI_3:52;
then A50: (Computation s,5) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) by A37, A42, SCMPDS_2:59;
n + 6 <> n + 4 ;
then intpos (n + 6) <> DataLoc ((Computation s,4) . SBP ),(4 + RetSP ) by A47, AMI_3:52;
then A51: (Computation s,5) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) by A37, A43, SCMPDS_2:59;
A52: (Computation s,5) . (intpos (n + 4)) = (Computation s,4) . (DataLoc 0 ,1) by A37, A41, A47, SCMPDS_2:59
.= (Computation s,4) . (intpos (0 + 1)) by Th5
.= n by A25, A29, A39, SCMPDS_2:59 ;
A53: IC (Computation s,6) = Next (IC (Computation s,5)) by A46, SCMPDS_2:60
.= inspos (10 + 1) by A44 ;
then A54: CurInstr (Computation s,6) = s . (inspos 11) by AMI_1:54
.= saveIC SBP ,RetIC by A1, Lm1 ;
A55: Computation s,(6 + 1) = Following (Computation s,6) by AMI_1:14
.= Exec (saveIC SBP ,RetIC ),(Computation s,6) by A54 ;
A56: DataLoc ((Computation s,5) . GBP ),1 = intpos (0 + 1) by A49, Th5;
then A57: (Computation s,6) . SBP = n + 4 by A46, A48, SCMPDS_2:60;
A58: (Computation s,6) . GBP = 0 by A46, A49, A56, Th7, SCMPDS_2:60;
n + 7 <> 1 by NAT_1:11;
then intpos (n + 7) <> DataLoc ((Computation s,5) . GBP ),1 by A56, AMI_3:52;
then A59: (Computation s,6) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) by A46, A50, SCMPDS_2:60;
n + 6 <> 1 by NAT_1:11;
then intpos (n + 6) <> DataLoc ((Computation s,5) . GBP ),1 by A56, AMI_3:52;
then A60: (Computation s,6) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) by A46, A51, SCMPDS_2:60;
n + 4 <> 1 by NAT_1:11;
then intpos (n + 4) <> DataLoc ((Computation s,5) . GBP ),1 by A56, AMI_3:52;
then A61: (Computation s,6) . (intpos (n + 4)) = n by A46, A52, SCMPDS_2:60;
thus IC (Computation s,7) = Next (IC (Computation s,6)) by A55, SCMPDS_2:71
.= inspos (11 + 1) by A53
.= inspos (5 + 7) ; :: thesis: ( Computation s,8 = Exec (goto (- 7)),(Computation s,7) & (Computation s,7) . SBP = n + 4 & (Computation s,7) . GBP = 0 & (Computation s,7) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) & (Computation s,7) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) & (Computation s,7) . (intpos (n + 4)) = n & (Computation s,7) . (intpos (n + 5)) = inspos 11 )
then A62: CurInstr (Computation s,7) = s . (inspos 12) by AMI_1:54
.= goto (- 7) by A1, Lm1 ;
thus Computation s,8 = Computation s,(7 + 1)
.= Following (Computation s,7) by AMI_1:14
.= Exec (goto (- 7)),(Computation s,7) by A62 ; :: thesis: ( (Computation s,7) . SBP = n + 4 & (Computation s,7) . GBP = 0 & (Computation s,7) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) & (Computation s,7) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) & (Computation s,7) . (intpos (n + 4)) = n & (Computation s,7) . (intpos (n + 5)) = inspos 11 )
A63: DataLoc ((Computation s,6) . SBP ),RetIC = intpos ((n + 4) + 1) by A57, Th5, SCMPDS_1:def 23
.= intpos (n + (4 + 1)) ;
then SBP <> DataLoc ((Computation s,6) . SBP ),RetIC by Lm3;
hence (Computation s,7) . SBP = n + 4 by A55, A57, SCMPDS_2:71; :: thesis: ( (Computation s,7) . GBP = 0 & (Computation s,7) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) & (Computation s,7) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) & (Computation s,7) . (intpos (n + 4)) = n & (Computation s,7) . (intpos (n + 5)) = inspos 11 )
GBP <> DataLoc ((Computation s,6) . SBP ),RetIC by A63, Lm2;
hence (Computation s,7) . GBP = 0 by A55, A58, SCMPDS_2:71; :: thesis: ( (Computation s,7) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) & (Computation s,7) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) & (Computation s,7) . (intpos (n + 4)) = n & (Computation s,7) . (intpos (n + 5)) = inspos 11 )
n + 7 <> n + 5 ;
then intpos (n + 7) <> DataLoc ((Computation s,6) . SBP ),RetIC by A63, AMI_3:52;
hence (Computation s,7) . (intpos (n + 7)) = (s . (DataLoc (s . SBP ),2)) mod (s . (DataLoc (s . SBP ),3)) by A55, A59, SCMPDS_2:71; :: thesis: ( (Computation s,7) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) & (Computation s,7) . (intpos (n + 4)) = n & (Computation s,7) . (intpos (n + 5)) = inspos 11 )
n + 6 <> n + 5 ;
then intpos (n + 6) <> DataLoc ((Computation s,6) . SBP ),RetIC by A63, AMI_3:52;
hence (Computation s,7) . (intpos (n + 6)) = s . (DataLoc (s . SBP ),3) by A55, A60, SCMPDS_2:71; :: thesis: ( (Computation s,7) . (intpos (n + 4)) = n & (Computation s,7) . (intpos (n + 5)) = inspos 11 )
n + 4 <> n + 5 ;
then intpos (n + 4) <> DataLoc ((Computation s,6) . SBP ),RetIC by A63, AMI_3:52;
hence (Computation s,7) . (intpos (n + 4)) = n by A55, A61, SCMPDS_2:71; :: thesis: (Computation s,7) . (intpos (n + 5)) = inspos 11
thus (Computation s,7) . (intpos (n + 5)) = inspos 11 by A53, A55, A63, SCMPDS_2:71; :: thesis: verum