\documentstyle[makeidx]{article}
\makeindex
%\setlength{\oddsidemargin}{.5in}
%\setlength{\evensidemargin}{.5in}
%\setlength{\textwidth}{5.8in}
\begin{document}
%\setlength{\parindent}{0pt}
%\newcounter{bean}
%\begin{list}{\arabic{bean}.}{\usecounter{bean}\setlength{\leftmargin}{0pt}\setlength{\rightmargin}{0pt}\setlength{\listparindent}{20pt}\setlength{\parsep}{5pt}}
%\item[]

\begin{verbatim}#|

 Copyright (C) 1994 by Yuan Yu.  All Rights Reserved.

 This script is hereby placed in the public domain, and therefore unlimited
 editing and redistribution is permitted.

 NO WARRANTY

 Yuan Yu PROVIDES ABSOLUTELY NO WARRANTY.  THE EVENT SCRIPT IS PROVIDED "AS IS"
 WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
 LIMITED TO, ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
 SCRIPT IS WITH YOU.  SHOULD THE SCRIPT PROVE DEFECTIVE, YOU ASSUME THE COST OF
 ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

 IN NO EVENT WILL Yuan Yu BE LIABLE TO YOU FOR ANY DAMAGES, ANY LOST PROFITS,
 LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT
 OF THE USE OR INABILITY TO USE THIS SCRIPT (INCLUDING BUT NOT LIMITED TO LOSS
 OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD
 PARTIES), EVEN IF YOU HAVE ADVISED US OF THE POSSIBILITY OF SUCH DAMAGES, OR
 FOR ANY CLAIM BY ANY OTHER PARTY.

|#

\end{verbatim}
\noindent{\sc Event}:   Start with the library {\tt{"mc20-2"}} using the compiled version.

\addvspace{18pt}
\begin{verbatim};          Proof of the Correctness of the MEMMOVE Function
#|
This is part of our effort to verify the Berkeley string library.  The 
Berkeley string library is widely used as part of the Berkeley Unix OS.

This is the source code of memmove function in the Berkeley string library.

typedef int word;               /* "word" used for optimal copy speed */

#define wsize   sizeof(word)
#define wmask   (wsize - 1)

/*
 * Copy a block of memory, handling overlap.
 * This is the routine that actually implements
 * (the portable versions of) bcopy, memcpy, and memmove.
 */
void *
memmove(dst0, src0, length)
        void *dst0;
        const void *src0;
        register size_t length;
{
        register char *dst = dst0;
        register const char *src = src0;
        register size_t t;

        if (length == 0 || dst == src)          /* nothing to do */
                goto done;

        /*
         * Macros: loop-t-times; and loop-t-times, t>0
         */
#define TLOOP(s) if (t) TLOOP1(s)
#define TLOOP1(s) do { s; } while (--t)

        if ((unsigned long)dst < (unsigned long)src) {
                /*
                 * Copy forward.
                 */
                t = (int)src;   /* only need low bits */
                if ((t | (int)dst) & wmask) {
                        /*
                         * Try to align operands.  This cannot be done
                         * unless the low bits match.
                         */
                        if ((t ^ (int)dst) & wmask || length < wsize)
                                t = length;
                        else
                                t = wsize - (t & wmask);
                        length -= t;
                        TLOOP1(*dst++ = *src++);
                }
                /*
                 * Copy whole words, then mop up any trailing bytes.
                 */
                t = length / wsize;
                TLOOP(*(word *)dst = *(word *)src; src += wsize; dst += wsize);
                t = length & wmask;
                TLOOP(*dst++ = *src++);
        } else {
                /*
                 * Copy backwards.  Otherwise essentially the same.
                 * Alignment works as before, except that it takes
                 * (t&wmask) bytes to align, not wsize-(t&wmask).
                 */
                src += length;
                dst += length;
                t = (int)src;
                if ((t | (int)dst) & wmask) {
                        if ((t ^ (int)dst) & wmask || length <= wsize)
                                t = length;
                        else
                                t &= wmask;
                        length -= t;
                        TLOOP1(*--dst = *--src);
                }
                t = length / wsize;
                TLOOP(src -= wsize; dst -= wsize; *(word *)dst = *(word *)src);
                t = length & wmask;
                TLOOP(*--dst = *--src);
        }
done:
        return (dst0);
}

The MC68020 assembly code of the C function memmove on SUN-3 is given as 
follows.  This binary is generated by "gcc -O".

0x2550 <memmove>:       linkw fp,#0
0x2554 <memmove+4>:     moveml d2-d4,sp@-
0x2558 <memmove+8>:     movel fp@(8),d3
0x255c <memmove+12>:    movel fp@(16),d2
0x2560 <memmove+16>:    moveal d3,a1
0x2562 <memmove+18>:    moveal fp@(12),a0
0x2566 <memmove+22>:    beq 0x2604 <memmove+180>
0x256a <memmove+26>:    cmpal d3,a0
0x256c <memmove+28>:    beq 0x2604 <memmove+180>
0x2570 <memmove+32>:    bls 0x25bc <memmove+108>
0x2572 <memmove+34>:    movel a0,d1
0x2574 <memmove+36>:    movel d1,d0
0x2576 <memmove+38>:    orl d3,d0
0x2578 <memmove+40>:    movel #3,d4
0x257a <memmove+42>:    andl d4,d0
0x257c <memmove+44>:    beq 0x25a2 <memmove+82>
0x257e <memmove+46>:    movel d1,d0
0x2580 <memmove+48>:    eorl d3,d0
0x2582 <memmove+50>:    movel #3,d4
0x2584 <memmove+52>:    andl d4,d0
0x2586 <memmove+54>:    bne 0x258e <memmove+62>
0x2588 <memmove+56>:    movel #3,d4
0x258a <memmove+58>:    cmpl d2,d4
0x258c <memmove+60>:    bcs 0x2592 <memmove+66>
0x258e <memmove+62>:    movel d2,d1
0x2590 <memmove+64>:    bra 0x259a <memmove+74>
0x2592 <memmove+66>:    movel #3,d0
0x2594 <memmove+68>:    andl d1,d0
0x2596 <memmove+70>:    movel #4,d1
0x2598 <memmove+72>:    subl d0,d1
0x259a <memmove+74>:    subl d1,d2
0x259c <memmove+76>:    moveb a0@+,a1@+
0x259e <memmove+78>:    subl #1,d1
0x25a0 <memmove+80>:    bne 0x259c <memmove+76>
0x25a2 <memmove+82>:    movel d2,d1
0x25a4 <memmove+84>:    lsrl #2,d1
0x25a6 <memmove+86>:    beq 0x25ae <memmove+94>
0x25a8 <memmove+88>:    movel a0@+,a1@+
0x25aa <memmove+90>:    subl #1,d1
0x25ac <memmove+92>:    bne 0x25a8 <memmove+88>
0x25ae <memmove+94>:    movel #3,d1
0x25b0 <memmove+96>:    andl d2,d1
0x25b2 <memmove+98>:    beq 0x2604 <memmove+180>
0x25b4 <memmove+100>:   moveb a0@+,a1@+
0x25b6 <memmove+102>:   subl #1,d1
0x25b8 <memmove+104>:   bne 0x25b4 <memmove+100>
0x25ba <memmove+106>:   bra 0x2604 <memmove+180>
0x25bc <memmove+108>:   addal d2,a0
0x25be <memmove+110>:   addal d2,a1
0x25c0 <memmove+112>:   movel a0,d1
0x25c2 <memmove+114>:   movel a1,d0
0x25c4 <memmove+116>:   orl d1,d0
0x25c6 <memmove+118>:   movel #3,d4
0x25c8 <memmove+120>:   andl d4,d0
0x25ca <memmove+122>:   beq 0x25ec <memmove+156>
0x25cc <memmove+124>:   movel a1,d0
0x25ce <memmove+126>:   eorl d1,d0
0x25d0 <memmove+128>:   movel #3,d4
0x25d2 <memmove+130>:   andl d4,d0
0x25d4 <memmove+132>:   bne 0x25dc <memmove+140>
0x25d6 <memmove+134>:   movel #4,d4
0x25d8 <memmove+136>:   cmpl d2,d4
0x25da <memmove+138>:   bcs 0x25e0 <memmove+144>
0x25dc <memmove+140>:   movel d2,d1
0x25de <memmove+142>:   bra 0x25e4 <memmove+148>
0x25e0 <memmove+144>:   movel #3,d4
0x25e2 <memmove+146>:   andl d4,d1
0x25e4 <memmove+148>:   subl d1,d2
0x25e6 <memmove+150>:   moveb a0@-,a1@-
0x25e8 <memmove+152>:   subl #1,d1
0x25ea <memmove+154>:   bne 0x25e6 <memmove+150>
0x25ec <memmove+156>:   movel d2,d1
0x25ee <memmove+158>:   lsrl #2,d1
0x25f0 <memmove+160>:   beq 0x25f8 <memmove+168>
0x25f2 <memmove+162>:   movel a0@-,a1@-
0x25f4 <memmove+164>:   subl #1,d1
0x25f6 <memmove+166>:   bne 0x25f2 <memmove+162>
0x25f8 <memmove+168>:   movel #3,d1
0x25fa <memmove+170>:   andl d2,d1
0x25fc <memmove+172>:   beq 0x2604 <memmove+180>
0x25fe <memmove+174>:   moveb a0@-,a1@-
0x2600 <memmove+176>:   subl #1,d1
0x2602 <memmove+178>:   bne 0x25fe <memmove+174>
0x2604 <memmove+180>:   movel d3,d0
0x2606 <memmove+182>:   moveml fp@(-12),d2-d4
0x260c <memmove+188>:   unlk fp
0x260e <memmove+190>:   rts

The machine code of the above program is:

<memmove>:       0x4e56  0x0000  0x48e7  0x3800  0x262e  0x0008  0x242e  0x0010
<memmove+16>:    0x2243  0x206e  0x000c  0x6700  0x009c  0xb1c3  0x6700  0x0096
<memmove+32>:    0x634a  0x2208  0x2001  0x8083  0x7803  0xc084  0x6724  0x2001
<memmove+48>:    0xb780  0x7803  0xc084  0x6606  0x7803  0xb882  0x6504  0x2202
<memmove+64>:    0x6008  0x7003  0xc081  0x7204  0x9280  0x9481  0x12d8  0x5381
<memmove+80>:    0x66fa  0x2202  0xe489  0x6706  0x22d8  0x5381  0x66fa  0x7203
<memmove+96>:    0xc282  0x6750  0x12d8  0x5381  0x66fa  0x6048  0xd1c2  0xd3c2
<memmove+112>:   0x2208  0x2009  0x8081  0x7803  0xc084  0x6720  0x2009  0xb380
<memmove+128>:   0x7803  0xc084  0x6606  0x7804  0xb882  0x6504  0x2202  0x6004
<memmove+144>:   0x7803  0xc284  0x9481  0x1320  0x5381  0x66fa  0x2202  0xe489
<memmove+160>:   0x6706  0x2320  0x5381  0x66fa  0x7203  0xc282  0x6706  0x1320
<memmove+176>:   0x5381  0x66fa  0x2003  0x4cee  0x001c  0xfff4  0x4e5e  0x4e75

'(78      86      0       0       72      231     56      0
  38      46      0       8       36      46      0       16
  34      67      32      110     0       12      103     0
  0       156     177     195     103     0       0       150
  99      74      34      8       32      1       128     131
  120     3       192     132     103     36      32      1
  183     128     120     3       192     132     102     6
  120     3       184     130     101     4       34      2
  96      8       112     3       192     129     114     4
  146     128     148     129     18      216     83      129
  102     250     34      2       228     137     103     6
  34      216     83      129     102     250     114     3
  194     130     103     80      18      216     83      129
  102     250     96      72      209     194     211     194
  34      8       32      9       128     129     120     3
  192     132     103     32      32      9       179     128
  120     3       192     132     102     6       120     4
  184     130     101     4       34      2       96      4
  120     3       194     132     148     129     19      32
  83      129     102     250     34      2       228     137
  103     6       35      32      83      129     102     250
  114     3       194     130     103     6       19      32
  83      129     102     250     32      3       76      238
  0       28      255     244     78      94      78      117)

|#

