let s be State of SCM+FSA ; :: thesis: for I being Program of SCM+FSA
for a being read-write Int-Location st I is_closed_onInit s & I is_halting_onInit s & s . a > 0 holds
( IC (Computation (s +* (Initialized (while>0 a,I))),((LifeSpan (s +* (Initialized I))) + 3)) = insloc 0 & ( for k being Element of NAT st k <= (LifeSpan (s +* (Initialized I))) + 3 holds
IC (Computation (s +* (Initialized (while>0 a,I))),k) in dom (while>0 a,I) ) )

let I be Program of SCM+FSA ; :: thesis: for a being read-write Int-Location st I is_closed_onInit s & I is_halting_onInit s & s . a > 0 holds
( IC (Computation (s +* (Initialized (while>0 a,I))),((LifeSpan (s +* (Initialized I))) + 3)) = insloc 0 & ( for k being Element of NAT st k <= (LifeSpan (s +* (Initialized I))) + 3 holds
IC (Computation (s +* (Initialized (while>0 a,I))),k) in dom (while>0 a,I) ) )

let a be read-write Int-Location ; :: thesis: ( I is_closed_onInit s & I is_halting_onInit s & s . a > 0 implies ( IC (Computation (s +* (Initialized (while>0 a,I))),((LifeSpan (s +* (Initialized I))) + 3)) = insloc 0 & ( for k being Element of NAT st k <= (LifeSpan (s +* (Initialized I))) + 3 holds
IC (Computation (s +* (Initialized (while>0 a,I))),k) in dom (while>0 a,I) ) ) )

set s0 = Initialize s;
set sw = s +* (Initialized (while>0 a,I));
set sI = s +* (Initialized I);
set s0I = (Initialize s) +* (I +* (Start-At (insloc 0 )));
set s0w = (Initialize s) +* ((while>0 a,I) +* (Start-At (insloc 0 )));
assume A1: I is_closed_onInit s ; :: thesis: ( not I is_halting_onInit s or not s . a > 0 or ( IC (Computation (s +* (Initialized (while>0 a,I))),((LifeSpan (s +* (Initialized I))) + 3)) = insloc 0 & ( for k being Element of NAT st k <= (LifeSpan (s +* (Initialized I))) + 3 holds
IC (Computation (s +* (Initialized (while>0 a,I))),k) in dom (while>0 a,I) ) ) )

assume A2: I is_halting_onInit s ; :: thesis: ( not s . a > 0 or ( IC (Computation (s +* (Initialized (while>0 a,I))),((LifeSpan (s +* (Initialized I))) + 3)) = insloc 0 & ( for k being Element of NAT st k <= (LifeSpan (s +* (Initialized I))) + 3 holds
IC (Computation (s +* (Initialized (while>0 a,I))),k) in dom (while>0 a,I) ) ) )

assume A3: s . a > 0 ; :: thesis: ( IC (Computation (s +* (Initialized (while>0 a,I))),((LifeSpan (s +* (Initialized I))) + 3)) = insloc 0 & ( for k being Element of NAT st k <= (LifeSpan (s +* (Initialized I))) + 3 holds
IC (Computation (s +* (Initialized (while>0 a,I))),k) in dom (while>0 a,I) ) )

A4: I is_closed_on Initialize s by A1, SCM_HALT:40;
A5: I is_halting_on Initialize s by A2, SCM_HALT:41;
A6: (Initialize s) . a > 0 by A3, SCMFSA6C:3;
A7: s +* (Initialized I) = (Initialize s) +* (I +* (Start-At (insloc 0 ))) by SCMFSA8A:13;
A8: s +* (Initialized (while>0 a,I)) = (Initialize s) +* ((while>0 a,I) +* (Start-At (insloc 0 ))) by SCMFSA8A:13;
hence IC (Computation (s +* (Initialized (while>0 a,I))),((LifeSpan (s +* (Initialized I))) + 3)) = insloc 0 by A4, A5, A6, A7, SCMFSA_9:47; :: thesis: for k being Element of NAT st k <= (LifeSpan (s +* (Initialized I))) + 3 holds
IC (Computation (s +* (Initialized (while>0 a,I))),k) in dom (while>0 a,I)

thus for k being Element of NAT st k <= (LifeSpan (s +* (Initialized I))) + 3 holds
IC (Computation (s +* (Initialized (while>0 a,I))),k) in dom (while>0 a,I) by A4, A5, A6, A7, A8, SCMFSA_9:47; :: thesis: verum