Article SCMPDS_9, MML version 4.99.1005

:: SCMPDS_9:th 1
theorem
for b1 being real set holds
   0 <= b1 + abs b1;

:: SCMPDS_9:th 2
theorem
for b1 being real set holds
   0 <= (- b1) + abs b1;

:: SCMPDS_9:th 3
theorem
for b1, b2 being real set
      st abs b1 = abs b2 & b1 <> b2
   holds b1 = - b2;

:: SCMPDS_9:th 4
theorem
for b1, b2 being natural set
      st b1 < b2 & b1 <> 0
   holds b1 / b2 is not integer;

:: SCMPDS_9:th 5
theorem
{b1 where b1 is Element of NAT: 1 < b1} is infinite;

:: SCMPDS_9:funcnot 1 => SCMPDS_9:func 1
definition
  let a1, a2 be Int_position;
  let a3, a4 be integer set;
  redefine func (a1,a2)-->(a3,a4) -> finite Element of sproduct the Object-Kind of SCMPDS;
end;

:: SCMPDS_9:funcnot 2 => SCMPDS_9:func 2
definition
  let a1 be Instruction-Location of SCMPDS;
  func locnum A1 -> natural set means
    il. it = a1;
end;

:: SCMPDS_9:def 1
theorem
for b1 being Instruction-Location of SCMPDS
for b2 being natural set holds
      b2 = locnum b1
   iff
      il. b2 = b1;

:: SCMPDS_9:funcnot 3 => SCMPDS_9:func 3
definition
  let a1 be Instruction-Location of SCMPDS;
  redefine func locnum a1 -> Element of NAT;
end;

:: SCMPDS_9:th 8
theorem
for b1 being Instruction-Location of SCMPDS holds
   b1 = locnum b1;

:: SCMPDS_9:th 9
theorem
for b1, b2 being Instruction-Location of SCMPDS
      st b1 <> b2
   holds locnum b1 <> locnum b2;

:: SCMPDS_9:th 11
theorem
for b1 being non empty set
for b2 being with_non-empty_elements set
for b3 being non empty stored-program IC-Ins-separated definite AMI-Struct over b1,b2
for b4 being Element of the Instructions of b3
for b5 being Instruction-Location of b3 holds
   JUMP b4 c= NIC(b4,b5);

:: SCMPDS_9:th 12
theorem
for b1 being Element of the Instructions of SCMPDS
for b2 being Instruction-Location of SCMPDS
      st for b3 being Element of product the Object-Kind of SCMPDS
              st IC b3 = b2 & b3 . b2 = b1
           holds (Exec(b1,b3)) . IC SCMPDS = succ IC b3
   holds NIC(b1,b2) = {succ b2};

:: SCMPDS_9:th 13
theorem
for b1 being Element of the Instructions of SCMPDS
      st for b2 being Instruction-Location of SCMPDS holds
           NIC(b1,b2) = {succ b2}
   holds JUMP b1 is empty;

:: SCMPDS_9:th 14
theorem
for b1 being Instruction-Location of SCMPDS
for b2 being integer set holds
   NIC(goto b2,b1) = {abs (b2 + locnum b1)};

:: SCMPDS_9:th 15
theorem
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS holds
   NIC(return b1,b2) = {b3 where b3 is Element of NAT: 1 < b3};

:: SCMPDS_9:th 16
theorem
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3 being integer set holds
   NIC(saveIC(b1,b3),b2) = {succ b2};

:: SCMPDS_9:th 17
theorem
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3 being integer set holds
   NIC(b1 := b3,b2) = {succ b2};

:: SCMPDS_9:th 18
theorem
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3, b4 being integer set holds
NIC((b1,b3):= b4,b2) = {succ b2};

:: SCMPDS_9:th 19
theorem
for b1, b2 being Int_position
for b3 being Instruction-Location of SCMPDS
for b4, b5 being integer set holds
NIC((b1,b4):=(b2,b5),b3) = {succ b3};

:: SCMPDS_9:th 20
theorem
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3, b4 being integer set holds
NIC(AddTo(b1,b3,b4),b2) = {succ b2};

:: SCMPDS_9:th 21
theorem
for b1, b2 being Int_position
for b3 being Instruction-Location of SCMPDS
for b4, b5 being integer set holds
NIC(AddTo(b1,b4,b2,b5),b3) = {succ b3};

:: SCMPDS_9:th 22
theorem
for b1, b2 being Int_position
for b3 being Instruction-Location of SCMPDS
for b4, b5 being integer set holds
NIC(SubFrom(b1,b4,b2,b5),b3) = {succ b3};

