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 Th16:
 for J being good really-closed MacroInstruction of SCM+FSA holds
  StepTimes(a,J,p,s).k.intloc 0 = 1 &
  J is_halting_on Initialized StepTimes(a,J,p,s).k,p+*times*(a,J) &
StepTimes(a,J,p,s).k.(1-stRWNotIn ({a} \/ UsedILoc J)) > 0
 implies StepTimes(a,J,p,s).(k+1) | ((UsedILoc J) \/ FinSeq-Locations)
  = IExec(J,p+*times*(a,J),StepTimes(a,J,p,s).k)
       | ((UsedILoc J) \/ FinSeq-Locations)
proof let J be good really-closed MacroInstruction of SCM+FSA;
  set UFLI = FinSeq-Locations;
  set I = J;
  set ST = StepTimes(a,I,p,s);
  set au = 1-stRWNotIn ({a} \/ UsedILoc I);
  set SW = StepWhile>0 (au, I ";" SubFrom(au, intloc 0), p, Exec(au := a,
  Initialized s));
  set UILI = UsedILoc I;
  assume that
A1: ST.k.intloc 0 = 1 and
A2: I is_halting_on Initialized ST.k,p+*times*(a,I) and
A3: ST.k.au > 0;
  Macro SubFrom(au, intloc 0)
   is_halting_on IExec(I,p+*times*(a,I),ST.k),p+*times*(a,I) by SCMFSA7B:19;
  then I ";" SubFrom(au, intloc 0)
    is_halting_on Initialized ST.k,p+*times*(a,I) by A2,SFMASTR1:3;
  then
A4: DataPart SW.(k+1) =
 DataPart IExec(I ";" SubFrom(au,intloc 0),p+*times*(a,I),ST.k) by A1,A3,
SCMFSA9A:32;
A5: now
    let x be Int-Location;
A6: not au in {a} \/ UILI by SCMFSA_M:25;
    assume x in UILI;
    then
A7: au <> x by A6,XBOOLE_0:def 3;
    thus ST.(k+1).x
        = IExec(I ";" SubFrom(au,intloc 0),p+*times*(a,I),ST.k).x
           by A4,SCMFSA_M:2
      .= Exec(SubFrom(au, intloc 0), IExec(I,p+*times*(a,I),ST.k)).x
            by A2,SFMASTR1:11
      .= IExec(I,p+*times*(a,I),ST.k).x by A7,SCMFSA_2:65;
  end;
  now
    let x be FinSeq-Location;
    thus ST.(k+1).x
       = IExec(I ";" SubFrom(au,intloc 0),p+*times*(a,I),ST.k).x by A4,
SCMFSA_M:2
      .= Exec(SubFrom(au, intloc 0), IExec(I,p+*times*(a,I),ST.k)).x
           by A2,SFMASTR1:12
      .= IExec(I,p+*times*(a,I),ST.k).x by SCMFSA_2:65;
  end;
  hence thesis by A5,SCMFSA_M:28;
end;
