Journal of Formalized Mathematics
Volume 8, 1996
University of Bialystok
Copyright (c) 1996
Association of Mizar Users
The abstract of the Mizar article:
-
- by
- Andrzej Trybulec,
and
- Yatsuka Nakamura
- Received February 22, 1996
- MML identifier: SCMFSA_5
- [
Mizar article,
MML identifier index
]
environ
vocabulary AMI_1, SCMFSA_2, RELOC, AMI_3, FUNCT_4, AMI_5, BOOLE, RELAT_1,
FUNCT_1, CAT_1, AMI_2, ARYTM_1, NAT_1, ABSVALUE, FINSEQ_1, FINSEQ_2,
CARD_3, FINSET_1, PARTFUN1, FINSEQ_4;
notation TARSKI, XBOOLE_0, ENUMSET1, SUBSET_1, XCMPLX_0, XREAL_0, ABSVALUE,
NAT_1, INT_1, CARD_3, PARTFUN1, CQC_LANG, RELAT_1, FUNCT_1, FINSEQ_1,
FINSEQ_2, FINSEQ_4, FINSET_1, FUNCT_2, FUNCT_4, FUNCT_7, STRUCT_0, AMI_1,
AMI_3, AMI_5, SCMFSA_2, SCMFSA_4;
constructors NAT_1, AMI_5, RELOC, FUNCT_7, SCMFSA_4, DOMAIN_1, FINSEQ_4,
MEMBERED;
clusters AMI_1, SCMFSA_2, RELSET_1, FUNCT_1, INT_1, SCMFSA_4, FRAENKEL, AMI_5,
MEMBERED;
requirements NUMERALS, SUBSET, BOOLE, ARITHM;
begin :: Relocatability
reserve j, k, m for Nat;
definition
let p be FinPartState of SCM+FSA, k be Nat;
func Relocated( p, k ) -> FinPartState of SCM+FSA equals
:: SCMFSA_5:def 1
Start-At ((IC p)+k)+* IncAddr(Shift(ProgramPart(p),k),k)+*DataPart p;
end;
theorem :: SCMFSA_5:1
for p being FinPartState of SCM+FSA,k being Nat
holds DataPart(Relocated(p,k)) = DataPart(p);
theorem :: SCMFSA_5:2
for p being FinPartState of SCM+FSA,k being Nat
holds ProgramPart(Relocated(p,k)) = IncAddr(Shift(ProgramPart(p),k),k);
theorem :: SCMFSA_5:3
for p being FinPartState of SCM+FSA
holds dom ProgramPart(Relocated(p,k))
= { insloc(j+k):insloc j in dom ProgramPart(p) };
theorem :: SCMFSA_5:4
for p being FinPartState of SCM+FSA, k being Nat,
l being Instruction-Location of SCM+FSA
holds l in dom p iff l+k in dom Relocated(p,k);
theorem :: SCMFSA_5:5
for p being FinPartState of SCM+FSA , k being Nat
holds IC SCM+FSA in dom Relocated(p,k);
theorem :: SCMFSA_5:6
for p being FinPartState of SCM+FSA, k being Nat
holds IC Relocated(p,k) = (IC p) + k;
theorem :: SCMFSA_5:7
for p being FinPartState of SCM+FSA,
k being Nat,
loc being Instruction-Location of SCM+FSA,
I being Instruction of SCM+FSA
st loc in dom ProgramPart p & I = p.loc
holds IncAddr(I, k) = (Relocated(p, k)).(loc + k);
theorem :: SCMFSA_5:8
for p being FinPartState of SCM+FSA,k being Nat
holds Start-At (IC p + k) c= Relocated(p,k);
theorem :: SCMFSA_5:9
for s being data-only FinPartState of SCM+FSA,
p being FinPartState of SCM+FSA,
k being Nat st IC SCM+FSA in dom p
holds
Relocated((p +* s), k) = Relocated(p,k) +* s;
theorem :: SCMFSA_5:10
for k being Nat,
p being autonomic FinPartState of SCM+FSA ,
s1, s2 being State of SCM+FSA
st p c= s1 & Relocated(p,k) c= s2
holds p c= s1 +* s2|(Int-Locations \/ FinSeq-Locations);
begin :: Main theorems of relocatability
theorem :: SCMFSA_5:11
for k being Nat
for p being autonomic FinPartState of SCM+FSA st IC SCM+FSA in dom p
for s being State of SCM+FSA st
p c= s
for i being Nat
holds (Computation (s +* Relocated(p,k))).i
= (Computation s).i +* Start-At (IC (Computation s ).i + k)
+* ProgramPart (Relocated(p,k));
theorem :: SCMFSA_5:12
for k being Nat,
p being autonomic FinPartState of SCM+FSA ,
s1, s2, s3 being State of SCM+FSA
st IC SCM+FSA in dom p & p c= s1 & Relocated(p,k) c= s2 &
s3 = s1 +* s2|(Int-Locations \/ FinSeq-Locations)
holds for i being Nat holds
IC (Computation s1).i + k = IC (Computation s2).i &
IncAddr(CurInstr((Computation s1).i), k) = CurInstr((Computation s2).i) &
(Computation s1).i|dom (DataPart p)
= (Computation s2).i|dom (DataPart (Relocated(p,k))) &
(Computation s3).i|(Int-Locations \/ FinSeq-Locations) =
(Computation s2).i|(Int-Locations \/ FinSeq-Locations);
theorem :: SCMFSA_5:13
for p being autonomic FinPartState of SCM+FSA ,
k being Nat
st IC SCM+FSA in dom p
holds
p is halting iff Relocated(p,k) is halting;
theorem :: SCMFSA_5:14
for k being Nat
for p being autonomic FinPartState of SCM+FSA st IC SCM+FSA in dom p
for s being State of SCM+FSA st Relocated(p,k) c= s
holds
for i being Nat holds
(Computation s).i
= (Computation(s +* p)).i +* Start-At (IC(Computation(s +* p)).i + k)
+* s|dom ProgramPart p +* ProgramPart (Relocated(p,k));
theorem :: SCMFSA_5:15
for k being Nat
for p being FinPartState of SCM+FSA st IC SCM+FSA in dom p
for s being State of SCM+FSA st p c= s & Relocated(p,k) is autonomic
holds
for i being Nat holds
(Computation s).i
= (Computation(s +* Relocated(p,k))).i
+* Start-At (IC(Computation(s +* Relocated(p,k))).i -' k)
+* s|dom ProgramPart Relocated(p,k) +* ProgramPart (p);
theorem :: SCMFSA_5:16
for p being FinPartState of SCM+FSA st IC SCM+FSA in dom p
for k being Nat
holds
p is autonomic iff Relocated(p,k) is autonomic;
theorem :: SCMFSA_5:17
for p being halting autonomic FinPartState of SCM+FSA st IC SCM+FSA in dom p
for k being Nat holds
DataPart(Result(p)) = DataPart(Result(Relocated(p,k)));
:: Relocatability
theorem :: SCMFSA_5:18
for F being PartFunc of FinPartSt SCM+FSA, FinPartSt SCM+FSA,
p being FinPartState of SCM+FSA st IC SCM+FSA in dom p & F is data-only
for k being Nat
holds
p computes F iff Relocated( p,k) computes F;
Back to top