reserve s, s1, s2 for State of SCM+FSA,
  p, p1 for Instruction-Sequence of SCM+FSA,
  a, b for Int-Location,
  d for read-write Int-Location,
  f for FinSeq-Location,
  I for MacroInstruction of SCM+FSA,
  J for good MacroInstruction of SCM+FSA,
  k, m for Nat;

theorem Th8:
 for J being good really-closed MacroInstruction of SCM+FSA holds
  StepTimes(a,J,p,s).k.intloc 0 = 1 &
  J is_halting_on StepTimes(a,J,p,s).k, p+*times*(a,J) implies
   StepTimes(a,J,p,s).(k+1).intloc 0 = 1 &
  (StepTimes(a,J,p,s).k.(1-stRWNotIn ({a} \/ UsedILoc J)) > 0
  implies StepTimes(a,J,p,s).(k+1).(1-stRWNotIn ({a} \/ UsedILoc J)) =
  StepTimes(a,J,p,s).k.(1-stRWNotIn ({a} \/ UsedILoc J)) - 1)
proof let J be good really-closed MacroInstruction of SCM+FSA;
  set I = J;
  assume that
A1: StepTimes(a,I,p,s).k.intloc 0 = 1 and
A2: I is_halting_on StepTimes(a,I,p,s).k, p+*times*(a,I);
  set ST = StepTimes(a,I,p,s);
A3: I is_halting_on Initialized ST.k, p+*times*(a,I) by A1,A2,SCMFSA8B:42;
  set au = 1-stRWNotIn ({a} \/ UsedILoc I);
  set SW = StepWhile>0(au, I ";" SubFrom(au, intloc 0),p,
        Exec(au := a,Initialized s));
  Macro SubFrom(au, intloc 0)
       is_halting_on IExec(I,p+*times*(a,I),ST.k), p+*times*(a,I)
             by SCMFSA7B:19;
  then
A4: I ";" SubFrom(au, intloc 0)
      is_halting_on Initialized ST.k, p+*times*(a,I) by A3,SFMASTR1:3;
  hereby
    per cases;
    suppose
      SW.k.au <= 0;
      then DataPart SW.(k+1) = DataPart ST.k by SCMFSA9A:31;
      hence StepTimes(a,I,p,s).(k+1).intloc 0 = 1 by A1,SCMFSA_M:2;
    end;
    suppose
      SW.k.au > 0;
      then
      DataPart SW.(k+1) =
       DataPart IExec(I ";" SubFrom(au, intloc 0),p+*times*(a,I), ST.k)
            by A1,A4,SCMFSA9A:32;
      hence
      ST.(k+1).intloc 0
       = IExec(I ";" SubFrom(au, intloc 0),p+*times*(a,I),ST.k).intloc 0
            by SCMFSA_M:2
      .= Exec(SubFrom(au, intloc 0), IExec(I,p+*times*(a,I),ST.k)).intloc 0
            by A3,SFMASTR1:11
        .= IExec(I,p+*times*(a,I), ST.k).intloc 0 by SCMFSA_2:65
        .= 1 by A3,SCMFSA8C:67;
    end;
  end;
  not au in {a} \/ UsedILoc I by SCMFSA_M:25;
  then
A5: not au in UsedILoc I by XBOOLE_0:def 3;
  assume ST.k.au > 0;
  then DataPart SW.(k+1)
   = DataPart IExec(I ";" SubFrom(au, intloc 0),p+*times*(a,I),ST.k)
  by A1,A4,SCMFSA9A:32;
  hence ST.(k+1).au
   = IExec(I ";" SubFrom(au, intloc 0),p+*times*(a,I), ST.k).au by SCMFSA_M:2
    .= Exec(SubFrom(au, intloc 0), IExec(I,p+*times*(a,I), ST.k)).au
     by A3,SFMASTR1:11
    .= IExec(I,p+*times*(a,I),ST.k).au - IExec(I,p+*times*(a,I),ST.k).intloc 0
     by SCMFSA_2:65
    .= IExec(I,p+*times*(a,I), ST.k).au - 1 by A3,SCMFSA8C:67
    .= (Initialized ST.k).au - 1 by A3,A5,Th1
    .= ST.k.au - 1 by SCMFSA_M:37;
end;
