reserve m for Nat;
reserve P for (the InstructionsF of SCM+FSA)-valued ManySortedSet of NAT;

theorem
  for s being 0-started State of SCM+FSA st s.intloc 0 = 1 for f
  being FinSeq-Location, p being FinSequence of INT st f:=p c= P
   holds P halts_on s &
    (Result(P,s)).f = p &
 (for b being Int-Location st b <> intloc 1 & b <> intloc 2
  holds (Result(P,s)).b = s.b) &
 for g being FinSeq-Location st g <> f
  holds (Result(P,s)).g = s.g
proof
  set D = the InstructionsF of SCM+FSA;
  set V = intloc 2;
  set I = intloc 1;
  set O = intloc 0;
A1: I <> O by AMI_3:10;
A2: I <> V by AMI_3:10;
  let s be 0-started State of SCM+FSA such that
A3: s.O = 1;
  let f be FinSeq-Location, p be FinSequence of INT such that
A4: f:=p c= P;
  set q = aSeq(I,len p)^<% f:=<0,...,0>I %>^aSeq(f,p)^Stop SCM+FSA;
A5: for i,k being Nat st i < len q holds P.i= q.i
by A4,GRFUNC_1:2,AFINSQ_1:86;
  set q0 = aSeq(I,len p) ^ <% f:=<0,...,0>I %>;
  consider pp being XFinSequence of D^omega such that
A6: len pp = len p and
A7: for k being Nat st k < len pp
   ex i being Integer st i = p.(k+1) &
   pp.k = (aSeq(I,k+1) ^ aSeq(V,i) ^ <% (f,I):=V %>) and
A8: aSeq(f,p) = FlattenSeq pp by Def3;
  len Stop SCM+FSA = 1 by AFINSQ_1:34;
  then len q = len (q0 ^ FlattenSeq pp) + 1 by A8,AFINSQ_1:17;
  then
A9: len (q0 ^ FlattenSeq pp) < len q by NAT_1:13;
  defpred P[XFinSequence] means $1 c= pp implies
   (ex pp0 being XFinSequence of D^omega  st
   (pp0 = $1 &
    (for i being Nat st i <= len (q0 ^ FlattenSeq pp0)
       holds IC Comput(P,s,i) =  i) &
   ((Comput(P,s,len (q0^ FlattenSeq pp0)).f) | len pp0
    = p | len pp0) &
   len (Comput(P,s,len(q0 ^FlattenSeq pp0)).f) = len p &
   (for b being Int-Location st b <> I & b <> V
  holds Comput(P,s,len (q0 ^ FlattenSeq pp0)).b = s.b) &
  (for g being FinSeq-Location st g <> f
   holds Comput(P,s,len (q0 ^ FlattenSeq pp0)).g = s.g)));
A10: V <> O by AMI_3:10;
A11: for r being XFinSequence, x being object st P[r] holds P[r ^ <% x %>]
  proof
    let r be XFinSequence, x be object;
    assume
A12: P[r];
    set r1 = len r;
    len<% x %> =1 by AFINSQ_1:34;
    then len (r ^ <% x %>) = r1+1 by AFINSQ_1:17;
    then r1 < len (r ^ <% x %>) by XREAL_1:29;
    then
A13: r1 in dom (r ^ <% x %>) by AFINSQ_1:86;
    assume
A14: r ^ <% x %> c= pp;
    then
A15: dom (r ^ <% x %>) c= dom pp by GRFUNC_1:2;
    then
A16:   r1 < len pp by A13,AFINSQ_1:86;
    then consider pr1 being Integer such that
A17: pr1 = p.(r1+1) and
A18: pp.r1 = aSeq(I,r1+1) ^ aSeq(V,pr1) ^ <% (f,I):=V %> by A7;
     1 <= r1+1 & r1+1 <= len pp by A16,NAT_1:11,13;
     then
A19:  r1+1 in Seg len pp;
    r c= r ^ <% x %> by AFINSQ_1:74;
    then consider pp0 being XFinSequence of D^omega such that
A20: pp0 = r and
A21: for i being Nat st i <= len (q0 ^ FlattenSeq pp0)
    holds IC Comput(P,s,i) =  i and
A22: (Comput(P,s,len (q0 ^ FlattenSeq pp0)).f) | len pp0 = p |
     len pp0 and
