reserve s for State of SCM+FSA,
  a, c for read-write Int-Location,
  aa, bb, cc,
  dd, x for Int-Location,
  f for FinSeq-Location,
  I, J for MacroInstruction of SCM+FSA,
  Ig for good MacroInstruction of SCM+FSA,
  i, k for Nat,
  p for Instruction-Sequence of SCM+FSA;
reserve I for MacroInstruction of SCM+FSA;

theorem Th28:
  aa <> c & bb <> c & s.intloc 0 = 1 implies
   IExec(FinSeqMin(f, aa, bb, c),p, s).f = s.f &
   IExec(FinSeqMin(f, aa, bb, c),p, s).aa = s.aa &
   IExec(FinSeqMin(f, aa, bb, c),p, s).bb = s.bb
proof
  assume that
A1: aa <> c and
A2: bb <> c and
A3: s.intloc 0 = 1;
  set a = aa, b = bb;
  set i0 = c := a;
  set s1 = Exec(i0, Initialized s),
      p1 = p;
A4: a = intloc 0 or a is read-write by SCMFSA_M:def 2;
A5: b = intloc 0 or b is read-write by SCMFSA_M:def 2;
A6: s1.b = (Initialized s).b by A2,SCMFSA_2:63
    .= s.b by A3,A5,SCMFSA_M:9,37;
  set cv = 3-rdRWNotIn {a, b, c};
  set aux2 = 2-ndRWNotIn {a, b, c};
  set aux1 = 1-stRWNotIn {a, b, c};
  set i10 = aux1 := (f, cv);
  set i11 = aux2 := (f, c);
  set I12 = if>0(aux2, aux1, Macro (c := cv), Stop SCM+FSA);
  set I1B = i10 ";" i11 ";" I12;
  set I1 = for-up ( cv, a, b, I1B);
A7: aux2 <> cv by SCMFSA_M:26;
  cv in {cv, a, b} by ENUMSET1:def 1;
  then
A8: cv in {cv, a, b} \/ UsedILoc I1B by XBOOLE_0:def 3;
A9: aux1 <> cv by SCMFSA_M:26;
A10: b in {a, b, c} by ENUMSET1:def 1;
  then
A11: cv <> b by SCMFSA_M:25;
A12: aux1 <> b by A10,SCMFSA_M:25;
A13: aux2 <> b by A10,SCMFSA_M:25;
A14: s1.a = (Initialized s).a by A1,SCMFSA_2:63
    .= s.a by A3,A4,SCMFSA_M:9,37;
  b in {cv, a, b} by ENUMSET1:def 1;
  then
A15: b in {cv, a, b} \/ UsedILoc I1B by XBOOLE_0:def 3;
A16: a in {a, b, c} by ENUMSET1:def 1;
  then
A17: cv <> a by SCMFSA_M:25;
A18: aux1 <> a by A16,SCMFSA_M:25;
A19: aux2 <> a by A16,SCMFSA_M:25;
A20: s1.f = (Initialized s).f by SCMFSA_2:63
    .= s.f by SCMFSA_M:37;
  a in {cv, a, b} by ENUMSET1:def 1;
  then
A21: a in {cv, a, b} \/ UsedILoc I1B by XBOOLE_0:def 3;
  c in {a, b, c} by ENUMSET1:def 1;
  then
A22: cv <> c by SCMFSA_M:25;
A23: s1.intloc 0 = (Initialized s). intloc 0 by SCMFSA_2:63
    .= 1 by SCMFSA_M:9;
  then
A24: I1 is_halting_on s1,p1 by Th24;
  per cases;
  suppose
A25: s.aa > s.bb;
    thus IExec(FinSeqMin(f, aa, bb, c),p,s).f = IExec(I1,p1,s1).f by A24,
SFMASTR1:15
      .= s.f by A23,A14,A6,A20,A25,Th22;
    a in {a, b} by TARSKI:def 2;
    then
A26: a in {a, b} \/ UsedILoc I1B by XBOOLE_0:def 3;
    thus IExec(FinSeqMin(f, aa, bb, c),p,s).aa = IExec(I1,p1,s1).aa by A24,
SFMASTR1:14
      .= s.aa by A17,A23,A14,A6,A25,A26,Th22;
    b in {a, b} by TARSKI:def 2;
    then
A27: b in {a, b} \/ UsedILoc I1B by XBOOLE_0:def 3;
    thus IExec(FinSeqMin(f, aa, bb, c),p,s).bb = IExec(I1,p1,s1).bb by A24,
