Article SCMPDS_7, MML version 4.99.1005

:: SCMPDS_7:th 1
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2, b3 being Element of NAT
      st IC b1 = inspos b2
   holds ICplusConst(b1,b3 - b2) = inspos b3;

:: SCMPDS_7:th 2
theorem
for b1, b2 being finite Element of sproduct the Object-Kind of SCMPDS
      st b1 c= b2
   holds ProgramPart b1 c= ProgramPart b2;

:: SCMPDS_7:th 4
theorem
for b1 being Element of product the Object-Kind of SCMPDS
      st IC b1 = inspos 0
   holds Initialized b1 = b1;

:: SCMPDS_7:th 5
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
      st IC b1 = inspos 0
   holds b1 +* Initialized b2 = b1 +* b2;

:: SCMPDS_7:th 6
theorem
for b1 being Element of NAT
for b2 being Element of product the Object-Kind of SCMPDS holds
   (Computation(b2,b1)) | NAT = b2 | NAT;

:: SCMPDS_7:th 7
theorem
for b1, b2 being Element of product the Object-Kind of SCMPDS
      st IC b1 = IC b2 & b1 | SCM-Data-Loc = b2 | SCM-Data-Loc & b1 | NAT = b2 | NAT
   holds b1 = b2;

:: SCMPDS_7:th 8
theorem
for b1 being Instruction-Location of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
      b1 in proj1 b2
   iff
      b1 in proj1 Initialized b2;

:: SCMPDS_7:th 9
theorem
for b1 being set
for b2 being Element of product the Object-Kind of SCMPDS
for b3 being Instruction-Location of SCMPDS
for b4 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
      st b1 in proj1 b4
   holds b4 . b1 = (b2 +* (b4 +* Start-At b3)) . b1;

:: SCMPDS_7:th 10
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being Instruction-Location of SCMPDS
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
      st b2 in proj1 b3
   holds (b1 +* Initialized b3) . b2 = b3 . b2;

:: SCMPDS_7:th 11
theorem
for b1 being Int_position
for b2 being Element of product the Object-Kind of SCMPDS
for b3 being Instruction-Location of SCMPDS
for b4 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
   (b2 +* (b4 +* Start-At b3)) . b1 = b2 . b1;

:: SCMPDS_7:th 12
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being Instruction-Location of SCMPDS holds
   (b1 +* Start-At b2) . IC SCMPDS = b2;

:: SCMPDS_7:th 14
theorem
for b1, b2 being Element of the Instructions of SCMPDS
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
   ((b3 ';' b1) ';' b2) . inspos card b3 = b1;

:: SCMPDS_7:th 15
theorem
for b1, b2, b3 being Element of the Instructions of SCMPDS
for b4 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
   ((b1 ';' b4) ';' b2) ';' b3 = b1 ';' ((b4 ';' b2) ';' b3);

:: SCMPDS_7:th 16
theorem
for b1, b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
Shift(b1,card b2) c= (b2 ';' b1) ';' b3;

:: SCMPDS_7:th 17
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
b1 c= stop (b1 ';' b2);

:: SCMPDS_7:th 18
theorem
for b1 being Element of NAT
for b2 being Instruction-Location of SCMPDS
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
      st b2 in proj1 b3
   holds (Shift(stop b3,b1)) . (b2 + b1) = (Shift(b3,b1)) . (b2 + b1);

:: SCMPDS_7:th 19
theorem
for b1 being Element of NAT
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
      st 0 < card b2
   holds (Shift(stop b2,b1)) . inspos b1 = (Shift(b2,b1)) . inspos b1;

:: SCMPDS_7:th 20
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being Element of the Instructions of SCMPDS
      st InsCode b2 in {0,4,5,6}
   holds (Exec(b2,b1)) | SCM-Data-Loc = b1 | SCM-Data-Loc;

:: SCMPDS_7:th 21
theorem
for b1, b2 being Element of product the Object-Kind of SCMPDS holds
(b1 +* (b2 | NAT)) | SCM-Data-Loc = b1 | SCM-Data-Loc;

:: SCMPDS_7:th 22
theorem
for b1 being Element of the Instructions of SCMPDS holds
   proj2 Load b1 = {b1};