A23: len (Comput(P,s,len (q0 ^ FlattenSeq pp0)).f) = len p and
A24: for b being Int-Location st b <> I & b <> V holds Comput(P,s,
    len (q0 ^ FlattenSeq pp0)).b = s.b and
A25: for h being FinSeq-Location st h <> f holds Comput(P,s,len (
q0 ^ FlattenSeq pp0)).h = s.h by A12,A14,XBOOLE_1:1;
A26: x = (r ^ <% x %>).r1 by AFINSQ_1:36
      .= pp.r1 by A14,A13,GRFUNC_1:2;
    then x in D^omega by A13,A15,FUNCT_1:102;
    then reconsider pp1 = pp0 ^ <% x %> as XFinSequence of D^omega;
    take pp1;
    thus pp1 = r ^ <% x %> by A20;
    reconsider x as Element of D^omega by A13,A15,A26,FUNCT_1:102;
A27: FlattenSeq pp1 = FlattenSeq pp0 ^ FlattenSeq <% x %> by AFINSQ_2:75
      .= FlattenSeq pp0 ^ x by AFINSQ_2:73;
A28: Seg len p = dom p by FINSEQ_1:def 3;
    len pp1 <= len p by A6,A14,A20,NAT_1:43;
    then
A29:   Seg len pp1 c= Seg len p by FINSEQ_1:5;
    then
A30: dom (p | Seg len pp1) = Seg len pp1 by A28,RELAT_1:62;
    set c2 = len (q0 ^ FlattenSeq pp0 ^ aSeq(I,r1+1));
    set c1 = len (q0 ^ FlattenSeq pp0);
    set s1 = Comput(P,s,c1);
    set s2 = Comput(P,s,c2);
A31: x = aSeq(I,r1+1) ^ (aSeq(V,pr1) ^ <% (f,I):=V %>) by A18,A26,AFINSQ_1:27;
    then
A32: len q0 + len FlattenSeq pp1 = len q0 + len (FlattenSeq pp0 ^ aSeq(I,
    r1+1) ^ (aSeq(V,pr1) ^ <% (f,I):=V %>)) by A27,AFINSQ_1:27
      .= len (q0 ^ (FlattenSeq pp0 ^ aSeq(I,r1+1) ^
      (aSeq(V,pr1) ^ <% (f,I):=V%>))) by AFINSQ_1:17
      .= len (q0 ^ FlattenSeq pp0 ^ aSeq(I,r1+1) ^
         (aSeq(V,pr1) ^ <% (f,I):=V%>)) by Lm2
      .= c2 + len (aSeq(V,pr1) ^ <% (f,I):=V %>) by AFINSQ_1:17
      .= c2 + (len aSeq(V,pr1) + len <% (f,I):=V %>) by AFINSQ_1:17
      .= c2 + (len aSeq(V,pr1) + 1) by AFINSQ_1:33
      .= c2 + len aSeq(V,pr1) + 1;
    then
A33: len (q0 ^ FlattenSeq pp1) = c2 + len aSeq(V,pr1) + 1 by AFINSQ_1:17;
A34: FlattenSeq pp1 c= FlattenSeq pp by A14,A20,AFINSQ_2:82;
A35: now
      let p be XFinSequence;
      assume p c= x;
      then FlattenSeq pp0 ^ p c= FlattenSeq pp0 ^ x by AFINSQ_2:81;
      then FlattenSeq pp0 ^ p c= FlattenSeq pp by A34,A27,XBOOLE_1:1;
      then q0 ^ (FlattenSeq pp0 ^ p) c= q0 ^ FlattenSeq pp by AFINSQ_2:81;
      then
A36:  q0 ^ FlattenSeq pp0 ^ p c= q0 ^ FlattenSeq pp by AFINSQ_1:27;
      q0 ^ FlattenSeq pp c= q by A8,AFINSQ_1:74;
      hence q0 ^ FlattenSeq pp0 ^ p c= q by A36,XBOOLE_1:1;
    end;
    IC s1 =  c1 by A21;
    then reconsider s1 as c1-started State of SCM+FSA by MEMSTR_0:def 12;
A37: s1.O = 1 by A1,A10,A3,A24;
A38: for c being Nat st c in dom aSeq(I,r1+1)
     holds aSeq(I,r1+1).c = P.(c1 + c)
    proof
      let c be Nat;
      assume
A39:  c in dom aSeq(I,r1+1);
      then
