:: SCMPDS Is Not Standard
:: by Artur Korni{\l}owicz and Yasunari Shidama
::
:: Received September 27, 2003
:: Copyright (c) 2003 Association of Mizar Users



definition
let la, lb be Int_position ;
let a, b be Integer;
:: original: -->
redefine func la,lb --> a,b -> FinPartState of SCMPDS ;
coherence
la,lb --> a,b is FinPartState of SCMPDS
proof end;
end;

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

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

definition
let l be Instruction-Location of SCMPDS ;
:: original: locnum
redefine func locnum l -> Element of NAT ;
coherence
locnum l is Element of NAT
by ORDINAL1:def 13;
end;

theorem :: SCMPDS_9:1
canceled;

theorem :: SCMPDS_9:2
canceled;

theorem Th8: :: SCMPDS_9:3
for l being Instruction-Location of SCMPDS holds l = locnum l
proof end;

theorem :: SCMPDS_9:4
for l1, l2 being Instruction-Location of SCMPDS st l1 <> l2 holds
locnum l1 <> locnum l2
proof end;

theorem :: SCMPDS_9:5
canceled;

theorem :: SCMPDS_9:6
canceled;

theorem Th12: :: SCMPDS_9:7
for i being Instruction of SCMPDS
for l being Instruction-Location of SCMPDS st ( for s being State of SCMPDS st IC s = l & s . l = i holds
(Exec i,s) . (IC SCMPDS ) = Next (IC s) ) holds
NIC i,l = {(Next l)}
proof end;

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

theorem Th14: :: SCMPDS_9:9
for l being Instruction-Location of SCMPDS
for k being Integer holds NIC (goto k),l = {(abs (k + (locnum l)))}
proof end;

Lm2: for k being natural number st k > 1 holds
k - 2 is Element of NAT
proof end;

theorem Th15: :: SCMPDS_9:10
for a being Int_position
for l being Instruction-Location of SCMPDS holds NIC (return a),l = { k where k is Element of NAT : k > 1 }
proof end;

theorem Th16: :: SCMPDS_9:11
for a being Int_position
for l being Instruction-Location of SCMPDS
for k1 being Integer holds NIC (saveIC a,k1),l = {(Next l)}
proof end;

theorem Th17: :: SCMPDS_9:12
for a being Int_position
for l being Instruction-Location of SCMPDS
for k1 being Integer holds NIC (a := k1),l = {(Next l)}
proof end;

theorem Th18: :: SCMPDS_9:13
for a being Int_position
for l being Instruction-Location of SCMPDS
for k1, k2 being Integer holds NIC (a,k1 := k2),l = {(Next l)}
proof end;

theorem Th19: :: SCMPDS_9:14
for a, b being Int_position
for l being Instruction-Location of SCMPDS
for k1, k2 being Integer holds NIC (a,k1 := b,k2),l = {(Next l)}
proof end;

theorem Th20: :: SCMPDS_9:15
for a being Int_position
for l being Instruction-Location of SCMPDS
for k1, k2 being Integer holds NIC (AddTo a,k1,k2),l = {(Next l)}
proof end;

theorem Th21: :: SCMPDS_9:16
for a, b being Int_position
for l being Instruction-Location of SCMPDS
for k1, k2 being Integer holds NIC (AddTo a,k1,b,k2),l = {(Next l)}
proof end;

theorem Th22: :: SCMPDS_9:17
for a, b being Int_position
for l being Instruction-Location of SCMPDS
for k1, k2 being Integer holds NIC (SubFrom a,k1,b,k2),l = {(Next l)}
proof end;

theorem Th23: :: SCMPDS_9:18
for a, b being Int_position
for l being Instruction-Location of SCMPDS
for k1, k2 being Integer holds NIC (MultBy a,k1,b,k2),l = {(Next l)}
proof end;

theorem Th24: :: SCMPDS_9:19
for a, b being Int_position
for l being Instruction-Location of SCMPDS
for k1, k2 being Integer holds NIC (Divide a,k1,b,k2),l = {(Next l)}
proof end;

theorem :: SCMPDS_9:20
for a being Int_position
for l being Instruction-Location of SCMPDS
for k1, k2 being Integer holds NIC (a,k1 <>0_goto k2),l = {(Next l),(abs (k2 + (locnum l)))}
proof end;

theorem :: SCMPDS_9:21
for a being Int_position
for l being Instruction-Location of SCMPDS
for k1, k2 being Integer holds NIC (a,k1 <=0_goto k2),l = {(Next l),(abs (k2 + (locnum l)))}
proof end;

theorem :: SCMPDS_9:22
for a being Int_position
for l being Instruction-Location of SCMPDS
for k1, k2 being Integer holds NIC (a,k1 >=0_goto k2),l = {(Next l),(abs (k2 + (locnum l)))}
proof end;

Lm3: for k being Integer holds JUMP (goto k) = {}
proof end;