SFMASTR1:14
      .= s.bb by A11,A23,A14,A6,A25,A27,Th22;
  end;
  suppose
A28: s.aa <= s.bb;
    set SF = StepForUp(cv, a, b, I1B,p1, s1);
A29: s.a-s.a <= s.b-s.a by A28,XREAL_1:9;
    then reconsider k = s.b - s.a +1 as Element of NAT by INT_1:3;
    defpred P[Nat] means 0 < $1 & $1 <= k implies SF.$1.intloc 0 =
    1 & SF.$1.cv = $1+s1.a & SF.$1.f = s1.f & SF.$1.a = s1.a & SF.$1.b = s1.b;
A30: ProperForUpBody cv, a, b, I1B, s1,p1 by Th15;
A31: for n being Nat st P[n] holds P[n+1]
    proof
      let n be Nat such that
A32:  P[n] and
      0 < n+1 and
A33:  n+1 <= k;
A34:  SF.n.intloc 0 = 1 & SF.n.cv = n+s1.a & SF.n.cv <= s1.b
      proof
        per cases;
        suppose
A35:      0 = n;
          hence SF.n.intloc 0 = 1 by A23,Th8;
          thus SF.n.cv = n+s1.a by A35,Th9;
          thus thesis by A14,A6,A28,A35,Th9;
        end;
        suppose
A36:      0 < n;
          hence SF.n.intloc 0 = 1 by A32,A33,NAT_1:13;
          thus SF.n.cv = n+s1.a by A32,A33,A36,NAT_1:13;
          n+1-1 <= s.b-s.a+1-1 by A33,XREAL_1:9;
          hence thesis by A14,A6,A32,A33,A36,NAT_1:13,XREAL_1:19;
        end;
      end;
      n < n+1 by XREAL_1:29;
      then n < k by A33,XXREAL_0:2;
      then
A37:  SF.(n+1) | (({cv, a, b} \/ UsedILoc I1B) \/ FinSeq-Locations) =
IExec(I1B ";" AddTo(cv, intloc 0),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n) |
      (({cv, a, b} \/ UsedILoc I1B) \/
      FinSeq-Locations) by A23,A14,A6,A30,Th19;
      then
A38:  SF.(n+1).f = IExec(I1B ";" AddTo(cv, intloc 0),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n).f
       by SCMFSA_M:28
        .= Exec(AddTo(cv, intloc 0),
      IExec(I1B,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).f
       by SFMASTR1:12
        .= IExec(I1B,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n).f
       by SCMFSA_2:64
        .= IExec(I12,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).f
       by SFMASTR1:8;
A39:  SF.(n+1).b = IExec(I1B ";" AddTo(cv, intloc 0),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n).b
       by A15,A37,SCMFSA_M:28
        .= Exec(AddTo(cv, intloc 0), IExec(I1B,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).b
       by SFMASTR1:11
        .= IExec(I1B,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n).b
       by A11,SCMFSA_2:64
        .= IExec(I12,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
         IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).b
       by SFMASTR1:7;
A40:  SF.(n+1).a = IExec(I1B ";" AddTo(cv, intloc 0),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
            SF.n).a by A21,A37,SCMFSA_M:28
        .= Exec(AddTo(cv, intloc 0), IExec(I1B,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).a
       by SFMASTR1:11
        .= IExec(I1B,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n).a
       by A17,SCMFSA_2:64
        .= IExec(I12,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).a
       by SFMASTR1:7;
A41:  SF.(n+1).cv = IExec(I1B ";" AddTo(cv, intloc 0),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n).cv
       by A8,A37,SCMFSA_M:28
        .= Exec(AddTo(cv, intloc 0), IExec(I1B,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).cv
       by SFMASTR1:11
        .= IExec(I1B,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/
       UsedILoc I1B), intloc 0)), SF.n).cv+IExec(I1B,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n).intloc 0 by SCMFSA_2:64
        .= IExec(I1B,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n).cv+1 by SCMFSA6B:11
        .= IExec(I12,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n)).cv+1 by SFMASTR1:7;
      set ss = IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n);
      set S0 = Initialized (SF.n);
      set S1 = Exec(i10, S0);
      set S2 = Exec(i11, Exec(i10, S0));
A42:  IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n).f = S2.f by SCMFSA6C:9
        .= S1.f by SCMFSA_2:72
        .= S0.f by SCMFSA_2:72;