A40:  c1 + c in dom (q0 ^ FlattenSeq pp0 ^ aSeq(I,r1+1)) by AFINSQ_1:23;
A41:  q0 ^ FlattenSeq pp0 ^ aSeq(I,r1+1) c= q by A31,A35,AFINSQ_1:74;
      then
A42:   dom (q0 ^ FlattenSeq pp0 ^ aSeq(I,r1+1)) c= dom q by GRFUNC_1:2;
      thus aSeq(I,r1+1).c = (q0 ^ FlattenSeq pp0 ^ aSeq(I,r1+1)).(c1 + c)
       by A39,AFINSQ_1:def 3
        .= q.(c1 + c) by A41,A40,GRFUNC_1:2
        .= P. (c1 + c) by A4,A42,A40,GRFUNC_1:2;
    end;
    then
A43: Comput(P,s1,len aSeq(I,r1+1)).I = r1+1 by Th4,A37,A1;
A44: q0 ^ FlattenSeq pp1 = q0 ^ FlattenSeq pp0 ^ x by A27,AFINSQ_1:27;
    then len (q0 ^ FlattenSeq pp1) <= len q by A35,NAT_1:43;
    then
A45: c2 + len aSeq(V,pr1) < len q by A33,NAT_1:13;
A46: now
      let i be Nat;
      assume i <= len aSeq(I,r1+1);
      hence  (c1 + i) = IC Comput(P,s1,i) by A38,Th4,A37,A1
        .= IC Comput(P,s,c1+i) by EXTPRO_1:4;
    end;
    set c3 = len (q0 ^ FlattenSeq pp0 ^ aSeq(I,r1+1) ^ aSeq(V,pr1));
A47: c3 = c2 + len aSeq(V,pr1) by AFINSQ_1:17;
A48: c2 = c1 + len aSeq(I,r1+1) by AFINSQ_1:17;
    then
A49: s2 = Comput(P,Comput(P
,s,c1),len aSeq(I,r1+1)) by EXTPRO_1:4;
    IC s2 =  c2 by A48,A49,A38,Th4,A37,A1;
    then reconsider s2 as c2-started State of SCM+FSA by MEMSTR_0:def 12;
A50: s2.O = 1 by A49,A38,Th4,A37,A1;
A51: for c being Nat st c in dom aSeq(V,pr1)
      holds aSeq(V,pr1).c = P.(c2 + c)
    proof
      let c be Nat;
      assume
A52:  c in dom aSeq(V,pr1);
      then
A53:  c2 + c in dom (q0 ^ FlattenSeq pp0 ^ aSeq(I,r1+1) ^ aSeq(V,pr1)) by
AFINSQ_1:23;
      q0 ^ FlattenSeq pp0 ^ (aSeq(I,r1+1) ^ aSeq(V,pr1)) c= q by A18,A26,A35,
AFINSQ_1:74;
      then
A54:  q0 ^FlattenSeq pp0^aSeq(I,r1+1) ^ aSeq(V,pr1) c= q by AFINSQ_1:27;
      then
A55: dom (q0 ^ FlattenSeq pp0 ^ aSeq(I,r1+1) ^ aSeq(V,pr1)) c= dom q by
GRFUNC_1:2;
      thus aSeq(V,pr1).c
          = (q0 ^ FlattenSeq pp0 ^ aSeq(I,r1+1) ^ aSeq(V,pr1)).(c2 + c)
               by A52,AFINSQ_1:def 3
        .= q.(c2 + c) by A53,A54,GRFUNC_1:2
        .= P. (c2 + c) by A4,A55,A53,GRFUNC_1:2;
    end;
    then
A56: Comput(P,s2,len aSeq(V,pr1)).V = pr1 by Th4,A50,A10;
A57: Comput(P,s,c3).f = Comput(P,s,c2 + len aSeq(V,
pr1)).f by AFINSQ_1:17
      .= Comput(P,s2,len aSeq(V,pr1)).f by EXTPRO_1:4
      .= s2.f by A51,Th4,A50,A10
      .= s1.f by A49,A38,Th4,A37,A1;
A58: now
      let i be Nat;
      assume i <= len aSeq(V,pr1);
      hence  (c2 + i) = IC Comput(P,s2,i)
       by A51,Th4,A50,A10
        .= IC Comput(P,s,c2+i) by EXTPRO_1:4;
    end;
