reserve m,n for Nat,
  I for Program of SCM+FSA,
  s,s1,s2 for State of SCM+FSA,
  a for Int-Location,
  f for FinSeq-Location,
  p,p1,p2 for Instruction-Sequence of SCM+FSA;
reserve P,P1,P2,Q for Instruction-Sequence of SCM+FSA;

theorem Th48:
  for s being State of SCM+FSA,
      I being good InitHalting really-closed MacroInstruction
  of SCM+FSA, a being read-write Int-Location st I does not destroy a
holds IExec(I ";" SubFrom(a,intloc 0),p,s).a = s.a - 1 &
 (s.a > 0 implies DataPart IExec(Times(a,I),p,s)
  = DataPart IExec(Times(a,I),p,IExec(I ";" SubFrom(a,intloc 0),p,s)))
proof
  let s be State of SCM+FSA;
  let I be good InitHalting really-closed MacroInstruction of SCM+FSA;
  let a be read-write Int-Location;
  assume that
A1: I does not destroy a;
   set I1 = I ";" SubFrom(a,intloc 0);
   set ss = IExec(I1,p,s);
   set s0 = Initialized s;
  thus IExec(I ";" SubFrom(a,intloc 0),p,s).a = s.a - 1 by A1,Lm10;
  assume
A2: s.a > 0;
  reconsider II = I ";" SubFrom(a,intloc 0)
   as good InitHalting really-closed MacroInstruction of SCM+FSA;

   for s be State of SCM+FSA,P st s.a > 0 holds IExec(II,P,s).a < s.a
    proof let s be State of SCM+FSA,P;
     assume s.a > 0;
      IExec(I ";" SubFrom(a,intloc 0),P,s).a = s.a - 1 by A1,Lm10;
     hence IExec(II,P,s).a < s.a by
     XREAL_1:44;
    end;
   then Times(a,I) is InitHalting by Lm9;
   then DataPart IExec(while>0(a,II),p,s) =
    DataPart IExec(while>0(a,II),p,IExec(II,p,s)) by A2,Lm8;
 hence DataPart IExec(Times(a,I),p,s)
   = DataPart IExec(Times(a,I),p,IExec(I ";" SubFrom(a,intloc 0),p,s));
end;
