:: SCMPDS_9 semantic presentation

theorem Th1: :: SCMPDS_9:1
for b1 being real number holds 0 <= b1 + (abs b1)
proof end;

theorem Th2: :: SCMPDS_9:2
for b1 being real number holds 0 <= (- b1) + (abs b1)
proof end;

theorem Th3: :: SCMPDS_9:3
for b1, b2 being real number holds
( not abs b1 = abs b2 or b1 = b2 or b1 = - b2 )
proof end;

theorem Th4: :: SCMPDS_9:4
for b1, b2 being natural number st b1 < b2 & b1 <> 0 holds
not b1 / b2 is integer
proof end;

theorem Th5: :: SCMPDS_9:5
not { (2 * b1) where B is Nat : b1 > 1 } is finite
proof end;

theorem Th6: :: SCMPDS_9:6
for b1 being Function
for b2, b3, b4 being set st b2 <> b4 holds
(b1 +* (b2 .--> b3)) . b4 = b1 . b4
proof end;

theorem Th7: :: SCMPDS_9:7
for b1 being Function
for b2, b3, b4, b5 being set st b2 <> b3 holds
( (b1 +* (b2,b3 --> b4,b5)) . b2 = b4 & (b1 +* (b2,b3 --> b4,b5)) . b3 = b5 )
proof end;

Lemma8: for b1 being with_non-empty_elements set
for b2 being non empty non void IC-Ins-separated definite AMI-Struct of b1
for b3 being State of b2
for b4 being Instruction of b2 holds (Exec (b3 . (IC b3)),b3) . (IC b2) = IC (Following b3)
proof end;

definition
let c1, c2 be Int_position ;
let c3, c4 be Integer;
redefine func --> as c1,c2 --> c3,c4 -> FinPartState of SCMPDS ;
coherence
c1,c2 --> c3,c4 is FinPartState of SCMPDS
proof end;
end;

registration
cluster SCMPDS -> with-non-trivial-Instruction-Locations ;
coherence
SCMPDS is with-non-trivial-Instruction-Locations
proof end;
end;

definition
let c1 be Instruction-Location of SCMPDS ;
func locnum c1 -> natural number means :Def1: :: SCMPDS_9:def 1
il. a2 = a1;
existence
ex b1 being natural number st il. b1 = c1
proof end;
uniqueness
for b1, b2 being natural number st il. b1 = c1 & il. b2 = c1 holds
b1 = b2
proof end;
end;

:: deftheorem Def1 defines locnum SCMPDS_9:def 1 :
for b1 being Instruction-Location of SCMPDS
for b2 being natural number holds
( b2 = locnum b1 iff il. b2 = b1 );

definition
let c1 be Instruction-Location of SCMPDS ;
redefine func locnum as locnum c1 -> Nat;
coherence
locnum c1 is Nat
by ORDINAL2:def 21;
end;

theorem Th8: :: SCMPDS_9:8
for b1 being Instruction-Location of SCMPDS holds b1 = (2 * (locnum b1)) + 2
proof end;

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

theorem Th10: :: SCMPDS_9:10
for b1, b2 being Instruction-Location of SCMPDS st b1 <> b2 holds
Next b1 <> Next b2
proof end;

theorem Th11: :: SCMPDS_9:11
for b1 being with_non-empty_elements set
for b2 being non empty non void IC-Ins-separated definite AMI-Struct of b1
for b3 being Instruction of b2
for b4 being Instruction-Location of b2 holds JUMP b3 c= NIC b3,b4
proof end;

theorem Th12: :: SCMPDS_9:12
for b1 being Instruction of SCMPDS
for b2 being Instruction-Location of SCMPDS st ( for b3 being State of SCMPDS st IC b3 = b2 & b3 . b2 = b1 holds
(Exec b1,b3) . (IC SCMPDS ) = Next (IC b3) ) holds
NIC b1,b2 = {(Next b2)}
proof end;

theorem Th13: :: SCMPDS_9:13
for b1 being Instruction of SCMPDS st ( for b2 being Instruction-Location of SCMPDS holds NIC b1,b2 = {(Next b2)} ) holds
JUMP b1 is empty
proof end;

theorem Th14: :: SCMPDS_9:14
for b1 being Instruction-Location of SCMPDS
for b2 being Integer holds NIC (goto b2),b1 = {((2 * (abs (b2 + (locnum b1)))) + 2)}
proof end;

Lemma16: for b1 being natural number st b1 > 1 holds
b1 - 2 is Nat
proof end;

