amistd_2.miz



    begin

    reserve k,m for Nat,

x,x1,x2,x3,y,y1,y2,y3,X,Y,Z for set,

N for with_zero set;

    theorem :: AMISTD_2:1

    for I be Instruction of ( STC N) holds ( JumpPart I) = 0 ;

    definition

      let N be with_zero set, S be IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, I be Instruction of S;

      :: AMISTD_2:def1

      attr I is with_explicit_jumps means

      : Def1: ( JUMP I) = ( rng ( JumpPart I));

    end

    definition

      let N be with_zero set, S be IC-Ins-separated non empty with_non-empty_values AMI-Struct over N;

      :: AMISTD_2:def2

      attr S is with_explicit_jumps means

      : Def2: for I be Instruction of S holds I is with_explicit_jumps;

    end

    registration

      let N be with_zero set;

      cluster standard for IC-Ins-separated non empty with_non-empty_values AMI-Struct over N;

      existence

      proof

        take ( STC N);

        thus thesis;

      end;

    end

    theorem :: AMISTD_2:2

    

     Th2: for S be standard IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, I be Instruction of S st for f be Element of NAT holds ( NIC (I,f)) = {(f + 1)} holds ( JUMP I) is empty

    proof

      let S be standard IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, I be Instruction of S;

      assume

       A1: for f be Element of NAT holds ( NIC (I,f)) = {(f + 1)};

      set p = 1, q = 2;

      reconsider p, q as Element of NAT ;

      set X = the set of all ( NIC (I,f)) where f be Nat;

      assume not thesis;

      then

      consider x be object such that

       A2: x in ( meet X);

      

       A3: ( NIC (I,p)) = {(p + 1)} by A1;

      

       A4: ( NIC (I,q)) = {(q + 1)} by A1;

      

       A5: {( succ p)} in X by A3;

      

       A6: {( succ q)} in X by A4;

      

       A7: x in {( succ p)} by A2, A5, SETFAM_1:def 1;

      

       A8: x in {( succ q)} by A2, A6, SETFAM_1:def 1;

      x = ( succ p) by A7, TARSKI:def 1;

      hence contradiction by A8, TARSKI:def 1;

    end;

    registration

      let N be with_zero set, I be Instruction of ( STC N);

      cluster ( JUMP I) -> empty;

      coherence

      proof

        per cases by AMISTD_1: 6;

          suppose ( InsCode I) = 0 ;

          then for f be Nat holds ( NIC (I,f)) = {f} by AMISTD_1: 2, AMISTD_1: 4;

          hence thesis by AMISTD_1: 1;

        end;

          suppose ( InsCode I) = 1;

          then for f be Element of NAT holds ( NIC (I,f)) = {(f + 1)} by AMISTD_1: 10;

          hence thesis by Th2;

        end;

      end;

    end

    theorem :: AMISTD_2:3

    for T be InsType of the InstructionsF of ( STC N) holds ( JumpParts T) = { 0 }

    proof

      let T be InsType of the InstructionsF of ( STC N);

      set A = { ( JumpPart I) where I be Instruction of ( STC N) : ( InsCode I) = T };

       { 0 } = A

      proof

        hereby

          let a be object;

          assume a in { 0 };

          then

           A1: a = 0 by TARSKI:def 1;

          

           A2: the InstructionsF of ( STC N) = { [ 0 , 0 , 0 ], [1, 0 , 0 ]} by AMISTD_1:def 7;

          then

           A3: ( InsCodes the InstructionsF of ( STC N)) = { 0 , 1} by MCART_1: 91;

          per cases by A3, TARSKI:def 2;

            suppose

             A4: T = 0 ;

            reconsider I = [ 0 , 0 , 0 ] as Instruction of ( STC N) by A2, TARSKI:def 2;

            

             A5: ( JumpPart I) = 0 ;

            ( InsCode I) = 0 ;

            hence a in A by A1, A4, A5;

          end;

            suppose

             A6: T = 1;

            reconsider I = [1, 0 , 0 ] as Instruction of ( STC N) by A2, TARSKI:def 2;

            

             A7: ( JumpPart I) = 0 ;

            ( InsCode I) = 1;

            hence a in A by A1, A6, A7;

          end;

        end;

        let a be object;

        assume a in A;

        then ex I be Instruction of ( STC N) st a = ( JumpPart I) & ( InsCode I) = T;

        then a = 0 ;

        hence thesis by TARSKI:def 1;

      end;

      hence thesis;

    end;

    

     Lm1: for I be Instruction of ( Trivial-AMI N) holds ( JumpPart I) = 0

    proof

      let I be Instruction of ( Trivial-AMI N);

      the InstructionsF of ( Trivial-AMI N) = { [ 0 , 0 , {} ]} by EXTPRO_1:def 1;

      then I = [ 0 , 0 , 0 ] by TARSKI:def 1;

      hence thesis;

    end;

    

     Lm2: for T be InsType of the InstructionsF of ( Trivial-AMI N) holds ( JumpParts T) = { 0 }

    proof

      let T be InsType of the InstructionsF of ( Trivial-AMI N);

      set A = { ( JumpPart I) where I be Instruction of ( Trivial-AMI N) : ( InsCode I) = T };

       { 0 } = A

      proof

        hereby

          let a be object;

          assume a in { 0 };

          then

           A1: a = 0 by TARSKI:def 1;

          

           A2: the InstructionsF of ( Trivial-AMI N) = { [ 0 , 0 , {} ]} by EXTPRO_1:def 1;

          then ( InsCodes the InstructionsF of ( Trivial-AMI N)) = { 0 } by MCART_1: 92;

          then

           A3: T = 0 by TARSKI:def 1;

          reconsider I = [ 0 , 0 , 0 ] as Instruction of ( Trivial-AMI N) by A2, TARSKI:def 1;

          

           A4: ( JumpPart I) = 0 ;

          ( InsCode I) = 0 ;

          hence a in A by A1, A3, A4;

        end;

        let a be object;

        assume a in A;

        then ex I be Instruction of ( Trivial-AMI N) st a = ( JumpPart I) & ( InsCode I) = T;

        then a = 0 by Lm1;

        hence thesis by TARSKI:def 1;

      end;

      hence thesis;

    end;

    registration

      let N be with_zero set;

      cluster ( STC N) -> with_explicit_jumps;

      coherence

      proof

        let I be Instruction of ( STC N);

        thus ( JUMP I) = ( rng ( JumpPart I));

      end;

    end

    registration

      let N be with_zero set;

      cluster standard halting with_explicit_jumps for IC-Ins-separated non empty with_non-empty_values AMI-Struct over N;

      existence

      proof

        take ( STC N);

        thus thesis;

      end;

    end

    registration

      let N be with_zero set, I be Instruction of ( Trivial-AMI N);

      cluster ( JUMP I) -> empty;

      coherence

      proof

        for f be Nat holds ( NIC (I,f)) = {f} by AMISTD_1: 2, AMISTD_1: 17;

        hence thesis by AMISTD_1: 1;

      end;

    end

    registration

      let N be with_zero set;

      cluster ( Trivial-AMI N) -> with_explicit_jumps;

      coherence

      proof

        thus ( Trivial-AMI N) is with_explicit_jumps

        proof

          let I be Instruction of ( Trivial-AMI N);

          the InstructionsF of ( Trivial-AMI N) = { [ 0 , 0 , {} ]} by EXTPRO_1:def 1;

          then I = [ 0 , 0 , 0 ] by TARSKI:def 1;

          hence ( JUMP I) = ( rng ( JumpPart I));

        end;

      end;

    end

    registration

      let N be with_zero set;

      cluster with_explicit_jumps halting for IC-Ins-separated non empty with_non-empty_values AMI-Struct over N;

      existence

      proof

        take ( Trivial-AMI N);

        thus thesis;

      end;

    end

    registration

      let N be with_zero set;

      let S be with_explicit_jumps IC-Ins-separated non empty with_non-empty_values AMI-Struct over N;

      cluster -> with_explicit_jumps for Instruction of S;

      coherence by Def2;

    end

    theorem :: AMISTD_2:4

    

     Th4: for S be IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, I be Instruction of S st I is halting holds ( JUMP I) is empty

    proof

      let S be IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, I be Instruction of S;

      assume I is halting;

      then for l be Nat holds ( NIC (I,l)) = {l} by AMISTD_1: 2;

      hence thesis by AMISTD_1: 1;

    end;

    registration

      let N be with_zero set, S be halting IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, I be halting Instruction of S;

      cluster ( JUMP I) -> empty;

      coherence by Th4;

    end

    theorem :: AMISTD_2:5

    for S be halting with_explicit_jumps IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, I be Instruction of S st I is ins-loc-free holds ( JUMP I) is empty

    proof

      let S be halting with_explicit_jumps IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, I be Instruction of S such that

       A1: ( JumpPart I) is empty;

      

       A2: ( rng ( JumpPart I)) = {} by A1;

      ( JUMP I) c= ( rng ( JumpPart I)) by Def1;

      hence thesis by A2;

    end;

    registration

      let N be with_zero set, S be with_explicit_jumps IC-Ins-separated non empty with_non-empty_values AMI-Struct over N;

      cluster halting -> ins-loc-free for Instruction of S;

      coherence

      proof

        let I be Instruction of S;

        assume I is halting;

        then

         A1: ( JUMP I) is empty by Th4;

        ( rng ( JumpPart I)) = ( JUMP I) by Def1;

        hence ( JumpPart I) is empty by A1;

      end;

    end

    registration

      let N be with_zero set, S be with_explicit_jumps IC-Ins-separated non empty with_non-empty_values AMI-Struct over N;

      cluster sequential -> ins-loc-free for Instruction of S;

      coherence

      proof

        let I be Instruction of S;

        assume I is sequential;

        then

         A1: ( JUMP I) is empty by AMISTD_1: 13;

        ( rng ( JumpPart I)) = ( JUMP I) by Def1;

        hence ( JumpPart I) is empty by A1;

      end;

    end

    begin

    registration

      let N be with_zero set, S be halting with_explicit_jumps IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, I be halting Instruction of S, k be Nat;

      cluster ( IncAddr (I,k)) -> halting;

      coherence by COMPOS_0: 4;

    end

    theorem :: AMISTD_2:6

    for S be standard halting with_explicit_jumps IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, I be Instruction of S st I is sequential holds ( IncAddr (I,k)) is sequential by COMPOS_0: 4;

    definition

      let N be with_zero set, S be halting IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, I be Instruction of S;

      :: AMISTD_2:def3

      attr I is IC-relocable means

      : Def3: for j,k be Nat, s be State of S holds (( IC ( Exec (( IncAddr (I,j)),s))) + k) = ( IC ( Exec (( IncAddr (I,(j + k))),( IncIC (s,k)))));

    end

    definition

      let N be with_zero set, S be halting IC-Ins-separated non empty with_non-empty_values AMI-Struct over N;

      :: AMISTD_2:def4

      attr S is IC-relocable means

      : Def4: for I be Instruction of S holds I is IC-relocable;

    end

    registration

      let N be with_zero set, S be with_explicit_jumps IC-Ins-separated halting non empty with_non-empty_values AMI-Struct over N;

      cluster sequential -> IC-relocable for Instruction of S;

      coherence

      proof

        let I be Instruction of S such that

         A1: I is sequential;

        let j,k be Nat, s1 be State of S;

        set s2 = ( IncIC (s1,k));

        ( IC S) in ( dom (( IC S) .--> (( IC s1) + k))) by TARSKI:def 1;

        

        then

         A2: ( IC s2) = ((( IC S) .--> (( IC s1) + k)) . ( IC S)) by FUNCT_4: 13

        .= (( IC s1) + k) by FUNCOP_1: 72;

        

         A3: ( IC ( Exec (I,s2))) = (( IC s2) + 1) by A1

        .= ((( IC s1) + 1) + k) by A2;

        

         A4: ( IncAddr (I,j)) = I by A1, COMPOS_0: 4;

        ( IC ( Exec (I,s1))) = (( IC s1) + 1) by A1;

        hence (( IC ( Exec (( IncAddr (I,j)),s1))) + k) = ( IC ( Exec (( IncAddr (I,(j + k))),s2))) by A1, A3, A4, COMPOS_0: 4;

      end;

    end

    registration

      let N be with_zero set, S be with_explicit_jumps IC-Ins-separated halting non empty with_non-empty_values AMI-Struct over N;

      cluster halting -> IC-relocable for Instruction of S;

      coherence

      proof

        let I be Instruction of S such that

         A1: I is halting;

        let j,k be Nat, s1 be State of S;

        set s2 = ( IncIC (s1,k));

        

         A2: ( IC S) in ( dom (( IC S) .--> (( IC s1) + k))) by TARSKI:def 1;

        

        thus (( IC ( Exec (( IncAddr (I,j)),s1))) + k) = (( IC s1) + k) by A1, EXTPRO_1:def 3

        .= ((( IC S) .--> (( IC s1) + k)) . ( IC S)) by FUNCOP_1: 72

        .= ( IC s2) by A2, FUNCT_4: 13

        .= ( IC ( Exec (( IncAddr (I,(j + k))),s2))) by A1, EXTPRO_1:def 3;

      end;

    end

    registration

      let N be with_zero set;

      cluster ( STC N) -> IC-relocable;

      coherence

      proof

        thus ( STC N) is IC-relocable

        proof

          let I be Instruction of ( STC N), j,k be Nat, s1 be State of ( STC N);

          set s2 = ( IncIC (s1,k));

          ( IC ( STC N)) in ( dom (( IC ( STC N)) .--> (( IC s1) + k))) by TARSKI:def 1;

          

          then

           A1: ( IC s2) = ((( IC ( STC N)) .--> (( IC s1) + k)) . ( IC ( STC N))) by FUNCT_4: 13

          .= (( IC s1) + k) by FUNCOP_1: 72;

          per cases by AMISTD_1: 6;

            suppose

             A2: ( InsCode I) = 1;

            then

             A3: ( InsCode ( IncAddr (I,k))) = 1 by COMPOS_0:def 9;

            

             A4: ( IncAddr (I,j)) = I by COMPOS_0: 4;

            ( IC ( Exec (I,s1))) = (( IC s1) + 1) by A2, AMISTD_1: 9;

            

            hence (( IC ( Exec (( IncAddr (I,j)),s1))) + k) = (( IC s2) + 1) by A1, A4

            .= ( IC ( Exec (( IncAddr (( IncAddr (I,j)),k)),s2))) by A4, A3, AMISTD_1: 9

            .= ( IC ( Exec (( IncAddr (I,(j + k))),s2))) by COMPOS_0: 7;

          end;

            suppose ( InsCode I) = 0 ;

            then

             A5: I is halting by AMISTD_1: 4;

            

            hence (( IC ( Exec (( IncAddr (I,j)),s1))) + k) = (( IC s1) + k) by EXTPRO_1:def 3

            .= ( IC ( Exec (( IncAddr (I,(j + k))),s2))) by A1, A5, EXTPRO_1:def 3;

          end;

        end;

      end;

    end

    registration

      let N be with_zero set;

      cluster halting with_explicit_jumps for standard IC-Ins-separated non empty with_non-empty_values AMI-Struct over N;

      existence

      proof

        take ( STC N);

        thus thesis;

      end;

    end

    registration

      let N be with_zero set;

      cluster IC-relocable for with_explicit_jumps halting standard IC-Ins-separated non empty with_non-empty_values AMI-Struct over N;

      existence

      proof

        take ( STC N);

        thus thesis;

      end;

    end

    registration

      let N be with_zero set, S be IC-relocable IC-Ins-separated halting non empty with_non-empty_values AMI-Struct over N;

      cluster -> IC-relocable for Instruction of S;

      coherence by Def4;

    end

    registration

      let N be with_zero set, S be with_explicit_jumps IC-Ins-separated halting non empty with_non-empty_values AMI-Struct over N;

      cluster IC-relocable for Instruction of S;

      existence

      proof

        take the halting Instruction of S;

        thus thesis;

      end;

    end

    theorem :: AMISTD_2:7

    

     Th7: for S be halting with_explicit_jumps IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, I be IC-relocable Instruction of S holds for k be Nat, s be State of S holds (( IC ( Exec (I,s))) + k) = ( IC ( Exec (( IncAddr (I,k)),( IncIC (s,k)))))

    proof

      let S be halting with_explicit_jumps IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, I be IC-relocable Instruction of S;

      let k be Nat, s be State of S;

      

       A1: (k + 0 qua Nat) = k;

      

      thus (( IC ( Exec (I,s))) + k) = (( IC ( Exec (( IncAddr (I, 0 )),s))) + k) by COMPOS_0: 3

      .= ( IC ( Exec (( IncAddr (I,k)),( IncIC (s,k))))) by Def3, A1;

    end;

    registration

      let N be with_zero set, S be IC-relocable standard with_explicit_jumps halting IC-Ins-separated non empty with_non-empty_values AMI-Struct over N, F,G be really-closed Program of S;

      cluster (F ';' G) -> really-closed;

      coherence

      proof

        set P = (F ';' G), k = (( card F) -' 1);

        let f be Nat such that

         A1: f in ( dom P);

        

         A2: ( dom P) = (( dom ( CutLastLoc F)) \/ ( dom ( Reloc (G,k)))) by FUNCT_4:def 1;

        

         A3: ( dom ( CutLastLoc F)) c= ( dom F) by GRFUNC_1: 2;

        

         A4: ( dom ( Reloc (G,k))) = { (m + k) where m be Nat : m in ( dom ( IncAddr (G,k))) } by VALUED_1:def 12;

        let x be object;

        assume x in ( NIC ((P /. f),f));

        then

        consider s2 be Element of ( product ( the_Values_of S)) such that

         A5: x = ( IC ( Exec ((P /. f),s2))) and

         A6: ( IC s2) = f;

        

         A7: (P /. f) = (P . f) by A1, PARTFUN1:def 6;

        per cases by A1, A2, XBOOLE_0:def 3;

          suppose

           A8: f in ( dom ( CutLastLoc F));

          then

           A9: ( NIC ((F /. f),f)) c= ( dom F) by A3, AMISTD_1:def 9;

          ( dom ( CutLastLoc F)) = (( dom F) \ {( LastLoc F)}) by VALUED_1: 36;

          then

           A10: f in ( dom F) by A8, XBOOLE_0:def 5;

          ( dom ( CutLastLoc F)) misses ( dom ( Reloc (G,(( card F) -' 1)))) by COMPOS_1: 18;

          then

           A11: not f in ( dom ( Reloc (G,(( card F) -' 1)))) by A8, XBOOLE_0: 3;

          

           A12: (P /. f) = (P . f) by A1, PARTFUN1:def 6

          .= (( CutLastLoc F) . f) by A11, FUNCT_4: 11

          .= (F . f) by A8, GRFUNC_1: 2

          .= (F /. f) by A10, PARTFUN1:def 6;

          ( IC ( Exec ((F /. f),s2))) in ( NIC ((F /. f),f)) by A6;

          then

           A13: x in ( dom F) by A5, A9, A12;

          ( dom F) c= ( dom P) by COMPOS_1: 21;

          hence thesis by A13;

        end;

          suppose

           A14: f in ( dom ( Reloc (G,k)));

          then

          consider m be Nat such that

           A15: f = (m + k) and

           A16: m in ( dom ( IncAddr (G,k))) by A4;

          

           A17: m in ( dom G) by A16, COMPOS_1:def 21;

          then

           A18: ( NIC ((G /. m),m)) c= ( dom G) by AMISTD_1:def 9;

          

           A19: ( Values ( IC S)) = NAT by MEMSTR_0:def 6;

          reconsider m as Element of NAT by ORDINAL1:def 12;

          reconsider v = (( IC S) .--> m) as FinPartState of S by A19;

          set s1 = (s2 +* v);

          

           A20: (P /. f) = (( Reloc (G,k)) . f) by A7, A14, FUNCT_4: 13

          .= (( IncAddr (G,k)) . m) by A15, A16, VALUED_1:def 12;

          

           A21: ((( IC S) .--> m) . ( IC S)) = m by FUNCOP_1: 72;

          

           A22: ( IC S) in {( IC S)} by TARSKI:def 1;

          

           A23: ( dom (( IC S) .--> m)) = {( IC S)};

          reconsider w = (( IC S) .--> (( IC s1) + k)) as FinPartState of S by A19;

          

           A24: ( dom (s1 +* (( IC S) .--> (( IC s1) + k)))) = the carrier of S by PARTFUN1:def 2;

          

           A25: ( dom s2) = the carrier of S by PARTFUN1:def 2;

          for a be object st a in ( dom s2) holds (s2 . a) = ((s1 +* (( IC S) .--> (( IC s1) + k))) . a)

          proof

            let a be object such that a in ( dom s2);

            

             A26: ( dom (( IC S) .--> (( IC s1) + k))) = {( IC S)};

            per cases ;

              suppose

               A27: a = ( IC S);

              

              hence (s2 . a) = (( IC s1) + k) by A6, A15, A23, A21, A22, FUNCT_4: 13

              .= ((( IC S) .--> (( IC s1) + k)) . a) by A27, FUNCOP_1: 72

              .= ((s1 +* (( IC S) .--> (( IC s1) + k))) . a) by A22, A26, A27, FUNCT_4: 13;

            end;

              suppose

               A28: a <> ( IC S);

              then

               A29: not a in ( dom (( IC S) .--> (( IC s1) + k))) by TARSKI:def 1;

               not a in ( dom (( IC S) .--> m)) by A28, TARSKI:def 1;

              then (s1 . a) = (s2 . a) by FUNCT_4: 11;

              hence thesis by A29, FUNCT_4: 11;

            end;

          end;

          then

           A30: s2 = ( IncIC (s1,k)) by A24, A25, FUNCT_1: 2;

          set s3 = s1;

          

           A31: ( IC s3) = m by A21, A22, A23, FUNCT_4: 13;

          reconsider s3 as Element of ( product ( the_Values_of S)) by CARD_3: 107;

          reconsider k, m as Element of NAT ;

          

           A32: x = ( IC ( Exec (( IncAddr ((G /. m),k)),s2))) by A5, A17, A20, COMPOS_1:def 21

          .= (( IC ( Exec ((G /. m),s3))) + k) by A30, Th7;

          ( IC ( Exec ((G /. m),s3))) in ( NIC ((G /. m),m)) by A31;

          then ( IC ( Exec ((G /. m),s3))) in ( dom G) by A18;

          then ( IC ( Exec ((G /. m),s3))) in ( dom ( IncAddr (G,k))) by COMPOS_1:def 21;

          then x in ( dom ( Reloc (G,k))) by A4, A32;

          hence thesis by A2, XBOOLE_0:def 3;

        end;

      end;

    end

    theorem :: AMISTD_2:8

    for I be Instruction of ( Trivial-AMI N) holds ( JumpPart I) = 0 by Lm1;

    theorem :: AMISTD_2:9

    for T be InsType of the InstructionsF of ( Trivial-AMI N) holds ( JumpParts T) = { 0 } by Lm2;

    reserve n,m for Nat;

    theorem :: AMISTD_2:10

    for S be IC-Ins-separated non empty with_non-empty_values AMI-Struct over N holds for s be State of S, I be Program of S holds for P1,P2 be Instruction-Sequence of S st I c= P1 & I c= P2 & for m st m < n holds ( IC ( Comput (P2,s,m))) in ( dom I) holds for m st m <= n holds ( Comput (P1,s,m)) = ( Comput (P2,s,m))

    proof

      let S be IC-Ins-separated non empty with_non-empty_values AMI-Struct over N;

      let s be State of S, I be Program of S;

      let P1,P2 be Instruction-Sequence of S such that

       A1: I c= P1 & I c= P2;

      assume that

       A2: for m st m < n holds ( IC ( Comput (P2,s,m))) in ( dom I);

      defpred X[ Nat] means $1 <= n implies ( Comput (P1,s,$1)) = ( Comput (P2,s,$1));

      

       A3: for m st X[m] holds X[(m + 1)]

      proof

        let m such that

         A4: X[m];

        

         A5: ( Comput (P2,s,(m + 1))) = ( Following (P2,( Comput (P2,s,m)))) by EXTPRO_1: 3

        .= ( Exec (( CurInstr (P2,( Comput (P2,s,m)))),( Comput (P2,s,m))));

        

         A6: ( Comput (P1,s,(m + 1))) = ( Following (P1,( Comput (P1,s,m)))) by EXTPRO_1: 3

        .= ( Exec (( CurInstr (P1,( Comput (P1,s,m)))),( Comput (P1,s,m))));

        assume

         A7: (m + 1) <= n;

        then m < n by NAT_1: 13;

        then

         A8: ( IC ( Comput (P1,s,m))) = ( IC ( Comput (P2,s,m))) by A4;

        m < n by A7, NAT_1: 13;

        then

         A9: ( IC ( Comput (P2,s,m))) in ( dom I) by A2;

        ( dom P2) = NAT by PARTFUN1:def 2;

        then

         A10: ( IC ( Comput (P2,s,m))) in ( dom P2);

        ( dom P1) = NAT by PARTFUN1:def 2;

        then ( IC ( Comput (P1,s,m))) in ( dom P1);

        

        then ( CurInstr (P1,( Comput (P1,s,m)))) = (P1 . ( IC ( Comput (P1,s,m)))) by PARTFUN1:def 6

        .= (I . ( IC ( Comput (P1,s,m)))) by A9, A8, A1, GRFUNC_1: 2

        .= (P2 . ( IC ( Comput (P2,s,m)))) by A9, A8, A1, GRFUNC_1: 2

        .= ( CurInstr (P2,( Comput (P2,s,m)))) by A10, PARTFUN1:def 6;

        hence thesis by A4, A6, A5, A7, NAT_1: 13;

      end;

      

       A11: X[ 0 ];

      thus for m holds X[m] from NAT_1:sch 2( A11, A3);

    end;

    theorem :: AMISTD_2:11

    for S be IC-Ins-separated halting non empty with_non-empty_values AMI-Struct over N, P be Instruction-Sequence of S, s be State of S st s = ( Following (P,s)) holds for n holds ( Comput (P,s,n)) = s

    proof

      let S be IC-Ins-separated halting non empty with_non-empty_values AMI-Struct over N, P be Instruction-Sequence of S, s be State of S;

      defpred X[ Nat] means ( Comput (P,s,$1)) = s;

      assume

       A1: s = ( Following (P,s));

      

       A2: for n st X[n] holds X[(n + 1)] by A1, EXTPRO_1: 3;

      

       A3: X[ 0 ];

      thus for n holds X[n] from NAT_1:sch 2( A3, A2);

    end;