\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[]


\noindent{\sc Event}:   Start with the library {\tt{"c4"}}.

\addvspace{18pt}

\begin{verbatim};;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                                                    ;;
;;                     %Mapping Call Parameters                       ;;
;;                                                                    ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{mg-to-p-local-values} \\  
\=\+{\rm{mg-to-p-local-values}}\,({\it{locals\/}})\index{mg-to-p-local-values} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{locals\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf elseif }{\rm{simple-mg-type-refp}}\,({\rm{cadr}}\,({\rm{car}}\,({\it{locals\/}})))\index{simple-mg-type-refp} \\ 
{\bf then }{\rm{cons}}\,(\=\+{\rm{mg-to-p-simple-literal}}\,({\rm{caddr}}\,({\rm{car}}\,({\it{locals\/}})))\index{mg-to-p-simple-literal}, \\ 
{\rm{mg-to-p-local-values}}\,({\rm{cdr}}\,({\it{locals\/}}))\index{mg-to-p-local-values})\- \\ 
{\bf else }{\rm{append}}\,(\=\+{\rm{mg-to-p-simple-literal-list}}\,({\rm{caddr}}\,({\rm{car}}\,({\it{locals\/}})))\index{mg-to-p-simple-literal-list}, \\ 
{\rm{mg-to-p-local-values}}\,({\rm{cdr}}\,({\it{locals\/}}))\index{mg-to-p-local-values})\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  mg-to-p-local-values-plistp \\ \index{mg-to-p-local-values-plistp}
{\rm{plistp}}\,({\rm{mg-to-p-local-values}}\,({\it{lst\/}})\index{mg-to-p-local-values})\index{plistp}
\end{tabbing}

\begin{verbatim};; Given a list of formals with the call site actuals, this gives the list for the new stack
;; frame.  Each of the actuals is guaranteed to be an identifier and each of these is in 
;; the previous frame with the address of the value in my-stack.  Thus, I need only copy
;; these addresses into the current frame.

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{map-call-formals} \\  
\=\+{\rm{map-call-formals}}\,({\it{formals\/}}, {\it{actuals\/}}, {\it{bindings\/}})\index{map-call-formals} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{formals\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf else }{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\rm{car}}\,({\rm{car}}\,({\it{formals\/}})), \\ 
{\rm{cdr}}\,({\rm{assoc}}\,({\rm{car}}\,({\it{actuals\/}}), {\it{bindings\/}})))\-, \\ 
{\rm{map-call-formals}}\,({\rm{cdr}}\,({\it{formals\/}}), {\rm{cdr}}\,({\it{actuals\/}}), {\it{bindings\/}})\index{map-call-formals})\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  length-map-call-formals \\ \index{length-map-call-formals}
{\rm{length}}\,({\rm{map-call-formals}}\,({\it{formals\/}}, {\it{actuals\/}}, {\it{bindings\/}})\index{map-call-formals})\index{length} $=$ {\rm{length}}\,({\it{formals\/}})\index{length}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  map-call-formals-plistp \\ \index{map-call-formals-plistp}
{\rm{plistp}}\,({\rm{map-call-formals}}\,({\it{x\/}}, {\it{y\/}}, {\it{z\/}})\index{map-call-formals})\index{plistp}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  listcars-map-call-formals \\ \index{listcars-map-call-formals}
{\rm{listcars}}\,({\rm{map-call-formals}}\,({\it{formals\/}}, {\it{actuals\/}}, {\it{bindings\/}})\index{map-call-formals})\index{listcars} $=$ {\rm{listcars}}\,({\it{formals\/}})\index{listcars}
\end{tabbing}

\begin{verbatim};; Each of the local values is placed onto the temp-stk, then the indexes into
;; the stack are placed there as well.  The distance of the value from the index
;; depends on the size of the elements between. 

;; The initial value of n is (length temp-stk)

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{map-call-locals} \\  
\=\+{\rm{map-call-locals}}\,({\it{locals\/}}, {\it{n\/}})\index{map-call-locals} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{locals\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf elseif }{\rm{simple-mg-type-refp}}\,({\rm{cadr}}\,({\rm{car}}\,({\it{locals\/}})))\index{simple-mg-type-refp} \\ 
{\bf then }{\rm{cons}}\,(\=\+{\rm{cons}}\,({\rm{car}}\,({\rm{car}}\,({\it{locals\/}})), {\rm{tag}}\,({\tt{'}}{\tt{nat}}, {\it{n\/}})\index{tag}), \\ 
{\rm{map-call-locals}}\,({\rm{cdr}}\,({\it{locals\/}}), $1\;+$ {\it{n\/}})\index{map-call-locals})\- \\ 
{\bf else }{\rm{cons}}\,(\=\+{\rm{cons}}\,({\rm{car}}\,({\rm{car}}\,({\it{locals\/}})), {\rm{tag}}\,({\tt{'}}{\tt{nat}}, {\it{n\/}})\index{tag}), \\ 
{\rm{map-call-locals}}\,(\=\+{\rm{cdr}}\,({\it{locals\/}}), \\ 
\=\+{\rm{array-length}}\,({\rm{cadr}}\,({\rm{car}}\,({\it{locals\/}})))\index{array-length} \\ 
$+$$\;\;\;\;${\it{n\/}}\-)\-\index{map-call-locals})\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  length-map-call-locals \\ \index{length-map-call-locals}
{\rm{length}}\,({\rm{map-call-locals}}\,({\it{locals\/}}, {\it{n\/}})\index{map-call-locals})\index{length} $=$ {\rm{length}}\,({\it{locals\/}})\index{length}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  map-call-locals-plistp \\ \index{map-call-locals-plistp}
{\rm{plistp}}\,({\rm{map-call-locals}}\,({\it{locals\/}}, {\it{n\/}})\index{map-call-locals})\index{plistp}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  map-call-locals-preserves-listcars \\ \index{map-call-locals-preserves-listc!ars}
{\rm{listcars}}\,({\rm{map-call-locals}}\,({\it{locals\/}}, {\it{m\/}})\index{map-call-locals})\index{listcars} $=$ {\rm{listcars}}\,({\it{locals\/}})\index{listcars}
\end{tabbing}

\begin{verbatim};; The topmost frame on the ctrl-stk at the beginning of the body of the proc-call 
;; contains the p-formals which represent both the formals and locals of the mg
;; subroutine.  The formals have the values of the actuals in the previous frame
;; and these are guaranteed to be addresses into the temp-stk.  The locals have been
;; placed on the temp-stk as well and the address computed for this frame are those
;; locations.  Thus, upon entry the following invariant is established: every local
;; (in the frame) contains an index into the temp-stk which contains the corresponding
;; value.  

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{make-frame-alist} \\  
\=\+{\rm{make-frame-alist}}\,({\it{def\/}}, {\it{stmt\/}}, {\it{ctrl-stk\/}}, {\it{temp-stk\/}})\index{make-frame-alist} \\ 
$=$$\;\;\;\;${\rm{append}}\,(\=\+{\rm{map-call-locals}}\,({\rm{def-locals}}\,({\it{def\/}})\index{def-locals}, {\rm{length}}\,({\it{temp-stk\/}})\index{length})\index{map-call-locals}, \\ 
{\rm{map-call-formals}}\,(\=\+{\rm{def-formals}}\,({\it{def\/}})\index{def-formals}, \\ 
{\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}, \\ 
{\rm{bindings}}\,({\rm{top}}\,({\it{ctrl-stk\/}})\index{top})\index{bindings})\-\index{map-call-formals})\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-actuals-to-p-actuals} \\  
\=\+{\rm{mg-actuals-to-p-actuals}}\,({\it{mg-actuals\/}}, {\it{bindings\/}})\index{mg-actuals-to-p-actuals} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{mg-actuals\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf else }{\rm{cons}}\,(\=\+{\rm{cdr}}\,({\rm{assoc}}\,({\rm{car}}\,({\it{mg-actuals\/}}), {\it{bindings\/}})), \\ 
{\rm{mg-actuals-to-p-actuals}}\,({\rm{cdr}}\,({\it{mg-actuals\/}}), {\it{bindings\/}})\index{mg-actuals-to-p-actuals})\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  length-mg-actuals-to-p-actuals \\ \index{length-mg-actuals-to-p-actuals}
{\rm{length}}\,({\rm{mg-actuals-to-p-actuals}}\,({\it{mg-actuals\/}}, {\it{bindings\/}})\index{mg-actuals-to-p-actuals})\index{length} $=$ {\rm{length}}\,({\it{mg-actuals\/}})\index{length}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  mg-actuals-to-p-actuals-plistp \\ \index{mg-actuals-to-p-actuals-plistp}
{\rm{plistp}}\,({\rm{mg-actuals-to-p-actuals}}\,({\it{actuals\/}}, {\it{bindings\/}})\index{mg-actuals-to-p-actuals})\index{plistp}
\end{tabbing}

\begin{verbatim};; %mapping call parameters
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                                                           ;;
;;                            THE TRANSLATOR                                 ;;
;;                                                                           ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

\end{verbatim}
\noindent{\sc Event}:   Add the shell {\it{make-cinfo\/}}\index{make-cinfo}, with recognizer function symbol {\it{cinfop\/}} and 3 accessors: {\it{code\/}}, with type restriction (none-of) and default value zero; {\it{label-alist\/}}, with type restriction (none-of) and default value zero; {\it{label-cnt\/}}, with type restriction (one-of numberp) and default value zero.

\addvspace{18pt}

\begin{tabbing}{\sc Definition}:\index{nullify} \\  
{\rm{nullify}}\,({\it{cinfo\/}})\index{nullify} $=$ {\rm{make-cinfo}}\,({\bf{nil}}, {\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\index{make-cinfo}
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{add-code} \\  
\=\+{\rm{add-code}}\,({\it{cinfo\/}}, {\it{code\/}})\index{add-code} \\ 
$=$$\;\;\;\;${\rm{make-cinfo}}\,(\=\+{\rm{append}}\,({\rm{code}}\,({\it{cinfo\/}})\index{code}, {\it{code\/}}), \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-cinfo}\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{discard-label} \\  
\=\+{\rm{discard-label}}\,({\it{cinfo\/}})\index{discard-label} \\ 
$=$$\;\;\;\;${\rm{make-cinfo}}\,({\rm{code}}\,({\it{cinfo\/}})\index{code}, {\rm{cdr}}\,({\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}), {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\index{make-cinfo}\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{set-label-alist} \\  
\=\+{\rm{set-label-alist}}\,({\it{cinfo\/}}, {\it{new-label-alist\/}})\index{set-label-alist} \\ 
$=$$\;\;\;\;${\rm{make-cinfo}}\,({\rm{code}}\,({\it{cinfo\/}})\index{code}, {\it{new-label-alist\/}}, {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\index{make-cinfo}\-
\end{tabbing}

\begin{verbatim};; Notice that I could simply use the VALUE function directly.

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{fetch-label} \\  
{\rm{fetch-label}}\,({\it{condition\/}}, {\it{label-alist\/}})\index{fetch-label} $=$ {\rm{cdr}}\,({\rm{assoc}}\,({\it{condition\/}}, {\it{label-alist\/}}))
\end{tabbing}

\begin{verbatim};; If this definition stays unchanged, I can eliminate it entirely in favor of the 
;; simpler hyp on code.

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{ok-cinfop}$\;\;$
{\rm{ok-cinfop}}\,({\it{cinfo\/}})\index{ok-cinfop} $=$ {\rm{plistp}}\,({\rm{code}}\,({\it{cinfo\/}})\index{code})\index{plistp}
\end{tabbing}

\begin{verbatim};; Given a list (x1 ... xn) and a label l, this generated the list
;; ((x1 . l) (x2 . l) ... (xn . l)).  Notice that this allows that use
;; of the VALUE function for accessing the label.

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{make-label-alist} \\  
\=\+{\rm{make-label-alist}}\,({\it{name-list\/}}, {\it{label\/}})\index{make-label-alist} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{name-list\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf else }{\rm{cons}}\,(\=\+{\rm{cons}}\,({\rm{car}}\,({\it{name-list\/}}), {\it{label\/}}), \\ 
{\rm{make-label-alist}}\,({\rm{cdr}}\,({\it{name-list\/}}), {\it{label\/}})\index{make-label-alist})\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{push-local-array-values-code} \\  
\=\+{\rm{push-local-array-values-code}}\,({\it{array-value\/}})\index{push-local-array-values-code} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{array-value\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf else }{\rm{cons}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-constant}}, \\ 
{\rm{mg-to-p-simple-literal}}\,({\rm{car}}\,({\it{array-value\/}}))\index{mg-to-p-simple-literal})\-, \\ 
{\rm{push-local-array-values-code}}\,({\rm{cdr}}\,({\it{array-value\/}}))\index{push-local-array-values-code})\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  length-push-local-array-values-code \\ \index{length-push-local-array-values-!code}
{\rm{length}}\,({\rm{push-local-array-values-code}}\,({\it{array-value\/}})\index{push-local-array-values-code})\index{length} $=$ {\rm{length}}\,({\it{array-value\/}})\index{length}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  length-push-local-array-values-code2 \\ \index{length-push-local-array-values-!code2}
\=\+({\rm{ok-mg-local-data-decl}}\,({\it{local\/}})\index{ok-mg-local-data-decl} $\wedge$ ($\neg$ {\rm{simple-mg-type-refp}}\,({\rm{cadr}}\,({\it{local\/}}))\index{simple-mg-type-refp})) \\ 
$\rightarrow$$\;\;\;\;$({\rm{array-length}}\,({\rm{cadr}}\,({\it{local\/}}))\index{array-length} $=$ {\rm{length}}\,({\rm{caddr}}\,({\it{local\/}}))\index{length})\-
\end{tabbing}


\noindent{\sc Event}:   Disable length-push-local-array-values-code2.

\addvspace{18pt}

\begin{tabbing}{\sc Definition}:\index{push-locals-values-code} \\  
\=\+{\rm{push-locals-values-code}}\,({\it{locals\/}})\index{push-locals-values-code} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{locals\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf elseif }{\rm{simple-mg-type-refp}}\,({\rm{cadr}}\,({\rm{car}}\,({\it{locals\/}})))\index{simple-mg-type-refp} \\ 
{\bf then }{\rm{cons}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-constant}}, \\ 
{\rm{mg-to-p-simple-literal}}\,({\rm{caddr}}\,({\rm{car}}\,({\it{locals\/}})))\index{mg-to-p-simple-literal})\-, \\ 
{\rm{push-locals-values-code}}\,({\rm{cdr}}\,({\it{locals\/}}))\index{push-locals-values-code})\- \\ 
{\bf else }{\rm{append}}\,(\=\+{\rm{push-local-array-values-code}}\,({\rm{caddr}}\,({\rm{car}}\,({\it{locals\/}})))\index{push-local-array-values-code}, \\ 
{\rm{push-locals-values-code}}\,({\rm{cdr}}\,({\it{locals\/}}))\index{push-locals-values-code})\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  length-push-locals-values-code \\ \index{length-push-locals-values-code}
\=\+{\rm{ok-mg-local-data-plistp}}\,({\it{locals\/}})\index{ok-mg-local-data-plistp} \\ 
$\rightarrow$$\;\;\;\;$({\rm{length}}\,({\rm{push-locals-values-code}}\,({\it{locals\/}})\index{push-locals-values-code})\index{length} $=$ {\rm{data-length}}\,({\it{locals\/}})\index{data-length})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  length-mg-to-p-local-values \\ \index{length-mg-to-p-local-values}
\=\+{\rm{ok-mg-local-data-plistp}}\,({\it{locals\/}})\index{ok-mg-local-data-plistp} \\ 
$\rightarrow$$\;\;\;\;$({\rm{length}}\,({\rm{mg-to-p-local-values}}\,({\it{locals\/}})\index{mg-to-p-local-values})\index{length} $=$ {\rm{data-length}}\,({\it{locals\/}})\index{data-length})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  no-labels-in-push-local-array-values-code \\ \index{no-labels-in-push-local-array-v!alues-code}
{\rm{find-labelp}}\,({\it{n\/}}, {\rm{push-local-array-values-code}}\,({\it{value\/}})\index{push-local-array-values-code})\index{find-labelp} $=$ {\bf{f}}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  no-labels-in-push-locals-values-code \\ \index{no-labels-in-push-locals-values!-code}
{\rm{find-labelp}}\,({\it{n\/}}, {\rm{push-locals-values-code}}\,({\it{actuals\/}})\index{push-locals-values-code})\index{find-labelp} $=$ {\bf{f}}
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{push-locals-addresses-code} \\  
\=\+{\rm{push-locals-addresses-code}}\,({\it{locals\/}}, {\it{n\/}})\index{push-locals-addresses-code} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{locals\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf elseif }{\rm{simple-mg-type-refp}}\,({\rm{cadr}}\,({\rm{car}}\,({\it{locals\/}})))\index{simple-mg-type-refp} \\ 
{\bf then }{\rm{cons}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-temp-stk-index}}, {\it{n\/}}), \\ 
{\rm{push-locals-addresses-code}}\,({\rm{cdr}}\,({\it{locals\/}}), {\it{n\/}})\index{push-locals-addresses-code})\- \\ 
{\bf else }{\rm{cons}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-temp-stk-index}}, {\it{n\/}}), \\ 
{\rm{push-locals-addresses-code}}\,(\=\+{\rm{cdr}}\,({\it{locals\/}}), \\ 
$1\;+$ ({\it{n\/}} $-$ {\rm{array-length}}\,({\rm{cadr}}\,({\rm{car}}\,({\it{locals\/}})))\index{array-length}))\-\index{push-locals-addresses-code})\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  length-push-locals-addresses-code \\ \index{length-push-locals-addresses-co!de}
{\rm{length}}\,({\rm{push-locals-addresses-code}}\,({\it{locals\/}}, {\it{n\/}})\index{push-locals-addresses-code})\index{length} $=$ {\rm{length}}\,({\it{locals\/}})\index{length}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  no-labels-in-push-locals-addresses-code \\ \index{no-labels-in-push-locals-addres!ses-code}
{\rm{find-labelp}}\,({\it{n\/}}, {\rm{push-locals-addresses-code}}\,({\it{actuals\/}}, {\it{m\/}})\index{push-locals-addresses-code})\index{find-labelp} $=$ {\bf{f}}
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{push-actuals-code} \\  
\=\+{\rm{push-actuals-code}}\,({\it{actuals\/}})\index{push-actuals-code} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{actuals\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf else }{\rm{cons}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\it{actuals\/}})), \\ 
{\rm{push-actuals-code}}\,({\rm{cdr}}\,({\it{actuals\/}}))\index{push-actuals-code})\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  no-labels-in-push-actuals-code \\ \index{no-labels-in-push-actuals-code}
{\rm{find-labelp}}\,({\it{n\/}}, {\rm{push-actuals-code}}\,({\it{actuals\/}})\index{push-actuals-code})\index{find-labelp} $=$ {\bf{f}}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  length-push-actuals-code \\ \index{length-push-actuals-code}
{\rm{length}}\,({\rm{push-actuals-code}}\,({\it{actuals\/}})\index{push-actuals-code})\index{length} $=$ {\rm{length}}\,({\it{actuals\/}})\index{length}
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{push-parameters-code} \\  
\=\+{\rm{push-parameters-code}}\,({\it{locals\/}}, {\it{actuals\/}})\index{push-parameters-code} \\ 
$=$$\;\;\;\;${\rm{append}}\,(\=\+{\rm{push-locals-values-code}}\,({\it{locals\/}})\index{push-locals-values-code}, \\ 
{\rm{append}}\,(\=\+{\rm{push-locals-addresses-code}}\,(\=\+{\it{locals\/}}, \\ 
{\rm{data-length}}\,({\it{locals\/}})\index{data-length} $-\;1$)\-\index{push-locals-addresses-code}, \\ 
{\rm{push-actuals-code}}\,({\it{actuals\/}})\index{push-actuals-code})\-)\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  length-push-parameters-code \\ \index{length-push-parameters-code}
\=\+{\rm{ok-mg-local-data-plistp}}\,({\it{locals\/}})\index{ok-mg-local-data-plistp} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{length}}\,({\rm{push-parameters-code}}\,({\it{locals\/}}, {\it{actuals\/}})\index{push-parameters-code})\index{length} \\ 
$=$$\;\;\;\;$({\rm{data-length}}\,({\it{locals\/}})\index{data-length} $+$ {\rm{length}}\,({\it{locals\/}})\index{length} $+$ {\rm{length}}\,({\it{actuals\/}})\index{length}))\-\-
\end{tabbing}

\begin{verbatim};; COMPILING THE CONDITION MAPPING
;;
;; Generate the list '(lc lc+1 lc+2 ... lc+n-1).  These are the labels
;; necessary for the condition computation jumps.

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{cond-case-jump-label-list} \\  
\=\+{\rm{cond-case-jump-label-list}}\,({\it{lc\/}}, {\it{n\/}})\index{cond-case-jump-label-list} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{n\/}} $\simeq {\tt{0}}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf else }{\rm{cons}}\,({\it{lc\/}}, {\rm{cond-case-jump-label-list}}\,($1\;+$ {\it{lc\/}}, {\it{n\/}} $-\;1$)\index{cond-case-jump-label-list})$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  length-cond-case-jump-label-list \\ \index{length-cond-case-jump-label-list}
{\rm{length}}\,({\rm{cond-case-jump-label-list}}\,({\it{lc\/}}, {\it{n\/}})\index{cond-case-jump-label-list})\index{length} $=$ {\rm{fix}}\,({\it{n\/}})
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{index-cond-case-induction-hint} \\  
\=\+{\rm{index-cond-case-induction-hint}}\,({\it{i\/}}, {\it{j\/}}, {\it{k\/}})\index{index-cond-case-induction-hint} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{k\/}} $\simeq {\tt{0}}$$\;\;${\bf then }{\bf{t}} \\ 
{\bf else }{\rm{index-cond-case-induction-hint}}\,({\it{i\/}} $-\;1$, $1\;+$ {\it{j\/}}, {\it{k\/}} $-\;1$)\index{index-cond-case-induction-hint}$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  get-cond-case-jump-label-list \\ \index{get-cond-case-jump-label-list}
\=\+(({\it{i\/}} $<$ {\it{k\/}}) $\wedge$ ({\it{j\/}} $\in\;${\bf{N}}${}$)) \\ 
$\rightarrow$$\;\;\;\;$({\rm{get}}\,({\it{i\/}}, {\rm{cond-case-jump-label-list}}\,({\it{j\/}}, {\it{k\/}})\index{cond-case-jump-label-list})\index{get} $=$ ({\it{i\/}} $+$ {\it{j\/}}))\-
\end{tabbing}


\noindent{\sc Event}:   Disable get-cond-case-jump-label-list.

\addvspace{18pt}

\begin{tabbing}{\sc Definition}:\index{cond-conversion} \\  
\=\+{\rm{cond-conversion}}\,({\it{actual-conds\/}}, {\it{lc\/}}, {\it{cond-list\/}}, {\it{label-alist\/}})\index{cond-conversion} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{actual-conds\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf else }{\rm{cons}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\it{lc\/}}, \\ 
{\bf{nil}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-constant}}, \\ 
{\rm{mg-cond-to-p-nat}}\,(\=\+{\rm{car}}\,({\it{actual-conds\/}}), \\ 
{\it{cond-list\/}})\-\index{mg-cond-to-p-nat})\-)\-, \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}}, \\ 
{\rm{cons}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
{\rm{fetch-label}}\,(\=\+{\rm{car}}\,({\it{actual-conds\/}}), \\ 
{\it{label-alist\/}})\-\index{fetch-label})\-, \\ 
{\rm{cond-conversion}}\,(\=\+{\rm{cdr}}\,({\it{actual-conds\/}}), \\ 
$1\;+$ {\it{lc\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\it{label-alist\/}})\-\index{cond-conversion})\-)\-)\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  length-cond-conversion \\ \index{length-cond-conversion}
\=\+{\rm{length}}\,({\rm{cond-conversion}}\,({\it{call-conds\/}}, {\it{lc\/}}, {\it{cond-list\/}}, {\it{label-alist\/}})\index{cond-conversion})\index{length} \\ 
$=$$\;\;\;\;$({\tt{3}} $*$ {\rm{length}}\,({\it{call-conds\/}})\index{length})\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{label-cnt-list} \\  
\=\+{\rm{label-cnt-list}}\,({\it{lc\/}}, {\it{n\/}})\index{label-cnt-list} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{n\/}} $\simeq {\tt{0}}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf else }{\rm{cons}}\,({\it{lc\/}}, {\rm{label-cnt-list}}\,({\it{lc\/}}, {\it{n\/}} $-\;1$)\index{label-cnt-list})$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  length-label-cnt-list \\ \index{length-label-cnt-list}
{\rm{length}}\,({\rm{label-cnt-list}}\,({\it{lc\/}}, {\it{n\/}})\index{label-cnt-list})\index{length} $=$ {\rm{fix}}\,({\it{n\/}})
\end{tabbing}

\begin{verbatim};; I must make sure that the condition index is in-range.  I can do this by using the def-conds as
;; the list to index rather than the make-cond-list.