theorem Th15: :: SCMPDS_9:15
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS holds NIC (return b1),b2 = { (2 * b3) where B is Nat : b3 > 1 }
proof end;

theorem Th16: :: SCMPDS_9:16
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3 being Integer holds NIC (saveIC b1,b3),b2 = {(Next b2)}
proof end;

theorem Th17: :: SCMPDS_9:17
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3 being Integer holds NIC (b1 := b3),b2 = {(Next b2)}
proof end;

theorem Th18: :: SCMPDS_9:18
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3, b4 being Integer holds NIC (b1,b3 := b4),b2 = {(Next b2)}
proof end;

theorem Th19: :: SCMPDS_9:19
for b1, b2 being Int_position
for b3 being Instruction-Location of SCMPDS
for b4, b5 being Integer holds NIC (b1,b4 := b2,b5),b3 = {(Next b3)}
proof end;

theorem Th20: :: SCMPDS_9:20
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3, b4 being Integer holds NIC (AddTo b1,b3,b4),b2 = {(Next b2)}
proof end;

theorem Th21: :: SCMPDS_9:21
for b1, b2 being Int_position
for b3 being Instruction-Location of SCMPDS
for b4, b5 being Integer holds NIC (AddTo b1,b4,b2,b5),b3 = {(Next b3)}
proof end;

theorem Th22: :: SCMPDS_9:22
for b1, b2 being Int_position
for b3 being Instruction-Location of SCMPDS
for b4, b5 being Integer holds NIC (SubFrom b1,b4,b2,b5),b3 = {(Next b3)}
proof end;

theorem Th23: :: SCMPDS_9:23
for b1, b2 being Int_position
for b3 being Instruction-Location of SCMPDS
for b4, b5 being Integer holds NIC (MultBy b1,b4,b2,b5),b3 = {(Next b3)}
proof end;

theorem Th24: :: SCMPDS_9:24
for b1, b2 being Int_position
for b3 being Instruction-Location of SCMPDS
for b4, b5 being Integer holds NIC (Divide b1,b4,b2,b5),b3 = {(Next b3)}
proof end;

theorem Th25: :: SCMPDS_9:25
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3, b4 being Integer holds NIC (b1,b3 <>0_goto b4),b2 = {(Next b2),((abs (2 * (b4 + (locnum b2)))) + 2)}
proof end;

theorem Th26: :: SCMPDS_9:26
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3, b4 being Integer holds NIC (b1,b3 <=0_goto b4),b2 = {(Next b2),((abs (2 * (b4 + (locnum b2)))) + 2)}
proof end;

theorem Th27: :: SCMPDS_9:27
for b1 being Int_position
for b2 being Instruction-Location of SCMPDS
for b3, b4 being Integer holds NIC (b1,b3 >=0_goto b4),b2 = {(Next b2),((abs (2 * (b4 + (locnum b2)))) + 2)}
proof end;

Lemma27: for b1 being Integer holds JUMP (goto b1) = {}
proof end;

registration
let c1 be Integer;
cluster JUMP (goto a1) -> empty ;
coherence
JUMP (goto c1) is empty
by Lemma27;
end;

theorem Th28: :: SCMPDS_9:28
for b1 being Int_position holds JUMP (return b1) = { (2 * b2) where B is Nat : b2 > 1 }
proof end;

registration
let c1 be Int_position ;
cluster JUMP (return a1) -> infinite ;
coherence
not JUMP (return c1) is finite
by Th5, Th28;
end;

registration
let c1 be Int_position ;
let c2 be Integer;
cluster JUMP (saveIC a1,a2) -> empty ;
coherence
JUMP (saveIC c1,c2) is empty
proof end;
end;

registration
let c1 be Int_position ;
let c2 be Integer;
cluster JUMP (a1 := a2) -> empty ;
coherence
JUMP (c1 := c2) is empty
proof end;
end;

registration
let c1 be Int_position ;
let c2, c3 be Integer;
cluster JUMP (a1,a2 := a3) -> empty ;
coherence
JUMP (c1,c2 := c3) is empty
proof end;
end;

registration
let c1, c2 be Int_position ;
let c3, c4 be Integer;
cluster JUMP (a1,a3 := a2,a4) -> empty ;
coherence
JUMP (c1,c3 := c2,c4) is empty
proof end;
end;

registration
let c1 be Int_position ;
let c2, c3 be Integer;
cluster JUMP (AddTo a1,a2,a3) -> empty ;
coherence
JUMP (AddTo c1,c2,c3) is empty
proof end;
end;