:: SCMPDS_7:th 23
theorem
for b1 being Element of the Instructions of SCMPDS
for b2, b3 being Element of product the Object-Kind of SCMPDS
      st IC b2 = IC b3 & b2 | SCM-Data-Loc = b3 | SCM-Data-Loc
   holds IC Exec(b1,b2) = IC Exec(b1,b3) &
    (Exec(b1,b2)) | SCM-Data-Loc = (Exec(b1,b3)) | SCM-Data-Loc;

:: SCMPDS_7:th 24
theorem
for b1, b2 being Element of product the Object-Kind of SCMPDS
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
   st b3 is_closed_on b1 & Initialized stop b3 c= b1 & Initialized stop b3 c= b2 & b1 | SCM-Data-Loc = b2 | SCM-Data-Loc
for b4 being Element of NAT holds
   IC Computation(b1,b4) = IC Computation(b2,b4) &
    CurInstr Computation(b1,b4) = CurInstr Computation(b2,b4) &
    (Computation(b1,b4)) | SCM-Data-Loc = (Computation(b2,b4)) | SCM-Data-Loc;

:: SCMPDS_7:th 25
theorem
for b1, b2 being Element of product the Object-Kind of SCMPDS
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
   st b3 is_closed_on b1 & b1 | SCM-Data-Loc = b2 | SCM-Data-Loc
for b4 being Element of NAT holds
   Computation(b1 +* Initialized stop b3,b4),Computation(b2 +* Initialized stop b3,b4) equal_outside NAT &
    CurInstr Computation(b1 +* Initialized stop b3,b4) = CurInstr Computation(b2 +* Initialized stop b3,b4);

:: SCMPDS_7:th 26
theorem
for b1, b2 being Element of product the Object-Kind of SCMPDS
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
   st b3 is_closed_on b1 & Initialized stop b3 c= b1 & Initialized stop b3 c= b2 & b1,b2 equal_outside NAT
for b4 being Element of NAT holds
   Computation(b1,b4),Computation(b2,b4) equal_outside NAT & CurInstr Computation(b1,b4) = CurInstr Computation(b2,b4);

:: SCMPDS_7:th 27
theorem
for b1, b2 being Element of product the Object-Kind of SCMPDS
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
      st b3 is_closed_on b1 & b3 is_halting_on b1 & Initialized stop b3 c= b1 & Initialized stop b3 c= b2 & b1 | SCM-Data-Loc = b2 | SCM-Data-Loc
   holds LifeSpan b1 = LifeSpan b2;

:: SCMPDS_7:th 28
theorem
for b1, b2 being Element of product the Object-Kind of SCMPDS
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
      st b3 is_closed_on b1 & b3 is_halting_on b1 & Initialized stop b3 c= b1 & Initialized stop b3 c= b2 & b1,b2 equal_outside NAT
   holds LifeSpan b1 = LifeSpan b2 & Result b1,Result b2 equal_outside NAT;

:: SCMPDS_7:th 29
theorem
for b1, b2 being Element of product the Object-Kind of SCMPDS
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
      st b3 is_closed_on b1 & b3 is_halting_on b1 & b1 | SCM-Data-Loc = b2 | SCM-Data-Loc
   holds LifeSpan (b1 +* Initialized stop b3) = LifeSpan (b2 +* Initialized stop b3) &
    Result (b1 +* Initialized stop b3),Result (b2 +* Initialized stop b3) equal_outside NAT;

:: SCMPDS_7:th 30
theorem
for b1, b2 being Element of product the Object-Kind of SCMPDS
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
      st b3 is_closed_on b1 &
         b3 is_halting_on b1 &
         Initialized stop b3 c= b1 &
         Initialized stop b3 c= b2 &
         (ex b4 being Element of NAT st
            Computation(b1,b4),b2 equal_outside NAT)
   holds Result b1,Result b2 equal_outside NAT;

:: SCMPDS_7:funcreg 1
registration
  let a1 be finite programmed initial Element of sproduct the Object-Kind of SCMPDS;
  cluster Initialized a1 -> finite initial;
end;

:: SCMPDS_7:th 31
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b3 being Int_position
      st b2 is_halting_on b1
   holds (IExec(b2,b1)) . b3 = (Computation(b1 +* Initialized stop b2,LifeSpan (b1 +* Initialized stop b2))) . b3;