A43:  IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n).intloc 0 = S2.intloc 0 by SCMFSA6C:8
        .= S1.intloc 0 by SCMFSA_2:72
        .= S0.intloc 0 by SCMFSA_2:72
        .= 1 by SCMFSA_M:9;
      then
A44:  DataPart IExec(Stop SCM+FSA,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n)) = DataPart
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)
       by Th1;
A45:  IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n).b
       = S2.b by SCMFSA6C:8
        .= S1.b by A13,SCMFSA_2:72
        .= S0.b by A12,SCMFSA_2:72;
A46:  IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n).a
       = S2.a by SCMFSA6C:8
        .= S1.a by A19,SCMFSA_2:72
        .= S0.a by A18,SCMFSA_2:72;
A47:  IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n).cv = S2.cv by SCMFSA6C:8
        .= S1.cv by A7,SCMFSA_2:72
        .= S0.cv by A9,SCMFSA_2:72;
A48:  Macro (c := cv) does not refer aux2 & Stop SCM+FSA does not refer
      aux2 by A7,Th2,Th3,SCMFSA8C:51;
      per cases;
      suppose
A49:    0 = n;
        thus thesis
        proof
          thus SF.(n+1).intloc 0 = 1 by A23,A14,A6,A30,A33,Th17;
A50:      S0.f = SF.0.f by A49,SCMFSA_M:37
            .= s.f by A20,Th13;
A51:      S0.cv = SF.0.cv by A49,SCMFSA_M:37
            .= s.a by A14,Th9;
A52:      S0.b = SF.0.b by A5,A34,A49,SCMFSA_M:9,37
            .= s1.b by A11,Th11;
A53:      S0.a = SF.0.a by A4,A34,A49,SCMFSA_M:9,37
            .= s1.a by A17,Th10;
          thus thesis
          proof
            per cases;
            suppose
A54:          ss.aux2 <= ss.aux1;
              hence
              SF.(n+1).cv = IExec(Stop SCM+FSA,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n))
              .cv+1 by A7,A48,A41,SCMFSA8B:40
                .= (n+1)+s1.a by A14,A44,A47,A49,A51,SCMFSA_M:2;
              thus SF.(n+1).f = IExec(Stop SCM+FSA,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).
              f by A48,A38,A54,SCMFSA8B:40
                .= s1.f by A20,A44,A42,A50,SCMFSA_M:2;
              thus SF.(n+1).a = IExec(Stop SCM+FSA,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).
              a by A19,A48,A40,A54,SCMFSA8B:40
                .= s1.a by A44,A46,A53,SCMFSA_M:2;
              thus SF.(n+1).b = IExec(Stop SCM+FSA,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).
              b by A13,A48,A39,A54,SCMFSA8B:40
                .= s1.b by A44,A45,A52,SCMFSA_M:2;
            end;
            suppose
A55:          ss.aux2 > ss.aux1;
A56:   IExec(Macro (c := cv),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.
              n)).cv
     = ( Exec(c := cv, Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n))).cv
              by SCMFSA6C:5
      .= (Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n)).cv by A22,SCMFSA_2:63;
    thus SF.(n+1).cv
   = (Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n)).cv+1 by A56,A7,A48,A41,A55,SCMFSA8B:40
      .= (n+1)+s1.a by A14,A47,A49,A51,SCMFSA_M:37;
    thus SF.(n+1).f = IExec(Macro(c := cv),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)
              ).f by A48,A38,A55,SCMFSA8B:40
    .= ( Exec(c := cv, Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n))).f by SCMFSA6C:5
                .= (Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n)).f by SCMFSA_2:63
    .= s1.f by A20,A42,A50,SCMFSA_M:37;
   thus SF.(n+1).a = IExec(Macro (c := cv),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n
              )).a by A19,A48,A40,A55,SCMFSA8B:40
    .= ( Exec(c := cv, Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n))).a by SCMFSA6C:5
                .= (Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n)).a by A1,SCMFSA_2:63
                .= s1.a by A4,A43,A46,A53,SCMFSA_M:9,37;
        thus SF.(n+1).b = IExec(Macro (c := cv),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n
              )).b by A13,A48,A39,A55,SCMFSA8B:40
    .= ( Exec(c := cv, Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)
       )).b
       by SCMFSA6C:5
                .= (Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).b
       by A2,SCMFSA_2:63
           .= s1.b by A5,A43,A45,A52,SCMFSA_M:9,37;
            end;
          end;
        end;
      end;
      suppose
A57:    0 < n;
        thus thesis
        proof
          thus SF.(n+1).intloc 0 = 1 by A23,A14,A6,A30,A33,Th17;