;  in the logic, the above program is defined by (memmove-code).
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-code} \\  
\=\+{\sc{memmove-code}}\index{memmove-code} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{78}}{\tt{ }}{\tt{86}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{72}}{\tt{ }}{\tt{231}}{\tt{ }}{\tt{56}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{38}}{\tt{ }}{\tt{46}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{8}}{\tt{ }}{\tt{36}}{\tt{ }}{\tt{46}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{16}}{\tt{ }}{\tt{34}}{\tt{ }}{\tt{67}}{\tt{ }}{\tt{32}} \\ 
{\tt{110}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{12}}{\tt{ }}{\tt{103}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{156}}{\tt{ }}{\tt{177}}{\tt{ }}{\tt{195}}{\tt{ }}{\tt{103}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{150}}{\tt{ }}{\tt{99}}{\tt{ }}{\tt{74}}{\tt{ }}{\tt{34}}{\tt{ }}{\tt{8}} \\ 
{\tt{32}}{\tt{ }}{\tt{1}}{\tt{ }}{\tt{128}}{\tt{ }}{\tt{131}}{\tt{ }}{\tt{120}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{192}}{\tt{ }}{\tt{132}}{\tt{ }}{\tt{103}}{\tt{ }}{\tt{36}}{\tt{ }}{\tt{32}}{\tt{ }}{\tt{1}}{\tt{ }}{\tt{183}}{\tt{ }}{\tt{128}}{\tt{ }}{\tt{120}}{\tt{ }}{\tt{3}} \\ 
{\tt{192}}{\tt{ }}{\tt{132}}{\tt{ }}{\tt{102}}{\tt{ }}{\tt{6}}{\tt{ }}{\tt{120}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{184}}{\tt{ }}{\tt{130}}{\tt{ }}{\tt{101}}{\tt{ }}{\tt{4}}{\tt{ }}{\tt{34}}{\tt{ }}{\tt{2}}{\tt{ }}{\tt{96}}{\tt{ }}{\tt{8}}{\tt{ }}{\tt{112}}{\tt{ }}{\tt{3}} \\ 
{\tt{192}}{\tt{ }}{\tt{129}}{\tt{ }}{\tt{114}}{\tt{ }}{\tt{4}}{\tt{ }}{\tt{146}}{\tt{ }}{\tt{128}}{\tt{ }}{\tt{148}}{\tt{ }}{\tt{129}}{\tt{ }}{\tt{18}}{\tt{ }}{\tt{216}}{\tt{ }}{\tt{83}}{\tt{ }}{\tt{129}}{\tt{ }}{\tt{102}}{\tt{ }}{\tt{250}} \\ 
{\tt{34}}{\tt{ }}{\tt{2}}{\tt{ }}{\tt{228}}{\tt{ }}{\tt{137}}{\tt{ }}{\tt{103}}{\tt{ }}{\tt{6}}{\tt{ }}{\tt{34}}{\tt{ }}{\tt{216}}{\tt{ }}{\tt{83}}{\tt{ }}{\tt{129}}{\tt{ }}{\tt{102}}{\tt{ }}{\tt{250}}{\tt{ }}{\tt{114}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{194}} \\ 
{\tt{130}}{\tt{ }}{\tt{103}}{\tt{ }}{\tt{80}}{\tt{ }}{\tt{18}}{\tt{ }}{\tt{216}}{\tt{ }}{\tt{83}}{\tt{ }}{\tt{129}}{\tt{ }}{\tt{102}}{\tt{ }}{\tt{250}}{\tt{ }}{\tt{96}}{\tt{ }}{\tt{72}}{\tt{ }}{\tt{209}}{\tt{ }}{\tt{194}}{\tt{ }}{\tt{211}} \\ 
{\tt{194}}{\tt{ }}{\tt{34}}{\tt{ }}{\tt{8}}{\tt{ }}{\tt{32}}{\tt{ }}{\tt{9}}{\tt{ }}{\tt{128}}{\tt{ }}{\tt{129}}{\tt{ }}{\tt{120}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{192}}{\tt{ }}{\tt{132}}{\tt{ }}{\tt{103}}{\tt{ }}{\tt{32}}{\tt{ }}{\tt{32}}{\tt{ }}{\tt{9}}{\tt{ }}{\tt{179}} \\ 
{\tt{128}}{\tt{ }}{\tt{120}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{192}}{\tt{ }}{\tt{132}}{\tt{ }}{\tt{102}}{\tt{ }}{\tt{6}}{\tt{ }}{\tt{120}}{\tt{ }}{\tt{4}}{\tt{ }}{\tt{184}}{\tt{ }}{\tt{130}}{\tt{ }}{\tt{101}}{\tt{ }}{\tt{4}}{\tt{ }}{\tt{34}}{\tt{ }}{\tt{2}}{\tt{ }}{\tt{96}} \\ 
{\tt{4}}{\tt{ }}{\tt{120}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{194}}{\tt{ }}{\tt{132}}{\tt{ }}{\tt{148}}{\tt{ }}{\tt{129}}{\tt{ }}{\tt{19}}{\tt{ }}{\tt{32}}{\tt{ }}{\tt{83}}{\tt{ }}{\tt{129}}{\tt{ }}{\tt{102}}{\tt{ }}{\tt{250}}{\tt{ }}{\tt{34}}{\tt{ }}{\tt{2}} \\ 
{\tt{228}}{\tt{ }}{\tt{137}}{\tt{ }}{\tt{103}}{\tt{ }}{\tt{6}}{\tt{ }}{\tt{35}}{\tt{ }}{\tt{32}}{\tt{ }}{\tt{83}}{\tt{ }}{\tt{129}}{\tt{ }}{\tt{102}}{\tt{ }}{\tt{250}}{\tt{ }}{\tt{114}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{194}}{\tt{ }}{\tt{130}}{\tt{ }}{\tt{103}} \\ 
{\tt{6}}{\tt{ }}{\tt{19}}{\tt{ }}{\tt{32}}{\tt{ }}{\tt{83}}{\tt{ }}{\tt{129}}{\tt{ }}{\tt{102}}{\tt{ }}{\tt{250}}{\tt{ }}{\tt{32}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{76}}{\tt{ }}{\tt{238}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{28}}{\tt{ }}{\tt{255}}{\tt{ }}{\tt{244}}{\tt{ }}{\tt{78}} \\ 
{\tt{94}}{\tt{ }}{\tt{78}}{\tt{ }}{\tt{117}}{\tt{)}}\-\-
\end{tabbing}

\begin{verbatim}; the preconditions of the initial state.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-statep} \\  
\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$=$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{s\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;${\rm{evenp}}\,({\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{evenp} \\ 
$\wedge$$\;\;\;\;${\rm{rom-addrp}}\,({\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{192}})\index{rom-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mcode-addrp}}\,({\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\sc{memmove-code}}\index{memmove-code})\index{mcode-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{32}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\/}}, {\it{lst1\/}})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\it{str2\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str2\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\/}}, {\it{lst2\/}})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}}, {\it{str1\/}}, {\it{n\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}}, {\it{str2\/}}, {\it{n\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;$({\it{str1\/}} $=$ {\rm{read-mem}}\,({\rm{add}}\,({\tt{32}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp}, {\tt{4}})\index{add}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{4}})\index{read-mem}) \\ 
$\wedge$$\;\;\;\;$({\it{str2\/}} $=$ {\rm{read-mem}}\,({\rm{add}}\,({\tt{32}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp}, {\tt{8}})\index{add}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{4}})\index{read-mem}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $=$ {\rm{uread-mem}}\,({\rm{add}}\,({\tt{32}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp}, {\tt{12}})\index{add}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{4}})\index{uread-mem}) \\ 
$\wedge$$\;\;\;\;${\rm{uint-rangep}}\,({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\/}}, {\tt{32}})\index{uint-rangep} \\ 
$\wedge$$\;\;\;\;${\rm{uint-rangep}}\,({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\/}}, {\tt{32}})\index{uint-rangep})\-\-
\end{tabbing}