A59: for i being Nat st i < len (q0 ^ FlattenSeq pp1) holds IC
    Comput(P,s,i) =  i
    proof
      let i be Nat;
      assume
A60:  i < len (q0 ^ FlattenSeq pp1);
A61:  now
A62:    i < len q0 + len FlattenSeq pp1 by A60,AFINSQ_1:17;
        assume
A63:    not i <= c1;
        assume not (c1 + 1 <= i & i <= c2);
        hence c2 + 1 <= i & i <= c2 + len aSeq(V,pr1) by A32,A63,A62,NAT_1:13;
      end;
      per cases by A61;
      suppose
        i <= len (q0 ^ FlattenSeq pp0);
        hence thesis by A21;
      end;
      suppose
A64:    c1 + 1 <= i & i <= c2;
        then c1 + 1 - c1 <= i - c1 by XREAL_1:9;
        then reconsider ii = i - c1 as Element of NAT by INT_1:3;
        i - c1 <= c2 - c1 by A64,XREAL_1:9;
        hence  i = IC Comput(P,s,c1+ii) by A48,A46
          .= IC Comput(P,s,i);
      end;
      suppose
A65:    c2 + 1 <= i & i <= c2 + len aSeq(V,pr1);
        then c2 + 1 - c2 <= i - c2 by XREAL_1:9;
        then reconsider ii = i - c2 as Element of NAT by INT_1:3;
        i - c2 <= c2 + len aSeq(V,pr1) - c2 by A65,XREAL_1:9;
        hence  i = IC Comput(P,s,c2+ii) by A58
          .= IC Comput(P,s,i);
      end;
    end;
A66: c3 = c1 + len aSeq(I,r1+1) + len aSeq(V,pr1) by A48,AFINSQ_1:17;
A67:  P/.IC Comput(P,s,c3) = P.IC Comput(P,s,c3) by PBOOLE:143;

 q0 ^ FlattenSeq pp0 ^ x c= q by A35;
    then consider rq being XFinSequence of D such that
A68:   (q0 ^ FlattenSeq pp0 ^ x)^rq = q by AFINSQ_2:80;
A69: len (q0 ^ FlattenSeq pp1) = c2 + len aSeq(V,pr1) + 1 by A32,AFINSQ_1:17;
    then
A70: len (q0 ^ FlattenSeq pp1) > c2 + len aSeq(V,pr1) by NAT_1:13;
    then
A71: c3 in dom(q0 ^ FlattenSeq pp0 ^ x)
       by A44,A47,AFINSQ_1:66;
A72: 0 in dom<% (f,I):=V %> by TARSKI:def 1;
    len<% (f,I):=V %> = 1 by AFINSQ_1:34;
    then len(aSeq(I,r1+1) ^ aSeq(V,pr1) ^ <% (f,I):=V %>)
      = len (aSeq(I,r1+1) ^ aSeq(V,pr1)) + 1 by AFINSQ_1:17;
    then len (aSeq(I,r1+1) ^ aSeq(V,pr1))
      < len(aSeq(I,r1+1) ^ aSeq(V,pr1) ^ <% (f,I):=V %>) by XREAL_1:29;
    then
A73: len (aSeq(I,r1+1) ^ aSeq(V,pr1))
        in dom(aSeq(I,r1+1) ^ aSeq(V,pr1) ^ <% (f,I):=V %>) by AFINSQ_1:66;
    CurInstr(P,Comput(P,s,c3))
     = P. c3 by A47,A59,A67,A70
      .= q.(c3 ) by A5,A47,A45
      .= (q0 ^ FlattenSeq pp0 ^ x).
         (c1 + (len aSeq(I,r1+1) + (len aSeq(V,pr1))))
             by A66,A71,A68,AFINSQ_1:def 3
      .= (q0 ^ FlattenSeq pp0 ^ x).
         (c1 + len(aSeq(I,r1+1) ^ aSeq(V,pr1))) by AFINSQ_1:17;
    then
A74: CurInstr(P,
      Comput(P,s,c3))
       = (aSeq(I,r1+1) ^ aSeq(V,pr1) ^ <% (f,I):=V %>).
          (len (aSeq(I,r1+1) ^ aSeq(V,pr1))+0) by A73,A18,A26,AFINSQ_1:def 3
      .= <% (f,I):=V %>.0 by A72,AFINSQ_1:def 3
      .= (f,I):=V;