:: SCMPDS_7:th 32
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCMPDS
for b3 being Int_position holds
   (IExec(b2,b1)) . b3 = (Computation(b1 +* Initialized stop b2,LifeSpan (b1 +* Initialized stop b2))) . b3;

:: SCMPDS_7:th 33
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b3 being Element of NAT
      st Initialized stop b2 c= b1 & b2 is_closed_on b1 & b2 is_halting_on b1 & b3 < LifeSpan b1
   holds IC Computation(b1,b3) in proj1 b2;

:: SCMPDS_7:th 34
theorem
for b1, b2 being Element of product the Object-Kind of SCMPDS
for b3 being finite programmed initial shiftable Element of sproduct the Object-Kind of SCMPDS
   st Initialized stop b3 c= b1 & b3 is_closed_on b1 & b3 is_halting_on b1
for b4 being Element of NAT
   st Shift(b3,b4) c= b2 & 0 < card b3 & IC b2 = inspos b4 & b1 | SCM-Data-Loc = b2 | SCM-Data-Loc
for b5 being Element of NAT
      st b5 < LifeSpan b1
   holds (IC Computation(b1,b5)) + b4 = IC Computation(b2,b5) &
    CurInstr Computation(b1,b5) = CurInstr Computation(b2,b5) &
    (Computation(b1,b5)) | SCM-Data-Loc = (Computation(b2,b5)) | SCM-Data-Loc;

:: SCMPDS_7:th 35
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial No-StopCode Element of sproduct the Object-Kind of SCMPDS
      st Initialized stop b2 c= b1 & b2 is_halting_on b1 & 0 < card b2
   holds 0 < LifeSpan b1;

:: SCMPDS_7:th 36
theorem
for b1, b2 being Element of product the Object-Kind of SCMPDS
for b3 being finite programmed initial shiftable No-StopCode Element of sproduct the Object-Kind of SCMPDS
   st Initialized stop b3 c= b1 & b3 is_closed_on b1 & b3 is_halting_on b1
for b4 being Element of NAT
      st Shift(b3,b4) c= b2 & 0 < card b3 & IC b2 = inspos b4 & b1 | SCM-Data-Loc = b2 | SCM-Data-Loc
   holds IC Computation(b2,LifeSpan b1) = inspos ((card b3) + b4) &
    (Computation(b1,LifeSpan b1)) | SCM-Data-Loc = (Computation(b2,LifeSpan b1)) | SCM-Data-Loc;

:: SCMPDS_7:th 37
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b3 being Element of NAT
      st IC Computation(b1 +* Initialized b2,b3) = inspos 0
   holds (Computation(b1 +* Initialized b2,b3)) +* Initialized b2 = Computation(b1 +* Initialized b2,b3);

:: SCMPDS_7:th 38
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b4 being Element of NAT
      st b2 is_closed_on b1 & b2 is_halting_on b1 & b4 <= LifeSpan (b1 +* Initialized stop b2)
   holds Computation(b1 +* Initialized stop b2,b4),Computation(b1 +* ((b2 ';' b3) +* Start-At inspos 0),b4) equal_outside NAT;

:: SCMPDS_7:th 39
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b4 being Element of NAT
      st b2 c= b3 & b2 is_closed_on b1 & b2 is_halting_on b1 & b4 <= LifeSpan (b1 +* Initialized stop b2)
   holds Computation(b1 +* Initialized b3,b4),Computation(b1 +* Initialized stop b2,b4) equal_outside NAT;

:: SCMPDS_7:th 40
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b4 being Element of NAT
      st b4 <= LifeSpan (b1 +* Initialized stop b2) & b2 c= b3 & b2 is_closed_on b1 & b2 is_halting_on b1
   holds IC Computation(b1 +* Initialized b3,b4) in proj1 stop b2;

:: SCMPDS_7:th 41
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
      st b2 c= b3 &
         b2 is_closed_on b1 &
         b2 is_halting_on b1 &
         CurInstr Computation(b1 +* Initialized b3,LifeSpan (b1 +* Initialized stop b2)) <> halt SCMPDS
   holds IC Computation(b1 +* Initialized b3,LifeSpan (b1 +* Initialized stop b2)) = inspos card b2;

