scmfsa6c.miz
begin
reserve x for
set,
i for
Instruction of
SCM+FSA ,
a,b for
Int-Location,
f for
FinSeq-Location,
l,l1 for
Nat,
s,s1,s2 for
State of
SCM+FSA ,
P,P1,P2 for
Instruction-Sequence of
SCM+FSA ;
set SA0 = (
Start-At (
0 ,
SCM+FSA ));
theorem ::
SCMFSA6C:1
for I be
keeping_0
parahalting
really-closed
Program of
SCM+FSA , J be
parahalting
really-closed
Program of
SCM+FSA holds ((
IExec ((I
";" J),P,s))
. a)
= ((
IExec (J,P,(
IExec (I,P,s))))
. a)
proof
let I be
keeping_0
parahalting
really-closed
Program of
SCM+FSA , J be
parahalting
really-closed
Program of
SCM+FSA ;
A1: not a
in (
dom (
Start-At (((
IC (
IExec (J,P,(
IExec (I,P,s)))))
+ (
card I)),
SCM+FSA ))) by
SCMFSA_2: 102;
(
IExec ((I
";" J),P,s))
= (
IncIC ((
IExec (J,P,(
IExec (I,P,s)))),(
card I))) by
SCMFSA6B: 20;
hence thesis by
A1,
FUNCT_4: 11;
end;
theorem ::
SCMFSA6C:2
for I be
keeping_0
parahalting
really-closed
Program of
SCM+FSA , J be
parahalting
really-closed
Program of
SCM+FSA holds ((
IExec ((I
";" J),P,s))
. f)
= ((
IExec (J,P,(
IExec (I,P,s))))
. f)
proof
let I be
keeping_0
parahalting
really-closed
Program of
SCM+FSA , J be
parahalting
really-closed
Program of
SCM+FSA ;
A1: not f
in (
dom (
Start-At (((
IC (
IExec (J,P,(
IExec (I,P,s)))))
+ (
card I)),
SCM+FSA ))) by
SCMFSA_2: 103;
(
IExec ((I
";" J),P,s))
= (
IncIC ((
IExec (J,P,(
IExec (I,P,s)))),(
card I))) by
SCMFSA6B: 20;
hence thesis by
A1,
FUNCT_4: 11;
end;
begin
::$Canceled
definition
let i be
Instruction of
SCM+FSA ;
::
SCMFSA6C:def1
attr i is
keeping_0 means
:
Def1: (
Macro i) is
keeping_0;
end
Lm1: (
Macro (
halt
SCM+FSA )) is
keeping_0
proof
set Mi = (
Macro (
halt
SCM+FSA ));
let s be
0
-started
State of
SCM+FSA ;
A1: (
Start-At (
0 ,
SCM+FSA ))
c= s by
MEMSTR_0: 29;
let P be
Instruction-Sequence of
SCM+FSA ;
assume
A2: Mi
c= P;
let k be
Nat;
A3: (P
/. (
IC s))
= (P
. (
IC s)) by
PBOOLE: 143;
A4:
0
in (
dom Mi) by
COMPOS_1: 60;
(
CurInstr (P,(
Comput (P,s,
0 ))))
= (P
.
0 ) by
A1,
A3,
MEMSTR_0: 39
.= (Mi
.
0 ) by
A2,
A4,
GRFUNC_1: 2
.= (
halt
SCM+FSA ) by
COMPOS_1: 58;
hence ((
Comput (P,s,k))
. (
intloc
0 ))
= (s
. (
intloc
0 )) by
EXTPRO_1: 5,
NAT_1: 2;
end;
registration
cluster (
halt
SCM+FSA ) ->
keeping_0;
coherence by
Lm1;
end
registration
let i be
sequential
Instruction of
SCM+FSA ;
cluster (
Macro i) ->
parahalting;
coherence
proof
let s be
0
-started
State of
SCM+FSA ;
let P be
Instruction-Sequence of
SCM+FSA such that
A1: (
Macro i)
c= P;
(
dom P)
=
NAT by
PARTFUN1:def 2;
then
A2:
0
in (
dom P);
A3:
0
in (
dom (
Macro i)) & 1
in (
dom (
Macro i)) by
COMPOS_1: 57;
A4: (
IC s)
=
0 by
MEMSTR_0:def 11;
A5: (P
.
0 )
= ((
Macro i)
.
0 ) by
A1,
GRFUNC_1: 2,
A3
.= i by
COMPOS_1: 58;
(
Comput (P,s,(
0
+ 1)))
= (
Following (P,(
Comput (P,s,
0 )))) by
EXTPRO_1: 3
.= (
Exec (i,s)) by
A5,
A2,
A4,
PARTFUN1:def 6;
then
A6: (
IC (
Comput (P,s,1)))
= (
0
+ 1) by
AMISTD_1:def 8,
A4;
then ((
Macro i)
. (
IC (
Comput (P,s,1))))
= (
halt
SCM+FSA ) by
COMPOS_1: 59;
then (P
. (
IC (
Comput (P,s,1))))
= (
halt
SCM+FSA ) by
A3,
A1,
GRFUNC_1: 2,
A6;
hence P
halts_on s by
EXTPRO_1: 30;
end;
end
registration
let a,b be
Int-Location;
let f be
FinSeq-Location;
cluster ((f,a)
:= b) ->
keeping_0;
coherence
proof
thus ((f,a)
:= b) is
keeping_0
proof
set Ma = (
Macro ((f,a)
:= b));
let s be
0
-started
State of
SCM+FSA ;
A1: (
Start-At (
0 ,
SCM+FSA ))
c= s by
MEMSTR_0: 29;
let P be
Instruction-Sequence of
SCM+FSA ;
assume
A2: Ma
c= P;
let k be
Nat;
A3: (
IC
SCM+FSA )
in (
dom SA0) by
TARSKI:def 1;
A4: (
IC s)
= (SA0
. (
IC
SCM+FSA )) by
A3,
A1,
GRFUNC_1: 2
.=
0 by
FUNCOP_1: 72;
0
in (
dom Ma) by
COMPOS_1: 60;
then
A5: (Ma
.
0 )
= (P
.
0 ) by
A2,
GRFUNC_1: 2;
A6: (P
/. (
IC s))
= (P
. (
IC s)) by
PBOOLE: 143;
A7: (
Comput (P,s,(
0
+ 1)))
= (
Following (P,(
Comput (P,s,
0 )))) by
EXTPRO_1: 3
.= (
Exec (((f,a)
:= b),s)) by
A4,
A5,
A6,
COMPOS_1: 58;
1
in (
dom Ma) by
COMPOS_1: 60;
then (Ma
. 1)
= (P
. 1) by
A2,
GRFUNC_1: 2;
then
A8: (P
. 1)
= (
halt
SCM+FSA ) by
COMPOS_1: 59;
(
IC (
Exec (((f,a)
:= b),s)))
= (
0
+ 1) by
A4,
SCMFSA_2: 73;
then
A9: (
CurInstr (P,(
Comput (P,s,1))))
= (
halt
SCM+FSA ) by
A8,
A7,
PBOOLE: 143;
per cases by
NAT_1: 14;
suppose k
=
0 ;
hence thesis;
end;
suppose
A10: 1
<= k;
((
Comput (P,s,1))
. (
intloc
0 ))
= (s
. (
intloc
0 )) by
A7,
SCMFSA_2: 73;
hence thesis by
A9,
A10,
EXTPRO_1: 5;
end;
end;
end;
end
registration
let a be
Int-Location, f be
FinSeq-Location;
cluster (f
:=<0,...,0> a) ->
keeping_0;
coherence
proof
thus (f
:=<0,...,0> a) is
keeping_0
proof
set Ma = (
Macro (f
:=<0,...,0> a));
let s be
0
-started
State of
SCM+FSA ;
A1: (
Start-At (
0 ,
SCM+FSA ))
c= s by
MEMSTR_0: 29;
let P be
Instruction-Sequence of
SCM+FSA ;
assume
A2: Ma
c= P;
let k be
Nat;
A3: (
IC
SCM+FSA )
in (
dom SA0) by
TARSKI:def 1;
A4: (
IC s)
= (SA0
. (
IC
SCM+FSA )) by
A3,
A1,
GRFUNC_1: 2
.=
0 by
FUNCOP_1: 72;
0
in (
dom Ma) by
COMPOS_1: 60;
then
A5: (Ma
.
0 )
= (P
.
0 ) by
A2,
GRFUNC_1: 2;
A6: (P
/. (
IC s))
= (P
. (
IC s)) by
PBOOLE: 143;
A7: (
Comput (P,s,(
0
+ 1)))
= (
Following (P,(
Comput (P,s,
0 )))) by
EXTPRO_1: 3
.= (
Exec ((f
:=<0,...,0> a),s)) by
A4,
A5,
A6,
COMPOS_1: 58;
1
in (
dom Ma) by
COMPOS_1: 60;
then (Ma
. 1)
= (P
. 1) by
A2,
GRFUNC_1: 2;
then
A8: (P
. 1)
= (
halt
SCM+FSA ) by
COMPOS_1: 59;
(
IC (
Exec ((f
:=<0,...,0> a),s)))
= (
0
+ 1) by
A4,
SCMFSA_2: 75;
then
A9: (
CurInstr (P,(
Comput (P,s,1))))
= (
halt
SCM+FSA ) by
A8,
A7,
PBOOLE: 143;
per cases by
NAT_1: 14;
suppose k
=
0 ;
hence thesis;
end;
suppose
A10: 1
<= k;
((
Comput (P,s,1))
. (
intloc
0 ))
= (s
. (
intloc
0 )) by
A7,
SCMFSA_2: 75;
hence thesis by
A9,
A10,
EXTPRO_1: 5;
end;
end;
end;
end
registration
let a be
read-write
Int-Location, b be
Int-Location;
cluster (a
:= b) ->
keeping_0;
coherence
proof
set Ma = (
Macro (a
:= b));
let s be
0
-started
State of
SCM+FSA ;
A1: (
Start-At (
0 ,
SCM+FSA ))
c= s by
MEMSTR_0: 29;
let P be
Instruction-Sequence of
SCM+FSA ;
assume
A2: Ma
c= P;
let k be
Nat;
A3: (
IC
SCM+FSA )
in (
dom SA0) by
TARSKI:def 1;
A4: (
IC s)
= (SA0
. (
IC
SCM+FSA )) by
A3,
A1,
GRFUNC_1: 2
.=
0 by
FUNCOP_1: 72;
0
in (
dom Ma) by
COMPOS_1: 60;
then
A5: (Ma
.
0 )
= (P
.
0 ) by
A2,
GRFUNC_1: 2;
A6: (P
/. (
IC s))
= (P
. (
IC s)) by
PBOOLE: 143;
A7: (
Comput (P,s,(
0
+ 1)))
= (
Following (P,(
Comput (P,s,
0 )))) by
EXTPRO_1: 3
.= (
Exec ((a
:= b),s)) by
A4,
A5,
A6,
COMPOS_1: 58;
1
in (
dom Ma) by
COMPOS_1: 60;
then (Ma
. 1)
= (P
. 1) by
A2,
GRFUNC_1: 2;
then
A8: (P
. 1)
= (
halt
SCM+FSA ) by
COMPOS_1: 59;
(
IC (
Exec ((a
:= b),s)))
= (
0
+ 1) by
A4,
SCMFSA_2: 63;
then
A9: (
CurInstr (P,(
Comput (P,s,1))))
= (
halt
SCM+FSA ) by
A8,
A7,
PBOOLE: 143;
per cases by
NAT_1: 14;
suppose k
=
0 ;
hence thesis;
end;
suppose
A10: 1
<= k;
((
Comput (P,s,1))
. (
intloc
0 ))
= (s
. (
intloc
0 )) by
A7,
SCMFSA_2: 63;
hence thesis by
A9,
A10,
EXTPRO_1: 5;
end;
end;
cluster (
AddTo (a,b)) ->
keeping_0;
coherence
proof
set Ma = (
Macro (
AddTo (a,b)));
let s be
0
-started
State of
SCM+FSA ;
A11: (
Start-At (
0 ,
SCM+FSA ))
c= s by
MEMSTR_0: 29;
let P be
Instruction-Sequence of
SCM+FSA ;
assume
A12: Ma
c= P;
let k be
Nat;
A13: (
IC
SCM+FSA )
in (
dom SA0) by
TARSKI:def 1;
A14: (
IC s)
= (SA0
. (
IC
SCM+FSA )) by
A13,
A11,
GRFUNC_1: 2
.=
0 by
FUNCOP_1: 72;
0
in (
dom Ma) by
COMPOS_1: 60;
then
A15: (Ma
.
0 )
= (P
.
0 ) by
A12,
GRFUNC_1: 2;
A16: (P
/. (
IC s))
= (P
. (
IC s)) by
PBOOLE: 143;
A17: (
Comput (P,s,(
0
+ 1)))
= (
Following (P,(
Comput (P,s,
0 )))) by
EXTPRO_1: 3
.= (
Exec ((
AddTo (a,b)),s)) by
A14,
A15,
A16,
COMPOS_1: 58;
1
in (
dom Ma) by
COMPOS_1: 60;
then (Ma
. 1)
= (P
. 1) by
A12,
GRFUNC_1: 2;
then
A18: (P
. 1)
= (
halt
SCM+FSA ) by
COMPOS_1: 59;
(
IC (
Exec ((
AddTo (a,b)),s)))
= (
0
+ 1) by
A14,
SCMFSA_2: 64;
then
A19: (
CurInstr (P,(
Comput (P,s,1))))
= (
halt
SCM+FSA ) by
A18,
A17,
PBOOLE: 143;
per cases by
NAT_1: 14;
suppose k
=
0 ;
hence thesis;
end;
suppose
A20: 1
<= k;
((
Comput (P,s,1))
. (
intloc
0 ))
= (s
. (
intloc
0 )) by
A17,
SCMFSA_2: 64;
hence thesis by
A19,
A20,
EXTPRO_1: 5;
end;
end;
cluster (
SubFrom (a,b)) ->
keeping_0;
coherence
proof
set Ma = (
Macro (
SubFrom (a,b)));
let s be
0
-started
State of
SCM+FSA ;
A21: (
Start-At (
0 ,
SCM+FSA ))
c= s by
MEMSTR_0: 29;
let P be
Instruction-Sequence of
SCM+FSA ;
assume
A22: Ma
c= P;
let k be
Nat;
A23: (
IC
SCM+FSA )
in (
dom SA0) by
TARSKI:def 1;
A24: (
IC s)
= (SA0
. (
IC
SCM+FSA )) by
A23,
A21,
GRFUNC_1: 2
.=
0 by
FUNCOP_1: 72;
0
in (
dom Ma) by
COMPOS_1: 60;
then
A25: (Ma
.
0 )
= (P
.
0 ) by
A22,
GRFUNC_1: 2;
A26: (P
/. (
IC s))
= (P
. (
IC s)) by
PBOOLE: 143;
A27: (
Comput (P,s,(
0
+ 1)))
= (
Following (P,(
Comput (P,s,
0 )))) by
EXTPRO_1: 3
.= (
Exec ((
SubFrom (a,b)),s)) by
A24,
A25,
A26,
COMPOS_1: 58;
1
in (
dom Ma) by
COMPOS_1: 60;
then (Ma
. 1)
= (P
. 1) by
A22,
GRFUNC_1: 2;
then
A28: (P
. 1)
= (
halt
SCM+FSA ) by
COMPOS_1: 59;
(
IC (
Exec ((
SubFrom (a,b)),s)))
= (
0
+ 1) by
A24,
SCMFSA_2: 65;
then
A29: (
CurInstr (P,(
Comput (P,s,1))))
= (
halt
SCM+FSA ) by
A28,
A27,
PBOOLE: 143;
per cases by
NAT_1: 14;
suppose k
=
0 ;
hence thesis;
end;
suppose
A30: 1
<= k;
((
Comput (P,s,1))
. (
intloc
0 ))
= (s
. (
intloc
0 )) by
A27,
SCMFSA_2: 65;
hence thesis by
A29,
A30,
EXTPRO_1: 5;
end;
end;
cluster (
MultBy (a,b)) ->
keeping_0;
coherence
proof
set Ma = (
Macro (
MultBy (a,b)));
let s be
0
-started
State of
SCM+FSA ;
A31: (
Start-At (
0 ,
SCM+FSA ))
c= s by
MEMSTR_0: 29;
let P be
Instruction-Sequence of
SCM+FSA ;
assume
A32: Ma
c= P;
let k be
Nat;
A33: (
IC
SCM+FSA )
in (
dom SA0) by
TARSKI:def 1;
A34: (
IC s)
= (SA0
. (
IC
SCM+FSA )) by
A33,
A31,
GRFUNC_1: 2
.=
0 by
FUNCOP_1: 72;
0
in (
dom Ma) by
COMPOS_1: 60;
then
A35: (Ma
.
0 )
= (P
.
0 ) by
A32,
GRFUNC_1: 2;
A36: (P
/. (
IC s))
= (P
. (
IC s)) by
PBOOLE: 143;
A37: (
Comput (P,s,(
0
+ 1)))
= (
Following (P,(
Comput (P,s,
0 )))) by
EXTPRO_1: 3
.= (
Exec ((
MultBy (a,b)),s)) by
A34,
A35,
A36,
COMPOS_1: 58;
1
in (
dom Ma) by
COMPOS_1: 60;
then (Ma
. 1)
= (P
. 1) by
A32,
GRFUNC_1: 2;
then
A38: (P
. 1)
= (
halt
SCM+FSA ) by
COMPOS_1: 59;
(
IC (
Exec ((
MultBy (a,b)),s)))
= (
0
+ 1) by
A34,
SCMFSA_2: 66;
then
A39: (
CurInstr (P,(
Comput (P,s,1))))
= (
halt
SCM+FSA ) by
A38,
A37,
PBOOLE: 143;
per cases by
NAT_1: 14;
suppose k
=
0 ;
hence thesis;
end;
suppose
A40: 1
<= k;
((
Comput (P,s,1))
. (
intloc
0 ))
= (s
. (
intloc
0 )) by
A37,
SCMFSA_2: 66;
hence thesis by
A39,
A40,
EXTPRO_1: 5;
end;
end;
end
registration
cluster
keeping_0
sequential for
Instruction of
SCM+FSA ;
existence
proof
take i = ( the
read-write
Int-Location
:= (
intloc 1));
thus i is
keeping_0;
thus thesis;
end;
end
registration
let i be
keeping_0
Instruction of
SCM+FSA ;
cluster (
Macro i) ->
keeping_0;
coherence by
Def1;
end
registration
let a,b be
read-write
Int-Location;
cluster (
Divide (a,b)) ->
keeping_0;
coherence
proof
set Ma = (
Macro (
Divide (a,b)));
let s be
0
-started
State of
SCM+FSA ;
A1: (
Start-At (
0 ,
SCM+FSA ))
c= s by
MEMSTR_0: 29;
let P be
Instruction-Sequence of
SCM+FSA ;
assume
A2: Ma
c= P;
let k be
Nat;
A3: (
IC
SCM+FSA )
in (
dom SA0) by
TARSKI:def 1;
A4: (
IC s)
= (SA0
. (
IC
SCM+FSA )) by
A3,
A1,
GRFUNC_1: 2
.=
0 by
FUNCOP_1: 72;
0
in (
dom Ma) by
COMPOS_1: 60;
then
A5: (Ma
.
0 )
= (P
.
0 ) by
A2,
GRFUNC_1: 2;
A6: (P
/. (
IC s))
= (P
. (
IC s)) by
PBOOLE: 143;
A7: (
Comput (P,s,(
0
+ 1)))
= (
Following (P,(
Comput (P,s,
0 )))) by
EXTPRO_1: 3
.= (
Exec ((
Divide (a,b)),s)) by
A4,
A5,
A6,
COMPOS_1: 58;
1
in (
dom Ma) by
COMPOS_1: 60;
then (Ma
. 1)
= (P
. 1) by
A2,
GRFUNC_1: 2;
then
A8: (P
. 1)
= (
halt
SCM+FSA ) by
COMPOS_1: 59;
(
IC (
Exec ((
Divide (a,b)),s)))
= (
0
+ 1) by
A4,
SCMFSA_2: 67;
then
A9: (
CurInstr (P,(
Comput (P,s,1))))
= (
halt
SCM+FSA ) by
A8,
A7,
PBOOLE: 143;
per cases by
NAT_1: 14;
suppose k
=
0 ;
hence thesis;
end;
suppose
A10: 1
<= k;
((
Comput (P,s,1))
. (
intloc
0 ))
= (s
. (
intloc
0 )) by
A7,
SCMFSA_2: 67;
hence thesis by
A9,
A10,
EXTPRO_1: 5;
end;
end;
end
registration
let a be
Int-Location, f be
FinSeq-Location, b be
read-write
Int-Location;
cluster (b
:= (f,a)) ->
keeping_0;
coherence
proof
set Ma = (
Macro (b
:= (f,a)));
let s be
0
-started
State of
SCM+FSA ;
A1: (
Start-At (
0 ,
SCM+FSA ))
c= s by
MEMSTR_0: 29;
let P be
Instruction-Sequence of
SCM+FSA ;
assume
A2: Ma
c= P;
let k be
Nat;
A3: (
IC
SCM+FSA )
in (
dom SA0) by
TARSKI:def 1;
A4: (
IC s)
= (SA0
. (
IC
SCM+FSA )) by
A3,
A1,
GRFUNC_1: 2
.=
0 by
FUNCOP_1: 72;
0
in (
dom Ma) by
COMPOS_1: 60;
then
A5: (Ma
.
0 )
= (P
.
0 ) by
A2,
GRFUNC_1: 2;
A6: (P
/. (
IC s))
= (P
. (
IC s)) by
PBOOLE: 143;
A7: (
Comput (P,s,(
0
+ 1)))
= (
Following (P,(
Comput (P,s,
0 )))) by
EXTPRO_1: 3
.= (
Exec ((b
:= (f,a)),s)) by
A4,
A5,
A6,
COMPOS_1: 58;
1
in (
dom Ma) by
COMPOS_1: 60;
then (Ma
. 1)
= (P
. 1) by
A2,
GRFUNC_1: 2;
then
A8: (P
. 1)
= (
halt
SCM+FSA ) by
COMPOS_1: 59;
(
IC (
Exec ((b
:= (f,a)),s)))
= (
0
+ 1) by
A4,
SCMFSA_2: 72;
then
A9: (
CurInstr (P,(
Comput (P,s,1))))
= (
halt
SCM+FSA ) by
A8,
A7,
PBOOLE: 143;
per cases by
NAT_1: 14;
suppose k
=
0 ;
hence thesis;
end;
suppose
A10: 1
<= k;
((
Comput (P,s,1))
. (
intloc
0 ))
= (s
. (
intloc
0 )) by
A7,
SCMFSA_2: 72;
hence thesis by
A9,
A10,
EXTPRO_1: 5;
end;
end;
end
registration
let f be
FinSeq-Location, b be
read-write
Int-Location;
cluster (b
:=len f) ->
keeping_0;
coherence
proof
set Ma = (
Macro (b
:=len f));
let s be
0
-started
State of
SCM+FSA ;
A1: (
Start-At (
0 ,
SCM+FSA ))
c= s by
MEMSTR_0: 29;
let P be
Instruction-Sequence of
SCM+FSA ;
assume
A2: Ma
c= P;
let k be
Nat;
A3: (
IC
SCM+FSA )
in (
dom SA0) by
TARSKI:def 1;
A4: (
IC s)
= (SA0
. (
IC
SCM+FSA )) by
A3,
A1,
GRFUNC_1: 2
.=
0 by
FUNCOP_1: 72;
0
in (
dom Ma) by
COMPOS_1: 60;
then
A5: (Ma
.
0 )
= (P
.
0 ) by
A2,
GRFUNC_1: 2;
A6: (P
/. (
IC s))
= (P
. (
IC s)) by
PBOOLE: 143;
A7: (
Comput (P,s,(
0
+ 1)))
= (
Following (P,(
Comput (P,s,
0 )))) by
EXTPRO_1: 3
.= (
Exec ((b
:=len f),s)) by
A4,
A5,
A6,
COMPOS_1: 58;
1
in (
dom Ma) by
COMPOS_1: 60;
then (Ma
. 1)
= (P
. 1) by
A2,
GRFUNC_1: 2;
then
A8: (P
. 1)
= (
halt
SCM+FSA ) by
COMPOS_1: 59;
(
IC (
Exec ((b
:=len f),s)))
= (
0
+ 1) by
A4,
SCMFSA_2: 74;
then
A9: (
CurInstr (P,(
Comput (P,s,1))))
= (
halt
SCM+FSA ) by
A8,
A7,
PBOOLE: 143;
per cases by
NAT_1: 14;
suppose k
=
0 ;
hence thesis;
end;
suppose
A10: 1
<= k;
((
Comput (P,s,1))
. (
intloc
0 ))
= (s
. (
intloc
0 )) by
A7,
SCMFSA_2: 74;
hence thesis by
A9,
A10,
EXTPRO_1: 5;
end;
end;
end
registration
let i be
sequential
Instruction of
SCM+FSA ;
cluster (
Macro i) ->
really-closed;
coherence
proof
set F = (
Macro i);
let l be
Nat;
A1: (
dom F)
=
{
0 , 1} by
COMPOS_1: 61;
assume
A2: l
in (
dom F);
per cases by
COMPOS_1: 60;
suppose
A3: l
=
0 ;
then (F
/. l)
= (F
.
0 ) by
A2,
PARTFUN1:def 6
.= i by
COMPOS_1: 58;
then (
NIC ((F
/. l),l))
=
{(
0
+ 1)} by
A3,
AMISTD_1: 12;
hence (
NIC ((F
/. l),l))
c= (
dom F) by
A1,
ZFMISC_1: 7;
end;
suppose
A4: l
= 1;
then (F
/. l)
= (F
. 1) by
A2,
PARTFUN1:def 6
.= (
halt
SCM+FSA ) by
COMPOS_1: 59;
then (
NIC ((F
/. l),l))
=
{1} by
A4,
AMISTD_1: 2;
hence (
NIC ((F
/. l),l))
c= (
dom F) by
A1,
ZFMISC_1: 7;
end;
end;
end
registration
let i be
sequential
Instruction of
SCM+FSA , J be
parahalting
really-closed
Program of
SCM+FSA ;
cluster (i
";" J) ->
parahalting
really-closed;
coherence ;
end
registration
let I be
parahalting
really-closed
Program of
SCM+FSA , j be
sequential
Instruction of
SCM+FSA ;
cluster (I
";" j) ->
parahalting
really-closed;
coherence ;
end
registration
let i,j be
sequential
Instruction of
SCM+FSA ;
cluster (i
";" j) ->
parahalting
really-closed;
coherence ;
end
registration
let i be
keeping_0
sequential
Instruction of
SCM+FSA , J be
keeping_0
really-closed
Program of
SCM+FSA ;
cluster (i
";" J) ->
keeping_0;
coherence ;
end
registration
let I be
keeping_0
really-closed
Program of
SCM+FSA , j be
keeping_0
sequential
Instruction of
SCM+FSA ;
cluster (I
";" j) ->
keeping_0;
coherence ;
end
registration
let i,j be
keeping_0
sequential
Instruction of
SCM+FSA ;
cluster (i
";" j) ->
keeping_0;
coherence ;
end
begin
::$Canceled
theorem ::
SCMFSA6C:4
Th3: (
DataPart s1)
= (
DataPart s2) implies (
DataPart (
Exec (i,s1)))
= (
DataPart (
Exec (i,s2)))
proof
assume
A1: (
DataPart s1)
= (
DataPart s2);
set l = i;
A2: (
dom (
Exec (l,s1)))
= the
carrier of
SCM+FSA by
PARTFUN1:def 2;
then
A3: (
dom (
Exec (l,s1)))
= (
dom (
Exec (l,s2))) by
PARTFUN1:def 2;
A4: (
dom ((
Exec (l,s1))
| (
Data-Locations
SCM+FSA )))
= (
Data-Locations
SCM+FSA ) by
A2,
RELAT_1: 62;
A5: (
dom (
Exec (l,s2)))
= the
carrier of
SCM+FSA by
PARTFUN1:def 2;
then
A6: (
dom ((
Exec (l,s2))
| (
Data-Locations
SCM+FSA )))
= (
Data-Locations
SCM+FSA ) by
RELAT_1: 62;
(
InsCode i)
=
0 or ... or (
InsCode i)
= 12 by
NAT_1: 60,
SCMFSA_2: 16;
per cases ;
suppose (
InsCode i)
=
0 ;
then
A7: i
= (
halt
SCM+FSA ) by
SCMFSA_2: 95;
then (
Exec (i,s1))
= s1 by
EXTPRO_1:def 3;
hence thesis by
A1,
A7,
EXTPRO_1:def 3;
end;
suppose (
InsCode i)
= 1;
then
consider db,da be
Int-Location such that
A8: l
= (db
:= da) by
SCMFSA_2: 30;
A9: for x be
object st x
in ((
Data-Locations
SCM+FSA )
\
{db}) holds (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
proof
let x be
object;
assume
A10: x
in ((
Data-Locations
SCM+FSA )
\
{db});
then
A11: x
in (
Data-Locations
SCM+FSA ) by
XBOOLE_0:def 5;
A12: not x
in
{db} by
A10,
XBOOLE_0:def 5;
per cases by
A11,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider a = x as
Int-Location by
AMI_2:def 16;
A13: a
<> db by
A12,
TARSKI:def 1;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= ((
Exec (l,s1))
. a) by
A10,
FUNCT_1: 49
.= (s1
. a) by
A8,
A13,
SCMFSA_2: 63
.= ((
DataPart s1)
. a) by
A11,
FUNCT_1: 49
.= (s2
. a) by
A1,
A11,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A8,
A13,
SCMFSA_2: 63
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x) by
A10,
FUNCT_1: 49;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider a = x as
FinSeq-Location by
SCMFSA_2:def 5;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= ((
Exec (l,s1))
. a) by
A10,
FUNCT_1: 49
.= (s1
. a) by
A8,
SCMFSA_2: 63
.= ((
DataPart s1)
. a) by
A11,
FUNCT_1: 49
.= (s2
. a) by
A1,
A11,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A8,
SCMFSA_2: 63
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x) by
A10,
FUNCT_1: 49;
end;
end;
A14: (
dom ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db})))
= ((
Data-Locations
SCM+FSA )
\
{db}) by
A5,
RELAT_1: 62;
(
dom ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db})))
= ((
Data-Locations
SCM+FSA )
\
{db}) by
A2,
RELAT_1: 62;
then
A15: ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
= ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db})) by
A14,
A9,
FUNCT_1: 2;
db
in
Int-Locations by
AMI_2:def 16;
then db
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A16: (
Data-Locations
SCM+FSA )
= ((
Data-Locations
SCM+FSA )
\/
{db}) by
ZFMISC_1: 40
.= (((
Data-Locations
SCM+FSA )
\
{db})
\/
{db}) by
XBOOLE_1: 39;
A17: ((
Exec (l,s2))
. db)
= (s2
. da) by
A8,
SCMFSA_2: 63;
A18: ((
Exec (l,s1))
. db)
= (s1
. da) by
A8,
SCMFSA_2: 63;
da
in
Int-Locations by
AMI_2:def 16;
then
A19: da
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then (s1
. da)
= ((
DataPart s1)
. da) by
FUNCT_1: 49
.= (s2
. da) by
A1,
A19,
FUNCT_1: 49;
then ((
Exec (l,s1))
|
{db})
= ((
Exec (l,s2))
|
{db}) by
A3,
A18,
A17,
GRFUNC_1: 29;
hence thesis by
A16,
A15,
RELAT_1: 150;
end;
suppose (
InsCode i)
= 2;
then
consider db,da be
Int-Location such that
A20: l
= (
AddTo (db,da)) by
SCMFSA_2: 31;
A21: for x be
object st x
in ((
Data-Locations
SCM+FSA )
\
{db}) holds (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
proof
let x be
object;
assume
A22: x
in ((
Data-Locations
SCM+FSA )
\
{db});
then
A23: x
in (
Data-Locations
SCM+FSA ) by
XBOOLE_0:def 5;
A24: not x
in
{db} by
A22,
XBOOLE_0:def 5;
per cases by
A23,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider a = x as
Int-Location by
AMI_2:def 16;
A25: a
<> db by
A24,
TARSKI:def 1;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= ((
Exec (l,s1))
. a) by
A22,
FUNCT_1: 49
.= (s1
. a) by
A20,
A25,
SCMFSA_2: 64
.= ((
DataPart s1)
. a) by
A23,
FUNCT_1: 49
.= (s2
. a) by
A1,
A23,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A20,
A25,
SCMFSA_2: 64
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x) by
A22,
FUNCT_1: 49;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider a = x as
FinSeq-Location by
SCMFSA_2:def 5;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= ((
Exec (l,s1))
. a) by
A22,
FUNCT_1: 49
.= (s1
. a) by
A20,
SCMFSA_2: 64
.= ((
DataPart s1)
. a) by
A23,
FUNCT_1: 49
.= (s2
. a) by
A1,
A23,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A20,
SCMFSA_2: 64
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x) by
A22,
FUNCT_1: 49;
end;
end;
A26: (
dom ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db})))
= ((
Data-Locations
SCM+FSA )
\
{db}) by
A5,
RELAT_1: 62;
(
dom ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db})))
= ((
Data-Locations
SCM+FSA )
\
{db}) by
A2,
RELAT_1: 62;
then
A27: ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
= ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db})) by
A26,
A21,
FUNCT_1: 2;
db
in
Int-Locations by
AMI_2:def 16;
then db
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A28: (
Data-Locations
SCM+FSA )
= ((
Data-Locations
SCM+FSA )
\/
{db}) by
ZFMISC_1: 40
.= (((
Data-Locations
SCM+FSA )
\
{db})
\/
{db}) by
XBOOLE_1: 39;
A29: ((
Exec (l,s2))
. db)
= ((s2
. db)
+ (s2
. da)) by
A20,
SCMFSA_2: 64;
A30: ((
Exec (l,s1))
. db)
= ((s1
. db)
+ (s1
. da)) by
A20,
SCMFSA_2: 64;
db
in
Int-Locations by
AMI_2:def 16;
then
A31: db
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A32: (s1
. db)
= ((
DataPart s1)
. db) by
FUNCT_1: 49
.= (s2
. db) by
A1,
A31,
FUNCT_1: 49;
da
in
Int-Locations by
AMI_2:def 16;
then
A33: da
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then (s1
. da)
= ((
DataPart s1)
. da) by
FUNCT_1: 49
.= (s2
. da) by
A1,
A33,
FUNCT_1: 49;
then ((
Exec (l,s1))
|
{db})
= ((
Exec (l,s2))
|
{db}) by
A3,
A30,
A29,
A32,
GRFUNC_1: 29;
hence thesis by
A28,
A27,
RELAT_1: 150;
end;
suppose (
InsCode i)
= 3;
then
consider db,da be
Int-Location such that
A34: l
= (
SubFrom (db,da)) by
SCMFSA_2: 32;
A35: for x be
object st x
in ((
Data-Locations
SCM+FSA )
\
{db}) holds (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
proof
let x be
object;
assume
A36: x
in ((
Data-Locations
SCM+FSA )
\
{db});
then
A37: x
in (
Data-Locations
SCM+FSA ) by
XBOOLE_0:def 5;
A38: not x
in
{db} by
A36,
XBOOLE_0:def 5;
per cases by
A37,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider a = x as
Int-Location by
AMI_2:def 16;
A39: a
<> db by
A38,
TARSKI:def 1;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= ((
Exec (l,s1))
. a) by
A36,
FUNCT_1: 49
.= (s1
. a) by
A34,
A39,
SCMFSA_2: 65
.= ((
DataPart s1)
. a) by
A37,
FUNCT_1: 49
.= (s2
. a) by
A1,
A37,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A34,
A39,
SCMFSA_2: 65
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x) by
A36,
FUNCT_1: 49;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider a = x as
FinSeq-Location by
SCMFSA_2:def 5;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= ((
Exec (l,s1))
. a) by
A36,
FUNCT_1: 49
.= (s1
. a) by
A34,
SCMFSA_2: 65
.= ((
DataPart s1)
. a) by
A37,
FUNCT_1: 49
.= (s2
. a) by
A1,
A37,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A34,
SCMFSA_2: 65
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x) by
A36,
FUNCT_1: 49;
end;
end;
A40: (
dom ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db})))
= ((
Data-Locations
SCM+FSA )
\
{db}) by
A5,
RELAT_1: 62;
(
dom ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db})))
= ((
Data-Locations
SCM+FSA )
\
{db}) by
A2,
RELAT_1: 62;
then
A41: ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
= ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db})) by
A40,
A35,
FUNCT_1: 2;
db
in
Int-Locations by
AMI_2:def 16;
then db
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A42: (
Data-Locations
SCM+FSA )
= ((
Data-Locations
SCM+FSA )
\/
{db}) by
ZFMISC_1: 40
.= (((
Data-Locations
SCM+FSA )
\
{db})
\/
{db}) by
XBOOLE_1: 39;
A43: ((
Exec (l,s2))
. db)
= ((s2
. db)
- (s2
. da)) by
A34,
SCMFSA_2: 65;
A44: ((
Exec (l,s1))
. db)
= ((s1
. db)
- (s1
. da)) by
A34,
SCMFSA_2: 65;
db
in
Int-Locations by
AMI_2:def 16;
then
A45: db
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A46: (s1
. db)
= ((
DataPart s1)
. db) by
FUNCT_1: 49
.= (s2
. db) by
A1,
A45,
FUNCT_1: 49;
da
in
Int-Locations by
AMI_2:def 16;
then
A47: da
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then (s1
. da)
= ((
DataPart s1)
. da) by
FUNCT_1: 49
.= (s2
. da) by
A1,
A47,
FUNCT_1: 49;
then ((
Exec (l,s1))
|
{db})
= ((
Exec (l,s2))
|
{db}) by
A3,
A44,
A43,
A46,
GRFUNC_1: 29;
hence thesis by
A42,
A41,
RELAT_1: 150;
end;
suppose (
InsCode i)
= 4;
then
consider db,da be
Int-Location such that
A48: l
= (
MultBy (db,da)) by
SCMFSA_2: 33;
A49: for x be
object st x
in ((
Data-Locations
SCM+FSA )
\
{db}) holds (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
proof
let x be
object;
assume
A50: x
in ((
Data-Locations
SCM+FSA )
\
{db});
then
A51: x
in (
Data-Locations
SCM+FSA ) by
XBOOLE_0:def 5;
A52: not x
in
{db} by
A50,
XBOOLE_0:def 5;
per cases by
A51,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider a = x as
Int-Location by
AMI_2:def 16;
A53: a
<> db by
A52,
TARSKI:def 1;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= ((
Exec (l,s1))
. a) by
A50,
FUNCT_1: 49
.= (s1
. a) by
A48,
A53,
SCMFSA_2: 66
.= ((
DataPart s1)
. a) by
A51,
FUNCT_1: 49
.= (s2
. a) by
A1,
A51,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A48,
A53,
SCMFSA_2: 66
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x) by
A50,
FUNCT_1: 49;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider a = x as
FinSeq-Location by
SCMFSA_2:def 5;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= ((
Exec (l,s1))
. a) by
A50,
FUNCT_1: 49
.= (s1
. a) by
A48,
SCMFSA_2: 66
.= ((
DataPart s1)
. a) by
A51,
FUNCT_1: 49
.= (s2
. a) by
A1,
A51,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A48,
SCMFSA_2: 66
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x) by
A50,
FUNCT_1: 49;
end;
end;
A54: (
dom ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db})))
= ((
Data-Locations
SCM+FSA )
\
{db}) by
A5,
RELAT_1: 62;
(
dom ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db})))
= ((
Data-Locations
SCM+FSA )
\
{db}) by
A2,
RELAT_1: 62;
then
A55: ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
= ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db})) by
A54,
A49,
FUNCT_1: 2;
db
in
Int-Locations by
AMI_2:def 16;
then db
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A56: (
Data-Locations
SCM+FSA )
= ((
Data-Locations
SCM+FSA )
\/
{db}) by
ZFMISC_1: 40
.= (((
Data-Locations
SCM+FSA )
\
{db})
\/
{db}) by
XBOOLE_1: 39;
A57: ((
Exec (l,s2))
. db)
= ((s2
. db)
* (s2
. da)) by
A48,
SCMFSA_2: 66;
A58: ((
Exec (l,s1))
. db)
= ((s1
. db)
* (s1
. da)) by
A48,
SCMFSA_2: 66;
db
in
Int-Locations by
AMI_2:def 16;
then
A59: db
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A60: (s1
. db)
= ((
DataPart s1)
. db) by
FUNCT_1: 49
.= (s2
. db) by
A1,
A59,
FUNCT_1: 49;
da
in
Int-Locations by
AMI_2:def 16;
then
A61: da
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then (s1
. da)
= ((
DataPart s1)
. da) by
FUNCT_1: 49
.= (s2
. da) by
A1,
A61,
FUNCT_1: 49;
then ((
Exec (l,s1))
|
{db})
= ((
Exec (l,s2))
|
{db}) by
A3,
A58,
A57,
A60,
GRFUNC_1: 29;
hence thesis by
A56,
A55,
RELAT_1: 150;
end;
suppose (
InsCode i)
= 5;
then
consider db,da be
Int-Location such that
A62: l
= (
Divide (db,da)) by
SCMFSA_2: 34;
hereby
per cases ;
suppose
A63: da
<> db;
A64: for x be
object st x
in ((
Data-Locations
SCM+FSA )
\
{db, da}) holds (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db, da}))
. x)
= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db, da}))
. x)
proof
let x be
object;
assume
A65: x
in ((
Data-Locations
SCM+FSA )
\
{db, da});
then
A66: x
in (
Data-Locations
SCM+FSA ) by
XBOOLE_0:def 5;
A67: not x
in
{db, da} by
A65,
XBOOLE_0:def 5;
per cases by
A66,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider a = x as
Int-Location by
AMI_2:def 16;
A68: a
<> da by
A67,
TARSKI:def 2;
A69: a
<> db by
A67,
TARSKI:def 2;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db, da}))
. x)
= ((
Exec (l,s1))
. a) by
A65,
FUNCT_1: 49
.= (s1
. a) by
A62,
A68,
A69,
SCMFSA_2: 67
.= ((
DataPart s1)
. a) by
A66,
FUNCT_1: 49
.= (s2
. a) by
A1,
A66,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A62,
A68,
A69,
SCMFSA_2: 67
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db, da}))
. x) by
A65,
FUNCT_1: 49;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider a = x as
FinSeq-Location by
SCMFSA_2:def 5;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db, da}))
. x)
= ((
Exec (l,s1))
. a) by
A65,
FUNCT_1: 49
.= (s1
. a) by
A62,
SCMFSA_2: 67
.= ((
DataPart s1)
. a) by
A66,
FUNCT_1: 49
.= (s2
. a) by
A1,
A66,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A62,
SCMFSA_2: 67
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db, da}))
. x) by
A65,
FUNCT_1: 49;
end;
end;
A70: (
dom ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db, da})))
= ((
Data-Locations
SCM+FSA )
\
{db, da}) by
A5,
RELAT_1: 62;
(
dom ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db, da})))
= ((
Data-Locations
SCM+FSA )
\
{db, da}) by
A2,
RELAT_1: 62;
then
A71: ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db, da}))
= ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db, da})) by
A70,
A64,
FUNCT_1: 2;
A72: ((
Exec (l,s2))
. da)
= ((s2
. db)
mod (s2
. da)) by
A62,
SCMFSA_2: 67;
db
in
Int-Locations by
AMI_2:def 16;
then
A73: db
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A74: (s1
. db)
= ((
DataPart s1)
. db) by
FUNCT_1: 49
.= (s2
. db) by
A1,
A73,
FUNCT_1: 49;
da
in
Int-Locations by
AMI_2:def 16;
then
A75: da
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
db
in
Int-Locations by
AMI_2:def 16;
then db
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A76: (
Data-Locations
SCM+FSA )
= ((
Data-Locations
SCM+FSA )
\/
{db, da}) by
A75,
ZFMISC_1: 42
.= (((
Data-Locations
SCM+FSA )
\
{db, da})
\/
{db, da}) by
XBOOLE_1: 39;
A77: ((
Exec (l,s1))
. da)
= ((s1
. db)
mod (s1
. da)) by
A62,
SCMFSA_2: 67;
A78: ((
Exec (l,s2))
. db)
= ((s2
. db)
div (s2
. da)) by
A62,
A63,
SCMFSA_2: 67;
A79: ((
Exec (l,s1))
. db)
= ((s1
. db)
div (s1
. da)) by
A62,
A63,
SCMFSA_2: 67;
da
in
Int-Locations by
AMI_2:def 16;
then
A80: da
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then (s1
. da)
= ((
DataPart s1)
. da) by
FUNCT_1: 49
.= (s2
. da) by
A1,
A80,
FUNCT_1: 49;
then ((
Exec (l,s1))
|
{db, da})
= ((
Exec (l,s2))
|
{db, da}) by
A3,
A79,
A77,
A78,
A72,
A74,
GRFUNC_1: 30;
hence thesis by
A76,
A71,
RELAT_1: 150;
end;
suppose
A81: da
= db;
A82: for x be
object st x
in ((
Data-Locations
SCM+FSA )
\
{db}) holds (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
proof
let x be
object;
assume
A83: x
in ((
Data-Locations
SCM+FSA )
\
{db});
then
A84: x
in (
Data-Locations
SCM+FSA ) by
XBOOLE_0:def 5;
A85: not x
in
{db} by
A83,
XBOOLE_0:def 5;
per cases by
A84,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider a = x as
Int-Location by
AMI_2:def 16;
A86: a
<> db by
A85,
TARSKI:def 1;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= ((
Exec (l,s1))
. a) by
A83,
FUNCT_1: 49
.= (s1
. a) by
A62,
A81,
A86,
SCMFSA_2: 68
.= ((
DataPart s1)
. a) by
A84,
FUNCT_1: 49
.= (s2
. a) by
A1,
A84,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A62,
A81,
A86,
SCMFSA_2: 68
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x) by
A83,
FUNCT_1: 49;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider a = x as
FinSeq-Location by
SCMFSA_2:def 5;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= ((
Exec (l,s1))
. a) by
A83,
FUNCT_1: 49
.= (s1
. a) by
A62,
A81,
SCMFSA_2: 68
.= ((s1
| (
Data-Locations
SCM+FSA ))
. a) by
A84,
FUNCT_1: 49
.= (s2
. a) by
A1,
A84,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A62,
A81,
SCMFSA_2: 68
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x) by
A83,
FUNCT_1: 49;
end;
end;
A87: (
dom ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db})))
= ((
Data-Locations
SCM+FSA )
\
{db}) by
A5,
RELAT_1: 62;
(
dom ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db})))
= ((
Data-Locations
SCM+FSA )
\
{db}) by
A2,
RELAT_1: 62;
then
A88: ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
= ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db})) by
A87,
A82,
FUNCT_1: 2;
db
in
Int-Locations by
AMI_2:def 16;
then db
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A89: (
Data-Locations
SCM+FSA )
= ((
Data-Locations
SCM+FSA )
\/
{db}) by
ZFMISC_1: 40
.= (((
Data-Locations
SCM+FSA )
\
{db})
\/
{db}) by
XBOOLE_1: 39;
A90: ((
Exec (l,s2))
. db)
= ((s2
. db)
mod (s2
. da)) by
A62,
A81,
SCMFSA_2: 68;
A91: ((
Exec (l,s1))
. db)
= ((s1
. db)
mod (s1
. da)) by
A62,
A81,
SCMFSA_2: 68;
db
in
Int-Locations by
AMI_2:def 16;
then
A92: db
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A93: (s1
. db)
= ((
DataPart s1)
. db) by
FUNCT_1: 49
.= (s2
. db) by
A1,
A92,
FUNCT_1: 49;
da
in
Int-Locations by
AMI_2:def 16;
then
A94: da
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then (s1
. da)
= ((
DataPart s1)
. da) by
FUNCT_1: 49
.= (s2
. da) by
A1,
A94,
FUNCT_1: 49;
then ((
Exec (l,s1))
|
{db})
= ((
Exec (l,s2))
|
{db}) by
A3,
A91,
A90,
A93,
GRFUNC_1: 29;
hence thesis by
A89,
A88,
RELAT_1: 150;
end;
end;
end;
suppose (
InsCode i)
= 6;
then
A95: ex l1 st i
= (
goto l1) by
SCMFSA_2: 35;
for x be
object st x
in (
Data-Locations
SCM+FSA ) holds ((
DataPart (
Exec (l,s1)))
. x)
= ((
DataPart (
Exec (l,s2)))
. x)
proof
let x be
object;
assume
A96: x
in (
Data-Locations
SCM+FSA );
per cases by
A96,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider a = x as
Int-Location by
AMI_2:def 16;
thus ((
DataPart (
Exec (l,s1)))
. x)
= ((
Exec (l,s1))
. a) by
A96,
FUNCT_1: 49
.= (s1
. a) by
A95,
SCMFSA_2: 69
.= ((
DataPart s1)
. a) by
A96,
FUNCT_1: 49
.= (s2
. a) by
A1,
A96,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A95,
SCMFSA_2: 69
.= ((
DataPart (
Exec (l,s2)))
. x) by
A96,
FUNCT_1: 49;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider a = x as
FinSeq-Location by
SCMFSA_2:def 5;
thus ((
DataPart (
Exec (l,s1)))
. x)
= ((
Exec (l,s1))
. a) by
A96,
FUNCT_1: 49
.= (s1
. a) by
A95,
SCMFSA_2: 69
.= ((
DataPart s1)
. a) by
A96,
FUNCT_1: 49
.= (s2
. a) by
A1,
A96,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A95,
SCMFSA_2: 69
.= ((
DataPart (
Exec (l,s2)))
. x) by
A96,
FUNCT_1: 49;
end;
end;
hence thesis by
A4,
A6,
FUNCT_1: 2;
end;
suppose (
InsCode i)
= 7;
then
A97: ex l1, a st i
= (a
=0_goto l1) by
SCMFSA_2: 36;
for x be
object st x
in (
Data-Locations
SCM+FSA ) holds ((
DataPart (
Exec (l,s1)))
. x)
= ((
DataPart (
Exec (l,s2)))
. x)
proof
let x be
object;
assume
A98: x
in (
Data-Locations
SCM+FSA );
per cases by
A98,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider a = x as
Int-Location by
AMI_2:def 16;
thus ((
DataPart (
Exec (l,s1)))
. x)
= ((
Exec (l,s1))
. a) by
A98,
FUNCT_1: 49
.= (s1
. a) by
A97,
SCMFSA_2: 70
.= ((
DataPart s1)
. a) by
A98,
FUNCT_1: 49
.= (s2
. a) by
A1,
A98,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A97,
SCMFSA_2: 70
.= ((
DataPart (
Exec (l,s2)))
. x) by
A98,
FUNCT_1: 49;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider a = x as
FinSeq-Location by
SCMFSA_2:def 5;
thus ((
DataPart (
Exec (l,s1)))
. x)
= ((
Exec (l,s1))
. a) by
A98,
FUNCT_1: 49
.= (s1
. a) by
A97,
SCMFSA_2: 70
.= ((
DataPart s1)
. a) by
A98,
FUNCT_1: 49
.= (s2
. a) by
A1,
A98,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A97,
SCMFSA_2: 70
.= ((
DataPart (
Exec (l,s2)))
. x) by
A98,
FUNCT_1: 49;
end;
end;
hence thesis by
A4,
A6,
FUNCT_1: 2;
end;
suppose (
InsCode i)
= 8;
then
A99: ex l1, a st i
= (a
>0_goto l1) by
SCMFSA_2: 37;
for x be
object st x
in (
Data-Locations
SCM+FSA ) holds ((
DataPart (
Exec (l,s1)))
. x)
= ((
DataPart (
Exec (l,s2)))
. x)
proof
let x be
object;
assume
A100: x
in (
Data-Locations
SCM+FSA );
per cases by
A100,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider a = x as
Int-Location by
AMI_2:def 16;
thus ((
DataPart (
Exec (l,s1)))
. x)
= ((
Exec (l,s1))
. a) by
A100,
FUNCT_1: 49
.= (s1
. a) by
A99,
SCMFSA_2: 71
.= ((
DataPart s1)
. a) by
A100,
FUNCT_1: 49
.= (s2
. a) by
A1,
A100,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A99,
SCMFSA_2: 71
.= ((
DataPart (
Exec (l,s2)))
. x) by
A100,
FUNCT_1: 49;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider a = x as
FinSeq-Location by
SCMFSA_2:def 5;
thus ((
DataPart (
Exec (l,s1)))
. x)
= ((
Exec (l,s1))
. a) by
A100,
FUNCT_1: 49
.= (s1
. a) by
A99,
SCMFSA_2: 71
.= ((
DataPart s1)
. a) by
A100,
FUNCT_1: 49
.= (s2
. a) by
A1,
A100,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A99,
SCMFSA_2: 71
.= ((
DataPart (
Exec (l,s2)))
. x) by
A100,
FUNCT_1: 49;
end;
end;
hence thesis by
A4,
A6,
FUNCT_1: 2;
end;
suppose (
InsCode i)
= 9;
then
consider da,db be
Int-Location, fa be
FinSeq-Location such that
A101: l
= (db
:= (fa,da)) by
SCMFSA_2: 38;
A102: for x be
object st x
in ((
Data-Locations
SCM+FSA )
\
{db}) holds (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
proof
let x be
object;
assume
A103: x
in ((
Data-Locations
SCM+FSA )
\
{db});
then
A104: x
in (
Data-Locations
SCM+FSA ) by
XBOOLE_0:def 5;
A105: not x
in
{db} by
A103,
XBOOLE_0:def 5;
per cases by
A104,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider a = x as
Int-Location by
AMI_2:def 16;
A106: a
<> db by
A105,
TARSKI:def 1;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= ((
Exec (l,s1))
. a) by
A103,
FUNCT_1: 49
.= (s1
. a) by
A101,
A106,
SCMFSA_2: 72
.= ((
DataPart s1)
. a) by
A104,
FUNCT_1: 49
.= (s2
. a) by
A1,
A104,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A101,
A106,
SCMFSA_2: 72
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x) by
A103,
FUNCT_1: 49;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider a = x as
FinSeq-Location by
SCMFSA_2:def 5;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x)
= ((
Exec (l,s1))
. a) by
A103,
FUNCT_1: 49
.= (s1
. a) by
A101,
SCMFSA_2: 72
.= ((
DataPart s1)
. a) by
A104,
FUNCT_1: 49
.= (s2
. a) by
A1,
A104,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A101,
SCMFSA_2: 72
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db}))
. x) by
A103,
FUNCT_1: 49;
end;
end;
A107: (
dom ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db})))
= ((
Data-Locations
SCM+FSA )
\
{db}) by
A5,
RELAT_1: 62;
(
dom ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db})))
= ((
Data-Locations
SCM+FSA )
\
{db}) by
A2,
RELAT_1: 62;
then
A108: ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{db}))
= ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{db})) by
A107,
A102,
FUNCT_1: 2;
db
in
Int-Locations by
AMI_2:def 16;
then db
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A109: (
Data-Locations
SCM+FSA )
= ((
Data-Locations
SCM+FSA )
\/
{db}) by
ZFMISC_1: 40
.= (((
Data-Locations
SCM+FSA )
\
{db})
\/
{db}) by
XBOOLE_1: 39;
A110: ex k2 be
Nat st k2
=
|.(s2
. da).| & ((
Exec (l,s2))
. db)
= ((s2
. fa)
/. k2) by
A101,
SCMFSA_2: 72;
A111: ex k1 be
Nat st k1
=
|.(s1
. da).| & ((
Exec (l,s1))
. db)
= ((s1
. fa)
/. k1) by
A101,
SCMFSA_2: 72;
fa
in
FinSeq-Locations by
SCMFSA_2:def 5;
then
A112: fa
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A113: (s1
. fa)
= ((
DataPart s1)
. fa) by
FUNCT_1: 49
.= (s2
. fa) by
A1,
A112,
FUNCT_1: 49;
da
in
Int-Locations by
AMI_2:def 16;
then
A114: da
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then (s1
. da)
= ((
DataPart s1)
. da) by
FUNCT_1: 49
.= (s2
. da) by
A1,
A114,
FUNCT_1: 49;
then ((
Exec (l,s1))
|
{db})
= ((
Exec (l,s2))
|
{db}) by
A3,
A111,
A110,
A113,
GRFUNC_1: 29;
hence thesis by
A109,
A108,
RELAT_1: 150;
end;
suppose (
InsCode i)
= 10;
then
consider da,db be
Int-Location, fa be
FinSeq-Location such that
A115: l
= ((fa,da)
:= db) by
SCMFSA_2: 39;
A116: for x be
object st x
in ((
Data-Locations
SCM+FSA )
\
{fa}) holds (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
. x)
= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
. x)
proof
let x be
object;
assume
A117: x
in ((
Data-Locations
SCM+FSA )
\
{fa});
then
A118: x
in (
Data-Locations
SCM+FSA ) by
XBOOLE_0:def 5;
A119: not x
in
{fa} by
A117,
XBOOLE_0:def 5;
per cases by
A118,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider a = x as
Int-Location by
AMI_2:def 16;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
. x)
= ((
Exec (l,s1))
. a) by
A117,
FUNCT_1: 49
.= (s1
. a) by
A115,
SCMFSA_2: 73
.= ((
DataPart s1)
. a) by
A118,
FUNCT_1: 49
.= (s2
. a) by
A1,
A118,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A115,
SCMFSA_2: 73
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
. x) by
A117,
FUNCT_1: 49;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider a = x as
FinSeq-Location by
SCMFSA_2:def 5;
A120: a
<> fa by
A119,
TARSKI:def 1;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
. x)
= ((
Exec (l,s1))
. a) by
A117,
FUNCT_1: 49
.= (s1
. a) by
A115,
A120,
SCMFSA_2: 73
.= ((
DataPart s1)
. a) by
A118,
FUNCT_1: 49
.= (s2
. a) by
A1,
A118,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A115,
A120,
SCMFSA_2: 73
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
. x) by
A117,
FUNCT_1: 49;
end;
end;
A121: (
dom ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{fa})))
= ((
Data-Locations
SCM+FSA )
\
{fa}) by
A5,
RELAT_1: 62;
(
dom ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{fa})))
= ((
Data-Locations
SCM+FSA )
\
{fa}) by
A2,
RELAT_1: 62;
then
A122: ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
= ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{fa})) by
A121,
A116,
FUNCT_1: 2;
fa
in
FinSeq-Locations by
SCMFSA_2:def 5;
then fa
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A123: (
Data-Locations
SCM+FSA )
= ((
Data-Locations
SCM+FSA )
\/
{fa}) by
ZFMISC_1: 40
.= (((
Data-Locations
SCM+FSA )
\
{fa})
\/
{fa}) by
XBOOLE_1: 39;
fa
in
FinSeq-Locations by
SCMFSA_2:def 5;
then
A124: fa
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A125: (s1
. fa)
= ((
DataPart s1)
. fa) by
FUNCT_1: 49
.= (s2
. fa) by
A1,
A124,
FUNCT_1: 49;
db
in
Int-Locations by
AMI_2:def 16;
then
A126: db
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A127: (s1
. db)
= ((
DataPart s1)
. db) by
FUNCT_1: 49
.= (s2
. db) by
A1,
A126,
FUNCT_1: 49;
A128: ex k2 be
Nat st k2
=
|.(s2
. da).| & ((
Exec (l,s2))
. fa)
= ((s2
. fa)
+* (k2,(s2
. db))) by
A115,
SCMFSA_2: 73;
A129: ex k1 be
Nat st k1
=
|.(s1
. da).| & ((
Exec (l,s1))
. fa)
= ((s1
. fa)
+* (k1,(s1
. db))) by
A115,
SCMFSA_2: 73;
da
in
Int-Locations by
AMI_2:def 16;
then
A130: da
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then (s1
. da)
= ((
DataPart s1)
. da) by
FUNCT_1: 49
.= (s2
. da) by
A1,
A130,
FUNCT_1: 49;
then ((
Exec (l,s1))
|
{fa})
= ((
Exec (l,s2))
|
{fa}) by
A3,
A129,
A128,
A127,
A125,
GRFUNC_1: 29;
hence thesis by
A123,
A122,
RELAT_1: 150;
end;
suppose (
InsCode i)
= 11;
then
consider da be
Int-Location, fa be
FinSeq-Location such that
A131: l
= (da
:=len fa) by
SCMFSA_2: 40;
A132: for x be
object st x
in ((
Data-Locations
SCM+FSA )
\
{da}) holds (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{da}))
. x)
= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{da}))
. x)
proof
let x be
object;
assume
A133: x
in ((
Data-Locations
SCM+FSA )
\
{da});
then
A134: x
in (
Data-Locations
SCM+FSA ) by
XBOOLE_0:def 5;
A135: not x
in
{da} by
A133,
XBOOLE_0:def 5;
per cases by
A134,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider a = x as
Int-Location by
AMI_2:def 16;
A136: a
<> da by
A135,
TARSKI:def 1;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{da}))
. x)
= ((
Exec (l,s1))
. a) by
A133,
FUNCT_1: 49
.= (s1
. a) by
A131,
A136,
SCMFSA_2: 74
.= ((
DataPart s1)
. a) by
A134,
FUNCT_1: 49
.= (s2
. a) by
A1,
A134,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A131,
A136,
SCMFSA_2: 74
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{da}))
. x) by
A133,
FUNCT_1: 49;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider a = x as
FinSeq-Location by
SCMFSA_2:def 5;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{da}))
. x)
= ((
Exec (l,s1))
. a) by
A133,
FUNCT_1: 49
.= (s1
. a) by
A131,
SCMFSA_2: 74
.= ((
DataPart s1)
. a) by
A134,
FUNCT_1: 49
.= (s2
. a) by
A1,
A134,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A131,
SCMFSA_2: 74
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{da}))
. x) by
A133,
FUNCT_1: 49;
end;
end;
da
in
Int-Locations by
AMI_2:def 16;
then da
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A137: (
Data-Locations
SCM+FSA )
= ((
Data-Locations
SCM+FSA )
\/
{da}) by
ZFMISC_1: 40
.= (((
Data-Locations
SCM+FSA )
\
{da})
\/
{da}) by
XBOOLE_1: 39;
fa
in
FinSeq-Locations by
SCMFSA_2:def 5;
then
A138: fa
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then (s1
. fa)
= ((s1
| (
Data-Locations
SCM+FSA ))
. fa) by
FUNCT_1: 49
.= (s2
. fa) by
A1,
A138,
FUNCT_1: 49;
then ((
Exec (l,s1))
. da)
= (
len (s2
. fa)) by
A131,
SCMFSA_2: 74
.= ((
Exec (l,s2))
. da) by
A131,
SCMFSA_2: 74;
then
A139: ((
Exec (l,s1))
|
{da})
= ((
Exec (l,s2))
|
{da}) by
A2,
A5,
GRFUNC_1: 29;
A140: (
dom ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{da})))
= ((
Data-Locations
SCM+FSA )
\
{da}) by
A5,
RELAT_1: 62;
(
dom ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{da})))
= ((
Data-Locations
SCM+FSA )
\
{da}) by
A2,
RELAT_1: 62;
then ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{da}))
= ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{da})) by
A140,
A132,
FUNCT_1: 2;
hence thesis by
A137,
A139,
RELAT_1: 150;
end;
suppose (
InsCode i)
= 12;
then
consider da be
Int-Location, fa be
FinSeq-Location such that
A141: i
= (fa
:=<0,...,0> da) by
SCMFSA_2: 41;
set l = i;
A142: (
dom ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{fa})))
= ((
Data-Locations
SCM+FSA )
\
{fa}) by
A5,
RELAT_1: 62;
A143: ex k2 be
Nat st k2
=
|.(s2
. da).| & ((
Exec (l,s2))
. fa)
= (k2
|->
0 ) by
A141,
SCMFSA_2: 75;
A144: ex k1 be
Nat st k1
=
|.(s1
. da).| & ((
Exec (l,s1))
. fa)
= (k1
|->
0 ) by
A141,
SCMFSA_2: 75;
A145: for x be
object st x
in ((
Data-Locations
SCM+FSA )
\
{fa}) holds (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
. x)
= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
. x)
proof
let x be
object;
assume
A146: x
in ((
Data-Locations
SCM+FSA )
\
{fa});
then
A147: x
in (
Data-Locations
SCM+FSA ) by
XBOOLE_0:def 5;
A148: not x
in
{fa} by
A146,
XBOOLE_0:def 5;
per cases by
A147,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider a = x as
Int-Location by
AMI_2:def 16;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
. x)
= ((
Exec (l,s1))
. a) by
A146,
FUNCT_1: 49
.= (s1
. a) by
A141,
SCMFSA_2: 75
.= ((
DataPart s1)
. a) by
A147,
FUNCT_1: 49
.= (s2
. a) by
A1,
A147,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A141,
SCMFSA_2: 75
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
. x) by
A146,
FUNCT_1: 49;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider a = x as
FinSeq-Location by
SCMFSA_2:def 5;
A149: a
<> fa by
A148,
TARSKI:def 1;
thus (((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
. x)
= ((
Exec (l,s1))
. a) by
A146,
FUNCT_1: 49
.= (s1
. a) by
A141,
A149,
SCMFSA_2: 75
.= ((
DataPart s1)
. a) by
A147,
FUNCT_1: 49
.= (s2
. a) by
A1,
A147,
FUNCT_1: 49
.= ((
Exec (l,s2))
. a) by
A141,
A149,
SCMFSA_2: 75
.= (((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
. x) by
A146,
FUNCT_1: 49;
end;
end;
(
dom ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{fa})))
= ((
Data-Locations
SCM+FSA )
\
{fa}) by
A2,
RELAT_1: 62;
then
A150: ((
Exec (l,s1))
| ((
Data-Locations
SCM+FSA )
\
{fa}))
= ((
Exec (l,s2))
| ((
Data-Locations
SCM+FSA )
\
{fa})) by
A142,
A145,
FUNCT_1: 2;
fa
in
FinSeq-Locations by
SCMFSA_2:def 5;
then fa
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then
A151: (
Data-Locations
SCM+FSA )
= ((
Data-Locations
SCM+FSA )
\/
{fa}) by
ZFMISC_1: 40
.= (((
Data-Locations
SCM+FSA )
\
{fa})
\/
{fa}) by
XBOOLE_1: 39;
da
in
Int-Locations by
AMI_2:def 16;
then
A152: da
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
then (s1
. da)
= ((
DataPart s1)
. da) by
FUNCT_1: 49
.= (s2
. da) by
A1,
A152,
FUNCT_1: 49;
then ((
Exec (l,s1))
|
{fa})
= ((
Exec (l,s2))
|
{fa}) by
A3,
A144,
A143,
GRFUNC_1: 29;
hence thesis by
A151,
A150,
RELAT_1: 150;
end;
end;
Lm2:
now
set IF = (
Data-Locations
SCM+FSA );
let I be
keeping_0
parahalting
Program of
SCM+FSA , s be
State of
SCM+FSA ;
let P be
Instruction-Sequence of
SCM+FSA ;
set IE = (
IExec (I,P,s));
now
A1: (
dom (
Initialized IE))
= the
carrier of
SCM+FSA by
PARTFUN1:def 2;
A2: the
carrier of
SCM+FSA
= (
{(
IC
SCM+FSA )}
\/ (
Data-Locations
SCM+FSA )) by
STRUCT_0: 4;
A3: (
dom IE)
= the
carrier of
SCM+FSA by
PARTFUN1:def 2;
hence (
dom (
DataPart (
Initialized IE)))
= ((
dom IE)
/\ IF) by
A1,
RELAT_1: 61;
then
A4: (
dom (
DataPart (
Initialized IE)))
= (
Data-Locations
SCM+FSA ) by
A3,
A2,
XBOOLE_1: 21;
let x be
object;
assume
A5: x
in (
dom (
DataPart (
Initialized IE)));
per cases by
A5,
A4,
SCMFSA_2: 100,
XBOOLE_0:def 3;
suppose x
in
Int-Locations ;
then
reconsider x9 = x as
Int-Location by
AMI_2:def 16;
per cases ;
suppose
A6: x9 is
read-write;
thus ((
DataPart (
Initialized IE))
. x)
= ((
Initialized IE)
. x) by
A5,
A4,
FUNCT_1: 49
.= (IE
. x) by
A6,
SCMFSA_M: 37;
end;
suppose x9 is
read-only;
then
A7: x9
= (
intloc
0 );
thus ((
DataPart (
Initialized IE))
. x)
= ((
Initialized IE)
. x9) by
A5,
A4,
FUNCT_1: 49
.= 1 by
A7,
SCMFSA_M: 9
.= (IE
. x) by
A7,
SCMFSA6B: 11;
end;
end;
suppose x
in
FinSeq-Locations ;
then
reconsider x9 = x as
FinSeq-Location by
SCMFSA_2:def 5;
thus ((
DataPart (
Initialized IE))
. x)
= ((
Initialized IE)
. x9) by
A5,
A4,
FUNCT_1: 49
.= (IE
. x) by
SCMFSA_M: 37;
end;
end;
hence (
DataPart (
Initialized IE))
= (
DataPart IE) by
FUNCT_1: 46;
end;
theorem ::
SCMFSA6C:5
Th4: for i be
sequential
Instruction of
SCM+FSA holds (
Exec (i,(
Initialized s)))
= (
IExec ((
Macro i),P,s))
proof
let i be
sequential
Instruction of
SCM+FSA ;
set Mi = (
Macro i);
set sI = (s
+* (
Initialize ((
intloc
0 )
.--> 1))), pI = (P
+* Mi);
A1: Mi
c= pI by
FUNCT_4: 25;
set Is = (
Initialized s);
set IC1 = (
IC (
Comput ((P
+* Mi),sI,1)));
reconsider Mi as
parahalting
Program of
SCM+FSA ;
(
IC sI)
=
0 by
MEMSTR_0:def 11;
then (
IC sI)
in (
dom Mi) by
AFINSQ_1: 65;
then
A2: IC1
in (
dom Mi) by
A1,
AMISTD_1: 21;
A3: 1
in (
dom Mi) by
COMPOS_1: 60;
A4:
0
in (
dom Mi) by
COMPOS_1: 60;
A5: (Mi
.
0 )
= i by
COMPOS_1: 58;
A6: (
IC sI)
=
0 by
MEMSTR_0:def 11;
A7: (
Comput ((P
+* Mi),sI,(
0
+ 1)))
= (
Following ((P
+* Mi),(
Comput ((P
+* Mi),sI,
0 )))) by
EXTPRO_1: 3
.= (
Exec ((pI
.
0 ),sI)) by
A6,
PBOOLE: 143
.= (
Exec (i,sI)) by
A5,
A1,
A4,
GRFUNC_1: 2;
per cases by
A2,
COMPOS_1: 60;
suppose
A8: IC1
=
0 ;
then
A9: (
CurInstr ((P
+* Mi),(
Comput ((P
+* Mi),sI,1))))
= ((P
+* Mi)
.
0 ) by
PBOOLE: 143
.= i by
A5,
A4,
FUNCT_4: 13;
(
IC sI)
=
0 by
A6;
then
A10: (
InsCode i)
in
{
0 , 6, 7, 8} by
A7,
A8,
SCMFSA6A: 3;
hereby
per cases by
A10,
ENUMSET1:def 2;
suppose (
InsCode i)
=
0 ;
then
A11: i
= (
halt
SCM+FSA ) by
SCMFSA_2: 95;
then (P
+* Mi)
halts_on sI by
A9,
EXTPRO_1: 29;
hence thesis by
A7,
A9,
A11,
EXTPRO_1:def 9;
end;
suppose
A12: (
InsCode i)
= 6 or (
InsCode i)
= 7 or (
InsCode i)
= 8;
A13:
now
let a;
per cases by
A12;
suppose (
InsCode i)
= 6;
then ex l st i
= (
goto l) by
SCMFSA_2: 35;
hence (sI
. a)
= ((
Exec (i,sI))
. a);
end;
suppose (
InsCode i)
= 7;
then ex l, b st i
= (b
=0_goto l) by
SCMFSA_2: 36;
hence (sI
. a)
= ((
Exec (i,sI))
. a);
end;
suppose (
InsCode i)
= 8;
then ex l, b st i
= (b
>0_goto l) by
SCMFSA_2: 37;
hence (sI
. a)
= ((
Exec (i,sI))
. a);
end;
end;
A14:
now
let f;
per cases by
A12;
suppose (
InsCode i)
= 6;
then ex l st i
= (
goto l) by
SCMFSA_2: 35;
hence (sI
. f)
= ((
Exec (i,sI))
. f);
end;
suppose (
InsCode i)
= 7;
then ex l, a st i
= (a
=0_goto l) by
SCMFSA_2: 36;
hence (sI
. f)
= ((
Exec (i,sI))
. f);
end;
suppose (
InsCode i)
= 8;
then ex l, a st i
= (a
>0_goto l) by
SCMFSA_2: 37;
hence (sI
. f)
= ((
Exec (i,sI))
. f);
end;
end;
A15: (
Following ((P
+* Mi),sI))
= (
Following ((P
+* Mi),(
Comput ((P
+* Mi),sI,
0 ))))
.= (
Exec (i,sI)) by
A7,
EXTPRO_1: 3;
A16: (
InsCode (
halt
SCM+FSA ))
=
0 by
COMPOS_1: 70;
for n be
Nat holds (
CurInstr ((P
+* Mi),(
Comput ((P
+* Mi),sI,n))))
<> (
halt
SCM+FSA ) by
A9,
A12,
A13,
A14,
A7,
A8,
A6,
A15,
A16,
AMISTD_2: 11,
SCMFSA_2: 104;
then
A17: not (P
+* Mi)
halts_on sI;
Mi
c= (P
+* Mi) by
FUNCT_4: 25;
hence (
Exec (i,(
Initialized s)))
= (
IExec ((
Macro i),P,s)) by
A17,
AMISTD_1:def 11;
end;
end;
end;
suppose
A18: IC1
= 1;
A19: (Mi
. 1)
= (
halt
SCM+FSA ) by
COMPOS_1: 59;
A20: (
CurInstr ((P
+* Mi),(
Comput ((P
+* Mi),sI,1))))
= ((P
+* Mi)
. 1) by
A18,
PBOOLE: 143
.= (
halt
SCM+FSA ) by
A19,
A1,
A3,
GRFUNC_1: 2;
then (P
+* Mi)
halts_on sI by
EXTPRO_1: 29;
hence thesis by
A7,
A20,
EXTPRO_1:def 9;
end;
end;
theorem ::
SCMFSA6C:6
Th5: for I be
keeping_0
parahalting
really-closed
Program of
SCM+FSA , j be
sequential
Instruction of
SCM+FSA holds ((
IExec ((I
";" j),P,s))
. a)
= ((
Exec (j,(
IExec (I,P,s))))
. a)
proof
let I be
keeping_0
parahalting
really-closed
Program of
SCM+FSA , j be
sequential
Instruction of
SCM+FSA ;
set Mj = (
Macro j);
set SA = (
Start-At (((
IC (
IExec (Mj,P,(
IExec (I,P,s)))))
+ (
card I)),
SCM+FSA ));
A1: not a
in (
dom SA) by
SCMFSA_2: 102;
A2: (
DataPart (
Initialized (
IExec (I,P,s))))
= (
DataPart (
IExec (I,P,s))) by
Lm2;
a
in
Int-Locations by
AMI_2:def 16;
then
A3: a
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
thus ((
IExec ((I
";" j),P,s))
. a)
= ((
IncIC ((
IExec (Mj,P,(
IExec (I,P,s)))),(
card I)))
. a) by
SCMFSA6B: 20
.= ((
IExec (Mj,P,(
IExec (I,P,s))))
. a) by
A1,
FUNCT_4: 11
.= ((
Exec (j,(
Initialized (
IExec (I,P,s)))))
. a) by
Th4
.= ((
DataPart (
Exec (j,(
Initialized (
IExec (I,P,s))))))
. a) by
A3,
FUNCT_1: 49
.= ((
DataPart (
Exec (j,(
IExec (I,P,s)))))
. a) by
A2,
Th3
.= ((
Exec (j,(
IExec (I,P,s))))
. a) by
A3,
FUNCT_1: 49;
end;
theorem ::
SCMFSA6C:7
Th6: for I be
keeping_0
parahalting
really-closed
Program of
SCM+FSA , j be
sequential
Instruction of
SCM+FSA holds ((
IExec ((I
";" j),P,s))
. f)
= ((
Exec (j,(
IExec (I,P,s))))
. f)
proof
let I be
keeping_0
parahalting
really-closed
Program of
SCM+FSA , j be
sequential
Instruction of
SCM+FSA ;
set Mj = (
Macro j);
set SA = (
Start-At (((
IC (
IExec (Mj,P,(
IExec (I,P,s)))))
+ (
card I)),
SCM+FSA ));
A1: not f
in (
dom SA) by
SCMFSA_2: 103;
A2: (
DataPart (
Initialized (
IExec (I,P,s))))
= (
DataPart (
IExec (I,P,s))) by
Lm2;
f
in
FinSeq-Locations by
SCMFSA_2:def 5;
then
A3: f
in (
Data-Locations
SCM+FSA ) by
SCMFSA_2: 100,
XBOOLE_0:def 3;
thus ((
IExec ((I
";" j),P,s))
. f)
= ((
IncIC ((
IExec (Mj,P,(
IExec (I,P,s)))),(
card I)))
. f) by
SCMFSA6B: 20
.= ((
IExec (Mj,P,(
IExec (I,P,s))))
. f) by
A1,
FUNCT_4: 11
.= ((
Exec (j,(
Initialized (
IExec (I,P,s)))))
. f) by
Th4
.= ((
DataPart (
Exec (j,(
Initialized (
IExec (I,P,s))))))
. f) by
A3,
FUNCT_1: 49
.= ((
DataPart (
Exec (j,(
IExec (I,P,s)))))
. f) by
A2,
Th3
.= ((
Exec (j,(
IExec (I,P,s))))
. f) by
A3,
FUNCT_1: 49;
end;
theorem ::
SCMFSA6C:8
Th7: for i be
keeping_0
sequential
Instruction of
SCM+FSA , j be
sequential
Instruction of
SCM+FSA holds ((
IExec ((i
";" j),P,s))
. a)
= ((
Exec (j,(
Exec (i,(
Initialized s)))))
. a)
proof
let i be
keeping_0
sequential
Instruction of
SCM+FSA , j be
sequential
Instruction of
SCM+FSA ;
set Mi = (
Macro i);
thus ((
IExec ((i
";" j),P,s))
. a)
= ((
IExec ((Mi
";" j),P,s))
. a)
.= ((
Exec (j,(
IExec (Mi,P,s))))
. a) by
Th5
.= ((
Exec (j,(
Exec (i,(
Initialized s)))))
. a) by
Th4;
end;
theorem ::
SCMFSA6C:9
for i be
keeping_0
sequential
Instruction of
SCM+FSA , j be
sequential
Instruction of
SCM+FSA holds ((
IExec ((i
";" j),P,s))
. f)
= ((
Exec (j,(
Exec (i,(
Initialized s)))))
. f)
proof
let i be
keeping_0
sequential
Instruction of
SCM+FSA , j be
sequential
Instruction of
SCM+FSA ;
set Mi = (
Macro i);
thus ((
IExec ((i
";" j),P,s))
. f)
= ((
IExec ((Mi
";" j),P,s))
. f)
.= ((
Exec (j,(
IExec (Mi,P,s))))
. f) by
Th6
.= ((
Exec (j,(
Exec (i,(
Initialized s)))))
. f) by
Th4;
end;
begin
definition
let a,b be
Int-Location;
::
SCMFSA6C:def2
func
swap (a,b) ->
Program of
SCM+FSA equals ((((
FirstNotUsed (
Macro (a
:= b)))
:= a)
";" (a
:= b))
";" (b
:= (
FirstNotUsed (
Macro (a
:= b)))));
correctness ;
end
registration
let a,b be
Int-Location;
cluster (
swap (a,b)) ->
parahalting
really-closed;
coherence ;
end
registration
let a,b be
read-write
Int-Location;
cluster (
swap (a,b)) ->
keeping_0;
coherence ;
end
theorem ::
SCMFSA6C:10
for a,b be
read-write
Int-Location holds ((
IExec ((
swap (a,b)),P,s))
. a)
= (s
. b) & ((
IExec ((
swap (a,b)),P,s))
. b)
= (s
. a)
proof
let a,b be
read-write
Int-Location;
set i0 = ((
FirstNotUsed (
Macro (a
:= b)))
:= a);
set i1 = (a
:= b);
set i2 = (b
:= (
FirstNotUsed (
Macro (a
:= b))));
set i01 = (i0
";" i1);
(
UsedILoc (
Macro (a
:= b)))
= (
UsedIntLoc (a
:= b)) by
SF_MASTR: 28;
then (
UsedILoc (
Macro (a
:= b)))
=
{a, b} by
SF_MASTR: 14;
then
A1: not (
FirstNotUsed (
Macro (a
:= b)))
in
{a, b} by
SF_MASTR: 50;
then
A2: (
FirstNotUsed (
Macro (a
:= b)))
<> a by
TARSKI:def 2;
A3: (
FirstNotUsed (
Macro (a
:= b)))
<> b by
A1,
TARSKI:def 2;
hereby
per cases ;
suppose
A4: a
<> b;
thus ((
IExec ((
swap (a,b)),P,s))
. a)
= ((
Exec (i2,(
IExec (i01,P,s))))
. a) by
Th5
.= ((
IExec (i01,P,s))
. a) by
A4,
SCMFSA_2: 63
.= ((
Exec (i1,(
Exec (i0,(
Initialized s)))))
. a) by
Th7
.= ((
Exec (i0,(
Initialized s)))
. b) by
SCMFSA_2: 63
.= ((
Initialized s)
. b) by
A3,
SCMFSA_2: 63
.= (s
. b) by
SCMFSA_M: 37;
end;
suppose
A5: a
= b;
thus ((
IExec ((
swap (a,b)),P,s))
. a)
= ((
Exec (i2,(
IExec (i01,P,s))))
. a) by
Th5
.= ((
IExec (i01,P,s))
. (
FirstNotUsed (
Macro (a
:= b)))) by
A5,
SCMFSA_2: 63
.= ((
Exec (i1,(
Exec (i0,(
Initialized s)))))
. (
FirstNotUsed (
Macro (a
:= b)))) by
Th7
.= ((
Exec (i0,(
Initialized s)))
. (
FirstNotUsed (
Macro (a
:= b)))) by
A2,
SCMFSA_2: 63
.= ((
Initialized s)
. a) by
SCMFSA_2: 63
.= (s
. b) by
A5,
SCMFSA_M: 37;
end;
end;
thus ((
IExec ((
swap (a,b)),P,s))
. b)
= ((
Exec (i2,(
IExec (i01,P,s))))
. b) by
Th5
.= ((
IExec (i01,P,s))
. (
FirstNotUsed (
Macro (a
:= b)))) by
SCMFSA_2: 63
.= ((
Exec (i1,(
Exec (i0,(
Initialized s)))))
. (
FirstNotUsed (
Macro (a
:= b)))) by
Th7
.= ((
Exec (i0,(
Initialized s)))
. (
FirstNotUsed (
Macro (a
:= b)))) by
A2,
SCMFSA_2: 63
.= ((
Initialized s)
. a) by
SCMFSA_2: 63
.= (s
. a) by
SCMFSA_M: 37;
end;
theorem ::
SCMFSA6C:11
(
UsedI*Loc (
swap (a,b)))
=
{}
proof
set i0 = ((
FirstNotUsed (
Macro (a
:= b)))
:= a);
set i1 = (a
:= b);
set i2 = (b
:= (
FirstNotUsed (
Macro (a
:= b))));
thus (
UsedI*Loc (
swap (a,b)))
= ((
UsedI*Loc (i0
";" i1))
\/ (
UsedInt*Loc i2)) by
SF_MASTR: 46
.= ((
UsedI*Loc (i0
";" i1))
\/
{} ) by
SF_MASTR: 32
.= ((
UsedInt*Loc i0)
\/ (
UsedInt*Loc i1)) by
SF_MASTR: 47
.= ((
UsedInt*Loc i0)
\/
{} ) by
SF_MASTR: 32
.=
{} by
SF_MASTR: 32;
end;
registration
let i,j be
sequential
Instruction of
SCM+FSA ;
cluster (i
';' j) ->
really-closed;
coherence ;
end
registration
let I be
really-closed
MacroInstruction of
SCM+FSA , j be
sequential
Instruction of
SCM+FSA ;
cluster (I
';' j) ->
really-closed;
coherence ;
end
registration
let i be
sequential
Instruction of
SCM+FSA , J be
really-closed
MacroInstruction of
SCM+FSA ;
cluster (i
';' J) ->
really-closed;
coherence ;
end