\begin{verbatim}; intermediate states.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-s0p} \\  
\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$=$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{s\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;${\rm{evenp}}\,({\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{evenp} \\ 
$\wedge$$\;\;\;\;${\rm{rom-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{76}}, {\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{192}})\index{rom-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mcode-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{76}}, {\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\sc{memmove-code}}\index{memmove-code})\index{mcode-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{32}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}}, {\it{lst1\/}})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\rm{add}}\,({\tt{32}}, {\it{str2\/}}, {\it{i*\/}})\index{add}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}} $-$ {\it{i\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\rm{add}}\,({\tt{32}}, {\it{str2\/}}, {\it{i*\/}})\index{add}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}} $-$ {\it{i\/}}, {\rm{mcdr}}\,({\it{i\/}}, {\it{lst2\/}})\index{mcdr})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}}, {\it{str2\/}}, {\it{n\_\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{equal*}}\,({\rm{read-an}}\,({\tt{32}}, {\tt{1}}, {\it{s\/}})\index{read-an}, {\rm{add}}\,({\tt{32}}, {\it{str1\/}}, {\it{i*\/}})\index{add})\index{equal*} \\ 
$\wedge$$\;\;\;\;${\rm{equal*}}\,({\rm{read-an}}\,({\tt{32}}, {\tt{0}}, {\it{s\/}})\index{read-an}, {\rm{add}}\,({\tt{32}}, {\it{str2\/}}, {\it{i*\/}})\index{add})\index{equal*} \\ 
$\wedge$$\;\;\;\;$({\it{str1\/}} $=$ {\rm{read-dn}}\,({\tt{32}}, {\tt{3}}, {\it{s\/}})\index{read-dn}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $=$ {\rm{uread-dn}}\,({\tt{32}}, {\tt{2}}, {\it{s\/}})\index{uread-dn}) \\ 
$\wedge$$\;\;\;\;$({\it{nt\/}} $=$ {\rm{uread-dn}}\,({\tt{32}}, {\tt{1}}, {\it{s\/}})\index{uread-dn}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\_\/}}) $<$ {\tt{4294967296}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\_\/}}) $<$ {\tt{4294967296}}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;${\rm{nat-rangep}}\,({\it{str2\/}}, {\tt{32}})\index{nat-rangep} \\ 
$\wedge$$\;\;\;\;$(({\it{i\/}} $+$ {\it{nt\/}} $+$ {\it{n\/}}) $\leq$ {\it{n\_\/}}) \\ 
$\wedge$$\;\;\;\;$({\it{nt\/}} $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{i*\/}} $\in\;${\bf{N}}${}$) \\ 
$\wedge$$\;\;\;\;${\rm{nat-rangep}}\,({\it{i*\/}}, {\tt{32}})\index{nat-rangep} \\ 
$\wedge$$\;\;\;\;$({\it{i\/}} $=$ {\rm{nat-to-uint}}\,({\it{i*\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\it{n\_\/}} $\not\simeq {\tt{0}}$))\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{memmove-s1p} \\  
\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$=$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{s\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;${\rm{evenp}}\,({\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{evenp} \\ 
$\wedge$$\;\;\;\;${\rm{rom-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{88}}, {\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{192}})\index{rom-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mcode-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{88}}, {\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\sc{memmove-code}}\index{memmove-code})\index{mcode-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{32}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}}, {\it{lst1\/}})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\rm{add}}\,({\tt{32}}, {\it{str2\/}}, {\it{i*\/}})\index{add}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}} $-$ {\it{i\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\rm{add}}\,({\tt{32}}, {\it{str2\/}}, {\it{i*\/}})\index{add}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}} $-$ {\it{i\/}}, {\rm{mcdr}}\,({\it{i\/}}, {\it{lst2\/}})\index{mcdr})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}}, {\it{str2\/}}, {\it{n\_\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{equal*}}\,({\rm{read-an}}\,({\tt{32}}, {\tt{1}}, {\it{s\/}})\index{read-an}, {\rm{add}}\,({\tt{32}}, {\it{str1\/}}, {\it{i*\/}})\index{add})\index{equal*} \\ 
$\wedge$$\;\;\;\;${\rm{equal*}}\,({\rm{read-an}}\,({\tt{32}}, {\tt{0}}, {\it{s\/}})\index{read-an}, {\rm{add}}\,({\tt{32}}, {\it{str2\/}}, {\it{i*\/}})\index{add})\index{equal*} \\ 
$\wedge$$\;\;\;\;$({\it{str1\/}} $=$ {\rm{read-dn}}\,({\tt{32}}, {\tt{3}}, {\it{s\/}})\index{read-dn}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $=$ {\rm{uread-dn}}\,({\tt{32}}, {\tt{2}}, {\it{s\/}})\index{uread-dn}) \\ 
$\wedge$$\;\;\;\;$({\it{nt\/}} $=$ {\rm{uread-dn}}\,({\tt{32}}, {\tt{1}}, {\it{s\/}})\index{uread-dn}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\_\/}}) $<$ {\tt{4294967296}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\_\/}}) $<$ {\tt{4294967296}}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;${\rm{nat-rangep}}\,({\it{str2\/}}, {\tt{32}})\index{nat-rangep} \\ 
$\wedge$$\;\;\;\;$(({\it{i\/}} $+$ ({\tt{4}} $*$ {\it{nt\/}}) $+$ ({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}})) $\leq$ {\it{n\_\/}}) \\ 
$\wedge$$\;\;\;\;$({\it{nt\/}} $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{i*\/}} $\in\;${\bf{N}}${}$) \\ 
$\wedge$$\;\;\;\;${\rm{nat-rangep}}\,({\it{i*\/}}, {\tt{32}})\index{nat-rangep} \\ 
$\wedge$$\;\;\;\;$({\it{i\/}} $=$ {\rm{nat-to-uint}}\,({\it{i*\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\it{n\_\/}} $\not\simeq {\tt{0}}$))\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{memmove-s2p} \\  
\=\+{\rm{memmove-s2p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2p} \\ 
$=$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{s\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;${\rm{evenp}}\,({\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{evenp} \\ 
$\wedge$$\;\;\;\;${\rm{rom-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{100}}, {\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{192}})\index{rom-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mcode-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{100}}, {\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\sc{memmove-code}}\index{memmove-code})\index{mcode-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{32}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}}, {\it{lst1\/}})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\rm{add}}\,({\tt{32}}, {\it{str2\/}}, {\it{i*\/}})\index{add}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}} $-$ {\it{i\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\rm{add}}\,({\tt{32}}, {\it{str2\/}}, {\it{i*\/}})\index{add}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}} $-$ {\it{i\/}}, {\rm{mcdr}}\,({\it{i\/}}, {\it{lst2\/}})\index{mcdr})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}}, {\it{str2\/}}, {\it{n\_\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{equal*}}\,({\rm{read-an}}\,({\tt{32}}, {\tt{1}}, {\it{s\/}})\index{read-an}, {\rm{add}}\,({\tt{32}}, {\it{str1\/}}, {\it{i*\/}})\index{add})\index{equal*} \\ 
$\wedge$$\;\;\;\;${\rm{equal*}}\,({\rm{read-an}}\,({\tt{32}}, {\tt{0}}, {\it{s\/}})\index{read-an}, {\rm{add}}\,({\tt{32}}, {\it{str2\/}}, {\it{i*\/}})\index{add})\index{equal*} \\ 
$\wedge$$\;\;\;\;$({\it{str1\/}} $=$ {\rm{read-dn}}\,({\tt{32}}, {\tt{3}}, {\it{s\/}})\index{read-dn}) \\ 
$\wedge$$\;\;\;\;$({\it{nt\/}} $=$ {\rm{uread-dn}}\,({\tt{32}}, {\tt{1}}, {\it{s\/}})\index{uread-dn}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\_\/}}) $<$ {\tt{4294967296}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\_\/}}) $<$ {\tt{4294967296}}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;${\rm{nat-rangep}}\,({\it{str2\/}}, {\tt{32}})\index{nat-rangep} \\ 
$\wedge$$\;\;\;\;$(({\it{i\/}} $+$ {\it{nt\/}}) $\leq$ {\it{n\_\/}}) \\ 
$\wedge$$\;\;\;\;$({\it{nt\/}} $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{i*\/}} $\in\;${\bf{N}}${}$) \\ 
$\wedge$$\;\;\;\;${\rm{nat-rangep}}\,({\it{i*\/}}, {\tt{32}})\index{nat-rangep} \\ 
$\wedge$$\;\;\;\;$({\it{i\/}} $=$ {\rm{nat-to-uint}}\,({\it{i*\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\it{n\_\/}} $\not\simeq {\tt{0}}$))\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{memmove-s3p} \\  
\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$=$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{s\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;${\rm{evenp}}\,({\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{evenp} \\ 
$\wedge$$\;\;\;\;${\rm{rom-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{150}}, {\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{192}})\index{rom-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mcode-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{150}}, {\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\sc{memmove-code}}\index{memmove-code})\index{mcode-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{32}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}}, {\it{lst1\/}})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\it{str2\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{i\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str2\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{i\/}}, {\rm{mcar}}\,({\it{i\/}}, {\it{lst2\/}})\index{mcar})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}}, {\it{str2\/}}, {\it{n\_\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{equal*}}\,({\rm{read-an}}\,({\tt{32}}, {\tt{1}}, {\it{s\/}})\index{read-an}, {\rm{add}}\,({\tt{32}}, {\it{str1\/}}, {\it{i*\/}})\index{add})\index{equal*} \\ 
$\wedge$$\;\;\;\;${\rm{equal*}}\,({\rm{read-an}}\,({\tt{32}}, {\tt{0}}, {\it{s\/}})\index{read-an}, {\rm{add}}\,({\tt{32}}, {\it{str2\/}}, {\it{i*\/}})\index{add})\index{equal*} \\ 
$\wedge$$\;\;\;\;$({\it{str1\/}} $=$ {\rm{read-dn}}\,({\tt{32}}, {\tt{3}}, {\it{s\/}})\index{read-dn}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $=$ {\rm{uread-dn}}\,({\tt{32}}, {\tt{2}}, {\it{s\/}})\index{uread-dn}) \\ 
$\wedge$$\;\;\;\;$({\it{nt\/}} $=$ {\rm{uread-dn}}\,({\tt{32}}, {\tt{1}}, {\it{s\/}})\index{uread-dn}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\_\/}}) $<$ {\tt{4294967296}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\_\/}}) $<$ {\tt{4294967296}}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;${\rm{nat-rangep}}\,({\it{str2\/}}, {\tt{32}})\index{nat-rangep} \\ 
$\wedge$$\;\;\;\;$({\it{i*\/}} $\in\;${\bf{N}}${}$) \\ 
$\wedge$$\;\;\;\;${\rm{nat-rangep}}\,({\it{i*\/}}, {\tt{32}})\index{nat-rangep} \\ 
$\wedge$$\;\;\;\;$({\it{i\/}} $=$ {\rm{nat-to-uint}}\,({\it{i*\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\it{i\/}} $\leq$ {\it{n\_\/}}) \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $+$ {\it{n\/}}) $\leq$ {\it{i\/}}) \\ 
$\wedge$$\;\;\;\;$({\it{nt\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\it{i\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\it{n\_\/}} $\not\simeq {\tt{0}}$))\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{memmove-s4p} \\  
\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$=$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{s\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;${\rm{evenp}}\,({\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{evenp} \\ 
$\wedge$$\;\;\;\;${\rm{rom-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{162}}, {\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{192}})\index{rom-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mcode-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{162}}, {\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\sc{memmove-code}}\index{memmove-code})\index{mcode-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{32}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}}, {\it{lst1\/}})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\it{str2\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{i\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str2\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{i\/}}, {\rm{mcar}}\,({\it{i\/}}, {\it{lst2\/}})\index{mcar})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}}, {\it{str2\/}}, {\it{n\_\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{equal*}}\,({\rm{read-an}}\,({\tt{32}}, {\tt{1}}, {\it{s\/}})\index{read-an}, {\rm{add}}\,({\tt{32}}, {\it{str1\/}}, {\it{i*\/}})\index{add})\index{equal*} \\ 
$\wedge$$\;\;\;\;${\rm{equal*}}\,({\rm{read-an}}\,({\tt{32}}, {\tt{0}}, {\it{s\/}})\index{read-an}, {\rm{add}}\,({\tt{32}}, {\it{str2\/}}, {\it{i*\/}})\index{add})\index{equal*} \\ 
$\wedge$$\;\;\;\;$({\it{str1\/}} $=$ {\rm{read-dn}}\,({\tt{32}}, {\tt{3}}, {\it{s\/}})\index{read-dn}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $=$ {\rm{uread-dn}}\,({\tt{32}}, {\tt{2}}, {\it{s\/}})\index{uread-dn}) \\ 
$\wedge$$\;\;\;\;$({\it{nt\/}} $=$ {\rm{uread-dn}}\,({\tt{32}}, {\tt{1}}, {\it{s\/}})\index{uread-dn}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\_\/}}) $<$ {\tt{4294967296}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\_\/}}) $<$ {\tt{4294967296}}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;${\rm{nat-rangep}}\,({\it{str2\/}}, {\tt{32}})\index{nat-rangep} \\ 
$\wedge$$\;\;\;\;$({\it{i*\/}} $\in\;${\bf{N}}${}$) \\ 
$\wedge$$\;\;\;\;${\rm{nat-rangep}}\,({\it{i*\/}}, {\tt{32}})\index{nat-rangep} \\ 
$\wedge$$\;\;\;\;$({\it{i\/}} $=$ {\rm{nat-to-uint}}\,({\it{i*\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\it{i\/}} $\leq$ {\it{n\_\/}}) \\ 
$\wedge$$\;\;\;\;$((({\tt{4}} $*$ {\it{nt\/}}) $+$ ({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}})) $\leq$ {\it{i\/}}) \\ 
$\wedge$$\;\;\;\;$({\it{i\/}} $\not<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{nt\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\it{n\_\/}} $\not\simeq {\tt{0}}$))\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{memmove-s5p} \\  
\=\+{\rm{memmove-s5p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5p} \\ 
$=$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{s\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;${\rm{evenp}}\,({\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{evenp} \\ 
$\wedge$$\;\;\;\;${\rm{rom-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{174}}, {\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{192}})\index{rom-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mcode-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{174}}, {\rm{mc-pc}}\,({\it{s\/}})\index{mc-pc})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\sc{memmove-code}}\index{memmove-code})\index{mcode-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\tt{32}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str1\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{n\_\/}}, {\it{lst1\/}})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{ram-addrp}}\,({\it{str2\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{i\/}})\index{ram-addrp} \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str2\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{i\/}}, {\rm{mcar}}\,({\it{i\/}}, {\it{lst2\/}})\index{mcar})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}}, {\it{str2\/}}, {\it{n\_\/}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{equal*}}\,({\rm{read-an}}\,({\tt{32}}, {\tt{1}}, {\it{s\/}})\index{read-an}, {\rm{add}}\,({\tt{32}}, {\it{str1\/}}, {\it{i*\/}})\index{add})\index{equal*} \\ 
$\wedge$$\;\;\;\;${\rm{equal*}}\,({\rm{read-an}}\,({\tt{32}}, {\tt{0}}, {\it{s\/}})\index{read-an}, {\rm{add}}\,({\tt{32}}, {\it{str2\/}}, {\it{i*\/}})\index{add})\index{equal*} \\ 
$\wedge$$\;\;\;\;$({\it{str1\/}} $=$ {\rm{read-dn}}\,({\tt{32}}, {\tt{3}}, {\it{s\/}})\index{read-dn}) \\ 
$\wedge$$\;\;\;\;$({\it{nt\/}} $=$ {\rm{uread-dn}}\,({\tt{32}}, {\tt{1}}, {\it{s\/}})\index{uread-dn}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\_\/}}) $<$ {\tt{4294967296}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\_\/}}) $<$ {\tt{4294967296}}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;${\rm{nat-rangep}}\,({\it{str2\/}}, {\tt{32}})\index{nat-rangep} \\ 
$\wedge$$\;\;\;\;$({\it{i*\/}} $\in\;${\bf{N}}${}$) \\ 
$\wedge$$\;\;\;\;${\rm{nat-rangep}}\,({\it{i*\/}}, {\tt{32}})\index{nat-rangep} \\ 
$\wedge$$\;\;\;\;$({\it{i\/}} $=$ {\rm{nat-to-uint}}\,({\it{i*\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\it{i\/}} $\leq$ {\it{n\_\/}}) \\ 
$\wedge$$\;\;\;\;$({\it{nt\/}} $\leq$ {\it{i\/}}) \\ 
$\wedge$$\;\;\;\;$({\it{nt\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\it{i\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\it{n\_\/}} $\not\simeq {\tt{0}}$))\-\-
\end{tabbing}

\begin{verbatim}; enable a few events for this proof.
\end{verbatim}
\noindent{\sc Event}:   Enable disjoint-leq-uint.

\addvspace{18pt}

\noindent{\sc Event}:   Enable disjoint-leq1-uint.

\addvspace{18pt}

\noindent{\sc Event}:   Enable add-uintxxx.

\addvspace{18pt}

\noindent{\sc Event}:   Enable plus-times-sub1.

\addvspace{18pt}

\begin{verbatim}; from the initial state to exit:  s --> sn, when n == 0.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s-sn-1 \\ \index{memmove-s-sn-1}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{11}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+({\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} $\wedge$ ({\it{n\/}} $\simeq {\tt{0}}$)) \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{rts-addr}}\,({\it{s\/}})\index{rts-addr}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str1\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{n\/}}, {\it{lst1\/}})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{7}}, {\it{s\/}})\index{read-an}, {\tt{4}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-sn-rfile-1 \\ \index{memmove-s-sn-rfile-1}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{11}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-sn-mem-1 \\ \index{memmove-s-sn-mem-1}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{11}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; from the initial state to exit:  s --> sn, when n =\= 0 and str1 == str2.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s-sn-2 \\ \index{memmove-s-sn-2}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{13}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{rts-addr}}\,({\it{s\/}})\index{rts-addr}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str1\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{n\/}}, {\it{lst2\/}})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{7}}, {\it{s\/}})\index{read-an}, {\tt{4}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-sn-rfile-2 \\ \index{memmove-s-sn-rfile-2}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{13}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-sn-mem-2 \\ \index{memmove-s-sn-mem-2}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{13}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; from the initial state s to s0:  s --> s0.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s-s0-1 \\ \index{memmove-s-s0-1}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ ({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$(\=\+(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\vee$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\-)\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s0p}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{24}})\index{stepn}, {\tt{0}}, {\tt{0}}, {\it{str1\/}}, {\tt{0}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{n\/}}, {\it{n\/}})\index{memmove-s0p}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s0-else-1 \\ \index{memmove-s-s0-else-1}
\=\+{\bf let }\=\+{\it{s0\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{24}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ ({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$(\=\+(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\vee$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\-)\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s0\/}})\index{linked-rts-addr} $=$ {\rm{rts-addr}}\,({\it{s\/}})\index{rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s0\/}})\index{linked-a6} $=$ {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s0\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub})\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{movem-saved}}\,({\it{s0\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} \\ 
$=$$\;\;\;\;${\rm{readm-rn}}\,({\tt{32}}, {\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{readm-rn})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s0-rfile-1 \\ \index{memmove-s-s0-rfile-1}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ ({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$(\=\+(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\vee$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\- \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{24}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s0-mem-1 \\ \index{memmove-s-s0-mem-1}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ ({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$(\=\+(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\vee$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\- \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{24}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s0-2 \\ \index{memmove-s-s0-2}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\leq$ {\tt{3}}) \\ 
$\wedge$$\;\;\;\;$(\=\+(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\vee$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\-)\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s0p}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{27}})\index{stepn}, {\tt{0}}, {\tt{0}}, {\it{str1\/}}, {\tt{0}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{n\/}}, {\it{n\/}})\index{memmove-s0p}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s0-else-2 \\ \index{memmove-s-s0-else-2}
\=\+{\bf let }\=\+{\it{s0\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{27}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\leq$ {\tt{3}}) \\ 
$\wedge$$\;\;\;\;$(\=\+(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\vee$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\-)\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s0\/}})\index{linked-rts-addr} $=$ {\rm{rts-addr}}\,({\it{s\/}})\index{rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s0\/}})\index{linked-a6} $=$ {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s0\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub})\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{movem-saved}}\,({\it{s0\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} \\ 
$=$$\;\;\;\;${\rm{readm-rn}}\,({\tt{32}}, {\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{readm-rn})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s0-rfile-2 \\ \index{memmove-s-s0-rfile-2}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\leq$ {\tt{3}}) \\ 
$\wedge$$\;\;\;\;$(\=\+(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\vee$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\- \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{27}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s0-mem-2 \\ \index{memmove-s-s0-mem-2}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\leq$ {\tt{3}}) \\ 
$\wedge$$\;\;\;\;$(\=\+(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\vee$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\- \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{27}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s0-3 \\ \index{memmove-s-s0-3}
\=\+{\bf let }\=\+{\it{r\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\tt{3}} $<$ {\it{n\/}}) \\ 
$\wedge$$\;\;\;\;$(\=\+(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\vee$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\-)\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s0p}}\,(\=\+{\rm{stepn}}\,({\it{s\/}}, {\tt{29}})\index{stepn}, \\ 
{\tt{0}}, \\ 
{\tt{0}}, \\ 
{\it{str1\/}}, \\ 
({\it{n\/}} $+$ {\it{r\/}}) $-$ {\tt{4}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\tt{4}} $-$ {\it{r\/}}, \\ 
{\it{n\/}})\-\index{memmove-s0p}\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s0-else-3 \\ \index{memmove-s-s0-else-3}
\=\+{\bf let }\=\+{\it{s0\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{29}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\tt{3}} $<$ {\it{n\/}}) \\ 
$\wedge$$\;\;\;\;$(\=\+(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\vee$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\-)\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s0\/}})\index{linked-rts-addr} $=$ {\rm{rts-addr}}\,({\it{s\/}})\index{rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s0\/}})\index{linked-a6} $=$ {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s0\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub})\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{movem-saved}}\,({\it{s0\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} \\ 
$=$$\;\;\;\;${\rm{readm-rn}}\,({\tt{32}}, {\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{readm-rn})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s0-rfile-3 \\ \index{memmove-s-s0-rfile-3}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\tt{3}} $<$ {\it{n\/}}) \\ 
$\wedge$$\;\;\;\;$(\=\+(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\vee$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\- \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{29}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s0-mem-3 \\ \index{memmove-s-s0-mem-3}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\tt{3}} $<$ {\it{n\/}}) \\ 
$\wedge$$\;\;\;\;$(\=\+(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\vee$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\- \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{29}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; from the initial state s to s1:  s --> s1.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s-s1 \\ \index{memmove-s-s1}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s1p}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{19}})\index{stepn}, {\tt{0}}, {\tt{0}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{n\/}} $\div$ {\tt{4}}, {\it{n\/}})\index{memmove-s1p}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s1-else \\ \index{memmove-s-s1-else}
\=\+{\bf let }\=\+{\it{s1\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{19}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s1\/}})\index{linked-rts-addr} $=$ {\rm{rts-addr}}\,({\it{s\/}})\index{rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s1\/}})\index{linked-a6} $=$ {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s1\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub})\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{movem-saved}}\,({\it{s1\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} \\ 
$=$$\;\;\;\;${\rm{readm-rn}}\,({\tt{32}}, {\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{readm-rn})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s1-rfile \\ \index{memmove-s-s1-rfile}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{19}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s1-mem \\ \index{memmove-s-s1-mem}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{19}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; from s to s2.  s --> s2.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s-s2 \\ \index{memmove-s-s2}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s2p}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{22}})\index{stepn}, {\tt{0}}, {\tt{0}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{n\/}}, {\it{n\/}})\index{memmove-s2p}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s2-else \\ \index{memmove-s-s2-else}
\=\+{\bf let }\=\+{\it{s2\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{22}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s2\/}})\index{linked-rts-addr} $=$ {\rm{rts-addr}}\,({\it{s\/}})\index{rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s2\/}})\index{linked-a6} $=$ {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s2\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub})\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{movem-saved}}\,({\it{s2\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} \\ 
$=$$\;\;\;\;${\rm{readm-rn}}\,({\tt{32}}, {\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{readm-rn})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s2-rfile \\ \index{memmove-s-s2-rfile}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{22}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s2-mem \\ \index{memmove-s-s2-mem}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{22}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; s0 --> s1.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s0-s1 \\ \index{memmove-s0-s1}
\=\+{\bf let }\=\+{\it{s1\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s1p}}\,(\=\+{\it{s1\/}}, \\ 
{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{1}})\index{add}, \\ 
$1\;+$ {\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}}, {\it{lst2\/}})\index{get-nth}, {\it{i\/}}, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}} $\div$ {\tt{4}}, \\ 
{\it{n\_\/}})\-\index{memmove-s1p}\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-s1-else \\ \index{memmove-s0-s1-else}
\=\+{\bf let }\=\+{\it{s1\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s1\/}})\index{linked-rts-addr} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s1\/}})\index{linked-a6} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s1\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\- \\ 
$\wedge$$\;\;\;\;$({\rm{movem-saved}}\,({\it{s1\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} $=$ {\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved}))\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-s1-rfile \\ \index{memmove-s0-s1-rfile}
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-s1-mem \\ \index{memmove-s0-s1-mem}
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; s0 --> s2.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s0-s2 \\ \index{memmove-s0-s2}
\=\+{\bf let }\=\+{\it{s2\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{9}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$))\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s2p}}\,(\=\+{\it{s2\/}}, \\ 
{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{1}})\index{add}, \\ 
$1\;+$ {\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}}, {\it{lst2\/}})\index{get-nth}, {\it{i\/}}, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}}, \\ 
{\it{n\_\/}})\-\index{memmove-s2p}\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-s2-else \\ \index{memmove-s0-s2-else}
\=\+{\bf let }\=\+{\it{s2\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{9}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s2\/}})\index{linked-rts-addr} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s2\/}})\index{linked-a6} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s2\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\- \\ 
$\wedge$$\;\;\;\;$({\rm{movem-saved}}\,({\it{s2\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} $=$ {\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved}))\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-s2-rfile \\ \index{memmove-s0-s2-rfile}
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{9}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-s2-mem \\ \index{memmove-s0-s2-mem}
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{9}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; s0 --> s0.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s0-s0 \\ \index{memmove-s0-s0}
\=\+{\bf let }\=\+{\it{s0\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{memmove-s0p}}\,(\=\+{\it{s0\/}}, \\ 
{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{1}})\index{add}, \\ 
$1\;+$ {\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}}, {\it{lst2\/}})\index{get-nth}, {\it{i\/}}, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$, \\ 
{\it{n\_\/}})\-\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$({\rm{linked-rts-addr}}\,({\it{s0\/}})\index{linked-rts-addr} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s0\/}})\index{linked-a6} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s0\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\- \\ 
$\wedge$$\;\;\;\;$({\rm{movem-saved}}\,({\it{s0\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} $=$ {\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved}))\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-s0-rfile \\ \index{memmove-s0-s0-rfile}
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-s0-mem \\ \index{memmove-s0-s0-mem}
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; s1 --> s2.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s1-s2 \\ \index{memmove-s1-s2}
\=\+{\bf let }\=\+{\it{s2\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s2p}}\,(\=\+{\it{s2\/}}, \\ 
{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{4}})\index{add}, \\ 
{\tt{4}} $+$ {\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}})\index{movn-lst}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}, \\ 
{\it{n\_\/}})\-\index{memmove-s2p}\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s1-s2-else \\ \index{memmove-s1-s2-else}
\=\+{\bf let }\=\+{\it{s2\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s2\/}})\index{linked-rts-addr} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s2\/}})\index{linked-a6} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s2\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\- \\ 
$\wedge$$\;\;\;\;$({\rm{movem-saved}}\,({\it{s2\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} $=$ {\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved}))\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s1-s2-rfile \\ \index{memmove-s1-s2-rfile}
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s1-s2-mem \\ \index{memmove-s1-s2-mem}
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; s1 --> s1.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s1-s1 \\ \index{memmove-s1-s1}
\=\+{\bf let }\=\+{\it{s1\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{memmove-s1p}}\,(\=\+{\it{s1\/}}, \\ 
{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{4}})\index{add}, \\ 
{\tt{4}} $+$ {\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}})\index{movn-lst}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$, \\ 
{\it{n\_\/}})\-\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$({\rm{linked-rts-addr}}\,({\it{s1\/}})\index{linked-rts-addr} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s1\/}})\index{linked-a6} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s1\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\- \\ 
$\wedge$$\;\;\;\;$({\rm{movem-saved}}\,({\it{s1\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} $=$ {\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved}))\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s1-s1-rfile \\ \index{memmove-s1-s1-rfile}
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s1-s1-mem \\ \index{memmove-s1-s1-mem}
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; from s2 to exit:  s2 --> sn.
; base case:  s2 --> sn.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s2-sn-base \\ \index{memmove-s2-sn-base}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{8}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s2p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}}, {\it{lst2\/}})\index{get-nth}, {\it{i\/}}, {\it{lst1\/}})\index{put-nth})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s2-sn-rfile-base \\ \index{memmove-s2-sn-rfile-base}
\=\+(\=\+{\rm{memmove-s2p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{8}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s2-sn-mem-base \\ \index{memmove-s2-sn-mem-base}
\=\+(\=\+{\rm{memmove-s2p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{8}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; induction case:  s2 --> s2.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s2-s2 \\ \index{memmove-s2-s2}
\=\+{\bf let }\=\+{\it{s2\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s2p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{memmove-s2p}}\,(\=\+{\it{s2\/}}, \\ 
{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{1}})\index{add}, \\ 
$1\;+$ {\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}}, {\it{lst2\/}})\index{get-nth}, {\it{i\/}}, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$, \\ 
{\it{n\_\/}})\-\index{memmove-s2p} \\ 
$\wedge$$\;\;\;\;$({\rm{linked-rts-addr}}\,({\it{s2\/}})\index{linked-rts-addr} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s2\/}})\index{linked-a6} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s2\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\- \\ 
$\wedge$$\;\;\;\;$({\rm{movem-saved}}\,({\it{s2\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} $=$ {\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved}))\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s2-s2-rfile \\ \index{memmove-s2-s2-rfile}
\=\+(\=\+{\rm{memmove-s2p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s2-s2-mem \\ \index{memmove-s2-s2-mem}
\=\+(\=\+{\rm{memmove-s2p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; put together: s2 --> sn.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-s2-sn-t} \\  
\=\+{\rm{memmove-s2-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2-sn-t} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{nt\/}} $-\;1$) $=$ {\tt{0}}$\;\;${\bf then }{\tt{8}} \\ 
{\bf else }{\rm{splus}}\,(\=\+{\tt{3}}, \\ 
{\rm{memmove-s2-sn-t}}\,(\=\+{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{1}})\index{add}, \\ 
$1\;+$ {\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}}, {\it{lst2\/}})\index{get-nth}, {\it{i\/}}, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$, \\ 
{\it{n\_\/}})\-\index{memmove-s2-sn-t})\-\index{splus}$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{memmove-s2-sn-induct} \\  
\=\+{\rm{memmove-s2-sn-induct}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{nt\/}})\index{memmove-s2-sn-induct} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{nt\/}} $-\;1$) $=$ {\tt{0}}$\;\;${\bf then }{\bf{t}} \\ 
{\bf else }{\rm{memmove-s2-sn-induct}}\,(\=\+{\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn}, \\ 
{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{1}})\index{add}, \\ 
$1\;+$ {\it{i\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}}, {\it{lst2\/}})\index{get-nth}, {\it{i\/}}, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$)\-\index{memmove-s2-sn-induct}$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s2p-info \\ \index{memmove-s2p-info}
\=\+{\rm{memmove-s2p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2p} \\ 
$\rightarrow$$\;\;\;\;$(({\it{nt\/}} $\in\;${\bf{N}}${}$) $\wedge$ ({\it{nt\/}} $\not=$ {\tt{0}}))\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s2-sn \\ \index{memmove-s2-sn}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s2-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+{\rm{memmove-s2p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2p} \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{mmov1-lst}}\,({\it{i\/}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{nt\/}})\index{mmov1-lst})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s2-sn-rfile \\ \index{memmove-s2-sn-rfile}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s2-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s2p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2p} \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s2-sn-mem \\ \index{memmove-s2-sn-mem}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s2-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s2p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s2p} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}


