set D = Int-Locations \/ FinSeq-Locations ;
let s be State of SCM+FSA ; :: thesis: for I being InitHalting Program of SCM+FSA
for a being read-write Int-Location st s . a > 0 holds
ex s2 being State of SCM+FSA ex k being Element of NAT st
( s2 = s +* (Initialized (while>0 a,I)) & k = (LifeSpan (s +* (Initialized I))) + 3 & IC (Computation s2,k) = insloc 0 & ( for b being Int-Location holds (Computation s2,k) . b = (IExec I,s) . b ) & ( for f being FinSeq-Location holds (Computation s2,k) . f = (IExec I,s) . f ) )
let I be InitHalting Program of SCM+FSA ; :: thesis: for a being read-write Int-Location st s . a > 0 holds
ex s2 being State of SCM+FSA ex k being Element of NAT st
( s2 = s +* (Initialized (while>0 a,I)) & k = (LifeSpan (s +* (Initialized I))) + 3 & IC (Computation s2,k) = insloc 0 & ( for b being Int-Location holds (Computation s2,k) . b = (IExec I,s) . b ) & ( for f being FinSeq-Location holds (Computation s2,k) . f = (IExec I,s) . f ) )
let a be read-write Int-Location ; :: thesis: ( s . a > 0 implies ex s2 being State of SCM+FSA ex k being Element of NAT st
( s2 = s +* (Initialized (while>0 a,I)) & k = (LifeSpan (s +* (Initialized I))) + 3 & IC (Computation s2,k) = insloc 0 & ( for b being Int-Location holds (Computation s2,k) . b = (IExec I,s) . b ) & ( for f being FinSeq-Location holds (Computation s2,k) . f = (IExec I,s) . f ) ) )
assume A1:
s . a > 0
; :: thesis: ex s2 being State of SCM+FSA ex k being Element of NAT st
( s2 = s +* (Initialized (while>0 a,I)) & k = (LifeSpan (s +* (Initialized I))) + 3 & IC (Computation s2,k) = insloc 0 & ( for b being Int-Location holds (Computation s2,k) . b = (IExec I,s) . b ) & ( for f being FinSeq-Location holds (Computation s2,k) . f = (IExec I,s) . f ) )
set P = while>0 a,I;
set s1 = s +* (Initialized I);
take s2 = s +* (Initialized (while>0 a,I)); :: thesis: ex k being Element of NAT st
( s2 = s +* (Initialized (while>0 a,I)) & k = (LifeSpan (s +* (Initialized I))) + 3 & IC (Computation s2,k) = insloc 0 & ( for b being Int-Location holds (Computation s2,k) . b = (IExec I,s) . b ) & ( for f being FinSeq-Location holds (Computation s2,k) . f = (IExec I,s) . f ) )
take k = (LifeSpan (s +* (Initialized I))) + 3; :: thesis: ( s2 = s +* (Initialized (while>0 a,I)) & k = (LifeSpan (s +* (Initialized I))) + 3 & IC (Computation s2,k) = insloc 0 & ( for b being Int-Location holds (Computation s2,k) . b = (IExec I,s) . b ) & ( for f being FinSeq-Location holds (Computation s2,k) . f = (IExec I,s) . f ) )
thus
( s2 = s +* (Initialized (while>0 a,I)) & k = (LifeSpan (s +* (Initialized I))) + 3 )
; :: thesis: ( IC (Computation s2,k) = insloc 0 & ( for b being Int-Location holds (Computation s2,k) . b = (IExec I,s) . b ) & ( for f being FinSeq-Location holds (Computation s2,k) . f = (IExec I,s) . f ) )
set Is = (Initialize s) +* (I +* (Start-At (insloc 0 )));
A2:
I is_halting_onInit s
by SCM_HALT:36;
then
s +* (Initialized I) is halting
by SCM_HALT:def 5;
then
(Initialize s) +* (I +* (Start-At (insloc 0 ))) is halting
by SCMFSA8A:13;
then A3:
I is_halting_on Initialize s
by SCMFSA7B:def 8;
A4:
I is_closed_onInit s
by SCM_HALT:35;
hence
IC (Computation s2,k) = insloc 0
by A1, A2, Th21; :: thesis: ( ( for b being Int-Location holds (Computation s2,k) . b = (IExec I,s) . b ) & ( for f being FinSeq-Location holds (Computation s2,k) . f = (IExec I,s) . f ) )
set s4 = Computation s2,k;
set s3 = Computation (s +* (Initialized I)),(LifeSpan (s +* (Initialized I)));
A5: Computation (s +* (Initialized I)),(LifeSpan (s +* (Initialized I))) =
Computation ((Initialize s) +* (I +* (Start-At (insloc 0 )))),(LifeSpan (s +* (Initialized I)))
by SCMFSA8A:13
.=
Computation ((Initialize s) +* (I +* (Start-At (insloc 0 )))),(LifeSpan ((Initialize s) +* (I +* (Start-At (insloc 0 )))))
by SCMFSA8A:13
;
A6:
DataPart (Computation s2,k) = DataPart (Computation (s +* (Initialized I)),(LifeSpan (s +* (Initialized I))))
by A1, A2, A4, Th21;