A75: Comput(P,s,c3+1) = Following(P,Comput(P,s,c3)) by EXTPRO_1:3
      .= Exec((f,I):=V, Comput(P,s,c3)) by A74;
    then
A76: IC Comput(P,s,len (q0 ^ FlattenSeq pp1))
       = IC Comput(P,s,c3)+1 by A47,A33,SCMFSA_2:73
      .=  len (q0 ^ FlattenSeq pp1) by A47,A69,A59,A70;
    thus for i being Nat st i <= len (q0 ^ FlattenSeq pp1) holds IC
    Comput(P,s,i) =  i
    proof
      let i be Nat;
      assume
A77:  i <= len (q0 ^ FlattenSeq pp1);
      per cases by A77,XXREAL_0:1;
      suppose
        i < len (q0 ^ FlattenSeq pp1);
        hence thesis by A59;
      end;
      suppose
        i = len (q0 ^ FlattenSeq pp1);
        hence thesis by A76;
      end;
    end;
A78: Comput(P,s,c3).V
   = Comput(P,s,c2 + len aSeq(V,pr1)).V by AFINSQ_1:17
      .= p.(r1+1) by A17,A56,EXTPRO_1:4;
    consider ki being Nat such that
A79: ki = |. Comput(P,s,c3).I.| and
A80: Exec((f,I):=V, Comput(P,s,c3)).f
     = Comput(P,s,c3).f +*(ki,Comput(P,s,c3).V)
     by SCMFSA_2:73;
A81: ki = |. Comput(P,s,c2 + len aSeq(V,pr1)).I .| by A79,AFINSQ_1:17
      .= |. Comput(P,s2,len aSeq(V,pr1)).I .| by EXTPRO_1:4
      .= |. s2.I .| by A2,A51,Th4,A50,A10
      .= r1+1 by A49,A43,ABSVALUE:def 1;
A82: dom (s1.f) = Seg len p by A23,FINSEQ_1:def 3;
    for i being Nat st i in Seg len pp1
     holds ((Comput(P,s,len (q0 ^ FlattenSeq pp1)).f)
          | Seg len pp1).i
       = (p | Seg len pp1).i
    proof
      let i be Nat;
      assume
A83:  i in Seg len pp1;
      then
A84:  i <= len pp1 by FINSEQ_1:1;
   len<% x %> = 1 by AFINSQ_1:34;
      then
A85:   len pp1 = len pp0 + 1 by AFINSQ_1:17;
      per cases;
      suppose
A86:    i = len pp1;
        thus
        ((Comput(P,s,len (q0 ^ FlattenSeq pp1))).f |
         Seg len pp1).i =
         (s1.f +*(r1+1,p.(r1+1))).i
            by A47,A69,A75,A80,A81,A78,A57,A86,A85,FINSEQ_1:4,FUNCT_1:49
          .= p.i by A20,A6,A82,A86,A19,A85,FUNCT_7:31
          .= (p | Seg len pp1).i by A86,A85,FINSEQ_1:4,FUNCT_1:49;
      end;
      suppose
A87:    i <> len pp1;
        then i < len pp0 + 1 by A85,A84,XXREAL_0:1;
        then
A88:    i <= len pp0 by NAT_1:13;
        1 <= i by A83,FINSEQ_1:1;
        then
A89:    i in Seg len pp0 by A88;
        ((Comput(P,s,len (q0 ^ FlattenSeq pp1))).f |
         Seg len pp1).i =
        (s1.f +*(r1+1,p.(r1+1))).i
         by A47,A69,A75,A80,A81,A78,A57,A83,FUNCT_1:49
          .= s1.f.i by A85,A20,A87,FUNCT_7:32;
        hence
        ((Comput(P,s,len (q0 ^ FlattenSeq pp1))).f |
        Seg len pp1).i =
        (p | Seg len pp0).i by A22,A89,FUNCT_1:49
          .= p.i by A89,FUNCT_1:49
          .= (p | Seg len pp1).i by A83,FUNCT_1:49;
      end;
    end;
    then
A90: for i being object st i in Seg len pp1
 holds ((Comput(P,s,len (q0 ^FlattenSeq pp1)).f) | Seg len pp1).i
      = (p | Seg len pp1).i;