:: SCMPDS_7:th 42
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
      st b2 is_halting_on b1 & b3 is_closed_on IExec(b2,b1) & b3 is_halting_on IExec(b2,b1)
   holds b3 is_closed_on Computation(b1 +* Initialized stop b2,LifeSpan (b1 +* Initialized stop b2)) &
    b3 is_halting_on Computation(b1 +* Initialized stop b2,LifeSpan (b1 +* Initialized stop b2));

:: SCMPDS_7:th 43
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b3 being finite programmed initial shiftable Element of sproduct the Object-Kind of SCMPDS
      st b2 is_closed_on b1 & b2 is_halting_on b1 & b3 is_closed_on IExec(b2,b1) & b3 is_halting_on IExec(b2,b1)
   holds b2 ';' b3 is_closed_on b1 & b2 ';' b3 is_halting_on b1;

:: SCMPDS_7:th 44
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial No-StopCode Element of sproduct the Object-Kind of SCMPDS
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
      st b2 c= b3 & b2 is_closed_on b1 & b2 is_halting_on b1
   holds IC Computation(b1 +* Initialized b3,LifeSpan (b1 +* Initialized stop b2)) = inspos card b2;

:: SCMPDS_7:th 45
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b2 being Element of product the Object-Kind of SCMPDS
for b3 being Element of NAT
      st b1 is_halting_on b2 &
         b3 < LifeSpan (b2 +* Initialized stop b1)
   holds CurInstr Computation(b2 +* Initialized stop b1,b3) <> halt SCMPDS;

:: SCMPDS_7:th 46
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b3 being Element of product the Object-Kind of SCMPDS
for b4 being Element of NAT
      st b1 is_closed_on b3 &
         b1 is_halting_on b3 &
         b4 < LifeSpan (b3 +* Initialized stop b1)
   holds CurInstr Computation(b3 +* Initialized stop (b1 ';' b2),b4) <> halt SCMPDS;

:: SCMPDS_7:th 47
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial No-StopCode Element of sproduct the Object-Kind of SCMPDS
for b3 being finite programmed initial shiftable Element of sproduct the Object-Kind of SCMPDS
      st b2 is_closed_on b1 & b2 is_halting_on b1 & b3 is_closed_on IExec(b2,b1) & b3 is_halting_on IExec(b2,b1)
   holds LifeSpan (b1 +* Initialized stop (b2 ';' b3)) = (LifeSpan (b1 +* Initialized stop b2)) + LifeSpan ((Result (b1 +* Initialized stop b2)) +* Initialized stop b3);

:: SCMPDS_7:th 48
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial No-StopCode Element of sproduct the Object-Kind of SCMPDS
for b3 being finite programmed initial shiftable Element of sproduct the Object-Kind of SCMPDS
      st b2 is_closed_on b1 & b2 is_halting_on b1 & b3 is_closed_on IExec(b2,b1) & b3 is_halting_on IExec(b2,b1)
   holds IExec(b2 ';' b3,b1) = (IExec(b3,IExec(b2,b1))) +* Start-At ((IC IExec(b3,IExec(b2,b1))) + card b2);

:: SCMPDS_7:th 49
theorem
for b1 being Int_position
for b2 being Element of product the Object-Kind of SCMPDS
for b3 being finite programmed initial No-StopCode Element of sproduct the Object-Kind of SCMPDS
for b4 being finite programmed initial shiftable Element of sproduct the Object-Kind of SCMPDS
      st b3 is_closed_on b2 & b3 is_halting_on b2 & b4 is_closed_on IExec(b3,b2) & b4 is_halting_on IExec(b3,b2)
   holds (IExec(b3 ';' b4,b2)) . b1 = (IExec(b4,IExec(b3,b2))) . b1;

:: SCMPDS_7:th 50
theorem
for b1 being Int_position
for b2 being Element of product the Object-Kind of SCMPDS
for b3 being finite programmed initial No-StopCode Element of sproduct the Object-Kind of SCMPDS
for b4 being shiftable parahalting Element of the Instructions of SCMPDS
      st b3 is_closed_on b2 & b3 is_halting_on b2
   holds (IExec(b3 ';' b4,b2)) . b1 = (Exec(b4,IExec(b3,b2))) . b1;