A58:      S0.cv = SF.n.cv by SCMFSA_M:37;
A59:      S0.a = s1.a by A4,A32,A33,A57,NAT_1:13,SCMFSA_M:9,37;
A60:      S0.b = s1.b by A5,A32,A33,A57,NAT_1:13,SCMFSA_M:9,37;
A61:      S0.f = s.f by A20,A32,A33,A57,NAT_1:13,SCMFSA_M:37;
          thus thesis
          proof
            per cases;
            suppose
A62:          ss.aux2 <= ss.aux1;
              hence
              SF.(n+1).cv = IExec(Stop SCM+FSA,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n))
              .cv+1 by A7,A48,A41,SCMFSA8B:40
                .= IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n).cv+1 by A44,SCMFSA_M:2
                .= (n+1)+s1.a by A34,A47,A58;
              thus SF.(n+1).f = IExec(Stop SCM+FSA,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).
              f by A48,A38,A62,SCMFSA8B:40
                .= s1.f by A20,A44,A42,A61,SCMFSA_M:2;
              thus SF.(n+1).a = IExec(Stop SCM+FSA,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).
              a by A19,A48,A40,A62,SCMFSA8B:40
                .= s1.a by A44,A46,A59,SCMFSA_M:2;
              thus SF.(n+1).b = IExec(Stop SCM+FSA,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).
              b by A13,A48,A39,A62,SCMFSA8B:40
                .= s1.b by A44,A45,A60,SCMFSA_M:2;
            end;
            suppose
A63:          ss.aux2 > ss.aux1;
A64: IExec(Macro (c := cv),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.
              n)).cv
    = ( Exec(c := cv, Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n))).cv
              by SCMFSA6C:5
                .= (Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n)).cv by A22,SCMFSA_2:63
                .= IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n).cv by SCMFSA_M:37;
              thus
              SF.(n+1).cv = IExec(Macro (c := cv),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.
              n)).cv+1 by A7,A48,A41,A63,SCMFSA8B:40
                .= (n+1)+s1.a by A34,A47,A58,A64;
              thus SF.(n+1).f
               = IExec(Macro(c := cv),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)
              ).f by A48,A38,A63,SCMFSA8B:40
       .= ( Exec(c := cv, Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n))).f by SCMFSA6C:5
                .= (Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      SF.n)).f by SCMFSA_2:63
                .= s1.f by A20,A42,A61,SCMFSA_M:37;
              thus SF.(n+1).a
               = IExec(Macro (c := cv),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n
              )).a by A19,A48,A40,A63,SCMFSA8B:40
      .= ( Exec(c := cv, Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)
        )).a by SCMFSA6C:5
                .= (Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).a
       by A1,SCMFSA_2:63
                .= s1.a by A4,A43,A46,A59,SCMFSA_M:9,37;
              thus SF.(n+1).b
              = IExec(Macro (c := cv),
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)),
      IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n
              )).b by A13,A48,A39,A63,SCMFSA8B:40
    .= ( Exec(c := cv, Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)
      )).b by SCMFSA6C:5
                .= (Initialized IExec(i10 ";" i11,
   p1 +* while>0(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B),
     I1B ";" AddTo(cv, intloc 0) ";"
      SubFrom(1-stRWNotIn ({cv, a, b} \/ UsedILoc I1B), intloc 0)), SF.n)).b
       by A2,SCMFSA_2:63
                .= s1.b by A5,A43,A45,A60,SCMFSA_M:9,37;
            end;
          end;
        end;
      end;
    end;
A65: P[0];
A66: for n being Nat holds P[n] from NAT_1:sch 2(A65, A31);
A67: DataPart IExec(I1,p1,s1) = DataPart SF.k by A23,A14,A6,Th23;
    thus IExec(FinSeqMin(f, aa, bb, c),p,s).f = IExec(I1,p1,s1).f by A24,
SFMASTR1:15
      .= SF.k.f by A67,SCMFSA_M:2
      .= s.f by A20,A29,A66;
    thus IExec(FinSeqMin(f, aa, bb, c),p,s).aa = IExec(I1,p1,s1).a by A24,
SFMASTR1:14
      .= SF.k.a by A67,SCMFSA_M:2
      .= s.aa by A14,A29,A66;
    thus IExec(FinSeqMin(f, aa, bb, c),p,s).bb = IExec(I1,p1,s1).b by A24,
SFMASTR1:14
      .= SF.k.b by A67,SCMFSA_M:2
      .= s.bb by A6,A29,A66;
  end;
end;