registration
let k be Integer;
cluster JUMP (goto k) -> empty ;
coherence
JUMP (goto k) is empty
by Lm3;
end;

theorem Th28: :: SCMPDS_9:23
for a being Int_position holds JUMP (return a) = { k where k is Element of NAT : k > 1 }
proof end;

registration
let a be Int_position ;
cluster JUMP (return a) -> infinite ;
coherence
not JUMP (return a) is finite
by PRE_CIRC:29, Th28;
end;

registration
let a be Int_position ;
let k1 be Integer;
cluster JUMP (saveIC a,k1) -> empty ;
coherence
JUMP (saveIC a,k1) is empty
proof end;
end;

registration
let a be Int_position ;
let k1 be Integer;
cluster JUMP (a := k1) -> empty ;
coherence
JUMP (a := k1) is empty
proof end;
end;

registration
let a be Int_position ;
let k1, k2 be Integer;
cluster JUMP (a,k1 := k2) -> empty ;
coherence
JUMP (a,k1 := k2) is empty
proof end;
end;

registration
let a, b be Int_position ;
let k1, k2 be Integer;
cluster JUMP (a,k1 := b,k2) -> empty ;
coherence
JUMP (a,k1 := b,k2) is empty
proof end;
end;

registration
let a be Int_position ;
let k1, k2 be Integer;
cluster JUMP (AddTo a,k1,k2) -> empty ;
coherence
JUMP (AddTo a,k1,k2) is empty
proof end;
end;

registration
let a, b be Int_position ;
let k1, k2 be Integer;
cluster JUMP (AddTo a,k1,b,k2) -> empty ;
coherence
JUMP (AddTo a,k1,b,k2) is empty
proof end;
cluster JUMP (SubFrom a,k1,b,k2) -> empty ;
coherence
JUMP (SubFrom a,k1,b,k2) is empty
proof end;
cluster JUMP (MultBy a,k1,b,k2) -> empty ;
coherence
JUMP (MultBy a,k1,b,k2) is empty
proof end;
cluster JUMP (Divide a,k1,b,k2) -> empty ;
coherence
JUMP (Divide a,k1,b,k2) is empty
proof end;
end;

Lm4: not 5 / 3 is integer
proof end;

Lm5: for d being real number holds ((((abs d) + (((- d) + (abs d)) + 4)) + 2) - 2) + d <> - ((((((abs d) + (((- d) + (abs d)) + 4)) + (((- d) + (abs d)) + 4)) + 2) - 2) + d)
proof end;

Lm6: for b, d being real number holds b + 1 <> b + ((((- d) + (abs d)) + 4) + d)
proof end;

Lm7: for c, d being real number st c > 0 holds
((abs d) + c) + 1 <> - ((((abs d) + c) + c) + d)
proof end;

Lm8: for b being real number
for d being Integer st d <> 5 holds
(b + (((- d) + (abs d)) + 4)) + 1 <> b + d
proof end;

Lm9: for c, d being real number st c > 0 holds
(((abs d) + c) + c) + 1 <> - (((abs d) + c) + d)
proof end;

Lm10: for a being Int_position
for k1 being Integer holds JUMP (a,k1 <>0_goto 5) = {}
proof end;

Lm11: for a being Int_position
for k2, k1 being Integer st k2 <> 5 holds
JUMP (a,k1 <>0_goto k2) = {}
proof end;

Lm12: for a being Int_position
for k1 being Integer holds JUMP (a,k1 <=0_goto 5) = {}
proof end;

Lm13: for a being Int_position
for k2, k1 being Integer st k2 <> 5 holds
JUMP (a,k1 <=0_goto k2) = {}
proof end;

Lm14: for a being Int_position
for k1 being Integer holds JUMP (a,k1 >=0_goto 5) = {}
proof end;

Lm15: for a being Int_position
for k2, k1 being Integer st k2 <> 5 holds
JUMP (a,k1 >=0_goto k2) = {}
proof end;

registration
let a be Int_position ;
let k1, k2 be Integer;
cluster JUMP (a,k1 <>0_goto k2) -> empty ;
coherence
JUMP (a,k1 <>0_goto k2) is empty
proof end;
cluster JUMP (a,k1 <=0_goto k2) -> empty ;
coherence
JUMP (a,k1 <=0_goto k2) is empty
proof end;
cluster JUMP (a,k1 >=0_goto k2) -> empty ;
coherence
JUMP (a,k1 >=0_goto k2) is empty
proof end;
end;

theorem Th29: :: SCMPDS_9:24
for l being Instruction-Location of SCMPDS holds SUCC l = NAT
proof end;

registration
cluster SCMPDS -> non InsLoc-antisymmetric ;
coherence
not SCMPDS is InsLoc-antisymmetric
proof end;
end;

registration
cluster SCMPDS -> non standard ;
coherence
not SCMPDS is standard
by AMISTD_1:30;
end;