| author | Christian Urban <urbanc@in.tum.de> | 
| Sat, 09 Jun 2018 21:02:04 +0100 | |
| changeset 552 | 8a79cc0b277c | 
| parent 525 | e5a004ffa681 | 
| child 577 | 1d6043a87a3e | 
| permissions | -rw-r--r-- | 
| 208 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 1 | \documentclass{article}
 | 
| 292 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
208diff
changeset | 2 | \usepackage{../style}
 | 
| 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
208diff
changeset | 3 | \usepackage{../graphics}
 | 
| 459 | 4 | \usepackage{../langs}
 | 
| 208 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 5 | |
| 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 6 | \begin{document}
 | 
| 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 7 | |
| 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 8 | \section*{Homework 9}
 | 
| 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 9 | |
| 359 
db106e5b7c4d
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
314diff
changeset | 10 | \HEADER | 
| 
db106e5b7c4d
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
314diff
changeset | 11 | |
| 208 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 12 | \begin{enumerate}
 | 
| 292 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
208diff
changeset | 13 | \item Describe what is meant by \emph{eliminating tail
 | 
| 459 | 14 | recursion}? When can this optimization be applied and | 
| 15 | why is it of benefit? | |
| 16 | ||
| 17 | \item A programming language has arithmetic expression. For an | |
| 18 | arithmetic expression the compiler of this language produces the | |
| 19 | following snippet of JVM code. | |
| 20 | ||
| 21 | \begin{lstlisting}[language=JVMIS,numbers=none]
 | |
| 22 | ldc 1 | |
| 23 | ldc 2 | |
| 24 | ldc 3 | |
| 25 | imul | |
| 26 | ldc 4 | |
| 27 | ldc 3 | |
| 28 | isub | |
| 29 | iadd | |
| 30 | iadd | |
| 31 | \end{lstlisting}
 | |
| 32 | ||
| 33 | Give the arithmetic expression that produced this code. Make sure | |
| 34 | you give all necessary parentheses. | |
| 35 | ||
| 525 | 36 | \item Describe what the following three JVM instructions do! | 
| 459 | 37 | |
| 38 | \begin{lstlisting}[language=JVMIS,numbers=none]
 | |
| 39 | iload 3 | |
| 40 | istore 1 | |
| 525 | 41 | ifeq label | 
| 459 | 42 | \end{lstlisting}
 | 
| 43 | ||
| 44 | \item \POSTSCRIPT | |
| 208 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 45 | |
| 314 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 46 | % \item It is true (I confirmed it) that | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 47 | % | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 48 | %  \begin{center} if $\varnothing$ does not occur in $r$
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 49 | %  \;\;then\;\;$L(r) \not= \{\}$ 
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 50 | %  \end{center}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 51 | % | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 52 | % \noindent | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 53 | % holds, or equivalently | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 54 | % | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 55 | %  \begin{center}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 56 | %  $L(r) = \{\}$ \;\;implies\;\; $\varnothing$ occurs in $r$.
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 57 | %  \end{center}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 58 | % | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 59 | % \noindent | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 60 | % You can prove either version by induction on $r$. The best way to | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 61 | % make more formal what is meant by `$\varnothing$ occurs in $r$', you can define | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 62 | % the following function: | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 63 | % | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 64 | %  \begin{center}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 65 | %  \begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 66 | % $occurs(\varnothing)$ & $\dn$ & $true$\\ | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 67 | % $occurs(\epsilon)$ & $\dn$ & $f\!alse$\\ | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 68 | % $occurs (c)$ & $\dn$ & $f\!alse$\\ | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 69 | % $occurs (r_1 + r_2)$ & $\dn$ & $occurs(r_1) \vee occurs(r_2)$\\ | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 70 | % $occurs (r_1 \cdot r_2)$ & $\dn$ & $occurs(r_1) \vee occurs(r_2)$\\ | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 71 | % $occurs (r^*)$ & $\dn$ & $occurs(r)$ \\ | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 72 | %  \end{tabular}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 73 | %  \end{center}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 74 | % | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 75 | % \noindent | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 76 | % Now you can prove | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 77 | % | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 78 | %  \begin{center}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 79 | %  $L(r) = \{\}$ \;\;implies\;\; $occurs(r)$.
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 80 | %  \end{center}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 81 | % | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 82 | % \noindent | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 83 | % The interesting cases are $r_1 + r_2$ and $r^*$. | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 84 | %  The other direction is not true, that is if $occurs(r)$ then $L(r) = \{\}$. A counter example
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 85 | % is $\varnothing + a$: although $\varnothing$ occurs in this regular expression, the corresponding | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 86 | % language is not empty. The obvious extension to include the not-regular expression, $\sim r$, | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 87 | % also leads to an incorrect statement. Suppose we add the clause | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 88 | % | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 89 | %  \begin{center}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 90 | %  \begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 91 | % $occurs(\sim r)$ & $\dn$ & $occurs(r)$ | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 92 | %  \end{tabular}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 93 | %  \end{center}  
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 94 | % | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 95 | % \noindent | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 96 | % to the definition above, then it will not be true that | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 97 | % | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 98 | %  \begin{center}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 99 | %  $L(r) = \{\}$ \;\;implies\;\; $occurs(r)$.
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 100 | %  \end{center}
 | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 101 | % | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 102 | % \noindent | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 103 | % Assume the alphabet contains just $a$ and $b$, find a counter example to this | 
| 
7dd5797a5ffa
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 104 | % property. | 
| 208 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 105 | |
| 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 106 | \end{enumerate}
 | 
| 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 107 | |
| 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 108 | \end{document}
 | 
| 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 109 | |
| 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 110 | %%% Local Variables: | 
| 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 111 | %%% mode: latex | 
| 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 112 | %%% TeX-master: t | 
| 
bd5a8a6b3871
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 113 | %%% End: |