begin
set A = NAT ;
set D = SCM-Data-Loc ;
theorem Th1:
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem Th7:
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem Th15:
theorem Th16:
theorem Th17:
theorem Th18:
theorem Th19:
theorem
theorem
canceled;
theorem
canceled;
theorem Th23:
theorem Th24:
for
P1,
P2 being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
s1,
s2 being
State of
SCMPDS for
I being
Program of
SCMPDS st
I is_closed_on s1,
P1 &
Start-At (
0,
SCMPDS)
c= s1 &
Start-At (
0,
SCMPDS)
c= s2 &
stop I c= P1 &
stop I c= P2 &
DataPart s1 = DataPart s2 holds
for
i being
Element of
NAT holds
(
IC (Comput (P1,s1,i)) = IC (Comput (P2,s2,i)) &
CurInstr (
P1,
(Comput (P1,s1,i)))
= CurInstr (
P2,
(Comput (P2,s2,i))) &
DataPart (Comput (P1,s1,i)) = DataPart (Comput (P2,s2,i)) )
theorem Th25:
for
P1,
P2 being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
s1,
s2 being
State of
SCMPDS for
I being
Program of
SCMPDS st
I is_closed_on s1,
P1 &
DataPart s1 = DataPart s2 holds
for
k being
Element of
NAT holds
(
NPP (Comput ((P1 +* (stop I)),(Initialize s1),k)) = NPP (Comput ((P2 +* (stop I)),(Initialize s2),k)) &
CurInstr (
(P1 +* (stop I)),
(Comput ((P1 +* (stop I)),(Initialize s1),k)))
= CurInstr (
(P2 +* (stop I)),
(Comput ((P2 +* (stop I)),(Initialize s2),k))) )
theorem Th26:
for
s1,
s2 being
State of
SCMPDS for
P1,
P2 being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
I being
Program of
SCMPDS st
I is_closed_on s1,
P1 &
stop I c= P1 &
stop I c= P2 &
Start-At (
0,
SCMPDS)
c= s1 &
Start-At (
0,
SCMPDS)
c= s2 &
NPP s1 = NPP s2 holds
for
k being
Element of
NAT holds
(
NPP (Comput (P1,s1,k)) = NPP (Comput (P2,s2,k)) &
CurInstr (
P1,
(Comput (P1,s1,k)))
= CurInstr (
P2,
(Comput (P2,s2,k))) )
theorem
theorem Th28:
for
s1,
s2 being
State of
SCMPDS for
P1,
P2 being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
I being
Program of
SCMPDS st
I is_closed_on s1,
P1 &
I is_halting_on s1,
P1 &
stop I c= P1 &
stop I c= P2 &
Start-At (
0,
SCMPDS)
c= s1 &
Start-At (
0,
SCMPDS)
c= s2 &
NPP s1 = NPP s2 holds
(
LifeSpan (
P1,
s1)
= LifeSpan (
P2,
s2) &
NPP (Result (P1,s1)) = NPP (Result (P2,s2)) )
theorem Th29:
theorem
for
P1,
P2 being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
s1,
s2 being
State of
SCMPDS for
I being
Program of
SCMPDS st
I is_closed_on s1,
P1 &
I is_halting_on s1,
P1 &
stop I c= P1 &
stop I c= P2 &
Start-At (
0,
SCMPDS)
c= s1 &
Start-At (
0,
SCMPDS)
c= s2 & ex
k being
Element of
NAT st
NPP (Comput (P1,s1,k)) = NPP s2 holds
NPP (Result (P1,s1)) = NPP (Result (P2,s2))
theorem Th31:
theorem
theorem Th33:
theorem Th34:
for
s1,
s2 being
State of
SCMPDS for
P1,
P2 being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
I being
shiftable Program of
SCMPDS st
stop I c= P1 &
Start-At (
0,
SCMPDS)
c= s1 &
I is_closed_on s1,
P1 &
I is_halting_on s1,
P1 holds
for
n being
Element of
NAT st
Shift (
I,
n)
c= P2 &
IC s2 = n &
DataPart s1 = DataPart s2 holds
for
i being
Element of
NAT st
i < LifeSpan (
P1,
s1) holds
(
(IC (Comput (P1,s1,i))) + n = IC (Comput (P2,s2,i)) &
CurInstr (
P1,
(Comput (P1,s1,i)))
= CurInstr (
P2,
(Comput (P2,s2,i))) &
DataPart (Comput (P1,s1,i)) = DataPart (Comput (P2,s2,i)) )
theorem Th35:
theorem Th36:
for
s1,
s2 being
State of
SCMPDS for
P1,
P2 being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
I being
halt-free shiftable Program of
SCMPDS st
stop I c= P1 &
Start-At (
0,
SCMPDS)
c= s1 &
I is_closed_on s1,
P1 &
I is_halting_on s1,
P1 holds
for
n being
Element of
NAT st
Shift (
I,
n)
c= P2 &
IC s2 = n &
DataPart s1 = DataPart s2 holds
(
IC (Comput (P2,s2,(LifeSpan (P1,s1)))) = (card I) + n &
DataPart (Comput (P1,s1,(LifeSpan (P1,s1)))) = DataPart (Comput (P2,s2,(LifeSpan (P1,s1)))) )
theorem Th37:
theorem Th38:
theorem Th39:
theorem Th40:
theorem Th41:
for
s being
State of
SCMPDS for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
I,
J being
Program of
SCMPDS st
I c= J &
I is_closed_on s,
P &
I is_halting_on s,
P & not
CurInstr (
(P +* J),
(Comput ((P +* J),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))))
= halt SCMPDS holds
IC (Comput ((P +* J),(Initialize s),(LifeSpan ((P +* (stop I)),(Initialize s))))) = card I
theorem Th42:
for
s being
State of
SCMPDS for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
I,
J being
Program of
SCMPDS st
I is_halting_on s,
P &
J is_closed_on IExec (
I,
P,
s),
P &
J is_halting_on IExec (
I,
P,
s),
P holds
(
J is_closed_on Comput (
(P +* (stop I)),
(Initialize s),
(LifeSpan ((P +* (stop I)),(Initialize s)))),
P +* (stop I) &
J is_halting_on Comput (
(P +* (stop I)),
(Initialize s),
(LifeSpan ((P +* (stop I)),(Initialize s)))),
P +* (stop I) )
theorem Th43:
for
s being
State of
SCMPDS for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
I being
Program of
SCMPDS for
J being
shiftable Program of
SCMPDS st
I is_closed_on s,
P &
I is_halting_on s,
P &
J is_closed_on IExec (
I,
P,
s),
P &
J is_halting_on IExec (
I,
P,
s),
P holds
(
I ';' J is_closed_on s,
P &
I ';' J is_halting_on s,
P )
theorem Th44:
theorem
theorem Th46:
Lm1:
for P, P2, P1 being the Instructions of SCMPDS -valued ManySortedSet of NAT
for I being halt-free Program of SCMPDS
for J being shiftable Program of SCMPDS
for s, s1, s2 being State of SCMPDS st I is_closed_on s,P & I is_halting_on s,P & J is_closed_on IExec (I,P,s),P & J is_halting_on IExec (I,P,s),P & s2 = Initialize s & s1 = Initialize s & P2 = P +* (stop (I ';' J)) & P1 = P +* (stop I) holds
( IC (Comput (P2,s2,(LifeSpan (P1,s1)))) = card I & DataPart (Comput (P2,s2,(LifeSpan (P1,s1)))) = DataPart (Initialize (Comput (P1,s1,(LifeSpan (P1,s1))))) & Shift ((stop J),(card I)) c= P2 & LifeSpan (P2,s2) = (LifeSpan (P1,s1)) + (LifeSpan ((P1 +* (stop J)),(Initialize (Result (P1,s1))))) )
theorem
for
s being
State of
SCMPDS for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
I being
halt-free Program of
SCMPDS for
J being
shiftable Program of
SCMPDS st
I is_closed_on s,
P &
I is_halting_on s,
P &
J is_closed_on IExec (
I,
P,
s),
P &
J is_halting_on IExec (
I,
P,
s),
P holds
LifeSpan (
(P +* (stop (I ';' J))),
(Initialize s))
= (LifeSpan ((P +* (stop I)),(Initialize s))) + (LifeSpan (((P +* (stop I)) +* (stop J)),(Initialize (Result ((P +* (stop I)),(Initialize s)))))) by Lm1;
theorem Th48:
for
s being
State of
SCMPDS for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
I being
halt-free Program of
SCMPDS for
J being
shiftable Program of
SCMPDS st
I is_closed_on s,
P &
I is_halting_on s,
P &
J is_closed_on IExec (
I,
P,
s),
P &
J is_halting_on IExec (
I,
P,
s),
P holds
IExec (
(I ';' J),
P,
s)
= IncIC (
(IExec (J,P,(IExec (I,P,s)))),
(card I))
theorem Th49:
for
a being
Int_position for
s being
State of
SCMPDS for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
I being
halt-free Program of
SCMPDS for
J being
shiftable Program of
SCMPDS st
I is_closed_on s,
P &
I is_halting_on s,
P &
J is_closed_on IExec (
I,
P,
s),
P &
J is_halting_on IExec (
I,
P,
s),
P holds
(IExec ((I ';' J),P,s)) . a = (IExec (J,P,(IExec (I,P,s)))) . a
theorem Th50:
begin
:: deftheorem defines for-up SCMPDS_7:def 1 :
for a being Int_position
for i being Integer
for n being Element of NAT
for I being Program of SCMPDS holds for-up (a,i,n,I) = ((((a,i) >=0_goto ((card I) + 3)) ';' I) ';' (AddTo (a,i,n))) ';' (goto (- ((card I) + 2)));
begin
theorem Th51:
Lm2:
for a being Int_position
for i being Integer
for n being Element of NAT
for I being Program of SCMPDS holds card (stop (for-up (a,i,n,I))) = (card I) + 4
theorem Th52:
theorem Th53:
for
a being
Int_position for
i being
Integer for
n being
Element of
NAT for
I being
Program of
SCMPDS holds
(
(for-up (a,i,n,I)) . 0 = (
a,
i)
>=0_goto ((card I) + 3) &
(for-up (a,i,n,I)) . ((card I) + 1) = AddTo (
a,
i,
n) &
(for-up (a,i,n,I)) . ((card I) + 2) = goto (- ((card I) + 2)) )
theorem Th54:
theorem Th55:
theorem
theorem
Lm3:
for I being Program of SCMPDS
for a being Int_position
for i being Integer
for n being Element of NAT holds Shift (I,1) c= for-up (a,i,n,I)
theorem Th58:
for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
s being
State of
SCMPDS for
I being
halt-free shiftable Program of
SCMPDS for
a being
Int_position for
i being
Integer for
n being
Element of
NAT for
X being
set st
s . (DataLoc ((s . a),i)) < 0 & not
DataLoc (
(s . a),
i)
in X &
n > 0 &
a <> DataLoc (
(s . a),
i) & ( for
t being
State of
SCMPDS for
Q being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT st ( for
x being
Int_position st
x in X holds
t . x = s . x ) &
t . a = s . a holds
(
(IExec (I,Q,t)) . a = t . a &
(IExec (I,Q,t)) . (DataLoc ((s . a),i)) = t . (DataLoc ((s . a),i)) &
I is_closed_on t,
Q &
I is_halting_on t,
Q & ( for
y being
Int_position st
y in X holds
(IExec (I,Q,t)) . y = t . y ) ) ) holds
(
for-up (
a,
i,
n,
I)
is_closed_on s,
P &
for-up (
a,
i,
n,
I)
is_halting_on s,
P )
theorem
for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
s being
State of
SCMPDS for
I being
halt-free shiftable Program of
SCMPDS for
a being
Int_position for
i being
Integer for
n being
Element of
NAT for
X being
set st
s . (DataLoc ((s . a),i)) < 0 & not
DataLoc (
(s . a),
i)
in X &
n > 0 &
a <> DataLoc (
(s . a),
i) & ( for
t being
State of
SCMPDS for
Q being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT st ( for
x being
Int_position st
x in X holds
t . x = s . x ) &
t . a = s . a holds
(
(IExec (I,Q,t)) . a = t . a &
(IExec (I,Q,t)) . (DataLoc ((s . a),i)) = t . (DataLoc ((s . a),i)) &
I is_closed_on t,
Q &
I is_halting_on t,
Q & ( for
y being
Int_position st
y in X holds
(IExec (I,Q,t)) . y = t . y ) ) ) holds
IExec (
(for-up (a,i,n,I)),
P,
s)
= IExec (
(for-up (a,i,n,I)),
P,
(IExec ((I ';' (AddTo (a,i,n))),P,s)))
begin
:: deftheorem defines for-down SCMPDS_7:def 2 :
for a being Int_position
for i being Integer
for n being Element of NAT
for I being Program of SCMPDS holds for-down (a,i,n,I) = ((((a,i) <=0_goto ((card I) + 3)) ';' I) ';' (AddTo (a,i,(- n)))) ';' (goto (- ((card I) + 2)));
begin
theorem Th60:
Lm4:
for a being Int_position
for i being Integer
for n being Element of NAT
for I being Program of SCMPDS holds card (stop (for-down (a,i,n,I))) = (card I) + 4
theorem Th61:
theorem Th62:
for
a being
Int_position for
i being
Integer for
n being
Element of
NAT for
I being
Program of
SCMPDS holds
(
(for-down (a,i,n,I)) . 0 = (
a,
i)
<=0_goto ((card I) + 3) &
(for-down (a,i,n,I)) . ((card I) + 1) = AddTo (
a,
i,
(- n)) &
(for-down (a,i,n,I)) . ((card I) + 2) = goto (- ((card I) + 2)) )
theorem Th63:
theorem Th64:
theorem
theorem Th66:
Lm5:
for I being Program of SCMPDS
for a being Int_position
for i being Integer
for n being Element of NAT holds Shift (I,1) c= for-down (a,i,n,I)
theorem Th67:
for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
s being
State of
SCMPDS for
I being
halt-free shiftable Program of
SCMPDS for
a being
Int_position for
i being
Integer for
n being
Element of
NAT for
X being
set st
s . (DataLoc ((s . a),i)) > 0 & not
DataLoc (
(s . a),
i)
in X &
n > 0 &
a <> DataLoc (
(s . a),
i) & ( for
t being
0 -started State of
SCMPDS for
Q being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT st ( for
x being
Int_position st
x in X holds
t . x = s . x ) &
t . a = s . a holds
(
(IExec (I,Q,t)) . a = t . a &
(IExec (I,Q,t)) . (DataLoc ((s . a),i)) = t . (DataLoc ((s . a),i)) &
I is_closed_on t,
Q &
I is_halting_on t,
Q & ( for
y being
Int_position st
y in X holds
(IExec (I,Q,t)) . y = t . y ) ) ) holds
(
for-down (
a,
i,
n,
I)
is_closed_on s,
P &
for-down (
a,
i,
n,
I)
is_halting_on s,
P )
theorem Th68:
for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
s being
0 -started State of
SCMPDS for
I being
halt-free shiftable Program of
SCMPDS for
a being
Int_position for
i being
Integer for
n being
Element of
NAT for
X being
set st
s . (DataLoc ((s . a),i)) > 0 & not
DataLoc (
(s . a),
i)
in X &
n > 0 &
a <> DataLoc (
(s . a),
i) & ( for
t being
0 -started State of
SCMPDS for
Q being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT st ( for
x being
Int_position st
x in X holds
t . x = s . x ) &
t . a = s . a holds
(
(IExec (I,Q,t)) . a = t . a &
(IExec (I,Q,t)) . (DataLoc ((s . a),i)) = t . (DataLoc ((s . a),i)) &
I is_closed_on t,
Q &
I is_halting_on t,
Q & ( for
y being
Int_position st
y in X holds
(IExec (I,Q,t)) . y = t . y ) ) ) holds
IExec (
(for-down (a,i,n,I)),
P,
s)
= IExec (
(for-down (a,i,n,I)),
P,
(IExec ((I ';' (AddTo (a,i,(- n)))),P,s)))
begin
definition
let n be
Element of
NAT ;
func sum n -> Program of
SCMPDS equals
(((GBP := 0) ';' ((GBP,2) := n)) ';' ((GBP,3) := 0)) ';' (for-down (GBP,2,1,(Load (AddTo (GBP,3,1)))));
coherence
(((GBP := 0) ';' ((GBP,2) := n)) ';' ((GBP,3) := 0)) ';' (for-down (GBP,2,1,(Load (AddTo (GBP,3,1))))) is Program of SCMPDS
;
end;
:: deftheorem defines sum SCMPDS_7:def 3 :
for n being Element of NAT holds sum n = (((GBP := 0) ';' ((GBP,2) := n)) ';' ((GBP,3) := 0)) ';' (for-down (GBP,2,1,(Load (AddTo (GBP,3,1)))));
theorem Th69:
for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
s being
0 -started State of
SCMPDS st
s . GBP = 0 holds
(
for-down (
GBP,2,1,
(Load (AddTo (GBP,3,1))))
is_closed_on s,
P &
for-down (
GBP,2,1,
(Load (AddTo (GBP,3,1))))
is_halting_on s,
P )
theorem Th70:
theorem
definition
let sp,
control,
result,
pp,
pData be
Element of
NAT ;
func sum (
sp,
control,
result,
pp,
pData)
-> Program of
SCMPDS equals
((((intpos sp),result) := 0) ';' ((intpos pp) := pData)) ';' (for-down ((intpos sp),control,1,((AddTo ((intpos sp),result,(intpos pData),0)) ';' (AddTo ((intpos pp),0,1)))));
coherence
((((intpos sp),result) := 0) ';' ((intpos pp) := pData)) ';' (for-down ((intpos sp),control,1,((AddTo ((intpos sp),result,(intpos pData),0)) ';' (AddTo ((intpos pp),0,1))))) is Program of SCMPDS
;
end;
:: deftheorem defines sum SCMPDS_7:def 4 :
for sp, control, result, pp, pData being Element of NAT holds sum (sp,control,result,pp,pData) = ((((intpos sp),result) := 0) ';' ((intpos pp) := pData)) ';' (for-down ((intpos sp),control,1,((AddTo ((intpos sp),result,(intpos pData),0)) ';' (AddTo ((intpos pp),0,1)))));
theorem Th72:
for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
s being
0 -started State of
SCMPDS for
sp,
cv,
result,
pp,
pD being
Element of
NAT st
s . (intpos sp) > sp &
cv < result &
s . (intpos pp) = pD &
(s . (intpos sp)) + result < pp &
pp < pD &
pD < s . (intpos pD) holds
(
for-down (
(intpos sp),
cv,1,
((AddTo ((intpos sp),result,(intpos pD),0)) ';' (AddTo ((intpos pp),0,1))))
is_closed_on s,
P &
for-down (
(intpos sp),
cv,1,
((AddTo ((intpos sp),result,(intpos pD),0)) ';' (AddTo ((intpos pp),0,1))))
is_halting_on s,
P )
theorem Th73:
for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
s being
0 -started State of
SCMPDS for
sp,
cv,
result,
pp,
pD being
Element of
NAT for
f being
FinSequence of
NAT st
s . (intpos sp) > sp &
cv < result &
s . (intpos pp) = pD &
(s . (intpos sp)) + result < pp &
pp < pD &
pD < s . (intpos pD) &
s . (DataLoc ((s . (intpos sp)),result)) = 0 &
len f = s . (DataLoc ((s . (intpos sp)),cv)) & ( for
k being
Element of
NAT st
k < len f holds
f . (k + 1) = s . (DataLoc ((s . (intpos pD)),k)) ) holds
(IExec ((for-down ((intpos sp),cv,1,((AddTo ((intpos sp),result,(intpos pD),0)) ';' (AddTo ((intpos pp),0,1))))),P,s)) . (DataLoc ((s . (intpos sp)),result)) = Sum f
theorem
for
P being the
Instructions of
SCMPDS -valued ManySortedSet of
NAT for
s being
0 -started State of
SCMPDS for
sp,
cv,
result,
pp,
pD being
Element of
NAT for
f being
FinSequence of
NAT st
s . (intpos sp) > sp &
cv < result &
(s . (intpos sp)) + result < pp &
pp < pD &
pD < s . (intpos pD) &
len f = s . (DataLoc ((s . (intpos sp)),cv)) & ( for
k being
Element of
NAT st
k < len f holds
f . (k + 1) = s . (DataLoc ((s . (intpos pD)),k)) ) holds
(IExec ((sum (sp,cv,result,pp,pD)),P,s)) . (DataLoc ((s . (intpos sp)),result)) = Sum f