registration
let c1, c2 be Int_position ;
let c3, c4 be Integer;
cluster JUMP (AddTo a1,a3,a2,a4) -> empty ;
coherence
JUMP (AddTo c1,c3,c2,c4) is empty
proof end;
cluster JUMP (SubFrom a1,a3,a2,a4) -> empty ;
coherence
JUMP (SubFrom c1,c3,c2,c4) is empty
proof end;
cluster JUMP (MultBy a1,a3,a2,a4) -> empty ;
coherence
JUMP (MultBy c1,c3,c2,c4) is empty
proof end;
cluster JUMP (Divide a1,a3,a2,a4) -> empty ;
coherence
JUMP (Divide c1,c3,c2,c4) is empty
proof end;
end;

Lemma29: not 5 / 3 is integer
proof end;

Lemma30: for b1 being real number st b1 > 0 holds
- ((2 * b1) + (1 + b1)) < - 0
proof end;

Lemma31: for b1 being real number holds (((2 * ((abs b1) + (((- b1) + (abs b1)) + 4))) + 2) - 2) + (2 * b1) <> - ((((2 * (((abs b1) + (((- b1) + (abs b1)) + 4)) + (((- b1) + (abs b1)) + 4))) + 2) - 2) + (2 * b1))
proof end;

Lemma32: for b1, b2 being real number holds (2 * b1) + 2 <> (2 * b1) + ((2 * (((- b2) + (abs b2)) + 4)) + (2 * b2))
proof end;

Lemma33: for b1, b2 being real number st b1 > 0 holds
(2 * ((abs b2) + b1)) + 2 <> - (((2 * ((abs b2) + b1)) + (2 * b1)) + (2 * b2))
proof end;

Lemma34: for b1 being real number
for b2 being Integer st b2 <> 5 holds
2 * ((b1 + (((- b2) + (abs b2)) + 4)) + 1) <> 2 * (b1 + b2)
proof end;

Lemma35: for b1, b2 being real number st - ((2 * b1) + (1 + b1)) < - 0 holds
(2 * (((abs b2) + b1) + b1)) + 2 <> - ((2 * ((abs b2) + b1)) + (2 * b2))
proof end;

Lemma36: for b1 being Int_position
for b2 being Integer holds JUMP (b1,b2 <>0_goto 5) = {}
proof end;

Lemma37: for b1 being Int_position
for b2, b3 being Integer st b2 <> 5 holds
JUMP (b1,b3 <>0_goto b2) = {}
proof end;

Lemma38: for b1 being Int_position
for b2 being Integer holds JUMP (b1,b2 <=0_goto 5) = {}
proof end;

Lemma39: for b1 being Int_position
for b2, b3 being Integer st b2 <> 5 holds
JUMP (b1,b3 <=0_goto b2) = {}
proof end;

Lemma40: for b1 being Int_position
for b2 being Integer holds JUMP (b1,b2 >=0_goto 5) = {}
proof end;

Lemma41: for b1 being Int_position
for b2, b3 being Integer st b2 <> 5 holds
JUMP (b1,b3 >=0_goto b2) = {}
proof end;

registration
let c1 be Int_position ;
let c2, c3 be Integer;
cluster JUMP (a1,a2 <>0_goto a3) -> empty ;
coherence
JUMP (c1,c2 <>0_goto c3) is empty
proof end;
cluster JUMP (a1,a2 <=0_goto a3) -> empty ;
coherence
JUMP (c1,c2 <=0_goto c3) is empty
proof end;
cluster JUMP (a1,a2 >=0_goto a3) -> empty ;
coherence
JUMP (c1,c2 >=0_goto c3) is empty
proof end;
end;

theorem Th29: :: SCMPDS_9:29
for b1 being Instruction-Location of SCMPDS holds SUCC b1 = the Instruction-Locations of SCMPDS
proof end;

theorem Th30: :: SCMPDS_9:30
for b1 being with_non-empty_elements set
for b2 being non empty non void IC-Ins-separated definite AMI-Struct of b1
for b3, b4 being Instruction-Location of b2 st SUCC b3 = the Instruction-Locations of b2 holds
b3 <= b4
proof end;

registration
cluster SCMPDS -> non InsLoc-antisymmetric with-non-trivial-Instruction-Locations ;
coherence
not SCMPDS is InsLoc-antisymmetric
proof end;
end;

registration
cluster SCMPDS -> non InsLoc-antisymmetric non standard with-non-trivial-Instruction-Locations ;
coherence
not SCMPDS is standard
by AMISTD_1:30;
end;