\noindent{\sc Event}:   Disable memmove-s2p-info.

\addvspace{18pt}

\begin{verbatim}; from s1 to sn: s1 --> sn.
; base case 1: s1 --> sn.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s1-sn-base-1 \\ \index{memmove-s1-sn-base-1}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{10}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,({\tt{1}}, {\it{str1\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{n\_\/}}, {\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}})\index{movn-lst})\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s1-sn-rfile-base-1 \\ \index{memmove-s1-sn-rfile-base-1}
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{10}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s1-sn-mem-base-1 \\ \index{memmove-s1-sn-mem-base-1}
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{10}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}
     
\begin{verbatim}; base case 2: s1 --> s2 --> sn.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-s1-sn-t0} \\  
\=\+{\rm{memmove-s1-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1-sn-t0} \\ 
$=$$\;\;\;\;${\rm{splus}}\,(\=\+{\tt{6}}, \\ 
{\rm{memmove-s2-sn-t}}\,(\=\+{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{4}})\index{add}, \\ 
{\tt{4}} $+$ {\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}})\index{movn-lst}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}, \\ 
{\it{n\_\/}})\-\index{memmove-s2-sn-t})\-\index{splus}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s1-sn-base-2 \\ \index{memmove-s1-sn-base-2}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s1-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1-sn-t0})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{mmov1-lst}}\,(\=\+{\tt{4}} $+$ {\it{i\/}}, \\ 
{\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}})\index{movn-lst}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}})\-\index{mmov1-lst})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s1-sn-rfile-base-2 \\ \index{memmove-s1-sn-rfile-base-2}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s1-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1-sn-t0})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}     