:: SCMPDS_7:funcnot 1 => SCMPDS_7:func 1
definition
  let a1 be Int_position;
  let a2 be integer set;
  let a3 be Element of NAT;
  let a4 be finite programmed initial Element of sproduct the Object-Kind of SCMPDS;
  func for-up(A1,A2,A3,A4) -> finite programmed initial Element of sproduct the Object-Kind of SCMPDS equals
    ((((a1,a2)>=0_goto ((card a4) + 3)) ';' a4) ';' AddTo(a1,a2,a3)) ';' goto - ((card a4) + 2);
end;

:: SCMPDS_7:def 1
theorem
for b1 being Int_position
for b2 being integer set
for b3 being Element of NAT
for b4 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
   for-up(b1,b2,b3,b4) = ((((b1,b2)>=0_goto ((card b4) + 3)) ';' b4) ';' AddTo(b1,b2,b3)) ';' goto - ((card b4) + 2);

:: SCMPDS_7:th 51
theorem
for b1 being Int_position
for b2 being integer set
for b3 being Element of NAT
for b4 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
   card for-up(b1,b2,b3,b4) = (card b4) + 3;

:: SCMPDS_7:th 52
theorem
for b1 being Int_position
for b2 being integer set
for b3, b4 being Element of NAT
for b5 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
      b4 < (card b5) + 3
   iff
      inspos b4 in proj1 for-up(b1,b2,b3,b5);

:: SCMPDS_7:th 53
theorem
for b1 being Int_position
for b2 being integer set
for b3 being Element of NAT
for b4 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
   (for-up(b1,b2,b3,b4)) . inspos 0 = (b1,b2)>=0_goto ((card b4) + 3) &
    (for-up(b1,b2,b3,b4)) . inspos ((card b4) + 1) = AddTo(b1,b2,b3) &
    (for-up(b1,b2,b3,b4)) . inspos ((card b4) + 2) = goto - ((card b4) + 2);

:: SCMPDS_7:th 54
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b3 being Int_position
for b4 being integer set
for b5 being Element of NAT
      st 0 <= b1 . DataLoc(b1 . b3,b4)
   holds for-up(b3,b4,b5,b2) is_closed_on b1 & for-up(b3,b4,b5,b2) is_halting_on b1;

:: SCMPDS_7:th 55
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b3, b4 being Int_position
for b5 being integer set
for b6 being Element of NAT
      st 0 <= b1 . DataLoc(b1 . b3,b5)
   holds IExec(for-up(b3,b5,b6,b2),b1) = b1 +* Start-At inspos ((card b2) + 3);

:: SCMPDS_7:th 56
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b3 being Int_position
for b4 being integer set
for b5 being Element of NAT
      st 0 <= b1 . DataLoc(b1 . b3,b4)
   holds IC IExec(for-up(b3,b4,b5,b2),b1) = inspos ((card b2) + 3);

:: SCMPDS_7:th 57
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b3, b4 being Int_position
for b5 being integer set
for b6 being Element of NAT
      st 0 <= b1 . DataLoc(b1 . b3,b5)
   holds (IExec(for-up(b3,b5,b6,b2),b1)) . b4 = b1 . b4;

:: SCMPDS_7:th 58
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial shiftable No-StopCode Element of sproduct the Object-Kind of SCMPDS
for b3 being Int_position
for b4 being integer set
for b5 being Element of NAT
for b6 being set
      st b1 . DataLoc(b1 . b3,b4) < 0 &
         not DataLoc(b1 . b3,b4) in b6 &
         0 < b5 &
         0 < card b2 &
         b3 <> DataLoc(b1 . b3,b4) &
         (for b7 being Element of product the Object-Kind of SCMPDS
               st (for b8 being Int_position
                        st b8 in b6
                     holds b7 . b8 = b1 . b8) &
                  b7 . b3 = b1 . b3
            holds (IExec(b2,b7)) . b3 = b7 . b3 &
             (IExec(b2,b7)) . DataLoc(b1 . b3,b4) = b7 . DataLoc(b1 . b3,b4) &
             b2 is_closed_on b7 &
             b2 is_halting_on b7 &
             (for b8 being Int_position
                   st b8 in b6
                holds (IExec(b2,b7)) . b8 = b7 . b8))
   holds for-up(b3,b4,b5,b2) is_closed_on b1 & for-up(b3,b4,b5,b2) is_halting_on b1;