;; This was changed slightly to add two additional condition onto the front of the list.  This is 
;; because the condition index for 'normal is not zero any longer, but is now two.  Consequently, if
;; I'm going to use the condition index as an index into the cond-case-jump-label-list, I must either
;; decrement it twice or kludge the list structure.  I simply add the label for 'routineerror twice
;; at the beginning.  

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{condition-map-code} \\  
\=\+{\rm{condition-map-code}}\,({\it{actual-conds\/}}, {\it{lc\/}}, {\it{cond-list\/}}, {\it{label-alist\/}}, {\it{proc-locals-lngth\/}})\index{condition-map-code} \\ 
$=$$\;\;\;\;${\rm{append}}\,(\=\+{\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-global}}, {\tt{'}}{\tt{c-c}}), \\ 
{\rm{append}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{jump-case}}, \\ 
{\rm{cons}}\,(\=\+{\it{lc\/}}, \\ 
{\rm{cons}}\,(\=\+{\it{lc\/}}, \\ 
{\rm{cond-case-jump-label-list}}\,(\=\+$1\;+$ {\it{lc\/}}, \\ 
$1\;+$ {\rm{length}}\,({\it{actual-conds\/}})\index{length})\-\index{cond-case-jump-label-list})\-)\-)\-, \\ 
{\rm{label-cnt-list}}\,({\it{lc\/}}, {\it{proc-locals-lngth\/}})\index{label-cnt-list})\-, \\ 
{\rm{list}}\,({\tt{'}}{\tt{dl}}, {\it{lc\/}}, {\bf{nil}}, {\tt{'}}{\tt{(}}{\tt{push-constant}}{\tt{ }}{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{1}}{\tt{)}}{\tt{)}}), \\ 
{\tt{'}}{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}}, \\ 
{\rm{list}}\,({\tt{'}}{\tt{jump}}, {\rm{fetch-label}}\,({\tt{'}}{\tt{routineerror}}, {\it{label-alist\/}})\index{fetch-label}))\-, \\ 
{\rm{append}}\,(\=\+{\rm{cond-conversion}}\,(\=\+{\it{actual-conds\/}}, \\ 
$1\;+$ ($1\;+$ {\it{lc\/}}), \\ 
{\it{cond-list\/}}, \\ 
{\it{label-alist\/}})\-\index{cond-conversion}, \\ 
{\rm{list}}\,({\rm{list}}\,({\tt{'}}{\tt{dl}}, $1\;+$ {\it{lc\/}}, {\bf{nil}}, {\tt{'}}{\tt{(}}{\tt{no-op}}{\tt{)}})))\-)\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{proc-call-code} \\  
\=\+{\rm{proc-call-code}}\,({\it{cinfo\/}}, {\it{stmt\/}}, {\it{cond-list\/}}, {\it{locals\/}}, {\it{cond-locals-lngth\/}})\index{proc-call-code} \\ 
$=$$\;\;\;\;${\rm{append}}\,(\=\+{\rm{push-parameters-code}}\,({\it{locals\/}}, {\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})\index{push-parameters-code}, \\ 
{\rm{cons}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{call}}, {\rm{call-name}}\,({\it{stmt\/}})\index{call-name}), \\ 
{\rm{condition-map-code}}\,(\=\+{\rm{call-conds}}\,({\it{stmt\/}})\index{call-conds}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
{\it{cond-locals-lngth\/}})\-\index{condition-map-code})\-)\-\-
\end{tabbing}

\begin{verbatim};;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                                                    ;;
;;                   %Compiling the Predefineds                       ;;
;;                                                                    ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; The following functions define the sequence of statements laid
;; down for a call to a predefined procedure.

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{mg-simple-variable-assignment-c!all-sequence} \\  
\=\+{\rm{mg-simple-variable-assignment-call-sequence}}\,({\it{stmt\/}})\index{mg-simple-variable-assignment-c!all-sequence} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\tt{'}}{\tt{(}}{\tt{call}}{\tt{ }}{\tt{mg-simple-variable-assignment}}{\tt{)}})\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-simple-constant-assignment-c!all-sequence} \\  
\=\+{\rm{mg-simple-constant-assignment-call-sequence}}\,({\it{stmt\/}})\index{mg-simple-constant-assignment-c!all-sequence} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-constant}}, \\ 
{\rm{mg-to-p-simple-literal}}\,({\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}))\index{mg-to-p-simple-literal})\-, \\ 
{\tt{'}}{\tt{(}}{\tt{call}}{\tt{ }}{\tt{mg-simple-constant-assignment}}{\tt{)}})\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-simple-variable-eq-call-seque!nce} \\  
\=\+{\rm{mg-simple-variable-eq-call-sequence}}\,({\it{stmt\/}})\index{mg-simple-variable-eq-call-seque!nce} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\tt{'}}{\tt{(}}{\tt{call}}{\tt{ }}{\tt{mg-simple-variable-eq}}{\tt{)}})\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-simple-constant-eq-call-seque!nce} \\  
\=\+{\rm{mg-simple-constant-eq-call-sequence}}\,({\it{stmt\/}})\index{mg-simple-constant-eq-call-seque!nce} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-constant}}, \\ 
{\rm{mg-to-p-simple-literal}}\,({\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}))\index{mg-to-p-simple-literal})\-, \\ 
{\tt{'}}{\tt{(}}{\tt{call}}{\tt{ }}{\tt{mg-simple-constant-eq}}{\tt{)}})\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-integer-le-call-sequence} \\  
\=\+{\rm{mg-integer-le-call-sequence}}\,({\it{stmt\/}})\index{mg-integer-le-call-sequence} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\tt{'}}{\tt{(}}{\tt{call}}{\tt{ }}{\tt{mg-integer-le}}{\tt{)}})\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-integer-unary-minus-call-seq!uence} \\  
\=\+{\rm{mg-integer-unary-minus-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{mg-integer-unary-minus-call-seq!uence} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\tt{'}}{\tt{(}}{\tt{call}}{\tt{ }}{\tt{mg-integer-unary-minus}}{\tt{)}}, \\ 
{\tt{'}}{\tt{(}}{\tt{push-global}}{\tt{ }}{\tt{c-c}}{\tt{)}}, \\ 
{\tt{'}}{\tt{(}}{\tt{sub1-nat}}{\tt{)}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-nat-and-jump}}, \\ 
{\tt{'}}{\tt{zero}}, \\ 
{\rm{fetch-label}}\,({\tt{'}}{\tt{routineerror}}, {\it{label-alist\/}})\index{fetch-label})\-)\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-integer-add-call-sequence} \\  
\=\+{\rm{mg-integer-add-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{mg-integer-add-call-sequence} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\tt{'}}{\tt{(}}{\tt{call}}{\tt{ }}{\tt{mg-integer-add}}{\tt{)}}, \\ 
{\tt{'}}{\tt{(}}{\tt{push-global}}{\tt{ }}{\tt{c-c}}{\tt{)}}, \\ 
{\tt{'}}{\tt{(}}{\tt{sub1-nat}}{\tt{)}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-nat-and-jump}}, \\ 
{\tt{'}}{\tt{zero}}, \\ 
{\rm{fetch-label}}\,({\tt{'}}{\tt{routineerror}}, {\it{label-alist\/}})\index{fetch-label})\-)\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-integer-subtract-call-sequen!ce} \\  
\=\+{\rm{mg-integer-subtract-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{mg-integer-subtract-call-sequen!ce} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\tt{'}}{\tt{(}}{\tt{call}}{\tt{ }}{\tt{mg-integer-subtract}}{\tt{)}}, \\ 
{\tt{'}}{\tt{(}}{\tt{push-global}}{\tt{ }}{\tt{c-c}}{\tt{)}}, \\ 
{\tt{'}}{\tt{(}}{\tt{sub1-nat}}{\tt{)}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-nat-and-jump}}, \\ 
{\tt{'}}{\tt{zero}}, \\ 
{\rm{fetch-label}}\,({\tt{'}}{\tt{routineerror}}, {\it{label-alist\/}})\index{fetch-label})\-)\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-boolean-or-call-sequence} \\  
\=\+{\rm{mg-boolean-or-call-sequence}}\,({\it{stmt\/}})\index{mg-boolean-or-call-sequence} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\tt{'}}{\tt{(}}{\tt{call}}{\tt{ }}{\tt{mg-boolean-or}}{\tt{)}})\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-boolean-and-call-sequence} \\  
\=\+{\rm{mg-boolean-and-call-sequence}}\,({\it{stmt\/}})\index{mg-boolean-and-call-sequence} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\tt{'}}{\tt{(}}{\tt{call}}{\tt{ }}{\tt{mg-boolean-and}}{\tt{)}})\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-boolean-not-call-sequence} \\  
\=\+{\rm{mg-boolean-not-call-sequence}}\,({\it{stmt\/}})\index{mg-boolean-not-call-sequence} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\tt{'}}{\tt{(}}{\tt{call}}{\tt{ }}{\tt{mg-boolean-not}}{\tt{)}})\-\-
\end{tabbing}

\begin{verbatim};; The 4th argument is a numberp supplied by the pre-processor which is
;; the size of the array.  This is necessary for bounds checking.
;; >> Do I need to guarantee that it is a small-integerp?

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{mg-index-array-call-sequence} \\  
\=\+{\rm{mg-index-array-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{mg-index-array-call-sequence} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-constant}}, {\rm{tag}}\,({\tt{'}}{\tt{int}}, {\rm{cadddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}))\index{tag}), \\ 
{\tt{'}}{\tt{(}}{\tt{call}}{\tt{ }}{\tt{mg-index-array}}{\tt{)}}, \\ 
{\tt{'}}{\tt{(}}{\tt{push-global}}{\tt{ }}{\tt{c-c}}{\tt{)}}, \\ 
{\tt{'}}{\tt{(}}{\tt{sub1-nat}}{\tt{)}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-nat-and-jump}}, \\ 
{\tt{'}}{\tt{zero}}, \\ 
{\rm{fetch-label}}\,({\tt{'}}{\tt{routineerror}}, {\it{label-alist\/}})\index{fetch-label})\-)\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-array-element-assignment-cal!l-sequence} \\  
\=\+{\rm{mg-array-element-assignment-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{mg-array-element-assignment-cal!l-sequence} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{car}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})), \\ 
{\rm{list}}\,({\tt{'}}{\tt{push-constant}}, {\rm{tag}}\,({\tt{'}}{\tt{int}}, {\rm{cadddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}))\index{tag}), \\ 
{\tt{'}}{\tt{(}}{\tt{call}}{\tt{ }}{\tt{mg-array-element-assignment}}{\tt{)}}, \\ 
{\tt{'}}{\tt{(}}{\tt{push-global}}{\tt{ }}{\tt{c-c}}{\tt{)}}, \\ 
{\tt{'}}{\tt{(}}{\tt{sub1-nat}}{\tt{)}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-nat-and-jump}}, \\ 
{\tt{'}}{\tt{zero}}, \\ 
{\rm{fetch-label}}\,({\tt{'}}{\tt{routineerror}}, {\it{label-alist\/}})\index{fetch-label})\-)\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{predefined-proc-call-sequence} \\  
\=\+{\rm{predefined-proc-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{predefined-proc-call-sequence} \\ 
$=$$\;\;\;\;$\=\+{\bf case on }{\rm{call-name}}\,({\it{stmt\/}})\index{call-name}: \\ 
{\bf case = }{\it{mg-simple-variable-assignment\/}} \\ 
{\bf then }{\rm{mg-simple-variable-assignment-call-sequence}}\,({\it{stmt\/}})\index{mg-simple-variable-assignment-c!all-sequence} \\ 
{\bf case = }{\it{mg-simple-constant-assignment\/}} \\ 
{\bf $\;\;$then }{\rm{mg-simple-constant-assignment-call-sequence}}\,({\it{stmt\/}})\index{mg-simple-constant-assignment-c!all-sequence} \\ 
{\bf case = }{\it{mg-simple-variable-eq\/}} \\ 
{\bf $\;\;$then }{\rm{mg-simple-variable-eq-call-sequence}}\,({\it{stmt\/}})\index{mg-simple-variable-eq-call-seque!nce} \\ 
{\bf case = }{\it{mg-simple-constant-eq\/}} \\ 
{\bf $\;\;$then }{\rm{mg-simple-constant-eq-call-sequence}}\,({\it{stmt\/}})\index{mg-simple-constant-eq-call-seque!nce} \\ 
{\bf case = }{\it{mg-integer-le\/}} \\ 
{\bf $\;\;$then }{\rm{mg-integer-le-call-sequence}}\,({\it{stmt\/}})\index{mg-integer-le-call-sequence} \\ 
{\bf case = }{\it{mg-integer-unary-minus\/}} \\ 
{\bf $\;\;$then }{\rm{mg-integer-unary-minus-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{mg-integer-unary-minus-call-seq!uence} \\ 
{\bf case = }{\it{mg-integer-add\/}} \\ 
{\bf $\;\;$then }{\rm{mg-integer-add-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{mg-integer-add-call-sequence} \\ 
{\bf case = }{\it{mg-integer-subtract\/}} \\ 
{\bf $\;\;$then }{\rm{mg-integer-subtract-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{mg-integer-subtract-call-sequen!ce} \\ 
{\bf case = }{\it{mg-boolean-or\/}} \\ 
{\bf $\;\;$then }{\rm{mg-boolean-or-call-sequence}}\,({\it{stmt\/}})\index{mg-boolean-or-call-sequence} \\ 
{\bf case = }{\it{mg-boolean-and\/}} \\ 
{\bf $\;\;$then }{\rm{mg-boolean-and-call-sequence}}\,({\it{stmt\/}})\index{mg-boolean-and-call-sequence} \\ 
{\bf case = }{\it{mg-boolean-not\/}} \\ 
{\bf $\;\;$then }{\rm{mg-boolean-not-call-sequence}}\,({\it{stmt\/}})\index{mg-boolean-not-call-sequence} \\ 
{\bf case = }{\it{mg-index-array\/}} \\ 
{\bf $\;\;$then }{\rm{mg-index-array-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{mg-index-array-call-sequence} \\ 
{\bf case = }{\it{mg-array-element-assignment\/}} \\ 
{\bf $\;\;$then }{\rm{mg-array-element-assignment-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{mg-array-element-assignment-cal!l-sequence} \\ 
{\bf otherwise }{\bf{nil}}$\;${\bf  endcase}\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable predefined-proc-call-sequence.

\addvspace{18pt}

\begin{verbatim};; We now consider the bodies of the predefined routines.

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{mg-simple-variable-assignment-t!ranslation} \\  
\=\+{\sc{mg-simple-variable-assignment-translation}}\index{mg-simple-variable-assignment-t!ranslation} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{mg-simple-variable-assignment}} \\ 
{\tt{(}}{\tt{dest}}{\tt{ }}{\tt{source}}{\tt{)}} \\ 
{\tt{nil}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{source}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{dest}}{\tt{)}} \\ 
{\tt{(}}{\tt{deposit-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{ret}}{\tt{)}}{\tt{)}}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-simple-constant-assignment-t!ranslation} \\  
\=\+{\sc{mg-simple-constant-assignment-translation}}\index{mg-simple-constant-assignment-t!ranslation} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{mg-simple-constant-assignment}} \\ 
{\tt{(}}{\tt{dest}}{\tt{ }}{\tt{source}}{\tt{)}} \\ 
{\tt{nil}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{source}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{dest}}{\tt{)}} \\ 
{\tt{(}}{\tt{deposit-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{ret}}{\tt{)}}{\tt{)}}\-\-
\end{tabbing}

\begin{verbatim};; >>> Notice that deposit-temp-stk is different from my old deposit-temp
;;     in the order of args on the stack.  THESE WILL ALL HAVE TO CHANGE.

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{mg-simple-variable-eq-translati!on} \\  
\=\+{\sc{mg-simple-variable-eq-translation}}\index{mg-simple-variable-eq-translati!on} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{mg-simple-variable-eq}} \\ 
{\tt{(}}{\tt{ans}}{\tt{ }}{\tt{x}}{\tt{ }}{\tt{y}}{\tt{)}} \\ 
{\tt{nil}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{x}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{y}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{eq}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{ans}}{\tt{)}} \\ 
{\tt{(}}{\tt{deposit-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{ret}}{\tt{)}}{\tt{)}}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-simple-constant-eq-translati!on} \\  
\=\+{\sc{mg-simple-constant-eq-translation}}\index{mg-simple-constant-eq-translati!on} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{mg-simple-constant-eq}} \\ 
{\tt{(}}{\tt{ans}}{\tt{ }}{\tt{x}}{\tt{ }}{\tt{y}}{\tt{)}} \\ 
{\tt{nil}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{x}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{y}}{\tt{)}} \\ 
{\tt{(}}{\tt{eq}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{ans}}{\tt{)}} \\ 
{\tt{(}}{\tt{deposit-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{ret}}{\tt{)}}{\tt{)}}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-integer-le-translation} \\  
\=\+{\sc{mg-integer-le-translation}}\index{mg-integer-le-translation} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{mg-integer-le}} \\ 
{\tt{(}}{\tt{ans}}{\tt{ }}{\tt{x}}{\tt{ }}{\tt{y}}{\tt{)}} \\ 
{\tt{nil}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{y}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{x}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{lt-int}}{\tt{)}} \\ 
{\tt{(}}{\tt{not-bool}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{ans}}{\tt{)}} \\ 
{\tt{(}}{\tt{deposit-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{ret}}{\tt{)}}{\tt{)}}\-\-
\end{tabbing}

\begin{verbatim};; Since the representable positives and negatives are not
;; exactly complementary, I must check that the integer in question
;; is not that exact negative which would cause a problem.

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{mg-integer-unary-minus-translati!on} \\  
\=\+{\sc{mg-integer-unary-minus-translation}}\index{mg-integer-unary-minus-translati!on} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{mg-integer-unary-minus}} \\ 
{\tt{(}}{\tt{ans}}{\tt{ }}{\tt{x}}{\tt{)}} \\ 
{\tt{(}}{\tt{(}}{\tt{min-int}}{\tt{ }}{\tt{(}}{\tt{int}}{\tt{ }}{\tt{-2147483648}}{\tt{)}}{\tt{)}}{\tt{ }}{\tt{(}}{\tt{temp-x}}{\tt{ }}{\tt{(}}{\tt{int}}{\tt{ }}{\tt{0}}{\tt{)}}{\tt{)}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{x}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{set-local}}{\tt{ }}{\tt{temp-x}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{min-int}}{\tt{)}} \\ 
{\tt{(}}{\tt{eq}}{\tt{)}} \\ 
{\tt{(}}{\tt{test-bool-and-jump}}{\tt{ }}{\tt{f}}{\tt{ }}{\tt{0}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-constant}}{\tt{ }}{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{1}}{\tt{)}}{\tt{)}} \\ 
{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}} \\ 
{\tt{(}}{\tt{jump}}{\tt{ }}{\tt{1}}{\tt{)}} \\ 
{\tt{(}}{\tt{dl}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{temp-x}}{\tt{)}}{\tt{)}} \\ 
{\tt{(}}{\tt{neg-int}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{ans}}{\tt{)}} \\ 
{\tt{(}}{\tt{deposit-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{dl}}{\tt{ }}{\tt{1}}{\tt{ }}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{ret}}{\tt{)}}{\tt{)}}{\tt{)}}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-integer-add-translation} \\  
\=\+{\sc{mg-integer-add-translation}}\index{mg-integer-add-translation} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{mg-integer-add}} \\ 
{\tt{(}}{\tt{ans}}{\tt{ }}{\tt{y}}{\tt{ }}{\tt{z}}{\tt{)}} \\ 
{\tt{(}}{\tt{(}}{\tt{t1}}{\tt{ }}{\tt{(}}{\tt{int}}{\tt{ }}{\tt{0}}{\tt{)}}{\tt{)}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-constant}}{\tt{ }}{\tt{(}}{\tt{bool}}{\tt{ }}{\tt{f}}{\tt{)}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{y}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{z}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{add-int-with-carry}}{\tt{)}} \\ 
{\tt{(}}{\tt{pop-local}}{\tt{ }}{\tt{t1}}{\tt{)}} \\ 
{\tt{(}}{\tt{test-bool-and-jump}}{\tt{ }}{\tt{t}}{\tt{ }}{\tt{0}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{t1}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{ans}}{\tt{)}} \\ 
{\tt{(}}{\tt{deposit-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{jump}}{\tt{ }}{\tt{1}}{\tt{)}} \\ 
{\tt{(}}{\tt{dl}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{push-constant}}{\tt{ }}{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{1}}{\tt{)}}{\tt{)}}{\tt{)}} \\ 
{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}} \\ 
{\tt{(}}{\tt{dl}}{\tt{ }}{\tt{1}}{\tt{ }}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{ret}}{\tt{)}}{\tt{)}}{\tt{)}}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-integer-subtract-translation} \\  
\=\+{\sc{mg-integer-subtract-translation}}\index{mg-integer-subtract-translation} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{mg-integer-subtract}} \\ 
{\tt{(}}{\tt{ans}}{\tt{ }}{\tt{y}}{\tt{ }}{\tt{z}}{\tt{)}} \\ 
{\tt{(}}{\tt{(}}{\tt{t1}}{\tt{ }}{\tt{(}}{\tt{int}}{\tt{ }}{\tt{0}}{\tt{)}}{\tt{)}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-constant}}{\tt{ }}{\tt{(}}{\tt{bool}}{\tt{ }}{\tt{f}}{\tt{)}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{y}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{z}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{sub-int-with-carry}}{\tt{)}} \\ 
{\tt{(}}{\tt{pop-local}}{\tt{ }}{\tt{t1}}{\tt{)}} \\ 
{\tt{(}}{\tt{test-bool-and-jump}}{\tt{ }}{\tt{t}}{\tt{ }}{\tt{0}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{t1}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{ans}}{\tt{)}} \\ 
{\tt{(}}{\tt{deposit-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{jump}}{\tt{ }}{\tt{1}}{\tt{)}} \\ 
{\tt{(}}{\tt{dl}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{push-constant}}{\tt{ }}{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{1}}{\tt{)}}{\tt{)}}{\tt{)}} \\ 
{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}} \\ 
{\tt{(}}{\tt{dl}}{\tt{ }}{\tt{1}}{\tt{ }}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{ret}}{\tt{)}}{\tt{)}}{\tt{)}}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-boolean-or-translation} \\  
\=\+{\sc{mg-boolean-or-translation}}\index{mg-boolean-or-translation} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{mg-boolean-or}} \\ 
{\tt{(}}{\tt{ans}}{\tt{ }}{\tt{b1}}{\tt{ }}{\tt{b2}}{\tt{)}} \\ 
{\tt{nil}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{b1}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{b2}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{or-bool}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{ans}}{\tt{)}} \\ 
{\tt{(}}{\tt{deposit-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{ret}}{\tt{)}}{\tt{)}}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-boolean-and-translation} \\  
\=\+{\sc{mg-boolean-and-translation}}\index{mg-boolean-and-translation} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{mg-boolean-and}} \\ 
{\tt{(}}{\tt{ans}}{\tt{ }}{\tt{b1}}{\tt{ }}{\tt{b2}}{\tt{)}} \\ 
{\tt{nil}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{b1}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{b2}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{and-bool}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{ans}}{\tt{)}} \\ 
{\tt{(}}{\tt{deposit-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{ret}}{\tt{)}}{\tt{)}}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{mg-boolean-not-translation} \\  
\=\+{\sc{mg-boolean-not-translation}}\index{mg-boolean-not-translation} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{mg-boolean-not}} \\ 
{\tt{(}}{\tt{ans}}{\tt{ }}{\tt{b1}}{\tt{)}} \\ 
{\tt{nil}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{b1}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{not-bool}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{ans}}{\tt{)}} \\ 
{\tt{(}}{\tt{deposit-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{ret}}{\tt{)}}{\tt{)}}\-\-
\end{tabbing}

\begin{verbatim};; ans := A[i] of size
;; How do I know that the sub-nat to compute the index doesn't give an error?

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{mg-index-array-translation} \\  
\=\+{\sc{mg-index-array-translation}}\index{mg-index-array-translation} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{mg-index-array}} \\ 
{\tt{(}}{\tt{ans}}{\tt{ }}{\tt{a}}{\tt{ }}{\tt{i}}{\tt{ }}{\tt{array-size}}{\tt{)}} \\ 
{\tt{(}}{\tt{(}}{\tt{temp-i}}{\tt{ }}{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{0}}{\tt{)}}{\tt{)}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{i}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{set-local}}{\tt{ }}{\tt{temp-i}}{\tt{)}} \\ 
{\tt{(}}{\tt{test-int-and-jump}}{\tt{ }}{\tt{neg}}{\tt{ }}{\tt{0}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{array-size}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{temp-i}}{\tt{)}} \\ 
{\tt{(}}{\tt{sub-int}}{\tt{)}} \\ 
{\tt{(}}{\tt{test-int-and-jump}}{\tt{ }}{\tt{not-pos}}{\tt{ }}{\tt{0}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{a}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{temp-i}}{\tt{)}} \\ 
{\tt{(}}{\tt{int-to-nat}}{\tt{)}} \\ 
{\tt{(}}{\tt{add-nat}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{ans}}{\tt{)}} \\ 
{\tt{(}}{\tt{deposit-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{jump}}{\tt{ }}{\tt{1}}{\tt{)}} \\ 
{\tt{(}}{\tt{dl}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{push-constant}}{\tt{ }}{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{1}}{\tt{)}}{\tt{)}}{\tt{)}} \\ 
{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}} \\ 
{\tt{(}}{\tt{dl}}{\tt{ }}{\tt{1}}{\tt{ }}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{ret}}{\tt{)}}{\tt{)}}{\tt{)}}\-\-
\end{tabbing}

\begin{verbatim};; (mg-array-element-assignment A i value size)

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{mg-array-element-assignment-tra!nslation} \\  
\=\+{\sc{mg-array-element-assignment-translation}}\index{mg-array-element-assignment-tra!nslation} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{(}}\=\+{\tt{mg-array-element-assignment}} \\ 
{\tt{(}}{\tt{a}}{\tt{ }}{\tt{i}}{\tt{ }}{\tt{value}}{\tt{ }}{\tt{array-size}}{\tt{)}} \\ 
{\tt{(}}{\tt{(}}{\tt{temp-i}}{\tt{ }}{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{0}}{\tt{)}}{\tt{)}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{i}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{set-local}}{\tt{ }}{\tt{temp-i}}{\tt{)}} \\ 
{\tt{(}}{\tt{test-int-and-jump}}{\tt{ }}{\tt{neg}}{\tt{ }}{\tt{0}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{array-size}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{temp-i}}{\tt{)}} \\ 
{\tt{(}}{\tt{sub-int}}{\tt{)}} \\ 
{\tt{(}}{\tt{test-int-and-jump}}{\tt{ }}{\tt{not-pos}}{\tt{ }}{\tt{0}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{value}}{\tt{)}} \\ 
{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{a}}{\tt{)}} \\ 
{\tt{(}}{\tt{push-local}}{\tt{ }}{\tt{temp-i}}{\tt{)}} \\ 
{\tt{(}}{\tt{int-to-nat}}{\tt{)}} \\ 
{\tt{(}}{\tt{add-nat}}{\tt{)}} \\ 
{\tt{(}}{\tt{deposit-temp-stk}}{\tt{)}} \\ 
{\tt{(}}{\tt{jump}}{\tt{ }}{\tt{1}}{\tt{)}} \\ 
{\tt{(}}{\tt{dl}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{push-constant}}{\tt{ }}{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{1}}{\tt{)}}{\tt{)}}{\tt{)}} \\ 
{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}} \\ 
{\tt{(}}{\tt{dl}}{\tt{ }}{\tt{1}}{\tt{ }}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{ret}}{\tt{)}}{\tt{)}}{\tt{)}}\-\-
\end{tabbing}

\begin{verbatim};; The list of translations of the predefined routines is appended
;; to the list of translations of the user-defined routines and 
;; becomes the program segment of the Piton program.  

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{predefined-procedure-translatio!ns-list} \\  
\=\+{\sc{predefined-procedure-translations-list}}\index{predefined-procedure-translatio!ns-list} \\ 
$=$$\;\;\;\;${\rm{list}}\,(\=\+{\sc{mg-simple-variable-assignment-translation}}\index{mg-simple-variable-assignment-t!ranslation}, \\ 
{\sc{mg-simple-constant-assignment-translation}}\index{mg-simple-constant-assignment-t!ranslation}, \\ 
{\sc{mg-simple-variable-eq-translation}}\index{mg-simple-variable-eq-translati!on}, \\ 
{\sc{mg-simple-constant-eq-translation}}\index{mg-simple-constant-eq-translati!on}, \\ 
{\sc{mg-integer-le-translation}}\index{mg-integer-le-translation}, \\ 
{\sc{mg-integer-unary-minus-translation}}\index{mg-integer-unary-minus-translati!on}, \\ 
{\sc{mg-integer-add-translation}}\index{mg-integer-add-translation}, \\ 
{\sc{mg-integer-subtract-translation}}\index{mg-integer-subtract-translation}, \\ 
{\sc{mg-boolean-or-translation}}\index{mg-boolean-or-translation}, \\ 
{\sc{mg-boolean-and-translation}}\index{mg-boolean-and-translation}, \\ 
{\sc{mg-boolean-not-translation}}\index{mg-boolean-not-translation}, \\ 
{\sc{mg-index-array-translation}}\index{mg-index-array-translation}, \\ 
{\sc{mg-array-element-assignment-translation}}\index{mg-array-element-assignment-tra!nslation})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable predefined-procedure-translations-list.

\addvspace{18pt}

\begin{verbatim};; Insist that the condition on an IF statement is a variable.  This means that 
;; it cannot be a boolean literal.  Hence the code for computing it is always.
;;   (push-local b)
;;   (fetch-temp-stk)
;; Otherwise, the number of statements would vary and I don't want to deal with that
;; now.  This is consistent with the convention for proc-calls.  

;; Condition on an IF statement is either a boolean literal or the address of a 
;; boolean in the my-stack array.  

;; SIGNAL
;;
;;         (push-constant (nat n))            n is the index of condition in cond-list
;;         (pop-global c-c)
;;         (jump label)                       label is associated label of condition in label-alist
;;          
;; PROG2
;;
;;         "code for left branch"
;;         "code for right branch"
;;
;; 
;; LOOP
;;
;;          (dl l0 nil (no-op))
;;          "code for loop-body"
;;          (jump L0)
;;          (dl l1 nil (push-constant (nat 2)))
;;          (pop-global c-c)
;; 
;; IF
;;
;;          (push-local b) 
;;          (fetch-temp-stk)
;;          (test-bool-and-jump false L0)
;;          "code for true branch"
;;          (jump L1)
;;          (dl l0 nil (no-op))
;;          "code for false branch"
;;          (dl l1 nil (no-op))
;;     
;; BEGIN-WHEN
;;
;;         "code for begin-body"
;;         (jump L1)
;;         (dl l0 nil (push-constant (nat 2)))
;;         (pop-global c-c)
;;         "code for when-arm-body"
;;         (dl l1 nil (no-op))
;;
;; PROC-CALL
;; For the statement 
;;  (PROC-CALL-MG name (act1 act2 ... actj) (cond1 cond2 ... condn))
;; we make the following code.  
;;    push-locals-values-code 
;;    push-locals-addresses-code
;;    push actuals-code
;;    (call name)
;;    (push-global c-c)
;;    (case-jump (L0 L1 L2 ... Ln))
;;    (push-constant (nat 1))
;;    (pop-global c-c)
;;    (jump "label-for-routineerror")
;;    (dl l1 nil (push-constant "condition-number for cond1"))
;;    (pop-global c-c)
;;    (jump "label for cond1")
;;    (dl l2 nil (push-constant "condition-number for cond2"))
;;    (pop-global c-c)
;;    (jump "label for cond2")
;;        ...
;;    (dl ln nil (push-constant "condition-number for condn"))
;;    (pop-global c-c)
;;    (jump "label for condn")
;;    (dl l0 nil (no-op))
;;
;; PREDEFINED-PROC-CALL

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{translate} \\  
\=\+{\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate} \\ 
$=$$\;\;\;\;$\=\+{\bf case on }{\rm{car}}\,({\it{stmt\/}}): \\ 
{\bf case = }{\it{no-op-mg\/}} \\ 
{\bf then }{\it{cinfo\/}} \\ 
{\bf case = }{\it{signal-mg\/}} \\ 
{\bf $\;\;$then }{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-constant}}, \\ 
{\rm{mg-cond-to-p-nat}}\,(\=\+{\rm{signalled-condition}}\,({\it{stmt\/}})\index{signalled-condition}, \\ 
{\it{cond-list\/}})\-\index{mg-cond-to-p-nat})\-, \\ 
{\rm{list}}\,({\tt{'}}{\tt{pop-global}}, {\tt{'}}{\tt{c-c}}), \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
{\rm{fetch-label}}\,(\=\+{\rm{signalled-condition}}\,({\it{stmt\/}})\index{signalled-condition}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-\index{fetch-label})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-cinfo} \\ 
{\bf case = }{\it{prog2-mg\/}} \\ 
{\bf $\;\;$then }{\rm{translate}}\,(\=\+{\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-right-branch}}\,({\it{stmt\/}})\index{prog2-right-branch}, \\ 
{\it{proc-list\/}})\-\index{translate} \\ 
{\bf case = }{\it{loop-mg\/}} \\ 
{\bf $\;\;$then }{\rm{discard-label}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,({\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-)\-))\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{jump}}, {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{push-constant}} \\ 
{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{2}}{\tt{)}}{\tt{)}}\-)\-, \\ 
{\tt{'}}{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}})\-)\-\index{add-code})\index{discard-label} \\ 
{\bf case = }{\it{if-mg\/}} \\ 
{\bf $\;\;$then }{\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}{\tt{no-op}}{\tt{)}})\-)\-)\-\index{add-code}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,({\rm{list}}\,({\tt{'}}{\tt{dl}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, {\bf{nil}}, {\tt{'}}{\tt{(}}{\tt{no-op}}{\tt{)}})))\-\index{add-code} \\ 
{\bf case = }{\it{begin-mg\/}} \\ 
{\bf $\;\;$then }{\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{add-code}}\,(\=\+{\rm{set-label-alist}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{append}}\,(\=\+{\rm{make-label-alist}}\,(\=\+{\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-label-alist}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-\index{set-label-alist}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{push-constant}} \\ 
{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{2}}{\tt{)}}{\tt{)}}\-)\-, \\ 
{\tt{'}}{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}})\-)\-\index{add-code}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{when-handler}}\,({\it{stmt\/}})\index{when-handler}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,({\rm{list}}\,({\tt{'}}{\tt{dl}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, {\bf{nil}}, {\tt{'}}{\tt{(}}{\tt{no-op}}{\tt{)}})))\-\index{add-code} \\ 
{\bf case = }{\it{proc-call-mg\/}} \\ 
{\bf $\;\;$then }{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{proc-call-code}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{stmt\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{def-locals}}\,({\rm{fetch-called-def}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{fetch-called-def})\index{def-locals}, \\ 
{\rm{length}}\,({\rm{def-cond-locals}}\,({\rm{fetch-called-def}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{fetch-called-def})\index{def-cond-locals})\index{length})\-\index{proc-call-code})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt} \\ 
$+$$\;\;\;\;$($1\;+$ ($1\;+$ {\rm{length}}\,({\rm{call-conds}}\,({\it{stmt\/}})\index{call-conds})\index{length}))\-)\-\index{make-cinfo} \\ 
{\bf case = }{\it{predefined-proc-call-mg\/}} \\ 
{\bf $\;\;$then }{\rm{add-code}}\,(\=\+{\it{cinfo\/}}, \\ 
{\rm{predefined-proc-call-sequence}}\,({\it{stmt\/}}, {\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\index{predefined-proc-call-sequence})\-\index{add-code} \\ 
{\bf otherwise }{\it{cinfo\/}}$\;${\bf  endcase}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  signal-translation \\ \index{signal-translation}
\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{signal-mg}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate} \\ 
$=$$\;\;\;\;${\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-constant}}, \\ 
{\rm{mg-cond-to-p-nat}}\,(\=\+{\rm{signalled-condition}}\,({\it{stmt\/}})\index{signalled-condition}, \\ 
{\it{cond-list\/}})\-\index{mg-cond-to-p-nat})\-, \\ 
{\rm{list}}\,({\tt{'}}{\tt{pop-global}}, {\tt{'}}{\tt{c-c}}), \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
{\rm{fetch-label}}\,(\=\+{\rm{signalled-condition}}\,({\it{stmt\/}})\index{signalled-condition}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-\index{fetch-label})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-cinfo})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  prog2-translation \\ \index{prog2-translation}
\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{prog2-mg}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate} \\ 
$=$$\;\;\;\;${\rm{translate}}\,(\=\+{\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-right-branch}}\,({\it{stmt\/}})\index{prog2-right-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  loop-translation \\ \index{loop-translation}
\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{loop-mg}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate} \\ 
$=$$\;\;\;\;${\rm{discard-label}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,({\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-)\-))\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{jump}}, {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{push-constant}} \\ 
{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{2}}{\tt{)}}{\tt{)}}\-)\-, \\ 
{\tt{'}}{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}})\-)\-\index{add-code})\index{discard-label})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  if-translation \\ \index{if-translation}
\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{if-mg}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate} \\ 
$=$$\;\;\;\;${\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}{\tt{no-op}}{\tt{)}})\-)\-)\-\index{add-code}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,({\rm{list}}\,({\tt{'}}{\tt{dl}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, {\bf{nil}}, {\tt{'}}{\tt{(}}{\tt{no-op}}{\tt{)}})))\-\index{add-code})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  begin-translation \\ \index{begin-translation}
\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{begin-mg}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate} \\ 
$=$$\;\;\;\;${\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{add-code}}\,(\=\+{\rm{set-label-alist}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{append}}\,(\=\+{\rm{make-label-alist}}\,(\=\+{\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-label-alist}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-\index{set-label-alist}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{push-constant}} \\ 
{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{2}}{\tt{)}}{\tt{)}}\-)\-, \\ 
{\tt{'}}{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}})\-)\-\index{add-code}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{when-handler}}\,({\it{stmt\/}})\index{when-handler}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,({\rm{list}}\,({\tt{'}}{\tt{dl}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, {\bf{nil}}, {\tt{'}}{\tt{(}}{\tt{no-op}}{\tt{)}})))\-\index{add-code})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  call-translation \\ \index{call-translation}
\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{proc-call-mg}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate} \\ 
$=$$\;\;\;\;${\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{proc-call-code}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{stmt\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{def-locals}}\,({\rm{fetch-called-def}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{fetch-called-def})\index{def-locals}, \\ 
{\rm{length}}\,({\rm{def-cond-locals}}\,({\rm{fetch-called-def}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{fetch-called-def})\index{def-cond-locals})\index{length})\-\index{proc-call-code})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt} \\ 
$+$$\;\;\;\;$($1\;+$ ($1\;+$ {\rm{length}}\,({\rm{call-conds}}\,({\it{stmt\/}})\index{call-conds})\index{length}))\-)\-\index{make-cinfo})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  predefined-call-translation \\ \index{predefined-call-translation}
\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{predefined-proc-call-mg}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate} \\ 
$=$$\;\;\;\;${\rm{add-code}}\,(\=\+{\it{cinfo\/}}, \\ 
{\rm{predefined-proc-call-sequence}}\,(\=\+{\it{stmt\/}}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-\index{predefined-proc-call-sequence})\-\index{add-code})\-\-
\end{tabbing}



