:: On a Mathematical Model of Programs
:: by Yatsuka Nakamura and Andrzej Trybulec
::
:: Received December 29, 1992
:: Copyright (c) 1992-2016 Association of Mizar Users
:: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.
environ
vocabularies NUMBERS, SUBSET_1, XBOOLE_0, CARD_1, ZFMISC_1, FINSEQ_1, FUNCT_1,
RELAT_1, AMI_1, PARTFUN1, XXREAL_0, TARSKI, AMI_2, RECDEF_2, UNIALG_1,
AMISTD_2, VALUED_0, COMPOS_0, NAT_1;
notations TARSKI, XBOOLE_0, ZFMISC_1, XTUPLE_0, SUBSET_1, ORDINAL1, CARD_1,
NUMBERS, RELAT_1, FUNCT_1, PARTFUN1, VALUED_0, XXREAL_0, MCART_1,
DOMAIN_1, FINSEQ_1, FINSEQ_4, RECDEF_2, COMPOS_0;
constructors DOMAIN_1, FINSEQ_4, FINSEQ_2, VALUED_1, COMPOS_0, XTUPLE_0;
registrations XBOOLE_0, ORDINAL1, XREAL_0, FINSEQ_1, RELAT_1, CARD_1, FUNCT_1,
COMPOS_0, VALUED_0, XTUPLE_0;
requirements NUMERALS, REAL, SUBSET, BOOLE;
definitions TARSKI, XBOOLE_0, FINSEQ_1, COMPOS_0;
equalities TARSKI, COMPOS_0, XTUPLE_0;
expansions TARSKI, COMPOS_0;
theorems TARSKI, ENUMSET1, FINSEQ_4, MCART_1, XBOOLE_0, ORDINAL1, NAT_1,
DOMAIN_1, FINSEQ_1, FUNCT_7, XTUPLE_0;
begin :: A small concrete machine
reserve x,y,z for set;
notation
synonym SCM-Halt for 0;
end;
definition
redefine func SCM-Halt -> Element of Segm 9;
correctness by NAT_1:44;
end;
definition
func SCM-Data-Loc -> set equals
[:{1},NAT:];
coherence;
end;
registration
cluster SCM-Data-Loc -> non empty;
coherence;
end;
reserve I,J,K for Element of Segm 9,
i,a,a1,a2 for Nat,
b,b1,b2,c,c1 for Element of SCM-Data-Loc;
definition
func SCM-Instr -> non empty set equals
{[SCM-Halt,{},{}] } \/ { [J,<*a*>,{}] : J = 6 }
\/ { [K,<*a1*>,<*b1*>] : K in { 7,8 } }
\/ { [I,{},<*b,c*>] : I in { 1,2,3,4,5} };
coherence;
end;
theorem Th1:
[0,{},{}] in SCM-Instr
proof
[0,{},{}] in { [SCM-Halt,{},{}] } by TARSKI:def 1;
then [0,{},{}] in { [SCM-Halt,{},{}] }
\/ { [J,<*a*>,{}] : J = 6 } by XBOOLE_0:def 3;
then
[0,{},{}] in { [SCM-Halt,{},{}] } \/ { [J,<*a*>,{}] : J = 6 }
\/ { [K,<*a1*>,<*b1*>] : K in { 7,8 } } by XBOOLE_0:def 3;
hence thesis by XBOOLE_0:def 3;
end;
registration
cluster SCM-Instr -> non empty;
coherence;
end;
theorem Th2:
[6,<*a2*>,{}] in SCM-Instr
proof
reconsider x = 6 as Element of Segm 9 by NAT_1:44;
[x,<*a2*>,{}] in { [J,<*a*>,{}] : J = 6 };
then [x,<*a2*>,{}] in { [SCM-Halt,{},{}] } \/ { [J,<*a*>,{}] : J = 6 }
by XBOOLE_0:def 3;
then
[x,<*a2*>,{}] in { [SCM-Halt,{},{}] } \/ { [J,<*a*>,{}] : J = 6 }
\/ { [K,<*a1*>,<*b1*>] : K in { 7,8 } } by XBOOLE_0:def 3;
hence thesis by XBOOLE_0:def 3;
end;
theorem Th3:
x in { 7, 8 } implies [x,<*a2*>,<*b2*>] in SCM-Instr
proof
assume
A1: x in { 7, 8 };
then x = 7 or x = 8 by TARSKI:def 2;
then reconsider x as Element of Segm 9 by NAT_1:44;
[x,<*a2*>,<*b2*>] in { [K,<*a1*>,<*b1*>] : K in { 7,8 } } by A1;
then
[x,<*a2*>,<*b2*>] in { [SCM-Halt,{},{}] } \/ { [J,<*a*>,{}] : J = 6 }
\/ { [K,<*a1*>,<*b1*>] : K in { 7,8 } } by XBOOLE_0:def 3;
hence thesis by XBOOLE_0:def 3;
end;
theorem Th4:
x in { 1,2,3,4,5} implies [x,{},<*b1,c1*>] in SCM-Instr
proof
assume
A1: x in { 1,2,3,4,5};
then x=1 or x=2 or x=3 or x=4 or x=5 by ENUMSET1:def 3;
then reconsider x as Element of Segm 9 by NAT_1:44;
[x,{},<*b1,c1*>] in { [J,{},<*b,c*>] : J in { 1,2,3,4,5 } } by A1;
hence thesis by XBOOLE_0:def 3;
end;
definition
let x be Element of SCM-Instr;
given mk, ml being Element of SCM-Data-Loc, I such that
A1: x = [ I, {}, <*mk, ml*>];
func x address_1 -> Element of SCM-Data-Loc means
:Def3:
ex f being FinSequence of SCM-Data-Loc st f = x`3_3 & it = f/.1;
existence
proof
take mk,<*mk, ml*>;
thus thesis by A1,FINSEQ_4:17;
end;
uniqueness;
func x address_2 -> Element of SCM-Data-Loc means
:Def4:
ex f being FinSequence of SCM-Data-Loc st f = x`3_3 & it = f/.2;
existence
proof
take ml,<*mk, ml*>;
thus thesis by A1,FINSEQ_4:17;
end;
correctness;
end;
theorem
for x being Element of SCM-Instr, mk, ml being Element of SCM-Data-Loc, I
st x = [ I, {}, <*mk, ml*>] holds x address_1 = mk & x address_2 = ml
proof
let x be Element of SCM-Instr, mk,ml be Element of SCM-Data-Loc, I;
assume
A1: x = [ I, {}, <*mk,ml*>];
then consider f being FinSequence of SCM-Data-Loc such that
A2: f = x`3_3 and
A3: x address_1 = f/.1 by Def3;
f = <*mk,ml*> by A1,A2;
hence x address_1 = mk by A3,FINSEQ_4:17;
consider f being FinSequence of SCM-Data-Loc such that
A4: f = x`3_3 and
A5: x address_2 = f/.2 by A1,Def4;
f = <*mk,ml*> by A1,A4;
hence thesis by A5,FINSEQ_4:17;
end;
definition
let x be Element of SCM-Instr;
given mk being Nat, I such that
A1: x = [ I, <*mk*>, {}];
func x jump_address -> Nat means
:Def5: ex f being FinSequence of NAT st f = x`2_3 & it = f/.1;
existence
proof
reconsider mk as Element of NAT by ORDINAL1:def 12;
take mk,<*mk*>;
thus thesis by A1,FINSEQ_4:16;
end;
correctness;
end;
theorem
for x being Element of SCM-Instr, mk being Nat, I st x = [
I, <*mk*>, {}] holds x jump_address = mk
proof
let x be Element of SCM-Instr, mk be Nat, I;
assume
A1: x = [ I, <*mk*>, {}];
then consider f being FinSequence of NAT such that
A2: f = x`2_3 and
A3: x jump_address = f/.1 by Def5;
reconsider mk as Element of NAT by ORDINAL1:def 12;
f = <*mk*> by A1,A2;
hence thesis by A3,FINSEQ_4:16;
end;
definition
let x be Element of SCM-Instr;
given mk being Nat, ml being Element of SCM-Data-Loc, I such that
A1: x = [ I, <*mk*>, <*ml*>];
func x cjump_address -> Nat means
:Def6:
ex mk being Element of NAT st <*mk*> = x`2_3 & it = <*mk*>/.1;
existence
proof
reconsider mk as Element of NAT by ORDINAL1:def 12;
take mk,mk;
thus thesis by A1,FINSEQ_4:16;
end;
correctness;
func x cond_address -> Element of SCM-Data-Loc means
:Def7:
ex ml being Element of SCM-Data-Loc st <*ml*> = x`3_3 & it = <*ml*>/.1;
existence
proof
take ml,ml;
thus thesis by A1,FINSEQ_4:16;
end;
correctness;
end;
theorem
for x being Element of SCM-Instr, mk being Nat, ml being
Element of SCM-Data-Loc, I
st x = [ I, <*mk*>, <*ml*>] holds x cjump_address = mk &
x cond_address = ml
proof
let x be Element of SCM-Instr, mk be Nat, ml be Element of
SCM-Data-Loc, I;
reconsider mkk = mk as Element of NAT by ORDINAL1:def 12;
assume
A1: x = [ I, <*mk*>, <*ml*>];
then consider mk9 being Element of NAT such
that
A2: <*mk9*> = x`2_3 and
A3: x cjump_address = <*mk9*>/.1 by Def6;
<*mk9*> = <*mkk*> by A1,A2;
hence x cjump_address = mk by A3,FINSEQ_4:16;
consider ml9 being Element of SCM-Data-Loc such
that
A4: <*ml9*> = x`3_3 and
A5: x cond_address = <*ml9*>/.1 by A1,Def7;
<*ml9*> = <*ml*> by A1,A4;
hence thesis by A5,FINSEQ_4:16;
end;
theorem Th8:
SCM-Instr c= [:NAT,NAT*,proj2 SCM-Instr:]
proof
let x be object;
assume
A1: x in SCM-Instr;
per cases by A1,XBOOLE_0:def 3;
suppose
A2: x in {[SCM-Halt,{},{}] }
\/ { [J,<*a2*>,{}] : J = 6 } \/ { [K,<*a1*>,<*b1*>] : K in { 7,8 } };
per cases by A2,XBOOLE_0:def 3;
suppose
A3: x in {[SCM-Halt,{},{}] } \/ { [J,<*a2*>,{}] : J = 6 };
per cases by A3,XBOOLE_0:def 3;
suppose x in {[SCM-Halt,{},{}] };
then
A4: x = [SCM-Halt,{},{}] by TARSKI:def 1;
then SCM-Halt in NAT & {} in NAT* &
{} in proj2 SCM-Instr by A1,FINSEQ_1:49,XTUPLE_0:def 13;
hence x in [:NAT,NAT*,proj2 SCM-Instr:] by A4,DOMAIN_1:3;
end;
suppose x in { [J,<*a2*>,{}] : J = 6 };
then consider J,a such that
A5: x = [J,<*a*>,{}] & J = 6;
J in NAT & <*a*> in NAT* & {} in proj2 SCM-Instr
by A1,A5,FUNCT_7:18,XTUPLE_0:def 13,ORDINAL1:def 12;
hence x in [:NAT,NAT*,proj2 SCM-Instr:] by A5,DOMAIN_1:3;
end;
end;
suppose x in { [K,<*a1*>,<*b1*>] : K in { 7,8 }};
then consider K,a1,b1 such that
A6: x = [K,<*a1*>,<*b1*>] & K in { 7,8 };
K in NAT & <*a1*> in NAT* &
<*b1*> in proj2 SCM-Instr
by A1,A6,FUNCT_7:18,XTUPLE_0:def 13,ORDINAL1:def 12;
hence x in [:NAT,NAT*,proj2 SCM-Instr:] by A6,DOMAIN_1:3;
end;
end;
suppose x in { [I,{},<*b,c*>] : I in { 1,2,3,4,5} };
then consider I,b,c such that
A7: x = [I,{},<*b,c*>] & I in { 1,2,3,4,5};
I in NAT & {} in NAT* &
<*b,c*> in proj2 SCM-Instr by A1,A7,FINSEQ_1:49,XTUPLE_0:def 13;
hence x in [:NAT,NAT*,proj2 SCM-Instr:] by A7,DOMAIN_1:3;
end;
end;
registration
cluster proj2 SCM-Instr -> FinSequence-membered;
coherence
proof let f be object;
assume f in proj2 SCM-Instr;
then consider y being object such that
A1: [y,f] in SCM-Instr by XTUPLE_0:def 13;
set x = [y,f];
per cases by A1,XBOOLE_0:def 3;
suppose
A2: x in {[SCM-Halt,{},{}] }
\/ { [J,<*a2*>,{}] : J = 6 } \/ { [K,<*a1*>,<*b1*>] : K in { 7,8 } };
per cases by A2,XBOOLE_0:def 3;
suppose
A3: x in {[SCM-Halt,{},{}] } \/ { [J,<*a2*>,{}] : J = 6 };
per cases by A3,XBOOLE_0:def 3;
suppose x in {[SCM-Halt,{},{}] };
then x = [SCM-Halt,{},{}] by TARSKI:def 1;
hence f is FinSequence by XTUPLE_0:1;
end;
suppose x in { [J,<*a2*>,{}] : J = 6 };
then ex J,a st x = [J,<*a*>,{}] & J = 6;
hence f is FinSequence by XTUPLE_0:1;
end;
end;
suppose x in { [K,<*a1*>,<*b1*>] : K in { 7,8 }};
then ex K,a1,b1 st x = [K,<*a1*>,<*b1*>] & K in { 7,8 };
hence f is FinSequence by XTUPLE_0:1;
end;
end;
suppose x in { [I,{},<*b,c*>] : I in { 1,2,3,4,5} };
then ex I,b,c st x = [I,{},<*b,c*>] & I in { 1,2,3,4,5};
hence f is FinSequence by XTUPLE_0:1;
end;
end;
end;
theorem Th9:
for x being Element of SCM-Instr holds
x in {[SCM-Halt,{},{}] } & InsCode x = 0 or
x in { [J,<*a*>,{}] : J = 6 } & InsCode x = 6 or
x in { [K,<*a1*>,<*b1*>] : K in { 7,8 } }
& (InsCode x = 7 or InsCode x = 8) or
x in { [I,{},<*b,c*>] : I in { 1,2,3,4,5} }
& (InsCode x = 1 or InsCode x = 2 or InsCode x = 3
or InsCode x = 4 or InsCode x = 5)
proof
let x be Element of SCM-Instr;
x in {[SCM-Halt,{},{}] } \/ { [J,<*a*>,{}] : J = 6 }
\/ { [K,<*a1*>,<*b1*>] : K in { 7,8 } } or
x in { [I,{},<*b,c*>] : I in { 1,2,3,4,5} } by XBOOLE_0:def 3;
then x in{[SCM-Halt,{},{}] } \/ { [J,<*a*>,{}] : J = 6 } or
x in { [K,<*a1*>,<*b1*>] : K in { 7,8 } } or
x in { [I,{},<*b,c*>] : I in { 1,2,3,4,5} } by XBOOLE_0:def 3;
then per cases by XBOOLE_0:def 3;
case x in {[SCM-Halt,{},{}] };
then x = [SCM-Halt,{},{}] by TARSKI:def 1;
hence thesis;
end;
case x in { [J,<*a*>,{}] : J = 6 };
then ex J,a st x = [J,<*a*>,{}] & J = 6;
hence thesis;
end;
case x in { [K,<*a1*>,<*b1*>] : K in { 7,8 } };
then consider K,a1,b1 such that
A1: x = [K,<*a1*>,<*b1*>] and
A2: K in { 7,8 };
InsCode x = K by A1;
hence thesis by A2,TARSKI:def 2;
end;
case x in { [I,{},<*b,c*>] : I in { 1,2,3,4,5} };
then consider I,b,c such that
A3: x = [I,{},<*b,c*>] and
A4: I in { 1,2,3,4,5};
InsCode x = I by A3;
hence thesis by A4,ENUMSET1:def 3;
end;
end;
begin :: from AMI_3
reserve i,j,k for Nat;
registration
cluster SCM-Instr -> standard-ins;
coherence
proof
consider X being non empty set such that
A1: proj2 SCM-Instr c= X* by FINSEQ_1:85;
take X;
A2: SCM-Instr c= [: NAT,NAT*,proj2 SCM-Instr:] by Th8;
[: NAT,NAT*,proj2 SCM-Instr:] c= [: NAT,NAT*,X*:] by A1,MCART_1:73;
hence SCM-Instr c= [: NAT,NAT*,X*:] by A2;
end;
end;
reserve I,J,K for Element of Segm 9,
a,a1,a2 for Nat,
b,b1,b2,c,c1 for Element of SCM-Data-Loc;
theorem Th10:
for l being Element of SCM-Instr holds InsCode l <= 8
proof
let l be Element of SCM-Instr;
InsCode l = 0 or InsCode l = 1 or InsCode l = 2 or InsCode l = 3 or
InsCode l = 4 or InsCode l = 5 or InsCode l = 6 or InsCode l = 7 or
InsCode l = 8 by Th9;
hence thesis;
end;
Lm1:
for i being Element of SCM-Instr
st InsCode i = 1 or InsCode i = 2 or InsCode i = 3
or InsCode i = 4 or InsCode i = 5
holds JumpPart i = {}
proof let i be Element of SCM-Instr;
assume
InsCode i = 1 or InsCode i = 2 or InsCode i = 3 or
InsCode i = 4 or InsCode i = 5;
then i in { [I,{},<*b,c*>] : I in { 1,2,3,4,5} } by Th9;
then ex I,b,c st i = [I,{},<*b,c*>] & I in { 1,2,3,4,5};
hence thesis;
end;
Lm2:
for i being Element of SCM-Instr
st InsCode i = 7 or InsCode i = 8
holds dom JumpPart i = Seg 1
proof let i be Element of SCM-Instr;
assume
InsCode i = 7 or InsCode i = 8;
then i in { [K,<*a1*>,<*b1*>] : K in { 7,8 } }
by Th9;
then consider K,a1,b1 such that
A1: i = [K,<*a1*>,<*b1*>] and K in { 7,8 };
JumpPart i = <*a1*> by A1;
hence thesis by FINSEQ_1:38;
end;
Lm3:
for i being Element of SCM-Instr
st InsCode i = 6
holds dom JumpPart i = Seg 1
proof let i be Element of SCM-Instr;
assume
InsCode i = 6;
then i in { [J,<*a*>,{}] : J = 6 } by Th9;
then consider J,a such that
A1: i = [J,<*a*>,{}] and J = 6;
JumpPart i = <*a*> by A1;
hence thesis by FINSEQ_1:38;
end;
registration
cluster SCM-Instr -> homogeneous;
coherence
proof
let i, j be Element of SCM-Instr such that
A1: InsCode i = InsCode j;
InsCode i <= 8 by Th10;
then InsCode i = 0 or ... or InsCode i = 8 by NAT_1:60;
then per cases;
suppose InsCode i = 0;
then i in {[SCM-Halt,{},{}] } & j in {[SCM-Halt,{},{}] } by A1,Th9;
then i = [SCM-Halt,{},{}] & j = [SCM-Halt,{},{}] by TARSKI:def 1;
hence thesis;
end;
suppose
InsCode i = 1 or ... or InsCode i = 5;
then JumpPart i = {} & JumpPart j = {} by A1,Lm1;
hence thesis;
end;
suppose InsCode i = 7 or InsCode i = 8;
then dom JumpPart i = Seg 1 & dom JumpPart j = Seg 1 by A1,Lm2;
hence thesis;
end;
suppose InsCode i = 6;
then dom JumpPart i = Seg 1 & dom JumpPart j = Seg 1 by A1,Lm3;
hence thesis;
end;
end;
end;
Lm4:
for T being InsType of SCM-Instr
holds T = 0 or ... or T = 8
proof
let T be InsType of SCM-Instr;
consider y being object such that
A1: [T,y] in proj1 SCM-Instr by XTUPLE_0:def 12;
consider x being object such that
A2: [[T,y],x] in SCM-Instr by A1,XTUPLE_0:def 12;
reconsider I = [T,y,x] as Element of SCM-Instr by A2;
T = InsCode I;
hence thesis by Th10,NAT_1:60;
end;
reserve T for InsType of SCM-Instr,
I for Element of SCM-Instr;
Lm5:
T = 0 implies JumpParts T = {{}}
proof
assume
A1: T = 0;
hereby
let a be object;
assume a in JumpParts T;
then consider I such that
A2: a = JumpPart I and
A3: InsCode I = T;
I in {[SCM-Halt,{},{}] } by A1,A3,Th9;
then I = [SCM-Halt,{},{}] by TARSKI:def 1;
then a = {} by A2;
hence a in {{}} by TARSKI:def 1;
end;
let a be object;
assume a in {{}};
then
A4: a = {} by TARSKI:def 1;
A5: JumpPart [SCM-Halt,{},{}] = {};
A6: InsCode [SCM-Halt,{},{}] = SCM-Halt;
[SCM-Halt,{},{}] in SCM-Instr by Th1;
hence a in JumpParts T by A1,A4,A5,A6;
end;
Lm6:
T = 1 or ... or T = 5
implies JumpParts T = {{}}
proof
assume
A1: T = 1 or ... or T = 5;
hereby
let x be object;
assume x in JumpParts T;
then consider I being Element of SCM-Instr such that
A2: x = JumpPart I and
A3: InsCode I = T;
I in { [J,{},<*b,c*>]
where J is Element of Segm 9,
b is Element of SCM-Data-Loc, c is Element of SCM-Data-Loc
: J in { 1,2,3,4,5} } by A1,A3,Th9;
then consider J being Element of Segm 9,
b being Element of SCM-Data-Loc, c being Element of SCM-Data-Loc
such that
A4: I = [J,{},<*b,c*>] and
J in { 1,2,3,4,5};
x = {} by A2,A4;
hence x in {{}} by TARSKI:def 1;
end;
set a = the Element of SCM-Data-Loc;
let x be object;
assume x in {{}};
then
A5: x = {} by TARSKI:def 1;
A6: JumpPart [T,{},<*a,a*>] = {};
A7: InsCode [T,{},<*a,a*>] = T;
T in { 1,2,3,4,5} by A1,ENUMSET1:def 3;
then [T,{},<*a,a*>] in SCM-Instr by Th4;
hence thesis by A5,A6,A7;
end;
registration
cluster SCM-Instr -> J/A-independent;
coherence
proof
let T be InsType of SCM-Instr,
f1,f2 be natural-valued Function such that
A1: f1 in JumpParts T and
A2: dom f1 = dom f2;
let p be object such that
A3: [T,f1,p] in SCM-Instr;
T = 0 or ... or T = 8 by Lm4;
then per cases;
suppose T = 0;
then
JumpParts T = {{}} by Lm5;
then f1 = {} by A1,TARSKI:def 1;
then f1 = f2 by A2;
hence [T,f2,p] in SCM-Instr by A3;
end;
suppose T = 1 or ... or T = 5;
then
A4: JumpParts T = {{}} by Lm6;
f1 = {} by A4,A1,TARSKI:def 1;
then f1 = f2 by A2;
hence [T,f2,p] in SCM-Instr by A3;
end;
suppose
A5: T = 6;
reconsider J = [T,f1,p] as Element of SCM-Instr by A3;
InsCode J = 6 by A5;
then J in { [K,<*i1*>,{}]
where K is Element of Segm 9, i1 is Nat
: K = 6 } by Th9;
then consider K being Element of Segm 9,
i1 being Nat such that
A6: J = [K,<*i1*>,{}] & K = 6;
A7: p = {} by A6,XTUPLE_0:3;
f1 = <*i1*> by A6,XTUPLE_0:3;
then
A8: dom f2 = {1} by A2,FINSEQ_1:2,38;
reconsider l = f2.1 as Nat;
set I = [T,f2,{}];
I = [6,<*l*>,{}] by A5,A8,FINSEQ_1:2,def 8;
then reconsider I as Element of SCM-Instr by Th2;
f2 = JumpPart I;
hence [T,f2,p] in SCM-Instr by A7;
end;
suppose
A9: T = 7 or T = 8;
reconsider J = [T,f1,p] as Element of SCM-Instr by A3;
InsCode J = T;
then J in { [K,<*i1*>,<*a*>]
where K is Element of Segm 9, i1 is Nat,
a is Element of SCM-Data-Loc
: K in { 7,8 } } by A9,Th9;
then consider K being Element of Segm 9, i1 being Nat,
a being Element of SCM-Data-Loc
such that
A10: J = [K,<*i1*>,<*a*>] and K in {7,8};
A11: p = <*a*> by A10,XTUPLE_0:3;
f1 = <*i1*> by A10,XTUPLE_0:3;
then
A12: dom f2 = {1} by A2,FINSEQ_1:2,38;
reconsider l = f2.1 as Nat;
set I = [T,f2,p];
A13: T in {7,8} by A9,TARSKI:def 2;
I = [T,<*l*>,<*a*>] by A11,A12,FINSEQ_1:2,def 8;
then reconsider I as Element of SCM-Instr by A13,Th3;
InsCode I = T;
then I in { [L,<*i2*>,<*b*>]
where L is Element of Segm 9, i2 is Nat,
b is Element of SCM-Data-Loc
: L in { 7,8 } } by A9,Th9;
then consider L being Element of Segm 9, i2 being Nat,
b being Element of SCM-Data-Loc
such that
A14: I = [L,<*i2*>,<*b*>] and L in {7,8};
L = InsCode I by A14
.= T;
then
A15: I = [T,<*i2*>,<*b*>] by A14;
thus [T,f2,p] in SCM-Instr by A15;
end;
end;
end;
registration
cluster SCM-Instr -> with_halt;
coherence
by Th1;
end;