:: SCMPDS_7:th 59
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial shiftable No-StopCode Element of sproduct the Object-Kind of SCMPDS
for b3 being Int_position
for b4 being integer set
for b5 being Element of NAT
for b6 being set
      st b1 . DataLoc(b1 . b3,b4) < 0 &
         not DataLoc(b1 . b3,b4) in b6 &
         0 < b5 &
         0 < card b2 &
         b3 <> DataLoc(b1 . b3,b4) &
         (for b7 being Element of product the Object-Kind of SCMPDS
               st (for b8 being Int_position
                        st b8 in b6
                     holds b7 . b8 = b1 . b8) &
                  b7 . b3 = b1 . b3
            holds (IExec(b2,b7)) . b3 = b7 . b3 &
             (IExec(b2,b7)) . DataLoc(b1 . b3,b4) = b7 . DataLoc(b1 . b3,b4) &
             b2 is_closed_on b7 &
             b2 is_halting_on b7 &
             (for b8 being Int_position
                   st b8 in b6
                holds (IExec(b2,b7)) . b8 = b7 . b8))
   holds IExec(for-up(b3,b4,b5,b2),b1) = IExec(for-up(b3,b4,b5,b2),IExec(b2 ';' AddTo(b3,b4,b5),b1));

:: SCMPDS_7:funcreg 2
registration
  let a1 be finite programmed initial shiftable Element of sproduct the Object-Kind of SCMPDS;
  let a2 be Int_position;
  let a3 be integer set;
  let a4 be Element of NAT;
  cluster for-up(a2,a3,a4,a1) -> finite programmed initial shiftable;
end;

:: SCMPDS_7:funcreg 3
registration
  let a1 be finite programmed initial No-StopCode Element of sproduct the Object-Kind of SCMPDS;
  let a2 be Int_position;
  let a3 be integer set;
  let a4 be Element of NAT;
  cluster for-up(a2,a3,a4,a1) -> finite programmed initial No-StopCode;
end;

:: SCMPDS_7:funcnot 2 => SCMPDS_7:func 2
definition
  let a1 be Int_position;
  let a2 be integer set;
  let a3 be Element of NAT;
  let a4 be finite programmed initial Element of sproduct the Object-Kind of SCMPDS;
  func for-down(A1,A2,A3,A4) -> finite programmed initial Element of sproduct the Object-Kind of SCMPDS equals
    ((((a1,a2)<=0_goto ((card a4) + 3)) ';' a4) ';' AddTo(a1,a2,- a3)) ';' goto - ((card a4) + 2);
end;

:: SCMPDS_7:def 2
theorem
for b1 being Int_position
for b2 being integer set
for b3 being Element of NAT
for b4 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
   for-down(b1,b2,b3,b4) = ((((b1,b2)<=0_goto ((card b4) + 3)) ';' b4) ';' AddTo(b1,b2,- b3)) ';' goto - ((card b4) + 2);

:: SCMPDS_7:th 60
theorem
for b1 being Int_position
for b2 being integer set
for b3 being Element of NAT
for b4 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
   card for-down(b1,b2,b3,b4) = (card b4) + 3;

:: SCMPDS_7:th 61
theorem
for b1 being Int_position
for b2 being integer set
for b3, b4 being Element of NAT
for b5 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
      b4 < (card b5) + 3
   iff
      inspos b4 in proj1 for-down(b1,b2,b3,b5);

:: SCMPDS_7:th 62
theorem
for b1 being Int_position
for b2 being integer set
for b3 being Element of NAT
for b4 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS holds
   (for-down(b1,b2,b3,b4)) . inspos 0 = (b1,b2)<=0_goto ((card b4) + 3) &
    (for-down(b1,b2,b3,b4)) . inspos ((card b4) + 1) = AddTo(b1,b2,- b3) &
    (for-down(b1,b2,b3,b4)) . inspos ((card b4) + 2) = goto - ((card b4) + 2);

:: SCMPDS_7:th 63
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b3 being Int_position
for b4 being integer set
for b5 being Element of NAT
      st b1 . DataLoc(b1 . b3,b4) <= 0
   holds for-down(b3,b4,b5,b2) is_closed_on b1 & for-down(b3,b4,b5,b2) is_halting_on b1;

:: SCMPDS_7:th 64
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b3, b4 being Int_position
for b5 being integer set
for b6 being Element of NAT
      st b1 . DataLoc(b1 . b3,b5) <= 0
   holds IExec(for-down(b3,b5,b6,b2),b1) = b1 +* Start-At inspos ((card b2) + 3);