\begin{tabbing}{\sc Theorem}:  memmove-s1-sn-mem-base-2 \\ \index{memmove-s1-sn-mem-base-2}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s1-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1-sn-t0})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}     

\begin{verbatim}; put together:  s1 --> s2.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-s1-sn-t} \\  
\=\+{\rm{memmove-s1-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1-sn-t} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{nt\/}} $-\;1$) $=$ {\tt{0}} \\ 
{\bf then }\=\+{\bf if }({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}$\;\;${\bf then }{\tt{10}} \\ 
{\bf else }{\rm{memmove-s1-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1-sn-t0}$\;${\bf  endif}\- \\ 
{\bf else }{\rm{splus}}\,(\=\+{\tt{3}}, \\ 
{\rm{memmove-s1-sn-t}}\,(\=\+{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{4}})\index{add}, \\ 
{\tt{4}} $+$ {\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}})\index{movn-lst}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$, \\ 
{\it{n\_\/}})\-\index{memmove-s1-sn-t})\-\index{splus}$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{memmove-s1-sn-induct} \\  
\=\+{\rm{memmove-s1-sn-induct}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{nt\/}})\index{memmove-s1-sn-induct} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{nt\/}} $-\;1$) $=$ {\tt{0}}$\;\;${\bf then }{\bf{t}} \\ 
{\bf else }{\rm{memmove-s1-sn-induct}}\,(\=\+{\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn}, \\ 
{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{4}})\index{add}, \\ 
{\tt{4}} $+$ {\it{i\/}}, \\ 
{\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}})\index{movn-lst}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$)\-\index{memmove-s1-sn-induct}$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s1p-info \\ \index{memmove-s1p-info}
\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\rightarrow$$\;\;\;\;$(({\it{nt\/}} $\in\;${\bf{N}}${}$) $\wedge$ ({\it{nt\/}} $\not=$ {\tt{0}}))\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s1-sn \\ \index{memmove-s1-sn}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s1-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{memmove-1}}\,({\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}}, {\it{nt\/}}, {\it{n\/}})\index{memmove-1})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s1-sn-rfile \\ \index{memmove-s1-sn-rfile}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s1-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s1-sn-mem \\ \index{memmove-s1-sn-mem}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s1-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s1p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s1p} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}


\noindent{\sc Event}:   Disable memmove-s1p-info.

\addvspace{18pt}

\begin{verbatim}; from s0 to sn: s0 --> sn.
; base case 1: s0 --> sn.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s0-sn-base-1 \\ \index{memmove-s0-sn-base-1}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{13}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\simeq {\tt{0}}$))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}}, {\it{lst2\/}})\index{get-nth}, {\it{i\/}}, {\it{lst1\/}})\index{put-nth})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-sn-rfile-base-1 \\ \index{memmove-s0-sn-rfile-base-1}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{13}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-sn-mem-base-1 \\ \index{memmove-s0-sn-mem-base-1}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{13}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}		
		
\begin{verbatim}; base case 2: s0 --> s1 --> sn.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-s0-sn-t0} \\  
\=\+{\rm{memmove-s0-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0-sn-t0} \\ 
$=$$\;\;\;\;${\rm{splus}}\,(\=\+{\tt{6}}, \\ 
{\rm{memmove-s1-sn-t}}\,(\=\+{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{1}})\index{add}, \\ 
$1\;+$ {\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}}, {\it{lst2\/}})\index{get-nth}, {\it{i\/}}, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}} $\div$ {\tt{4}}, \\ 
{\it{n\_\/}})\-\index{memmove-s1-sn-t})\-\index{splus}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-sn-base-2 \\ \index{memmove-s0-sn-base-2}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s0-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0-sn-t0})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{memmove-1}}\,(\=\+{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}}, {\it{lst2\/}})\index{get-nth}, {\it{i\/}}, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{lst2\/}}, \\ 
$1\;+$ {\it{i\/}}, \\ 
{\it{n\/}} $\div$ {\tt{4}}, \\ 
{\it{n\/}})\-\index{memmove-1})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-sn-rfile-base-2 \\ \index{memmove-s0-sn-rfile-base-2}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s0-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0-sn-t0})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}     

\begin{tabbing}{\sc Theorem}:  memmove-s0-sn-mem-base-2 \\ \index{memmove-s0-sn-mem-base-2}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s0-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0-sn-t0})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}     

\begin{verbatim}; base case 3: s0 --> s2 --> sn.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-s0-sn-t1} \\  
\=\+{\rm{memmove-s0-sn-t1}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0-sn-t1} \\ 
$=$$\;\;\;\;${\rm{splus}}\,(\=\+{\tt{9}}, \\ 
{\rm{memmove-s2-sn-t}}\,(\=\+{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{1}})\index{add}, \\ 
$1\;+$ {\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}}, {\it{lst2\/}})\index{get-nth}, {\it{i\/}}, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}}, \\ 
{\it{n\_\/}})\-\index{memmove-s2-sn-t})\-\index{splus}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-sn-base-3 \\ \index{memmove-s0-sn-base-3}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s0-sn-t1}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0-sn-t1})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{mmov1-lst}}\,(\=\+$1\;+$ {\it{i\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}}, {\it{lst2\/}})\index{get-nth}, {\it{i\/}}, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}})\-\index{mmov1-lst})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-sn-rfile-base-3 \\ \index{memmove-s0-sn-rfile-base-3}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s0-sn-t1}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0-sn-t1})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-sn-mem-base-3 \\ \index{memmove-s0-sn-mem-base-3}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s0-sn-t1}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0-sn-t1})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}     

\begin{verbatim}; put together: s0 --> sn.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-s0-sn-t} \\  
\=\+{\rm{memmove-s0-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0-sn-t} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{nt\/}} $-\;1$) $=$ {\tt{0}} \\ 
{\bf then }\=\+{\bf if }{\it{n\/}} $<$ {\tt{4}} \\ 
{\bf then }\=\+{\bf if }{\it{n\/}} $\simeq {\tt{0}}$$\;\;${\bf then }{\tt{13}} \\ 
{\bf else }{\rm{memmove-s0-sn-t1}}\,(\=\+{\it{i*\/}}, \\ 
{\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}}, \\ 
{\it{n\_\/}})\-\index{memmove-s0-sn-t1}$\;${\bf  endif}\- \\ 
{\bf else }{\rm{memmove-s0-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0-sn-t0}$\;${\bf  endif}\- \\ 
{\bf else }{\rm{splus}}\,(\=\+{\tt{3}}, \\ 
{\rm{memmove-s0-sn-t}}\,(\=\+{\rm{add}}\,({\tt{32}}, {\it{i*\/}}, {\tt{1}})\index{add}, \\ 
$1\;+$ {\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}}, {\it{lst2\/}})\index{get-nth}, {\it{i\/}}, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$, \\ 
{\it{n\_\/}})\-\index{memmove-s0-sn-t})\-\index{splus}$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0p-info \\ \index{memmove-s0p-info}
\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\rightarrow$$\;\;\;\;$(({\it{nt\/}} $\in\;${\bf{N}}${}$) $\wedge$ ({\it{nt\/}} $\not=$ {\tt{0}}))\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-sn \\ \index{memmove-s0-sn}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s0-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{memmove-0}}\,({\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}}, {\it{nt\/}}, {\it{n\/}})\index{memmove-0})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-sn-rfile \\ \index{memmove-s0-sn-rfile}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s0-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s0-sn-mem \\ \index{memmove-s0-sn-mem}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s0-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s0p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s0p} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}


\noindent{\sc Event}:   Disable memmove-s0p-info.

\addvspace{18pt}

