Lm1: the_Values_of SCM =
the ValuesF of SCM * the Object-Kind of SCM
.=
SCM-VAL * SCM-OK
;
definition
let a,
b be
Data-Location;
correctness
coherence
[1,{},<*a,b*>] is Instruction of SCM;
correctness
coherence
[2,{},<*a,b*>] is Instruction of SCM;
correctness
coherence
[3,{},<*a,b*>] is Instruction of SCM;
correctness
coherence
[4,{},<*a,b*>] is Instruction of SCM;
correctness
coherence
[5,{},<*a,b*>] is Instruction of SCM;
end;
Lm2:
for I being Instruction of SCM st ex s being State of SCM st (Exec (I,s)) . (IC ) = (IC s) + 1 holds
not I is halting
Lm3:
for I being Instruction of SCM st I = [0,{},{}] holds
I is halting
Lm4:
for a, b being Data-Location holds not a := b is halting
Lm5:
for a, b being Data-Location holds not AddTo (a,b) is halting
Lm6:
for a, b being Data-Location holds not SubFrom (a,b) is halting
Lm7:
for a, b being Data-Location holds not MultBy (a,b) is halting
Lm8:
for a, b being Data-Location holds not Divide (a,b) is halting
Lm9:
for loc being Nat holds not SCM-goto loc is halting
Lm10:
for a being Data-Location
for loc being Nat holds not a =0_goto loc is halting
Lm11:
for a being Data-Location
for loc being Nat holds not a >0_goto loc is halting
Lm12:
for I being set holds
( I is Instruction of SCM iff ( I = [0,{},{}] or ex a, b being Data-Location st I = a := b or ex a, b being Data-Location st I = AddTo (a,b) or ex a, b being Data-Location st I = SubFrom (a,b) or ex a, b being Data-Location st I = MultBy (a,b) or ex a, b being Data-Location st I = Divide (a,b) or ex loc being Nat st I = SCM-goto loc or ex a being Data-Location ex loc being Nat st I = a =0_goto loc or ex a being Data-Location ex loc being Nat st I = a >0_goto loc ) )
Lm13:
for W being Instruction of SCM st W is halting holds
W = [0,{},{}]
theorem
for
I being
set holds
(
I is
Instruction of
SCM iff (
I = [0,{},{}] or ex
a,
b being
Data-Location st
I = a := b or ex
a,
b being
Data-Location st
I = AddTo (
a,
b) or ex
a,
b being
Data-Location st
I = SubFrom (
a,
b) or ex
a,
b being
Data-Location st
I = MultBy (
a,
b) or ex
a,
b being
Data-Location st
I = Divide (
a,
b) or ex
loc being
Nat st
I = SCM-goto loc or ex
a being
Data-Location ex
loc being
Nat st
I = a =0_goto loc or ex
a being
Data-Location ex
loc being
Nat st
I = a >0_goto loc ) )
by Lm12;