:: Modifying addresses of instructions of { \bf SCM_FSA }
:: by Andrzej Trybulec and Yatsuka Nakamura
::
:: Copyright (c) 1996-2021 Association of Mizar Users

registration
let a, b be Int-Location;
coherence
a := b is ins-loc-free
proof end;
cluster AddTo (a,b) -> ins-loc-free ;
coherence
proof end;
cluster SubFrom (a,b) -> ins-loc-free ;
coherence
SubFrom (a,b) is ins-loc-free
proof end;
cluster MultBy (a,b) -> ins-loc-free ;
coherence
MultBy (a,b) is ins-loc-free
proof end;
cluster Divide (a,b) -> ins-loc-free ;
coherence
Divide (a,b) is ins-loc-free
proof end;
end;

theorem Th1: :: SCMFSA_4:1
for k, loc being Nat holds IncAddr ((goto loc),k) = goto (loc + k) by SCMFSA10:41;

theorem Th2: :: SCMFSA_4:2
for k, loc being Nat
for a being Int-Location holds IncAddr ((a =0_goto loc),k) = a =0_goto (loc + k)
proof end;

theorem Th3: :: SCMFSA_4:3
for k, loc being Nat
for a being Int-Location holds IncAddr ((a >0_goto loc),k) = a >0_goto (loc + k)
proof end;

registration
let a, b be Int-Location;
let f be FinSeq-Location ;
cluster b := (f,a) -> ins-loc-free ;
coherence
b := (f,a) is ins-loc-free
;
cluster (f,a) := b -> ins-loc-free ;
coherence
(f,a) := b is ins-loc-free
;
end;

registration
let a be Int-Location;
let f be FinSeq-Location ;
coherence ;
coherence ;
end;

registration
coherence
proof end;
end;

theorem :: SCMFSA_4:4
for k being Nat
for i being Instruction of SCM+FSA st not InsCode i in {6,7,8} holds