\noindent{\sc Event}:   Disable translate.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  predefined-proc-call-code-plistp \\ \index{predefined-proc-call-code-plistp}
{\rm{plistp}}\,({\rm{predefined-proc-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{predefined-proc-call-sequence})\index{plistp}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  not-find-labelp-predefined-proc-call-code \\ \index{not-find-labelp-predefined-proc!-call-code}
{\rm{find-labelp}}\,({\it{n\/}}, {\rm{predefined-proc-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{predefined-proc-call-sequence})\index{find-labelp} $=$ {\bf{f}}
\end{tabbing}

\begin{verbatim};; COMPILATION OF A PROCEDURE 
;; 
;; Given a procedure def of the form
;; (procedure-defn-mg name (param1 ... paramn) (cond1 ... condi) (local1 ... localj) 
;;                         (local-cond1 ... local-condk) body) 
;; I make the code for the body in the context of the cinfo 
;;   code: nil 
;;   label-alist: ((cond1 . 0) (cond2 . 0) .... (local-cond1 . 0) ...)  
;;   label-cnt: 1 

;; The new scheme of transforming each of the MG locals into a formal of the Piton 
;; subroutine eliminates the need to convert them within the code.  I hope it also
;; eliminates the need to store the stack pointer anywhere in the data-segment.

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{translate-def-body} \\  
\=\+{\rm{translate-def-body}}\,({\it{proc-def\/}}, {\it{proc-list\/}})\index{translate-def-body} \\ 
$=$$\;\;\;\;${\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\bf{nil}}, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,({\tt{'}}{\tt{routineerror}}, {\tt{0}}), \\ 
{\rm{make-label-alist}}\,(\=\+{\rm{make-cond-list}}\,({\it{proc-def\/}})\index{make-cond-list}, \\ 
{\tt{0}})\-\index{make-label-alist})\-, \\ 
{\tt{1}})\-\index{make-cinfo}, \\ 
{\rm{make-cond-list}}\,({\it{proc-def\/}})\index{make-cond-list}, \\ 
{\rm{def-body}}\,({\it{proc-def\/}})\index{def-body}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{(}}{\tt{dl}}{\tt{ }}{\tt{0}}{\tt{ }}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}}, \\ 
{\rm{list}}\,({\tt{'}}{\tt{pop*}}, {\rm{data-length}}\,({\rm{def-locals}}\,({\it{proc-def\/}})\index{def-locals})\index{data-length}), \\ 
{\tt{'}}{\tt{(}}{\tt{ret}}{\tt{)}})\-)\-\index{add-code}\-
\end{tabbing}


\noindent{\sc Event}:   Disable translate-def-body.

\addvspace{18pt}

\begin{verbatim};; Both the MG formals and locals become formals in the Piton world.  This is a better 
;; approach because it allows for structured locals just as for structured formals.

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{translate-def} \\  
\=\+{\rm{translate-def}}\,({\it{def\/}}, {\it{proc-list\/}})\index{translate-def} \\ 
$=$$\;\;\;\;${\rm{append}}\,(\=\+{\rm{list}}\,(\=\+{\rm{def-name}}\,({\it{def\/}})\index{def-name}, \\ 
{\rm{append}}\,(\=\+{\rm{listcars}}\,({\rm{def-locals}}\,({\it{def\/}})\index{def-locals})\index{listcars}, \\ 
{\rm{listcars}}\,({\rm{def-formals}}\,({\it{def\/}})\index{def-formals})\index{listcars})\-, \\ 
{\bf{nil}})\-, \\ 
{\rm{code}}\,({\rm{translate-def-body}}\,({\it{def\/}}, {\it{proc-list\/}})\index{translate-def-body})\index{code})\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{translate-proc-list1} \\  
\=\+{\rm{translate-proc-list1}}\,({\it{proc-list1\/}}, {\it{proc-list2\/}})\index{translate-proc-list1} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{proc-list1\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf else }{\rm{cons}}\,(\=\+{\rm{translate-def}}\,({\rm{car}}\,({\it{proc-list1\/}}), {\it{proc-list2\/}})\index{translate-def}, \\ 
{\rm{translate-proc-list1}}\,({\rm{cdr}}\,({\it{proc-list1\/}}), {\it{proc-list2\/}})\index{translate-proc-list1})\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{translate-proc-list} \\  
\=\+{\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list} \\ 
$=$$\;\;\;\;${\rm{append}}\,(\=\+{\sc{predefined-procedure-translations-list}}\index{predefined-procedure-translatio!ns-list}, \\ 
{\rm{translate-proc-list1}}\,({\it{proc-list\/}}, {\it{proc-list\/}})\index{translate-proc-list1})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable translate-proc-list.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  translate-preserves-fields \\ \index{translate-preserves-fields}
\=\+{\rm{label-alist}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{label-alist} \\ 
$=$$\;\;\;\;${\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  code-always-plistp \\ \index{code-always-plistp}
\=\+{\rm{plistp}}\,({\rm{code}}\,({\it{cinfo\/}})\index{code})\index{plistp} \\ 
$\rightarrow$$\;\;\;\;${\rm{plistp}}\,({\rm{code}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code})\index{plistp}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  translate-preserves-ok-cinfop \\ \index{translate-preserves-ok-cinfop}
{\rm{ok-cinfop}}\,({\it{cinfo\/}})\index{ok-cinfop} $\rightarrow$ {\rm{ok-cinfop}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{ok-cinfop}
\end{tabbing}


\noindent{\sc Event}:   Disable translate-preserves-ok-cinfop.

\addvspace{18pt}

\begin{tabbing}{\sc Definition}:\index{nearly-equal-cinfos} \\  
\=\+{\rm{nearly-equal-cinfos}}\,({\it{x\/}}, {\it{y\/}})\index{nearly-equal-cinfos} \\ 
$=$$\;\;\;\;$(\=\+({\rm{label-alist}}\,({\it{x\/}})\index{label-alist} $=$ {\rm{label-alist}}\,({\it{y\/}})\index{label-alist}) \\ 
$\wedge$$\;\;\;\;$({\rm{label-cnt}}\,({\it{x\/}})\index{label-cnt} $=$ {\rm{label-cnt}}\,({\it{y\/}})\index{label-cnt}))\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  nearly-equal-cinfos-translate \\ \index{nearly-equal-cinfos-translate}
\=\+({\rm{cinfop}}\,({\it{cinfo1\/}})\index{cinfop} $\wedge$ {\rm{cinfop}}\,({\it{cinfo2\/}})\index{cinfop} $\wedge$ {\rm{nearly-equal-cinfos}}\,({\it{cinfo1\/}}, {\it{cinfo2\/}})\index{nearly-equal-cinfos}) \\ 
$\rightarrow$$\;\;\;\;${\rm{nearly-equal-cinfos}}\,(\=\+{\rm{translate}}\,({\it{cinfo1\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate}, \\ 
{\rm{translate}}\,({\it{cinfo2\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\-\index{nearly-equal-cinfos}\-
\end{tabbing}


\noindent{\sc Event}:   Disable nearly-equal-cinfos-translate.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  nullify-translate-leaves-nearly-equal \\ \index{nullify-translate-leaves-nearly!-equal}
\=\+{\rm{cinfop}}\,({\it{cinfo\/}})\index{cinfop} \\ 
$\rightarrow$$\;\;\;\;${\rm{nearly-equal-cinfos}}\,(\=\+{\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate}, \\ 
{\rm{translate}}\,({\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\-\index{nearly-equal-cinfos}\-
\end{tabbing} 


\noindent{\sc Event}:   Disable nullify-translate-leaves-nearly-equal.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  nullify-translate-idempotence \\ \index{nullify-translate-idempotence}
\=\+{\rm{cinfop}}\,({\it{cinfo\/}})\index{cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{nullify}}\,({\rm{translate}}\,({\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{nullify} \\ 
$=$$\;\;\;\;${\rm{nullify}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{nullify})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable nullify-translate-idempotence.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  nullify-translate-idempotence2 \\ \index{nullify-translate-idempotence2}
\=\+{\rm{cinfop}}\,({\it{cinfo\/}})\index{cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{nullify}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{nullify} \\ 
$=$$\;\;\;\;${\rm{nullify}}\,({\rm{translate}}\,({\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{nullify})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable nullify-translate-idempotence2.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  code-doesnt-affect-other-fields \\ \index{code-doesnt-affect-other-fields}
\=\+{\rm{cinfop}}\,({\it{cinfo\/}})\index{cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+(\=\+{\rm{label-alist}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{label-alist} \\ 
$=$$\;\;\;\;${\rm{label-alist}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{label-alist})\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{label-cnt}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{label-cnt} \\ 
$=$$\;\;\;\;${\rm{label-cnt}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{label-cnt})\-)\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable code-doesnt-affect-other-fields.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  add-code-doesnt-affect-other-fields \\ \index{add-code-doesnt-affect-other-fie!lds}
\=\+({\rm{label-alist}}\,({\rm{add-code}}\,({\it{cinfo\/}}, {\it{code\/}})\index{add-code})\index{label-alist} $=$ {\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}) \\ 
$\wedge$$\;\;\;\;$({\rm{label-cnt}}\,({\rm{add-code}}\,({\it{cinfo\/}}, {\it{code\/}})\index{add-code})\index{label-cnt} $=$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  set-label-alist-doesnt-affect-other-fields \\ \index{set-label-alist-doesnt-affect-ot!her-fields}
\=\+({\rm{code}}\,({\rm{set-label-alist}}\,({\it{cinfo\/}}, {\it{label-alist\/}})\index{set-label-alist})\index{code} $=$ {\rm{code}}\,({\it{cinfo\/}})\index{code}) \\ 
$\wedge$$\;\;\;\;$({\rm{label-cnt}}\,({\rm{set-label-alist}}\,({\it{cinfo\/}}, {\it{label-alist\/}})\index{set-label-alist})\index{label-cnt} $=$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  discard-label-doesnt-affect-other-fields \\ \index{discard-label-doesnt-affect-othe!r-fields}
\=\+({\rm{code}}\,({\rm{discard-label}}\,({\it{cinfo\/}})\index{discard-label})\index{code} $=$ {\rm{code}}\,({\it{cinfo\/}})\index{code}) \\ 
$\wedge$$\;\;\;\;$({\rm{label-cnt}}\,({\rm{discard-label}}\,({\it{cinfo\/}})\index{discard-label})\index{label-cnt} $=$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  nullify-cancels-add-code \\ \index{nullify-cancels-add-code}
{\rm{nullify}}\,({\rm{add-code}}\,({\it{cinfo\/}}, {\it{code\/}})\index{add-code})\index{nullify} $=$ {\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  code-add-code-commute \\ \index{code-add-code-commute}
{\rm{code}}\,({\rm{add-code}}\,({\it{cinfo\/}}, {\it{cd\/}})\index{add-code})\index{code} $=$ {\rm{append}}\,({\rm{code}}\,({\it{cinfo\/}})\index{code}, {\it{cd\/}})
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-alist-set-label-alist \\ \index{label-alist-set-label-alist}
{\rm{label-alist}}\,({\rm{set-label-alist}}\,({\it{state\/}}, {\it{label-alist\/}})\index{set-label-alist})\index{label-alist} $=$ {\it{label-alist\/}}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  nullify-doesnt-affect-proc-call-code \\ \index{nullify-doesnt-affect-proc-call!-code}
\=\+{\rm{proc-call-code}}\,({\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, {\it{stmt\/}}, {\it{cond-list\/}}, {\it{locals\/}}, {\it{k\/}})\index{proc-call-code} \\ 
$=$$\;\;\;\;${\rm{proc-call-code}}\,({\it{cinfo\/}}, {\it{stmt\/}}, {\it{cond-list\/}}, {\it{locals\/}}, {\it{k\/}})\index{proc-call-code}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  nullify-code-nil \\ \index{nullify-code-nil}
{\rm{code}}\,({\rm{nullify}}\,({\it{cinfo\/}})\index{nullify})\index{code} $=$ {\bf{nil}}
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{nullify-induction-hint} \\  
\=\+{\rm{nullify-induction-hint}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{nullify-induction-hint} \\ 
$=$$\;\;\;\;$\=\+{\bf case on }{\rm{car}}\,({\it{stmt\/}}): \\ 
{\bf case = }{\it{no-op-mg\/}} \\ 
{\bf then }{\bf{t}} \\ 
{\bf case = }{\it{signal-mg\/}} \\ 
{\bf $\;\;$then }{\bf{t}} \\ 
{\bf case = }{\it{prog2-mg\/}} \\ 
{\bf $\;\;$then }\=\+{\rm{nullify-induction-hint}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{nullify-induction-hint} \\ 
$\wedge$$\;\;\;\;${\rm{nullify-induction-hint}}\,(\=\+{\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-right-branch}}\,({\it{stmt\/}})\index{prog2-right-branch}, \\ 
{\it{proc-list\/}})\-\index{nullify-induction-hint} \\ 
$\wedge$$\;\;\;\;${\rm{nullify-induction-hint}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-right-branch}}\,({\it{stmt\/}})\index{prog2-right-branch}, \\ 
{\it{proc-list\/}})\-\index{nullify-induction-hint}\- \\ 
{\bf case = }{\it{loop-mg\/}} \\ 
{\bf $\;\;$then }\=\+{\rm{nullify-induction-hint}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,({\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}{\tt{no-op}}{\tt{)}})\-))\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}})\-\index{nullify-induction-hint} \\ 
$\wedge$$\;\;\;\;${\rm{nullify-induction-hint}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{list}}\,({\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}{\tt{no-op}}{\tt{)}})\-), \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}})\-\index{nullify-induction-hint}\- \\ 
{\bf case = }{\it{if-mg\/}} \\ 
{\bf $\;\;$then }\=\+{\rm{nullify-induction-hint}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{nullify-induction-hint} \\ 
$\wedge$$\;\;\;\;${\rm{nullify-induction-hint}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{nullify-induction-hint} \\ 
$\wedge$$\;\;\;\;${\rm{nullify-induction-hint}}\,(\=\+{\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}{\tt{no-op}}{\tt{)}})\-)\-)\-\index{add-code}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}})\-\index{nullify-induction-hint} \\ 
$\wedge$$\;\;\;\;${\rm{nullify-induction-hint}}\,(\=\+{\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}{\tt{no-op}}{\tt{)}})\-)\-)\-\index{add-code}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}})\-\index{nullify-induction-hint}\- \\ 
{\bf case = }{\it{begin-mg\/}} \\ 
{\bf $\;\;$then }\=\+{\rm{nullify-induction-hint}}\,(\=\+{\rm{add-code}}\,(\=\+{\rm{set-label-alist}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{append}}\,(\=\+{\rm{make-label-alist}}\,(\=\+{\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-label-alist}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-\index{set-label-alist}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{push-constant}} \\ 
{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{2}}{\tt{)}}{\tt{)}}\-)\-, \\ 
{\tt{'}}{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}})\-)\-\index{add-code}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{when-handler}}\,({\it{stmt\/}})\index{when-handler}, \\ 
{\it{proc-list\/}})\-\index{nullify-induction-hint} \\ 
$\wedge$$\;\;\;\;${\rm{nullify-induction-hint}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{append}}\,(\=\+{\rm{make-label-alist}}\,(\=\+{\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-label-alist}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}})\-\index{nullify-induction-hint} \\ 
$\wedge$$\;\;\;\;${\rm{nullify-induction-hint}}\,(\=\+{\rm{add-code}}\,(\=\+{\rm{set-label-alist}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{nullify}}\,({\rm{make-cinfo}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{append}}\,(\=\+{\rm{make-label-alist}}\,(\=\+{\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-label-alist}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-\index{set-label-alist}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\bf{nil}}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{push-constant}} \\ 
{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{2}}{\tt{)}}{\tt{)}}\-)\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{pop-global}} \\ 
{\tt{c-c}}{\tt{)}}\-)\-)\-\index{add-code}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{when-handler}}\,({\it{stmt\/}})\index{when-handler}, \\ 
{\it{proc-list\/}})\-\index{nullify-induction-hint}\- \\ 
{\bf case = }{\it{proc-call-mg\/}} \\ 
{\bf $\;\;$then }{\bf{t}} \\ 
{\bf case = }{\it{predefined-proc-call-mg\/}} \\ 
{\bf $\;\;$then }{\bf{t}} \\ 
{\bf otherwise }{\bf{f}}$\;${\bf  endcase}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  new-code-prog2-case-induction-hyps \\ \index{new-code-prog2-case-induction-h!yps}
\=\+(({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{prog2-mg}}) $\wedge$ {\rm{ok-cinfop}}\,({\it{cinfo\/}})\index{ok-cinfop}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{ok-cinfop} \\ 
$\wedge$$\;\;\;\;${\rm{ok-cinfop}}\,({\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{ok-cinfop})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable nullify.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  new-code-prog2-case \\ \index{new-code-prog2-case}
\=\+(\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{prog2-mg}}) \\ 
$\wedge$$\;\;\;\;${\rm{ok-cinfop}}\,({\it{cinfo\/}})\index{ok-cinfop} \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-right-branch}}\,({\it{stmt\/}})\index{prog2-right-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\- \\ 
$=$$\;\;\;\;${\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-right-branch}}\,({\it{stmt\/}})\index{prog2-right-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\-)\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-right-branch}}\,({\it{stmt\/}})\index{prog2-right-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\- \\ 
$=$$\;\;\;\;${\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-right-branch}}\,({\it{stmt\/}})\index{prog2-right-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\-)\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\it{cinfo\/}})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\- \\ 
$=$$\;\;\;\;${\rm{code}}\,({\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\-)\-)\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,({\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code})\- \\ 
$=$$\;\;\;\;${\rm{code}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  new-code-loop-case-induction-hyps \\ \index{new-code-loop-case-induction-hyp!s}
\=\+{\rm{ok-cinfop}}\,({\it{cinfo\/}})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\rm{make-cinfo}}\,(\=\+{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}})\-)\-), \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,({\tt{'}}{\tt{leave}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{ok-cinfop} \\ 
$\wedge$$\;\;\;\;${\rm{ok-cinfop}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}}\-)\-)\-))\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,({\tt{'}}{\tt{leave}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{ok-cinfop})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  new-code-loop-case \\ \index{new-code-loop-case}
\=\+(\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{loop-mg}}) \\ 
$\wedge$$\;\;\;\;${\rm{ok-cinfop}}\,({\it{cinfo\/}})\index{ok-cinfop} \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\rm{make-cinfo}}\,(\=\+{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}})\-)\-), \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,({\tt{'}}{\tt{leave}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\rm{make-cinfo}}\,(\=\+{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}})\-)\-), \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\rm{make-cinfo}}\,(\=\+{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-), \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\- \\ 
$=$$\;\;\;\;${\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-), \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\-)\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}})\-)\-))\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,({\tt{'}}{\tt{leave}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}}\-)\-)\-))\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-))\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\- \\ 
$=$$\;\;\;\;${\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-))\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\-)\-)\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,({\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code})\- \\ 
$=$$\;\;\;\;${\rm{code}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  new-code-if-case-induction-hyps \\ \index{new-code-if-case-induction-hyps}
\=\+{\rm{ok-cinfop}}\,({\it{cinfo\/}})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{jump}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}})\-)\-)\-)\-\index{add-code})\index{ok-cinfop} \\ 
$\wedge$$\;\;\;\;${\rm{ok-cinfop}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{jump}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}})\-)\-)\-)\-\index{add-code})\index{ok-cinfop} \\ 
$\wedge$$\;\;\;\;${\rm{ok-cinfop}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{ok-cinfop} \\ 
$\wedge$$\;\;\;\;${\rm{ok-cinfop}}\,({\rm{make-cinfo}}\,(\=\+{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{ok-cinfop})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  new-code-if-case \\ \index{new-code-if-case}
\=\+(\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{if-mg}}) \\ 
$\wedge$$\;\;\;\;${\rm{ok-cinfop}}\,({\it{cinfo\/}})\index{ok-cinfop} \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{jump}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}})\-)\-)\-)\-\index{add-code})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{jump}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}})\-)\-)\-)\-\index{add-code})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-)\-)\-\index{add-code})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\- \\ 
$=$$\;\;\;\;${\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}}\-)\-)\-)\-)\-\index{add-code}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\-)\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{jump}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}})\-)\-)\-)\-\index{add-code})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{jump}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}{\tt{nil}}{\tt{ }}{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}})\-)\-)\-)\-\index{add-code})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-)\-)\-\index{add-code})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\- \\ 
$=$$\;\;\;\;${\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}{\tt{no-op}}{\tt{)}}{\tt{)}}\-)\-)\-)\-)\-\index{add-code}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\-)\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\- \\ 
$=$$\;\;\;\;${\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\-)\- \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\rm{make-cinfo}}\,(\=\+{\rm{list}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{push-local}}, {\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition}), \\ 
{\tt{'}}{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\rm{make-cinfo}}\,(\=\+{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}{\tt{fetch-temp-stk}}{\tt{)}}, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{nullify}}\,({\rm{make-cinfo}}\,(\=\+{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\- \\ 
$=$$\;\;\;\;${\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\-)\-)\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,({\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code})\- \\ 
$=$$\;\;\;\;${\rm{code}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  new-code-begin-case-induction-hyps \\ \index{new-code-begin-case-induction-h!yps}
\=\+{\rm{ok-cinfop}}\,({\it{cinfo\/}})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\rm{add-code}}\,(\=\+{\rm{set-label-alist}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{nullify}}\,({\rm{make-cinfo}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{append}}\,(\=\+{\rm{make-label-alist}}\,(\=\+{\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-label-alist}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{nullify}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-\index{set-label-alist}, \\ 
{\rm{cons}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{jump}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{push-constant}} \\ 
{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{2}}{\tt{)}}{\tt{)}}\-{\tt{)}}\-)\-)\-, \\ 
{\tt{'}}{\tt{(}}{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}}{\tt{)}})\-)\-)\-\index{add-code})\index{ok-cinfop} \\ 
$\wedge$$\;\;\;\;${\rm{ok-cinfop}}\,({\rm{make-cinfo}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{append}}\,(\=\+{\rm{make-label-alist}}\,(\=\+{\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-label-alist}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{ok-cinfop} \\ 
$\wedge$$\;\;\;\;${\rm{ok-cinfop}}\,({\rm{add-code}}\,(\=\+{\rm{set-label-alist}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{append}}\,(\=\+{\rm{make-label-alist}}\,(\=\+{\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-label-alist}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-\index{set-label-alist}, \\ 
{\rm{cons}}\,(\=\+{\rm{list}}\,({\tt{'}}{\tt{jump}}, $1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}), \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{push-constant}} \\ 
{\tt{(}}{\tt{nat}}{\tt{ }}{\tt{2}}{\tt{)}}{\tt{)}}\-{\tt{)}}\-)\-)\-, \\ 
{\tt{'}}{\tt{(}}{\tt{(}}{\tt{pop-global}}{\tt{ }}{\tt{c-c}}{\tt{)}}{\tt{)}})\-)\-)\-\index{add-code})\index{ok-cinfop})\-\-
\end{tabbing}

%\item 
\begin{verbatim}


(prove-lemma new-code-begin-case (rewrite)
      (IMPLIES
	(AND
	  (equal (car STMT) 'BEGIN-MG)
	  (OK-CINFOP CINFO)
	  (IMPLIES
	    (OK-CINFOP
	      (ADD-CODE
		(SET-LABEL-ALIST
		  (TRANSLATE
		    (NULLIFY (MAKE-CINFO (CODE CINFO)
					 (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT) (LABEL-CNT CINFO))
						 (LABEL-ALIST CINFO))
					 (ADD1 (ADD1 (LABEL-CNT CINFO)))))
		    COND-LIST (BEGIN-BODY STMT) PROC-LIST)
		  (LABEL-ALIST CINFO))
		(CONS (LIST 'JUMP (ADD1 (LABEL-CNT CINFO)))
		      (CONS (CONS 'DL (CONS (LABEL-CNT CINFO) '(NIL (PUSH-CONSTANT (NAT 2)))))
			    '((POP-GLOBAL C-C))))))
	    (EQUAL
	      (APPEND
		(CODE
		  (ADD-CODE
		    (SET-LABEL-ALIST
		      (TRANSLATE
			(NULLIFY (MAKE-CINFO (CODE CINFO)
					     (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
								       (LABEL-CNT CINFO))
						     (LABEL-ALIST CINFO))
					     (ADD1 (ADD1 (LABEL-CNT CINFO)))))
			COND-LIST
			(BEGIN-BODY STMT)
			PROC-LIST)
		      (LABEL-ALIST CINFO))
		    (CONS (LIST 'JUMP (ADD1 (LABEL-CNT CINFO)))
			  (CONS (CONS 'DL
				      (CONS (LABEL-CNT CINFO)
					    '(NIL (PUSH-CONSTANT (NAT 2)))))
				'((POP-GLOBAL C-C))))))
		(CODE
		  (TRANSLATE
		    (NULLIFY
		      (ADD-CODE
			(SET-LABEL-ALIST
			  (TRANSLATE
			    (NULLIFY (MAKE-CINFO (CODE CINFO)
						 (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
									   (LABEL-CNT CINFO))
							 (LABEL-ALIST CINFO))
						 (ADD1 (ADD1 (LABEL-CNT CINFO)))))
			    COND-LIST
			    (BEGIN-BODY STMT)
			    PROC-LIST)
			  (LABEL-ALIST CINFO))
			(CONS (LIST 'JUMP (ADD1 (LABEL-CNT CINFO)))
			      (CONS (CONS 'DL
					  (CONS (LABEL-CNT CINFO)
						'(NIL (PUSH-CONSTANT (NAT 2)))))
				    '((POP-GLOBAL C-C))))))
		    COND-LIST
		    (WHEN-HANDLER STMT)
		    PROC-LIST)))
	      (CODE
		(TRANSLATE
		  (ADD-CODE
		    (SET-LABEL-ALIST
		      (TRANSLATE
			(NULLIFY (MAKE-CINFO (CODE CINFO)
					     (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
								       (LABEL-CNT CINFO))
						     (LABEL-ALIST CINFO))
					     (ADD1 (ADD1 (LABEL-CNT CINFO)))))
			COND-LIST
			(BEGIN-BODY STMT)
			PROC-LIST)
		      (LABEL-ALIST CINFO))
		    (CONS (LIST 'JUMP (ADD1 (LABEL-CNT CINFO)))
			  (CONS (CONS 'DL
				      (CONS (LABEL-CNT CINFO)
					    '(NIL (PUSH-CONSTANT (NAT 2)))))
				'((POP-GLOBAL C-C)))))
		  COND-LIST
		  (WHEN-HANDLER STMT)
		  PROC-LIST))))
	  (IMPLIES
	    (OK-CINFOP (MAKE-CINFO (CODE CINFO)
				   (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT) (LABEL-CNT CINFO))
					   (LABEL-ALIST CINFO))
				   (ADD1 (ADD1 (LABEL-CNT CINFO)))))
	    (EQUAL
	      (APPEND
		(CODE (MAKE-CINFO (CODE CINFO)
				  (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT) (LABEL-CNT CINFO))
					  (LABEL-ALIST CINFO))
				  (ADD1 (ADD1 (LABEL-CNT CINFO)))))
		(CODE
		  (TRANSLATE
		    (NULLIFY (MAKE-CINFO (CODE CINFO)
					 (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT) (LABEL-CNT CINFO))
						 (LABEL-ALIST CINFO))
					 (ADD1 (ADD1 (LABEL-CNT CINFO)))))
		    COND-LIST (BEGIN-BODY STMT) PROC-LIST)))
	      (CODE (TRANSLATE (MAKE-CINFO (CODE CINFO)
					   (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT) (LABEL-CNT CINFO))
						   (LABEL-ALIST CINFO))
					   (ADD1 (ADD1 (LABEL-CNT CINFO))))
			       COND-LIST (BEGIN-BODY STMT) PROC-LIST))))
	  (IMPLIES
	    (OK-CINFOP
	      (ADD-CODE
		(SET-LABEL-ALIST
		  (TRANSLATE (MAKE-CINFO (CODE CINFO)
					 (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT) (LABEL-CNT CINFO))
						 (LABEL-ALIST CINFO))
					 (ADD1 (ADD1 (LABEL-CNT CINFO))))
			     COND-LIST (BEGIN-BODY STMT) PROC-LIST)
		  (LABEL-ALIST CINFO))
		(CONS (LIST 'JUMP (ADD1 (LABEL-CNT CINFO)))
		      (CONS (CONS 'DL (CONS (LABEL-CNT CINFO) '(NIL (PUSH-CONSTANT (NAT 2)))))
			    '((POP-GLOBAL C-C))))))
	    (EQUAL
	      (APPEND
		(CODE
		  (ADD-CODE
		    (SET-LABEL-ALIST
		      (TRANSLATE (MAKE-CINFO (CODE CINFO)
					     (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
								       (LABEL-CNT CINFO))
						     (LABEL-ALIST CINFO))
					     (ADD1 (ADD1 (LABEL-CNT CINFO))))
				 COND-LIST
				 (BEGIN-BODY STMT)
				 PROC-LIST)
		      (LABEL-ALIST CINFO))
		    (CONS (LIST 'JUMP (ADD1 (LABEL-CNT CINFO)))
			  (CONS (CONS 'DL
				      (CONS (LABEL-CNT CINFO)
					    '(NIL (PUSH-CONSTANT (NAT 2)))))
				'((POP-GLOBAL C-C))))))
		(CODE
		  (TRANSLATE
		    (NULLIFY
		      (ADD-CODE
			(SET-LABEL-ALIST
			  (TRANSLATE (MAKE-CINFO (CODE CINFO)
						 (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
									   (LABEL-CNT CINFO))
							 (LABEL-ALIST CINFO))
						 (ADD1 (ADD1 (LABEL-CNT CINFO))))
				     COND-LIST
				     (BEGIN-BODY STMT)
				     PROC-LIST)
			  (LABEL-ALIST CINFO))
			(CONS (LIST 'JUMP (ADD1 (LABEL-CNT CINFO)))
			      (CONS (CONS 'DL
					  (CONS (LABEL-CNT CINFO)
						'(NIL (PUSH-CONSTANT (NAT 2)))))
				    '((POP-GLOBAL C-C))))))
		    COND-LIST
		    (WHEN-HANDLER STMT)
		    PROC-LIST)))
	      (CODE
		(TRANSLATE
		  (ADD-CODE
		    (SET-LABEL-ALIST
		      (TRANSLATE (MAKE-CINFO (CODE CINFO)
					     (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
								       (LABEL-CNT CINFO))
						     (LABEL-ALIST CINFO))
					     (ADD1 (ADD1 (LABEL-CNT CINFO))))
				 COND-LIST
				 (BEGIN-BODY STMT)
				 PROC-LIST)
		      (LABEL-ALIST CINFO))
		    (CONS (LIST 'JUMP (ADD1 (LABEL-CNT CINFO)))
			  (CONS (CONS 'DL
				      (CONS (LABEL-CNT CINFO)
					    '(NIL (PUSH-CONSTANT (NAT 2)))))
				'((POP-GLOBAL C-C)))))
		  COND-LIST
		  (WHEN-HANDLER STMT)
		  PROC-LIST)))))
	(EQUAL (APPEND (CODE CINFO)
		       (CODE (TRANSLATE (NULLIFY CINFO)
					COND-LIST STMT PROC-LIST)))
	       (CODE (TRANSLATE CINFO COND-LIST STMT PROC-LIST))))
    ((INSTRUCTIONS (disable add-code set-label-alist)
       PROMOTE (DEMOTE 3) (DIVE 1 1) (REWRITE NEW-CODE-BEGIN-CASE-INDUCTION-HYPS) UP S TOP PROMOTE
       (DEMOTE 3) (DIVE 1 1) (REWRITE NEW-CODE-BEGIN-CASE-INDUCTION-HYPS) UP S TOP PROMOTE
       (DEMOTE 3) (DIVE 1 1) (REWRITE NEW-CODE-BEGIN-CASE-INDUCTION-HYPS) UP S TOP PROMOTE
       (DIVE 2 1) (REWRITE BEGIN-TRANSLATION) UP (REWRITE CODE-ADD-CODE-COMMUTE) (DIVE 1) = (DROP 5)
       UP (REWRITE ASSOCIATIVITY-OF-APPEND) (DIVE 1) (REWRITE CODE-ADD-CODE-COMMUTE) (DIVE 1)
       (REWRITE SET-LABEL-ALIST-DOESNT-AFFECT-OTHER-FIELDS) = (DROP 4) UP
       (REWRITE ASSOCIATIVITY-OF-APPEND) UP (REWRITE ASSOCIATIVITY-OF-APPEND) TOP (REWRITE APPEND-REWRITE2)
       (DIVE 1 1) (REWRITE BEGIN-TRANSLATION) UP (REWRITE CODE-ADD-CODE-COMMUTE) (DIVE 1) (S-PROP NULLIFY)
       S TOP (DEMOTE 3) (DIVE 1 2) (S-PROP NULLIFY) S TOP PROMOTE (DIVE 1 1) = (DROP 3) TOP
       (BASH (ENABLE NULLIFY ADD-CODE TRANSLATE-PRESERVES-FIELDS APPEND-REWRITE2 SET-LABEL-ALIST))
       PROMOTE (DIVE 2 1 1) (DIVE 1 3) (REWRITE CODE-DOESNT-AFFECT-OTHER-FIELDS) 
       TOP (PROVE (ENABLE NULLIFY)))))
\end{verbatim}


\begin{tabbing}{\sc Theorem}:  new-code-appended-to-old \\ \index{new-code-appended-to-old}
\=\+{\rm{ok-cinfop}}\,({\it{cinfo\/}})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,({\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code})\- \\ 
$=$$\;\;\;\;${\rm{code}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable new-code-appended-to-old.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  new-code-appended-to-old1 \\ \index{new-code-appended-to-old1}
\=\+{\rm{ok-cinfop}}\,({\it{cinfo\/}})\index{ok-cinfop} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{code}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code} \\ 
$=$$\;\;\;\;${\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{code}}\,({\rm{translate}}\,({\rm{nullify}}\,({\it{cinfo\/}})\index{nullify}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code})\-)\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable new-code-appended-to-old1.

\addvspace{18pt}

\begin{tabbing}{\sc Definition}:\index{collect-labels} \\  
\=\+{\rm{collect-labels}}\,({\it{codelist\/}})\index{collect-labels} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{codelist\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{nil}} \\ 
{\bf elseif }{\rm{caar}}\,({\it{codelist\/}}) $=$ {\tt{'}}{\tt{dl}} \\ 
{\bf then }{\rm{cons}}\,({\rm{cadar}}\,({\it{codelist\/}}), {\rm{collect-labels}}\,({\rm{cdr}}\,({\it{codelist\/}}))\index{collect-labels}) \\ 
{\bf else }{\rm{collect-labels}}\,({\rm{cdr}}\,({\it{codelist\/}}))\index{collect-labels}$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  collect-labels-plistp \\ \index{collect-labels-plistp}
{\rm{plistp}}\,({\rm{collect-labels}}\,({\it{lst\/}})\index{collect-labels})\index{plistp}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  collect-labels-distributes \\ \index{collect-labels-distributes}
\=\+{\rm{collect-labels}}\,({\rm{append}}\,({\it{code1\/}}, {\it{code2\/}}))\index{collect-labels} \\ 
$=$$\;\;\;\;${\rm{append}}\,({\rm{collect-labels}}\,({\it{code1\/}})\index{collect-labels}, {\rm{collect-labels}}\,({\it{code2\/}})\index{collect-labels})\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{all-labels-unique} \\  
{\rm{all-labels-unique}}\,({\it{codelist\/}})\index{all-labels-unique} $=$ {\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\it{codelist\/}})\index{collect-labels})\index{no-duplicates}
\end{tabbing}


\noindent{\sc Event}:   Disable all-labels-unique.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  all-labels-unique-append \\ \index{all-labels-unique-append}
\=\+{\rm{all-labels-unique}}\,({\rm{append}}\,({\it{x\/}}, {\it{y\/}}))\index{all-labels-unique} \\ 
$\rightarrow$$\;\;\;\;$({\rm{all-labels-unique}}\,({\it{x\/}})\index{all-labels-unique} $\wedge$ {\rm{all-labels-unique}}\,({\it{y\/}})\index{all-labels-unique})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  all-labels-unique-reduction \\ \index{all-labels-unique-reduction}
($\neg$ {\rm{all-labels-unique}}\,({\it{y\/}})\index{all-labels-unique}) $\rightarrow$ ($\neg$ {\rm{all-labels-unique}}\,({\rm{append}}\,({\it{x\/}}, {\it{y\/}}))\index{all-labels-unique})
\end{tabbing}


\noindent{\sc Event}:   Disable all-labels-unique-reduction.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  all-labels-unique-reduction2 \\ \index{all-labels-unique-reduction2}
($\neg$ {\rm{all-labels-unique}}\,({\it{y\/}})\index{all-labels-unique}) $\rightarrow$ ($\neg$ {\rm{all-labels-unique}}\,({\rm{cons}}\,({\it{x\/}}, {\it{y\/}}))\index{all-labels-unique})
\end{tabbing}


\noindent{\sc Event}:   Disable all-labels-unique-reduction2.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  find-labelp-rewrites-to-member \\ \index{find-labelp-rewrites-to-member}
{\rm{find-labelp}}\,({\it{lab\/}}, {\it{code\/}})\index{find-labelp} $=$ ({\it{lab\/}} $\in$ {\rm{collect-labels}}\,({\it{code\/}})\index{collect-labels})
\end{tabbing}


\noindent{\sc Event}:   Disable find-labelp-rewrites-to-member.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  all-labels-unique-reduction3 \\ \index{all-labels-unique-reduction3}
\=\+({\rm{find-labelp}}\,({\it{lab\/}}, {\it{code1\/}})\index{find-labelp} $\wedge$ {\rm{find-labelp}}\,({\it{lab\/}}, {\it{code2\/}})\index{find-labelp}) \\ 
$\rightarrow$$\;\;\;\;$($\neg$ {\rm{all-labels-unique}}\,({\rm{append}}\,({\it{code1\/}}, {\it{code2\/}}))\index{all-labels-unique})\-
\end{tabbing}


\noindent{\sc Event}:   Disable all-labels-unique-reduction3.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  no-duplicates-append-list \\ \index{no-duplicates-append-list}
\=\+{\rm{no-duplicates}}\,({\rm{append}}\,({\it{lst\/}}, {\rm{cons}}\,({\it{x\/}}, {\rm{cons}}\,({\it{y\/}}, {\it{lst2\/}}))))\index{no-duplicates} \\ 
$\rightarrow$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{append}}\,({\it{lst\/}}, {\rm{list}}\,({\it{y\/}})))\index{no-duplicates}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  no-duplicates-append-list2 \\ \index{no-duplicates-append-list2}
\=\+{\rm{no-duplicates}}\,({\rm{append}}\,({\it{lst\/}}, {\rm{cons}}\,({\it{y\/}}, {\it{lst2\/}})))\index{no-duplicates} \\ 
$\rightarrow$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{append}}\,({\it{lst\/}}, {\rm{list}}\,({\it{y\/}})))\index{no-duplicates}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  labels-unique-append2 \\ \index{labels-unique-append2}
\=\+{\rm{all-labels-unique}}\,({\rm{append}}\,({\it{lst1\/}}, {\rm{cons}}\,({\it{x\/}}, {\rm{cons}}\,({\it{y\/}}, {\it{lst2\/}}))))\index{all-labels-unique} \\ 
$\rightarrow$$\;\;\;\;${\rm{all-labels-unique}}\,({\rm{append}}\,({\it{lst1\/}}, {\rm{list}}\,({\it{y\/}})))\index{all-labels-unique}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  find-labelp-member-collect-labels \\ \index{find-labelp-member-collect-labe!ls}
{\rm{find-labelp}}\,({\it{x\/}}, {\it{code\/}})\index{find-labelp} $\rightarrow$ ({\it{x\/}} $\in$ {\rm{collect-labels}}\,({\it{code\/}})\index{collect-labels})
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{label-hole-big-enough} \\  
\=\+{\rm{label-hole-big-enough}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}}, {\it{y\/}})\index{label-hole-big-enough} \\ 
$=$$\;\;\;\;${\rm{all-labels-unique}}\,({\rm{append}}\,(\=\+{\rm{code}}\,({\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code}, \\ 
{\it{y\/}})\-)\index{all-labels-unique}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  labels-unique-not-find-labelp \\ \index{labels-unique-not-find-labelp}
\=\+({\rm{all-labels-unique}}\,({\rm{append}}\,({\it{code1\/}}, {\it{code2\/}}))\index{all-labels-unique} $\wedge$ {\rm{find-labelp}}\,({\it{label\/}}, {\it{code2\/}})\index{find-labelp}) \\ 
$\rightarrow$$\;\;\;\;$($\neg$ {\rm{find-labelp}}\,({\it{label\/}}, {\it{code1\/}})\index{find-labelp})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  labels-unique-not-find-labelp1 \\ \index{labels-unique-not-find-labelp1}
\=\+{\rm{all-labels-unique}}\,({\rm{append}}\,({\it{lst\/}}, {\rm{list}}\,({\rm{list}}\,({\tt{'}}{\tt{dl}}, {\it{label\/}}, {\bf{nil}}, {\it{w\/}}))))\index{all-labels-unique} \\ 
$\rightarrow$$\;\;\;\;$({\rm{find-labelp}}\,({\it{label\/}}, {\it{lst\/}})\index{find-labelp} $=$ {\bf{f}})\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{ok-cond-list} \\  
\=\+{\rm{ok-cond-list}}\,({\it{lst\/}})\index{ok-cond-list} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{lst\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\it{lst\/}} $=$ {\bf{nil}} \\ 
{\bf else }\=\+(\=\+{\rm{ok-mg-namep}}\,({\rm{car}}\,({\it{lst\/}}))\index{ok-mg-namep} \\ 
$\vee$$\;\;\;\;$({\rm{car}}\,({\it{lst\/}}) $\in$ {\tt{'}}{\tt{(}}{\tt{leave}}{\tt{ }}{\tt{routineerror}}{\tt{)}}))\- \\ 
$\wedge$$\;\;\;\;${\rm{ok-cond-list}}\,({\rm{cdr}}\,({\it{lst\/}}))\index{ok-cond-list}\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  identifier-plistp-make-cond-list-ok \\ \index{identifier-plistp-make-cond-list!-ok}
{\rm{identifier-plistp}}\,({\it{lst\/}})\index{identifier-plistp} $\rightarrow$ {\rm{ok-cond-list}}\,({\it{lst\/}})\index{ok-cond-list}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  make-cond-list-ok \\ \index{make-cond-list-ok}
\=\+(\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{proc-call-mg}}) \\ 
$\wedge$$\;\;\;\;${\rm{ok-mg-statement}}\,({\it{stmt\/}}, {\it{cond-list\/}}, {\it{name-alist\/}}, {\it{proc-list\/}})\index{ok-mg-statement} \\ 
$\wedge$$\;\;\;\;${\rm{ok-mg-def-plistp}}\,({\it{proc-list\/}})\index{ok-mg-def-plistp})\- \\ 
$\rightarrow$$\;\;\;\;${\rm{ok-cond-list}}\,({\rm{make-cond-list}}\,({\rm{fetch-called-def}}\,({\it{stmt\/}}, {\it{proc-list\/}})\index{fetch-called-def})\index{make-cond-list})\index{ok-cond-list}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  cond-subsetp-preserves-ok-mg-statep \\ \index{cond-subsetp-preserves-ok-mg-st!atep}
\=\+(\=\+{\rm{cond-subsetp}}\,({\it{r-cond-list\/}}, {\it{t-cond-list\/}})\index{cond-subsetp} \\ 
$\wedge$$\;\;\;\;$({\rm{cc}}\,({\it{mg-state\/}})\index{cc} $\not=$ {\tt{'}}{\tt{leave}}) \\ 
$\wedge$$\;\;\;\;${\rm{ok-mg-statep}}\,({\it{mg-state\/}}, {\it{r-cond-list\/}})\index{ok-mg-statep})\- \\ 
$\rightarrow$$\;\;\;\;${\rm{ok-mg-statep}}\,({\it{mg-state\/}}, {\it{t-cond-list\/}})\index{ok-mg-statep}\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{ok-translation-parameters} \\  
\=\+{\rm{ok-translation-parameters}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}}, {\it{y\/}})\index{ok-translation-parameters} \\ 
$=$$\;\;\;\;$(\=\+{\rm{ok-cinfop}}\,({\it{cinfo\/}})\index{ok-cinfop} \\ 
$\wedge$$\;\;\;\;${\rm{ok-cond-list}}\,({\it{cond-list\/}})\index{ok-cond-list} \\ 
$\wedge$$\;\;\;\;${\rm{label-hole-big-enough}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}}, {\it{y\/}})\index{label-hole-big-enough})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-monotonic \\ \index{label-cnt-monotonic}
{\rm{label-cnt}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{label-cnt} $\not<$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-monotonic2 \\ \index{label-cnt-monotonic2}
\=\+({\it{n\/}} $<$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}) \\ 
$\rightarrow$$\;\;\;\;$({\it{n\/}} $<$ {\rm{label-cnt}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{label-cnt})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-monotonic3 \\ \index{label-cnt-monotonic3}
\=\+({\it{n\/}} $<$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}) \\ 
$\rightarrow$$\;\;\;\;$(({\it{n\/}} $<$ {\rm{label-cnt}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{label-cnt}) $=$ {\bf{t}})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-add1-add1-monotonic \\ \index{label-cnt-add1-add1-monotonic}
\=\+(({\it{n\/}} $<$ {\it{lc\/}}) $\wedge$ ({\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt} $=$ ($1\;+$ ($1\;+$ {\it{lc\/}})))) \\ 
$\rightarrow$$\;\;\;\;$(({\it{n\/}} $<$ {\rm{label-cnt}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{label-cnt}) $=$ {\bf{t}})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-monotonic-cond-conversion \\ \index{label-cnt-monotonic-cond-conver!sion}
\=\+({\it{n\/}} $<$ {\it{lc\/}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{find-labelp}}\,({\it{n\/}}, {\rm{cond-conversion}}\,({\it{actual-conds\/}}, {\it{lc\/}}, {\it{cond-list\/}}, {\it{label-alist\/}})\index{cond-conversion})\index{find-labelp} \\ 
$=$$\;\;\;\;${\bf{f}})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  not-find-labelp-push-parameters-code \\ \index{not-find-labelp-push-parameters!-code}
{\rm{find-labelp}}\,({\it{n\/}}, {\rm{push-parameters-code}}\,({\it{locals\/}}, {\it{actuals\/}})\index{push-parameters-code})\index{find-labelp} $=$ {\bf{f}}
\end{tabbing}


\noindent{\sc Event}:   Disable not-find-labelp-push-parameters-code.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  find-labelp-monotonic-lessp \\ \index{find-labelp-monotonic-lessp}
\=\+(({\it{n\/}} $<$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}) $\wedge$ ($\neg$ {\rm{find-labelp}}\,({\it{n\/}}, {\rm{code}}\,({\it{cinfo\/}})\index{code})\index{find-labelp})) \\ 
$\rightarrow$$\;\;\;\;$({\rm{find-labelp}}\,({\it{n\/}}, {\rm{code}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code})\index{find-labelp} $=$ {\bf{f}})\-
\end{tabbing}

\begin{verbatim};; The following definition is used only in the proof of procedure-calls. 

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{label-cnt-big-enough} \\  
\=\+{\rm{label-cnt-big-enough}}\,({\it{lc\/}}, {\it{code\/}})\index{label-cnt-big-enough} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{code\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{t}} \\ 
{\bf elseif }{\rm{caar}}\,({\it{code\/}}) $=$ {\tt{'}}{\tt{dl}} \\ 
{\bf then }({\rm{cadar}}\,({\it{code\/}}) $<$ {\it{lc\/}}) $\wedge$ {\rm{label-cnt-big-enough}}\,({\it{lc\/}}, {\rm{cdr}}\,({\it{code\/}}))\index{label-cnt-big-enough} \\ 
{\bf else }{\rm{label-cnt-big-enough}}\,({\it{lc\/}}, {\rm{cdr}}\,({\it{code\/}}))\index{label-cnt-big-enough}$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{cond-conversion-induction-hint} \\  
\=\+{\rm{cond-conversion-induction-hint}}\,({\it{lst\/}}, {\it{n\/}})\index{cond-conversion-induction-hint} \\ 
$=$$\;\;\;\;$\=\+{\bf if }{\it{lst\/}} $\simeq\;${{\bf{nil}}}${}$$\;\;${\bf then }{\bf{t}} \\ 
{\bf else }{\rm{cond-conversion-induction-hint}}\,({\rm{cdr}}\,({\it{lst\/}}), $1\;+$ {\it{n\/}})\index{cond-conversion-induction-hint}$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-count-big-enough-not-find-labelp \\ \index{label-count-big-enough-not-find!-labelp}
{\rm{label-cnt-big-enough}}\,({\it{lc\/}}, {\it{code\/}})\index{label-cnt-big-enough} $\rightarrow$ ({\rm{find-labelp}}\,({\it{lc\/}}, {\it{code\/}})\index{find-labelp} $=$ {\bf{f}})
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  greater-label-count-big-enough \\ \index{greater-label-count-big-enough}
\=\+({\rm{label-cnt-big-enough}}\,({\it{n\/}}, {\it{code\/}})\index{label-cnt-big-enough} $\wedge$ ({\it{n\/}} $\leq$ {\it{m\/}})) \\ 
$\rightarrow$$\;\;\;\;${\rm{label-cnt-big-enough}}\,({\it{m\/}}, {\it{code\/}})\index{label-cnt-big-enough}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-big-enough-distributes \\ \index{label-cnt-big-enough-distribute!s}
\=\+{\rm{label-cnt-big-enough}}\,({\it{lc\/}}, {\rm{append}}\,({\it{lst1\/}}, {\it{lst2\/}}))\index{label-cnt-big-enough} \\ 
$=$$\;\;\;\;$({\rm{label-cnt-big-enough}}\,({\it{lc\/}}, {\it{lst1\/}})\index{label-cnt-big-enough} $\wedge$ {\rm{label-cnt-big-enough}}\,({\it{lc\/}}, {\it{lst2\/}})\index{label-cnt-big-enough})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-lessp1 \\ \index{label-cnt-lessp1}
\=\+({\it{n\/}} $<$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}) \\ 
$\rightarrow$$\;\;\;\;$(({\it{n\/}} $<$ {\rm{label-cnt}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{label-cnt}) $=$ {\bf{t}})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-big-enough-distributes2 \\ \index{label-cnt-big-enough-distribute!s2}
\=\+({\rm{label-cnt-big-enough}}\,({\it{n\/}}, {\it{lst1\/}})\index{label-cnt-big-enough} $\wedge$ {\rm{label-cnt-big-enough}}\,({\it{n\/}}, {\it{lst2\/}})\index{label-cnt-big-enough}) \\ 
$\rightarrow$$\;\;\;\;${\rm{label-cnt-big-enough}}\,({\it{n\/}}, {\rm{append}}\,({\it{lst1\/}}, {\it{lst2\/}}))\index{label-cnt-big-enough}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-big-enough-for-push-actuals-code \\ \index{label-cnt-big-enough-for-push-a!ctuals-code}
{\rm{label-cnt-big-enough}}\,({\it{n\/}}, {\rm{push-actuals-code}}\,({\it{actuals\/}})\index{push-actuals-code})\index{label-cnt-big-enough}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-big-enough-for-push-local-array-values-code \\ \index{label-cnt-big-enough-for-push-l!ocal-array-values-code}
{\rm{label-cnt-big-enough}}\,({\it{n\/}}, {\rm{push-local-array-values-code}}\,({\it{array-value\/}})\index{push-local-array-values-code})\index{label-cnt-big-enough}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-big-enough-for-push-locals-values-code \\ \index{label-cnt-big-enough-for-push-l!ocals-values-code}
{\rm{label-cnt-big-enough}}\,({\it{n\/}}, {\rm{push-locals-values-code}}\,({\it{actuals\/}})\index{push-locals-values-code})\index{label-cnt-big-enough}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-big-enough-for-push-locals-addresses-code \\ \index{label-cnt-big-enough-for-push-l!ocals-addresses-code}
{\rm{label-cnt-big-enough}}\,({\it{n\/}}, {\rm{push-locals-addresses-code}}\,({\it{actuals\/}}, {\it{m\/}})\index{push-locals-addresses-code})\index{label-cnt-big-enough}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-big-enough-for-cond-conversion \\ \index{label-cnt-big-enough-for-cond-c!onversion}
{\rm{label-cnt-big-enough}}\,(\=\+{\it{lc\/}} $+$ ($1\;+$ ($1\;+$ {\rm{length}}\,({\it{lst\/}})\index{length})), \\ 
{\rm{cond-conversion}}\,({\it{lst\/}}, $1\;+$ ($1\;+$ {\it{lc\/}}), {\it{cond-list\/}}, {\it{label-alist\/}})\index{cond-conversion})\-\index{label-cnt-big-enough}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-big-enough-for-proc-call-code \\ \index{label-cnt-big-enough-for-proc-c!all-code}
\=\+{\rm{label-cnt-big-enough}}\,({\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, {\rm{code}}\,({\it{cinfo\/}})\index{code})\index{label-cnt-big-enough} \\ 
$\rightarrow$$\;\;\;\;${\rm{label-cnt-big-enough}}\,(\=\+\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt} \\ 
$+$$\;\;\;\;$($1\;+$ ($1\;+$ {\rm{length}}\,({\rm{call-conds}}\,({\it{stmt\/}})\index{call-conds})\index{length}))\-, \\ 
{\rm{proc-call-code}}\,({\it{cinfo\/}}, {\it{stmt\/}}, {\it{cond-list\/}}, {\it{locals\/}}, {\it{k\/}})\index{proc-call-code})\-\index{label-cnt-big-enough}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-big-enough-for-predefined-proc-call-code \\ \index{label-cnt-big-enough-for-predefi!ned-proc-call-code}
{\rm{label-cnt-big-enough}}\,({\it{n\/}}, {\rm{predefined-proc-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{predefined-proc-call-sequence})\index{label-cnt-big-enough}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-stays-big-enough \\ \index{label-cnt-stays-big-enough}
\=\+{\rm{label-cnt-big-enough}}\,({\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, {\rm{code}}\,({\it{cinfo\/}})\index{code})\index{label-cnt-big-enough} \\ 
$\rightarrow$$\;\;\;\;${\rm{label-cnt-big-enough}}\,(\=\+{\rm{label-cnt}}\,({\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{label-cnt}, \\ 
{\rm{code}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code})\-\index{label-cnt-big-enough}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  label-cnt-big-enough-add1 \\ \index{label-cnt-big-enough-add1}
{\rm{label-cnt-big-enough}}\,({\it{x\/}}, {\it{y\/}})\index{label-cnt-big-enough} $\rightarrow$ {\rm{label-cnt-big-enough}}\,($1\;+$ {\it{x\/}}, {\it{y\/}})\index{label-cnt-big-enough}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  lesser-label-doesnt-disturb-no-duplicates \\ \index{lesser-label-doesnt-disturb-no-!duplicates}
({\rm{no-duplicates}}\,({\it{lst\/}})\index{no-duplicates} $\wedge$ ({\it{x\/}} $\not\in$ {\it{lst\/}})) $\rightarrow$ {\rm{no-duplicates}}\,({\rm{append}}\,({\it{lst\/}}, {\rm{list}}\,({\it{x\/}})))\index{no-duplicates}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  find-labelp-reduces-to-member \\ \index{find-labelp-reduces-to-member}
{\rm{find-labelp}}\,({\it{x\/}}, {\it{lst\/}})\index{find-labelp} $=$ ({\it{x\/}} $\in$ {\rm{collect-labels}}\,({\it{lst\/}})\index{collect-labels})
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  member-labels-unique-not-find-labelp \\ \index{member-labels-unique-not-find-l!abelp}
\=\+({\rm{all-labels-unique}}\,({\rm{append}}\,({\it{code\/}}, {\it{code2\/}}))\index{all-labels-unique} $\wedge$ {\rm{find-labelp}}\,({\it{label\/}}, {\it{code2\/}})\index{find-labelp}) \\ 
$\rightarrow$$\;\;\;\;$($\neg$ {\rm{find-labelp}}\,({\it{label\/}}, {\it{code\/}})\index{find-labelp})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  no-duplicates-right-cons-reduction \\ \index{no-duplicates-right-cons-reducti!on}
\=\+{\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\it{lst\/}})\index{collect-labels})\index{no-duplicates} \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{no-duplicates}}\,({\rm{append}}\,({\rm{collect-labels}}\,({\it{lst\/}})\index{collect-labels}, {\rm{list}}\,({\it{x\/}})))\index{no-duplicates} \\ 
$=$$\;\;\;\;$($\neg$ {\rm{find-labelp}}\,({\it{x\/}}, {\it{lst\/}})\index{find-labelp}))\-\-
\end{tabbing}


\begin{tabbing}{\sc Theorem}:  label-cnt-big-enough-not-find-labelp \\ \index{label-cnt-big-enough-not-find-l!abelp}
{\rm{label-cnt-big-enough}}\,({\it{lc\/}}, {\it{code\/}})\index{label-cnt-big-enough} $\rightarrow$ ({\rm{find-labelp}}\,({\it{lc\/}}, {\it{code\/}})\index{find-labelp} $=$ {\bf{f}})
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  not-member-cond-conversion \\ \index{not-member-cond-conversion}
\=\+({\it{n\/}} $<$ {\it{lc\/}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+({\it{n\/}} $\in$ {\rm{collect-labels}}\,({\rm{cond-conversion}}\,({\it{conds\/}}, {\it{lc\/}}, {\it{cond-list\/}}, {\it{label-alist\/}})\index{cond-conversion})\index{collect-labels}) \\ 
$=$$\;\;\;\;${\bf{f}})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  no-duplicates-cond-conversion \\ \index{no-duplicates-cond-conversion}
{\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{cond-conversion}}\,({\it{conds\/}}, {\it{lc\/}}, {\it{cond-list\/}}, {\it{label-alist\/}})\index{cond-conversion})\index{collect-labels})\index{no-duplicates}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  no-duplicates-cond-conversion-base-case \\ \index{no-duplicates-cond-conversion-b!ase-case}
{\rm{no-duplicates}}\,({\rm{append}}\,(\=\+{\rm{collect-labels}}\,({\rm{cond-conversion}}\,(\=\+{\it{conds\/}}, \\ 
$1\;+$ ($1\;+$ {\it{lc\/}}), \\ 
{\it{cond-list\/}}, \\ 
{\it{label-alist\/}})\-\index{cond-conversion})\index{collect-labels}, \\ 
{\rm{list}}\,($1\;+$ {\it{lc\/}}))\-)\index{no-duplicates}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  no-duplicates-proc-call \\ \index{no-duplicates-proc-call}
\=\+({\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\it{code\/}})\index{collect-labels})\index{no-duplicates} $\wedge$ {\rm{label-cnt-big-enough}}\,({\it{lc\/}}, {\it{code\/}})\index{label-cnt-big-enough}) \\ 
$\rightarrow$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{append}}\,(\=\+{\rm{collect-labels}}\,({\it{code\/}})\index{collect-labels}, \\ 
{\rm{cons}}\,(\=\+{\it{lc\/}}, \\ 
{\rm{append}}\,(\=\+{\rm{collect-labels}}\,({\rm{cond-conversion}}\,(\=\+{\it{conds\/}}, \\ 
$1\;+$ ($1\;+$ {\it{lc\/}}), \\ 
{\it{cond-list\/}}, \\ 
{\it{label-alist\/}})\-\index{cond-conversion})\index{collect-labels}, \\ 
{\rm{list}}\,($1\;+$ {\it{lc\/}}))\-)\-)\-)\index{no-duplicates}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  collect-labels-push-actuals-code-nil \\ \index{collect-labels-push-actuals-code!-nil}
{\rm{collect-labels}}\,({\rm{push-actuals-code}}\,({\it{actuals\/}})\index{push-actuals-code})\index{collect-labels} $=$ {\bf{nil}}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  collect-labels-push-local-array-values-code-nil \\ \index{collect-labels-push-local-array!-values-code-nil}
{\rm{collect-labels}}\,({\rm{push-local-array-values-code}}\,({\it{array-value\/}})\index{push-local-array-values-code})\index{collect-labels} $=$ {\bf{nil}}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  collect-labels-push-locals-values-code-nil \\ \index{collect-labels-push-locals-value!s-code-nil}
{\rm{collect-labels}}\,({\rm{push-locals-values-code}}\,({\it{actuals\/}})\index{push-locals-values-code})\index{collect-labels} $=$ {\bf{nil}}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  collect-labels-push-locals-addresses-code-nil \\ \index{collect-labels-push-locals-addre!sses-code-nil}
{\rm{collect-labels}}\,({\rm{push-locals-addresses-code}}\,({\it{actuals\/}}, {\it{m\/}})\index{push-locals-addresses-code})\index{collect-labels} $=$ {\bf{nil}}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  collect-labels-predefined-proc-call-code-nil \\ \index{collect-labels-predefined-proc-!call-code-nil}
{\rm{collect-labels}}\,({\rm{predefined-proc-call-sequence}}\,({\it{stmt\/}}, {\it{label-alist\/}})\index{predefined-proc-call-sequence})\index{collect-labels} $=$ {\bf{nil}}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  collect-labels-strip-label \\ \index{collect-labels-strip-label}
\=\+{\rm{collect-labels}}\,({\rm{cons}}\,({\rm{cons}}\,({\tt{'}}{\tt{dl}}, {\rm{cons}}\,({\it{label\/}}, {\it{x\/}})), {\it{y\/}}))\index{collect-labels} \\ 
$=$$\;\;\;\;${\rm{cons}}\,({\it{label\/}}, {\rm{collect-labels}}\,({\it{y\/}})\index{collect-labels})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  labels-unique-loop-case \\ \index{labels-unique-loop-case}
\=\+(\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{loop-mg}}) \\ 
$\wedge$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\it{cinfo\/}})\index{code})\index{collect-labels})\index{no-duplicates} \\ 
$\wedge$$\;\;\;\;${\rm{label-cnt-big-enough}}\,({\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, {\rm{code}}\,({\it{cinfo\/}})\index{code})\index{label-cnt-big-enough} \\ 
$\wedge$$\;\;\;\;$(\=\+(\=\+{\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-))\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{code})\index{collect-labels})\index{no-duplicates} \\ 
$\wedge$$\;\;\;\;${\rm{label-cnt-big-enough}}\,(\=\+{\rm{label-cnt}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-))\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{label-cnt}, \\ 
{\rm{code}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-))\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{code})\-\index{label-cnt-big-enough})\- \\ 
$\rightarrow$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,({\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-))\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{leave}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\index{collect-labels})\index{no-duplicates})\-)\- \\ 
$\rightarrow$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\index{collect-labels})\index{no-duplicates}\-
\end{tabbing}


\noindent{\sc Event}:   Disable labels-unique-loop-case.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  labels-unique-if-case-hyps1 \\ \index{labels-unique-if-case-hyps1}
\=\+(\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{if-mg}}) \\ 
$\wedge$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\it{cinfo\/}})\index{code})\index{collect-labels})\index{no-duplicates} \\ 
$\wedge$$\;\;\;\;${\rm{label-cnt-big-enough}}\,({\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, {\rm{code}}\,({\it{cinfo\/}})\index{code})\index{label-cnt-big-enough})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{code})\index{collect-labels})\index{no-duplicates} \\ 
$\wedge$$\;\;\;\;${\rm{label-cnt-big-enough}}\,(\=\+{\rm{label-cnt}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{label-cnt}, \\ 
{\rm{code}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{code})\-\index{label-cnt-big-enough})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable labels-unique-if-case-hyps1.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  label-cnt-big-enough-not-member \\ \index{label-cnt-big-enough-not-member}
{\rm{label-cnt-big-enough}}\,({\it{lc\/}}, {\it{code\/}})\index{label-cnt-big-enough} $\rightarrow$ ({\it{lc\/}} $\not\in$ {\rm{collect-labels}}\,({\it{code\/}})\index{collect-labels})
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  labels-unique-if-case-hyps2 \\ \index{labels-unique-if-case-hyps2}
\=\+(\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{if-mg}}) \\ 
$\wedge$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\it{cinfo\/}})\index{code})\index{collect-labels})\index{no-duplicates} \\ 
$\wedge$$\;\;\;\;${\rm{label-cnt-big-enough}}\,({\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, {\rm{code}}\,({\it{cinfo\/}})\index{code})\index{label-cnt-big-enough} \\ 
$\wedge$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\index{collect-labels})\index{no-duplicates})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-)\-)\-\index{add-code})\index{code})\index{collect-labels})\index{no-duplicates} \\ 
$\wedge$$\;\;\;\;${\rm{label-cnt-big-enough}}\,(\=\+{\rm{label-cnt}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-)\-)\-\index{add-code})\index{label-cnt}, \\ 
{\rm{code}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-)\-)\-\index{add-code})\index{code})\-\index{label-cnt-big-enough})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable labels-unique-if-case-hyps2.

\addvspace{18pt}


\noindent{\sc Event}:   Disable label-cnt-big-enough-not-member.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  labels-unique-if-case \\ \index{labels-unique-if-case}
\=\+(\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{if-mg}}) \\ 
$\wedge$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\it{cinfo\/}})\index{code})\index{collect-labels})\index{no-duplicates} \\ 
$\wedge$$\;\;\;\;${\rm{label-cnt-big-enough}}\,({\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, {\rm{code}}\,({\it{cinfo\/}})\index{code})\index{label-cnt-big-enough} \\ 
$\wedge$$\;\;\;\;$(\=\+(\=\+{\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-)\-)\-\index{add-code})\index{code})\index{collect-labels})\index{no-duplicates} \\ 
$\wedge$$\;\;\;\;${\rm{label-cnt-big-enough}}\,(\=\+{\rm{label-cnt}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-)\-)\-\index{add-code})\index{label-cnt}, \\ 
{\rm{code}}\,({\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-)\-)\-\index{add-code})\index{code})\-\index{label-cnt-big-enough})\- \\ 
$\rightarrow$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{add-code}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{no-op}}{\tt{)}}\-{\tt{)}}\-)\-)\-)\-)\-\index{add-code}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\index{collect-labels})\index{no-duplicates})\- \\ 
$\wedge$$\;\;\;\;$(\=\+(\=\+{\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{code})\index{collect-labels})\index{no-duplicates} \\ 
$\wedge$$\;\;\;\;${\rm{label-cnt-big-enough}}\,(\=\+{\rm{label-cnt}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{label-cnt}, \\ 
{\rm{code}}\,({\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo})\index{code})\-\index{label-cnt-big-enough})\- \\ 
$\rightarrow$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{append}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{list}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{push-local}}, \\ 
{\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition})\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{fetch-temp-stk}}{\tt{)}}\-, \\ 
{\rm{list}}\,(\=\+{\tt{'}}{\tt{test-bool-and-jump}}, \\ 
{\tt{'}}{\tt{false}}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-)\-)\-, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist}, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\index{collect-labels})\index{no-duplicates})\-)\- \\ 
$\rightarrow$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\index{collect-labels})\index{no-duplicates}\-
\end{tabbing}


\noindent{\sc Event}:   Disable labels-unique-if-case.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  labels-unique-begin-case-hyps \\ \index{labels-unique-begin-case-hyps}
\=\+(\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{begin-mg}}) \\ 
$\wedge$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\it{cinfo\/}})\index{code})\index{collect-labels})\index{no-duplicates} \\ 
$\wedge$$\;\;\;\;${\rm{label-cnt-big-enough}}\,({\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, {\rm{code}}\,({\it{cinfo\/}})\index{code})\index{label-cnt-big-enough} \\ 
$\wedge$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{append}}\,(\=\+{\rm{make-label-alist}}\,(\=\+{\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-label-alist}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\index{collect-labels})\index{no-duplicates})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{add-code}}\,(\=\+{\rm{set-label-alist}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{append}}\,(\=\+{\rm{make-label-alist}}\,(\=\+{\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-label-alist}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-\index{set-label-alist}, \\ 
{\rm{cons}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{push-constant}} \\ 
{\tt{(}}\=\+{\tt{nat}} \\ 
{\tt{2}}{\tt{)}}\-{\tt{)}}\-{\tt{)}}\-)\-)\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{(}}\=\+{\tt{pop-global}} \\ 
{\tt{c-c}}{\tt{)}}\-{\tt{)}}\-)\-)\-)\-\index{add-code})\index{code})\index{collect-labels})\index{no-duplicates} \\ 
$\wedge$$\;\;\;\;${\rm{label-cnt-big-enough}}\,(\=\+{\rm{label-cnt}}\,({\rm{add-code}}\,(\=\+{\rm{set-label-alist}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{append}}\,(\=\+{\rm{make-label-alist}}\,(\=\+{\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-label-alist}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-\index{set-label-alist}, \\ 
{\rm{cons}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{push-constant}} \\ 
{\tt{(}}\=\+{\tt{nat}} \\ 
{\tt{2}}{\tt{)}}\-{\tt{)}}\-{\tt{)}}\-)\-)\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{(}}\=\+{\tt{pop-global}} \\ 
{\tt{c-c}}{\tt{)}}\-{\tt{)}}\-)\-)\-)\-\index{add-code})\index{label-cnt}, \\ 
{\rm{code}}\,({\rm{add-code}}\,(\=\+{\rm{set-label-alist}}\,(\=\+{\rm{translate}}\,(\=\+{\rm{make-cinfo}}\,(\=\+{\rm{code}}\,({\it{cinfo\/}})\index{code}, \\ 
{\rm{append}}\,(\=\+{\rm{make-label-alist}}\,(\=\+{\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}, \\ 
{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-\index{make-label-alist}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-, \\ 
$1\;+$ ($1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}))\-\index{make-cinfo}, \\ 
{\it{cond-list\/}}, \\ 
{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}})\-\index{translate}, \\ 
{\rm{label-alist}}\,({\it{cinfo\/}})\index{label-alist})\-\index{set-label-alist}, \\ 
{\rm{cons}}\,(\=\+{\rm{list}}\,(\=\+{\tt{'}}{\tt{jump}}, \\ 
$1\;+$ {\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt})\-, \\ 
{\rm{cons}}\,(\=\+{\rm{cons}}\,(\=\+{\tt{'}}{\tt{dl}}, \\ 
{\rm{cons}}\,(\=\+{\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{nil}} \\ 
{\tt{(}}\=\+{\tt{push-constant}} \\ 
{\tt{(}}\=\+{\tt{nat}} \\ 
{\tt{2}}{\tt{)}}\-{\tt{)}}\-{\tt{)}}\-)\-)\-, \\ 
{\tt{'}}{\tt{(}}\=\+{\tt{(}}\=\+{\tt{pop-global}} \\ 
{\tt{c-c}}{\tt{)}}\-{\tt{)}}\-)\-)\-)\-\index{add-code})\index{code})\-\index{label-cnt-big-enough})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable labels-unique-begin-case-hyps.

\addvspace{18pt}

%\item 
\begin{verbatim}


(prove-lemma labels-unique-begin-case (rewrite)
       (IMPLIES
	 (AND (equal (car STMT) 'BEGIN-MG)
	      (NO-DUPLICATES (COLLECT-LABELS (CODE CINFO)))
	      (LABEL-CNT-BIG-ENOUGH (LABEL-CNT CINFO) (CODE CINFO))
	      (IMPLIES
		(AND
                  (NO-DUPLICATES
		    (COLLECT-LABELS
		      (CODE
			(ADD-CODE
			  (SET-LABEL-ALIST
			    (TRANSLATE (MAKE-CINFO (CODE CINFO)
						   (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
									     (LABEL-CNT CINFO))
							   (LABEL-ALIST CINFO))
						   (ADD1 (ADD1 (LABEL-CNT CINFO))))
				       COND-LIST
				       (BEGIN-BODY STMT)
				       PROC-LIST)
			    (LABEL-ALIST CINFO))
			  (CONS (LIST 'JUMP (ADD1 (LABEL-CNT CINFO)))
				(CONS (CONS 'DL
					    (CONS (LABEL-CNT CINFO)
						  '(NIL (PUSH-CONSTANT (NAT 2)))))
				      '((POP-GLOBAL C-C))))))))
		  (LABEL-CNT-BIG-ENOUGH
		    (LABEL-CNT
		      (ADD-CODE
			(SET-LABEL-ALIST
			  (TRANSLATE (MAKE-CINFO (CODE CINFO)
						 (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
									   (LABEL-CNT CINFO))
							 (LABEL-ALIST CINFO))
						 (ADD1 (ADD1 (LABEL-CNT CINFO))))
				     COND-LIST
				     (BEGIN-BODY STMT)
				     PROC-LIST)
			  (LABEL-ALIST CINFO))
			(CONS (LIST 'JUMP (ADD1 (LABEL-CNT CINFO)))
			      (CONS (CONS 'DL
					  (CONS (LABEL-CNT CINFO)
						'(NIL (PUSH-CONSTANT (NAT 2)))))
				    '((POP-GLOBAL C-C))))))
		    (CODE
		      (ADD-CODE
			(SET-LABEL-ALIST
			  (TRANSLATE (MAKE-CINFO (CODE CINFO)
						 (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
									   (LABEL-CNT CINFO))
							 (LABEL-ALIST CINFO))
						 (ADD1 (ADD1 (LABEL-CNT CINFO))))
				     COND-LIST
				     (BEGIN-BODY STMT)
				     PROC-LIST)
			  (LABEL-ALIST CINFO))
			(CONS (LIST 'JUMP (ADD1 (LABEL-CNT CINFO)))
			      (CONS (CONS 'DL
					  (CONS (LABEL-CNT CINFO)
						'(NIL (PUSH-CONSTANT (NAT 2)))))
				    '((POP-GLOBAL C-C))))))))
		(NO-DUPLICATES
		  (COLLECT-LABELS
		    (CODE
		      (TRANSLATE
			(ADD-CODE
			  (SET-LABEL-ALIST
			    (TRANSLATE (MAKE-CINFO (CODE CINFO)
						   (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
									     (LABEL-CNT CINFO))
							   (LABEL-ALIST CINFO))
						   (ADD1 (ADD1 (LABEL-CNT CINFO))))
				       COND-LIST
				       (BEGIN-BODY STMT)
				       PROC-LIST)
			    (LABEL-ALIST CINFO))
			  (CONS (LIST 'JUMP (ADD1 (LABEL-CNT CINFO)))
				(CONS (CONS 'DL
					    (CONS (LABEL-CNT CINFO)
						  '(NIL (PUSH-CONSTANT (NAT 2)))))
				      '((POP-GLOBAL C-C)))))
			COND-LIST
			(WHEN-HANDLER STMT)
			PROC-LIST)))))
	      (IMPLIES
		(AND
		  (NO-DUPLICATES
		    (COLLECT-LABELS
		      (CODE (MAKE-CINFO (CODE CINFO)
					(APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
								  (LABEL-CNT CINFO))
						(LABEL-ALIST CINFO))
					(ADD1 (ADD1 (LABEL-CNT CINFO)))))))
		  (LABEL-CNT-BIG-ENOUGH
		    (LABEL-CNT (MAKE-CINFO (CODE CINFO)
					   (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
								     (LABEL-CNT CINFO))
						   (LABEL-ALIST CINFO))
					   (ADD1 (ADD1 (LABEL-CNT CINFO)))))
		    (CODE (MAKE-CINFO (CODE CINFO)
				      (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
								(LABEL-CNT CINFO))
					      (LABEL-ALIST CINFO))
				      (ADD1 (ADD1 (LABEL-CNT CINFO)))))))
		(NO-DUPLICATES
		  (COLLECT-LABELS
		    (CODE (TRANSLATE (MAKE-CINFO (CODE CINFO)
						 (APPEND (MAKE-LABEL-ALIST (WHEN-LABELS STMT)
									   (LABEL-CNT CINFO))
							 (LABEL-ALIST CINFO))
						 (ADD1 (ADD1 (LABEL-CNT CINFO))))
				     COND-LIST
				     (BEGIN-BODY STMT)
				     PROC-LIST))))))
	 (NO-DUPLICATES (COLLECT-LABELS (CODE (TRANSLATE CINFO COND-LIST STMT PROC-LIST)))))
 ((INSTRUCTIONS PROMOTE
                (DEMOTE 5)
                (DIVE 1 1)
                S
                (REWRITE LABEL-CNT-BIG-ENOUGH-ADD1)
                UP S TOP PROMOTE
                (DEMOTE 4)
                (DIVE 1 1 1)
                (REWRITE LABELS-UNIQUE-BEGIN-CASE-HYPS)
                NX
                (REWRITE LABELS-UNIQUE-BEGIN-CASE-HYPS)
                UP UP S TOP PROMOTE
                (DIVE 1 1 1)
                (REWRITE BEGIN-TRANSLATION)
                UP
                (REWRITE CODE-ADD-CODE-COMMUTE)
                UP
                (REWRITE COLLECT-LABELS-DISTRIBUTES)
                (DIVE 2)
                (= *
                   (LIST (ADD1 (LABEL-CNT CINFO)))
                   ((ENABLE COLLECT-LABELS)))
                UP UP
                (REWRITE NO-DUPLICATES-RIGHT-CONS-REDUCTION)
                (DIVE 1)
                (REWRITE FIND-LABELP-MONOTONIC-LESSP)
                UP S
                (DIVE 2)
                (REWRITE ADD-CODE-DOESNT-AFFECT-OTHER-FIELDS)
                (REWRITE SET-LABEL-ALIST-DOESNT-AFFECT-OTHER-FIELDS)
                UP
                (REWRITE LABEL-CNT-LESSP1)
                PROVE
                (DIVE 1 2)
                (REWRITE CODE-ADD-CODE-COMMUTE)
                (DIVE 1)
                (REWRITE SET-LABEL-ALIST-DOESNT-AFFECT-OTHER-FIELDS)
                UP UP
                (REWRITE FIND-LABELP-APPEND2)
                (DIVE 3)
                (= F)
                TOP S
                (DIVE 1)
                (REWRITE FIND-LABELP-MONOTONIC-LESSP)
                TOP S PROVE S
                (DIVE 1)
                (REWRITE LABEL-CNT-BIG-ENOUGH-NOT-FIND-LABELP)
                TOP S
                (REWRITE LABEL-CNT-BIG-ENOUGH-ADD1)
                (DEMOTE 5)
                S
                (REWRITE LABEL-CNT-BIG-ENOUGH-ADD1))))
\end{verbatim}



\noindent{\sc Event}:   Disable labels-unique-begin-case.

\addvspace{18pt}


\noindent{\sc Event}:   Disable find-labelp-rewrites-to-member.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  translate-leaves-labels-unique \\ \index{translate-leaves-labels-unique}
\=\+(\=\+{\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\it{cinfo\/}})\index{code})\index{collect-labels})\index{no-duplicates} \\ 
$\wedge$$\;\;\;\;${\rm{label-cnt-big-enough}}\,({\rm{label-cnt}}\,({\it{cinfo\/}})\index{label-cnt}, {\rm{code}}\,({\it{cinfo\/}})\index{code})\index{label-cnt-big-enough})\- \\ 
$\rightarrow$$\;\;\;\;${\rm{no-duplicates}}\,({\rm{collect-labels}}\,({\rm{code}}\,({\rm{translate}}\,(\=\+{\it{cinfo\/}}, \\ 
{\it{cond-list\/}}, \\ 
{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{translate})\index{code})\index{collect-labels})\index{no-duplicates}\-
\end{tabbing}

\begin{verbatim};; Note: many of the following lemmas may never be used, particularly the ones
;; involving assoc in the hyps.

\end{verbatim}\begin{tabbing}{\sc Theorem}:  translate-proc-list-assoc1 \\ \index{translate-proc-list-assoc1}
\=\+({\rm{definedp}}\,({\it{subr\/}}, {\it{proc-list\/}})\index{definedp} $\wedge$ {\rm{ok-mg-def-plistp1}}\,({\it{proc-list\/}}, {\it{proc-list2\/}})\index{ok-mg-def-plistp1}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{translate-def}}\,({\rm{assoc}}\,({\it{subr\/}}, {\it{proc-list\/}}), {\it{proc-list2\/}})\index{translate-def} \\ 
$=$$\;\;\;\;${\rm{assoc}}\,({\it{subr\/}}, {\rm{translate-proc-list1}}\,({\it{proc-list\/}}, {\it{proc-list2\/}})\index{translate-proc-list1}))\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable translate-proc-list-assoc1.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  translate-proc-list-assoc \\ \index{translate-proc-list-assoc}
\=\+({\rm{user-defined-procp}}\,({\it{subr\/}}, {\it{proc-list\/}})\index{user-defined-procp} $\wedge$ {\rm{ok-mg-def-plistp}}\,({\it{proc-list\/}})\index{ok-mg-def-plistp}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{translate-def}}\,({\rm{assoc}}\,({\it{subr\/}}, {\it{proc-list\/}}), {\it{proc-list\/}})\index{translate-def} \\ 
$=$$\;\;\;\;${\rm{assoc}}\,({\it{subr\/}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}))\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable translate-proc-list-assoc.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  translate-proc-list-assoc2 \\ \index{translate-proc-list-assoc2}
\=\+({\rm{user-defined-procp}}\,({\it{subr\/}}, {\it{proc-list\/}})\index{user-defined-procp} $\wedge$ {\rm{ok-mg-def-plistp}}\,({\it{proc-list\/}})\index{ok-mg-def-plistp}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{assoc}}\,({\it{subr\/}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\rm{translate-def}}\,({\rm{assoc}}\,({\it{subr\/}}, {\it{proc-list\/}}), {\it{proc-list\/}})\index{translate-def})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable translate-proc-list-assoc2.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  translate-definedp1 \\ \index{translate-definedp1}
\=\+({\rm{ok-mg-def-plistp1}}\,({\it{lst1\/}}, {\it{lst2\/}})\index{ok-mg-def-plistp1} $\wedge$ {\rm{definedp}}\,({\it{x\/}}, {\it{lst1\/}})\index{definedp}) \\ 
$\rightarrow$$\;\;\;\;${\rm{definedp}}\,({\it{x\/}}, {\rm{translate-proc-list1}}\,({\it{lst1\/}}, {\it{lst2\/}})\index{translate-proc-list1})\index{definedp}\-
\end{tabbing}


\noindent{\sc Event}:   Disable translate-definedp1.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  assoc-mg-simple-variable-assignment-translate-proc-list \\ \index{assoc-mg-simple-variable-assign!ment-translate-proc-list}
\=\+{\rm{assoc}}\,({\tt{'}}{\tt{mg-simple-variable-assignment}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\sc{mg-simple-variable-assignment-translation}}\index{mg-simple-variable-assignment-t!ranslation}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  assoc-mg-simple-constant-assignment-translate-proc-list \\ \index{assoc-mg-simple-constant-assign!ment-translate-proc-list}
\=\+{\rm{assoc}}\,({\tt{'}}{\tt{mg-simple-constant-assignment}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\sc{mg-simple-constant-assignment-translation}}\index{mg-simple-constant-assignment-t!ranslation}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  assoc-mg-simple-variable-eq-translate-proc-list \\ \index{assoc-mg-simple-variable-eq-tra!nslate-proc-list}
\=\+{\rm{assoc}}\,({\tt{'}}{\tt{mg-simple-variable-eq}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\sc{mg-simple-variable-eq-translation}}\index{mg-simple-variable-eq-translati!on}\-
\end{tabbing} 

\begin{tabbing}{\sc Theorem}:  assoc-mg-simple-constant-eq-translate-proc-list \\ \index{assoc-mg-simple-constant-eq-tra!nslate-proc-list}
\=\+{\rm{assoc}}\,({\tt{'}}{\tt{mg-simple-constant-eq}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\sc{mg-simple-constant-eq-translation}}\index{mg-simple-constant-eq-translati!on}\-
\end{tabbing} 

\begin{tabbing}{\sc Theorem}:  assoc-mg-integer-le-translate-proc-list \\ \index{assoc-mg-integer-le-translate-p!roc-list}
\=\+{\rm{assoc}}\,({\tt{'}}{\tt{mg-integer-le}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\sc{mg-integer-le-translation}}\index{mg-integer-le-translation}\-
\end{tabbing} 

\begin{tabbing}{\sc Theorem}:  assoc-mg-integer-unary-minus-translate-proc-list \\ \index{assoc-mg-integer-unary-minus-tr!anslate-proc-list}
\=\+{\rm{assoc}}\,({\tt{'}}{\tt{mg-integer-unary-minus}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\sc{mg-integer-unary-minus-translation}}\index{mg-integer-unary-minus-translati!on}\-
\end{tabbing} 

\begin{tabbing}{\sc Theorem}:  assoc-mg-integer-add-translate-proc-list \\ \index{assoc-mg-integer-add-translate-p!roc-list}
\=\+{\rm{assoc}}\,({\tt{'}}{\tt{mg-integer-add}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\sc{mg-integer-add-translation}}\index{mg-integer-add-translation}\-
\end{tabbing} 

\begin{tabbing}{\sc Theorem}:  assoc-mg-integer-subtract-translate-proc-list \\ \index{assoc-mg-integer-subtract-trans!late-proc-list}
\=\+{\rm{assoc}}\,({\tt{'}}{\tt{mg-integer-subtract}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\sc{mg-integer-subtract-translation}}\index{mg-integer-subtract-translation}\-
\end{tabbing} 

\begin{tabbing}{\sc Theorem}:  assoc-mg-boolean-or-translate-proc-list \\ \index{assoc-mg-boolean-or-translate-p!roc-list}
\=\+{\rm{assoc}}\,({\tt{'}}{\tt{mg-boolean-or}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\sc{mg-boolean-or-translation}}\index{mg-boolean-or-translation}\-
\end{tabbing} 

\begin{tabbing}{\sc Theorem}:  assoc-mg-boolean-and-translate-proc-list \\ \index{assoc-mg-boolean-and-translate-p!roc-list}
\=\+{\rm{assoc}}\,({\tt{'}}{\tt{mg-boolean-and}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\sc{mg-boolean-and-translation}}\index{mg-boolean-and-translation}\-
\end{tabbing} 

\begin{tabbing}{\sc Theorem}:  assoc-mg-boolean-not-translate-proc-list \\ \index{assoc-mg-boolean-not-translate-p!roc-list}
\=\+{\rm{assoc}}\,({\tt{'}}{\tt{mg-boolean-not}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\sc{mg-boolean-not-translation}}\index{mg-boolean-not-translation}\-
\end{tabbing} 

\begin{tabbing}{\sc Theorem}:  assoc-mg-index-array-translate-proc-list \\ \index{assoc-mg-index-array-translate-p!roc-list}
\=\+{\rm{assoc}}\,({\tt{'}}{\tt{mg-index-array}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\sc{mg-index-array-translation}}\index{mg-index-array-translation}\-
\end{tabbing} 

\begin{tabbing}{\sc Theorem}:  assoc-mg-array-element-assignment-translate-proc-list \\ \index{assoc-mg-array-element-assignme!nt-translate-proc-list}
\=\+{\rm{assoc}}\,({\tt{'}}{\tt{mg-array-element-assignment}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\sc{mg-array-element-assignment-translation}}\index{mg-array-element-assignment-tra!nslation}\-
\end{tabbing} 

\begin{tabbing}{\sc Theorem}:  assoc-user-defined-proc2 \\ \index{assoc-user-defined-proc2}
\=\+($\neg$ {\rm{predefined-procp}}\,({\it{subr\/}})\index{predefined-procp}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{assoc}}\,({\it{subr\/}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}) \\ 
$=$$\;\;\;\;${\rm{assoc}}\,({\it{subr\/}}, {\rm{translate-proc-list1}}\,({\it{proc-list\/}}, {\it{proc-list\/}})\index{translate-proc-list1}))\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  translate-def-body-rewrite \\ \index{translate-def-body-rewrite}
\=\+(\=\+{\rm{ok-mg-def-plistp}}\,({\it{proc-list\/}})\index{ok-mg-def-plistp} \\ 
$\wedge$$\;\;\;\;${\rm{user-defined-procp}}\,({\it{subr\/}}, {\it{proc-list\/}})\index{user-defined-procp} \\ 
$\wedge$$\;\;\;\;$(\=\+{\rm{code}}\,({\rm{translate-def-body}}\,({\rm{assoc}}\,({\it{subr\/}}, {\it{proc-list\/}}), {\it{proc-list\/}})\index{translate-def-body})\index{code} \\ 
$=$$\;\;\;\;${\rm{append}}\,(\=\+{\rm{code}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{t-cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code}, \\ 
{\it{code2\/}})\-)\-)\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{cdddr}}\,({\rm{assoc}}\,({\it{subr\/}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list})) \\ 
$=$$\;\;\;\;${\rm{append}}\,(\=\+{\rm{code}}\,({\rm{translate}}\,({\it{cinfo\/}}, {\it{t-cond-list\/}}, {\it{stmt\/}}, {\it{proc-list\/}})\index{translate})\index{code}, \\ 
{\it{code2\/}})\-)\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable translate-def-body-rewrite.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  car-definedp-defined-procp1 \\ \index{car-definedp-defined-procp1}
\=\+(\=\+{\rm{user-defined-procp}}\,({\it{subr\/}}, {\it{proc-list\/}})\index{user-defined-procp} \\ 
$\wedge$$\;\;\;\;${\rm{ok-mg-def-plistp1}}\,({\it{proc-list\/}}, {\it{proc-list2\/}})\index{ok-mg-def-plistp1})\- \\ 
$\rightarrow$$\;\;\;\;${\rm{definedp}}\,({\it{subr\/}}, {\rm{translate-proc-list1}}\,({\it{proc-list\/}}, {\it{proc-list2\/}})\index{translate-proc-list1})\index{definedp}\-
\end{tabbing}


\noindent{\sc Event}:   Disable car-definedp-defined-procp1.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  car-definedp-defined-procp \\ \index{car-definedp-defined-procp}
\=\+({\rm{user-defined-procp}}\,({\it{subr\/}}, {\it{proc-list\/}})\index{user-defined-procp} $\wedge$ {\rm{ok-mg-def-plistp}}\,({\it{proc-list\/}})\index{ok-mg-def-plistp}) \\ 
$\rightarrow$$\;\;\;\;${\rm{definedp}}\,({\it{subr\/}}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list})\index{definedp}\-
\end{tabbing}


\noindent{\sc Event}:   Disable car-definedp-defined-procp.

\addvspace{18pt}

\begin{verbatim};;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                                                           ;;
;;                                 CLOCK                                     ;;
;;                                                                           ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; The time required for a call to a predefined procedure is the sum of
;; the time for the call sequence and that spent in the body.  The call
;; sequence is fixed but the body may have various paths.

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{clock-predefined-proc-call-seque!nce} \\  
\=\+{\rm{clock-predefined-proc-call-sequence}}\,({\it{name\/}})\index{clock-predefined-proc-call-seque!nce} \\ 
$=$$\;\;\;\;$\=\+{\bf case on }{\it{name\/}}: \\ 
{\bf case = }{\it{mg-simple-variable-assignment\/}} \\ 
{\bf then }{\tt{3}} \\ 
{\bf case = }{\it{mg-simple-constant-assignment\/}} \\ 
{\bf $\;\;$then }{\tt{3}} \\ 
{\bf case = }{\it{mg-simple-variable-eq\/}} \\ 
{\bf $\;\;$then }{\tt{4}} \\ 
{\bf case = }{\it{mg-simple-constant-eq\/}} \\ 
{\bf $\;\;$then }{\tt{4}} \\ 
{\bf case = }{\it{mg-integer-le\/}} \\ 
{\bf $\;\;$then }{\tt{4}} \\ 
{\bf case = }{\it{mg-integer-unary-minus\/}} \\ 
{\bf $\;\;$then }{\tt{6}} \\ 
{\bf case = }{\it{mg-integer-add\/}} \\ 
{\bf $\;\;$then }{\tt{7}} \\ 
{\bf case = }{\it{mg-integer-subtract\/}} \\ 
{\bf $\;\;$then }{\tt{7}} \\ 
{\bf case = }{\it{mg-boolean-or\/}} \\ 
{\bf $\;\;$then }{\tt{4}} \\ 
{\bf case = }{\it{mg-boolean-and\/}} \\ 
{\bf $\;\;$then }{\tt{4}} \\ 
{\bf case = }{\it{mg-boolean-not\/}} \\ 
{\bf $\;\;$then }{\tt{3}} \\ 
{\bf case = }{\it{mg-index-array\/}} \\ 
{\bf $\;\;$then }{\tt{8}} \\ 
{\bf case = }{\it{mg-array-element-assignment\/}} \\ 
{\bf $\;\;$then }{\tt{8}} \\ 
{\bf otherwise }{\tt{0}}$\;${\bf  endcase}\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable clock-predefined-proc-call-sequence.

\addvspace{18pt}

\begin{tabbing}{\sc Definition}:\index{clock-predefined-proc-call-body!-translation} \\  
\=\+{\rm{clock-predefined-proc-call-body-translation}}\,({\it{stmt\/}}, {\it{mg-state\/}})\index{clock-predefined-proc-call-body!-translation} \\ 
$=$$\;\;\;\;$\=\+{\bf case on }{\rm{call-name}}\,({\it{stmt\/}})\index{call-name}: \\ 
{\bf case = }{\it{mg-simple-variable-assignment\/}} \\ 
{\bf then }{\tt{5}} \\ 
{\bf case = }{\it{mg-simple-constant-assignment\/}} \\ 
{\bf $\;\;$then }{\tt{4}} \\ 
{\bf case = }{\it{mg-simple-variable-eq\/}} \\ 
{\bf $\;\;$then }{\tt{8}} \\ 
{\bf case = }{\it{mg-simple-constant-eq\/}} \\ 
{\bf $\;\;$then }{\tt{7}} \\ 
{\bf case = }{\it{mg-integer-le\/}} \\ 
{\bf $\;\;$then }{\tt{9}} \\ 
{\bf case = }{\it{mg-integer-unary-minus\/}} \\ 
{\bf $\;\;$then }\=\+{\bf if }{\rm{small-integerp}}\,(\=\+{\rm{inegate}}\,({\rm{untag}}\,({\rm{caddr}}\,({\rm{assoc}}\,(\=\+{\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\-))\index{untag})\index{inegate}, \\ 
{\sc{mg-word-size}}\index{mg-word-size})\-\index{small-integerp}$\;\;${\bf then }{\tt{11}} \\ 
{\bf else }{\tt{10}}$\;${\bf  endif}\- \\ 
{\bf case = }{\it{mg-integer-add\/}} \\ 
{\bf $\;\;$then }\=\+{\bf if }{\rm{small-integerp}}\,(\=\+{\rm{iplus}}\,(\=\+{\rm{untag}}\,({\rm{caddr}}\,({\rm{assoc}}\,(\=\+{\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\-))\index{untag}, \\ 
{\rm{untag}}\,({\rm{caddr}}\,({\rm{assoc}}\,(\=\+{\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\-))\index{untag})\-\index{iplus}, \\ 
{\sc{mg-word-size}}\index{mg-word-size})\-\index{small-integerp}$\;\;${\bf then }{\tt{13}} \\ 
{\bf else }{\tt{11}}$\;${\bf  endif}\- \\ 
{\bf case = }{\it{mg-integer-subtract\/}} \\ 
{\bf $\;\;$then }\=\+{\bf if }{\rm{small-integerp}}\,(\=\+{\rm{idifference}}\,(\=\+{\rm{untag}}\,({\rm{caddr}}\,({\rm{assoc}}\,(\=\+{\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\-))\index{untag}, \\ 
{\rm{untag}}\,({\rm{caddr}}\,({\rm{assoc}}\,(\=\+{\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\-))\index{untag})\-\index{idifference}, \\ 
{\sc{mg-word-size}}\index{mg-word-size})\-\index{small-integerp}$\;\;${\bf then }{\tt{13}} \\ 
{\bf else }{\tt{11}}$\;${\bf  endif}\- \\ 
{\bf case = }{\it{mg-boolean-or\/}} \\ 
{\bf $\;\;$then }{\tt{8}} \\ 
{\bf case = }{\it{mg-boolean-and\/}} \\ 
{\bf $\;\;$then }{\tt{8}} \\ 
{\bf case = }{\it{mg-boolean-not\/}} \\ 
{\bf $\;\;$then }{\tt{6}} \\ 
{\bf case = }{\it{mg-index-array\/}} \\ 
{\bf $\;\;$then }\=\+{\bf if }{\rm{negativep}}\,({\rm{cadaddr}}\,({\rm{assoc}}\,(\=\+{\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\-))$\;\;${\bf then }{\tt{7}} \\ 
{\bf elseif }\=\+(\=\+{\rm{idifference}}\,(\=\+{\rm{cadddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{cadaddr}}\,({\rm{assoc}}\,(\=\+{\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\-))\-\index{idifference} \\ 
$=$$\;\;\;\;${\tt{0}})\- \\ 
$\vee$$\;\;\;\;${\rm{negativep}}\,({\rm{idifference}}\,(\=\+{\rm{cadddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{cadaddr}}\,({\rm{assoc}}\,(\=\+{\rm{caddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\-))\-\index{idifference})\- \\ 
{\bf then }{\tt{11}} \\ 
{\bf else }{\tt{17}}$\;${\bf  endif}\- \\ 
{\bf case = }{\it{mg-array-element-assignment\/}} \\ 
{\bf $\;\;$then }\=\+{\bf if }{\rm{negativep}}\,({\rm{cadaddr}}\,({\rm{assoc}}\,(\=\+{\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\-))$\;\;${\bf then }{\tt{7}} \\ 
{\bf elseif }\=\+(\=\+{\rm{idifference}}\,(\=\+{\rm{cadddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{cadaddr}}\,({\rm{assoc}}\,(\=\+{\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\-))\-\index{idifference} \\ 
$=$$\;\;\;\;${\tt{0}})\- \\ 
$\vee$$\;\;\;\;${\rm{negativep}}\,({\rm{idifference}}\,(\=\+{\rm{cadddr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{cadaddr}}\,({\rm{assoc}}\,(\=\+{\rm{cadr}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals}), \\ 
{\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\-))\-\index{idifference})\- \\ 
{\bf then }{\tt{11}} \\ 
{\bf else }{\tt{17}}$\;${\bf  endif}\- \\ 
{\bf otherwise }{\tt{0}}$\;${\bf  endcase}\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable clock-predefined-proc-call-body-translation.

\addvspace{18pt}

\begin{tabbing}{\sc Definition}:\index{predefined-proc-call-clock} \\  
\=\+{\rm{predefined-proc-call-clock}}\,({\it{stmt\/}}, {\it{mg-state\/}})\index{predefined-proc-call-clock} \\ 
$=$$\;\;\;\;$(\=\+{\rm{clock-predefined-proc-call-sequence}}\,({\rm{call-name}}\,({\it{stmt\/}})\index{call-name})\index{clock-predefined-proc-call-seque!nce} \\ 
$+$$\;\;\;\;${\rm{clock-predefined-proc-call-body-translation}}\,({\it{stmt\/}}, {\it{mg-state\/}})\index{clock-predefined-proc-call-body!-translation})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable predefined-proc-call-clock.

\addvspace{18pt}

\begin{verbatim};; Removed the definition of clock-r

\end{verbatim}\begin{tabbing}{\sc Definition}:\index{clock} \\  
\=\+{\rm{clock}}\,({\it{stmt\/}}, {\it{proc-list\/}}, {\it{mg-state\/}}, {\it{n\/}})\index{clock} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{n\/}} $\simeq {\tt{0}}$) $\vee$ ($\neg$ {\rm{normal}}\,({\it{mg-state\/}})\index{normal})$\;\;${\bf then }{\tt{0}} \\ 
{\bf else }\=\+{\bf case on }{\rm{car}}\,({\it{stmt\/}}): \\ 
{\bf case = }{\it{no-op-mg\/}} \\ 
{\bf then }{\tt{0}} \\ 
{\bf case = }{\it{signal-mg\/}} \\ 
{\bf $\;\;$then }{\tt{3}} \\ 
{\bf case = }{\it{prog2-mg\/}} \\ 
{\bf $\;\;$then }\=\+{\rm{clock}}\,(\=\+{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
$+$$\;\;\;\;${\rm{clock}}\,(\=\+{\rm{prog2-right-branch}}\,({\it{stmt\/}})\index{prog2-right-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{mg-meaning}}\,(\=\+{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock}\- \\ 
{\bf case = }{\it{loop-mg\/}} \\ 
{\bf $\;\;$then }\=\+{\bf if }$\neg$ {\rm{normal}}\,({\rm{mg-meaning}}\,(\=\+{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{normal} \\ 
{\bf then }\=\+{\bf if }\=\+{\rm{cc}}\,({\rm{mg-meaning}}\,(\=\+{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{cc} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{leave}}\- \\ 
{\bf then }{\tt{3}} $+$ {\rm{clock}}\,(\=\+{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
{\bf else }$1\;+$ {\rm{clock}}\,(\=\+{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock}$\;${\bf  endif}\- \\ 
{\bf else }$1\;+$ (\=\+($1\;+$ {\rm{clock}}\,(\=\+{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock}) \\ 
$+$$\;\;\;\;${\rm{clock}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{mg-meaning}}\,(\=\+{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock})\-$\;${\bf  endif}\- \\ 
{\bf case = }{\it{if-mg\/}} \\ 
{\bf $\;\;$then }\=\+{\bf if }{\rm{mg-expression-falsep}}\,({\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition}, {\it{mg-state\/}})\index{mg-expression-falsep} \\ 
{\bf then }\=\+{\bf if }{\rm{normal}}\,({\rm{mg-meaning}}\,(\=\+{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{normal} \\ 
{\bf then }{\tt{5}} $+$ {\rm{clock}}\,(\=\+{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
{\bf else }{\tt{4}} $+$ {\rm{clock}}\,(\=\+{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock}$\;${\bf  endif}\- \\ 
{\bf elseif }{\rm{normal}}\,({\rm{mg-meaning}}\,(\=\+{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{normal} \\ 
{\bf then }{\tt{5}} $+$ {\rm{clock}}\,(\=\+{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
{\bf else }{\tt{3}} $+$ {\rm{clock}}\,(\=\+{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock}$\;${\bf  endif}\- \\ 
{\bf case = }{\it{begin-mg\/}} \\ 
{\bf $\;\;$then }\=\+{\bf if }\=\+{\rm{cc}}\,({\rm{mg-meaning}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{cc} \\ 
$\in$$\;\;\;\;${\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}\- \\ 
{\bf then }\=\+{\bf if }{\rm{normal}}\,({\rm{mg-meaning}}\,(\=\+{\rm{when-handler}}\,({\it{stmt\/}})\index{when-handler}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{set-condition}}\,(\=\+{\rm{mg-meaning}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning}, \\ 
{\tt{'}}{\tt{normal}})\-\index{set-condition}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{normal} \\ 
{\bf then }\=\+{\rm{clock}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
$+$$\;\;\;\;$({\tt{3}} $+$ {\rm{clock}}\,(\=\+{\rm{when-handler}}\,({\it{stmt\/}})\index{when-handler}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{set-condition}}\,(\=\+{\rm{mg-meaning}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning}, \\ 
{\tt{'}}{\tt{normal}})\-\index{set-condition}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock})\- \\ 
{\bf else }\=\+{\rm{clock}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
$+$$\;\;\;\;$({\tt{2}} $+$ {\rm{clock}}\,(\=\+{\rm{when-handler}}\,({\it{stmt\/}})\index{when-handler}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{set-condition}}\,(\=\+{\rm{mg-meaning}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning}, \\ 
{\tt{'}}{\tt{normal}})\-\index{set-condition}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock})\-$\;${\bf  endif}\- \\ 
{\bf elseif }{\rm{normal}}\,({\rm{mg-meaning}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{normal} \\ 
{\bf then }{\tt{2}} $+$ {\rm{clock}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
{\bf else }{\rm{clock}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock}$\;${\bf  endif}\- \\ 
{\bf case = }{\it{proc-call-mg\/}} \\ 
{\bf $\;\;$then }\=\+{\rm{data-length}}\,({\rm{def-locals}}\,({\rm{fetch-called-def}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{fetch-called-def})\index{def-locals})\index{data-length} \\ 
$+$$\;\;\;\;${\rm{length}}\,({\rm{def-locals}}\,({\rm{fetch-called-def}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{fetch-called-def})\index{def-locals})\index{length} \\ 
$+$$\;\;\;\;${\rm{length}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})\index{length} \\ 
$+$$\;\;\;\;${\tt{1}} \\ 
$+$$\;\;\;\;${\rm{clock}}\,(\=\+{\rm{def-body}}\,({\rm{fetch-called-def}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{fetch-called-def})\index{def-body}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{make-call-environment}}\,(\=\+{\it{mg-state\/}}, \\ 
{\it{stmt\/}}, \\ 
{\rm{fetch-called-def}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{fetch-called-def})\-\index{make-call-environment}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
$+$$\;\;\;\;${\tt{5}} \\ 
$+$$\;\;\;\;$\=\+{\bf if }{\rm{normal}}\,({\rm{mg-meaning}}\,(\=\+{\rm{def-body}}\,({\rm{fetch-called-def}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{fetch-called-def})\index{def-body}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{make-call-environment}}\,(\=\+{\it{mg-state\/}}, \\ 
{\it{stmt\/}}, \\ 
{\rm{fetch-called-def}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{fetch-called-def})\-\index{make-call-environment}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{normal}$\;\;${\bf then }{\tt{1}} \\ 
{\bf else }{\tt{3}}$\;${\bf  endif}\-\- \\ 
{\bf case = }{\it{predefined-proc-call-mg\/}} \\ 
{\bf $\;\;$then }{\rm{predefined-proc-call-clock}}\,({\it{stmt\/}}, {\it{mg-state\/}})\index{predefined-proc-call-clock} \\ 
{\bf otherwise }{\tt{0}}$\;${\bf  endcase}\-$\;${\bf  endif}\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  clock-prog2 \\ \index{clock-prog2}
\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{prog2-mg}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{clock}}\,({\it{stmt\/}}, {\it{proc-list\/}}, {\it{mg-state\/}}, {\it{n\/}})\index{clock} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{n\/}} $\not\simeq {\tt{0}}$) $\wedge$ {\rm{normal}}\,({\it{mg-state\/}})\index{normal} \\ 
{\bf then }\=\+{\rm{clock}}\,({\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, {\it{proc-list\/}}, {\it{mg-state\/}}, {\it{n\/}} $-\;1$)\index{clock} \\ 
$+$$\;\;\;\;${\rm{clock}}\,(\=\+{\rm{prog2-right-branch}}\,({\it{stmt\/}})\index{prog2-right-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{mg-meaning}}\,(\=\+{\rm{prog2-left-branch}}\,({\it{stmt\/}})\index{prog2-left-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock}\- \\ 
{\bf else }{\tt{0}}$\;${\bf  endif}\-)\-\-
\end{tabbing}


\begin{tabbing}{\sc Theorem}:  clock-loop \\ \index{clock-loop}
\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{loop-mg}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{clock}}\,({\it{stmt\/}}, {\it{proc-list\/}}, {\it{mg-state\/}}, {\it{n\/}})\index{clock} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{n\/}} $\not\simeq {\tt{0}}$) $\wedge$ {\rm{normal}}\,({\it{mg-state\/}})\index{normal} \\ 
{\bf then }\=\+{\bf if }$\neg$ {\rm{normal}}\,({\rm{mg-meaning}}\,(\=\+{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{normal} \\ 
{\bf then }\=\+{\bf if }\=\+{\rm{cc}}\,({\rm{mg-meaning}}\,(\=\+{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{cc} \\ 
$=$$\;\;\;\;${\tt{'}}{\tt{leave}}\- \\ 
{\bf then }{\tt{3}} $+$ {\rm{clock}}\,(\=\+{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
{\bf else }$1\;+$ {\rm{clock}}\,(\=\+{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock}$\;${\bf  endif}\- \\ 
{\bf else }$1\;+$ (\=\+($1\;+$ {\rm{clock}}\,(\=\+{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock}) \\ 
$+$$\;\;\;\;${\rm{clock}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{mg-meaning}}\,(\=\+{\rm{loop-body}}\,({\it{stmt\/}})\index{loop-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock})\-$\;${\bf  endif}\- \\ 
{\bf else }{\tt{0}}$\;${\bf  endif}\-)\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable clock-loop.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  clock-if \\ \index{clock-if}
\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{if-mg}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{clock}}\,({\it{stmt\/}}, {\it{proc-list\/}}, {\it{mg-state\/}}, {\it{n\/}})\index{clock} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{n\/}} $\not\simeq {\tt{0}}$) $\wedge$ {\rm{normal}}\,({\it{mg-state\/}})\index{normal} \\ 
{\bf then }\=\+{\bf if }{\rm{mg-expression-falsep}}\,({\rm{if-condition}}\,({\it{stmt\/}})\index{if-condition}, {\it{mg-state\/}})\index{mg-expression-falsep} \\ 
{\bf then }\=\+{\bf if }{\rm{normal}}\,({\rm{mg-meaning}}\,(\=\+{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{normal} \\ 
{\bf then }{\tt{5}} $+$ {\rm{clock}}\,(\=\+{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
{\bf else }{\tt{4}} $+$ {\rm{clock}}\,(\=\+{\rm{if-false-branch}}\,({\it{stmt\/}})\index{if-false-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock}$\;${\bf  endif}\- \\ 
{\bf elseif }{\rm{normal}}\,({\rm{mg-meaning}}\,(\=\+{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{normal} \\ 
{\bf then }{\tt{5}} $+$ {\rm{clock}}\,(\=\+{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
{\bf else }{\tt{3}} $+$ {\rm{clock}}\,(\=\+{\rm{if-true-branch}}\,({\it{stmt\/}})\index{if-true-branch}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock}$\;${\bf  endif}\- \\ 
{\bf else }{\tt{0}}$\;${\bf  endif}\-)\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  clock-begin \\ \index{clock-begin}
\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{begin-mg}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{clock}}\,({\it{stmt\/}}, {\it{proc-list\/}}, {\it{mg-state\/}}, {\it{n\/}})\index{clock} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{n\/}} $\not\simeq {\tt{0}}$) $\wedge$ {\rm{normal}}\,({\it{mg-state\/}})\index{normal} \\ 
{\bf then }\=\+{\bf if }\=\+{\rm{cc}}\,({\rm{mg-meaning}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{cc} \\ 
$\in$$\;\;\;\;${\rm{when-labels}}\,({\it{stmt\/}})\index{when-labels}\- \\ 
{\bf then }\=\+{\bf if }{\rm{normal}}\,({\rm{mg-meaning}}\,(\=\+{\rm{when-handler}}\,({\it{stmt\/}})\index{when-handler}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{set-condition}}\,(\=\+{\rm{mg-meaning}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning}, \\ 
{\tt{'}}{\tt{normal}})\-\index{set-condition}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{normal} \\ 
{\bf then }\=\+{\rm{clock}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
$+$$\;\;\;\;$({\tt{3}} $+$ {\rm{clock}}\,(\=\+{\rm{when-handler}}\,({\it{stmt\/}})\index{when-handler}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{set-condition}}\,(\=\+{\rm{mg-meaning}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning}, \\ 
{\tt{'}}{\tt{normal}})\-\index{set-condition}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock})\- \\ 
{\bf else }\=\+{\rm{clock}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
$+$$\;\;\;\;$({\tt{2}} $+$ {\rm{clock}}\,(\=\+{\rm{when-handler}}\,({\it{stmt\/}})\index{when-handler}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{set-condition}}\,(\=\+{\rm{mg-meaning}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning}, \\ 
{\tt{'}}{\tt{normal}})\-\index{set-condition}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock})\-$\;${\bf  endif}\- \\ 
{\bf elseif }{\rm{normal}}\,({\rm{mg-meaning}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{normal} \\ 
{\bf then }{\tt{2}} $+$ {\rm{clock}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
{\bf else }{\rm{clock}}\,(\=\+{\rm{begin-body}}\,({\it{stmt\/}})\index{begin-body}, \\ 
{\it{proc-list\/}}, \\ 
{\it{mg-state\/}}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock}$\;${\bf  endif}\- \\ 
{\bf else }{\tt{0}}$\;${\bf  endif}\-)\-\-
\end{tabbing}


\begin{tabbing}{\sc Theorem}:  clock-proc-call \\ \index{clock-proc-call}
\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{proc-call-mg}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{clock}}\,({\it{stmt\/}}, {\it{proc-list\/}}, {\it{mg-state\/}}, {\it{n\/}})\index{clock} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{n\/}} $\not\simeq {\tt{0}}$) $\wedge$ {\rm{normal}}\,({\it{mg-state\/}})\index{normal} \\ 
{\bf then }\=\+{\rm{data-length}}\,({\rm{def-locals}}\,({\rm{fetch-called-def}}\,({\it{stmt\/}}, {\it{proc-list\/}})\index{fetch-called-def})\index{def-locals})\index{data-length} \\ 
$+$$\;\;\;\;${\rm{length}}\,({\rm{def-locals}}\,({\rm{fetch-called-def}}\,({\it{stmt\/}}, {\it{proc-list\/}})\index{fetch-called-def})\index{def-locals})\index{length} \\ 
$+$$\;\;\;\;${\rm{length}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})\index{length} \\ 
$+$$\;\;\;\;${\tt{1}} \\ 
$+$$\;\;\;\;${\rm{clock}}\,(\=\+{\rm{def-body}}\,({\rm{fetch-called-def}}\,({\it{stmt\/}}, {\it{proc-list\/}})\index{fetch-called-def})\index{def-body}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{make-call-environment}}\,(\=\+{\it{mg-state\/}}, \\ 
{\it{stmt\/}}, \\ 
{\rm{fetch-called-def}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{fetch-called-def})\-\index{make-call-environment}, \\ 
{\it{n\/}} $-\;1$)\-\index{clock} \\ 
$+$$\;\;\;\;${\tt{5}} \\ 
$+$$\;\;\;\;$\=\+{\bf if }{\rm{normal}}\,({\rm{mg-meaning}}\,(\=\+{\rm{def-body}}\,({\rm{fetch-called-def}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{fetch-called-def})\index{def-body}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{make-call-environment}}\,(\=\+{\it{mg-state\/}}, \\ 
{\it{stmt\/}}, \\ 
{\rm{fetch-called-def}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}})\-\index{fetch-called-def})\-\index{make-call-environment}, \\ 
{\it{n\/}} $-\;1$)\-\index{mg-meaning})\index{normal}$\;\;${\bf then }{\tt{1}} \\ 
{\bf else }{\tt{3}}$\;${\bf  endif}\-\- \\ 
{\bf else }{\tt{0}}$\;${\bf  endif}\-)\-\-
\end{tabbing}


\begin{tabbing}{\sc Theorem}:  clock-predefined-proc-call \\ \index{clock-predefined-proc-call}
\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{predefined-proc-call-mg}}) \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{clock}}\,({\it{stmt\/}}, {\it{proc-list\/}}, {\it{mg-state\/}}, {\it{n\/}})\index{clock} \\ 
$=$$\;\;\;\;$\=\+{\bf if }({\it{n\/}} $\not\simeq {\tt{0}}$) $\wedge$ {\rm{normal}}\,({\it{mg-state\/}})\index{normal} \\ 
{\bf then }{\rm{predefined-proc-call-clock}}\,({\it{stmt\/}}, {\it{mg-state\/}})\index{predefined-proc-call-clock} \\ 
{\bf else }{\tt{0}}$\;${\bf  endif}\-)\-\-
\end{tabbing}

\begin{tabbing}{\sc Definition}:\index{map-down} \\  
\=\+{\rm{map-down}}\,({\it{mg-state\/}}, {\it{proc-list\/}}, {\it{ctrl-stk\/}}, {\it{temp-stk\/}}, {\it{addr\/}}, {\it{cond-list\/}})\index{map-down} \\ 
$=$$\;\;\;\;${\rm{p-state}}\,(\=\+{\it{addr\/}}, \\ 
{\it{ctrl-stk\/}}, \\ 
{\rm{map-down-values}}\,(\=\+{\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist}, \\ 
{\rm{bindings}}\,({\rm{top}}\,({\it{ctrl-stk\/}})\index{top})\index{bindings}, \\ 
{\it{temp-stk\/}})\-\index{map-down-values}, \\ 
{\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list}, \\ 
{\rm{list}}\,({\rm{list}}\,({\tt{'}}{\tt{c-c}}, {\rm{mg-cond-to-p-nat}}\,({\rm{cc}}\,({\it{mg-state\/}})\index{cc}, {\it{cond-list\/}})\index{mg-cond-to-p-nat})), \\ 
{\sc{mg-max-ctrl-stk-size}}\index{mg-max-ctrl-stk-size}, \\ 
{\sc{mg-max-temp-stk-size}}\index{mg-max-temp-stk-size}, \\ 
{\sc{mg-word-size}}\index{mg-word-size}, \\ 
{\tt{'}}{\tt{run}})\-\index{p-state}\-
\end{tabbing}

\begin{verbatim};; I need the hyp that cc is not 'leave for this theorem because cond-subsetp does not
;; preserves ok-cc unless cond is not 'leave, but I can prove that meaning never
;; returns leave anyway.

\end{verbatim}\begin{tabbing}{\sc Theorem}:  map-up-vars-inverts-map-down \\ \index{map-up-vars-inverts-map-down}
\=\+(\=\+{\rm{all-cars-unique}}\,({\it{mg-vars\/}})\index{all-cars-unique} \\ 
$\wedge$$\;\;\;\;${\rm{mg-alistp}}\,({\it{mg-vars\/}})\index{mg-alistp} \\ 
$\wedge$$\;\;\;\;${\rm{no-p-aliasing}}\,({\it{bindings\/}}, {\it{mg-vars\/}})\index{no-p-aliasing} \\ 
$\wedge$$\;\;\;\;${\rm{mg-vars-list-ok-in-p-state}}\,({\it{mg-vars\/}}, {\it{bindings\/}}, {\it{temp-stk\/}})\index{mg-vars-list-ok-in-p-state})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{map-up-vars-list}}\,(\=\+{\it{bindings\/}}, \\ 
{\rm{map-down-values}}\,({\it{mg-vars\/}}, {\it{bindings\/}}, {\it{temp-stk\/}})\index{map-down-values}, \\ 
{\rm{signature}}\,({\it{mg-vars\/}})\index{signature})\-\index{map-up-vars-list} \\ 
$=$$\;\;\;\;${\it{mg-vars\/}})\-\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  cond-subset-preserves-ok-cc \\ \index{cond-subset-preserves-ok-cc}
\=\+(\=\+({\it{cc\/}} $\not=$ {\tt{'}}{\tt{leave}}) \\ 
$\wedge$$\;\;\;\;${\rm{cond-subsetp}}\,({\it{r-cond-list\/}}, {\it{t-cond-list\/}})\index{cond-subsetp} \\ 
$\wedge$$\;\;\;\;${\rm{ok-cc}}\,({\it{cc\/}}, {\it{r-cond-list\/}})\index{ok-cc})\- \\ 
$\rightarrow$$\;\;\;\;${\rm{ok-cc}}\,({\it{cc\/}}, {\it{t-cond-list\/}})\index{ok-cc}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  map-up-inverts-map-down \\ \index{map-up-inverts-map-down}
\=\+(\=\+{\rm{all-cars-unique}}\,({\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\index{all-cars-unique} \\ 
$\wedge$$\;\;\;\;${\rm{ok-mg-statep}}\,({\it{mg-state\/}}, {\it{r-cond-list\/}})\index{ok-mg-statep} \\ 
$\wedge$$\;\;\;\;${\rm{cond-subsetp}}\,({\it{r-cond-list\/}}, {\it{t-cond-list\/}})\index{cond-subsetp} \\ 
$\wedge$$\;\;\;\;${\rm{mg-vars-list-ok-in-p-state}}\,(\=\+{\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist}, \\ 
{\rm{bindings}}\,({\rm{top}}\,({\it{ctrl-stk\/}})\index{top})\index{bindings}, \\ 
{\it{temp-stk\/}})\-\index{mg-vars-list-ok-in-p-state} \\ 
$\wedge$$\;\;\;\;${\rm{no-p-aliasing}}\,({\rm{bindings}}\,({\rm{top}}\,({\it{ctrl-stk\/}})\index{top})\index{bindings}, {\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\index{no-p-aliasing} \\ 
$\wedge$$\;\;\;\;$({\rm{cc}}\,({\it{mg-state\/}})\index{cc} $\not=$ {\tt{'}}{\tt{leave}}) \\ 
$\wedge$$\;\;\;\;$($\neg$ {\rm{resource-errorp}}\,({\it{mg-state\/}})\index{resource-errorp}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{map-up}}\,(\=\+{\rm{map-down}}\,(\=\+{\it{mg-state\/}}, \\ 
{\it{proc-list\/}}, \\ 
{\it{ctrl-stk\/}}, \\ 
{\it{temp-stk\/}}, \\ 
{\it{addr\/}}, \\ 
{\it{t-cond-list\/}})\-\index{map-down}, \\ 
{\rm{signature}}\,({\rm{mg-alist}}\,({\it{mg-state\/}})\index{mg-alist})\index{signature}, \\ 
{\it{t-cond-list\/}})\-\index{map-up} \\ 
$=$$\;\;\;\;${\it{mg-state\/}})\-\-
\end{tabbing}

\begin{verbatim};; These are used in the proofs which follow!

\end{verbatim}\begin{tabbing}{\sc Theorem}:  call-exact-time-hyps1 \\ \index{call-exact-time-hyps1}
\=\+(\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{proc-call-mg}}) \\ 
$\wedge$$\;\;\;\;${\rm{ok-mg-statement}}\,({\it{stmt\/}}, {\it{r-cond-list\/}}, {\it{name-alist\/}}, {\it{proc-list\/}})\index{ok-mg-statement} \\ 
$\wedge$$\;\;\;\;${\rm{ok-mg-def-plistp}}\,({\it{proc-list\/}})\index{ok-mg-def-plistp})\- \\ 
$\rightarrow$$\;\;\;\;${\rm{ok-mg-statement}}\,(\=\+{\rm{def-body}}\,({\rm{fetch-called-def}}\,({\it{stmt\/}}, {\it{proc-list\/}})\index{fetch-called-def})\index{def-body}, \\ 
{\rm{make-cond-list}}\,({\rm{fetch-called-def}}\,({\it{stmt\/}}, {\it{proc-list\/}})\index{fetch-called-def})\index{make-cond-list}, \\ 
{\rm{make-name-alist}}\,({\rm{fetch-called-def}}\,({\it{stmt\/}}, {\it{proc-list\/}})\index{fetch-called-def})\index{make-name-alist}, \\ 
{\it{proc-list\/}})\-\index{ok-mg-statement}\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  resources-adequate-temp-stk-not-max \\ \index{resources-adequate-temp-stk-not!-max}
\=\+($\neg$ {\rm{resources-inadequatep}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{list}}\,({\rm{length}}\,({\it{temp-stk\/}})\index{length}, {\rm{p-ctrl-stk-size}}\,({\it{ctrl-stk\/}})\index{p-ctrl-stk-size}))\-\index{resources-inadequatep}) \\ 
$\rightarrow$$\;\;\;\;$(({\rm{length}}\,({\it{temp-stk\/}})\index{length} $<$ {\sc{mg-max-temp-stk-size}}\index{mg-max-temp-stk-size}) $=$ {\bf{t}})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  plus-difference-cancellation \\ \index{plus-difference-cancellation}
(({\it{x\/}} $-$ {\it{y\/}}) $\not\simeq {\tt{0}}$) $\rightarrow$ ((({\it{x\/}} $-$ {\it{y\/}}) $+$ {\it{y\/}}) $=$ {\rm{fix}}\,({\it{x\/}}))
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  lessp-difference-lemma1 \\ \index{lessp-difference-lemma1}
(({\it{n\/}} $<$ ({\it{r\/}} $+$ {\it{l\/}})) $\wedge$ ({\it{r\/}} $<$ ({\it{m\/}} $-$ {\it{l\/}}))) $\rightarrow$ (({\it{n\/}} $<$ {\it{m\/}}) $=$ {\bf{t}})
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  resources-adequate-temp-stk-not-max2 \\ \index{resources-adequate-temp-stk-not!-max2}
\=\+(\=\+($\neg$ {\rm{resources-inadequatep}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{list}}\,({\rm{length}}\,({\it{temp-stk\/}})\index{length}, {\rm{p-ctrl-stk-size}}\,({\it{ctrl-stk\/}})\index{p-ctrl-stk-size}))\-\index{resources-inadequatep}) \\ 
$\wedge$$\;\;\;\;$({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{predefined-proc-call-mg}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $<$ (\=\+{\rm{predefined-proc-call-temp-stk-requirement}}\,({\rm{call-name}}\,({\it{stmt\/}})\index{call-name})\index{predefined-proc-call-temp-stk-req!uirement} \\ 
$+$$\;\;\;\;${\rm{length}}\,({\it{temp-stk\/}})\index{length})\-))\- \\ 
$\rightarrow$$\;\;\;\;$(({\it{n\/}} $<$ {\sc{mg-max-temp-stk-size}}\index{mg-max-temp-stk-size}) $=$ {\bf{t}})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  lessp-difference-lemma3 \\ \index{lessp-difference-lemma3}
(({\it{n\/}} $\leq$ {\it{p\/}}) $\wedge$ ({\it{p\/}} $<$ ({\it{m\/}} $-$ {\it{c\/}}))) $\rightarrow$ (({\it{m\/}} $<$ ({\it{n\/}} $+$ {\it{c\/}})) $=$ {\bf{f}})
\end{tabbing}


\noindent{\sc Event}:   Disable lessp-difference-lemma3.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  resources-adequate-ctrl-stk-not-max \\ \index{resources-adequate-ctrl-stk-not!-max}
\=\+(\=\+($\neg$ {\rm{resources-inadequatep}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{list}}\,({\rm{length}}\,({\it{temp-stk\/}})\index{length}, {\rm{p-ctrl-stk-size}}\,({\it{ctrl-stk\/}})\index{p-ctrl-stk-size}))\-\index{resources-inadequatep}) \\ 
$\wedge$$\;\;\;\;$({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{predefined-proc-call-mg}}) \\ 
$\wedge$$\;\;\;\;$({\it{n\/}} $\leq$ {\rm{predefined-proc-call-p-frame-size}}\,({\rm{call-name}}\,({\it{stmt\/}})\index{call-name})\index{predefined-proc-call-p-frame-si!ze}))\- \\ 
$\rightarrow$$\;\;\;\;$(({\sc{mg-max-ctrl-stk-size}}\index{mg-max-ctrl-stk-size} $<$ ({\it{n\/}} $+$ {\rm{p-ctrl-stk-size}}\,({\it{ctrl-stk\/}})\index{p-ctrl-stk-size})) $=$ {\bf{f}})\-
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  lessp-transitive3 \\ \index{lessp-transitive3}
(({\it{y\/}} $<$ {\it{n\/}}) $\wedge$ ({\it{n\/}} $<$ ({\it{m\/}} $-$ {\it{x\/}}))) $\rightarrow$ ((({\it{x\/}} $+$ {\it{y\/}}) $<$ {\it{m\/}}) $=$ {\bf{t}})
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  lessp-difference \\ \index{lessp-difference}
({\it{y\/}} $<$ ({\it{m\/}} $-$ {\it{x\/}})) $\rightarrow$ ((({\it{x\/}} $+$ {\it{y\/}}) $<$ {\it{m\/}}) $=$ {\bf{t}})
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  resources-proc-call-temp-stk-ok \\ \index{resources-proc-call-temp-stk-ok}
\=\+(\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{proc-call-mg}}) \\ 
$\wedge$$\;\;\;\;$($\neg$ {\rm{resources-inadequatep}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{list}}\,(\=\+{\rm{length}}\,({\it{temp-stk\/}})\index{length}, \\ 
{\rm{p-ctrl-stk-size}}\,({\it{ctrl-stk\/}})\index{p-ctrl-stk-size})\-)\-\index{resources-inadequatep}))\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+(\=\+(\=\+{\rm{length}}\,({\it{temp-stk\/}})\index{length} \\ 
$+$$\;\;\;\;${\rm{data-length}}\,({\rm{def-locals}}\,({\rm{fetch-called-def}}\,({\it{stmt\/}}, {\it{proc-list\/}})\index{fetch-called-def})\index{def-locals})\index{data-length} \\ 
$+$$\;\;\;\;${\rm{length}}\,({\rm{def-locals}}\,({\rm{fetch-called-def}}\,({\it{stmt\/}}, {\it{proc-list\/}})\index{fetch-called-def})\index{def-locals})\index{length} \\ 
$+$$\;\;\;\;${\rm{length}}\,({\rm{call-actuals}}\,({\it{stmt\/}})\index{call-actuals})\index{length})\- \\ 
$<$$\;\;\;\;${\sc{mg-max-temp-stk-size}}\index{mg-max-temp-stk-size})\- \\ 
$=$$\;\;\;\;${\bf{t}})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable resources-proc-call-temp-stk-ok.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  user-defined-def-locals-nil \\ \index{user-defined-def-locals-nil}
\=\+(\=\+{\rm{ok-mg-def-plistp}}\,({\it{proc-list\/}})\index{ok-mg-def-plistp} \\ 
$\wedge$$\;\;\;\;$({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{proc-call-mg}}) \\ 
$\wedge$$\;\;\;\;${\rm{ok-mg-statement}}\,({\it{stmt\/}}, {\it{r-cond-list\/}}, {\it{name-alist\/}}, {\it{proc-list\/}})\index{ok-mg-statement})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{length}}\,({\rm{caddr}}\,({\rm{assoc}}\,({\rm{call-name}}\,({\it{stmt\/}})\index{call-name}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list})))\index{length} \\ 
$=$$\;\;\;\;${\tt{0}})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable user-defined-def-locals-nil.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  user-defined-def-formals-rewrite \\ \index{user-defined-def-formals-rewrite}
\=\+(\=\+{\rm{ok-mg-def-plistp}}\,({\it{proc-list\/}})\index{ok-mg-def-plistp} \\ 
$\wedge$$\;\;\;\;$({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{proc-call-mg}}) \\ 
$\wedge$$\;\;\;\;${\rm{ok-mg-statement}}\,({\it{stmt\/}}, {\it{r-cond-list\/}}, {\it{name-alist\/}}, {\it{proc-list\/}})\index{ok-mg-statement})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+{\rm{length}}\,({\rm{cadr}}\,({\rm{assoc}}\,({\rm{call-name}}\,({\it{stmt\/}})\index{call-name}, {\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list})))\index{length} \\ 
$=$$\;\;\;\;$(\=\+{\rm{length}}\,({\rm{def-locals}}\,({\rm{assoc}}\,({\rm{call-name}}\,({\it{stmt\/}})\index{call-name}, {\it{proc-list\/}}))\index{def-locals})\index{length} \\ 
$+$$\;\;\;\;${\rm{length}}\,({\rm{def-formals}}\,({\rm{assoc}}\,({\rm{call-name}}\,({\it{stmt\/}})\index{call-name}, {\it{proc-list\/}}))\index{def-formals})\index{length})\-)\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable user-defined-def-formals-rewrite.

\addvspace{18pt}

\begin{tabbing}{\sc Theorem}:  difference-preserves-lessp2 \\ \index{difference-preserves-lessp2}
({\it{n\/}} $<$ {\it{m\/}}) $\rightarrow$ ((({\it{n\/}} $-$ {\it{k\/}}) $<$ {\it{m\/}}) $=$ {\bf{t}})
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  plus-lessp \\ \index{plus-lessp}
(({\it{n\/}} $+$ {\it{m\/}} $+$ {\it{x\/}}) $<$ ({\it{m\/}} $+$ {\it{n\/}})) $=$ {\bf{f}}
\end{tabbing}

\begin{tabbing}{\sc Theorem}:  resources-proc-call-ctrl-stk-ok \\ \index{resources-proc-call-ctrl-stk-ok}
\=\+(\=\+({\rm{car}}\,({\it{stmt\/}}) $=$ {\tt{'}}{\tt{proc-call-mg}}) \\ 
$\wedge$$\;\;\;\;$($\neg$ {\rm{resources-inadequatep}}\,(\=\+{\it{stmt\/}}, \\ 
{\it{proc-list\/}}, \\ 
{\rm{list}}\,(\=\+{\rm{length}}\,({\it{temp-stk\/}})\index{length}, \\ 
{\rm{p-ctrl-stk-size}}\,({\it{ctrl-stk\/}})\index{p-ctrl-stk-size})\-)\-\index{resources-inadequatep}) \\ 
$\wedge$$\;\;\;\;${\rm{ok-mg-statement}}\,({\it{stmt\/}}, {\it{r-cond-list\/}}, {\it{name-alist\/}}, {\it{proc-list\/}})\index{ok-mg-statement} \\ 
$\wedge$$\;\;\;\;${\rm{ok-mg-def-plistp}}\,({\it{proc-list\/}})\index{ok-mg-def-plistp} \\ 
$\wedge$$\;\;\;\;${\rm{user-defined-procp}}\,({\it{subr\/}}, {\it{proc-list\/}})\index{user-defined-procp})\- \\ 
$\rightarrow$$\;\;\;\;$(\=\+(\=\+{\sc{mg-max-ctrl-stk-size}}\index{mg-max-ctrl-stk-size} \\ 
$<$$\;\;\;\;$(\=\+{\tt{2}} \\ 
$+$$\;\;\;\;${\rm{length}}\,({\rm{cadr}}\,({\rm{assoc}}\,(\=\+{\rm{call-name}}\,({\it{stmt\/}})\index{call-name}, \\ 
{\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list})\-))\index{length} \\ 
$+$$\;\;\;\;${\rm{length}}\,({\rm{caddr}}\,({\rm{assoc}}\,(\=\+{\rm{call-name}}\,({\it{stmt\/}})\index{call-name}, \\ 
{\rm{translate-proc-list}}\,({\it{proc-list\/}})\index{translate-proc-list})\-))\index{length} \\ 
$+$$\;\;\;\;${\rm{p-ctrl-stk-size}}\,({\it{ctrl-stk\/}})\index{p-ctrl-stk-size})\-)\- \\ 
$=$$\;\;\;\;${\bf{f}})\-\-
\end{tabbing}


\noindent{\sc Event}:   Disable resources-proc-call-ctrl-stk-ok.

\addvspace{18pt}



\noindent{\sc Event}:   Make the library {\tt{"c5"}}.

\addvspace{18pt}

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