:: SCMPDS_7:th 65
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b3 being Int_position
for b4 being integer set
for b5 being Element of NAT
      st b1 . DataLoc(b1 . b3,b4) <= 0
   holds IC IExec(for-down(b3,b4,b5,b2),b1) = inspos ((card b2) + 3);

:: SCMPDS_7:th 66
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCMPDS
for b3, b4 being Int_position
for b5 being integer set
for b6 being Element of NAT
      st b1 . DataLoc(b1 . b3,b5) <= 0
   holds (IExec(for-down(b3,b5,b6,b2),b1)) . b4 = b1 . b4;

:: SCMPDS_7:th 67
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial shiftable No-StopCode Element of sproduct the Object-Kind of SCMPDS
for b3 being Int_position
for b4 being integer set
for b5 being Element of NAT
for b6 being set
      st 0 < b1 . DataLoc(b1 . b3,b4) &
         not DataLoc(b1 . b3,b4) in b6 &
         0 < b5 &
         0 < card b2 &
         b3 <> DataLoc(b1 . b3,b4) &
         (for b7 being Element of product the Object-Kind of SCMPDS
               st (for b8 being Int_position
                        st b8 in b6
                     holds b7 . b8 = b1 . b8) &
                  b7 . b3 = b1 . b3
            holds (IExec(b2,b7)) . b3 = b7 . b3 &
             (IExec(b2,b7)) . DataLoc(b1 . b3,b4) = b7 . DataLoc(b1 . b3,b4) &
             b2 is_closed_on b7 &
             b2 is_halting_on b7 &
             (for b8 being Int_position
                   st b8 in b6
                holds (IExec(b2,b7)) . b8 = b7 . b8))
   holds for-down(b3,b4,b5,b2) is_closed_on b1 & for-down(b3,b4,b5,b2) is_halting_on b1;

:: SCMPDS_7:th 68
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being finite programmed initial shiftable No-StopCode Element of sproduct the Object-Kind of SCMPDS
for b3 being Int_position
for b4 being integer set
for b5 being Element of NAT
for b6 being set
      st 0 < b1 . DataLoc(b1 . b3,b4) &
         not DataLoc(b1 . b3,b4) in b6 &
         0 < b5 &
         0 < card b2 &
         b3 <> DataLoc(b1 . b3,b4) &
         (for b7 being Element of product the Object-Kind of SCMPDS
               st (for b8 being Int_position
                        st b8 in b6
                     holds b7 . b8 = b1 . b8) &
                  b7 . b3 = b1 . b3
            holds (IExec(b2,b7)) . b3 = b7 . b3 &
             (IExec(b2,b7)) . DataLoc(b1 . b3,b4) = b7 . DataLoc(b1 . b3,b4) &
             b2 is_closed_on b7 &
             b2 is_halting_on b7 &
             (for b8 being Int_position
                   st b8 in b6
                holds (IExec(b2,b7)) . b8 = b7 . b8))
   holds IExec(for-down(b3,b4,b5,b2),b1) = IExec(for-down(b3,b4,b5,b2),IExec(b2 ';' AddTo(b3,b4,- b5),b1));

:: SCMPDS_7:funcreg 4
registration
  let a1 be finite programmed initial shiftable Element of sproduct the Object-Kind of SCMPDS;
  let a2 be Int_position;
  let a3 be integer set;
  let a4 be Element of NAT;
  cluster for-down(a2,a3,a4,a1) -> finite programmed initial shiftable;
end;

:: SCMPDS_7:funcreg 5
registration
  let a1 be finite programmed initial No-StopCode Element of sproduct the Object-Kind of SCMPDS;
  let a2 be Int_position;
  let a3 be integer set;
  let a4 be Element of NAT;
  cluster for-down(a2,a3,a4,a1) -> finite programmed initial No-StopCode;
end;

:: SCMPDS_7:funcnot 3 => SCMPDS_7:func 3
definition
  let a1 be Element of NAT;
  func sum A1 -> finite programmed initial Element of sproduct the Object-Kind of SCMPDS equals
    (((GBP := 0) ';' ((GBP,2):= a1)) ';' ((GBP,3):= 0)) ';' for-down(GBP,2,1,Load AddTo(GBP,3,1));
end;

