:: SCMP_GCD semantic presentation begin definition let k be Nat; func intpos k -> Int_position equals :: SCMP_GCD:def 1 dl. k; coherence dl. k is Int_position by SCMPDS_2:def_1; end; :: deftheorem defines intpos SCMP_GCD:def_1_:_ for k being Nat holds intpos k = dl. k; theorem Th1: :: SCMP_GCD:1 for n1, n2 being Element of NAT holds DataLoc (n1,n2) = intpos (n1 + n2) proof let n1, n2 be Element of NAT ; ::_thesis: DataLoc (n1,n2) = intpos (n1 + n2) A1: n1 + n2 >= 0 by NAT_1:2; thus DataLoc (n1,n2) = [1,(abs (n1 + n2))] by SCMPDS_2:def_3 .= [1,(n1 + n2)] by A1, ABSVALUE:def_1 .= intpos (n1 + n2) ; ::_thesis: verum end; theorem Th2: :: SCMP_GCD:2 for s being State of SCMPDS for m1, m2 being Element of NAT st IC s = m1 + m2 holds ICplusConst (s,(- m2)) = m1 proof let s be State of SCMPDS; ::_thesis: for m1, m2 being Element of NAT st IC s = m1 + m2 holds ICplusConst (s,(- m2)) = m1 let m1, m2 be Element of NAT ; ::_thesis: ( IC s = m1 + m2 implies ICplusConst (s,(- m2)) = m1 ) assume A1: IC s = m1 + m2 ; ::_thesis: ICplusConst (s,(- m2)) = m1 consider m being Element of NAT such that A2: m = IC s and A3: ICplusConst (s,(- m2)) = abs (m + (- m2)) by SCMPDS_2:def_18; A4: m = m1 + m2 by A1, A2 .= m1 + m2 ; m1 >= 0 by NAT_1:2; hence ICplusConst (s,(- m2)) = m1 by A3, A4, ABSVALUE:def_1 .= m1 .= m1 ; ::_thesis: verum end; definition func GBP -> Int_position equals :: SCMP_GCD:def 2 intpos 0; coherence intpos 0 is Int_position ; func SBP -> Int_position equals :: SCMP_GCD:def 3 intpos 1; coherence intpos 1 is Int_position ; end; :: deftheorem defines GBP SCMP_GCD:def_2_:_ GBP = intpos 0; :: deftheorem defines SBP SCMP_GCD:def_3_:_ SBP = intpos 1; theorem :: SCMP_GCD:3 GBP <> SBP by AMI_3:10; theorem Th4: :: SCMP_GCD:4 for i being Instruction of SCMPDS for I being Program of SCMPDS holds card (I ';' i) = (card I) + 1 proof let i be Instruction of SCMPDS; ::_thesis: for I being Program of SCMPDS holds card (I ';' i) = (card I) + 1 let I be Program of SCMPDS; ::_thesis: card (I ';' i) = (card I) + 1 thus card (I ';' i) = card (I ';' (Load i)) by SCMPDS_4:def_3 .= (card I) + (card (Load i)) by AFINSQ_1:17 .= (card I) + 1 by COMPOS_1:54 ; ::_thesis: verum end; theorem Th5: :: SCMP_GCD:5 for i, j being Instruction of SCMPDS holds card (i ';' j) = 2 proof let i, j be Instruction of SCMPDS; ::_thesis: card (i ';' j) = 2 thus card (i ';' j) = card ((Load i) ';' (Load j)) by SCMPDS_4:def_4 .= (card (Load i)) + (card (Load j)) by AFINSQ_1:17 .= 1 + (card (Load j)) by COMPOS_1:54 .= 1 + 1 by COMPOS_1:54 .= 2 ; ::_thesis: verum end; theorem Th6: :: SCMP_GCD:6 for i being Instruction of SCMPDS for I being Program of SCMPDS holds ( (I ';' i) . (card I) = i & card I in dom (I ';' i) ) proof let i be Instruction of SCMPDS; ::_thesis: for I being Program of SCMPDS holds ( (I ';' i) . (card I) = i & card I in dom (I ';' i) ) let I be Program of SCMPDS; ::_thesis: ( (I ';' i) . (card I) = i & card I in dom (I ';' i) ) A1: 0 in dom (Load i) by COMPOS_1:50; thus (I ';' i) . (card I) = (I ';' i) . (0 + (card I)) .= (I ';' i) . (0 + (card I)) .= (I ';' (Load i)) . (0 + (card I)) by SCMPDS_4:def_3 .= (Load i) . 0 by A1, AFINSQ_1:def_3 .= i by COMPOS_1:52 ; ::_thesis: card I in dom (I ';' i) card (I ';' i) = (card I) + 1 by Th4; then card I < card (I ';' i) by XREAL_1:29; hence card I in dom (I ';' i) by AFINSQ_1:66; ::_thesis: verum end; theorem Th7: :: SCMP_GCD:7 for i being Instruction of SCMPDS for I, J being Program of SCMPDS holds ((I ';' i) ';' J) . (card I) = i proof let i be Instruction of SCMPDS; ::_thesis: for I, J being Program of SCMPDS holds ((I ';' i) ';' J) . (card I) = i let I, J be Program of SCMPDS; ::_thesis: ((I ';' i) ';' J) . (card I) = i card I in dom (I ';' i) by Th6; hence ((I ';' i) ';' J) . (card I) = (I ';' i) . (card I) by AFINSQ_1:def_3 .= i by Th6 ; ::_thesis: verum end; begin definition func GCD-Algorithm -> Program of SCMPDS equals :: SCMP_GCD:def 4 ((((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC))) ';' (goto (- 7))) ';' ((SBP,2) := (SBP,6))) ';' (return SBP); coherence ((((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC))) ';' (goto (- 7))) ';' ((SBP,2) := (SBP,6))) ';' (return SBP) is Program of SCMPDS ; end; :: deftheorem defines GCD-Algorithm SCMP_GCD:def_4_:_ GCD-Algorithm = ((((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC))) ';' (goto (- 7))) ';' ((SBP,2) := (SBP,6))) ';' (return SBP); set i00 = GBP := 0; set i01 = SBP := 7; set i02 = saveIC (SBP,RetIC); set i03 = goto 2; set i04 = halt SCMPDS; set i05 = (SBP,3) <=0_goto 9; set i06 = (SBP,6) := (SBP,3); set i07 = Divide (SBP,2,SBP,3); set i08 = (SBP,7) := (SBP,3); set i09 = (SBP,(4 + RetSP)) := (GBP,1); set i10 = AddTo (GBP,1,4); set i11 = saveIC (SBP,RetIC); set i12 = goto (- 7); set i13 = (SBP,2) := (SBP,6); set i14 = return SBP; begin theorem Th8: :: SCMP_GCD:8 card GCD-Algorithm = 15 proof set GCD1 = ((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS); set GCD2 = (((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1)); A1: card (((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) = (card ((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2))) + 1 by Th4 .= ((card (((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC)))) + 1) + 1 by Th4 .= (((card ((GBP := 0) ';' (SBP := 7))) + 1) + 1) + 1 by Th4 .= ((2 + 1) + 1) + 1 by Th5 .= 5 ; A2: card ((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) = (card (((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3)))) + 1 by Th4 .= ((card ((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3)))) + 1) + 1 by Th4 .= (((card (((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3)))) + 1) + 1) + 1 by Th4 .= ((((card ((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9))) + 1) + 1) + 1) + 1 by Th4 .= ((((5 + 1) + 1) + 1) + 1) + 1 by A1, Th4 .= 10 ; thus card GCD-Algorithm = (card ((((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC))) ';' (goto (- 7))) ';' ((SBP,2) := (SBP,6)))) + 1 by Th4 .= ((card (((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC))) ';' (goto (- 7)))) + 1) + 1 by Th4 .= (((card ((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC)))) + 1) + 1) + 1 by Th4 .= ((((card (((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4)))) + 1) + 1) + 1) + 1 by Th4 .= ((((10 + 1) + 1) + 1) + 1) + 1 by A2, Th4 .= 15 ; ::_thesis: verum end; theorem :: SCMP_GCD:9 for n being Element of NAT holds ( n < 15 iff n in dom GCD-Algorithm ) by Th8, AFINSQ_1:66; theorem Th10: :: SCMP_GCD:10 ( GCD-Algorithm . 0 = GBP := 0 & GCD-Algorithm . 1 = SBP := 7 & GCD-Algorithm . 2 = saveIC (SBP,RetIC) & GCD-Algorithm . 3 = goto 2 & GCD-Algorithm . 4 = halt SCMPDS & GCD-Algorithm . 5 = (SBP,3) <=0_goto 9 & GCD-Algorithm . 6 = (SBP,6) := (SBP,3) & GCD-Algorithm . 7 = Divide (SBP,2,SBP,3) & GCD-Algorithm . 8 = (SBP,7) := (SBP,3) & GCD-Algorithm . 9 = (SBP,(4 + RetSP)) := (GBP,1) & GCD-Algorithm . 10 = AddTo (GBP,1,4) & GCD-Algorithm . 11 = saveIC (SBP,RetIC) & GCD-Algorithm . 12 = goto (- 7) & GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) proof set I2 = (GBP := 0) ';' (SBP := 7); set I3 = ((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC)); set I4 = (((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2); set I5 = ((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS); set I6 = (((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9); set I7 = ((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3)); set I8 = (((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3)); set I9 = ((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3)); set I10 = (((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1)); set I11 = ((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4)); set I12 = (((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC)); set I13 = ((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC))) ';' (goto (- 7)); set I14 = (((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC))) ';' (goto (- 7))) ';' ((SBP,2) := (SBP,6)); A1: card ((GBP := 0) ';' (SBP := 7)) = 2 by Th5; then A2: card (((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) = 2 + 1 by Th4; then A3: card ((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) = 3 + 1 by Th4; then A4: card (((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) = 4 + 1 by Th4; then A5: card ((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) = 5 + 1 by Th4; then A6: card (((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) = 6 + 1 by Th4; then A7: card ((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) = 7 + 1 by Th4; then A8: card (((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) = 8 + 1 by Th4; then A9: card ((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) = 9 + 1 by Th4; then A10: card (((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) = 10 + 1 by Th4; then A11: card ((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC))) = 11 + 1 by Th4; then A12: card (((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC))) ';' (goto (- 7))) = 12 + 1 by Th4; then A13: card ((((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC))) ';' (goto (- 7))) ';' ((SBP,2) := (SBP,6))) = 13 + 1 by Th4; set J14 = ((SBP,2) := (SBP,6)) ';' (return SBP); set J13 = (goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP)); set J12 = (saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP))); set J11 = (AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP)))); set J10 = ((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP))))); set J9 = ((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP)))))); set J8 = (Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP))))))); set J7 = ((SBP,6) := (SBP,3)) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP)))))))); set J6 = ((SBP,3) <=0_goto 9) ';' (((SBP,6) := (SBP,3)) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP))))))))); set J5 = (halt SCMPDS) ';' (((SBP,3) <=0_goto 9) ';' (((SBP,6) := (SBP,3)) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP)))))))))); set J4 = (goto 2) ';' ((halt SCMPDS) ';' (((SBP,3) <=0_goto 9) ';' (((SBP,6) := (SBP,3)) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP))))))))))); set J3 = (saveIC (SBP,RetIC)) ';' ((goto 2) ';' ((halt SCMPDS) ';' (((SBP,3) <=0_goto 9) ';' (((SBP,6) := (SBP,3)) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP)))))))))))); set J2 = (SBP := 7) ';' ((saveIC (SBP,RetIC)) ';' ((goto 2) ';' ((halt SCMPDS) ';' (((SBP,3) <=0_goto 9) ';' (((SBP,6) := (SBP,3)) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP))))))))))))); A14: GCD-Algorithm = (((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC))) ';' (goto (- 7))) ';' (((SBP,2) := (SBP,6)) ';' (return SBP)) by SCMPDS_4:13; then A15: GCD-Algorithm = ((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC))) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP))) by SCMPDS_4:12; then A16: GCD-Algorithm = (((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP)))) by SCMPDS_4:12; then A17: GCD-Algorithm = ((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP))))) by SCMPDS_4:12; then A18: GCD-Algorithm = (((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP)))))) by SCMPDS_4:12; then A19: GCD-Algorithm = ((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP))))))) by SCMPDS_4:12; then A20: GCD-Algorithm = (((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP)))))))) by SCMPDS_4:12; then A21: GCD-Algorithm = ((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' (((SBP,6) := (SBP,3)) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP))))))))) by SCMPDS_4:12; then A22: GCD-Algorithm = (((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' (((SBP,3) <=0_goto 9) ';' (((SBP,6) := (SBP,3)) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP)))))))))) by SCMPDS_4:12; then A23: GCD-Algorithm = ((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' ((halt SCMPDS) ';' (((SBP,3) <=0_goto 9) ';' (((SBP,6) := (SBP,3)) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP))))))))))) by SCMPDS_4:12; then A24: GCD-Algorithm = (((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' ((goto 2) ';' ((halt SCMPDS) ';' (((SBP,3) <=0_goto 9) ';' (((SBP,6) := (SBP,3)) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP)))))))))))) by SCMPDS_4:12; then A25: GCD-Algorithm = ((GBP := 0) ';' (SBP := 7)) ';' ((saveIC (SBP,RetIC)) ';' ((goto 2) ';' ((halt SCMPDS) ';' (((SBP,3) <=0_goto 9) ';' (((SBP,6) := (SBP,3)) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP))))))))))))) by SCMPDS_4:12; then GCD-Algorithm = (GBP := 0) ';' ((SBP := 7) ';' ((saveIC (SBP,RetIC)) ';' ((goto 2) ';' ((halt SCMPDS) ';' (((SBP,3) <=0_goto 9) ';' (((SBP,6) := (SBP,3)) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP)))))))))))))) by SCMPDS_4:16; hence GCD-Algorithm . 0 = GBP := 0 by SCMPDS_6:7; ::_thesis: ( GCD-Algorithm . 1 = SBP := 7 & GCD-Algorithm . 2 = saveIC (SBP,RetIC) & GCD-Algorithm . 3 = goto 2 & GCD-Algorithm . 4 = halt SCMPDS & GCD-Algorithm . 5 = (SBP,3) <=0_goto 9 & GCD-Algorithm . 6 = (SBP,6) := (SBP,3) & GCD-Algorithm . 7 = Divide (SBP,2,SBP,3) & GCD-Algorithm . 8 = (SBP,7) := (SBP,3) & GCD-Algorithm . 9 = (SBP,(4 + RetSP)) := (GBP,1) & GCD-Algorithm . 10 = AddTo (GBP,1,4) & GCD-Algorithm . 11 = saveIC (SBP,RetIC) & GCD-Algorithm . 12 = goto (- 7) & GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) A26: card (Load (GBP := 0)) = 1 by COMPOS_1:54; GCD-Algorithm = ((Load (GBP := 0)) ';' (SBP := 7)) ';' ((saveIC (SBP,RetIC)) ';' ((goto 2) ';' ((halt SCMPDS) ';' (((SBP,3) <=0_goto 9) ';' (((SBP,6) := (SBP,3)) ';' ((Divide (SBP,2,SBP,3)) ';' (((SBP,7) := (SBP,3)) ';' (((SBP,(4 + RetSP)) := (GBP,1)) ';' ((AddTo (GBP,1,4)) ';' ((saveIC (SBP,RetIC)) ';' ((goto (- 7)) ';' (((SBP,2) := (SBP,6)) ';' (return SBP))))))))))))) by A25, SCMPDS_4:9; hence GCD-Algorithm . 1 = SBP := 7 by A26, Th7; ::_thesis: ( GCD-Algorithm . 2 = saveIC (SBP,RetIC) & GCD-Algorithm . 3 = goto 2 & GCD-Algorithm . 4 = halt SCMPDS & GCD-Algorithm . 5 = (SBP,3) <=0_goto 9 & GCD-Algorithm . 6 = (SBP,6) := (SBP,3) & GCD-Algorithm . 7 = Divide (SBP,2,SBP,3) & GCD-Algorithm . 8 = (SBP,7) := (SBP,3) & GCD-Algorithm . 9 = (SBP,(4 + RetSP)) := (GBP,1) & GCD-Algorithm . 10 = AddTo (GBP,1,4) & GCD-Algorithm . 11 = saveIC (SBP,RetIC) & GCD-Algorithm . 12 = goto (- 7) & GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) thus GCD-Algorithm . 2 = saveIC (SBP,RetIC) by A1, A24, Th7; ::_thesis: ( GCD-Algorithm . 3 = goto 2 & GCD-Algorithm . 4 = halt SCMPDS & GCD-Algorithm . 5 = (SBP,3) <=0_goto 9 & GCD-Algorithm . 6 = (SBP,6) := (SBP,3) & GCD-Algorithm . 7 = Divide (SBP,2,SBP,3) & GCD-Algorithm . 8 = (SBP,7) := (SBP,3) & GCD-Algorithm . 9 = (SBP,(4 + RetSP)) := (GBP,1) & GCD-Algorithm . 10 = AddTo (GBP,1,4) & GCD-Algorithm . 11 = saveIC (SBP,RetIC) & GCD-Algorithm . 12 = goto (- 7) & GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) thus GCD-Algorithm . 3 = goto 2 by A2, A23, Th7; ::_thesis: ( GCD-Algorithm . 4 = halt SCMPDS & GCD-Algorithm . 5 = (SBP,3) <=0_goto 9 & GCD-Algorithm . 6 = (SBP,6) := (SBP,3) & GCD-Algorithm . 7 = Divide (SBP,2,SBP,3) & GCD-Algorithm . 8 = (SBP,7) := (SBP,3) & GCD-Algorithm . 9 = (SBP,(4 + RetSP)) := (GBP,1) & GCD-Algorithm . 10 = AddTo (GBP,1,4) & GCD-Algorithm . 11 = saveIC (SBP,RetIC) & GCD-Algorithm . 12 = goto (- 7) & GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) thus GCD-Algorithm . 4 = halt SCMPDS by A3, A22, Th7; ::_thesis: ( GCD-Algorithm . 5 = (SBP,3) <=0_goto 9 & GCD-Algorithm . 6 = (SBP,6) := (SBP,3) & GCD-Algorithm . 7 = Divide (SBP,2,SBP,3) & GCD-Algorithm . 8 = (SBP,7) := (SBP,3) & GCD-Algorithm . 9 = (SBP,(4 + RetSP)) := (GBP,1) & GCD-Algorithm . 10 = AddTo (GBP,1,4) & GCD-Algorithm . 11 = saveIC (SBP,RetIC) & GCD-Algorithm . 12 = goto (- 7) & GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) thus GCD-Algorithm . 5 = (SBP,3) <=0_goto 9 by A4, A21, Th7; ::_thesis: ( GCD-Algorithm . 6 = (SBP,6) := (SBP,3) & GCD-Algorithm . 7 = Divide (SBP,2,SBP,3) & GCD-Algorithm . 8 = (SBP,7) := (SBP,3) & GCD-Algorithm . 9 = (SBP,(4 + RetSP)) := (GBP,1) & GCD-Algorithm . 10 = AddTo (GBP,1,4) & GCD-Algorithm . 11 = saveIC (SBP,RetIC) & GCD-Algorithm . 12 = goto (- 7) & GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) thus GCD-Algorithm . 6 = (SBP,6) := (SBP,3) by A5, A20, Th7; ::_thesis: ( GCD-Algorithm . 7 = Divide (SBP,2,SBP,3) & GCD-Algorithm . 8 = (SBP,7) := (SBP,3) & GCD-Algorithm . 9 = (SBP,(4 + RetSP)) := (GBP,1) & GCD-Algorithm . 10 = AddTo (GBP,1,4) & GCD-Algorithm . 11 = saveIC (SBP,RetIC) & GCD-Algorithm . 12 = goto (- 7) & GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) thus GCD-Algorithm . 7 = Divide (SBP,2,SBP,3) by A6, A19, Th7; ::_thesis: ( GCD-Algorithm . 8 = (SBP,7) := (SBP,3) & GCD-Algorithm . 9 = (SBP,(4 + RetSP)) := (GBP,1) & GCD-Algorithm . 10 = AddTo (GBP,1,4) & GCD-Algorithm . 11 = saveIC (SBP,RetIC) & GCD-Algorithm . 12 = goto (- 7) & GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) thus GCD-Algorithm . 8 = (SBP,7) := (SBP,3) by A7, A18, Th7; ::_thesis: ( GCD-Algorithm . 9 = (SBP,(4 + RetSP)) := (GBP,1) & GCD-Algorithm . 10 = AddTo (GBP,1,4) & GCD-Algorithm . 11 = saveIC (SBP,RetIC) & GCD-Algorithm . 12 = goto (- 7) & GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) thus GCD-Algorithm . 9 = (SBP,(4 + RetSP)) := (GBP,1) by A8, A17, Th7; ::_thesis: ( GCD-Algorithm . 10 = AddTo (GBP,1,4) & GCD-Algorithm . 11 = saveIC (SBP,RetIC) & GCD-Algorithm . 12 = goto (- 7) & GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) thus GCD-Algorithm . 10 = AddTo (GBP,1,4) by A9, A16, Th7; ::_thesis: ( GCD-Algorithm . 11 = saveIC (SBP,RetIC) & GCD-Algorithm . 12 = goto (- 7) & GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) thus GCD-Algorithm . 11 = saveIC (SBP,RetIC) by A10, A15, Th7; ::_thesis: ( GCD-Algorithm . 12 = goto (- 7) & GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) thus GCD-Algorithm . 12 = goto (- 7) by A11, A14, Th7; ::_thesis: ( GCD-Algorithm . 13 = (SBP,2) := (SBP,6) & GCD-Algorithm . 14 = return SBP ) GCD-Algorithm = ((((((((((((((GBP := 0) ';' (SBP := 7)) ';' (saveIC (SBP,RetIC))) ';' (goto 2)) ';' (halt SCMPDS)) ';' ((SBP,3) <=0_goto 9)) ';' ((SBP,6) := (SBP,3))) ';' (Divide (SBP,2,SBP,3))) ';' ((SBP,7) := (SBP,3))) ';' ((SBP,(4 + RetSP)) := (GBP,1))) ';' (AddTo (GBP,1,4))) ';' (saveIC (SBP,RetIC))) ';' (goto (- 7))) ';' ((SBP,2) := (SBP,6))) ';' (Load (return SBP)) by SCMPDS_4:def_3; hence GCD-Algorithm . 13 = (SBP,2) := (SBP,6) by A12, Th7; ::_thesis: GCD-Algorithm . 14 = return SBP thus GCD-Algorithm . 14 = return SBP by A13, Th6; ::_thesis: verum end; Lm1: for P being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P holds ( P . 0 = GBP := 0 & P . 1 = SBP := 7 & P . 2 = saveIC (SBP,RetIC) & P . 3 = goto 2 & P . 4 = halt SCMPDS & P . 5 = (SBP,3) <=0_goto 9 & P . 6 = (SBP,6) := (SBP,3) & P . 7 = Divide (SBP,2,SBP,3) & P . 8 = (SBP,7) := (SBP,3) & P . 9 = (SBP,(4 + RetSP)) := (GBP,1) & P . 10 = AddTo (GBP,1,4) & P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) proof let P be Instruction-Sequence of SCMPDS; ::_thesis: ( GCD-Algorithm c= P implies ( P . 0 = GBP := 0 & P . 1 = SBP := 7 & P . 2 = saveIC (SBP,RetIC) & P . 3 = goto 2 & P . 4 = halt SCMPDS & P . 5 = (SBP,3) <=0_goto 9 & P . 6 = (SBP,6) := (SBP,3) & P . 7 = Divide (SBP,2,SBP,3) & P . 8 = (SBP,7) := (SBP,3) & P . 9 = (SBP,(4 + RetSP)) := (GBP,1) & P . 10 = AddTo (GBP,1,4) & P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) ) set GA = GCD-Algorithm ; assume A1: GCD-Algorithm c= P ; ::_thesis: ( P . 0 = GBP := 0 & P . 1 = SBP := 7 & P . 2 = saveIC (SBP,RetIC) & P . 3 = goto 2 & P . 4 = halt SCMPDS & P . 5 = (SBP,3) <=0_goto 9 & P . 6 = (SBP,6) := (SBP,3) & P . 7 = Divide (SBP,2,SBP,3) & P . 8 = (SBP,7) := (SBP,3) & P . 9 = (SBP,(4 + RetSP)) := (GBP,1) & P . 10 = AddTo (GBP,1,4) & P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 0 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 0 = GBP := 0 by A1, Th10, GRFUNC_1:2; ::_thesis: ( P . 1 = SBP := 7 & P . 2 = saveIC (SBP,RetIC) & P . 3 = goto 2 & P . 4 = halt SCMPDS & P . 5 = (SBP,3) <=0_goto 9 & P . 6 = (SBP,6) := (SBP,3) & P . 7 = Divide (SBP,2,SBP,3) & P . 8 = (SBP,7) := (SBP,3) & P . 9 = (SBP,(4 + RetSP)) := (GBP,1) & P . 10 = AddTo (GBP,1,4) & P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 1 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 1 = SBP := 7 by A1, Th10, GRFUNC_1:2; ::_thesis: ( P . 2 = saveIC (SBP,RetIC) & P . 3 = goto 2 & P . 4 = halt SCMPDS & P . 5 = (SBP,3) <=0_goto 9 & P . 6 = (SBP,6) := (SBP,3) & P . 7 = Divide (SBP,2,SBP,3) & P . 8 = (SBP,7) := (SBP,3) & P . 9 = (SBP,(4 + RetSP)) := (GBP,1) & P . 10 = AddTo (GBP,1,4) & P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 2 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 2 = saveIC (SBP,RetIC) by A1, Th10, GRFUNC_1:2; ::_thesis: ( P . 3 = goto 2 & P . 4 = halt SCMPDS & P . 5 = (SBP,3) <=0_goto 9 & P . 6 = (SBP,6) := (SBP,3) & P . 7 = Divide (SBP,2,SBP,3) & P . 8 = (SBP,7) := (SBP,3) & P . 9 = (SBP,(4 + RetSP)) := (GBP,1) & P . 10 = AddTo (GBP,1,4) & P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 3 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 3 = goto 2 by A1, Th10, GRFUNC_1:2; ::_thesis: ( P . 4 = halt SCMPDS & P . 5 = (SBP,3) <=0_goto 9 & P . 6 = (SBP,6) := (SBP,3) & P . 7 = Divide (SBP,2,SBP,3) & P . 8 = (SBP,7) := (SBP,3) & P . 9 = (SBP,(4 + RetSP)) := (GBP,1) & P . 10 = AddTo (GBP,1,4) & P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 4 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 4 = halt SCMPDS by A1, Th10, GRFUNC_1:2; ::_thesis: ( P . 5 = (SBP,3) <=0_goto 9 & P . 6 = (SBP,6) := (SBP,3) & P . 7 = Divide (SBP,2,SBP,3) & P . 8 = (SBP,7) := (SBP,3) & P . 9 = (SBP,(4 + RetSP)) := (GBP,1) & P . 10 = AddTo (GBP,1,4) & P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 5 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 5 = (SBP,3) <=0_goto 9 by A1, Th10, GRFUNC_1:2; ::_thesis: ( P . 6 = (SBP,6) := (SBP,3) & P . 7 = Divide (SBP,2,SBP,3) & P . 8 = (SBP,7) := (SBP,3) & P . 9 = (SBP,(4 + RetSP)) := (GBP,1) & P . 10 = AddTo (GBP,1,4) & P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 6 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 6 = (SBP,6) := (SBP,3) by A1, Th10, GRFUNC_1:2; ::_thesis: ( P . 7 = Divide (SBP,2,SBP,3) & P . 8 = (SBP,7) := (SBP,3) & P . 9 = (SBP,(4 + RetSP)) := (GBP,1) & P . 10 = AddTo (GBP,1,4) & P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 7 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 7 = Divide (SBP,2,SBP,3) by A1, Th10, GRFUNC_1:2; ::_thesis: ( P . 8 = (SBP,7) := (SBP,3) & P . 9 = (SBP,(4 + RetSP)) := (GBP,1) & P . 10 = AddTo (GBP,1,4) & P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 8 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 8 = (SBP,7) := (SBP,3) by A1, Th10, GRFUNC_1:2; ::_thesis: ( P . 9 = (SBP,(4 + RetSP)) := (GBP,1) & P . 10 = AddTo (GBP,1,4) & P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 9 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 9 = (SBP,(4 + RetSP)) := (GBP,1) by A1, Th10, GRFUNC_1:2; ::_thesis: ( P . 10 = AddTo (GBP,1,4) & P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 10 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 10 = AddTo (GBP,1,4) by A1, Th10, GRFUNC_1:2; ::_thesis: ( P . 11 = saveIC (SBP,RetIC) & P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 11 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 11 = saveIC (SBP,RetIC) by A1, Th10, GRFUNC_1:2; ::_thesis: ( P . 12 = goto (- 7) & P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 12 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 12 = goto (- 7) by A1, Th10, GRFUNC_1:2; ::_thesis: ( P . 13 = (SBP,2) := (SBP,6) & P . 14 = return SBP ) 13 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 13 = (SBP,2) := (SBP,6) by A1, Th10, GRFUNC_1:2; ::_thesis: P . 14 = return SBP 14 in dom GCD-Algorithm by Th8, AFINSQ_1:66; hence P . 14 = return SBP by A1, Th10, GRFUNC_1:2; ::_thesis: verum end; theorem Th11: :: SCMP_GCD:11 for P being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P holds for s being 0 -started State of SCMPDS holds ( IC (Comput (P,s,4)) = 5 & (Comput (P,s,4)) . GBP = 0 & (Comput (P,s,4)) . SBP = 7 & (Comput (P,s,4)) . (intpos (7 + RetIC)) = 2 & (Comput (P,s,4)) . (intpos 9) = s . (intpos 9) & (Comput (P,s,4)) . (intpos 10) = s . (intpos 10) ) proof let P be Instruction-Sequence of SCMPDS; ::_thesis: ( GCD-Algorithm c= P implies for s being 0 -started State of SCMPDS holds ( IC (Comput (P,s,4)) = 5 & (Comput (P,s,4)) . GBP = 0 & (Comput (P,s,4)) . SBP = 7 & (Comput (P,s,4)) . (intpos (7 + RetIC)) = 2 & (Comput (P,s,4)) . (intpos 9) = s . (intpos 9) & (Comput (P,s,4)) . (intpos 10) = s . (intpos 10) ) ) assume A1: GCD-Algorithm c= P ; ::_thesis: for s being 0 -started State of SCMPDS holds ( IC (Comput (P,s,4)) = 5 & (Comput (P,s,4)) . GBP = 0 & (Comput (P,s,4)) . SBP = 7 & (Comput (P,s,4)) . (intpos (7 + RetIC)) = 2 & (Comput (P,s,4)) . (intpos 9) = s . (intpos 9) & (Comput (P,s,4)) . (intpos 10) = s . (intpos 10) ) let s be 0 -started State of SCMPDS; ::_thesis: ( IC (Comput (P,s,4)) = 5 & (Comput (P,s,4)) . GBP = 0 & (Comput (P,s,4)) . SBP = 7 & (Comput (P,s,4)) . (intpos (7 + RetIC)) = 2 & (Comput (P,s,4)) . (intpos 9) = s . (intpos 9) & (Comput (P,s,4)) . (intpos 10) = s . (intpos 10) ) set GA = GCD-Algorithm ; A2: IC s = 0 by MEMSTR_0:def_12; A3: P /. (IC s) = P . (IC s) by PBOOLE:143; A4: P /. (IC (Comput (P,s,1))) = P . (IC (Comput (P,s,1))) by PBOOLE:143; A5: Comput (P,s,(0 + 1)) = Following (P,(Comput (P,s,0))) by EXTPRO_1:3 .= Following (P,s) by EXTPRO_1:2 .= Exec ((GBP := 0),s) by A2, Lm1, A3, A1 ; then A6: IC (Comput (P,s,1)) = succ (IC s) by SCMPDS_2:45 .= 0 + 1 by A2 ; then A7: CurInstr (P,(Comput (P,s,1))) = P . 1 by A4 .= SBP := 7 by Lm1, A1 ; A8: Comput (P,s,(1 + 1)) = Following (P,(Comput (P,s,1))) by EXTPRO_1:3 .= Exec ((SBP := 7),(Comput (P,s,1))) by A7 ; A9: (Comput (P,s,1)) . GBP = 0 by A5, SCMPDS_2:45; A10: (Comput (P,s,1)) . (intpos 9) = s . (intpos 9) by A5, AMI_3:10, SCMPDS_2:45; A11: (Comput (P,s,1)) . (intpos 10) = s . (intpos 10) by A5, AMI_3:10, SCMPDS_2:45; A12: P /. (IC (Comput (P,s,2))) = P . (IC (Comput (P,s,2))) by PBOOLE:143; A13: IC (Comput (P,s,2)) = succ (IC (Comput (P,s,1))) by A8, SCMPDS_2:45 .= 1 + 1 by A6 ; then A14: CurInstr (P,(Comput (P,s,2))) = P . 2 by A12 .= saveIC (SBP,RetIC) by Lm1, A1 ; A15: Comput (P,s,(2 + 1)) = Following (P,(Comput (P,s,2))) by EXTPRO_1:3 .= Exec ((saveIC (SBP,RetIC)),(Comput (P,s,2))) by A14 ; A16: (Comput (P,s,2)) . GBP = 0 by A8, A9, AMI_3:10, SCMPDS_2:45; A17: (Comput (P,s,2)) . SBP = 7 by A8, SCMPDS_2:45; A18: (Comput (P,s,2)) . (intpos 9) = s . (intpos 9) by A8, A10, AMI_3:10, SCMPDS_2:45; A19: (Comput (P,s,2)) . (intpos 10) = s . (intpos 10) by A8, A11, AMI_3:10, SCMPDS_2:45; A20: P /. (IC (Comput (P,s,3))) = P . (IC (Comput (P,s,3))) by PBOOLE:143; A21: IC (Comput (P,s,3)) = succ (IC (Comput (P,s,2))) by A15, SCMPDS_2:59 .= 2 + 1 by A13 ; then A22: CurInstr (P,(Comput (P,s,3))) = P . 3 by A20 .= goto 2 by Lm1, A1 ; A23: Comput (P,s,(3 + 1)) = Following (P,(Comput (P,s,3))) by EXTPRO_1:3 .= Exec ((goto 2),(Comput (P,s,3))) by A22 ; A24: DataLoc (((Comput (P,s,2)) . SBP),RetIC) = intpos (7 + 1) by A17, Th1, SCMPDS_I:def_14; then A25: (Comput (P,s,3)) . GBP = 0 by A15, A16, AMI_3:10, SCMPDS_2:59; A26: (Comput (P,s,3)) . SBP = 7 by A15, A17, A24, AMI_3:10, SCMPDS_2:59; A27: (Comput (P,s,3)) . (intpos 8) = 2 by A13, A15, A24, SCMPDS_2:59; A28: (Comput (P,s,3)) . (intpos 9) = s . (intpos 9) by A15, A18, A24, AMI_3:10, SCMPDS_2:59; A29: (Comput (P,s,3)) . (intpos 10) = s . (intpos 10) by A15, A19, A24, AMI_3:10, SCMPDS_2:59; thus IC (Comput (P,s,4)) = ICplusConst ((Comput (P,s,3)),2) by A23, SCMPDS_2:54 .= 3 + 2 by A21, SCMPDS_6:12 .= 5 ; ::_thesis: ( (Comput (P,s,4)) . GBP = 0 & (Comput (P,s,4)) . SBP = 7 & (Comput (P,s,4)) . (intpos (7 + RetIC)) = 2 & (Comput (P,s,4)) . (intpos 9) = s . (intpos 9) & (Comput (P,s,4)) . (intpos 10) = s . (intpos 10) ) thus (Comput (P,s,4)) . GBP = 0 by A23, A25, SCMPDS_2:54; ::_thesis: ( (Comput (P,s,4)) . SBP = 7 & (Comput (P,s,4)) . (intpos (7 + RetIC)) = 2 & (Comput (P,s,4)) . (intpos 9) = s . (intpos 9) & (Comput (P,s,4)) . (intpos 10) = s . (intpos 10) ) thus (Comput (P,s,4)) . SBP = 7 by A23, A26, SCMPDS_2:54; ::_thesis: ( (Comput (P,s,4)) . (intpos (7 + RetIC)) = 2 & (Comput (P,s,4)) . (intpos 9) = s . (intpos 9) & (Comput (P,s,4)) . (intpos 10) = s . (intpos 10) ) thus (Comput (P,s,4)) . (intpos (7 + RetIC)) = 2 by A23, A27, SCMPDS_2:54, SCMPDS_I:def_14; ::_thesis: ( (Comput (P,s,4)) . (intpos 9) = s . (intpos 9) & (Comput (P,s,4)) . (intpos 10) = s . (intpos 10) ) thus (Comput (P,s,4)) . (intpos 9) = s . (intpos 9) by A23, A28, SCMPDS_2:54; ::_thesis: (Comput (P,s,4)) . (intpos 10) = s . (intpos 10) thus (Comput (P,s,4)) . (intpos 10) = s . (intpos 10) by A23, A29, SCMPDS_2:54; ::_thesis: verum end; Lm2: for n, m being Element of NAT st n > 0 holds GBP <> intpos (m + n) proof let n, m be Element of NAT ; ::_thesis: ( n > 0 implies GBP <> intpos (m + n) ) assume A1: n > 0 ; ::_thesis: GBP <> intpos (m + n) n <= m + n by NAT_1:11; hence GBP <> intpos (m + n) by A1, AMI_3:10; ::_thesis: verum end; Lm3: for n, m being Element of NAT st n > 1 holds SBP <> intpos (m + n) proof let n, m be Element of NAT ; ::_thesis: ( n > 1 implies SBP <> intpos (m + n) ) assume A1: n > 1 ; ::_thesis: SBP <> intpos (m + n) n <= m + n by NAT_1:11; hence SBP <> intpos (m + n) by A1, AMI_3:10; ::_thesis: verum end; Lm4: for n being Element of NAT for s being State of SCMPDS for P being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P & IC s = 5 & n = s . SBP & s . GBP = 0 & s . (DataLoc ((s . SBP),3)) > 0 holds ( IC (Comput (P,s,7)) = 5 + 7 & Comput (P,s,8) = Exec ((goto (- 7)),(Comput (P,s,7))) & (Comput (P,s,7)) . SBP = n + 4 & (Comput (P,s,7)) . GBP = 0 & (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) & (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) proof let n be Element of NAT ; ::_thesis: for s being State of SCMPDS for P being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P & IC s = 5 & n = s . SBP & s . GBP = 0 & s . (DataLoc ((s . SBP),3)) > 0 holds ( IC (Comput (P,s,7)) = 5 + 7 & Comput (P,s,8) = Exec ((goto (- 7)),(Comput (P,s,7))) & (Comput (P,s,7)) . SBP = n + 4 & (Comput (P,s,7)) . GBP = 0 & (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) & (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) let s be State of SCMPDS; ::_thesis: for P being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P & IC s = 5 & n = s . SBP & s . GBP = 0 & s . (DataLoc ((s . SBP),3)) > 0 holds ( IC (Comput (P,s,7)) = 5 + 7 & Comput (P,s,8) = Exec ((goto (- 7)),(Comput (P,s,7))) & (Comput (P,s,7)) . SBP = n + 4 & (Comput (P,s,7)) . GBP = 0 & (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) & (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) let P be Instruction-Sequence of SCMPDS; ::_thesis: ( GCD-Algorithm c= P & IC s = 5 & n = s . SBP & s . GBP = 0 & s . (DataLoc ((s . SBP),3)) > 0 implies ( IC (Comput (P,s,7)) = 5 + 7 & Comput (P,s,8) = Exec ((goto (- 7)),(Comput (P,s,7))) & (Comput (P,s,7)) . SBP = n + 4 & (Comput (P,s,7)) . GBP = 0 & (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) & (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) ) set x = s . (DataLoc ((s . SBP),2)); set y = s . (DataLoc ((s . SBP),3)); assume A1: GCD-Algorithm c= P ; ::_thesis: ( not IC s = 5 or not n = s . SBP or not s . GBP = 0 or not s . (DataLoc ((s . SBP),3)) > 0 or ( IC (Comput (P,s,7)) = 5 + 7 & Comput (P,s,8) = Exec ((goto (- 7)),(Comput (P,s,7))) & (Comput (P,s,7)) . SBP = n + 4 & (Comput (P,s,7)) . GBP = 0 & (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) & (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) ) assume A2: IC s = 5 ; ::_thesis: ( not n = s . SBP or not s . GBP = 0 or not s . (DataLoc ((s . SBP),3)) > 0 or ( IC (Comput (P,s,7)) = 5 + 7 & Comput (P,s,8) = Exec ((goto (- 7)),(Comput (P,s,7))) & (Comput (P,s,7)) . SBP = n + 4 & (Comput (P,s,7)) . GBP = 0 & (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) & (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) ) assume A3: n = s . SBP ; ::_thesis: ( not s . GBP = 0 or not s . (DataLoc ((s . SBP),3)) > 0 or ( IC (Comput (P,s,7)) = 5 + 7 & Comput (P,s,8) = Exec ((goto (- 7)),(Comput (P,s,7))) & (Comput (P,s,7)) . SBP = n + 4 & (Comput (P,s,7)) . GBP = 0 & (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) & (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) ) assume A4: s . GBP = 0 ; ::_thesis: ( not s . (DataLoc ((s . SBP),3)) > 0 or ( IC (Comput (P,s,7)) = 5 + 7 & Comput (P,s,8) = Exec ((goto (- 7)),(Comput (P,s,7))) & (Comput (P,s,7)) . SBP = n + 4 & (Comput (P,s,7)) . GBP = 0 & (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) & (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) ) assume A5: s . (DataLoc ((s . SBP),3)) > 0 ; ::_thesis: ( IC (Comput (P,s,7)) = 5 + 7 & Comput (P,s,8) = Exec ((goto (- 7)),(Comput (P,s,7))) & (Comput (P,s,7)) . SBP = n + 4 & (Comput (P,s,7)) . GBP = 0 & (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) & (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) A6: P /. (IC s) = P . (IC s) by PBOOLE:143; A7: P /. (IC (Comput (P,s,1))) = P . (IC (Comput (P,s,1))) by PBOOLE:143; A8: Comput (P,s,(1 + 0)) = Following (P,(Comput (P,s,0))) by EXTPRO_1:3 .= Following (P,s) by EXTPRO_1:2 .= Exec (((SBP,3) <=0_goto 9),s) by A2, A6, Lm1, A1 ; then A9: IC (Comput (P,s,1)) = succ (IC s) by A5, SCMPDS_2:56 .= 5 + 1 by A2 ; then A10: CurInstr (P,(Comput (P,s,1))) = P . 6 by A7 .= (SBP,6) := (SBP,3) by Lm1, A1 ; A11: Comput (P,s,(1 + 1)) = Following (P,(Comput (P,s,1))) by EXTPRO_1:3 .= Exec (((SBP,6) := (SBP,3)),(Comput (P,s,1))) by A10 ; A12: (Comput (P,s,1)) . SBP = n by A3, A8, SCMPDS_2:56; A13: (Comput (P,s,1)) . GBP = 0 by A4, A8, SCMPDS_2:56; A14: (Comput (P,s,1)) . (intpos (n + 3)) = (Comput (P,s,1)) . (DataLoc (n,3)) by Th1 .= s . (DataLoc ((s . SBP),3)) by A3, A8, SCMPDS_2:56 ; A15: (Comput (P,s,1)) . (intpos (n + 2)) = (Comput (P,s,1)) . (DataLoc (n,2)) by Th1 .= s . (DataLoc ((s . SBP),2)) by A3, A8, SCMPDS_2:56 ; A16: P /. (IC (Comput (P,s,2))) = P . (IC (Comput (P,s,2))) by PBOOLE:143; A17: IC (Comput (P,s,2)) = succ (IC (Comput (P,s,1))) by A11, SCMPDS_2:47 .= 6 + 1 by A9 ; then A18: CurInstr (P,(Comput (P,s,2))) = P . 7 by A16 .= Divide (SBP,2,SBP,3) by Lm1, A1 ; A19: Comput (P,s,(2 + 1)) = Following (P,(Comput (P,s,2))) by EXTPRO_1:3 .= Exec ((Divide (SBP,2,SBP,3)),(Comput (P,s,2))) by A18 ; A20: DataLoc (((Comput (P,s,1)) . SBP),6) = intpos (n + 6) by A12, Th1; then A21: (Comput (P,s,2)) . SBP = n by A11, A12, Lm3, SCMPDS_2:47; A22: (Comput (P,s,2)) . GBP = 0 by A11, A13, A20, Lm2, SCMPDS_2:47; A23: (Comput (P,s,2)) . (intpos (n + 6)) = (Comput (P,s,1)) . (DataLoc (n,3)) by A11, A12, A20, SCMPDS_2:47 .= s . (DataLoc ((s . SBP),3)) by A14, Th1 ; n + 3 <> n + 6 ; then A24: (Comput (P,s,2)) . (intpos (n + 3)) = s . (DataLoc ((s . SBP),3)) by A11, A14, A20, AMI_3:10, SCMPDS_2:47; n + 2 <> n + 6 ; then A25: (Comput (P,s,2)) . (intpos (n + 2)) = s . (DataLoc ((s . SBP),2)) by A11, A15, A20, AMI_3:10, SCMPDS_2:47; A26: P /. (IC (Comput (P,s,3))) = P . (IC (Comput (P,s,3))) by PBOOLE:143; A27: IC (Comput (P,s,3)) = succ (IC (Comput (P,s,2))) by A19, SCMPDS_2:52 .= 7 + 1 by A17 ; then A28: CurInstr (P,(Comput (P,s,3))) = P . 8 by A26 .= (SBP,7) := (SBP,3) by Lm1, A1 ; A29: Comput (P,s,(3 + 1)) = Following (P,(Comput (P,s,3))) by EXTPRO_1:3 .= Exec (((SBP,7) := (SBP,3)),(Comput (P,s,3))) by A28 ; A30: DataLoc (((Comput (P,s,2)) . SBP),2) = intpos (n + 2) by A21, Th1; then A31: SBP <> DataLoc (((Comput (P,s,2)) . SBP),2) by Lm3; A32: DataLoc (((Comput (P,s,2)) . SBP),3) = intpos (n + 3) by A21, Th1; then SBP <> DataLoc (((Comput (P,s,2)) . SBP),3) by Lm3; then A33: (Comput (P,s,3)) . SBP = n by A19, A21, A31, SCMPDS_2:52; A34: GBP <> DataLoc (((Comput (P,s,2)) . SBP),2) by A30, Lm2; GBP <> DataLoc (((Comput (P,s,2)) . SBP),3) by A32, Lm2; then A35: (Comput (P,s,3)) . GBP = 0 by A19, A22, A34, SCMPDS_2:52; A36: (Comput (P,s,3)) . (intpos (n + 3)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) by A19, A24, A25, A30, A32, SCMPDS_2:52; n + 6 <> n + 2 ; then A37: intpos (n + 6) <> DataLoc (((Comput (P,s,2)) . SBP),2) by A30, AMI_3:10; n + 6 <> n + 3 ; then intpos (n + 6) <> DataLoc (((Comput (P,s,2)) . SBP),3) by A32, AMI_3:10; then A38: (Comput (P,s,3)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) by A19, A23, A37, SCMPDS_2:52; A39: P /. (IC (Comput (P,s,4))) = P . (IC (Comput (P,s,4))) by PBOOLE:143; A40: IC (Comput (P,s,4)) = succ (IC (Comput (P,s,3))) by A29, SCMPDS_2:47 .= 8 + 1 by A27 ; then A41: CurInstr (P,(Comput (P,s,4))) = P . 9 by A39 .= (SBP,(4 + RetSP)) := (GBP,1) by Lm1, A1 ; A42: Comput (P,s,(4 + 1)) = Following (P,(Comput (P,s,4))) by EXTPRO_1:3 .= Exec (((SBP,(4 + RetSP)) := (GBP,1)),(Comput (P,s,4))) by A41 ; A43: DataLoc (((Comput (P,s,3)) . SBP),7) = intpos (n + 7) by A33, Th1; then A44: (Comput (P,s,4)) . SBP = n by A29, A33, Lm3, SCMPDS_2:47; A45: (Comput (P,s,4)) . GBP = 0 by A29, A35, A43, Lm2, SCMPDS_2:47; A46: (Comput (P,s,4)) . (intpos (n + 7)) = (Comput (P,s,3)) . (DataLoc (n,3)) by A29, A33, A43, SCMPDS_2:47 .= (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) by A36, Th1 ; n + 6 <> n + 7 ; then A47: (Comput (P,s,4)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) by A29, A38, A43, AMI_3:10, SCMPDS_2:47; A48: P /. (IC (Comput (P,s,5))) = P . (IC (Comput (P,s,5))) by PBOOLE:143; A49: IC (Comput (P,s,5)) = succ (IC (Comput (P,s,4))) by A42, SCMPDS_2:47 .= 9 + 1 by A40 ; then A50: CurInstr (P,(Comput (P,s,5))) = P . 10 by A48 .= AddTo (GBP,1,4) by Lm1, A1 ; A51: Comput (P,s,(5 + 1)) = Following (P,(Comput (P,s,5))) by EXTPRO_1:3 .= Exec ((AddTo (GBP,1,4)),(Comput (P,s,5))) by A50 ; A52: DataLoc (((Comput (P,s,4)) . SBP),(4 + RetSP)) = intpos (n + (4 + 0)) by A44, Th1, SCMPDS_I:def_13; then A53: (Comput (P,s,5)) . SBP = n by A42, A44, Lm3, SCMPDS_2:47; A54: (Comput (P,s,5)) . GBP = 0 by A42, A45, A52, Lm2, SCMPDS_2:47; n + 7 <> n + 4 ; then A55: (Comput (P,s,5)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) by A42, A46, A52, AMI_3:10, SCMPDS_2:47; n + 6 <> n + 4 ; then A56: (Comput (P,s,5)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) by A42, A47, A52, AMI_3:10, SCMPDS_2:47; A57: (Comput (P,s,5)) . (intpos (n + 4)) = (Comput (P,s,4)) . (DataLoc (0,1)) by A42, A45, A52, SCMPDS_2:47 .= (Comput (P,s,4)) . (intpos (0 + 1)) by Th1 .= n by A29, A33, A43, Lm3, SCMPDS_2:47 ; A58: P /. (IC (Comput (P,s,6))) = P . (IC (Comput (P,s,6))) by PBOOLE:143; A59: IC (Comput (P,s,6)) = succ (IC (Comput (P,s,5))) by A51, SCMPDS_2:48 .= 10 + 1 by A49 ; then A60: CurInstr (P,(Comput (P,s,6))) = P . 11 by A58 .= saveIC (SBP,RetIC) by Lm1, A1 ; A61: Comput (P,s,(6 + 1)) = Following (P,(Comput (P,s,6))) by EXTPRO_1:3 .= Exec ((saveIC (SBP,RetIC)),(Comput (P,s,6))) by A60 ; A62: DataLoc (((Comput (P,s,5)) . GBP),1) = intpos (0 + 1) by A54, Th1; then A63: (Comput (P,s,6)) . SBP = n + 4 by A51, A53, SCMPDS_2:48; A64: (Comput (P,s,6)) . GBP = 0 by A51, A54, A62, AMI_3:10, SCMPDS_2:48; n + 7 <> 1 by NAT_1:11; then A65: (Comput (P,s,6)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) by A51, A55, A62, AMI_3:10, SCMPDS_2:48; n + 6 <> 1 by NAT_1:11; then A66: (Comput (P,s,6)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) by A51, A56, A62, AMI_3:10, SCMPDS_2:48; n + 4 <> 1 by NAT_1:11; then A67: (Comput (P,s,6)) . (intpos (n + 4)) = n by A51, A57, A62, AMI_3:10, SCMPDS_2:48; A68: P /. (IC (Comput (P,s,7))) = P . (IC (Comput (P,s,7))) by PBOOLE:143; thus IC (Comput (P,s,7)) = succ (IC (Comput (P,s,6))) by A61, SCMPDS_2:59 .= 11 + 1 by A59 .= 5 + 7 ; ::_thesis: ( Comput (P,s,8) = Exec ((goto (- 7)),(Comput (P,s,7))) & (Comput (P,s,7)) . SBP = n + 4 & (Comput (P,s,7)) . GBP = 0 & (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) & (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) then A69: CurInstr (P,(Comput (P,s,7))) = P . 12 by A68 .= goto (- 7) by Lm1, A1 ; thus Comput (P,s,8) = Comput (P,s,(7 + 1)) .= Following (P,(Comput (P,s,7))) by EXTPRO_1:3 .= Exec ((goto (- 7)),(Comput (P,s,7))) by A69 ; ::_thesis: ( (Comput (P,s,7)) . SBP = n + 4 & (Comput (P,s,7)) . GBP = 0 & (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) & (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) A70: DataLoc (((Comput (P,s,6)) . SBP),RetIC) = intpos ((n + 4) + 1) by A63, Th1, SCMPDS_I:def_14 .= intpos (n + (4 + 1)) ; then SBP <> DataLoc (((Comput (P,s,6)) . SBP),RetIC) by Lm3; hence (Comput (P,s,7)) . SBP = n + 4 by A61, A63, SCMPDS_2:59; ::_thesis: ( (Comput (P,s,7)) . GBP = 0 & (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) & (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) GBP <> DataLoc (((Comput (P,s,6)) . SBP),RetIC) by A70, Lm2; hence (Comput (P,s,7)) . GBP = 0 by A61, A64, SCMPDS_2:59; ::_thesis: ( (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) & (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) n + 7 <> n + 5 ; hence (Comput (P,s,7)) . (intpos (n + 7)) = (s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3))) by A61, A65, A70, AMI_3:10, SCMPDS_2:59; ::_thesis: ( (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) & (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) n + 6 <> n + 5 ; hence (Comput (P,s,7)) . (intpos (n + 6)) = s . (DataLoc ((s . SBP),3)) by A61, A66, A70, AMI_3:10, SCMPDS_2:59; ::_thesis: ( (Comput (P,s,7)) . (intpos (n + 4)) = n & (Comput (P,s,7)) . (intpos (n + 5)) = 11 ) n + 4 <> n + 5 ; hence (Comput (P,s,7)) . (intpos (n + 4)) = n by A61, A67, A70, AMI_3:10, SCMPDS_2:59; ::_thesis: (Comput (P,s,7)) . (intpos (n + 5)) = 11 thus (Comput (P,s,7)) . (intpos (n + 5)) = 11 by A59, A61, A70, SCMPDS_2:59; ::_thesis: verum end; Lm5: for n, m being Element of NAT for s being State of SCMPDS for P being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P & IC s = 5 & n = s . SBP & s . GBP = 0 & s . (DataLoc ((s . SBP),3)) > 0 & 1 < m & m <= n + 1 holds (Comput (P,s,7)) . (intpos m) = s . (intpos m) proof let n, m be Element of NAT ; ::_thesis: for s being State of SCMPDS for P being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P & IC s = 5 & n = s . SBP & s . GBP = 0 & s . (DataLoc ((s . SBP),3)) > 0 & 1 < m & m <= n + 1 holds (Comput (P,s,7)) . (intpos m) = s . (intpos m) let s be State of SCMPDS; ::_thesis: for P being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P & IC s = 5 & n = s . SBP & s . GBP = 0 & s . (DataLoc ((s . SBP),3)) > 0 & 1 < m & m <= n + 1 holds (Comput (P,s,7)) . (intpos m) = s . (intpos m) let P be Instruction-Sequence of SCMPDS; ::_thesis: ( GCD-Algorithm c= P & IC s = 5 & n = s . SBP & s . GBP = 0 & s . (DataLoc ((s . SBP),3)) > 0 & 1 < m & m <= n + 1 implies (Comput (P,s,7)) . (intpos m) = s . (intpos m) ) assume A1: GCD-Algorithm c= P ; ::_thesis: ( not IC s = 5 or not n = s . SBP or not s . GBP = 0 or not s . (DataLoc ((s . SBP),3)) > 0 or not 1 < m or not m <= n + 1 or (Comput (P,s,7)) . (intpos m) = s . (intpos m) ) assume A2: IC s = 5 ; ::_thesis: ( not n = s . SBP or not s . GBP = 0 or not s . (DataLoc ((s . SBP),3)) > 0 or not 1 < m or not m <= n + 1 or (Comput (P,s,7)) . (intpos m) = s . (intpos m) ) assume A3: n = s . SBP ; ::_thesis: ( not s . GBP = 0 or not s . (DataLoc ((s . SBP),3)) > 0 or not 1 < m or not m <= n + 1 or (Comput (P,s,7)) . (intpos m) = s . (intpos m) ) assume A4: s . GBP = 0 ; ::_thesis: ( not s . (DataLoc ((s . SBP),3)) > 0 or not 1 < m or not m <= n + 1 or (Comput (P,s,7)) . (intpos m) = s . (intpos m) ) assume A5: s . (DataLoc ((s . SBP),3)) > 0 ; ::_thesis: ( not 1 < m or not m <= n + 1 or (Comput (P,s,7)) . (intpos m) = s . (intpos m) ) assume A6: 1 < m ; ::_thesis: ( not m <= n + 1 or (Comput (P,s,7)) . (intpos m) = s . (intpos m) ) assume A7: m <= n + 1 ; ::_thesis: (Comput (P,s,7)) . (intpos m) = s . (intpos m) A8: P /. (IC s) = P . (IC s) by PBOOLE:143; A9: P /. (IC (Comput (P,s,1))) = P . (IC (Comput (P,s,1))) by PBOOLE:143; A10: Comput (P,s,(1 + 0)) = Following (P,(Comput (P,s,0))) by EXTPRO_1:3 .= Following (P,s) by EXTPRO_1:2 .= Exec (((SBP,3) <=0_goto 9),s) by A2, A8, Lm1, A1 ; then A11: IC (Comput (P,s,1)) = succ (IC s) by A5, SCMPDS_2:56 .= 5 + 1 by A2 ; then A12: CurInstr (P,(Comput (P,s,1))) = P . 6 by A9 .= (SBP,6) := (SBP,3) by Lm1, A1 ; A13: Comput (P,s,(1 + 1)) = Following (P,(Comput (P,s,1))) by EXTPRO_1:3 .= Exec (((SBP,6) := (SBP,3)),(Comput (P,s,1))) by A12 ; A14: (Comput (P,s,1)) . SBP = n by A3, A10, SCMPDS_2:56; A15: (Comput (P,s,1)) . GBP = 0 by A4, A10, SCMPDS_2:56; A16: (Comput (P,s,1)) . (intpos m) = s . (intpos m) by A10, SCMPDS_2:56; A17: P /. (IC (Comput (P,s,2))) = P . (IC (Comput (P,s,2))) by PBOOLE:143; A18: IC (Comput (P,s,2)) = succ (IC (Comput (P,s,1))) by A13, SCMPDS_2:47 .= 6 + 1 by A11 ; then A19: CurInstr (P,(Comput (P,s,2))) = P . 7 by A17 .= Divide (SBP,2,SBP,3) by Lm1, A1 ; A20: Comput (P,s,(2 + 1)) = Following (P,(Comput (P,s,2))) by EXTPRO_1:3 .= Exec ((Divide (SBP,2,SBP,3)),(Comput (P,s,2))) by A19 ; A21: DataLoc (((Comput (P,s,1)) . SBP),6) = intpos (n + 6) by A14, Th1; then A22: (Comput (P,s,2)) . SBP = n by A13, A14, Lm3, SCMPDS_2:47; A23: (Comput (P,s,2)) . GBP = 0 by A13, A15, A21, Lm2, SCMPDS_2:47; n + 1 < n + 6 by XREAL_1:6; then A24: (Comput (P,s,2)) . (intpos m) = s . (intpos m) by A7, A13, A16, A21, AMI_3:10, SCMPDS_2:47; A25: P /. (IC (Comput (P,s,3))) = P . (IC (Comput (P,s,3))) by PBOOLE:143; A26: IC (Comput (P,s,3)) = succ (IC (Comput (P,s,2))) by A20, SCMPDS_2:52 .= 7 + 1 by A18 ; then A27: CurInstr (P,(Comput (P,s,3))) = P . 8 by A25 .= (SBP,7) := (SBP,3) by Lm1, A1 ; A28: Comput (P,s,(3 + 1)) = Following (P,(Comput (P,s,3))) by EXTPRO_1:3 .= Exec (((SBP,7) := (SBP,3)),(Comput (P,s,3))) by A27 ; A29: DataLoc (((Comput (P,s,2)) . SBP),2) = intpos (n + 2) by A22, Th1; then A30: SBP <> DataLoc (((Comput (P,s,2)) . SBP),2) by Lm3; A31: DataLoc (((Comput (P,s,2)) . SBP),3) = intpos (n + 3) by A22, Th1; then SBP <> DataLoc (((Comput (P,s,2)) . SBP),3) by Lm3; then A32: (Comput (P,s,3)) . SBP = n by A20, A22, A30, SCMPDS_2:52; A33: GBP <> DataLoc (((Comput (P,s,2)) . SBP),2) by A29, Lm2; GBP <> DataLoc (((Comput (P,s,2)) . SBP),3) by A31, Lm2; then A34: (Comput (P,s,3)) . GBP = 0 by A20, A23, A33, SCMPDS_2:52; n + 1 < n + 2 by XREAL_1:6; then A35: intpos m <> DataLoc (((Comput (P,s,2)) . SBP),2) by A7, A29, AMI_3:10; n + 1 < n + 3 by XREAL_1:6; then intpos m <> DataLoc (((Comput (P,s,2)) . SBP),3) by A7, A31, AMI_3:10; then A36: (Comput (P,s,3)) . (intpos m) = s . (intpos m) by A20, A24, A35, SCMPDS_2:52; A37: P /. (IC (Comput (P,s,4))) = P . (IC (Comput (P,s,4))) by PBOOLE:143; A38: IC (Comput (P,s,4)) = succ (IC (Comput (P,s,3))) by A28, SCMPDS_2:47 .= 8 + 1 by A26 ; then A39: CurInstr (P,(Comput (P,s,4))) = P . 9 by A37 .= (SBP,(4 + RetSP)) := (GBP,1) by Lm1, A1 ; A40: Comput (P,s,(4 + 1)) = Following (P,(Comput (P,s,4))) by EXTPRO_1:3 .= Exec (((SBP,(4 + RetSP)) := (GBP,1)),(Comput (P,s,4))) by A39 ; A41: DataLoc (((Comput (P,s,3)) . SBP),7) = intpos (n + 7) by A32, Th1; then A42: (Comput (P,s,4)) . SBP = n by A28, A32, Lm3, SCMPDS_2:47; A43: (Comput (P,s,4)) . GBP = 0 by A28, A34, A41, Lm2, SCMPDS_2:47; n + 1 < n + 7 by XREAL_1:6; then A44: (Comput (P,s,4)) . (intpos m) = s . (intpos m) by A7, A28, A36, A41, AMI_3:10, SCMPDS_2:47; A45: P /. (IC (Comput (P,s,5))) = P . (IC (Comput (P,s,5))) by PBOOLE:143; A46: IC (Comput (P,s,5)) = succ (IC (Comput (P,s,4))) by A40, SCMPDS_2:47 .= 9 + 1 by A38 ; then A47: CurInstr (P,(Comput (P,s,5))) = P . 10 by A45 .= AddTo (GBP,1,4) by Lm1, A1 ; A48: Comput (P,s,(5 + 1)) = Following (P,(Comput (P,s,5))) by EXTPRO_1:3 .= Exec ((AddTo (GBP,1,4)),(Comput (P,s,5))) by A47 ; A49: DataLoc (((Comput (P,s,4)) . SBP),(4 + RetSP)) = intpos (n + (4 + 0)) by A42, Th1, SCMPDS_I:def_13; then A50: (Comput (P,s,5)) . SBP = n by A40, A42, Lm3, SCMPDS_2:47; A51: (Comput (P,s,5)) . GBP = 0 by A40, A43, A49, Lm2, SCMPDS_2:47; n + 1 < n + 4 by XREAL_1:6; then A52: (Comput (P,s,5)) . (intpos m) = s . (intpos m) by A7, A40, A44, A49, AMI_3:10, SCMPDS_2:47; A53: P /. (IC (Comput (P,s,6))) = P . (IC (Comput (P,s,6))) by PBOOLE:143; IC (Comput (P,s,6)) = succ (IC (Comput (P,s,5))) by A48, SCMPDS_2:48 .= 10 + 1 by A46 ; then A54: CurInstr (P,(Comput (P,s,6))) = P . 11 by A53 .= saveIC (SBP,RetIC) by Lm1, A1 ; A55: Comput (P,s,(6 + 1)) = Following (P,(Comput (P,s,6))) by EXTPRO_1:3 .= Exec ((saveIC (SBP,RetIC)),(Comput (P,s,6))) by A54 ; A56: DataLoc (((Comput (P,s,5)) . GBP),1) = intpos (0 + 1) by A51, Th1; then A57: (Comput (P,s,6)) . SBP = n + 4 by A48, A50, SCMPDS_2:48; A58: (Comput (P,s,6)) . (intpos m) = s . (intpos m) by A6, A48, A52, A56, AMI_3:10, SCMPDS_2:48; A59: DataLoc (((Comput (P,s,6)) . SBP),RetIC) = intpos ((n + 4) + 1) by A57, Th1, SCMPDS_I:def_14 .= intpos (n + (4 + 1)) ; n + 1 < n + 5 by XREAL_1:6; hence (Comput (P,s,7)) . (intpos m) = s . (intpos m) by A7, A55, A58, A59, AMI_3:10, SCMPDS_2:59; ::_thesis: verum end; theorem Th12: :: SCMP_GCD:12 for P being Instruction-Sequence of SCMPDS for s being State of SCMPDS st GCD-Algorithm c= P & IC s = 5 & s . SBP > 0 & s . GBP = 0 & 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 (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) proof let P be Instruction-Sequence of SCMPDS; ::_thesis: for s being State of SCMPDS st GCD-Algorithm c= P & IC s = 5 & s . SBP > 0 & s . GBP = 0 & 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 (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) set GA = GCD-Algorithm ; defpred S1[ Element of NAT ] means for s being State of SCMPDS st GCD-Algorithm c= P & IC s = 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 (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ); now__::_thesis:_for_s_being_State_of_SCMPDS_st_GCD-Algorithm_c=_P_&_IC_s_=_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))_holds_ ex_n_being_Element_of_NAT_st_ (_CurInstr_(P,(Comput_(P,s,n)))_=_return_SBP_&_(Comput_(P,s,n))_._SBP_=_s_._SBP_&_(Comput_(P,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_(P,s,n))_._(intpos_j)_)_) let s be State of SCMPDS; ::_thesis: ( GCD-Algorithm c= P & IC s = 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 (P,(Comput (P,s,n))) = return SBP & (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) ) set x = s . (DataLoc ((s . SBP),2)); set y = s . (DataLoc ((s . SBP),3)); assume A1: GCD-Algorithm c= P ; ::_thesis: ( IC s = 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 (P,(Comput (P,s,n))) = return SBP & (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) ) assume A2: IC s = 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 (P,(Comput (P,s,n))) = return SBP & (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,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 (P,(Comput (P,s,n))) = return SBP & (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,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 (P,(Comput (P,s,n))) = return SBP & (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,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 (P,(Comput (P,s,n))) = return SBP & (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,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 (P,(Comput (P,s,n))) = return SBP & (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,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 (P,(Comput (P,s,n))) = return SBP & (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) A6: P /. (IC s) = P . (IC s) by PBOOLE:143; A7: P /. (IC (Comput (P,s,1))) = P . (IC (Comput (P,s,1))) by PBOOLE:143; A8: Comput (P,s,(1 + 0)) = Following (P,(Comput (P,s,0))) by EXTPRO_1:3 .= Following (P,s) by EXTPRO_1:2 .= Exec (((SBP,3) <=0_goto 9),s) by A2, A6, Lm1, A1 ; then A9: IC (Comput (P,s,1)) = ICplusConst (s,9) by A3, SCMPDS_2:56 .= 5 + 9 by A2, SCMPDS_6:12 ; take n = 1; ::_thesis: ( CurInstr (P,(Comput (P,s,n))) = return SBP & (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) thus CurInstr (P,(Comput (P,s,n))) = P . 14 by A9, A7 .= return SBP by Lm1, A1 ; ::_thesis: ( (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) thus (Comput (P,s,n)) . SBP = s . SBP by A8, SCMPDS_2:56; ::_thesis: ( (Comput (P,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 (P,s,n)) . (intpos j) ) ) A10: s . (DataLoc ((s . SBP),3)) = 0 by A3, A4, XXREAL_0:1; then A11: abs (s . (DataLoc ((s . SBP),3))) = 0 by ABSVALUE:def_1; thus (Comput (P,s,n)) . (DataLoc ((s . SBP),2)) = s . (DataLoc ((s . SBP),2)) by A8, SCMPDS_2:56 .= abs (s . (DataLoc ((s . SBP),2))) by A5, A10, ABSVALUE:def_1 .= (abs (s . (DataLoc ((s . SBP),2)))) gcd (abs (s . (DataLoc ((s . SBP),3)))) by A11, NEWTON:52 .= (s . (DataLoc ((s . SBP),2))) gcd (s . (DataLoc ((s . SBP),3))) by INT_2:34 ; ::_thesis: for j being Element of NAT st 1 < j & j <= (s . SBP) + 1 holds s . (intpos j) = (Comput (P,s,n)) . (intpos j) thus for j being Element of NAT st 1 < j & j <= (s . SBP) + 1 holds s . (intpos j) = (Comput (P,s,n)) . (intpos j) by A8, SCMPDS_2:56; ::_thesis: verum end; then A12: S1[ 0 ] ; A13: now__::_thesis:_for_k_being_Element_of_NAT_st_S1[k]_holds_ S1[k_+_1] let k be Element of NAT ; ::_thesis: ( S1[k] implies S1[k + 1] ) assume A14: S1[k] ; ::_thesis: S1[k + 1] now__::_thesis:_for_s_being_State_of_SCMPDS_st_GCD-Algorithm_c=_P_&_IC_s_=_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))_holds_ ex_n_being_Element_of_NAT_st_ (_CurInstr_(P,(Comput_(P,s,n)))_=_return_SBP_&_s_._SBP_=_(Comput_(P,s,n))_._SBP_&_(Comput_(P,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_(P,s,n))_._(intpos_j)_)_) let s be State of SCMPDS; ::_thesis: ( GCD-Algorithm c= P & IC s = 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 (P,(Comput (P,n,b2))) = return SBP & n . SBP = (Comput (P,n,b2)) . SBP & (Comput (P,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) = (Comput (P,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 A15: GCD-Algorithm c= P ; ::_thesis: ( IC s = 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 (P,(Comput (P,n,b2))) = return SBP & n . SBP = (Comput (P,n,b2)) . SBP & (Comput (P,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) = (Comput (P,n,j)) . (intpos b3) ) ) ) assume A16: IC s = 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 (P,(Comput (P,n,b2))) = return SBP & n . SBP = (Comput (P,n,b2)) . SBP & (Comput (P,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) = (Comput (P,n,j)) . (intpos b3) ) ) ) assume A17: 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 (P,(Comput (P,n,b2))) = return SBP & n . SBP = (Comput (P,n,b2)) . SBP & (Comput (P,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) = (Comput (P,n,j)) . (intpos b3) ) ) ) assume A18: 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 (P,(Comput (P,n,b2))) = return SBP & n . SBP = (Comput (P,n,b2)) . SBP & (Comput (P,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) = (Comput (P,n,j)) . (intpos b3) ) ) ) assume A19: 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 (P,(Comput (P,n,b2))) = return SBP & n . SBP = (Comput (P,n,b2)) . SBP & (Comput (P,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) = (Comput (P,n,j)) . (intpos b3) ) ) ) assume A20: 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 (P,(Comput (P,n,b2))) = return SBP & n . SBP = (Comput (P,n,b2)) . SBP & (Comput (P,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) = (Comput (P,n,j)) . (intpos b3) ) ) ) assume A21: s . (DataLoc ((s . SBP),2)) >= s . (DataLoc ((s . SBP),3)) ; ::_thesis: ex n being Element of NAT st ( CurInstr (P,(Comput (P,n,b2))) = return SBP & n . SBP = (Comput (P,n,b2)) . SBP & (Comput (P,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) = (Comput (P,n,j)) . (intpos b3) ) ) then A22: s . (DataLoc ((s . SBP),2)) >= 0 by A20, XXREAL_0:2; reconsider y = s . (DataLoc ((s . SBP),3)) as Element of NAT by A20, INT_1:3; percases ( y <= k or y = k + 1 ) by A19, NAT_1:8; suppose y <= k ; ::_thesis: ex n being Element of NAT st ( CurInstr (P,(Comput (P,n,b2))) = return SBP & n . SBP = (Comput (P,n,b2)) . SBP & (Comput (P,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) = (Comput (P,n,j)) . (intpos b3) ) ) hence ex n being Element of NAT st ( CurInstr (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) by A14, A16, A17, A18, A20, A21, A15; ::_thesis: verum end; supposeA23: y = k + 1 ; ::_thesis: ex n being Element of NAT st ( CurInstr (P,(Comput (P,n,b2))) = return SBP & (Comput (P,n,b2)) . SBP = n . SBP & (Comput (P,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) = (Comput (P,n,j)) . (intpos b3) ) ) then A24: y > 0 by NAT_1:5; reconsider pn = s . SBP as Element of NAT by A17, INT_1:3; A25: pn = s . SBP ; then A26: IC (Comput (P,s,7)) = 5 + 7 by A16, A18, A24, Lm4, A15; A27: Comput (P,s,8) = Exec ((goto (- 7)),(Comput (P,s,7))) by A16, A18, A24, A25, Lm4, A15; A28: (Comput (P,s,7)) . SBP = pn + 4 by A16, A18, A24, Lm4, A15; A29: (Comput (P,s,7)) . GBP = 0 by A16, A18, A24, A25, Lm4, A15; A30: (Comput (P,s,7)) . (intpos (pn + 7)) = (s . (DataLoc ((s . SBP),2))) mod y by A16, A18, A24, Lm4, A15; A31: (Comput (P,s,7)) . (intpos (pn + 6)) = y by A16, A18, A24, Lm4, A15; A32: (Comput (P,s,7)) . (intpos (pn + 4)) = pn by A16, A18, A24, Lm4, A15; A33: (Comput (P,s,7)) . (intpos (pn + 5)) = 11 by A16, A18, A24, Lm4, A15; set s8 = Comput (P,s,8); set P8 = P; A34: IC (Comput (P,s,8)) = ICplusConst ((Comput (P,s,7)),(- 7)) by A27, SCMPDS_2:54 .= 5 by A26, Th2 ; A35: GCD-Algorithm c= P by A15; A36: (Comput (P,s,8)) . SBP = pn + 4 by A27, A28, SCMPDS_2:54; A37: 4 <= pn + 4 by NAT_1:11; then A38: (Comput (P,s,8)) . SBP > 0 by A36, XXREAL_0:2; A39: (Comput (P,s,8)) . GBP = 0 by A27, A29, SCMPDS_2:54; set x1 = (Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),2)); set y1 = (Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),3)); A40: (Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),2)) = (Comput (P,s,8)) . (intpos ((pn + 4) + 2)) by A36, Th1 .= y by A27, A31, SCMPDS_2:54 ; A41: (Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),3)) = (Comput (P,s,8)) . (intpos ((pn + 4) + 3)) by A36, Th1 .= (s . (DataLoc ((s . SBP),2))) mod y by A27, A30, SCMPDS_2:54 ; then A42: (Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),3)) < y by A23, NAT_1:5, NEWTON:65; then (Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),3)) <= k by A23, INT_1:7; then consider m being Element of NAT such that A43: CurInstr (P,(Comput (P,(Comput (P,s,8)),m))) = return SBP and A44: (Comput (P,s,8)) . SBP = (Comput (P,(Comput (P,s,8)),m)) . SBP and A45: (Comput (P,(Comput (P,s,8)),m)) . (DataLoc (((Comput (P,s,8)) . SBP),2)) = ((Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),2))) gcd ((Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),3))) and A46: for j being Element of NAT st 1 < j & j <= ((Comput (P,s,8)) . SBP) + 1 holds (Comput (P,s,8)) . (intpos j) = (Comput (P,(Comput (P,s,8)),m)) . (intpos j) by A14, A24, A34, A35, A38, A39, A40, A41, A42, NEWTON:64; set s9 = Comput (P,s,(m + 8)); A47: (Comput (P,s,8)) . SBP = (Comput (P,s,(m + 8))) . SBP by A44, EXTPRO_1:4; A48: Comput (P,s,(m + 8)) = Comput (P,(Comput (P,s,8)),m) by EXTPRO_1:4; A49: Comput (P,s,(m + (8 + 1))) = Comput (P,s,((m + 8) + 1)) .= Following (P,(Comput (P,s,(m + 8)))) by EXTPRO_1:3 .= Exec ((CurInstr (P,(Comput (P,s,(m + 8))))),(Comput (P,s,(m + 8)))) .= Exec ((CurInstr (P,(Comput (P,(Comput (P,s,8)),m)))),(Comput (P,s,(m + 8)))) by A48 .= Exec ((return SBP),(Comput (P,s,(m + 8)))) by A43 ; A50: 1 < pn + 4 by A37, XXREAL_0:2; pn + 4 < ((Comput (P,s,8)) . SBP) + 1 by A36, XREAL_1:29; then A51: (Comput (P,s,8)) . (intpos (pn + 4)) = (Comput (P,(Comput (P,s,8)),m)) . (intpos (pn + 4)) by A46, A50 .= (Comput (P,s,(m + 8))) . (intpos (pn + 4)) by EXTPRO_1:4 ; 5 <= pn + 5 by NAT_1:11; then A52: 1 < pn + 5 by XXREAL_0:2; A53: 11 = (Comput (P,s,8)) . (intpos (pn + 5)) by A27, A33, SCMPDS_2:54 .= (Comput (P,(Comput (P,s,8)),m)) . (intpos (pn + 5)) by A36, A46, A52 .= (Comput (P,s,(m + 8))) . (intpos ((pn + 4) + 1)) by EXTPRO_1:4 .= (Comput (P,s,(m + 8))) . (DataLoc (((Comput (P,s,(m + 8))) . SBP),RetIC)) by A36, A47, Th1, SCMPDS_I:def_14 ; A54: P /. (IC (Comput (P,s,(m + 9)))) = P . (IC (Comput (P,s,(m + 9)))) by PBOOLE:143; A55: IC (Comput (P,s,(m + 9))) = (abs ((Comput (P,s,(m + 8))) . (DataLoc (((Comput (P,s,(m + 8))) . SBP),RetIC)))) + 2 by A49, SCMPDS_2:58 .= 11 + 2 by A53, ABSVALUE:29 ; then A56: CurInstr (P,(Comput (P,s,(m + 9)))) = P . 13 by A54 .= (SBP,2) := (SBP,6) by Lm1, A15 ; A57: Comput (P,s,(m + (9 + 1))) = Comput (P,s,((m + 9) + 1)) .= Following (P,(Comput (P,s,(m + 9)))) by EXTPRO_1:3 .= Exec (((SBP,2) := (SBP,6)),(Comput (P,s,(m + 9)))) by A56 ; A58: (Comput (P,s,(m + 9))) . SBP = (Comput (P,s,(m + 8))) . (DataLoc ((pn + 4),RetSP)) by A36, A47, A49, SCMPDS_2:58 .= (Comput (P,s,(m + 8))) . (intpos ((pn + 4) + 0)) by Th1, SCMPDS_I:def_13 .= pn by A27, A32, A51, SCMPDS_2:54 ; A59: (Comput (P,s,(m + 9))) . (intpos (pn + 6)) = (Comput (P,s,(m + 8))) . (intpos ((pn + 4) + 2)) by A49, Lm3, SCMPDS_2:58 .= (Comput (P,s,(m + 8))) . (DataLoc (((Comput (P,s,8)) . SBP),2)) by A36, Th1 .= ((Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),2))) gcd ((Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),3))) by A45, EXTPRO_1:4 ; A60: P /. (IC (Comput (P,s,(m + 10)))) = P . (IC (Comput (P,s,(m + 10)))) by PBOOLE:143; IC (Comput (P,s,(m + 10))) = succ (IC (Comput (P,s,(m + 9)))) by A57, SCMPDS_2:47 .= 13 + 1 by A55 ; then A61: CurInstr (P,(Comput (P,s,(m + 10)))) = P . 14 by A60 .= return SBP by Lm1, A15 ; hereby ::_thesis: verum take n = m + 10; ::_thesis: ( CurInstr (P,(Comput (P,s,n))) = return SBP & (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) thus CurInstr (P,(Comput (P,s,n))) = return SBP by A61; ::_thesis: ( (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) A62: DataLoc (((Comput (P,s,(m + 9))) . SBP),2) = intpos (pn + 2) by A58, Th1; hence (Comput (P,s,n)) . SBP = s . SBP by A57, A58, Lm3, SCMPDS_2:47; ::_thesis: ( (Comput (P,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 (P,s,n)) . (intpos j) ) ) thus (Comput (P,s,n)) . (DataLoc ((s . SBP),2)) = (Comput (P,s,(m + 9))) . (DataLoc (pn,6)) by A57, A58, SCMPDS_2:47 .= (s . (DataLoc ((s . SBP),3))) gcd ((s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3)))) by A40, A41, A59, Th1 .= (s . (DataLoc ((s . SBP),2))) gcd (s . (DataLoc ((s . SBP),3))) by A22, A23, NAT_1:5, NAT_D:30 ; ::_thesis: for j being Element of NAT st 1 < j & j <= (s . SBP) + 1 holds s . (intpos j) = (Comput (P,s,n)) . (intpos j) hereby ::_thesis: verum let j be Element of NAT ; ::_thesis: ( 1 < j & j <= (s . SBP) + 1 implies s . (intpos j) = (Comput (P,s,n)) . (intpos j) ) assume that A63: 1 < j and A64: j <= (s . SBP) + 1 ; ::_thesis: s . (intpos j) = (Comput (P,s,n)) . (intpos j) s . SBP <= (Comput (P,s,8)) . SBP by A36, NAT_1:11; then (s . SBP) + 1 <= ((Comput (P,s,8)) . SBP) + 1 by XREAL_1:6; then A65: j <= ((Comput (P,s,8)) . SBP) + 1 by A64, XXREAL_0:2; A66: (Comput (P,s,(m + 9))) . (intpos j) = (Comput (P,s,(m + 8))) . (intpos j) by A49, A63, AMI_3:10, SCMPDS_2:58 .= (Comput (P,(Comput (P,s,8)),m)) . (intpos j) by EXTPRO_1:4 .= (Comput (P,s,8)) . (intpos j) by A46, A63, A65 ; A67: pn + 1 < pn + 2 by XREAL_1:6; (Comput (P,s,7)) . (intpos j) = s . (intpos j) by A16, A18, A23, A25, A63, A64, Lm5, A15, NAT_1:5; hence s . (intpos j) = (Comput (P,s,8)) . (intpos j) by A27, SCMPDS_2:54 .= (Comput (P,s,n)) . (intpos j) by A57, A62, A64, A66, A67, AMI_3:10, SCMPDS_2:47 ; ::_thesis: verum end; end; end; end; end; hence S1[k + 1] ; ::_thesis: verum end; A68: for n being Element of NAT holds S1[n] from NAT_1:sch_1(A12, A13); let s be State of SCMPDS; ::_thesis: ( GCD-Algorithm c= P & IC s = 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 (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) ) assume that A69: GCD-Algorithm c= P and A70: IC s = 5 and A71: s . SBP > 0 and A72: s . GBP = 0 and A73: s . (DataLoc ((s . SBP),3)) >= 0 and A74: s . (DataLoc ((s . SBP),2)) >= s . (DataLoc ((s . SBP),3)) ; ::_thesis: ex n being Element of NAT st ( CurInstr (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) reconsider m = s . (DataLoc ((s . SBP),3)) as Element of NAT by A73, INT_1:3; S1[m] by A68; hence ex n being Element of NAT st ( CurInstr (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) by A70, A71, A72, A73, A74, A69; ::_thesis: verum end; theorem Th13: :: SCMP_GCD:13 for P being Instruction-Sequence of SCMPDS for s being State of SCMPDS st GCD-Algorithm c= P & IC s = 5 & s . SBP > 0 & s . GBP = 0 & s . (DataLoc ((s . SBP),3)) >= 0 & s . (DataLoc ((s . SBP),2)) >= 0 holds ex n being Element of NAT st ( CurInstr (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) proof let P be Instruction-Sequence of SCMPDS; ::_thesis: for s being State of SCMPDS st GCD-Algorithm c= P & IC s = 5 & s . SBP > 0 & s . GBP = 0 & s . (DataLoc ((s . SBP),3)) >= 0 & s . (DataLoc ((s . SBP),2)) >= 0 holds ex n being Element of NAT st ( CurInstr (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) let s be State of SCMPDS; ::_thesis: ( GCD-Algorithm c= P & 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 (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,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= P 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 ; ::_thesis: ex n being Element of NAT st ( CurInstr (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) percases ( 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)) ; ::_thesis: ex n being Element of NAT st ( CurInstr (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) hence ex n being Element of NAT st ( CurInstr (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) by A2, A3, A4, A5, Th12, A1; ::_thesis: verum end; suppose s . (DataLoc ((s . SBP),2)) < s . (DataLoc ((s . SBP),3)) ; ::_thesis: ex n being Element of NAT st ( CurInstr (P,(Comput (P,s,n))) = return SBP & s . SBP = (Comput (P,s,n)) . SBP & (Comput (P,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 (P,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:3; reconsider pn = s . SBP as Element of NAT by A3, INT_1:3; A8: pn = s . SBP ; then A9: IC (Comput (P,s,7)) = 5 + 7 by A2, A4, A7, Lm4, A1; A10: Comput (P,s,8) = Exec ((goto (- 7)),(Comput (P,s,7))) by A2, A4, A7, A8, Lm4, A1; A11: (Comput (P,s,7)) . SBP = pn + 4 by A2, A4, A7, Lm4, A1; A12: (Comput (P,s,7)) . GBP = 0 by A2, A4, A7, A8, Lm4, A1; A13: (Comput (P,s,7)) . (intpos (pn + 7)) = (s . (DataLoc ((s . SBP),2))) mod y by A2, A4, A7, Lm4, A1; A14: (Comput (P,s,7)) . (intpos (pn + 6)) = y by A2, A4, A7, Lm4, A1; A15: (Comput (P,s,7)) . (intpos (pn + 4)) = pn by A2, A4, A7, Lm4, A1; A16: (Comput (P,s,7)) . (intpos (pn + 5)) = 11 by A2, A4, A7, Lm4, A1; set s8 = Comput (P,s,8); A17: IC (Comput (P,s,8)) = ICplusConst ((Comput (P,s,7)),(- 7)) by A10, SCMPDS_2:54 .= 5 by A9, Th2 ; A18: (Comput (P,s,8)) . SBP = pn + 4 by A10, A11, SCMPDS_2:54; A19: 4 <= pn + 4 by NAT_1:11; then A20: (Comput (P,s,8)) . SBP > 0 by A18, XXREAL_0:2; A21: (Comput (P,s,8)) . GBP = 0 by A10, A12, SCMPDS_2:54; set x1 = (Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),2)); set y1 = (Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),3)); A22: (Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),2)) = (Comput (P,s,8)) . (intpos ((pn + 4) + 2)) by A18, Th1 .= y by A10, A14, SCMPDS_2:54 ; A23: (Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),3)) = (Comput (P,s,8)) . (intpos ((pn + 4) + 3)) by A18, Th1 .= (s . (DataLoc ((s . SBP),2))) mod y by A10, A13, SCMPDS_2:54 ; then (Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),3)) < y by A7, NEWTON:65; then consider m being Element of NAT such that A24: CurInstr (P,(Comput (P,(Comput (P,s,8)),m))) = return SBP and A25: (Comput (P,s,8)) . SBP = (Comput (P,(Comput (P,s,8)),m)) . SBP and A26: (Comput (P,(Comput (P,s,8)),m)) . (DataLoc (((Comput (P,s,8)) . SBP),2)) = ((Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),2))) gcd ((Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),3))) and A27: for j being Element of NAT st 1 < j & j <= ((Comput (P,s,8)) . SBP) + 1 holds (Comput (P,s,8)) . (intpos j) = (Comput (P,(Comput (P,s,8)),m)) . (intpos j) by A5, A17, A20, A21, A22, A23, Th12, A1, NEWTON:64; set s9 = Comput (P,s,(m + 8)); A28: (Comput (P,s,8)) . SBP = (Comput (P,s,(m + 8))) . SBP by A25, EXTPRO_1:4; A29: Comput (P,s,(m + 8)) = Comput (P,(Comput (P,s,8)),m) by EXTPRO_1:4; A30: Comput (P,s,(m + (8 + 1))) = Comput (P,s,((m + 8) + 1)) .= Following (P,(Comput (P,s,(m + 8)))) by EXTPRO_1:3 .= Exec ((return SBP),(Comput (P,s,(m + 8)))) by A24, A29 ; A31: 1 < pn + 4 by A19, XXREAL_0:2; pn + 4 < ((Comput (P,s,8)) . SBP) + 1 by A18, XREAL_1:29; then A32: (Comput (P,s,8)) . (intpos (pn + 4)) = (Comput (P,(Comput (P,s,8)),m)) . (intpos (pn + 4)) by A27, A31 .= (Comput (P,s,(m + 8))) . (intpos (pn + 4)) by EXTPRO_1:4 ; 5 <= pn + 5 by NAT_1:11; then A33: 1 < pn + 5 by XXREAL_0:2; A34: 11 = (Comput (P,s,8)) . (intpos (pn + 5)) by A10, A16, SCMPDS_2:54 .= (Comput (P,(Comput (P,s,8)),m)) . (intpos (pn + 5)) by A18, A27, A33 .= (Comput (P,s,(m + 8))) . (intpos ((pn + 4) + 1)) by EXTPRO_1:4 .= (Comput (P,s,(m + 8))) . (DataLoc (((Comput (P,s,(m + 8))) . SBP),RetIC)) by A18, A28, Th1, SCMPDS_I:def_14 ; A35: P /. (IC (Comput (P,s,(m + 9)))) = P . (IC (Comput (P,s,(m + 9)))) by PBOOLE:143; A36: IC (Comput (P,s,(m + 9))) = (abs ((Comput (P,s,(m + 8))) . (DataLoc (((Comput (P,s,(m + 8))) . SBP),RetIC)))) + 2 by A30, SCMPDS_2:58 .= 11 + 2 by A34, ABSVALUE:29 ; then A37: CurInstr (P,(Comput (P,s,(m + 9)))) = P . 13 by A35 .= (SBP,2) := (SBP,6) by Lm1, A1 ; A38: Comput (P,s,(m + (9 + 1))) = Comput (P,s,((m + 9) + 1)) .= Following (P,(Comput (P,s,(m + 9)))) by EXTPRO_1:3 .= Exec (((SBP,2) := (SBP,6)),(Comput (P,s,(m + 9)))) by A37 ; A39: (Comput (P,s,(m + 9))) . SBP = (Comput (P,s,(m + 8))) . (DataLoc ((pn + 4),RetSP)) by A18, A28, A30, SCMPDS_2:58 .= (Comput (P,s,(m + 8))) . (intpos ((pn + 4) + 0)) by Th1, SCMPDS_I:def_13 .= pn by A10, A15, A32, SCMPDS_2:54 ; A40: (Comput (P,s,(m + 9))) . (intpos (pn + 6)) = (Comput (P,s,(m + 8))) . (intpos ((pn + 4) + 2)) by A30, Lm3, SCMPDS_2:58 .= (Comput (P,s,(m + 8))) . (DataLoc (((Comput (P,s,8)) . SBP),2)) by A18, Th1 .= ((Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),2))) gcd ((Comput (P,s,8)) . (DataLoc (((Comput (P,s,8)) . SBP),3))) by A26, EXTPRO_1:4 ; A41: P /. (IC (Comput (P,s,(m + 10)))) = P . (IC (Comput (P,s,(m + 10)))) by PBOOLE:143; IC (Comput (P,s,(m + 10))) = succ (IC (Comput (P,s,(m + 9)))) by A38, SCMPDS_2:47 .= 13 + 1 by A36 ; then A42: CurInstr (P,(Comput (P,s,(m + 10)))) = P . 14 by A41 .= return SBP by Lm1, A1 ; hereby ::_thesis: verum take n = m + 10; ::_thesis: ( CurInstr (P,(Comput (P,s,n))) = return SBP & (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) thus CurInstr (P,(Comput (P,s,n))) = return SBP by A42; ::_thesis: ( (Comput (P,s,n)) . SBP = s . SBP & (Comput (P,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 (P,s,n)) . (intpos j) ) ) A43: DataLoc (((Comput (P,s,(m + 9))) . SBP),2) = intpos (pn + 2) by A39, Th1; hence (Comput (P,s,n)) . SBP = s . SBP by A38, A39, Lm3, SCMPDS_2:47; ::_thesis: ( (Comput (P,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 (P,s,n)) . (intpos j) ) ) thus (Comput (P,s,n)) . (DataLoc ((s . SBP),2)) = (Comput (P,s,(m + 9))) . (DataLoc (pn,6)) by A38, A39, SCMPDS_2:47 .= (s . (DataLoc ((s . SBP),3))) gcd ((s . (DataLoc ((s . SBP),2))) mod (s . (DataLoc ((s . SBP),3)))) by A22, A23, A40, Th1 .= (s . (DataLoc ((s . SBP),2))) gcd (s . (DataLoc ((s . SBP),3))) by A6, A7, NAT_D:30 ; ::_thesis: for j being Element of NAT st 1 < j & j <= (s . SBP) + 1 holds s . (intpos j) = (Comput (P,s,n)) . (intpos j) hereby ::_thesis: verum let j be Element of NAT ; ::_thesis: ( 1 < j & j <= (s . SBP) + 1 implies s . (intpos j) = (Comput (P,s,n)) . (intpos j) ) assume that A44: 1 < j and A45: j <= (s . SBP) + 1 ; ::_thesis: s . (intpos j) = (Comput (P,s,n)) . (intpos j) s . SBP <= (Comput (P,s,8)) . SBP by A18, NAT_1:11; then (s . SBP) + 1 <= ((Comput (P,s,8)) . SBP) + 1 by XREAL_1:6; then A46: j <= ((Comput (P,s,8)) . SBP) + 1 by A45, XXREAL_0:2; A47: (Comput (P,s,(m + 9))) . (intpos j) = (Comput (P,s,(m + 8))) . (intpos j) by A30, A44, AMI_3:10, SCMPDS_2:58 .= (Comput (P,(Comput (P,s,8)),m)) . (intpos j) by EXTPRO_1:4 .= (Comput (P,s,8)) . (intpos j) by A27, A44, A46 ; A48: pn + 1 < pn + 2 by XREAL_1:6; (Comput (P,s,7)) . (intpos j) = s . (intpos j) by A2, A4, A7, A8, A44, A45, Lm5, A1; hence s . (intpos j) = (Comput (P,s,8)) . (intpos j) by A10, SCMPDS_2:54 .= (Comput (P,s,n)) . (intpos j) by A38, A43, A45, A47, A48, AMI_3:10, SCMPDS_2:47 ; ::_thesis: verum end; end; end; end; end; begin theorem :: SCMP_GCD:14 for P being Instruction-Sequence of SCMPDS for s being 0 -started State of SCMPDS st GCD-Algorithm c= P holds for x, y being Integer st s . (intpos 9) = x & s . (intpos 10) = y & x >= 0 & y >= 0 holds (Result (P,s)) . (intpos 9) = x gcd y proof let P be Instruction-Sequence of SCMPDS; ::_thesis: for s being 0 -started State of SCMPDS st GCD-Algorithm c= P holds for x, y being Integer st s . (intpos 9) = x & s . (intpos 10) = y & x >= 0 & y >= 0 holds (Result (P,s)) . (intpos 9) = x gcd y let s be 0 -started State of SCMPDS; ::_thesis: ( GCD-Algorithm c= P implies for x, y being Integer st s . (intpos 9) = x & s . (intpos 10) = y & x >= 0 & y >= 0 holds (Result (P,s)) . (intpos 9) = x gcd y ) set GA = GCD-Algorithm ; assume A1: GCD-Algorithm c= P ; ::_thesis: for x, y being Integer st s . (intpos 9) = x & s . (intpos 10) = y & x >= 0 & y >= 0 holds (Result (P,s)) . (intpos 9) = x gcd y let x, y be Integer; ::_thesis: ( s . (intpos 9) = x & s . (intpos 10) = y & x >= 0 & y >= 0 implies (Result (P,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 ; ::_thesis: (Result (P,s)) . (intpos 9) = x gcd y set s4 = Comput (P,s,4); A6: IC (Comput (P,s,4)) = 5 by Th11, A1; A7: (Comput (P,s,4)) . GBP = 0 by Th11, A1; A8: (Comput (P,s,4)) . SBP = 7 by Th11, A1; A9: (Comput (P,s,4)) . (intpos (7 + RetIC)) = 2 by Th11, A1; A10: (Comput (P,s,4)) . (intpos 9) = s . (intpos 9) by Th11, A1; A11: (Comput (P,s,4)) . (DataLoc (((Comput (P,s,4)) . SBP),3)) = (Comput (P,s,4)) . (intpos (7 + 3)) by A8, Th1 .= y by A3, Th11, A1 ; A12: DataLoc (((Comput (P,s,4)) . SBP),2) = intpos (7 + 2) by A8, Th1; then A13: (Comput (P,s,4)) . (DataLoc (((Comput (P,s,4)) . SBP),2)) = x by A2, Th11, A1; consider n being Element of NAT such that A14: CurInstr (P,(Comput (P,(Comput (P,s,4)),n))) = return SBP and A15: (Comput (P,s,4)) . SBP = (Comput (P,(Comput (P,s,4)),n)) . SBP and A16: (Comput (P,(Comput (P,s,4)),n)) . (DataLoc (((Comput (P,s,4)) . SBP),2)) = ((Comput (P,s,4)) . (DataLoc (((Comput (P,s,4)) . SBP),2))) gcd ((Comput (P,s,4)) . (DataLoc (((Comput (P,s,4)) . SBP),3))) and A17: for j being Element of NAT st 1 < j & j <= ((Comput (P,s,4)) . SBP) + 1 holds (Comput (P,s,4)) . (intpos j) = (Comput (P,(Comput (P,s,4)),n)) . (intpos j) by A2, A4, A5, A6, A7, A8, A10, A11, A12, Th13, A1; A18: DataLoc (((Comput (P,(Comput (P,s,4)),n)) . SBP),RetIC) = intpos (7 + 1) by A8, A15, Th1, SCMPDS_I:def_14; A19: Comput (P,(Comput (P,s,4)),(n + 1)) = Following (P,(Comput (P,(Comput (P,s,4)),n))) by EXTPRO_1:3 .= Exec ((return SBP),(Comput (P,(Comput (P,s,4)),n))) by A14 ; A20: for m being Element of NAT st m = (Comput (P,(Comput (P,s,4)),n)) . (DataLoc (((Comput (P,(Comput (P,s,4)),n)) . SBP),RetIC)) holds m = abs ((Comput (P,(Comput (P,s,4)),n)) . (DataLoc (((Comput (P,(Comput (P,s,4)),n)) . SBP),RetIC))) by ABSVALUE:29; A21: IC (Comput (P,s,(4 + (n + 1)))) = (Comput (P,(Comput (P,s,4)),(n + 1))) . (IC ) by EXTPRO_1:4 .= (abs ((Comput (P,(Comput (P,s,4)),n)) . (DataLoc (((Comput (P,(Comput (P,s,4)),n)) . SBP),RetIC)))) + 2 by A19, SCMPDS_2:58 .= 2 + 2 by A8, A9, A17, A18, A20, SCMPDS_I:def_14 ; P . (IC (Comput (P,s,(4 + (n + 1))))) = P . (IC (Comput (P,s,(4 + (n + 1))))) .= halt SCMPDS by Lm1, A21, A1 ; then Result (P,s) = Comput (P,s,(4 + (n + 1))) by EXTPRO_1:7 .= Comput (P,(Comput (P,s,4)),(n + 1)) by EXTPRO_1:4 ; hence (Result (P,s)) . (intpos 9) = x gcd y by A11, A12, A13, A16, A19, AMI_3:10, SCMPDS_2:58; ::_thesis: verum end; Lm6: for n being Element of NAT for s1, s2 being State of SCMPDS for P1, P2 being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & n = s1 . SBP & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) > 0 & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) holds ( IC (Comput (P1,s1,7)) = 5 + 7 & Comput (P1,s1,8) = Exec ((goto (- 7)),(Comput (P1,s1,7))) & (Comput (P1,s1,7)) . SBP = n + 4 & (Comput (P1,s1,7)) . GBP = 0 & (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) proof let n be Element of NAT ; ::_thesis: for s1, s2 being State of SCMPDS for P1, P2 being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & n = s1 . SBP & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) > 0 & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) holds ( IC (Comput (P1,s1,7)) = 5 + 7 & Comput (P1,s1,8) = Exec ((goto (- 7)),(Comput (P1,s1,7))) & (Comput (P1,s1,7)) . SBP = n + 4 & (Comput (P1,s1,7)) . GBP = 0 & (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) let s1, s2 be State of SCMPDS; ::_thesis: for P1, P2 being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & n = s1 . SBP & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) > 0 & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) holds ( IC (Comput (P1,s1,7)) = 5 + 7 & Comput (P1,s1,8) = Exec ((goto (- 7)),(Comput (P1,s1,7))) & (Comput (P1,s1,7)) . SBP = n + 4 & (Comput (P1,s1,7)) . GBP = 0 & (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) let P1, P2 be Instruction-Sequence of SCMPDS; ::_thesis: ( GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & n = s1 . SBP & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) > 0 & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) implies ( IC (Comput (P1,s1,7)) = 5 + 7 & Comput (P1,s1,8) = Exec ((goto (- 7)),(Comput (P1,s1,7))) & (Comput (P1,s1,7)) . SBP = n + 4 & (Comput (P1,s1,7)) . GBP = 0 & (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) ) set GA = GCD-Algorithm ; assume that A1: GCD-Algorithm c= P1 and A2: GCD-Algorithm c= P2 ; ::_thesis: ( not IC s1 = 5 or not n = s1 . SBP or not s1 . GBP = 0 or not s1 . (DataLoc ((s1 . SBP),3)) > 0 or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ( IC (Comput (P1,s1,7)) = 5 + 7 & Comput (P1,s1,8) = Exec ((goto (- 7)),(Comput (P1,s1,7))) & (Comput (P1,s1,7)) . SBP = n + 4 & (Comput (P1,s1,7)) . GBP = 0 & (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) ) assume A3: IC s1 = 5 ; ::_thesis: ( not n = s1 . SBP or not s1 . GBP = 0 or not s1 . (DataLoc ((s1 . SBP),3)) > 0 or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ( IC (Comput (P1,s1,7)) = 5 + 7 & Comput (P1,s1,8) = Exec ((goto (- 7)),(Comput (P1,s1,7))) & (Comput (P1,s1,7)) . SBP = n + 4 & (Comput (P1,s1,7)) . GBP = 0 & (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) ) assume A4: n = s1 . SBP ; ::_thesis: ( not s1 . GBP = 0 or not s1 . (DataLoc ((s1 . SBP),3)) > 0 or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ( IC (Comput (P1,s1,7)) = 5 + 7 & Comput (P1,s1,8) = Exec ((goto (- 7)),(Comput (P1,s1,7))) & (Comput (P1,s1,7)) . SBP = n + 4 & (Comput (P1,s1,7)) . GBP = 0 & (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) ) assume A5: s1 . GBP = 0 ; ::_thesis: ( not s1 . (DataLoc ((s1 . SBP),3)) > 0 or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ( IC (Comput (P1,s1,7)) = 5 + 7 & Comput (P1,s1,8) = Exec ((goto (- 7)),(Comput (P1,s1,7))) & (Comput (P1,s1,7)) . SBP = n + 4 & (Comput (P1,s1,7)) . GBP = 0 & (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) ) assume A6: s1 . (DataLoc ((s1 . SBP),3)) > 0 ; ::_thesis: ( not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ( IC (Comput (P1,s1,7)) = 5 + 7 & Comput (P1,s1,8) = Exec ((goto (- 7)),(Comput (P1,s1,7))) & (Comput (P1,s1,7)) . SBP = n + 4 & (Comput (P1,s1,7)) . GBP = 0 & (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) ) assume that A7: IC s2 = IC s1 and A8: s2 . SBP = s1 . SBP and A9: s2 . GBP = 0 ; ::_thesis: ( not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ( IC (Comput (P1,s1,7)) = 5 + 7 & Comput (P1,s1,8) = Exec ((goto (- 7)),(Comput (P1,s1,7))) & (Comput (P1,s1,7)) . SBP = n + 4 & (Comput (P1,s1,7)) . GBP = 0 & (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) ) assume that A10: s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) and A11: s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) ; ::_thesis: ( IC (Comput (P1,s1,7)) = 5 + 7 & Comput (P1,s1,8) = Exec ((goto (- 7)),(Comput (P1,s1,7))) & (Comput (P1,s1,7)) . SBP = n + 4 & (Comput (P1,s1,7)) . GBP = 0 & (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) A12: DataLoc ((s1 . SBP),2) = intpos (n + 2) by A4, Th1; A13: DataLoc ((s1 . SBP),3) = intpos (n + 3) by A4, Th1; thus ( IC (Comput (P1,s1,7)) = 5 + 7 & Comput (P1,s1,8) = Exec ((goto (- 7)),(Comput (P1,s1,7))) & (Comput (P1,s1,7)) . SBP = n + 4 & (Comput (P1,s1,7)) . GBP = 0 ) by A3, A4, A5, A6, Lm4, A1; ::_thesis: ( (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) thus (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) by A3, A4, A5, A6, A12, A13, Lm4, A1; ::_thesis: ( (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) thus (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) by A3, A4, A5, A6, A13, Lm4, A1; ::_thesis: ( IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 & (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) thus ( IC (Comput (P2,s2,7)) = 5 + 7 & Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) & (Comput (P2,s2,7)) . SBP = n + 4 & (Comput (P2,s2,7)) . GBP = 0 ) by A3, A4, A6, A7, A8, A9, A11, Lm4, A2; ::_thesis: ( (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) & (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) thus (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) by A3, A4, A6, A7, A8, A9, A10, A11, A12, A13, Lm4, A2; ::_thesis: ( (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) & (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) thus (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) by A3, A4, A6, A7, A8, A9, A11, A13, Lm4, A2; ::_thesis: ( (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 & (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) thus ( (Comput (P1,s1,7)) . (intpos (n + 4)) = n & (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 ) by A3, A4, A5, A6, Lm4, A1; ::_thesis: ( (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) thus ( (Comput (P2,s2,7)) . (intpos (n + 4)) = n & (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 ) by A3, A4, A6, A7, A8, A9, A11, Lm4, A2; ::_thesis: verum end; Lm7: for n being Element of NAT for s1, s2 being State of SCMPDS for P1, P2 being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & n = s1 . SBP & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) > 0 & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) holds for k being Element of NAT for a being Int_position st k <= 7 & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) proof let n be Element of NAT ; ::_thesis: for s1, s2 being State of SCMPDS for P1, P2 being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & n = s1 . SBP & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) > 0 & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) holds for k being Element of NAT for a being Int_position st k <= 7 & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) let s1, s2 be State of SCMPDS; ::_thesis: for P1, P2 being Instruction-Sequence of SCMPDS st GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & n = s1 . SBP & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) > 0 & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) holds for k being Element of NAT for a being Int_position st k <= 7 & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) let P1, P2 be Instruction-Sequence of SCMPDS; ::_thesis: ( GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & n = s1 . SBP & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) > 0 & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) implies for k being Element of NAT for a being Int_position st k <= 7 & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) set GA = GCD-Algorithm ; assume that A1: GCD-Algorithm c= P1 and A2: GCD-Algorithm c= P2 ; ::_thesis: ( not IC s1 = 5 or not n = s1 . SBP or not s1 . GBP = 0 or not s1 . (DataLoc ((s1 . SBP),3)) > 0 or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or for k being Element of NAT for a being Int_position st k <= 7 & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) assume A3: IC s1 = 5 ; ::_thesis: ( not n = s1 . SBP or not s1 . GBP = 0 or not s1 . (DataLoc ((s1 . SBP),3)) > 0 or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or for k being Element of NAT for a being Int_position st k <= 7 & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) assume A4: n = s1 . SBP ; ::_thesis: ( not s1 . GBP = 0 or not s1 . (DataLoc ((s1 . SBP),3)) > 0 or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or for k being Element of NAT for a being Int_position st k <= 7 & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) assume A5: s1 . GBP = 0 ; ::_thesis: ( not s1 . (DataLoc ((s1 . SBP),3)) > 0 or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or for k being Element of NAT for a being Int_position st k <= 7 & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) assume A6: s1 . (DataLoc ((s1 . SBP),3)) > 0 ; ::_thesis: ( not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or for k being Element of NAT for a being Int_position st k <= 7 & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) assume that A7: IC s2 = IC s1 and A8: s2 . SBP = s1 . SBP and A9: s2 . GBP = 0 ; ::_thesis: ( not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or for k being Element of NAT for a being Int_position st k <= 7 & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) assume that A10: s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) and A11: s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) ; ::_thesis: for k being Element of NAT for a being Int_position st k <= 7 & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) A12: P1 /. (IC s1) = P1 . (IC s1) by PBOOLE:143; A13: Comput (P1,s1,(1 + 0)) = Following (P1,(Comput (P1,s1,0))) by EXTPRO_1:3 .= Following (P1,s1) by EXTPRO_1:2 .= Exec (((SBP,3) <=0_goto 9),s1) by A12, A3, Lm1, A1 ; A14: P2 /. (IC s2) = P2 . (IC s2) by PBOOLE:143; A15: Comput (P2,s2,(1 + 0)) = Following (P2,(Comput (P2,s2,0))) by EXTPRO_1:3 .= Following (P2,s2) by EXTPRO_1:2 .= Exec (((SBP,3) <=0_goto 9),s2) by A3, A7, Lm1, A14, A2 ; A16: P1 /. (IC (Comput (P1,s1,1))) = P1 . (IC (Comput (P1,s1,1))) by PBOOLE:143; A17: IC (Comput (P1,s1,1)) = succ (IC s1) by A6, A13, SCMPDS_2:56 .= 5 + 1 by A3 ; then A18: CurInstr (P1,(Comput (P1,s1,1))) = P1 . 6 by A16 .= (SBP,6) := (SBP,3) by Lm1, A1 ; A19: Comput (P1,s1,(1 + 1)) = Following (P1,(Comput (P1,s1,1))) by EXTPRO_1:3 .= Exec (((SBP,6) := (SBP,3)),(Comput (P1,s1,1))) by A18 ; A20: (Comput (P1,s1,1)) . SBP = n by A4, A13, SCMPDS_2:56; A21: (Comput (P1,s1,1)) . GBP = 0 by A5, A13, SCMPDS_2:56; A22: P2 /. (IC (Comput (P2,s2,1))) = P2 . (IC (Comput (P2,s2,1))) by PBOOLE:143; A23: IC (Comput (P2,s2,1)) = succ (IC s2) by A6, A8, A11, A15, SCMPDS_2:56 .= 5 + 1 by A3, A7 ; then A24: CurInstr (P2,(Comput (P2,s2,1))) = P2 . 6 by A22 .= (SBP,6) := (SBP,3) by Lm1, A2 ; A25: Comput (P2,s2,(1 + 1)) = Following (P2,(Comput (P2,s2,1))) by EXTPRO_1:3 .= Exec (((SBP,6) := (SBP,3)),(Comput (P2,s2,1))) by A24 ; A26: P1 /. (IC (Comput (P1,s1,2))) = P1 . (IC (Comput (P1,s1,2))) by PBOOLE:143; A27: IC (Comput (P1,s1,2)) = succ (IC (Comput (P1,s1,1))) by A19, SCMPDS_2:47 .= 6 + 1 by A17 ; then A28: CurInstr (P1,(Comput (P1,s1,2))) = P1 . 7 by A26 .= Divide (SBP,2,SBP,3) by Lm1, A1 ; A29: Comput (P1,s1,(2 + 1)) = Following (P1,(Comput (P1,s1,2))) by EXTPRO_1:3 .= Exec ((Divide (SBP,2,SBP,3)),(Comput (P1,s1,2))) by A28 ; A30: DataLoc (((Comput (P1,s1,1)) . SBP),6) = intpos (n + 6) by A20, Th1; then A31: (Comput (P1,s1,2)) . SBP = n by A19, A20, Lm3, SCMPDS_2:47; A32: (Comput (P1,s1,2)) . GBP = 0 by A19, A21, A30, Lm2, SCMPDS_2:47; A33: P2 /. (IC (Comput (P2,s2,2))) = P2 . (IC (Comput (P2,s2,2))) by PBOOLE:143; A34: IC (Comput (P2,s2,2)) = succ (IC (Comput (P2,s2,1))) by A25, SCMPDS_2:47 .= 6 + 1 by A23 ; then A35: CurInstr (P2,(Comput (P2,s2,2))) = P2 . 7 by A33 .= Divide (SBP,2,SBP,3) by Lm1, A2 ; A36: Comput (P2,s2,(2 + 1)) = Following (P2,(Comput (P2,s2,2))) by EXTPRO_1:3 .= Exec ((Divide (SBP,2,SBP,3)),(Comput (P2,s2,2))) by A35 ; A37: P1 /. (IC (Comput (P1,s1,3))) = P1 . (IC (Comput (P1,s1,3))) by PBOOLE:143; A38: IC (Comput (P1,s1,3)) = succ (IC (Comput (P1,s1,2))) by A29, SCMPDS_2:52 .= 7 + 1 by A27 ; then A39: CurInstr (P1,(Comput (P1,s1,3))) = P1 . 8 by A37 .= (SBP,7) := (SBP,3) by Lm1, A1 ; A40: Comput (P1,s1,(3 + 1)) = Following (P1,(Comput (P1,s1,3))) by EXTPRO_1:3 .= Exec (((SBP,7) := (SBP,3)),(Comput (P1,s1,3))) by A39 ; A41: DataLoc (((Comput (P1,s1,2)) . SBP),2) = intpos (n + 2) by A31, Th1; then A42: SBP <> DataLoc (((Comput (P1,s1,2)) . SBP),2) by Lm3; A43: DataLoc (((Comput (P1,s1,2)) . SBP),3) = intpos (n + 3) by A31, Th1; then SBP <> DataLoc (((Comput (P1,s1,2)) . SBP),3) by Lm3; then A44: (Comput (P1,s1,3)) . SBP = n by A29, A31, A42, SCMPDS_2:52; A45: GBP <> DataLoc (((Comput (P1,s1,2)) . SBP),2) by A41, Lm2; GBP <> DataLoc (((Comput (P1,s1,2)) . SBP),3) by A43, Lm2; then A46: (Comput (P1,s1,3)) . GBP = 0 by A29, A32, A45, SCMPDS_2:52; A47: P2 /. (IC (Comput (P2,s2,3))) = P2 . (IC (Comput (P2,s2,3))) by PBOOLE:143; A48: IC (Comput (P2,s2,3)) = succ (IC (Comput (P2,s2,2))) by A36, SCMPDS_2:52 .= 7 + 1 by A34 ; then A49: CurInstr (P2,(Comput (P2,s2,3))) = P2 . 8 by A47 .= (SBP,7) := (SBP,3) by Lm1, A2 ; A50: Comput (P2,s2,(3 + 1)) = Following (P2,(Comput (P2,s2,3))) by EXTPRO_1:3 .= Exec (((SBP,7) := (SBP,3)),(Comput (P2,s2,3))) by A49 ; A51: P1 /. (IC (Comput (P1,s1,4))) = P1 . (IC (Comput (P1,s1,4))) by PBOOLE:143; A52: IC (Comput (P1,s1,4)) = succ (IC (Comput (P1,s1,3))) by A40, SCMPDS_2:47 .= 8 + 1 by A38 ; then A53: CurInstr (P1,(Comput (P1,s1,4))) = P1 . 9 by A51 .= (SBP,(4 + RetSP)) := (GBP,1) by Lm1, A1 ; A54: Comput (P1,s1,(4 + 1)) = Following (P1,(Comput (P1,s1,4))) by EXTPRO_1:3 .= Exec (((SBP,(4 + RetSP)) := (GBP,1)),(Comput (P1,s1,4))) by A53 ; A55: DataLoc (((Comput (P1,s1,3)) . SBP),7) = intpos (n + 7) by A44, Th1; then A56: (Comput (P1,s1,4)) . SBP = n by A40, A44, Lm3, SCMPDS_2:47; A57: (Comput (P1,s1,4)) . GBP = 0 by A40, A46, A55, Lm2, SCMPDS_2:47; A58: P2 /. (IC (Comput (P2,s2,4))) = P2 . (IC (Comput (P2,s2,4))) by PBOOLE:143; A59: IC (Comput (P2,s2,4)) = succ (IC (Comput (P2,s2,3))) by A50, SCMPDS_2:47 .= 8 + 1 by A48 ; then A60: CurInstr (P2,(Comput (P2,s2,4))) = P2 . 9 by A58 .= (SBP,(4 + RetSP)) := (GBP,1) by Lm1, A2 ; A61: Comput (P2,s2,(4 + 1)) = Following (P2,(Comput (P2,s2,4))) by EXTPRO_1:3 .= Exec (((SBP,(4 + RetSP)) := (GBP,1)),(Comput (P2,s2,4))) by A60 ; A62: P1 /. (IC (Comput (P1,s1,5))) = P1 . (IC (Comput (P1,s1,5))) by PBOOLE:143; A63: IC (Comput (P1,s1,5)) = succ (IC (Comput (P1,s1,4))) by A54, SCMPDS_2:47 .= 9 + 1 by A52 ; then A64: CurInstr (P1,(Comput (P1,s1,5))) = P1 . 10 by A62 .= AddTo (GBP,1,4) by Lm1, A1 ; A65: Comput (P1,s1,(5 + 1)) = Following (P1,(Comput (P1,s1,5))) by EXTPRO_1:3 .= Exec ((AddTo (GBP,1,4)),(Comput (P1,s1,5))) by A64 ; DataLoc (((Comput (P1,s1,4)) . SBP),(4 + RetSP)) = intpos (n + (4 + 0)) by A56, Th1, SCMPDS_I:def_13; then A66: (Comput (P1,s1,5)) . GBP = 0 by A54, A57, Lm2, SCMPDS_2:47; A67: P2 /. (IC (Comput (P2,s2,5))) = P2 . (IC (Comput (P2,s2,5))) by PBOOLE:143; A68: IC (Comput (P2,s2,5)) = succ (IC (Comput (P2,s2,4))) by A61, SCMPDS_2:47 .= 9 + 1 by A59 ; then A69: CurInstr (P2,(Comput (P2,s2,5))) = P2 . 10 by A67 .= AddTo (GBP,1,4) by Lm1, A2 ; A70: Comput (P2,s2,(5 + 1)) = Following (P2,(Comput (P2,s2,5))) by EXTPRO_1:3 .= Exec ((AddTo (GBP,1,4)),(Comput (P2,s2,5))) by A69 ; A71: P1 /. (IC (Comput (P1,s1,6))) = P1 . (IC (Comput (P1,s1,6))) by PBOOLE:143; A72: IC (Comput (P1,s1,6)) = succ (IC (Comput (P1,s1,5))) by A65, SCMPDS_2:48 .= 10 + 1 by A63 ; then A73: CurInstr (P1,(Comput (P1,s1,6))) = P1 . 11 by A71 .= saveIC (SBP,RetIC) by Lm1, A1 ; A74: Comput (P1,s1,(6 + 1)) = Following (P1,(Comput (P1,s1,6))) by EXTPRO_1:3 .= Exec ((saveIC (SBP,RetIC)),(Comput (P1,s1,6))) by A73 ; A75: P2 /. (IC (Comput (P2,s2,6))) = P2 . (IC (Comput (P2,s2,6))) by PBOOLE:143; A76: IC (Comput (P2,s2,6)) = succ (IC (Comput (P2,s2,5))) by A70, SCMPDS_2:48 .= 10 + 1 by A68 ; then A77: CurInstr (P2,(Comput (P2,s2,6))) = P2 . 11 by A75 .= saveIC (SBP,RetIC) by Lm1, A2 ; A78: Comput (P2,s2,(6 + 1)) = Following (P2,(Comput (P2,s2,6))) by EXTPRO_1:3 .= Exec ((saveIC (SBP,RetIC)),(Comput (P2,s2,6))) by A77 ; A79: now__::_thesis:_for_b_being_Int_position_st_s1_._b_=_s2_._b_holds_ (Comput_(P1,s1,1))_._b_=_(Comput_(P2,s2,1))_._b let b be Int_position; ::_thesis: ( s1 . b = s2 . b implies (Comput (P1,s1,1)) . b = (Comput (P2,s2,1)) . b ) assume s1 . b = s2 . b ; ::_thesis: (Comput (P1,s1,1)) . b = (Comput (P2,s2,1)) . b hence (Comput (P1,s1,1)) . b = s2 . b by A13, SCMPDS_2:56 .= (Comput (P2,s2,1)) . b by A15, SCMPDS_2:56 ; ::_thesis: verum end; A80: for b being Int_position st s1 . b = s2 . b holds (Comput (P1,s1,2)) . b = (Comput (P2,s2,2)) . b proof let b be Int_position; ::_thesis: ( s1 . b = s2 . b implies (Comput (P1,s1,2)) . b = (Comput (P2,s2,2)) . b ) assume A81: s1 . b = s2 . b ; ::_thesis: (Comput (P1,s1,2)) . b = (Comput (P2,s2,2)) . b percases ( b = DataLoc (((Comput (P1,s1,1)) . SBP),6) or b <> DataLoc (((Comput (P1,s1,1)) . SBP),6) ) ; supposeA82: b = DataLoc (((Comput (P1,s1,1)) . SBP),6) ; ::_thesis: (Comput (P1,s1,2)) . b = (Comput (P2,s2,2)) . b then A83: b = DataLoc (((Comput (P2,s2,1)) . SBP),6) by A8, A79; thus (Comput (P1,s1,2)) . b = (Comput (P1,s1,1)) . (DataLoc ((s1 . SBP),3)) by A4, A19, A20, A82, SCMPDS_2:47 .= (Comput (P2,s2,1)) . (DataLoc (((Comput (P1,s1,1)) . SBP),3)) by A4, A11, A20, A79 .= (Comput (P2,s2,1)) . (DataLoc (((Comput (P2,s2,1)) . SBP),3)) by A8, A79 .= (Comput (P2,s2,2)) . b by A25, A83, SCMPDS_2:47 ; ::_thesis: verum end; supposeA84: b <> DataLoc (((Comput (P1,s1,1)) . SBP),6) ; ::_thesis: (Comput (P1,s1,2)) . b = (Comput (P2,s2,2)) . b then A85: b <> DataLoc (((Comput (P2,s2,1)) . SBP),6) by A8, A79; thus (Comput (P1,s1,2)) . b = (Comput (P1,s1,1)) . b by A19, A84, SCMPDS_2:47 .= (Comput (P2,s2,1)) . b by A79, A81 .= (Comput (P2,s2,2)) . b by A25, A85, SCMPDS_2:47 ; ::_thesis: verum end; end; end; A86: now__::_thesis:_for_b_being_Int_position_st_s1_._b_=_s2_._b_holds_ (Comput_(P1,s1,3))_._b_=_(Comput_(P2,s2,3))_._b let b be Int_position; ::_thesis: ( s1 . b = s2 . b implies (Comput (P1,s1,3)) . b1 = (Comput (P2,s2,3)) . b1 ) assume A87: s1 . b = s2 . b ; ::_thesis: (Comput (P1,s1,3)) . b1 = (Comput (P2,s2,3)) . b1 set x1 = DataLoc (((Comput (P1,s1,2)) . SBP),2); set x2 = DataLoc (((Comput (P1,s1,2)) . SBP),3); set y1 = DataLoc (((Comput (P2,s2,2)) . SBP),2); set y2 = DataLoc (((Comput (P2,s2,2)) . SBP),3); A88: DataLoc (((Comput (P1,s1,2)) . SBP),2) = DataLoc (((Comput (P2,s2,2)) . SBP),2) by A8, A80; A89: DataLoc (((Comput (P1,s1,2)) . SBP),3) = DataLoc (((Comput (P2,s2,2)) . SBP),3) by A8, A80; percases ( ( b <> DataLoc (((Comput (P1,s1,2)) . SBP),2) & b <> DataLoc (((Comput (P1,s1,2)) . SBP),3) ) or b = DataLoc (((Comput (P1,s1,2)) . SBP),2) or b = DataLoc (((Comput (P1,s1,2)) . SBP),3) ) ; supposeA90: ( b <> DataLoc (((Comput (P1,s1,2)) . SBP),2) & b <> DataLoc (((Comput (P1,s1,2)) . SBP),3) ) ; ::_thesis: (Comput (P1,s1,3)) . b1 = (Comput (P2,s2,3)) . b1 hence (Comput (P1,s1,3)) . b = (Comput (P1,s1,2)) . b by A29, SCMPDS_2:52 .= (Comput (P2,s2,2)) . b by A80, A87 .= (Comput (P2,s2,3)) . b by A36, A88, A89, A90, SCMPDS_2:52 ; ::_thesis: verum end; supposeA91: b = DataLoc (((Comput (P1,s1,2)) . SBP),2) ; ::_thesis: (Comput (P1,s1,3)) . b1 = (Comput (P2,s2,3)) . b1 A92: n + 2 <> n + 3 ; then A93: DataLoc (((Comput (P1,s1,2)) . SBP),2) <> DataLoc (((Comput (P1,s1,2)) . SBP),3) by A41, A43, AMI_3:10; A94: DataLoc (((Comput (P2,s2,2)) . SBP),2) <> DataLoc (((Comput (P2,s2,2)) . SBP),3) by A41, A43, A88, A89, A92, AMI_3:10; thus (Comput (P1,s1,3)) . b = ((Comput (P1,s1,2)) . (DataLoc (((Comput (P1,s1,2)) . SBP),2))) div ((Comput (P1,s1,2)) . (DataLoc (((Comput (P1,s1,2)) . SBP),3))) by A29, A91, A93, SCMPDS_2:52 .= ((Comput (P2,s2,2)) . (DataLoc (((Comput (P1,s1,2)) . SBP),2))) div ((Comput (P1,s1,2)) . (DataLoc (((Comput (P1,s1,2)) . SBP),3))) by A4, A10, A31, A80 .= ((Comput (P2,s2,2)) . (DataLoc (((Comput (P1,s1,2)) . SBP),2))) div ((Comput (P2,s2,2)) . (DataLoc (((Comput (P1,s1,2)) . SBP),3))) by A4, A11, A31, A80 .= (Comput (P2,s2,3)) . b by A36, A88, A89, A91, A94, SCMPDS_2:52 ; ::_thesis: verum end; supposeA95: b = DataLoc (((Comput (P1,s1,2)) . SBP),3) ; ::_thesis: (Comput (P1,s1,3)) . b1 = (Comput (P2,s2,3)) . b1 hence (Comput (P1,s1,3)) . b = ((Comput (P1,s1,2)) . (DataLoc (((Comput (P1,s1,2)) . SBP),2))) mod ((Comput (P1,s1,2)) . (DataLoc (((Comput (P1,s1,2)) . SBP),3))) by A29, SCMPDS_2:52 .= ((Comput (P2,s2,2)) . (DataLoc (((Comput (P1,s1,2)) . SBP),2))) mod ((Comput (P1,s1,2)) . (DataLoc (((Comput (P1,s1,2)) . SBP),3))) by A4, A10, A31, A80 .= ((Comput (P2,s2,2)) . (DataLoc (((Comput (P1,s1,2)) . SBP),2))) mod ((Comput (P2,s2,2)) . (DataLoc (((Comput (P1,s1,2)) . SBP),3))) by A4, A11, A31, A80 .= (Comput (P2,s2,3)) . b by A36, A88, A89, A95, SCMPDS_2:52 ; ::_thesis: verum end; end; end; A96: now__::_thesis:_for_b_being_Int_position_st_s1_._b_=_s2_._b_holds_ (Comput_(P1,s1,4))_._b_=_(Comput_(P2,s2,4))_._b let b be Int_position; ::_thesis: ( s1 . b = s2 . b implies (Comput (P1,s1,4)) . b1 = (Comput (P2,s2,4)) . b1 ) assume A97: s1 . b = s2 . b ; ::_thesis: (Comput (P1,s1,4)) . b1 = (Comput (P2,s2,4)) . b1 percases ( b = DataLoc (((Comput (P1,s1,3)) . SBP),7) or b <> DataLoc (((Comput (P1,s1,3)) . SBP),7) ) ; supposeA98: b = DataLoc (((Comput (P1,s1,3)) . SBP),7) ; ::_thesis: (Comput (P1,s1,4)) . b1 = (Comput (P2,s2,4)) . b1 then A99: b = DataLoc (((Comput (P2,s2,3)) . SBP),7) by A8, A86; thus (Comput (P1,s1,4)) . b = (Comput (P1,s1,3)) . (DataLoc (((Comput (P1,s1,3)) . SBP),3)) by A40, A98, SCMPDS_2:47 .= (Comput (P2,s2,3)) . (DataLoc (((Comput (P1,s1,3)) . SBP),3)) by A4, A11, A44, A86 .= (Comput (P2,s2,3)) . (DataLoc (((Comput (P2,s2,3)) . SBP),3)) by A8, A86 .= (Comput (P2,s2,4)) . b by A50, A99, SCMPDS_2:47 ; ::_thesis: verum end; supposeA100: b <> DataLoc (((Comput (P1,s1,3)) . SBP),7) ; ::_thesis: (Comput (P1,s1,4)) . b1 = (Comput (P2,s2,4)) . b1 then A101: b <> DataLoc (((Comput (P2,s2,3)) . SBP),7) by A8, A86; thus (Comput (P1,s1,4)) . b = (Comput (P1,s1,3)) . b by A40, A100, SCMPDS_2:47 .= (Comput (P2,s2,3)) . b by A86, A97 .= (Comput (P2,s2,4)) . b by A50, A101, SCMPDS_2:47 ; ::_thesis: verum end; end; end; A102: now__::_thesis:_for_b_being_Int_position_st_s1_._b_=_s2_._b_holds_ (Comput_(P1,s1,5))_._b_=_(Comput_(P2,s2,5))_._b let b be Int_position; ::_thesis: ( s1 . b = s2 . b implies (Comput (P1,s1,5)) . b1 = (Comput (P2,s2,5)) . b1 ) assume A103: s1 . b = s2 . b ; ::_thesis: (Comput (P1,s1,5)) . b1 = (Comput (P2,s2,5)) . b1 A104: s1 . (DataLoc (((Comput (P1,s1,4)) . GBP),1)) = s2 . (intpos (0 + 1)) by A8, A57, Th1 .= s2 . (DataLoc (((Comput (P1,s1,4)) . GBP),1)) by A57, Th1 ; percases ( b = DataLoc (((Comput (P1,s1,4)) . SBP),(4 + RetSP)) or b <> DataLoc (((Comput (P1,s1,4)) . SBP),(4 + RetSP)) ) ; supposeA105: b = DataLoc (((Comput (P1,s1,4)) . SBP),(4 + RetSP)) ; ::_thesis: (Comput (P1,s1,5)) . b1 = (Comput (P2,s2,5)) . b1 then A106: b = DataLoc (((Comput (P2,s2,4)) . SBP),(4 + RetSP)) by A8, A96; thus (Comput (P1,s1,5)) . b = (Comput (P1,s1,4)) . (DataLoc (((Comput (P1,s1,4)) . GBP),1)) by A54, A105, SCMPDS_2:47 .= (Comput (P2,s2,4)) . (DataLoc (((Comput (P1,s1,4)) . GBP),1)) by A96, A104 .= (Comput (P2,s2,4)) . (DataLoc (((Comput (P2,s2,4)) . GBP),1)) by A5, A9, A96 .= (Comput (P2,s2,5)) . b by A61, A106, SCMPDS_2:47 ; ::_thesis: verum end; supposeA107: b <> DataLoc (((Comput (P1,s1,4)) . SBP),(4 + RetSP)) ; ::_thesis: (Comput (P1,s1,5)) . b1 = (Comput (P2,s2,5)) . b1 then A108: b <> DataLoc (((Comput (P2,s2,4)) . SBP),(4 + RetSP)) by A8, A96; thus (Comput (P1,s1,5)) . b = (Comput (P1,s1,4)) . b by A54, A107, SCMPDS_2:47 .= (Comput (P2,s2,4)) . b by A96, A103 .= (Comput (P2,s2,5)) . b by A61, A108, SCMPDS_2:47 ; ::_thesis: verum end; end; end; A109: now__::_thesis:_for_b_being_Int_position_st_s1_._b_=_s2_._b_holds_ (Comput_(P1,s1,6))_._b_=_(Comput_(P2,s2,6))_._b let b be Int_position; ::_thesis: ( s1 . b = s2 . b implies (Comput (P1,s1,6)) . b1 = (Comput (P2,s2,6)) . b1 ) assume A110: s1 . b = s2 . b ; ::_thesis: (Comput (P1,s1,6)) . b1 = (Comput (P2,s2,6)) . b1 A111: s1 . (DataLoc (((Comput (P1,s1,5)) . GBP),1)) = s2 . (intpos (0 + 1)) by A8, A66, Th1 .= s2 . (DataLoc (((Comput (P1,s1,5)) . GBP),1)) by A66, Th1 ; percases ( b = DataLoc (((Comput (P1,s1,5)) . GBP),1) or b <> DataLoc (((Comput (P1,s1,5)) . GBP),1) ) ; supposeA112: b = DataLoc (((Comput (P1,s1,5)) . GBP),1) ; ::_thesis: (Comput (P1,s1,6)) . b1 = (Comput (P2,s2,6)) . b1 then A113: b = DataLoc (((Comput (P2,s2,5)) . GBP),1) by A5, A9, A102; thus (Comput (P1,s1,6)) . b = ((Comput (P1,s1,5)) . (DataLoc (((Comput (P1,s1,5)) . GBP),1))) + 4 by A65, A112, SCMPDS_2:48 .= ((Comput (P2,s2,5)) . (DataLoc (((Comput (P1,s1,5)) . GBP),1))) + 4 by A102, A111 .= ((Comput (P2,s2,5)) . (DataLoc (((Comput (P2,s2,5)) . GBP),1))) + 4 by A5, A9, A102 .= (Comput (P2,s2,6)) . b by A70, A113, SCMPDS_2:48 ; ::_thesis: verum end; supposeA114: b <> DataLoc (((Comput (P1,s1,5)) . GBP),1) ; ::_thesis: (Comput (P1,s1,6)) . b1 = (Comput (P2,s2,6)) . b1 then A115: b <> DataLoc (((Comput (P2,s2,5)) . GBP),1) by A5, A9, A102; thus (Comput (P1,s1,6)) . b = (Comput (P1,s1,5)) . b by A65, A114, SCMPDS_2:48 .= (Comput (P2,s2,5)) . b by A102, A110 .= (Comput (P2,s2,6)) . b by A70, A115, SCMPDS_2:48 ; ::_thesis: verum end; end; end; A116: now__::_thesis:_for_b_being_Int_position_st_s1_._b_=_s2_._b_holds_ (Comput_(P1,s1,7))_._b_=_(Comput_(P2,s2,7))_._b let b be Int_position; ::_thesis: ( s1 . b = s2 . b implies (Comput (P1,s1,7)) . b1 = (Comput (P2,s2,7)) . b1 ) assume A117: s1 . b = s2 . b ; ::_thesis: (Comput (P1,s1,7)) . b1 = (Comput (P2,s2,7)) . b1 percases ( b = DataLoc (((Comput (P1,s1,6)) . SBP),RetIC) or b <> DataLoc (((Comput (P1,s1,6)) . SBP),RetIC) ) ; supposeA118: b = DataLoc (((Comput (P1,s1,6)) . SBP),RetIC) ; ::_thesis: (Comput (P1,s1,7)) . b1 = (Comput (P2,s2,7)) . b1 then A119: b = DataLoc (((Comput (P2,s2,6)) . SBP),RetIC) by A8, A109; thus (Comput (P1,s1,7)) . b = IC (Comput (P1,s1,6)) by A74, A118, SCMPDS_2:59 .= (Comput (P2,s2,7)) . b by A72, A76, A78, A119, SCMPDS_2:59 ; ::_thesis: verum end; supposeA120: b <> DataLoc (((Comput (P1,s1,6)) . SBP),RetIC) ; ::_thesis: (Comput (P1,s1,7)) . b1 = (Comput (P2,s2,7)) . b1 then A121: b <> DataLoc (((Comput (P2,s2,6)) . SBP),RetIC) by A8, A109; thus (Comput (P1,s1,7)) . b = (Comput (P1,s1,6)) . b by A74, A120, SCMPDS_2:59 .= (Comput (P2,s2,6)) . b by A109, A117 .= (Comput (P2,s2,7)) . b by A78, A121, SCMPDS_2:59 ; ::_thesis: verum end; end; end; hereby ::_thesis: verum let k be Element of NAT ; ::_thesis: for a being Int_position st k <= 7 & s1 . a = s2 . a holds ( IC (Comput (P1,s1,b2)) = IC (Comput (P2,s2,b2)) & (Comput (P1,s1,b2)) . b3 = (Comput (P2,s2,b2)) . b3 ) let a be Int_position; ::_thesis: ( k <= 7 & s1 . a = s2 . a implies ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) ) assume that A122: k <= 7 and A123: s1 . a = s2 . a ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) percases ( k = 0 or k = 1 or k = 2 or k = 3 or k = 4 or k = 5 or k = 6 or k = 7 ) by A122, NAT_1:31; supposeA124: k = 0 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) hence IC (Comput (P1,s1,k)) = IC s1 by EXTPRO_1:2 .= IC (Comput (P2,s2,k)) by A7, A124, EXTPRO_1:2 ; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = s1 . a by A124, EXTPRO_1:2 .= (Comput (P2,s2,k)) . a by A123, A124, EXTPRO_1:2 ; ::_thesis: verum end; supposeA125: k = 1 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) hence IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) by A17, A23; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a by A79, A123, A125; ::_thesis: verum end; supposeA126: k = 2 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) hence IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) by A27, A34; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a by A80, A123, A126; ::_thesis: verum end; supposeA127: k = 3 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) hence IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) by A38, A48; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a by A86, A123, A127; ::_thesis: verum end; supposeA128: k = 4 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) hence IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) by A52, A59; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a by A96, A123, A128; ::_thesis: verum end; supposeA129: k = 5 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) hence IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) by A63, A68; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a by A102, A123, A129; ::_thesis: verum end; supposeA130: k = 6 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) hence IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) by A72, A76; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a by A109, A123, A130; ::_thesis: verum end; supposeA131: k = 7 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) hence IC (Comput (P1,s1,k)) = succ (IC (Comput (P2,s2,6))) by A72, A74, A76, SCMPDS_2:59 .= IC (Comput (P2,s2,k)) by A78, A131, SCMPDS_2:59 ; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a by A116, A123, A131; ::_thesis: verum end; end; end; end; Lm8: for P1, P2 being Instruction-Sequence of SCMPDS for s1, s2 being State of SCMPDS st GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & s1 . SBP > 0 & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) >= 0 & s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) holds ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) proof let P1, P2 be Instruction-Sequence of SCMPDS; ::_thesis: for s1, s2 being State of SCMPDS st GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & s1 . SBP > 0 & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) >= 0 & s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) holds ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) set GA = GCD-Algorithm ; defpred S1[ Element of NAT ] means for s1, s2 being State of SCMPDS st GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & s1 . SBP > 0 & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) <= $1 & s1 . (DataLoc ((s1 . SBP),3)) >= 0 & s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) holds ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ); A1: S1[ 0 ] proof let s1, s2 be State of SCMPDS; ::_thesis: ( GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & s1 . SBP > 0 & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) <= 0 & s1 . (DataLoc ((s1 . SBP),3)) >= 0 & s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) implies ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) set x = s1 . (DataLoc ((s1 . SBP),2)); set y = s1 . (DataLoc ((s1 . SBP),3)); set y2 = s2 . (DataLoc ((s1 . SBP),3)); assume that A2: GCD-Algorithm c= P1 and A3: GCD-Algorithm c= P2 ; ::_thesis: ( not IC s1 = 5 or not s1 . SBP > 0 or not s1 . GBP = 0 or not s1 . (DataLoc ((s1 . SBP),3)) <= 0 or not s1 . (DataLoc ((s1 . SBP),3)) >= 0 or not s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume A4: IC s1 = 5 ; ::_thesis: ( not s1 . SBP > 0 or not s1 . GBP = 0 or not s1 . (DataLoc ((s1 . SBP),3)) <= 0 or not s1 . (DataLoc ((s1 . SBP),3)) >= 0 or not s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume that s1 . SBP > 0 and s1 . GBP = 0 ; ::_thesis: ( not s1 . (DataLoc ((s1 . SBP),3)) <= 0 or not s1 . (DataLoc ((s1 . SBP),3)) >= 0 or not s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume A5: s1 . (DataLoc ((s1 . SBP),3)) <= 0 ; ::_thesis: ( not s1 . (DataLoc ((s1 . SBP),3)) >= 0 or not s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume s1 . (DataLoc ((s1 . SBP),3)) >= 0 ; ::_thesis: ( not s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) ; ::_thesis: ( not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume that A6: IC s2 = IC s1 and A7: s2 . SBP = s1 . SBP and s2 . GBP = 0 ; ::_thesis: ( not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume that s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) and A8: s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) ; ::_thesis: ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) A9: P1 /. (IC s1) = P1 . (IC s1) by PBOOLE:143; A10: Comput (P1,s1,(1 + 0)) = Following (P1,(Comput (P1,s1,0))) by EXTPRO_1:3 .= Following (P1,s1) by EXTPRO_1:2 .= Exec (((SBP,3) <=0_goto 9),s1) by A4, A9, Lm1, A2 ; A11: P2 /. (IC s2) = P2 . (IC s2) by PBOOLE:143; A12: Comput (P2,s2,(1 + 0)) = Following (P2,(Comput (P2,s2,0))) by EXTPRO_1:3 .= Following (P2,s2) by EXTPRO_1:2 .= Exec (((SBP,3) <=0_goto 9),s2) by A4, A6, A11, Lm1, A3 ; A13: IC (Comput (P1,s1,1)) = ICplusConst (s1,9) by A5, A10, SCMPDS_2:56 .= 5 + 9 by A4, SCMPDS_6:12 ; A14: IC (Comput (P2,s2,1)) = ICplusConst (s2,9) by A5, A7, A8, A12, SCMPDS_2:56 .= 5 + 9 by A4, A6, SCMPDS_6:12 ; take n = 1; ::_thesis: ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) A15: P1 /. (IC (Comput (P1,s1,n))) = P1 . (IC (Comput (P1,s1,n))) by PBOOLE:143; thus CurInstr (P1,(Comput (P1,s1,n))) = P1 . 14 by A13, A15 .= return SBP by Lm1, A2 ; ::_thesis: ( s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) thus (Comput (P1,s1,n)) . SBP = s1 . SBP by A10, SCMPDS_2:56; ::_thesis: ( CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) A16: P2 /. (IC (Comput (P2,s2,n))) = P2 . (IC (Comput (P2,s2,n))) by PBOOLE:143; thus CurInstr (P2,(Comput (P2,s2,n))) = P2 . 14 by A14, A16 .= return SBP by Lm1, A3 ; ::_thesis: ( s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) thus (Comput (P2,s2,n)) . SBP = s2 . SBP by A12, SCMPDS_2:56; ::_thesis: ( ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) thus for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) by A10, A12, SCMPDS_2:56; ::_thesis: for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) hereby ::_thesis: verum let k be Element of NAT ; ::_thesis: for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,b2)) = IC (Comput (P2,s2,b2)) & (Comput (P1,s1,b2)) . b3 = (Comput (P2,s2,b2)) . b3 ) let a be Int_position; ::_thesis: ( k <= n & s1 . a = s2 . a implies ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) ) assume that A17: k <= n and A18: s1 . a = s2 . a ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) percases ( k = 0 or k = 1 ) by A17, NAT_1:25; supposeA19: k = 0 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) hence IC (Comput (P1,s1,k)) = IC s2 by A6, EXTPRO_1:2 .= IC (Comput (P2,s2,k)) by A19, EXTPRO_1:2 ; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = s1 . a by A19, EXTPRO_1:2 .= (Comput (P2,s2,k)) . a by A18, A19, EXTPRO_1:2 ; ::_thesis: verum end; supposeA20: k = 1 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) hence IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) by A13, A14; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = s1 . a by A10, A20, SCMPDS_2:56 .= (Comput (P2,s2,k)) . a by A12, A18, A20, SCMPDS_2:56 ; ::_thesis: verum end; end; end; end; A21: now__::_thesis:_for_k_being_Element_of_NAT_st_S1[k]_holds_ S1[k_+_1] let k be Element of NAT ; ::_thesis: ( S1[k] implies S1[k + 1] ) assume A22: S1[k] ; ::_thesis: S1[k + 1] thus S1[k + 1] ::_thesis: verum proof let s1, s2 be State of SCMPDS; ::_thesis: ( GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & s1 . SBP > 0 & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) <= k + 1 & s1 . (DataLoc ((s1 . SBP),3)) >= 0 & s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) implies ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) set x = s1 . (DataLoc ((s1 . SBP),2)); set y = s1 . (DataLoc ((s1 . SBP),3)); assume that A23: GCD-Algorithm c= P1 and A24: GCD-Algorithm c= P2 ; ::_thesis: ( not IC s1 = 5 or not s1 . SBP > 0 or not s1 . GBP = 0 or not s1 . (DataLoc ((s1 . SBP),3)) <= k + 1 or not s1 . (DataLoc ((s1 . SBP),3)) >= 0 or not s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume A25: IC s1 = 5 ; ::_thesis: ( not s1 . SBP > 0 or not s1 . GBP = 0 or not s1 . (DataLoc ((s1 . SBP),3)) <= k + 1 or not s1 . (DataLoc ((s1 . SBP),3)) >= 0 or not s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume that A26: s1 . SBP > 0 and A27: s1 . GBP = 0 ; ::_thesis: ( not s1 . (DataLoc ((s1 . SBP),3)) <= k + 1 or not s1 . (DataLoc ((s1 . SBP),3)) >= 0 or not s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume A28: s1 . (DataLoc ((s1 . SBP),3)) <= k + 1 ; ::_thesis: ( not s1 . (DataLoc ((s1 . SBP),3)) >= 0 or not s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume A29: s1 . (DataLoc ((s1 . SBP),3)) >= 0 ; ::_thesis: ( not s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) or not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume A30: s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) ; ::_thesis: ( not IC s2 = IC s1 or not s2 . SBP = s1 . SBP or not s2 . GBP = 0 or not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume that A31: IC s2 = IC s1 and A32: s2 . SBP = s1 . SBP and A33: s2 . GBP = 0 ; ::_thesis: ( not s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) or not s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) or ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume that A34: s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) and A35: s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) ; ::_thesis: ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) reconsider y = s1 . (DataLoc ((s1 . SBP),3)) as Element of NAT by A29, INT_1:3; percases ( y <= k or y = k + 1 ) by A28, NAT_1:8; suppose y <= k ; ::_thesis: ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) hence ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) by A22, A25, A26, A27, A29, A30, A31, A32, A33, A34, A35, A23, A24; ::_thesis: verum end; supposeA36: y = k + 1 ; ::_thesis: ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) then A37: y > 0 by NAT_1:5; reconsider n = s1 . SBP as Element of NAT by A26, INT_1:3; A38: n = s1 . SBP ; set s8 = Comput (P1,s1,8); set t8 = Comput (P2,s2,8); A39: IC (Comput (P1,s1,7)) = 5 + 7 by A25, A27, A34, A37, A38, Lm6, A23; A40: Comput (P1,s1,8) = Exec ((goto (- 7)),(Comput (P1,s1,7))) by A25, A27, A34, A37, A38, Lm6, A23; A41: (Comput (P1,s1,7)) . SBP = n + 4 by A25, A27, A34, A37, Lm6, A23; A42: (Comput (P1,s1,7)) . GBP = 0 by A25, A27, A34, A37, A38, Lm6, A23; A43: (Comput (P1,s1,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) by A25, A27, A34, A37, Lm6, A23; A44: (Comput (P1,s1,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) by A25, A27, A34, A37, Lm6, A23; A45: IC (Comput (P2,s2,7)) = 5 + 7 by A25, A31, A32, A33, A34, A35, A37, A38, Lm6, A24; A46: Comput (P2,s2,8) = Exec ((goto (- 7)),(Comput (P2,s2,7))) by A25, A31, A32, A33, A34, A35, A37, A38, Lm6, A24; A47: (Comput (P2,s2,7)) . SBP = n + 4 by A25, A31, A32, A33, A34, A35, A37, Lm6, A24; A48: (Comput (P2,s2,7)) . GBP = 0 by A25, A31, A32, A33, A34, A35, A37, A38, Lm6, A24; A49: (Comput (P2,s2,7)) . (intpos (n + 7)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) by A25, A27, A31, A32, A33, A34, A35, A37, Lm6, A24; A50: (Comput (P2,s2,7)) . (intpos (n + 6)) = s1 . (intpos (n + 3)) by A25, A27, A31, A32, A33, A34, A35, A37, Lm6, A24; A51: (Comput (P1,s1,7)) . (intpos (n + 4)) = n by A25, A27, A34, A37, Lm6, A23; A52: (Comput (P1,s1,7)) . (intpos (n + 5)) = 11 by A25, A27, A34, A37, Lm6, A23; A53: (Comput (P2,s2,7)) . (intpos (n + 4)) = n by A25, A31, A32, A33, A34, A35, A37, Lm6, A24; A54: (Comput (P2,s2,7)) . (intpos (n + 5)) = 11 by A25, A31, A32, A33, A34, A35, A37, Lm6, A24; A55: DataLoc ((n + 4),2) = intpos ((n + 4) + 2) by Th1 .= intpos (n + (4 + 2)) ; A56: DataLoc ((n + 4),3) = intpos ((n + 4) + 3) by Th1 .= intpos (n + (4 + 3)) ; A57: IC (Comput (P1,s1,8)) = ICplusConst ((Comput (P1,s1,7)),(- 7)) by A40, SCMPDS_2:54 .= 5 by A39, Th2 ; A58: (Comput (P1,s1,8)) . SBP = n + 4 by A40, A41, SCMPDS_2:54; A59: 4 <= n + 4 by NAT_1:11; then A60: (Comput (P1,s1,8)) . SBP > 0 by A58, XXREAL_0:2; A61: (Comput (P1,s1,8)) . GBP = 0 by A40, A42, SCMPDS_2:54; set x1 = (Comput (P1,s1,8)) . (DataLoc (((Comput (P1,s1,8)) . SBP),2)); set y1 = (Comput (P1,s1,8)) . (DataLoc (((Comput (P1,s1,8)) . SBP),3)); A62: (Comput (P1,s1,8)) . (DataLoc (((Comput (P1,s1,8)) . SBP),2)) = s1 . (intpos (n + 3)) by A40, A44, A55, A58, SCMPDS_2:54 .= y by Th1 ; A63: (Comput (P1,s1,8)) . (DataLoc (((Comput (P1,s1,8)) . SBP),3)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) by A40, A43, A56, A58, SCMPDS_2:54 .= (s1 . (intpos (n + 2))) mod y by Th1 ; then A64: (Comput (P1,s1,8)) . (DataLoc (((Comput (P1,s1,8)) . SBP),3)) < y by A36, NAT_1:5, NEWTON:65; then A65: (Comput (P1,s1,8)) . (DataLoc (((Comput (P1,s1,8)) . SBP),3)) <= k by A36, INT_1:7; A66: IC (Comput (P2,s2,8)) = ICplusConst ((Comput (P2,s2,7)),(- 7)) by A46, SCMPDS_2:54 .= IC (Comput (P1,s1,8)) by A45, A57, Th2 ; A67: (Comput (P2,s2,8)) . SBP = (Comput (P1,s1,8)) . SBP by A46, A47, A58, SCMPDS_2:54; A68: (Comput (P2,s2,8)) . GBP = 0 by A46, A48, SCMPDS_2:54; set x3 = (Comput (P2,s2,8)) . (DataLoc (((Comput (P1,s1,8)) . SBP),2)); A69: (Comput (P2,s2,8)) . (DataLoc (((Comput (P1,s1,8)) . SBP),2)) = s1 . (intpos (n + 3)) by A46, A50, A55, A58, SCMPDS_2:54 .= (Comput (P1,s1,8)) . (DataLoc (((Comput (P1,s1,8)) . SBP),2)) by A62, Th1 ; (Comput (P2,s2,8)) . (DataLoc (((Comput (P1,s1,8)) . SBP),3)) = (s1 . (intpos (n + 2))) mod (s1 . (intpos (n + 3))) by A46, A49, A56, A58, SCMPDS_2:54 .= (Comput (P1,s1,8)) . (DataLoc (((Comput (P1,s1,8)) . SBP),3)) by A63, Th1 ; then consider m being Element of NAT such that A70: CurInstr (P1,(Comput (P1,(Comput (P1,s1,8)),m))) = return SBP and A71: (Comput (P1,s1,8)) . SBP = (Comput (P1,(Comput (P1,s1,8)),m)) . SBP and A72: CurInstr (P2,(Comput (P2,(Comput (P2,s2,8)),m))) = return SBP and A73: (Comput (P2,s2,8)) . SBP = (Comput (P2,(Comput (P2,s2,8)),m)) . SBP and A74: for j being Element of NAT st 1 < j & j <= ((Comput (P1,s1,8)) . SBP) + 1 holds ( (Comput (P1,s1,8)) . (intpos j) = (Comput (P1,(Comput (P1,s1,8)),m)) . (intpos j) & (Comput (P2,s2,8)) . (intpos j) = (Comput (P2,(Comput (P2,s2,8)),m)) . (intpos j) ) and A75: for k being Element of NAT for a being Int_position st k <= m & (Comput (P1,s1,8)) . a = (Comput (P2,s2,8)) . a holds ( IC (Comput (P1,(Comput (P1,s1,8)),k)) = IC (Comput (P2,(Comput (P2,s2,8)),k)) & (Comput (P1,(Comput (P1,s1,8)),k)) . a = (Comput (P2,(Comput (P2,s2,8)),k)) . a ) by A22, A37, A57, A60, A61, A62, A63, A64, A65, A66, A67, A68, A69, A23, A24, NEWTON:64; set s9 = Comput (P1,s1,(m + 8)); set t9 = Comput (P2,s2,(m + 8)); A76: (Comput (P1,s1,8)) . SBP = (Comput (P1,s1,(m + 8))) . SBP by A71, EXTPRO_1:4; A77: Comput (P1,s1,(m + 8)) = Comput (P1,(Comput (P1,s1,8)),m) by EXTPRO_1:4; A78: Comput (P1,s1,(m + (8 + 1))) = Comput (P1,s1,((m + 8) + 1)) .= Following (P1,(Comput (P1,s1,(m + 8)))) by EXTPRO_1:3 .= Exec ((return SBP),(Comput (P1,s1,(m + 8)))) by A70, A77 ; A79: 1 < n + 4 by A59, XXREAL_0:2; A80: n + 4 < ((Comput (P1,s1,8)) . SBP) + 1 by A58, XREAL_1:29; then A81: (Comput (P1,s1,8)) . (intpos (n + 4)) = (Comput (P1,(Comput (P1,s1,8)),m)) . (intpos (n + 4)) by A74, A79 .= (Comput (P1,s1,(m + 8))) . (intpos (n + 4)) by EXTPRO_1:4 ; 5 <= n + 5 by NAT_1:11; then A82: 1 < n + 5 by XXREAL_0:2; A83: intpos (n + (4 + 1)) = intpos ((n + 4) + 1) .= DataLoc ((n + 4),1) by Th1 ; A84: 11 = (Comput (P1,s1,8)) . (intpos (n + 5)) by A40, A52, SCMPDS_2:54 .= (Comput (P1,(Comput (P1,s1,8)),m)) . (intpos (n + 5)) by A58, A74, A82 .= (Comput (P1,s1,(m + 8))) . (DataLoc (((Comput (P1,s1,(m + 8))) . SBP),RetIC)) by A58, A76, A83, EXTPRO_1:4, SCMPDS_I:def_14 ; A85: (Comput (P2,s2,(m + 8))) . SBP = n + 4 by A58, A67, A73, EXTPRO_1:4; A86: Comput (P2,s2,(m + 8)) = Comput (P2,(Comput (P2,s2,8)),m) by EXTPRO_1:4; A87: Comput (P2,s2,(m + (8 + 1))) = Comput (P2,s2,((m + 8) + 1)) .= Following (P2,(Comput (P2,s2,(m + 8)))) by EXTPRO_1:3 .= Exec ((return SBP),(Comput (P2,s2,(m + 8)))) by A72, A86 ; A88: (Comput (P2,s2,8)) . (intpos (n + 4)) = (Comput (P2,(Comput (P2,s2,8)),m)) . (intpos (n + 4)) by A74, A79, A80 .= (Comput (P2,s2,(m + 8))) . (intpos (n + 4)) by EXTPRO_1:4 ; A89: 11 = (Comput (P2,s2,8)) . (intpos (n + 5)) by A46, A54, SCMPDS_2:54 .= (Comput (P2,(Comput (P2,s2,8)),m)) . (intpos (n + 5)) by A58, A74, A82 .= (Comput (P2,s2,(m + 8))) . (DataLoc (((Comput (P2,s2,(m + 8))) . SBP),RetIC)) by A83, A85, EXTPRO_1:4, SCMPDS_I:def_14 ; A90: P1 /. (IC (Comput (P1,s1,(m + 9)))) = P1 . (IC (Comput (P1,s1,(m + 9)))) by PBOOLE:143; A91: IC (Comput (P1,s1,(m + 9))) = (abs ((Comput (P1,s1,(m + 8))) . (DataLoc (((Comput (P1,s1,(m + 8))) . SBP),RetIC)))) + 2 by A78, SCMPDS_2:58 .= 11 + 2 by A84, ABSVALUE:29 ; then A92: CurInstr (P1,(Comput (P1,s1,(m + 9)))) = P1 . 13 by A90 .= (SBP,2) := (SBP,6) by Lm1, A23 ; A93: Comput (P1,s1,(m + (9 + 1))) = Comput (P1,s1,((m + 9) + 1)) .= Following (P1,(Comput (P1,s1,(m + 9)))) by EXTPRO_1:3 .= Exec (((SBP,2) := (SBP,6)),(Comput (P1,s1,(m + 9)))) by A92 ; A94: (Comput (P1,s1,(m + 9))) . SBP = (Comput (P1,s1,(m + 8))) . (DataLoc ((n + 4),RetSP)) by A58, A76, A78, SCMPDS_2:58 .= (Comput (P1,s1,(m + 8))) . (intpos ((n + 4) + 0)) by Th1, SCMPDS_I:def_13 .= n by A40, A51, A81, SCMPDS_2:54 ; A95: P2 /. (IC (Comput (P2,s2,(m + 9)))) = P2 . (IC (Comput (P2,s2,(m + 9)))) by PBOOLE:143; A96: IC (Comput (P2,s2,(m + 9))) = (abs ((Comput (P2,s2,(m + 8))) . (DataLoc (((Comput (P2,s2,(m + 8))) . SBP),RetIC)))) + 2 by A87, SCMPDS_2:58 .= 11 + 2 by A89, ABSVALUE:29 ; then A97: CurInstr (P2,(Comput (P2,s2,(m + 9)))) = P2 . 13 by A95 .= (SBP,2) := (SBP,6) by Lm1, A24 ; A98: Comput (P2,s2,(m + (9 + 1))) = Comput (P2,s2,((m + 9) + 1)) .= Following (P2,(Comput (P2,s2,(m + 9)))) by EXTPRO_1:3 .= Exec (((SBP,2) := (SBP,6)),(Comput (P2,s2,(m + 9)))) by A97 ; A99: (Comput (P2,s2,(m + 9))) . SBP = (Comput (P2,s2,(m + 8))) . (DataLoc ((n + 4),RetSP)) by A85, A87, SCMPDS_2:58 .= (Comput (P2,s2,(m + 8))) . (intpos ((n + 4) + 0)) by Th1, SCMPDS_I:def_13 .= n by A46, A53, A88, SCMPDS_2:54 ; A100: IC (Comput (P1,s1,(m + 10))) = succ (IC (Comput (P1,s1,(m + 9)))) by A93, SCMPDS_2:47 .= 13 + 1 by A91 ; A101: IC (Comput (P2,s2,(m + 10))) = succ (IC (Comput (P2,s2,(m + 9)))) by A98, SCMPDS_2:47 .= 13 + 1 by A96 ; hereby ::_thesis: verum take nn = m + 10; ::_thesis: ( CurInstr (P1,(Comput (P1,s1,nn))) = return SBP & (Comput (P1,s1,nn)) . SBP = s1 . SBP & CurInstr (P2,(Comput (P2,s2,nn))) = return SBP & (Comput (P2,s2,nn)) . SBP = s2 . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,nn)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,nn)) . (intpos j) ) ) & ( for j being Element of NAT for a being Int_position st j <= nn & s1 . a = s2 . a holds ( IC (Comput (P1,s1,j)) = IC (Comput (P2,s2,j)) & (Comput (P1,s1,j)) . a = (Comput (P2,s2,j)) . a ) ) ) A102: P1 /. (IC (Comput (P1,s1,nn))) = P1 . (IC (Comput (P1,s1,nn))) by PBOOLE:143; thus CurInstr (P1,(Comput (P1,s1,nn))) = P1 . 14 by A100, A102 .= return SBP by Lm1, A23 ; ::_thesis: ( (Comput (P1,s1,nn)) . SBP = s1 . SBP & CurInstr (P2,(Comput (P2,s2,nn))) = return SBP & (Comput (P2,s2,nn)) . SBP = s2 . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,nn)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,nn)) . (intpos j) ) ) & ( for j being Element of NAT for a being Int_position st j <= nn & s1 . a = s2 . a holds ( IC (Comput (P1,s1,j)) = IC (Comput (P2,s2,j)) & (Comput (P1,s1,j)) . a = (Comput (P2,s2,j)) . a ) ) ) A103: P2 /. (IC (Comput (P2,s2,nn))) = P2 . (IC (Comput (P2,s2,nn))) by PBOOLE:143; A104: DataLoc (((Comput (P1,s1,(m + 9))) . SBP),2) = intpos (n + 2) by A94, Th1; hence (Comput (P1,s1,nn)) . SBP = s1 . SBP by A93, A94, Lm3, SCMPDS_2:47; ::_thesis: ( CurInstr (P2,(Comput (P2,s2,nn))) = return SBP & (Comput (P2,s2,nn)) . SBP = s2 . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,nn)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,nn)) . (intpos j) ) ) & ( for j being Element of NAT for a being Int_position st j <= nn & s1 . a = s2 . a holds ( IC (Comput (P1,s1,j)) = IC (Comput (P2,s2,j)) & (Comput (P1,s1,j)) . a = (Comput (P2,s2,j)) . a ) ) ) thus CurInstr (P2,(Comput (P2,s2,nn))) = P2 . 14 by A101, A103 .= return SBP by Lm1, A24 ; ::_thesis: ( (Comput (P2,s2,nn)) . SBP = s2 . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,nn)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,nn)) . (intpos j) ) ) & ( for j being Element of NAT for a being Int_position st j <= nn & s1 . a = s2 . a holds ( IC (Comput (P1,s1,j)) = IC (Comput (P2,s2,j)) & (Comput (P1,s1,j)) . a = (Comput (P2,s2,j)) . a ) ) ) A105: DataLoc (((Comput (P2,s2,(m + 9))) . SBP),2) = intpos (n + 2) by A99, Th1; hence (Comput (P2,s2,nn)) . SBP = s2 . SBP by A32, A98, A99, Lm3, SCMPDS_2:47; ::_thesis: ( ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,nn)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,nn)) . (intpos j) ) ) & ( for j being Element of NAT for a being Int_position st j <= nn & s1 . a = s2 . a holds ( IC (Comput (P1,s1,j)) = IC (Comput (P2,s2,j)) & (Comput (P1,s1,j)) . a = (Comput (P2,s2,j)) . a ) ) ) hereby ::_thesis: for j being Element of NAT for a being Int_position st j <= nn & s1 . a = s2 . a holds ( IC (Comput (P1,s1,j)) = IC (Comput (P2,s2,j)) & (Comput (P1,s1,j)) . a = (Comput (P2,s2,j)) . a ) let j be Element of NAT ; ::_thesis: ( 1 < j & j <= (s1 . SBP) + 1 implies ( s1 . (intpos j) = (Comput (P1,s1,nn)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,nn)) . (intpos j) ) ) assume that A106: 1 < j and A107: j <= (s1 . SBP) + 1 ; ::_thesis: ( s1 . (intpos j) = (Comput (P1,s1,nn)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,nn)) . (intpos j) ) s1 . SBP <= (Comput (P1,s1,8)) . SBP by A58, NAT_1:11; then (s1 . SBP) + 1 <= ((Comput (P1,s1,8)) . SBP) + 1 by XREAL_1:6; then A108: j <= ((Comput (P1,s1,8)) . SBP) + 1 by A107, XXREAL_0:2; A109: (Comput (P1,s1,(m + 9))) . (intpos j) = (Comput (P1,s1,(m + 8))) . (intpos j) by A78, A106, AMI_3:10, SCMPDS_2:58 .= (Comput (P1,(Comput (P1,s1,8)),m)) . (intpos j) by EXTPRO_1:4 .= (Comput (P1,s1,8)) . (intpos j) by A74, A106, A108 ; A110: n + 1 < n + 2 by XREAL_1:6; (Comput (P1,s1,7)) . (intpos j) = s1 . (intpos j) by A25, A27, A36, A38, A106, A107, Lm5, A23, NAT_1:5; hence s1 . (intpos j) = (Comput (P1,s1,8)) . (intpos j) by A40, SCMPDS_2:54 .= (Comput (P1,s1,nn)) . (intpos j) by A93, A104, A107, A109, A110, AMI_3:10, SCMPDS_2:47 ; ::_thesis: s2 . (intpos j) = (Comput (P2,s2,nn)) . (intpos j) A111: (Comput (P2,s2,(m + 9))) . (intpos j) = (Comput (P2,s2,(m + 8))) . (intpos j) by A87, A106, AMI_3:10, SCMPDS_2:58 .= (Comput (P2,(Comput (P2,s2,8)),m)) . (intpos j) by EXTPRO_1:4 .= (Comput (P2,s2,8)) . (intpos j) by A74, A106, A108 ; j <= n + 1 by A107; then (Comput (P2,s2,7)) . (intpos j) = s2 . (intpos j) by A25, A31, A32, A33, A35, A36, A106, Lm5, A24, NAT_1:5; hence s2 . (intpos j) = (Comput (P2,s2,8)) . (intpos j) by A46, SCMPDS_2:54 .= (Comput (P2,s2,nn)) . (intpos j) by A98, A105, A107, A110, A111, AMI_3:10, SCMPDS_2:47 ; ::_thesis: verum end; hereby ::_thesis: verum let j be Element of NAT ; ::_thesis: for a being Int_position st j <= nn & s1 . a = s2 . a holds ( IC (Comput (P1,s1,b2)) = IC (Comput (P2,s2,b2)) & (Comput (P1,s1,b2)) . b3 = (Comput (P2,s2,b2)) . b3 ) let a be Int_position; ::_thesis: ( j <= nn & s1 . a = s2 . a implies ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) ) assume that A112: j <= nn and A113: s1 . a = s2 . a ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) nn = (m + 9) + 1 ; then A114: ( j <= m + 9 or j = nn ) by A112, NAT_1:8; A115: m + (8 + 1) = (m + 8) + 1 ; A116: now__::_thesis:_(_not_j_<=_m_+_8_or_j_<=_7_or_(_j_>=_8_&_j_<=_m_+_8_)_) assume A117: j <= m + 8 ; ::_thesis: ( j <= 7 or ( j >= 8 & j <= m + 8 ) ) percases ( j < 7 + 1 or j >= 8 ) ; suppose j < 7 + 1 ; ::_thesis: ( j <= 7 or ( j >= 8 & j <= m + 8 ) ) hence ( j <= 7 or ( j >= 8 & j <= m + 8 ) ) by NAT_1:13; ::_thesis: verum end; suppose j >= 8 ; ::_thesis: ( j <= 7 or ( j >= 8 & j <= m + 8 ) ) hence ( j <= 7 or ( j >= 8 & j <= m + 8 ) ) by A117; ::_thesis: verum end; end; end; A118: (Comput (P1,s1,8)) . a = (Comput (P1,s1,7)) . a by A40, SCMPDS_2:54 .= (Comput (P2,s2,7)) . a by A25, A27, A31, A32, A33, A23, A24, A34, A35, A37, A38, A113, Lm7 .= (Comput (P2,s2,8)) . a by A46, SCMPDS_2:54 ; A119: now__::_thesis:_for_b_being_Int_position_st_(Comput_(P1,s1,8))_._b_=_(Comput_(P2,s2,8))_._b_holds_ (Comput_(P1,s1,(m_+_9)))_._b_=_(Comput_(P2,s2,(m_+_9)))_._b let b be Int_position; ::_thesis: ( (Comput (P1,s1,8)) . b = (Comput (P2,s2,8)) . b implies (Comput (P1,s1,(m + 9))) . b1 = (Comput (P2,s2,(m + 9))) . b1 ) assume A120: (Comput (P1,s1,8)) . b = (Comput (P2,s2,8)) . b ; ::_thesis: (Comput (P1,s1,(m + 9))) . b1 = (Comput (P2,s2,(m + 9))) . b1 percases ( b = SBP or b <> SBP ) ; suppose b = SBP ; ::_thesis: (Comput (P1,s1,(m + 9))) . b1 = (Comput (P2,s2,(m + 9))) . b1 hence (Comput (P1,s1,(m + 9))) . b = (Comput (P2,s2,(m + 9))) . b by A94, A99; ::_thesis: verum end; supposeA121: b <> SBP ; ::_thesis: (Comput (P1,s1,(m + 9))) . b1 = (Comput (P2,s2,(m + 9))) . b1 hence (Comput (P1,s1,(m + 9))) . b = (Comput (P1,s1,(m + 8))) . b by A78, SCMPDS_2:58 .= (Comput (P1,(Comput (P1,s1,8)),m)) . b by EXTPRO_1:4 .= (Comput (P2,(Comput (P2,s2,8)),m)) . b by A75, A120 .= (Comput (P2,s2,(m + 8))) . b by EXTPRO_1:4 .= (Comput (P2,s2,(m + 9))) . b by A87, A121, SCMPDS_2:58 ; ::_thesis: verum end; end; end; A122: (Comput (P1,s1,8)) . (DataLoc (((Comput (P1,s1,(m + 9))) . SBP),6)) = (Comput (P1,s1,8)) . (DataLoc (((Comput (P1,s1,8)) . SBP),2)) by A55, A58, A94, Th1 .= (Comput (P2,s2,8)) . (DataLoc (((Comput (P1,s1,(m + 9))) . SBP),6)) by A55, A58, A69, A94, Th1 ; A123: now__::_thesis:_(Comput_(P1,s1,nn))_._a_=_(Comput_(P2,s2,nn))_._a percases ( a <> DataLoc (((Comput (P2,s2,(m + 9))) . SBP),2) or a = DataLoc (((Comput (P2,s2,(m + 9))) . SBP),2) ) ; supposeA124: a <> DataLoc (((Comput (P2,s2,(m + 9))) . SBP),2) ; ::_thesis: (Comput (P1,s1,nn)) . a = (Comput (P2,s2,nn)) . a hence (Comput (P1,s1,nn)) . a = (Comput (P1,s1,(m + 9))) . a by A93, A94, A99, SCMPDS_2:47 .= (Comput (P2,s2,(m + 9))) . a by A118, A119 .= (Comput (P2,s2,nn)) . a by A98, A124, SCMPDS_2:47 ; ::_thesis: verum end; supposeA125: a = DataLoc (((Comput (P2,s2,(m + 9))) . SBP),2) ; ::_thesis: (Comput (P1,s1,nn)) . a = (Comput (P2,s2,nn)) . a hence (Comput (P1,s1,nn)) . a = (Comput (P1,s1,(m + 9))) . (DataLoc (((Comput (P1,s1,(m + 9))) . SBP),6)) by A93, A94, A99, SCMPDS_2:47 .= (Comput (P2,s2,(m + 9))) . (DataLoc (((Comput (P2,s2,(m + 9))) . SBP),6)) by A94, A99, A119, A122 .= (Comput (P2,s2,nn)) . a by A98, A125, SCMPDS_2:47 ; ::_thesis: verum end; end; end; percases ( j <= 7 or ( j >= 8 & j <= m + 8 ) or j = m + 9 or j = nn ) by A114, A115, A116, NAT_1:8; suppose j <= 7 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) hence ( IC (Comput (P1,s1,j)) = IC (Comput (P2,s2,j)) & (Comput (P1,s1,j)) . a = (Comput (P2,s2,j)) . a ) by A25, A27, A31, A32, A33, A34, A35, A37, A38, A113, Lm7, A23, A24; ::_thesis: verum end; supposeA126: ( j >= 8 & j <= m + 8 ) ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) then consider j1 being Nat such that A127: j = 8 + j1 by NAT_1:10; reconsider j1 = j1 as Element of NAT by ORDINAL1:def_12; A128: j1 <= m by A126, A127, XREAL_1:6; thus IC (Comput (P1,s1,j)) = IC (Comput (P1,(Comput (P1,s1,8)),j1)) by A127, EXTPRO_1:4 .= IC (Comput (P2,(Comput (P2,s2,8)),j1)) by A75, A118, A128 .= IC (Comput (P2,s2,j)) by A127, EXTPRO_1:4 ; ::_thesis: (Comput (P1,s1,j)) . a = (Comput (P2,s2,j)) . a thus (Comput (P1,s1,j)) . a = (Comput (P1,(Comput (P1,s1,8)),j1)) . a by A127, EXTPRO_1:4 .= (Comput (P2,(Comput (P2,s2,8)),j1)) . a by A75, A118, A128 .= (Comput (P2,s2,j)) . a by A127, EXTPRO_1:4 ; ::_thesis: verum end; supposeA129: j = m + 9 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) hence IC (Comput (P1,s1,j)) = IC (Comput (P2,s2,j)) by A91, A96; ::_thesis: (Comput (P1,s1,j)) . a = (Comput (P2,s2,j)) . a thus (Comput (P1,s1,j)) . a = (Comput (P2,s2,j)) . a by A118, A119, A129; ::_thesis: verum end; supposeA130: j = nn ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . b2 = (Comput (P2,s2,b1)) . b2 ) hence IC (Comput (P1,s1,j)) = IC (Comput (P2,s2,j)) by A100, A101; ::_thesis: (Comput (P1,s1,j)) . a = (Comput (P2,s2,j)) . a thus (Comput (P1,s1,j)) . a = (Comput (P2,s2,j)) . a by A123, A130; ::_thesis: verum end; end; end; end; end; end; end; end; A131: for n being Element of NAT holds S1[n] from NAT_1:sch_1(A1, A21); let s1, s2 be State of SCMPDS; ::_thesis: ( GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & IC s1 = 5 & s1 . SBP > 0 & s1 . GBP = 0 & s1 . (DataLoc ((s1 . SBP),3)) >= 0 & s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) & IC s2 = IC s1 & s2 . SBP = s1 . SBP & s2 . GBP = 0 & s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) & s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) implies ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) ) assume that A132: GCD-Algorithm c= P1 and A133: GCD-Algorithm c= P2 and A134: IC s1 = 5 and A135: s1 . SBP > 0 and A136: s1 . GBP = 0 and A137: s1 . (DataLoc ((s1 . SBP),3)) >= 0 and A138: s1 . (DataLoc ((s1 . SBP),2)) >= s1 . (DataLoc ((s1 . SBP),3)) and A139: IC s2 = IC s1 and A140: s2 . SBP = s1 . SBP and A141: s2 . GBP = 0 and A142: s2 . (DataLoc ((s1 . SBP),2)) = s1 . (DataLoc ((s1 . SBP),2)) and A143: s2 . (DataLoc ((s1 . SBP),3)) = s1 . (DataLoc ((s1 . SBP),3)) ; ::_thesis: ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) reconsider m = s1 . (DataLoc ((s1 . SBP),3)) as Element of NAT by A137, INT_1:3; S1[m] by A131; hence ex n being Element of NAT st ( CurInstr (P1,(Comput (P1,s1,n))) = return SBP & s1 . SBP = (Comput (P1,s1,n)) . SBP & CurInstr (P2,(Comput (P2,s2,n))) = return SBP & s2 . SBP = (Comput (P2,s2,n)) . SBP & ( for j being Element of NAT st 1 < j & j <= (s1 . SBP) + 1 holds ( s1 . (intpos j) = (Comput (P1,s1,n)) . (intpos j) & s2 . (intpos j) = (Comput (P2,s2,n)) . (intpos j) ) ) & ( for k being Element of NAT for a being Int_position st k <= n & s1 . a = s2 . a holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) ) by A134, A135, A136, A137, A138, A139, A140, A141, A142, A143, A132, A133; ::_thesis: verum end; Lm9: for P1, P2 being Instruction-Sequence of SCMPDS for s1, s2 being State of SCMPDS for a being Int_position for k being Element of NAT st Start-At (0,SCMPDS) c= s1 & Start-At (0,SCMPDS) c= s2 & GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & s1 . a = s2 . a & k <= 4 holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) proof let P1, P2 be Instruction-Sequence of SCMPDS; ::_thesis: for s1, s2 being State of SCMPDS for a being Int_position for k being Element of NAT st Start-At (0,SCMPDS) c= s1 & Start-At (0,SCMPDS) c= s2 & GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & s1 . a = s2 . a & k <= 4 holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) let s1, s2 be State of SCMPDS; ::_thesis: for a being Int_position for k being Element of NAT st Start-At (0,SCMPDS) c= s1 & Start-At (0,SCMPDS) c= s2 & GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & s1 . a = s2 . a & k <= 4 holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) let a be Int_position; ::_thesis: for k being Element of NAT st Start-At (0,SCMPDS) c= s1 & Start-At (0,SCMPDS) c= s2 & GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & s1 . a = s2 . a & k <= 4 holds ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) let k be Element of NAT ; ::_thesis: ( Start-At (0,SCMPDS) c= s1 & Start-At (0,SCMPDS) c= s2 & GCD-Algorithm c= P1 & GCD-Algorithm c= P2 & s1 . a = s2 . a & k <= 4 implies ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) set GA = GCD-Algorithm ; assume that A1: Start-At (0,SCMPDS) c= s1 and A2: Start-At (0,SCMPDS) c= s2 and A3: GCD-Algorithm c= P1 and A4: GCD-Algorithm c= P2 ; ::_thesis: ( not s1 . a = s2 . a or not k <= 4 or ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) ) assume that A5: s1 . a = s2 . a and A6: k <= 4 ; ::_thesis: ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) A7: IC s1 = 0 by A1, MEMSTR_0:39; A8: P1 /. (IC s1) = P1 . (IC s1) by PBOOLE:143; A9: Comput (P1,s1,(0 + 1)) = Following (P1,(Comput (P1,s1,0))) by EXTPRO_1:3 .= Following (P1,s1) by EXTPRO_1:2 .= Exec ((GBP := 0),s1) by A7, Lm1, A8, A3 ; A10: IC s2 = 0 by A2, MEMSTR_0:39; A11: P2 /. (IC s2) = P2 . (IC s2) by PBOOLE:143; A12: Comput (P2,s2,(0 + 1)) = Following (P2,(Comput (P2,s2,0))) by EXTPRO_1:3 .= Following (P2,s2) by EXTPRO_1:2 .= Exec ((GBP := 0),s2) by A10, Lm1, A11, A4 ; A13: P1 /. (IC (Comput (P1,s1,1))) = P1 . (IC (Comput (P1,s1,1))) by PBOOLE:143; A14: IC (Comput (P1,s1,1)) = succ (IC s1) by A9, SCMPDS_2:45 .= 0 + 1 by A7 ; then A15: CurInstr (P1,(Comput (P1,s1,1))) = P1 . 1 by A13 .= SBP := 7 by Lm1, A3 ; A16: Comput (P1,s1,(1 + 1)) = Following (P1,(Comput (P1,s1,1))) by EXTPRO_1:3 .= Exec ((SBP := 7),(Comput (P1,s1,1))) by A15 ; A17: P2 /. (IC (Comput (P2,s2,1))) = P2 . (IC (Comput (P2,s2,1))) by PBOOLE:143; A18: IC (Comput (P2,s2,1)) = succ (IC s2) by A12, SCMPDS_2:45 .= 0 + 1 by A10 ; then A19: CurInstr (P2,(Comput (P2,s2,1))) = P2 . 1 by A17 .= SBP := 7 by Lm1, A4 ; A20: Comput (P2,s2,(1 + 1)) = Following (P2,(Comput (P2,s2,1))) by EXTPRO_1:3 .= Exec ((SBP := 7),(Comput (P2,s2,1))) by A19 ; A21: P1 /. (IC (Comput (P1,s1,2))) = P1 . (IC (Comput (P1,s1,2))) by PBOOLE:143; A22: IC (Comput (P1,s1,2)) = succ (IC (Comput (P1,s1,1))) by A16, SCMPDS_2:45 .= 1 + 1 by A14 ; then A23: CurInstr (P1,(Comput (P1,s1,2))) = P1 . 2 by A21 .= saveIC (SBP,RetIC) by Lm1, A3 ; A24: Comput (P1,s1,(2 + 1)) = Following (P1,(Comput (P1,s1,2))) by EXTPRO_1:3 .= Exec ((saveIC (SBP,RetIC)),(Comput (P1,s1,2))) by A23 ; A25: (Comput (P1,s1,2)) . SBP = 7 by A16, SCMPDS_2:45; A26: P2 /. (IC (Comput (P2,s2,2))) = P2 . (IC (Comput (P2,s2,2))) by PBOOLE:143; A27: IC (Comput (P2,s2,2)) = succ (IC (Comput (P2,s2,1))) by A20, SCMPDS_2:45 .= 1 + 1 by A18 ; then A28: CurInstr (P2,(Comput (P2,s2,2))) = P2 . 2 by A26 .= saveIC (SBP,RetIC) by Lm1, A4 ; A29: Comput (P2,s2,(2 + 1)) = Following (P2,(Comput (P2,s2,2))) by EXTPRO_1:3 .= Exec ((saveIC (SBP,RetIC)),(Comput (P2,s2,2))) by A28 ; A30: (Comput (P2,s2,2)) . SBP = 7 by A20, SCMPDS_2:45; A31: P1 /. (IC (Comput (P1,s1,3))) = P1 . (IC (Comput (P1,s1,3))) by PBOOLE:143; A32: IC (Comput (P1,s1,3)) = succ (IC (Comput (P1,s1,2))) by A24, SCMPDS_2:59 .= 2 + 1 by A22 ; then A33: CurInstr (P1,(Comput (P1,s1,3))) = P1 . 3 by A31 .= goto 2 by Lm1, A3 ; A34: Comput (P1,s1,(3 + 1)) = Following (P1,(Comput (P1,s1,3))) by EXTPRO_1:3 .= Exec ((goto 2),(Comput (P1,s1,3))) by A33 ; A35: P2 /. (IC (Comput (P2,s2,3))) = P2 . (IC (Comput (P2,s2,3))) by PBOOLE:143; A36: IC (Comput (P2,s2,3)) = succ (IC (Comput (P2,s2,2))) by A29, SCMPDS_2:59 .= 2 + 1 by A27 ; then A37: CurInstr (P2,(Comput (P2,s2,3))) = P2 . 3 by A35 .= goto 2 by Lm1, A4 ; A38: Comput (P2,s2,(3 + 1)) = Following (P2,(Comput (P2,s2,3))) by EXTPRO_1:3 .= Exec ((goto 2),(Comput (P2,s2,3))) by A37 ; A39: now__::_thesis:_for_b_being_Int_position_st_s1_._b_=_s2_._b_holds_ (Comput_(P1,s1,1))_._b_=_(Comput_(P2,s2,1))_._b let b be Int_position; ::_thesis: ( s1 . b = s2 . b implies (Comput (P1,s1,1)) . b1 = (Comput (P2,s2,1)) . b1 ) assume A40: s1 . b = s2 . b ; ::_thesis: (Comput (P1,s1,1)) . b1 = (Comput (P2,s2,1)) . b1 percases ( b = GBP or b <> GBP ) ; supposeA41: b = GBP ; ::_thesis: (Comput (P1,s1,1)) . b1 = (Comput (P2,s2,1)) . b1 hence (Comput (P1,s1,1)) . b = 0 by A9, SCMPDS_2:45 .= (Comput (P2,s2,1)) . b by A12, A41, SCMPDS_2:45 ; ::_thesis: verum end; supposeA42: b <> GBP ; ::_thesis: (Comput (P1,s1,1)) . b1 = (Comput (P2,s2,1)) . b1 hence (Comput (P1,s1,1)) . b = s1 . b by A9, SCMPDS_2:45 .= (Comput (P2,s2,1)) . b by A12, A40, A42, SCMPDS_2:45 ; ::_thesis: verum end; end; end; A43: now__::_thesis:_for_b_being_Int_position_st_s1_._b_=_s2_._b_holds_ (Comput_(P1,s1,2))_._b_=_(Comput_(P2,s2,2))_._b let b be Int_position; ::_thesis: ( s1 . b = s2 . b implies (Comput (P1,s1,2)) . b1 = (Comput (P2,s2,2)) . b1 ) assume A44: s1 . b = s2 . b ; ::_thesis: (Comput (P1,s1,2)) . b1 = (Comput (P2,s2,2)) . b1 percases ( b = SBP or b <> SBP ) ; supposeA45: b = SBP ; ::_thesis: (Comput (P1,s1,2)) . b1 = (Comput (P2,s2,2)) . b1 hence (Comput (P1,s1,2)) . b = 7 by A16, SCMPDS_2:45 .= (Comput (P2,s2,2)) . b by A20, A45, SCMPDS_2:45 ; ::_thesis: verum end; supposeA46: b <> SBP ; ::_thesis: (Comput (P1,s1,2)) . b1 = (Comput (P2,s2,2)) . b1 hence (Comput (P1,s1,2)) . b = (Comput (P1,s1,1)) . b by A16, SCMPDS_2:45 .= (Comput (P2,s2,1)) . b by A39, A44 .= (Comput (P2,s2,2)) . b by A20, A46, SCMPDS_2:45 ; ::_thesis: verum end; end; end; A47: now__::_thesis:_for_b_being_Int_position_st_s1_._b_=_s2_._b_holds_ (Comput_(P1,s1,3))_._b_=_(Comput_(P2,s2,3))_._b let b be Int_position; ::_thesis: ( s1 . b = s2 . b implies (Comput (P1,s1,3)) . b1 = (Comput (P2,s2,3)) . b1 ) assume A48: s1 . b = s2 . b ; ::_thesis: (Comput (P1,s1,3)) . b1 = (Comput (P2,s2,3)) . b1 percases ( b = DataLoc (((Comput (P1,s1,2)) . SBP),RetIC) or b <> DataLoc (((Comput (P1,s1,2)) . SBP),RetIC) ) ; supposeA49: b = DataLoc (((Comput (P1,s1,2)) . SBP),RetIC) ; ::_thesis: (Comput (P1,s1,3)) . b1 = (Comput (P2,s2,3)) . b1 hence (Comput (P1,s1,3)) . b = IC (Comput (P1,s1,2)) by A24, SCMPDS_2:59 .= (Comput (P2,s2,3)) . b by A22, A25, A27, A29, A30, A49, SCMPDS_2:59 ; ::_thesis: verum end; supposeA50: b <> DataLoc (((Comput (P1,s1,2)) . SBP),RetIC) ; ::_thesis: (Comput (P1,s1,3)) . b1 = (Comput (P2,s2,3)) . b1 hence (Comput (P1,s1,3)) . b = (Comput (P1,s1,2)) . b by A24, SCMPDS_2:59 .= (Comput (P2,s2,2)) . b by A43, A48 .= (Comput (P2,s2,3)) . b by A25, A29, A30, A50, SCMPDS_2:59 ; ::_thesis: verum end; end; end; percases ( k = 0 or k = 1 or k = 2 or k = 3 or k = 4 ) by A6, NAT_1:28; supposeA51: k = 0 ; ::_thesis: ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) hence IC (Comput (P1,s1,k)) = IC s1 by EXTPRO_1:2 .= IC (Comput (P2,s2,k)) by A7, A10, A51, EXTPRO_1:2 ; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = s1 . a by A51, EXTPRO_1:2 .= (Comput (P2,s2,k)) . a by A5, A51, EXTPRO_1:2 ; ::_thesis: verum end; supposeA52: k = 1 ; ::_thesis: ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) hence IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) by A14, A18; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a by A5, A39, A52; ::_thesis: verum end; supposeA53: k = 2 ; ::_thesis: ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) hence IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) by A22, A27; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a by A5, A43, A53; ::_thesis: verum end; supposeA54: k = 3 ; ::_thesis: ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) hence IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) by A32, A36; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a by A5, A47, A54; ::_thesis: verum end; supposeA55: k = 4 ; ::_thesis: ( IC (Comput (P1,s1,k)) = IC (Comput (P2,s2,k)) & (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a ) hence IC (Comput (P1,s1,k)) = ICplusConst ((Comput (P1,s1,3)),2) by A34, SCMPDS_2:54 .= 3 + 2 by A32, SCMPDS_6:12 .= ICplusConst ((Comput (P2,s2,3)),2) by A36, SCMPDS_6:12 .= IC (Comput (P2,s2,k)) by A38, A55, SCMPDS_2:54 ; ::_thesis: (Comput (P1,s1,k)) . a = (Comput (P2,s2,k)) . a thus (Comput (P1,s1,k)) . a = (Comput (P1,s1,3)) . a by A34, A55, SCMPDS_2:54 .= (Comput (P2,s2,3)) . a by A5, A47 .= (Comput (P2,s2,k)) . a by A38, A55, SCMPDS_2:54 ; ::_thesis: verum end; end; end; begin theorem :: SCMP_GCD:15 for p being FinPartState of SCMPDS for x, y being Integer st y >= 0 & x >= y & p = ((intpos 9),(intpos 10)) --> (x,y) holds Initialize p is GCD-Algorithm -autonomic proof let p be FinPartState of SCMPDS; ::_thesis: for x, y being Integer st y >= 0 & x >= y & p = ((intpos 9),(intpos 10)) --> (x,y) holds Initialize p is GCD-Algorithm -autonomic let x, y be Integer; ::_thesis: ( y >= 0 & x >= y & p = ((intpos 9),(intpos 10)) --> (x,y) implies Initialize p is GCD-Algorithm -autonomic ) set GA = GCD-Algorithm ; set a = intpos 9; set b = intpos 10; assume that A1: y >= 0 and A2: x >= y and A3: p = ((intpos 9),(intpos 10)) --> (x,y) ; ::_thesis: Initialize p is GCD-Algorithm -autonomic A4: dom p = {(intpos 9),(intpos 10)} by A3, FUNCT_4:62; ( intpos 9 in SCM-Data-Loc & intpos 10 in SCM-Data-Loc ) by AMI_2:def_16; then ( intpos 9 in Data-Locations & intpos 10 in Data-Locations ) by SCMPDS_2:84; then A5: dom p c= Data-Locations by A4, ZFMISC_1:32; not IC in Data-Locations by STRUCT_0:3; then {(IC )} misses Data-Locations by ZFMISC_1:50; then Data-Locations misses {(IC )} ; then dom p misses {(IC )} by A5, XBOOLE_1:63; then A6: p is data-only by MEMSTR_0:def_9; intpos 9 in dom p by A4, TARSKI:def_2; then A7: intpos 9 in dom p ; intpos 10 in dom p by A4, TARSKI:def_2; then A8: intpos 10 in dom p ; A9: dom (Start-At (0,SCMPDS)) = {(IC )} by FUNCOP_1:13; A10: for t being State of SCMPDS st Initialize p c= t holds ( t . (intpos 9) = x & t . (intpos 10) = y ) proof let t be State of SCMPDS; ::_thesis: ( Initialize p c= t implies ( t . (intpos 9) = x & t . (intpos 10) = y ) ) assume A11: Initialize p c= t ; ::_thesis: ( t . (intpos 9) = x & t . (intpos 10) = y ) p = DataPart p by A6, MEMSTR_0:7; then dom p misses dom (Start-At (0,SCMPDS)) by A9, MEMSTR_0:4; then p c= Initialize p by FUNCT_4:32; then p c= Initialize p ; then A12: p c= t by A11, XBOOLE_1:1; hence t . (intpos 9) = p . (intpos 9) by A7, GRFUNC_1:2 .= p . (intpos 9) .= x by A3, AMI_3:10, FUNCT_4:63 ; ::_thesis: t . (intpos 10) = y thus t . (intpos 10) = p . (intpos 10) by A12, A8, GRFUNC_1:2 .= p . (intpos 10) .= y by A3, FUNCT_4:63 ; ::_thesis: verum end; let P1, P2 be Instruction-Sequence of SCMPDS; :: according to EXTPRO_1:def_10 ::_thesis: ( not GCD-Algorithm c= P1 or not GCD-Algorithm c= P2 or for b1, b2 being set holds ( not Initialize p c= b1 or not Initialize p c= b2 or for b3 being Element of NAT holds (Comput (P1,b1,b3)) | (dom (Initialize p)) = (Comput (P2,b2,b3)) | (dom (Initialize p)) ) ) assume A13: ( GCD-Algorithm c= P1 & GCD-Algorithm c= P2 ) ; ::_thesis: for b1, b2 being set holds ( not Initialize p c= b1 or not Initialize p c= b2 or for b3 being Element of NAT holds (Comput (P1,b1,b3)) | (dom (Initialize p)) = (Comput (P2,b2,b3)) | (dom (Initialize p)) ) let s1, s2 be State of SCMPDS; ::_thesis: ( not Initialize p c= s1 or not Initialize p c= s2 or for b1 being Element of NAT holds (Comput (P1,s1,b1)) | (dom (Initialize p)) = (Comput (P2,s2,b1)) | (dom (Initialize p)) ) assume that A14: Initialize p c= s1 and A15: Initialize p c= s2 ; ::_thesis: for b1 being Element of NAT holds (Comput (P1,s1,b1)) | (dom (Initialize p)) = (Comput (P2,s2,b1)) | (dom (Initialize p)) Initialize p c= s1 by A14; then A16: Start-At (0,SCMPDS) c= s1 by MEMSTR_0:50; then A17: s1 is 0 -started by MEMSTR_0:29; A18: GCD-Algorithm c= P1 by A13; Initialize p c= s2 by A15; then A19: Start-At (0,SCMPDS) c= s2 by MEMSTR_0:50; then A20: s2 is 0 -started by MEMSTR_0:29; A21: GCD-Algorithm c= P2 by A13; A22: s1 . (intpos 9) = x by A10, A14; A23: s1 . (intpos 10) = y by A10, A14; A24: s2 . (intpos 9) = x by A10, A15; A25: s2 . (intpos 10) = y by A10, A15; set s4 = Comput (P1,s1,4); set t4 = Comput (P2,s2,4); A26: IC (Comput (P1,s1,4)) = 5 by Th11, A18, A17; A27: (Comput (P1,s1,4)) . GBP = 0 by Th11, A18, A17; A28: (Comput (P1,s1,4)) . SBP = 7 by Th11, A18, A17; A29: (Comput (P1,s1,4)) . (intpos (7 + RetIC)) = 2 by Th11, A18, A17; A30: (Comput (P1,s1,4)) . (intpos 9) = s1 . (intpos 9) by Th11, A18, A17; A31: (Comput (P1,s1,4)) . (intpos 10) = s1 . (intpos 10) by Th11, A18, A17; A32: (Comput (P1,s1,4)) . (DataLoc (((Comput (P1,s1,4)) . SBP),3)) = (Comput (P1,s1,4)) . (intpos (7 + 3)) by A28, Th1 .= y by A10, A14, A31 ; A33: DataLoc (((Comput (P1,s1,4)) . SBP),2) = intpos (7 + 2) by A28, Th1; A34: IC (Comput (P2,s2,4)) = 5 by Th11, A21, A20; A35: (Comput (P2,s2,4)) . GBP = 0 by Th11, A21, A20; A36: (Comput (P2,s2,4)) . SBP = 7 by Th11, A21, A20; A37: (Comput (P2,s2,4)) . (intpos (7 + RetIC)) = 2 by Th11, A21, A20; A38: (Comput (P2,s2,4)) . (intpos 9) = s2 . (intpos 9) by Th11, A21, A20; A39: (Comput (P2,s2,4)) . (intpos 10) = s2 . (intpos 10) by Th11, A21, A20; (Comput (P2,s2,4)) . (DataLoc (((Comput (P2,s2,4)) . SBP),3)) = (Comput (P2,s2,4)) . (intpos (7 + 3)) by A36, Th1 .= (Comput (P1,s1,4)) . (DataLoc (((Comput (P1,s1,4)) . SBP),3)) by A10, A15, A32, A39 ; then consider n being Element of NAT such that A40: CurInstr (P1,(Comput (P1,(Comput (P1,s1,4)),n))) = return SBP and A41: (Comput (P1,s1,4)) . SBP = (Comput (P1,(Comput (P1,s1,4)),n)) . SBP and A42: CurInstr (P2,(Comput (P2,(Comput (P2,s2,4)),n))) = return SBP and A43: (Comput (P2,s2,4)) . SBP = (Comput (P2,(Comput (P2,s2,4)),n)) . SBP and A44: for j being Element of NAT st 1 < j & j <= ((Comput (P1,s1,4)) . SBP) + 1 holds ( (Comput (P1,s1,4)) . (intpos j) = (Comput (P1,(Comput (P1,s1,4)),n)) . (intpos j) & (Comput (P2,s2,4)) . (intpos j) = (Comput (P2,(Comput (P2,s2,4)),n)) . (intpos j) ) and A45: for k being Element of NAT for c being Int_position st k <= n & (Comput (P1,s1,4)) . c = (Comput (P2,s2,4)) . c holds ( IC (Comput (P1,(Comput (P1,s1,4)),k)) = IC (Comput (P2,(Comput (P2,s2,4)),k)) & (Comput (P1,(Comput (P1,s1,4)),k)) . c = (Comput (P2,(Comput (P2,s2,4)),k)) . c ) by A1, A2, A10, A15, A22, A26, A27, A28, A30, A32, A33, A34, A35, A36, A38, Lm8, A18, A21; A46: (Comput (P1,(Comput (P1,s1,4)),n)) . (DataLoc (((Comput (P1,(Comput (P1,s1,4)),n)) . SBP),RetIC)) = (Comput (P1,(Comput (P1,s1,4)),n)) . (intpos (7 + 1)) by A28, A41, Th1, SCMPDS_I:def_14 .= 2 by A28, A29, A44, SCMPDS_I:def_14 ; A47: (Comput (P2,(Comput (P2,s2,4)),n)) . (DataLoc (((Comput (P2,(Comput (P2,s2,4)),n)) . SBP),RetIC)) = (Comput (P2,(Comput (P2,s2,4)),n)) . (intpos (7 + 1)) by A36, A43, Th1, SCMPDS_I:def_14 .= 2 by A28, A37, A44, SCMPDS_I:def_14 ; A48: P1 /. (IC (Comput (P1,(Comput (P1,s1,4)),(n + 1)))) = P1 . (IC (Comput (P1,(Comput (P1,s1,4)),(n + 1)))) by PBOOLE:143; A49: Comput (P1,(Comput (P1,s1,4)),(n + 1)) = Following (P1,(Comput (P1,(Comput (P1,s1,4)),n))) by EXTPRO_1:3 .= Exec ((return SBP),(Comput (P1,(Comput (P1,s1,4)),n))) by A40 ; then A50: IC (Comput (P1,(Comput (P1,s1,4)),(n + 1))) = (abs ((Comput (P1,(Comput (P1,s1,4)),n)) . (DataLoc (((Comput (P1,(Comput (P1,s1,4)),n)) . SBP),RetIC)))) + 2 by SCMPDS_2:58 .= 2 + 2 by A46, ABSVALUE:29 ; then A51: CurInstr (P1,(Comput (P1,(Comput (P1,s1,4)),(n + 1)))) = P1 . 4 by A48 .= P1 . 4 .= halt SCMPDS by Lm1, A18 ; A52: P2 /. (IC (Comput (P2,(Comput (P2,s2,4)),(n + 1)))) = P2 . (IC (Comput (P2,(Comput (P2,s2,4)),(n + 1)))) by PBOOLE:143; A53: Comput (P2,(Comput (P2,s2,4)),(n + 1)) = Following (P2,(Comput (P2,(Comput (P2,s2,4)),n))) by EXTPRO_1:3 .= Exec ((return SBP),(Comput (P2,(Comput (P2,s2,4)),n))) by A42 ; then A54: IC (Comput (P2,(Comput (P2,s2,4)),(n + 1))) = (abs ((Comput (P2,(Comput (P2,s2,4)),n)) . (DataLoc (((Comput (P2,(Comput (P2,s2,4)),n)) . SBP),RetIC)))) + 2 by SCMPDS_2:58 .= 2 + 2 by A47, ABSVALUE:29 ; then A55: CurInstr (P2,(Comput (P2,(Comput (P2,s2,4)),(n + 1)))) = P2 . 4 by A52 .= P2 . 4 .= halt SCMPDS by Lm1, A21 ; A56: (Comput (P1,s1,4)) . (intpos 9) = (Comput (P2,s2,4)) . (intpos 9) by A19, A22, A24, Lm9, A18, A16, A21; A57: (Comput (P1,s1,4)) . (intpos 10) = (Comput (P2,s2,4)) . (intpos 10) by A19, A23, A25, Lm9, A18, A16, A21; A58: (Comput (P1,(Comput (P1,s1,4)),(n + 1))) . (intpos 9) = (Comput (P1,(Comput (P1,s1,4)),n)) . (intpos 9) by A49, AMI_3:10, SCMPDS_2:58 .= (Comput (P2,(Comput (P2,s2,4)),n)) . (intpos 9) by A45, A56 .= (Comput (P2,(Comput (P2,s2,4)),(n + 1))) . (intpos 9) by A53, AMI_3:10, SCMPDS_2:58 ; A59: (Comput (P1,(Comput (P1,s1,4)),(n + 1))) . (intpos 10) = (Comput (P1,(Comput (P1,s1,4)),n)) . (intpos 10) by A49, AMI_3:10, SCMPDS_2:58 .= (Comput (P2,(Comput (P2,s2,4)),n)) . (intpos 10) by A45, A57 .= (Comput (P2,(Comput (P2,s2,4)),(n + 1))) . (intpos 10) by A53, AMI_3:10, SCMPDS_2:58 ; A60: now__::_thesis:_for_j_being_Element_of_NAT_holds_ (_IC_(Comput_(P1,s1,j))_=_IC_(Comput_(P2,s2,j))_&_(Comput_(P1,s1,j))_._(intpos_9)_=_(Comput_(P2,s2,j))_._(intpos_9)_&_(Comput_(P1,s1,j))_._(intpos_10)_=_(Comput_(P2,s2,j))_._(intpos_10)_) let j be Element of NAT ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . (intpos 9) = (Comput (P2,s2,b1)) . (intpos 9) & (Comput (P1,s1,b1)) . (intpos 10) = (Comput (P2,s2,b1)) . (intpos 10) ) A61: ( j < (n + 4) + 1 or j >= n + 5 ) ; A62: now__::_thesis:_(_not_j_<=_n_+_4_or_(_j_<=_3_&_j_<=_3_)_or_(_j_>=_4_&_j_>=_4_&_j_<=_n_+_4_)_) assume A63: j <= n + 4 ; ::_thesis: ( ( j <= 3 & j <= 3 ) or ( j >= 4 & j >= 4 & j <= n + 4 ) ) A64: ( j < 3 + 1 or j >= 4 ) ; percases ( j <= 3 or j >= 4 ) by A64, NAT_1:13; case j <= 3 ; ::_thesis: j <= 3 hence j <= 3 ; ::_thesis: verum end; case j >= 4 ; ::_thesis: ( j >= 4 & j <= n + 4 ) hence ( j >= 4 & j <= n + 4 ) by A63; ::_thesis: verum end; end; end; percases ( j <= 3 or ( j >= 4 & j <= n + 4 ) or j >= n + 5 ) by A61, A62, NAT_1:13; suppose j <= 3 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . (intpos 9) = (Comput (P2,s2,b1)) . (intpos 9) & (Comput (P1,s1,b1)) . (intpos 10) = (Comput (P2,s2,b1)) . (intpos 10) ) then A65: j <= 4 by XXREAL_0:2; hence IC (Comput (P1,s1,j)) = IC (Comput (P2,s2,j)) by A19, A22, A24, Lm9, A18, A16, A21; ::_thesis: ( (Comput (P1,s1,j)) . (intpos 9) = (Comput (P2,s2,j)) . (intpos 9) & (Comput (P1,s1,j)) . (intpos 10) = (Comput (P2,s2,j)) . (intpos 10) ) thus (Comput (P1,s1,j)) . (intpos 9) = (Comput (P2,s2,j)) . (intpos 9) by A19, A22, A24, A65, Lm9, A18, A16, A21; ::_thesis: (Comput (P1,s1,j)) . (intpos 10) = (Comput (P2,s2,j)) . (intpos 10) thus (Comput (P1,s1,j)) . (intpos 10) = (Comput (P2,s2,j)) . (intpos 10) by A19, A23, A25, A65, Lm9, A18, A16, A21; ::_thesis: verum end; supposeA66: ( j >= 4 & j <= n + 4 ) ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . (intpos 9) = (Comput (P2,s2,b1)) . (intpos 9) & (Comput (P1,s1,b1)) . (intpos 10) = (Comput (P2,s2,b1)) . (intpos 10) ) then consider j1 being Nat such that A67: j = 4 + j1 by NAT_1:10; reconsider j1 = j1 as Element of NAT by ORDINAL1:def_12; A68: j1 <= n by A66, A67, XREAL_1:6; thus IC (Comput (P1,s1,j)) = IC (Comput (P1,(Comput (P1,s1,4)),j1)) by A67, EXTPRO_1:4 .= IC (Comput (P2,(Comput (P2,s2,4)),j1)) by A45, A56, A68 .= IC (Comput (P2,s2,j)) by A67, EXTPRO_1:4 ; ::_thesis: ( (Comput (P1,s1,j)) . (intpos 9) = (Comput (P2,s2,j)) . (intpos 9) & (Comput (P1,s1,j)) . (intpos 10) = (Comput (P2,s2,j)) . (intpos 10) ) thus (Comput (P1,s1,j)) . (intpos 9) = (Comput (P1,(Comput (P1,s1,4)),j1)) . (intpos 9) by A67, EXTPRO_1:4 .= (Comput (P2,(Comput (P2,s2,4)),j1)) . (intpos 9) by A45, A56, A68 .= (Comput (P2,s2,j)) . (intpos 9) by A67, EXTPRO_1:4 ; ::_thesis: (Comput (P1,s1,j)) . (intpos 10) = (Comput (P2,s2,j)) . (intpos 10) thus (Comput (P1,s1,j)) . (intpos 10) = (Comput (P1,(Comput (P1,s1,4)),j1)) . (intpos 10) by A67, EXTPRO_1:4 .= (Comput (P2,(Comput (P2,s2,4)),j1)) . (intpos 10) by A45, A57, A68 .= (Comput (P2,s2,j)) . (intpos 10) by A67, EXTPRO_1:4 ; ::_thesis: verum end; suppose j >= n + 5 ; ::_thesis: ( IC (Comput (P1,s1,b1)) = IC (Comput (P2,s2,b1)) & (Comput (P1,s1,b1)) . (intpos 9) = (Comput (P2,s2,b1)) . (intpos 9) & (Comput (P1,s1,b1)) . (intpos 10) = (Comput (P2,s2,b1)) . (intpos 10) ) then consider j1 being Nat such that A69: j = (n + (1 + 4)) + j1 by NAT_1:10; reconsider j1 = j1 as Element of NAT by ORDINAL1:def_12; A70: j = ((n + 1) + j1) + 4 by A69; hence IC (Comput (P1,s1,j)) = IC (Comput (P1,(Comput (P1,s1,4)),((n + 1) + j1))) by EXTPRO_1:4 .= IC (Comput (P2,(Comput (P2,s2,4)),(n + 1))) by A50, A51, A54, EXTPRO_1:5, NAT_1:11 .= IC (Comput (P2,(Comput (P2,s2,4)),((n + 1) + j1))) by A55, EXTPRO_1:5, NAT_1:11 .= IC (Comput (P2,s2,j)) by A70, EXTPRO_1:4 ; ::_thesis: ( (Comput (P1,s1,j)) . (intpos 9) = (Comput (P2,s2,j)) . (intpos 9) & (Comput (P1,s1,j)) . (intpos 10) = (Comput (P2,s2,j)) . (intpos 10) ) thus (Comput (P1,s1,j)) . (intpos 9) = (Comput (P1,(Comput (P1,s1,4)),((n + 1) + j1))) . (intpos 9) by A70, EXTPRO_1:4 .= (Comput (P2,(Comput (P2,s2,4)),(n + 1))) . (intpos 9) by A51, A58, EXTPRO_1:5, NAT_1:11 .= (Comput (P2,(Comput (P2,s2,4)),((n + 1) + j1))) . (intpos 9) by A55, EXTPRO_1:5, NAT_1:11 .= (Comput (P2,s2,j)) . (intpos 9) by A70, EXTPRO_1:4 ; ::_thesis: (Comput (P1,s1,j)) . (intpos 10) = (Comput (P2,s2,j)) . (intpos 10) thus (Comput (P1,s1,j)) . (intpos 10) = (Comput (P1,(Comput (P1,s1,4)),((n + 1) + j1))) . (intpos 10) by A70, EXTPRO_1:4 .= (Comput (P2,(Comput (P2,s2,4)),(n + 1))) . (intpos 10) by A51, A59, EXTPRO_1:5, NAT_1:11 .= (Comput (P2,(Comput (P2,s2,4)),((n + 1) + j1))) . (intpos 10) by A55, EXTPRO_1:5, NAT_1:11 .= (Comput (P2,s2,j)) . (intpos 10) by A70, EXTPRO_1:4 ; ::_thesis: verum end; end; end; set A = {(IC ),(intpos 9),(intpos 10)}; A71: IC in dom (Initialize p) by MEMSTR_0:48; dom (DataPart (Initialize p)) = dom (DataPart p) by MEMSTR_0:45 .= dom (DataPart p) .= {(intpos 9),(intpos 10)} by A6, A4, MEMSTR_0:7 ; then A72: dom (Initialize p) = {(IC )} \/ {(intpos 9),(intpos 10)} by A71, MEMSTR_0:24 .= {(IC ),(intpos 9),(intpos 10)} by ENUMSET1:2 ; let k be Element of NAT ; ::_thesis: (Comput (P1,s1,k)) | (dom (Initialize p)) = (Comput (P2,s2,k)) | (dom (Initialize p)) A73: (Comput (P1,s1,k)) . (IC ) = IC (Comput (P1,s1,k)) .= IC (Comput (P2,s2,k)) by A60 .= (Comput (P2,s2,k)) . (IC ) ; A74: (Comput (P1,s1,k)) . (intpos 9) = (Comput (P2,s2,k)) . (intpos 9) by A60; A75: (Comput (P1,s1,k)) . (intpos 10) = (Comput (P2,s2,k)) . (intpos 10) by A60; dom (Comput (P1,s1,k)) = the carrier of SCMPDS by PARTFUN1:def_2 .= dom (Comput (P2,s2,k)) by PARTFUN1:def_2 ; then (Comput (P1,s1,k)) | {(IC ),(intpos 9),(intpos 10)} = (Comput (P2,s2,k)) | {(IC ),(intpos 9),(intpos 10)} by A73, A74, A75, GRFUNC_1:31; hence (Comput (P1,s1,k)) | (dom (Initialize p)) = (Comput (P2,s2,k)) | (dom (Initialize p)) by A72; ::_thesis: verum end;