\begin{verbatim}; from the initial state s to s3:  s --> s3.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s-s3-1 \\ \index{memmove-s-s3-1}
\=\+{\bf let }\=\+{\it{x1\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{x2\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\/}}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ ({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$((({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) $\vee$ (({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}})))\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s3p}}\,(\=\+{\rm{stepn}}\,({\it{s\/}}, {\tt{26}})\index{stepn}, \\ 
{\rm{uint-to-nat}}\,({\it{n\/}})\index{uint-to-nat}, \\ 
{\it{n\/}}, \\ 
{\it{str1\/}}, \\ 
{\tt{0}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}}, \\ 
{\it{n\/}})\-\index{memmove-s3p}\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s3-else-1 \\ \index{memmove-s-s3-else-1}
\=\+{\bf let }\=\+{\it{x1\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{x2\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{s3\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{26}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ ({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$((({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) $\vee$ (({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}})))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s3\/}})\index{linked-rts-addr} $=$ {\rm{rts-addr}}\,({\it{s\/}})\index{rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s3\/}})\index{linked-a6} $=$ {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s3\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub})\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{movem-saved}}\,({\it{s3\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} \\ 
$=$$\;\;\;\;${\rm{readm-rn}}\,({\tt{32}}, {\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{readm-rn})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s3-rfile-1 \\ \index{memmove-s-s3-rfile-1}
\=\+{\bf let }\=\+{\it{x1\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{x2\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\/}}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ ({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$((({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) $\vee$ (({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}})) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{26}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s3-mem-1 \\ \index{memmove-s-s3-mem-1}
\=\+{\bf let }\=\+{\it{x1\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{x2\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\/}}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ ({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$((({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) $\vee$ (({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}})) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{26}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} \\ 
$=$$\;\;\;\;${\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s3-2 \\ \index{memmove-s-s3-2}
\=\+{\bf let }\=\+{\it{x1\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{x2\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\/}}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\leq$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$((({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) $\vee$ (({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}})))\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s3p}}\,(\=\+{\rm{stepn}}\,({\it{s\/}}, {\tt{29}})\index{stepn}, \\ 
{\rm{uint-to-nat}}\,({\it{n\/}})\index{uint-to-nat}, \\ 
{\it{n\/}}, \\ 
{\it{str1\/}}, \\ 
{\tt{0}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}}, \\ 
{\it{n\/}})\-\index{memmove-s3p}\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s3-else-2 \\ \index{memmove-s-s3-else-2}
\=\+{\bf let }\=\+{\it{x1\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{x2\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{s3\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{29}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\leq$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$((({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) $\vee$ (({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}})))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s3\/}})\index{linked-rts-addr} $=$ {\rm{rts-addr}}\,({\it{s\/}})\index{rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s3\/}})\index{linked-a6} $=$ {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s3\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub})\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{movem-saved}}\,({\it{s3\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} \\ 
$=$$\;\;\;\;${\rm{readm-rn}}\,({\tt{32}}, {\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{readm-rn})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s3-rfile-2 \\ \index{memmove-s-s3-rfile-2}
\=\+{\bf let }\=\+{\it{x1\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{x2\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\/}}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\leq$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$((({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) $\vee$ (({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}})) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{29}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s3-mem-2 \\ \index{memmove-s-s3-mem-2}
\=\+{\bf let }\=\+{\it{x1\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{x2\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\/}}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\leq$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$((({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) $\vee$ (({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}})) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{29}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} \\ 
$=$$\;\;\;\;${\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s3-3 \\ \index{memmove-s-s3-3}
\=\+{\bf let }\=\+{\it{x1\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{x2\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{nt\/}}{\bf $\;$ be$\;\;$}({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\tt{4}} $<$ {\it{n\/}}) \\ 
$\wedge$$\;\;\;\;$((({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) $\vee$ (({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}})))\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s3p}}\,(\=\+{\rm{stepn}}\,({\it{s\/}}, {\tt{29}})\index{stepn}, \\ 
{\rm{uint-to-nat}}\,({\it{n\/}})\index{uint-to-nat}, \\ 
{\it{n\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}} $-$ {\it{nt\/}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}}, \\ 
{\it{n\/}})\-\index{memmove-s3p}\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s3-else-3 \\ \index{memmove-s-s3-else-3}
\=\+{\bf let }\=\+{\it{x1\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{x2\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{s3\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{29}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\tt{4}} $<$ {\it{n\/}}) \\ 
$\wedge$$\;\;\;\;$((({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) $\vee$ (({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}})))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s3\/}})\index{linked-rts-addr} $=$ {\rm{rts-addr}}\,({\it{s\/}})\index{rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s3\/}})\index{linked-a6} $=$ {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s3\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub})\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{movem-saved}}\,({\it{s3\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} \\ 
$=$$\;\;\;\;${\rm{readm-rn}}\,({\tt{32}}, {\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{readm-rn})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s3-rfile-3 \\ \index{memmove-s-s3-rfile-3}
\=\+{\bf let }\=\+{\it{x1\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{x2\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\/}}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\tt{4}} $<$ {\it{n\/}}) \\ 
$\wedge$$\;\;\;\;$((({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) $\vee$ (({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}})) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{29}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s3-mem-3 \\ \index{memmove-s-s3-mem-3}
\=\+{\bf let }\=\+{\it{x1\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $+$ {\it{n\/}}, \\ 
{\it{x2\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint} $+$ {\it{n\/}}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$(({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$\wedge$$\;\;\;\;$({\tt{4}} $<$ {\it{n\/}}) \\ 
$\wedge$$\;\;\;\;$((({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) $\vee$ (({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}})) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{29}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} \\ 
$=$$\;\;\;\;${\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{verbatim}; from the initial state s to s4:  s --> s4. 
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s-s4 \\ \index{memmove-s-s4}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s4p}}\,(\=\+{\rm{stepn}}\,({\it{s\/}}, {\tt{21}})\index{stepn}, \\ 
{\rm{uint-to-nat}}\,({\it{n\/}})\index{uint-to-nat}, \\ 
{\it{n\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}} $\div$ {\tt{4}}, \\ 
{\it{n\/}})\-\index{memmove-s4p}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s4-else \\ \index{memmove-s-s4-else}
\=\+{\bf let }\=\+{\it{s4\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{21}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s4\/}})\index{linked-rts-addr} $=$ {\rm{rts-addr}}\,({\it{s\/}})\index{rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s4\/}})\index{linked-a6} $=$ {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s4\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub})\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{movem-saved}}\,({\it{s4\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} \\ 
$=$$\;\;\;\;${\rm{readm-rn}}\,({\tt{32}}, {\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{readm-rn})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s4-rfile \\ \index{memmove-s-s4-rfile}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{21}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s4-mem \\ \index{memmove-s-s4-mem}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{21}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; from s to s5.  s --> s5.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s-s5 \\ \index{memmove-s-s5}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s5p}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{24}})\index{stepn}, {\rm{uint-to-nat}}\,({\it{n\/}})\index{uint-to-nat}, {\it{n\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{n\/}}, {\it{n\/}})\index{memmove-s5p}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s5-else \\ \index{memmove-s-s5-else}
\=\+{\bf let }\=\+{\it{s0\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{24}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s0\/}})\index{linked-rts-addr} $=$ {\rm{rts-addr}}\,({\it{s\/}})\index{rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s0\/}})\index{linked-a6} $=$ {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s0\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub})\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{movem-saved}}\,({\it{s0\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} \\ 
$=$$\;\;\;\;${\rm{readm-rn}}\,({\tt{32}}, {\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{readm-rn})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s5-rfile \\ \index{memmove-s-s5-rfile}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{24}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s-s5-mem \\ \index{memmove-s-s5-mem}
\=\+(\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not=$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$({\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint} $\not<$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$((({\it{n\/}} $+$ {\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}) ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{24}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; s3 --> s4.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s3-s4 \\ \index{memmove-s3-s4}
\=\+{\bf let }\=\+{\it{s4\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s4p}}\,(\=\+{\it{s4\/}}, \\ 
{\rm{sub}}\,({\tt{32}}, {\tt{1}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}} $-\;1$, {\it{lst2\/}})\index{get-nth}, {\it{i\/}} $-\;1$, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}} $\div$ {\tt{4}}, \\ 
{\it{n\_\/}})\-\index{memmove-s4p}\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-s4-else \\ \index{memmove-s3-s4-else}
\=\+{\bf let }\=\+{\it{s4\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s4\/}})\index{linked-rts-addr} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s4\/}})\index{linked-a6} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s4\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\- \\ 
$\wedge$$\;\;\;\;$({\rm{movem-saved}}\,({\it{s4\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} $=$ {\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved}))\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-s4-rfile-base \\ \index{memmove-s3-s4-rfile-base}
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-s4-mem-base \\ \index{memmove-s3-s4-mem-base}
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; s3 --> s5.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s3-s5 \\ \index{memmove-s3-s5}
\=\+{\bf let }\=\+{\it{s5\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{9}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$))\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s5p}}\,(\=\+{\it{s5\/}}, \\ 
{\rm{sub}}\,({\tt{32}}, {\tt{1}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}} $-\;1$, {\it{lst2\/}})\index{get-nth}, {\it{i\/}} $-\;1$, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}}, \\ 
{\it{n\_\/}})\-\index{memmove-s5p}\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-s5-else \\ \index{memmove-s3-s5-else}
\=\+{\bf let }\=\+{\it{s5\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{9}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s5\/}})\index{linked-rts-addr} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s5\/}})\index{linked-a6} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s5\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\- \\ 
$\wedge$$\;\;\;\;$({\rm{movem-saved}}\,({\it{s5\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} $=$ {\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved}))\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-s5-rfile \\ \index{memmove-s3-s5-rfile}
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{9}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-s5-mem \\ \index{memmove-s3-s5-mem}
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{9}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; s3 --> s3.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s3-s3 \\ \index{memmove-s3-s3}
\=\+{\bf let }\=\+{\it{s3\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{memmove-s3p}}\,(\=\+{\it{s3\/}}, \\ 
{\rm{sub}}\,({\tt{32}}, {\tt{1}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}} $-\;1$, {\it{lst2\/}})\index{get-nth}, {\it{i\/}} $-\;1$, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$, \\ 
{\it{n\_\/}})\-\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$({\rm{linked-rts-addr}}\,({\it{s3\/}})\index{linked-rts-addr} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s3\/}})\index{linked-a6} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s3\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\- \\ 
$\wedge$$\;\;\;\;$({\rm{movem-saved}}\,({\it{s3\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} $=$ {\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved}))\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-s3-rfile \\ \index{memmove-s3-s3-rfile}
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-s3-mem \\ \index{memmove-s3-s3-mem}
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; s4 --> s5.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s4-s5 \\ \index{memmove-s4-s5}
\=\+{\bf let }\=\+{\it{s5\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;${\rm{memmove-s5p}}\,(\=\+{\it{s5\/}}, \\ 
{\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-$ {\tt{4}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}} $-$ {\tt{4}})\index{movn-lst}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}, \\ 
{\it{n\_\/}})\-\index{memmove-s5p}\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4-s5-else \\ \index{memmove-s4-s5-else}
\=\+{\bf let }\=\+{\it{s5\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{linked-rts-addr}}\,({\it{s5\/}})\index{linked-rts-addr} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s5\/}})\index{linked-a6} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s5\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\- \\ 
$\wedge$$\;\;\;\;$({\rm{movem-saved}}\,({\it{s5\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} $=$ {\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved}))\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4-s5-rfile \\ \index{memmove-s4-s5-rfile}
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4-s5-mem \\ \index{memmove-s4-s5-mem}
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{6}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; s4 --> s4.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s4-s4 \\ \index{memmove-s4-s4}
\=\+{\bf let }\=\+{\it{s4\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{memmove-s4p}}\,(\=\+{\it{s4\/}}, \\ 
{\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-$ {\tt{4}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}} $-$ {\tt{4}})\index{movn-lst}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$, \\ 
{\it{n\_\/}})\-\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$({\rm{linked-rts-addr}}\,({\it{s4\/}})\index{linked-rts-addr} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s4\/}})\index{linked-a6} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s4\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\- \\ 
$\wedge$$\;\;\;\;$({\rm{movem-saved}}\,({\it{s4\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} $=$ {\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved}))\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4-s4-rfile \\ \index{memmove-s4-s4-rfile}
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4-s4-mem \\ \index{memmove-s4-s4-mem}
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; from s5 to exit:  s5 --> sn.
; base case: s5 --> sn.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s5-sn-base \\ \index{memmove-s5-sn-base}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{7}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s5p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}} $-\;1$, {\it{lst2\/}})\index{get-nth}, {\it{i\/}} $-\;1$, {\it{lst1\/}})\index{put-nth})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s5-sn-rfile-base \\ \index{memmove-s5-sn-rfile-base}
\=\+(\=\+{\rm{memmove-s5p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{7}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s5-sn-mem-base \\ \index{memmove-s5-sn-mem-base}
\=\+(\=\+{\rm{memmove-s5p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{7}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; induction case:  s5 --> s5.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s5-s5 \\ \index{memmove-s5-s5}
\=\+{\bf let }\=\+{\it{s5\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s5p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{memmove-s5p}}\,(\=\+{\it{s5\/}}, \\ 
{\rm{sub}}\,({\tt{32}}, {\tt{1}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}} $-\;1$, {\it{lst2\/}})\index{get-nth}, {\it{i\/}} $-\;1$, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$, \\ 
{\it{n\_\/}})\-\index{memmove-s5p} \\ 
$\wedge$$\;\;\;\;$({\rm{linked-rts-addr}}\,({\it{s5\/}})\index{linked-rts-addr} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{linked-a6}}\,({\it{s5\/}})\index{linked-a6} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s5\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\- \\ 
$\wedge$$\;\;\;\;$({\rm{movem-saved}}\,({\it{s5\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved} $=$ {\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved}))\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s5-s5-rfile \\ \index{memmove-s5-s5-rfile}
\=\+(\=\+{\rm{memmove-s5p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s5-s5-mem \\ \index{memmove-s5-s5-mem}
\=\+(\=\+{\rm{memmove-s5p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; put together: s5 --> sn.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-s5-sn-t} \\  
\=\+{\rm{memmove-s5-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5-sn-t} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{nt\/}} $-\;1$) $=$ {\tt{0}}$\;\;${\bf then }{\tt{7}} \\ 
{\bf else }{\rm{splus}}\,(\=\+{\tt{3}}, \\ 
{\rm{memmove-s5-sn-t}}\,(\=\+{\rm{sub}}\,({\tt{32}}, {\tt{1}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,(\=\+{\rm{get-nth}}\,({\it{i\/}} $-\;1$, {\it{lst2\/}})\index{get-nth}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{lst1\/}})\-\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$, \\ 
{\it{n\_\/}})\-\index{memmove-s5-sn-t})\-\index{splus}$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{memmove-s5-sn-induct} \\  
\=\+{\rm{memmove-s5-sn-induct}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{nt\/}})\index{memmove-s5-sn-induct} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{nt\/}} $-\;1$) $=$ {\tt{0}}$\;\;${\bf then }{\bf{t}} \\ 
{\bf else }{\rm{memmove-s5-sn-induct}}\,(\=\+{\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn}, \\ 
{\rm{sub}}\,({\tt{32}}, {\tt{1}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\rm{put-nth}}\,(\=\+{\rm{get-nth}}\,({\it{i\/}} $-\;1$, {\it{lst2\/}})\index{get-nth}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{lst1\/}})\-\index{put-nth}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$)\-\index{memmove-s5-sn-induct}$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s5p-info \\ \index{memmove-s5p-info}
\=\+{\rm{memmove-s5p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5p} \\ 
$\rightarrow$$\;\;\;\;$(({\it{nt\/}} $\in\;${\bf{N}}${}$) $\wedge$ ({\it{nt\/}} $\not=$ {\tt{0}}))\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s5-sn \\ \index{memmove-s5-sn}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s5-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+{\rm{memmove-s5p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5p} \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{mmov1-lst1}}\,({\it{i\/}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{nt\/}})\index{mmov1-lst1})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s5-sn-rfile \\ \index{memmove-s5-sn-rfile}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s5-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s5p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5p} \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s5-sn-mem \\ \index{memmove-s5-sn-mem}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s5-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s5p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s5p} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}


\noindent{\sc Event}:   Disable memmove-s5p-info.

\addvspace{18pt}

\begin{verbatim}; from s4 to sn: s4 --> sn.
; base case 1: s4 --> sn.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s4-sn-base-1 \\ \index{memmove-s4-sn-base-1}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{10}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}} $-$ {\tt{4}})\index{movn-lst})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4-sn-rfile-base-1 \\ \index{memmove-s4-sn-rfile-base-1}
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{10}})\index{stepn})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4-sn-mem-base-1 \\ \index{memmove-s4-sn-mem-base-1}
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\rm{stepn}}\,({\it{s\/}}, {\tt{10}})\index{stepn})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-
\end{tabbing}