:: SCMPDS_9:th 23
theorem
for b1, b2 being Int_position
for b3 being Instruction-Location of SCMPDS
for b4, b5 being integer set holds
NIC(MultBy(b1,b4,b2,b5),b3) = {succ b3};

:: SCMPDS_9:th 24
theorem
for b1, b2 being Int_position
for b3 being Instruction-Location of SCMPDS
for b4, b5 being integer set holds
NIC(Divide(b1,b4,b2,b5),b3) = {succ b3};

:: SCMPDS_9:th 25
theorem
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3, b4 being integer set holds
NIC((b1,b3)<>0_goto b4,b2) = {succ b2,abs (b4 + locnum b2)};

:: SCMPDS_9:th 26
theorem
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3, b4 being integer set holds
NIC((b1,b3)<=0_goto b4,b2) = {succ b2,abs (b4 + locnum b2)};

:: SCMPDS_9:th 27
theorem
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3, b4 being integer set holds
NIC((b1,b3)>=0_goto b4,b2) = {succ b2,abs (b4 + locnum b2)};

:: SCMPDS_9:funcreg 1
registration
  let a1 be integer set;
  cluster JUMP goto a1 -> empty;
end;

:: SCMPDS_9:th 28
theorem
for b1 being Int_position holds
   JUMP return b1 = {b2 where b2 is Element of NAT: 1 < b2};

:: SCMPDS_9:funcreg 2
registration
  let a1 be Int_position;
  cluster JUMP return a1 -> infinite;
end;

:: SCMPDS_9:funcreg 3
registration
  let a1 be Int_position;
  let a2 be integer set;
  cluster JUMP saveIC(a1,a2) -> empty;
end;

:: SCMPDS_9:funcreg 4
registration
  let a1 be Int_position;
  let a2 be integer set;
  cluster JUMP (a1 := a2) -> empty;
end;

:: SCMPDS_9:funcreg 5
registration
  let a1 be Int_position;
  let a2, a3 be integer set;
  cluster JUMP ((a1,a2):= a3) -> empty;
end;

:: SCMPDS_9:funcreg 6
registration
  let a1, a2 be Int_position;
  let a3, a4 be integer set;
  cluster JUMP ((a1,a3):=(a2,a4)) -> empty;
end;

:: SCMPDS_9:funcreg 7
registration
  let a1 be Int_position;
  let a2, a3 be integer set;
  cluster JUMP AddTo(a1,a2,a3) -> empty;
end;

:: SCMPDS_9:funcreg 8
registration
  let a1, a2 be Int_position;
  let a3, a4 be integer set;
  cluster JUMP AddTo(a1,a3,a2,a4) -> empty;
end;

:: SCMPDS_9:funcreg 9
registration
  let a1, a2 be Int_position;
  let a3, a4 be integer set;
  cluster JUMP SubFrom(a1,a3,a2,a4) -> empty;
end;

:: SCMPDS_9:funcreg 10
registration
  let a1, a2 be Int_position;
  let a3, a4 be integer set;
  cluster JUMP MultBy(a1,a3,a2,a4) -> empty;
end;

:: SCMPDS_9:funcreg 11
registration
  let a1, a2 be Int_position;
  let a3, a4 be integer set;
  cluster JUMP Divide(a1,a3,a2,a4) -> empty;
end;

:: SCMPDS_9:funcreg 12
registration
  let a1 be Int_position;
  let a2, a3 be integer set;
  cluster JUMP ((a1,a2)<>0_goto a3) -> empty;
end;

:: SCMPDS_9:funcreg 13
registration
  let a1 be Int_position;
  let a2, a3 be integer set;
  cluster JUMP ((a1,a2)<=0_goto a3) -> empty;
end;

:: SCMPDS_9:funcreg 14
registration
  let a1 be Int_position;
  let a2, a3 be integer set;
  cluster JUMP ((a1,a2)>=0_goto a3) -> empty;
end;

:: SCMPDS_9:th 29
theorem
for b1 being Instruction-Location of SCMPDS holds
   SUCC b1 = NAT;

:: SCMPDS_9:th 30
theorem
for b1 being non empty set
for b2 being with_non-empty_elements set
for b3 being non empty stored-program IC-Ins-separated definite AMI-Struct over b1,b2
for b4, b5 being Instruction-Location of b3
      st SUCC b4 = b1
   holds b4 <= b5;

:: SCMPDS_9:funcreg 15
registration
  cluster SCMPDS -> strict non InsLoc-antisymmetric;
end;

:: SCMPDS_9:funcreg 16
registration
  cluster SCMPDS -> strict non standard;
end;