:: SCMPDS_7:def 3
theorem
for b1 being Element of NAT holds
   sum b1 = (((GBP := 0) ';' ((GBP,2):= b1)) ';' ((GBP,3):= 0)) ';' for-down(GBP,2,1,Load AddTo(GBP,3,1));

:: SCMPDS_7:th 69
theorem
for b1 being Element of product the Object-Kind of SCMPDS
      st b1 . GBP = 0
   holds for-down(GBP,2,1,Load AddTo(GBP,3,1)) is_closed_on b1 &
    for-down(GBP,2,1,Load AddTo(GBP,3,1)) is_halting_on b1;

:: SCMPDS_7:th 70
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being Element of NAT
      st b1 . GBP = 0 & b1 . intpos 2 = b2 & b1 . intpos 3 = 0
   holds (IExec(for-down(GBP,2,1,Load AddTo(GBP,3,1)),b1)) . intpos 3 = b2;

:: SCMPDS_7:th 71
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2 being Element of NAT holds
   (IExec(sum b2,b1)) . intpos 3 = b2;

:: SCMPDS_7:funcnot 4 => SCMPDS_7:func 4
definition
  let a1, a2, a3, a4, a5 be Element of NAT;
  func sum(A1,A2,A3,A4,A5) -> finite programmed initial Element of sproduct the Object-Kind of SCMPDS equals
    (((intpos a1,a3):= 0) ';' ((intpos a4) := a5)) ';' for-down(intpos a1,a2,1,(AddTo(intpos a1,a3,intpos a5,0)) ';' AddTo(intpos a4,0,1));
end;

:: SCMPDS_7:def 4
theorem
for b1, b2, b3, b4, b5 being Element of NAT holds
sum(b1,b2,b3,b4,b5) = (((intpos b1,b3):= 0) ';' ((intpos b4) := b5)) ';' for-down(intpos b1,b2,1,(AddTo(intpos b1,b3,intpos b5,0)) ';' AddTo(intpos b4,0,1));

:: SCMPDS_7:th 72
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2, b3, b4, b5, b6 being Element of NAT
      st b2 < b1 . intpos b2 & b3 < b4 & b1 . intpos b5 = b6 & (b1 . intpos b2) + b4 < b5 & b5 < b6 & b6 < b1 . intpos b6
   holds for-down(intpos b2,b3,1,(AddTo(intpos b2,b4,intpos b6,0)) ';' AddTo(intpos b5,0,1)) is_closed_on b1 &
    for-down(intpos b2,b3,1,(AddTo(intpos b2,b4,intpos b6,0)) ';' AddTo(intpos b5,0,1)) is_halting_on b1;

:: SCMPDS_7:th 73
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2, b3, b4, b5, b6 being Element of NAT
for b7 being FinSequence of NAT
      st b2 < b1 . intpos b2 &
         b3 < b4 &
         b1 . intpos b5 = b6 &
         (b1 . intpos b2) + b4 < b5 &
         b5 < b6 &
         b6 < b1 . intpos b6 &
         b1 . DataLoc(b1 . intpos b2,b4) = 0 &
         len b7 = b1 . DataLoc(b1 . intpos b2,b3) &
         (for b8 being Element of NAT
               st b8 < len b7
            holds b7 . (b8 + 1) = b1 . DataLoc(b1 . intpos b6,b8))
   holds (IExec(for-down(intpos b2,b3,1,(AddTo(intpos b2,b4,intpos b6,0)) ';' AddTo(intpos b5,0,1)),b1)) . DataLoc(b1 . intpos b2,b4) = Sum b7;

:: SCMPDS_7:th 74
theorem
for b1 being Element of product the Object-Kind of SCMPDS
for b2, b3, b4, b5, b6 being Element of NAT
for b7 being FinSequence of NAT
      st b2 < b1 . intpos b2 &
         b3 < b4 &
         (b1 . intpos b2) + b4 < b5 &
         b5 < b6 &
         b6 < b1 . intpos b6 &
         len b7 = b1 . DataLoc(b1 . intpos b2,b3) &
         (for b8 being Element of NAT
               st b8 < len b7
            holds b7 . (b8 + 1) = b1 . DataLoc(b1 . intpos b6,b8))
   holds (IExec(sum(b2,b3,b4,b5,b6),b1)) . DataLoc(b1 . intpos b2,b4) = Sum b7;