\begin{verbatim}; base case 2: s4 --> s5 --> sn.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-s4-sn-t0} \\  
\=\+{\rm{memmove-s4-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4-sn-t0} \\ 
$=$$\;\;\;\;${\rm{splus}}\,(\=\+{\tt{6}}, \\ 
{\rm{memmove-s5-sn-t}}\,(\=\+{\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-$ {\tt{4}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}} $-$ {\tt{4}})\index{movn-lst}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}, \\ 
{\it{n\_\/}})\-\index{memmove-s5-sn-t})\-\index{splus}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4-sn-base-2 \\ \index{memmove-s4-sn-base-2}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s4-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4-sn-t0})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{mmov1-lst1}}\,(\=\+{\it{i\/}} $-$ {\tt{4}}, \\ 
{\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}} $-$ {\tt{4}})\index{movn-lst}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}})\-\index{mmov1-lst1})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4-sn-rfile-base-2 \\ \index{memmove-s4-sn-rfile-base-2}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s4-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4-sn-t0})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4-sn-mem-base-2 \\ \index{memmove-s4-sn-mem-base-2}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s4-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4-sn-t0})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $\not=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}     

\begin{verbatim}; put together:  s4 --> sn.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-s4-sn-t} \\  
\=\+{\rm{memmove-s4-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4-sn-t} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{nt\/}} $-\;1$) $=$ {\tt{0}} \\ 
{\bf then }\=\+{\bf if }({\it{n\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}$\;\;${\bf then }{\tt{10}} \\ 
{\bf else }{\rm{memmove-s4-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4-sn-t0}$\;${\bf  endif}\- \\ 
{\bf else }{\rm{splus}}\,(\=\+{\tt{3}}, \\ 
{\rm{memmove-s4-sn-t}}\,(\=\+{\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-$ {\tt{4}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}} $-$ {\tt{4}})\index{movn-lst}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$, \\ 
{\it{n\_\/}})\-\index{memmove-s4-sn-t})\-\index{splus}$\;${\bf  endif}\-\-
\end{tabbing}
	   
\begin{tabbing}{\sc Definition}:\index{memmove-s4-sn-induct} \\  
\=\+{\rm{memmove-s4-sn-induct}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{nt\/}})\index{memmove-s4-sn-induct} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{nt\/}} $-\;1$) $=$ {\tt{0}}$\;\;${\bf then }{\bf{t}} \\ 
{\bf else }{\rm{memmove-s4-sn-induct}}\,(\=\+{\rm{stepn}}\,({\it{s\/}}, {\tt{3}})\index{stepn}, \\ 
{\rm{sub}}\,({\tt{32}}, {\tt{4}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-$ {\tt{4}}, \\ 
{\rm{movn-lst}}\,({\tt{4}}, {\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}} $-$ {\tt{4}})\index{movn-lst}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$)\-\index{memmove-s4-sn-induct}$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4p-info \\ \index{memmove-s4p-info}
\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\rightarrow$$\;\;\;\;$(({\it{nt\/}} $\in\;${\bf{N}}${}$) $\wedge$ ({\it{nt\/}} $\not=$ {\tt{0}}))\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4-sn \\ \index{memmove-s4-sn}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s4-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{memmove-4}}\,({\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}}, {\it{nt\/}}, {\it{n\/}})\index{memmove-4})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4-sn-rfile \\ \index{memmove-s4-sn-rfile}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s4-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s4-sn-mem \\ \index{memmove-s4-sn-mem}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s4-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s4p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s4p} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}


\noindent{\sc Event}:   Disable memmove-s4p-info.

\addvspace{18pt}

\begin{verbatim}; from s3 to sn: s3 --> sn.
; base case 1: s3 --> sn.
\end{verbatim}\begin{tabbing}{\sc Theorem}:  memmove-s3-sn-base-1 \\ \index{memmove-s3-sn-base-1}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{13}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\simeq {\tt{0}}$))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}} $-\;1$, {\it{lst2\/}})\index{get-nth}, {\it{i\/}} $-\;1$, {\it{lst1\/}})\index{put-nth})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-sn-rfile-base-1 \\ \index{memmove-s3-sn-rfile-base-1}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{13}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-sn-mem-base-1 \\ \index{memmove-s3-sn-mem-base-1}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\tt{13}})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}		

\begin{verbatim}; base case 2: s3 --> s4 --> sn.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-s3-sn-t0} \\  
\=\+{\rm{memmove-s3-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3-sn-t0} \\ 
$=$$\;\;\;\;${\rm{splus}}\,(\=\+{\tt{6}}, \\ 
{\rm{memmove-s4-sn-t}}\,(\=\+{\rm{sub}}\,({\tt{32}}, {\tt{1}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}} $-\;1$, {\it{lst2\/}})\index{get-nth}, {\it{i\/}} $-\;1$, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}} $\div$ {\tt{4}}, \\ 
{\it{n\_\/}})\-\index{memmove-s4-sn-t})\-\index{splus}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-sn-base-2 \\ \index{memmove-s3-sn-base-2}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s3-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3-sn-t0})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{memmove-4}}\,(\=\+{\rm{put-nth}}\,(\=\+{\rm{get-nth}}\,({\it{i\/}} $-\;1$, {\it{lst2\/}})\index{get-nth}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{lst1\/}})\-\index{put-nth}, \\ 
{\it{lst2\/}}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{n\/}} $\div$ {\tt{4}}, \\ 
{\it{n\/}})\-\index{memmove-4})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-sn-rfile-base-2 \\ \index{memmove-s3-sn-rfile-base-2}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s3-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3-sn-t0})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}     

\begin{tabbing}{\sc Theorem}:  memmove-s3-sn-mem-base-2 \\ \index{memmove-s3-sn-mem-base-2}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s3-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3-sn-t0})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{verbatim}; base case 3: s3 --> s5 --> sn.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-s3-sn-t1} \\  
\=\+{\rm{memmove-s3-sn-t1}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3-sn-t1} \\ 
$=$$\;\;\;\;${\rm{splus}}\,(\=\+{\tt{9}}, \\ 
{\rm{memmove-s5-sn-t}}\,(\=\+{\rm{sub}}\,({\tt{32}}, {\tt{1}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,({\rm{get-nth}}\,({\it{i\/}} $-\;1$, {\it{lst2\/}})\index{get-nth}, {\it{i\/}} $-\;1$, {\it{lst1\/}})\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}}, \\ 
{\it{n\_\/}})\-\index{memmove-s5-sn-t})\-\index{splus}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-sn-base-3 \\ \index{memmove-s3-sn-base-3}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s3-sn-t1}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3-sn-t1})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{mmov1-lst1}}\,(\=\+{\it{i\/}} $-\;1$, \\ 
{\rm{put-nth}}\,(\=\+{\rm{get-nth}}\,({\it{i\/}} $-\;1$, {\it{lst2\/}})\index{get-nth}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{lst1\/}})\-\index{put-nth}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}})\-\index{mmov1-lst1})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-sn-rfile-base-3 \\ \index{memmove-s3-sn-rfile-base-3}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s3-sn-t1}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3-sn-t1})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-sn-mem-base-3 \\ \index{memmove-s3-sn-mem-base-3}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s3-sn-t1}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3-sn-t1})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;$(({\it{nt\/}} $-\;1$) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ {\tt{4}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\not\simeq {\tt{0}}$) \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}     

\begin{verbatim}; put together: s3 --> sn.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-s3-sn-t} \\  
\=\+{\rm{memmove-s3-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3-sn-t} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{nt\/}} $-\;1$) $=$ {\tt{0}} \\ 
{\bf then }\=\+{\bf if }{\it{n\/}} $<$ {\tt{4}} \\ 
{\bf then }\=\+{\bf if }{\it{n\/}} $\simeq {\tt{0}}$$\;\;${\bf then }{\tt{13}} \\ 
{\bf else }{\rm{memmove-s3-sn-t1}}\,(\=\+{\it{i*\/}}, \\ 
{\it{i\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}}, \\ 
{\it{n\_\/}})\-\index{memmove-s3-sn-t1}$\;${\bf  endif}\- \\ 
{\bf else }{\rm{memmove-s3-sn-t0}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3-sn-t0}$\;${\bf  endif}\- \\ 
{\bf else }{\rm{splus}}\,(\=\+{\tt{3}}, \\ 
{\rm{memmove-s3-sn-t}}\,(\=\+{\rm{sub}}\,({\tt{32}}, {\tt{1}}, {\it{i*\/}})\index{sub}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\rm{put-nth}}\,(\=\+{\rm{get-nth}}\,({\it{i\/}} $-\;1$, {\it{lst2\/}})\index{get-nth}, \\ 
{\it{i\/}} $-\;1$, \\ 
{\it{lst1\/}})\-\index{put-nth}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{nt\/}} $-\;1$, \\ 
{\it{n\_\/}})\-\index{memmove-s3-sn-t})\-\index{splus}$\;${\bf  endif}\-\-
\end{tabbing}
	   