A91: dom (s1.f +*(r1+1,p.(r1+1))) = dom (s1.f) by FUNCT_7:30;
    dom (Comput(P,s,len (q0 ^ FlattenSeq pp1)).f)
       = dom (s1.f +*(r1+1,p.(r1+1)))
by A33,A75,A80,A81,A78,A57,AFINSQ_1:17
      .= Seg len p
by A23,A91,FINSEQ_1:def 3;
    then dom ((Comput(P,s,len (q0 ^ FlattenSeq pp1)).f)
     | Seg len pp1 ) =
    Seg len pp1 by A29,RELAT_1:62;
    hence (Comput(P,s,len (q0 ^ FlattenSeq pp1)).f) | len pp1
= p | len pp1 by A30,A90,FUNCT_1:2;
    len (s1.f +*(r1+1,p.(r1+1))) = len (s1.f) by A91,FINSEQ_3:29;
    hence len (Comput(P,s,len (q0^FlattenSeq pp1)).f)
     = len p by A23,A33,A75,A80,A81,A78,A57,AFINSQ_1:17;
    hereby
      let b be Int-Location;
      assume that
A92:  b <> I and
A93:  b <> V;
      thus Comput(P,s,len (q0 ^ FlattenSeq pp1)).b = Comput(
P,s,c2 + len
      aSeq(V,pr1)).b by A47,A33,A75,SCMFSA_2:73
        .= Comput(P,s2,len aSeq(V,pr1)).b by EXTPRO_1:4
        .= s2.b by A51,A93,Th4,A50,A10
        .= s1.b by A49,A38,A92,Th4,A37,A1
        .= s.b by A24,A92,A93;
    end;
    hereby
      let h be FinSeq-Location;
      assume
A94: h <> f;
      hence
      Comput(P,s,len (q0 ^ FlattenSeq pp1)).h = Comput(P,s,c2 + len
      aSeq(V,pr1)).h by A47,A33,A75,SCMFSA_2:73
        .= Comput(P,s2,len aSeq(V,pr1)).h by EXTPRO_1:4
        .= s2.h by A51,Th4,A50,A10
        .= s1.h by A49,A38,Th4,A37,A1
        .= s.h by A25,A94;
    end;
  end;
  set k = len aSeq(I,len p);
  len<% f:=<0,...,0>I %> = 1 by AFINSQ_1:34;
  then
A95: len q0 = k + 1 by AFINSQ_1:17;
A96: q = aSeq(I,len p)^<% f:=<0,...,0>I %>^(aSeq(f,p)^Stop SCM+FSA) by
AFINSQ_1:27;
  then q = aSeq(I,len p)^(<% f:=<0,...,0>I %>^(aSeq(f,p)^Stop SCM+FSA))
  by AFINSQ_1:27;
  then  aSeq(I,len p) c= f:=p by AFINSQ_1:74;
  then
A97:  aSeq(I,len p) c= P by A4,XBOOLE_1:1;
  then
A98: Comput(P,s,len aSeq(I,len p)).I = len p by A1,A3,Th5;
A99: P[{}]
  proof
A100: now
      let i be Nat such that
A101: i < len q0;
      i < len q0 implies i <= len aSeq(I,len p) by A95,NAT_1:13;
      hence IC Comput(P,s,i) =  i by A1,A3,A97,A101,Th5;
    end;
    assume {} c= pp;
     reconsider sD = <%>(D^omega) as XFinSequence of D^omega;
    take sD;
A102: q0 ^ FlattenSeq <%>(D^omega) = q0 ^ <%>D by AFINSQ_2:74
      .= q0 ^ {}
      .= q0;
A103:   k < len q0 by A95,NAT_1:13;
    then
A104: IC Comput(P,s,k) =  k by A100;
A105:  P/.IC Comput(P,s,k) = P.IC Comput(P,s,k) by PBOOLE:143;
    len q = len q0 + len ((aSeq(f,p) ^ Stop SCM+FSA)) by A96,AFINSQ_1:17;
    then len q0 <= len q by NAT_1:11;
    then
A106:   k < len q by A95,NAT_1:13;
A107: q = aSeq(I,len p)^<% f:=<0,...,0>I %>^(aSeq(f,p)^Stop SCM+FSA)
         by AFINSQ_1:27;
