let a be Int_position ; :: thesis: 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)))}
let l be Instruction-Location of SCMPDS ; :: thesis: for k1, k2 being Integer holds NIC (a,k1 <=0_goto k2),l = {(Next l),(abs (k2 + (locnum l)))}
let k1, k2 be Integer; :: thesis: NIC (a,k1 <=0_goto k2),l = {(Next l),(abs (k2 + (locnum l)))}
set i = a,k1 <=0_goto k2;
set t = abs (k2 + (locnum l));
A1:
locnum l = l
by Th8;
hereby :: according to TARSKI:def 3,
XBOOLE_0:def 10 :: thesis: {(Next l),(abs (k2 + (locnum l)))} c= NIC (a,k1 <=0_goto k2),l
let x be
set ;
:: thesis: ( x in NIC (a,k1 <=0_goto k2),l implies b1 in {(Next l),(abs (k2 + (locnum l)))} )assume
x in NIC (a,k1 <=0_goto k2),
l
;
:: thesis: b1 in {(Next l),(abs (k2 + (locnum l)))}then consider s being
State of
SCMPDS such that A2:
x = IC (Following s)
and A3:
IC s = l
and A4:
s . l = a,
k1 <=0_goto k2
;
consider m1 being
Element of
NAT such that A5:
m1 = IC s
and A6:
ICplusConst s,
k2 = abs (m1 + k2)
by SCMPDS_2:def 20;
per cases
( s . (DataLoc (s . a),k1) <= 0 or s . (DataLoc (s . a),k1) > 0 )
;
suppose A7:
s . (DataLoc (s . a),k1) <= 0
;
:: thesis: b1 in {(Next l),(abs (k2 + (locnum l)))}x =
(Exec (a,k1 <=0_goto k2),s) . (IC SCMPDS )
by A2, A3, A4, AMI_1:131
.=
abs (k2 + (locnum l))
by A1, A3, A5, A6, A7, SCMPDS_2:68
;
hence
x in {(Next l),(abs (k2 + (locnum l)))}
by TARSKI:def 2;
:: thesis: verum end; end;
end;
let x be set ; :: according to TARSKI:def 3 :: thesis: ( not x in {(Next l),(abs (k2 + (locnum l)))} or x in NIC (a,k1 <=0_goto k2),l )
assume A9:
x in {(Next l),(abs (k2 + (locnum l)))}
; :: thesis: x in NIC (a,k1 <=0_goto k2),l
consider s being State of SCMPDS ;
l in NAT
by AMI_1:def 4;
then reconsider il1 = l as Element of ObjectKind (IC SCMPDS ) by AMI_1:def 11;
reconsider I = a,k1 <=0_goto k2 as Element of ObjectKind l by AMI_1:def 14;
set u = s +* ((IC SCMPDS ),l --> il1,I);
per cases
( x = Next l or x = abs (k2 + (locnum l)) )
by A9, TARSKI:def 2;
suppose A10:
x = Next l
;
:: thesis: x in NIC (a,k1 <=0_goto k2),lset 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
;
:: thesis: (((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, FUNCT_7:96;
:: thesis: verum end; suppose
a <> DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 1)) . a),
k1
;
:: thesis: (((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 FUNCT_7:96;
:: thesis: 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 A10, A13, SCMPDS_2:68
.=
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;
:: thesis: verum end; suppose A15:
x = abs (k2 + (locnum l))
;
:: thesis: 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:
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
;
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 )) . a),k1) = 0
by FUNCT_7:96;
A20:
(((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
;
:: thesis: (((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 A19, FUNCT_7:96;
:: thesis: verum end; suppose
a <> DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),
k1
;
:: thesis: (((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;
:: thesis: verum end; end;
end; consider m1 being
Element of
NAT such that A21:
m1 = IC (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 ))
and A22:
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;
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 A1, A15, A18, A20, A21, A22, SCMPDS_2:68
.=
IC (Following (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) +* ((DataLoc (((s +* ((IC SCMPDS ),l --> il1,I)) +* (a .--> 0 )) . a),k1) .--> 0 )))
by A17, A18, AMI_1:131
;
hence
x in NIC (a,k1 <=0_goto k2),
l
by A17, A18;
:: thesis: verum end; end;