\begin{tabbing}{\sc Theorem}:  memmove-s3p-info \\ \index{memmove-s3p-info}
\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\rightarrow$$\;\;\;\;$(({\it{nt\/}} $\in\;${\bf{N}}${}$) $\wedge$ ({\it{nt\/}} $\not=$ {\tt{0}}))\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-sn \\ \index{memmove-s3-sn}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s3-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{linked-rts-addr}}\,({\it{s\/}})\index{linked-rts-addr}) \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\_\/}}, \\ 
{\rm{memmove-3}}\,({\it{lst1\/}}, {\it{lst2\/}}, {\it{i\/}}, {\it{nt\/}}, {\it{n\/}})\index{memmove-3})\-\index{mem-lst} \\ 
$\wedge$$\;\;\;\;$({\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} $=$ {\rm{linked-a6}}\,({\it{s\/}})\index{linked-a6}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an}, {\tt{8}})\index{add})\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-sn-rfile \\ \index{memmove-s3-sn-rfile}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s3-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;${\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} \\ 
$\wedge$$\;\;\;\;$({\it{oplen\/}} $\leq$ {\tt{32}}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\rm{d5-7a2-5p}}\,({\it{rn\/}})\index{d5-7a2-5p}$\;\;${\bf then }{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn} \\ 
{\bf else }{\rm{get-vlst}}\,(\=\+{\it{oplen\/}}, \\ 
{\tt{0}}, \\ 
{\it{rn\/}}, \\ 
{\tt{'}}{\tt{(}}{\tt{2}}{\tt{ }}{\tt{3}}{\tt{ }}{\tt{4}}{\tt{)}}, \\ 
{\rm{movem-saved}}\,({\it{s\/}}, {\tt{4}}, {\tt{12}}, {\tt{3}})\index{movem-saved})\-\index{get-vlst}$\;${\bf  endif}\-)\-\-$\;${\bf  endlet}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-s3-sn-mem \\ \index{memmove-s3-sn-mem}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-s3-sn-t}}\,({\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3-sn-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+(\=\+{\rm{memmove-s3p}}\,({\it{s\/}}, {\it{i*\/}}, {\it{i\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}}, {\it{nt\/}}, {\it{n\_\/}})\index{memmove-s3p} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{12}}, {\rm{read-an}}\,({\tt{32}}, {\tt{6}}, {\it{s\/}})\index{read-an})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\_\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$({\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} $=$ {\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-$\;${\bf  endlet}\-
\end{tabbing}


\noindent{\sc Event}:   Disable memmove-s3p-info.

\addvspace{18pt}

\begin{verbatim}; the correctness of memmove.
\end{verbatim}\begin{tabbing}{\sc Definition}:\index{memmove-t} \\  
\=\+{\rm{memmove-t}}\,({\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-t} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{n\/}} $\simeq {\tt{0}}$$\;\;${\bf then }{\tt{11}} \\ 
{\bf else }\=\+{\bf let }\=\+{\it{x1\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str1\/}})\index{nat-to-uint}, \\ 
{\it{x2\/}}{\bf $\;$ be$\;\;$}{\rm{nat-to-uint}}\,({\it{str2\/}})\index{nat-to-uint}\- \\ 
{\bf in} \\ 
\=\+{\bf if }{\it{x1\/}} $=$ {\it{x2\/}}$\;\;${\bf then }{\tt{13}} \\ 
{\bf elseif }{\it{x1\/}} $<$ {\it{x2\/}} \\ 
{\bf then }\=\+{\bf if }\=\+(({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}})\- \\ 
{\bf then }\=\+{\bf if }{\it{n\/}} $<$ {\tt{4}} \\ 
{\bf then }{\rm{splus}}\,(\=\+{\tt{22}}, \\ 
{\rm{memmove-s2-sn-t}}\,(\=\+{\tt{0}}, \\ 
{\tt{0}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}}, \\ 
{\it{n\/}})\-\index{memmove-s2-sn-t})\-\index{splus} \\ 
{\bf else }{\rm{splus}}\,(\=\+{\tt{19}}, \\ 
{\rm{memmove-s1-sn-t}}\,(\=\+{\tt{0}}, \\ 
{\tt{0}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}} $\div$ {\tt{4}}, \\ 
{\it{n\/}})\-\index{memmove-s1-sn-t})\-\index{splus}$\;${\bf  endif}\- \\ 
{\bf elseif }({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ ({\it{x2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) \\ 
{\bf then }\=\+{\bf if }{\tt{3}} $<$ {\it{n\/}} \\ 
{\bf then }{\rm{splus}}\,(\=\+{\tt{29}}, \\ 
{\rm{memmove-s0-sn-t}}\,(\=\+{\tt{0}}, \\ 
{\tt{0}}, \\ 
{\it{str1\/}}, \\ 
\=\+({\it{n\/}} $+$ ({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}})) \\ 
$-$$\;\;\;\;${\tt{4}}\-, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\tt{4}} $-$ ({\it{x1\/}} ${}${\bf{mod}}${}$ {\tt{4}}), \\ 
{\it{n\/}})\-\index{memmove-s0-sn-t})\-\index{splus} \\ 
{\bf else }{\rm{splus}}\,(\=\+{\tt{27}}, \\ 
{\rm{memmove-s0-sn-t}}\,(\=\+{\tt{0}}, \\ 
{\tt{0}}, \\ 
{\it{str1\/}}, \\ 
{\tt{0}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}}, \\ 
{\it{n\/}})\-\index{memmove-s0-sn-t})\-\index{splus}$\;${\bf  endif}\- \\ 
{\bf else }{\rm{splus}}\,(\=\+{\tt{24}}, \\ 
{\rm{memmove-s0-sn-t}}\,(\=\+{\tt{0}}, \\ 
{\tt{0}}, \\ 
{\it{str1\/}}, \\ 
{\tt{0}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}}, \\ 
{\it{n\/}})\-\index{memmove-s0-sn-t})\-\index{splus}$\;${\bf  endif}\- \\ 
{\bf else }\=\+{\bf let }\=\+{\it{y1\/}}{\bf $\;$ be$\;\;$}{\it{n\/}} $+$ {\it{x1\/}}, \\ 
{\it{y2\/}}{\bf $\;$ be$\;\;$}{\it{n\/}} $+$ {\it{x2\/}}\- \\ 
{\bf in} \\ 
\=\+{\bf if }\=\+(({\it{y1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}}) \\ 
$\wedge$$\;\;\;\;$(({\it{y2\/}} ${}${\bf{mod}}${}$ {\tt{4}}) $=$ {\tt{0}})\- \\ 
{\bf then }\=\+{\bf if }{\it{n\/}} $<$ {\tt{4}} \\ 
{\bf then }{\rm{splus}}\,(\=\+{\tt{24}}, \\ 
{\rm{memmove-s5-sn-t}}\,(\=\+{\rm{uint-to-nat}}\,({\it{n\/}})\index{uint-to-nat}, \\ 
{\it{n\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}}, \\ 
{\it{n\/}})\-\index{memmove-s5-sn-t})\-\index{splus} \\ 
{\bf else }{\rm{splus}}\,(\=\+{\tt{21}}, \\ 
{\rm{memmove-s4-sn-t}}\,(\=\+{\rm{uint-to-nat}}\,({\it{n\/}})\index{uint-to-nat}, \\ 
{\it{n\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}} $\div$ {\tt{4}}, \\ 
{\it{n\/}})\-\index{memmove-s4-sn-t})\-\index{splus}$\;${\bf  endif}\- \\ 
{\bf elseif }\=\+({\it{y1\/}} ${}${\bf{mod}}${}$ {\tt{4}}) \\ 
$=$$\;\;\;\;$({\it{y2\/}} ${}${\bf{mod}}${}$ {\tt{4}})\- \\ 
{\bf then }\=\+{\bf if }{\tt{4}} $<$ {\it{n\/}} \\ 
{\bf then }{\rm{splus}}\,(\=\+{\tt{29}}, \\ 
{\rm{memmove-s3-sn-t}}\,(\=\+{\rm{uint-to-nat}}\,({\it{n\/}})\index{uint-to-nat}, \\ 
{\it{n\/}}, \\ 
{\it{str1\/}}, \\ 
{\it{n\/}} $-$ ({\it{y1\/}} ${}${\bf{mod}}${}$ {\tt{4}}), \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{y1\/}} ${}${\bf{mod}}${}$ {\tt{4}}, \\ 
{\it{n\/}})\-\index{memmove-s3-sn-t})\-\index{splus} \\ 
{\bf else }{\rm{splus}}\,(\=\+{\tt{29}}, \\ 
{\rm{memmove-s3-sn-t}}\,(\=\+{\rm{uint-to-nat}}\,({\it{n\/}})\index{uint-to-nat}, \\ 
{\it{n\/}}, \\ 
{\it{str1\/}}, \\ 
{\tt{0}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}}, \\ 
{\it{n\/}})\-\index{memmove-s3-sn-t})\-\index{splus}$\;${\bf  endif}\- \\ 
{\bf else }{\rm{splus}}\,(\=\+{\tt{26}}, \\ 
{\rm{memmove-s3-sn-t}}\,(\=\+{\rm{uint-to-nat}}\,({\it{n\/}})\index{uint-to-nat}, \\ 
{\it{n\/}}, \\ 
{\it{str1\/}}, \\ 
{\tt{0}}, \\ 
{\it{lst1\/}}, \\ 
{\it{str2\/}}, \\ 
{\it{lst2\/}}, \\ 
{\it{n\/}}, \\ 
{\it{n\/}})\-\index{memmove-s3-sn-t})\-\index{splus}$\;${\bf  endif}\-$\;${\bf  endlet}\-$\;${\bf  endif}\-$\;${\bf  endlet}\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  memmove-correctness \\ \index{memmove-correctness}
\=\+{\bf let }\=\+{\it{sn\/}}{\bf $\;$ be$\;\;$}{\rm{stepn}}\,({\it{s\/}}, {\rm{memmove-t}}\,({\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-t})\index{stepn}\- \\ 
{\bf in} \\ 
\=\+{\rm{memmove-statep}}\,({\it{s\/}}, {\it{str1\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{str2\/}}, {\it{lst2\/}})\index{memmove-statep} \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\rm{mc-status}}\,({\it{sn\/}})\index{mc-status} $=$ {\tt{'}}{\tt{running}}) \\ 
$\wedge$$\;\;\;\;$({\rm{mc-pc}}\,({\it{sn\/}})\index{mc-pc} $=$ {\rm{rts-addr}}\,({\it{s\/}})\index{rts-addr}) \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\tt{32}}, {\tt{14}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\tt{32}}, {\tt{15}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{add}}\,({\tt{32}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp}, {\tt{4}})\index{add})\- \\ 
$\wedge$$\;\;\;\;$(\=\+({\rm{d2-7a2-5p}}\,({\it{rn\/}})\index{d2-7a2-5p} $\wedge$ ({\it{oplen\/}} $\leq$ {\tt{32}})) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{sn\/}})\index{mc-rfile})\index{read-rn} \\ 
$=$$\;\;\;\;${\rm{read-rn}}\,({\it{oplen\/}}, {\it{rn\/}}, {\rm{mc-rfile}}\,({\it{s\/}})\index{mc-rfile})\index{read-rn})\-)\- \\ 
$\wedge$$\;\;\;\;$(\=\+(\=\+{\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\rm{sub}}\,({\tt{32}}, {\tt{16}}, {\rm{read-sp}}\,({\it{s\/}})\index{read-sp})\index{sub}, {\tt{32}})\index{disjoint} \\ 
$\wedge$$\;\;\;\;${\rm{disjoint}}\,({\it{x\/}}, {\it{k\/}}, {\it{str1\/}}, {\it{n\/}})\index{disjoint})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem} \\ 
$=$$\;\;\;\;${\rm{read-mem}}\,({\it{x\/}}, {\rm{mc-mem}}\,({\it{s\/}})\index{mc-mem}, {\it{k\/}})\index{read-mem})\-)\- \\ 
$\wedge$$\;\;\;\;$({\rm{read-dn}}\,({\tt{32}}, {\tt{0}}, {\it{sn\/}})\index{read-dn} $=$ {\it{str1\/}}) \\ 
$\wedge$$\;\;\;\;${\rm{mem-lst}}\,(\=\+{\tt{1}}, \\ 
{\it{str1\/}}, \\ 
{\rm{mc-mem}}\,({\it{sn\/}})\index{mc-mem}, \\ 
{\it{n\/}}, \\ 
{\rm{memmove}}\,({\it{str1\/}}, {\it{str2\/}}, {\it{n\/}}, {\it{lst1\/}}, {\it{lst2\/}})\index{memmove})\-\index{mem-lst})\-\-$\;${\bf  endlet}\-
\end{tabbing}


\noindent{\sc Event}:   Disable memmove-t.

\addvspace{18pt}

\begin{verbatim}; some properties of memmove.
; see file cstring.events.

\end{verbatim}
\noindent{\sc Event}:   Make the library {\tt{"memmove"}} and compile it.

\addvspace{18pt}

%\end{list}
\printindex
\end{document}