A108:  k in dom q0 by A103,AFINSQ_1:66;
A109: CurInstr(P,Comput(P,s,k))
       = q.k by A5,A104,A105,A106
      .= q0.k by A107,A108,AFINSQ_1:def 3
      .= f:=<0,...,0>I by AFINSQ_1:36;
    thus sD = {};
A110: Comput(P,s,len q0) =
Following(P,Comput(P,s,k))
 by A95,EXTPRO_1:3
      .= Exec(f:=<0,...,0>I, Comput(P,s,k)) by A109;
    then
A111: IC Comput(P,s,len q0) = len q0 by A95,A104,SCMFSA_2:75;
    now
      let i be Nat;
      assume i <= len q0;
      then i < len q0 or i = len q0 by XXREAL_0:1;
      hence IC Comput(P,s,i) =  i by A100,A111;
    end;
    hence for i being Nat st i <= len (q0 ^ FlattenSeq sD)
    holds IC Comput(P,s,i) =  i by A102;
    consider ki being Nat such that
A112: ki = |. Comput(P,s,k).I.| and
A113: Exec(f:=<0,...,0>I, Comput(P,s,k)).f = ki |-> 0 by SCMFSA_2:75;
  (Comput(P,s,len (q0 ^ FlattenSeq sD)).f) | 0 = p | len sD;
    hence
    (Comput(P,s,len (q0 ^ FlattenSeq sD)).f)|len sD = p
    | len sD;
    ki = len p by A98,A112,ABSVALUE:def 1;
    hence len (Comput(P,s,len (q0 ^ FlattenSeq sD)).f) = len p
     by A102,A110,A113,CARD_1:def 7;
    now
      let b be Int-Location such that
A114: b <> I and
      b <> V;
      thus Comput(P,s,len q0).b = Comput(P,s,k).b by A110,SCMFSA_2:75
        .= s.b by A1,A3,A97,A114,Th5;
    end;
    hence
    for b being Int-Location st b <> I & b <> V holds Comput(P,s,
len (
    q0 ^ FlattenSeq sD)).b = s.b by A102;
    now
      let g be FinSeq-Location;
      assume g <> f;
      hence Comput(P,s,len q0).g = Comput(P,s,k).g
by A110,SCMFSA_2:75
        .= s.g by A1,A3,A97,Th5;
    end;
    hence thesis by A102;
  end;
  for r being XFinSequence holds P[r] from AFINSQ_1:sch 3(A99,A11);
  then consider pp0 being XFinSequence of D^omega such that
A115: pp0 = pp and
A116: for i being Nat st i <= len (q0 ^ FlattenSeq pp0) holds
  IC Comput(P,s,i) =  i and
A117: (Comput(P,s,len (q0 ^ FlattenSeq pp0)).f) | len pp0
 = p | len pp0 and
A118: len (Comput(P,s,len (q0 ^ FlattenSeq pp0)).f) = len p and
A119: ( for b being Int-Location st b <> I & b <> V holds Comput(P
,s,
  len (q0 ^ FlattenSeq pp0)).b = s.b)& for g being FinSeq-Location st g <> f
  holds Comput(P,s,len (q0 ^ FlattenSeq pp0)).g = s.g;
A120:  P/.IC Comput(P,s,len (q0 ^ FlattenSeq pp))
 = P.IC Comput(P,s,len (q0 ^ FlattenSeq pp)) by PBOOLE:143;

  IC Comput(P,s,len (q0 ^ FlattenSeq pp))
   =  len (q0 ^ FlattenSeq pp) by A115,A116;
  then
A121: CurInstr(P,
    Comput(P,s,len (q0 ^ FlattenSeq pp)))
     = q.len (q0 ^ FlattenSeq pp) by A5,A9,A120
    .= halt SCM+FSA by A8,AFINSQ_1:36;
  hence P halts_on s by EXTPRO_1:29;
  then
A122: Comput(P,s,len (q0^FlattenSeq pp))
 = Result(P,s) by A121,EXTPRO_1:def 9;
A123: Seg len pp0 = dom p by A6,A115,FINSEQ_1:def 3;
  (Comput(P,s,len (q0 ^ FlattenSeq pp0)).f)
   = (Comput(P,s,len (q0 ^ FlattenSeq pp0)).f) | len pp0
                by A6,A115,A118,FINSEQ_3:113;
  hence (Result(P,s)).f = p by A123,A115,A122,A117;
  thus thesis by A115,A119,A122;
end;
