let a be 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 + l))}
let l be Instruction-Location of SCMPDS ; for k1, k2 being Integer holds NIC (a,k1 >=0_goto k2),l = {(Next l),(abs (k2 + l))}
let k1, k2 be Integer; NIC (a,k1 >=0_goto k2),l = {(Next l),(abs (k2 + l))}
consider s being State of ;
set i = a,k1 >=0_goto k2;
set t = abs (k2 + l);
reconsider I = a,k1 >=0_goto k2 as Element of ObjectKind l by AMI_1:def 14;
l in NAT
by AMI_1:def 4;
then reconsider il1 = l as Element of ObjectKind (IC SCMPDS ) by AMI_1:def 11;
set u = s +* ((IC SCMPDS ),l --> il1,I);
let x be set ; TARSKI:def 3 ( not x in {(Next l),(abs (k2 + l))} or x in NIC (a,k1 >=0_goto k2),l )
assume A8:
x in {(Next l),(abs (k2 + l))}
; x in NIC (a,k1 >=0_goto k2),l
per cases
( x = Next l or x = abs (k2 + l) )
by A8, TARSKI:def 2;
suppose A9:
x = Next l
;
x in NIC (a,k1 >=0_goto k2),lA10:
- 1
< 0
;
set u1 =
(s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1));
set u2 =
((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1));
A11:
l <> a
by SCMPDS_2:53;
l <> DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),
k1
by SCMPDS_2:53;
then A12:
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . l =
((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . l
by FUNCT_4:88
.=
(s +* ((IC SCMPDS ),l --> il1,I)) . l
by A11, FUNCT_4:88
.=
a,
k1 >=0_goto k2
by AMI_1:129
;
A13:
IC (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) =
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . (IC SCMPDS )
by AMI_1:def 15
.=
((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . (IC SCMPDS )
by FUNCT_4:88, SCMPDS_2:52
.=
(s +* ((IC SCMPDS ),l --> il1,I)) . (IC SCMPDS )
by FUNCT_4:88, SCMPDS_2:52
.=
IC (s +* ((IC SCMPDS ),l --> il1,I))
by AMI_1:def 15
.=
il1
by AMI_1:129
;
A14:
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . (DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) = - 1
by FUNCT_7:96;
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . (DataLoc ((((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . a),k1) < 0
proof
per cases
( a = DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1 or a <> DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1 )
;
suppose
a = DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),
k1
;
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . (DataLoc ((((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . a),k1) < 0 hence
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . (DataLoc ((((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . a),k1) < 0
by A14, A10, FUNCT_7:96;
verum end; suppose
a <> DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),
k1
;
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . (DataLoc ((((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . a),k1) < 0 then
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . a = ((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a
by FUNCT_4:88;
hence
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . (DataLoc ((((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))) . a),k1) < 0
by A10, FUNCT_7:96;
verum end; end;
end; then x =
(Exec (a,k1 >=0_goto k2),(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1)))) . (IC SCMPDS )
by A9, A13, SCMPDS_2:69
.=
IC (Following (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> (- 1))) . a),k1) .--> (- 1))))
by A12, A13, AMI_1:131
;
hence
x in NIC (a,k1 >=0_goto k2),
l
by A12, A13;
verum end; suppose A15:
x = abs (k2 + l)
;
x in NIC (a,k1 >=0_goto k2),lset u1 =
(s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 );
set u2 =
((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 );
A16:
l <> a
by SCMPDS_2:53;
l <> DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),
k1
by SCMPDS_2:53;
then A17:
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . l =
((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . l
by FUNCT_4:88
.=
(s +* ((IC SCMPDS ),l --> il1,I)) . l
by A16, FUNCT_4:88
.=
a,
k1 >=0_goto k2
by AMI_1:129
;
A18:
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . (DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) = 0
by FUNCT_7:96;
A19:
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . (DataLoc ((((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . a),k1) >= 0
proof
per cases
( a = DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1 or a <> DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1 )
;
suppose
a = DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),
k1
;
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . (DataLoc ((((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . a),k1) >= 0 hence
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . (DataLoc ((((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . a),k1) >= 0
by A18, FUNCT_7:96;
verum end; suppose
a <> DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),
k1
;
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . (DataLoc ((((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . a),k1) >= 0 then
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . a = ((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a
by FUNCT_4:88;
hence
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . (DataLoc ((((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . a),k1) >= 0
by FUNCT_7:96;
verum end; end;
end; A20:
IC (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) =
(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) . (IC SCMPDS )
by AMI_1:def 15
.=
((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . (IC SCMPDS )
by FUNCT_4:88, SCMPDS_2:52
.=
(s +* ((IC SCMPDS ),l --> il1,I)) . (IC SCMPDS )
by FUNCT_4:88, SCMPDS_2:52
.=
IC (s +* ((IC SCMPDS ),l --> il1,I))
by AMI_1:def 15
.=
il1
by AMI_1:129
;
ex
m1 being
Element of
NAT st
(
m1 = IC (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )) &
ICplusConst (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )),
k2 = abs (m1 + k2) )
by SCMPDS_2:def 20;
then x =
(Exec (a,k1 >=0_goto k2),(((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 ))) . (IC SCMPDS )
by A15, A20, A19, SCMPDS_2:69
.=
IC (Following (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )))
by A17, A20, AMI_1:131
;
hence
x in NIC (a,k1 >=0_goto k2),
l
by A17, A20;
verum end; end;