latexandmore/Vorlesungen/ThProg/SystemF.tex
2015-10-07 22:40:22 +02:00

157 lines
4.7 KiB
TeX

\documentclass{article}
\usepackage{amsmath}
\usepackage{nccmath}
%\usepackage{bussproofs}
%dieses Paket koennte man fuer die typherleitung verwenden wenn man wollte
\DeclareMathSizes{10}{10}{10}{10}
\setlength{\parindent}{0pt}
\title{System F und Reduktionsreihenfolge}
\date{ }
\begin{document}
\section{Generelles}
\subsection{Normale-/Lazy-Reduktion}
- pre-order durch Baum ("von unten nach oben auswerten") \\
- leftmost-outermost\\
- Argumente zum Schluss auswerten
\begin{align*}
pow(a,pow(c,b))\:\: & mit\;linkem\;pow\;anfangen\\
& dann\;a\\
& dann\;rechtes\;pow\\
& dann\;c\\
& dann\;d
\end{align*}
\subsection{Applikative Reduktion:}
- post-order durch Baum ("von oben nach unten")\\
- leftmost-innermost\\
- als erstes die Argumente auswerten
\begin{align*}
pow(a,pow(c,b))\:\: & mit\;c\;anfangen
\enspace\;\;\;\;\;\;\;\;\;\enspace\;\;\;\;
\\
& dann\;b\\
& dann\;a\\
& dann\;rechtes\;pow\\
& dann\;linkes\;pow
\end{align*}
\subsection{How to work with Lambda}
- Buchstabe hinter $\lambda $ wegnehmen\\
- Term von der respektiven Stelle hinten entfernen\\
- alle Vorkommen des Buchstabens mit dem Term ersetzen\\
- idealerweise bei mehreren $\lambda$ in einem Term \textbf{immer} verschiedene Buchstaben verwenden
\section{SS14-Probeklausur Beispielaufgabe}
\subsection*{1) Reduktion}
\subsubsection*{a) Normal/Lazy}
\begin{align*}
pow2\;three\; &=\; three\;(mult\;two)\;one\\
&=\; \lambda f\,a\, .\,f\,(\,f\,(\,f\;a\,)(\,mult\;two)\;one\\
&=\; \lambda a\, .\, (mult\;two)\,((mult\;two)\,((mult\;two)\;a\,)\;one\\
&=\; (mult\;two)\,((mult\;two)\,((mult\;two)\;one\,)
\end{align*}
\subsubsection*{b) Aplikativer Reihenfolge}
\begin{align*}
pow2\;three\; &=\; pow2\; (\, \lambda f\,a\, .\,f\,(\,f\,(\,f\;a\,) \,)\\
&=\; (\, \lambda f\,a\, .\,f\,(\,f\,(\,f\;a\,) \,)(mult\;two)\;one\\
&=\; (\, \lambda f\,a\, .\,f\,(\,f\,(\,f\;a\,) \,)(mult\;\lambda g\,b\, .\,g\,(\,g\;b\,))\;one\\
&=\; (\, \lambda f\,a\, .\,f\,(\,f\,(\,f\;a\,) \,)(mult\;\lambda g\,b\, .\,g\,(\,g\;b\,))\;(\lambda h\,c\, .\,h\;c)\\
\end{align*}
kleine Anmerkung hierzu noch:
\[
\underbrace{(\, \lambda f\,a\, .\,f\,(\,f\,(\,f\;a\,) \,)}_{oberste\;Funktion}
\underbrace{(mult\;\lambda g\,b\, .\,g\,(\,g\;b\,))}_{erstes\;Argument}
\;
\underbrace{(\lambda h\,c\, .\,h\;c)}_{zweites\;argument}
\]
d.h. wir w\"urden hier beim ersten Argument weitermachen und "mult" aufl\"osen
(beim zweiten g\"abe es gerade auch gar nichts mehr zu machen)
\subsection*{2) Typherleitung - SS14 Beispiel}
\textbf{Typherleitung f\"ur:}
\[
\{
\,mult\;:\;
\mathrm{N}\rightarrow\mathrm{N}\rightarrow\mathrm{N},\;
one\; : \; \mathrm{N},\,two\;\mathrm{N}\,
\vdash \; \lambda n.\,n\,(\, mult \; two\,)\;one\,:\mathrm{N}\rightarrow
\mathrm{N}
\}
\]
\textbf{mit Sonderhinweis, dass die Chruch-Numerale in System F den folgenden Typ besitzen:}
\[
\mathrm{N}\; := \; \forall a.(a\,\rightarrow \, a)\, \rightarrow \, a \, \rightarrow \,a
\]
\textbf{Herleitung:}\\
%Zeile 5
\underline{
$(5)\;
\Gamma \;\cup \{\,n:\mathrm{N}\,\} \vdash
\overbrace{
n\,:\,(\,a\,\rightarrow\,a\,)\rightarrow (\,a\,\rightarrow \,a\,)
}^{per\;Definition\; =\;\mathrm{N}}
\hspace{1cm}
\overbrace{
mult:\;\mathrm{N}\rightarrow \mathrm{N}\rightarrow \mathrm{N}
}^{Ax}
\hspace{5mm}
\overbrace{
two:\;\mathrm{N}
}^{Ax}
$
}\\
%Zeile 4
\underline{
$(4)\;
\Gamma \;\cup \{\,n:\mathrm{N}\,\} \vdash
n\,:\,(\,\mathrm{N}\rightarrow \mathrm{N}\,)
\rightarrow (\,\mathrm{N}\rightarrow \mathrm{N}\,)
\hspace{2cm}
mult\;two\;\mathrm{N}\rightarrow \mathrm{N}
$
}\\
%Zeile 3
\underline{
$ (3)\;
\Gamma \; \cup \{\,n:\mathrm{N}\,\}\,
\vdash \, n\,(\,mult\;two\,)\,: \mathrm{N}\rightarrow\,\mathrm{N}
\hspace{6cm}
\;one\; : \mathrm{N}
$
}\\
%Zeile 2
\underline{
$(2)\;
\Gamma \; \cup \{\,n:\mathrm{N}\,\}\,
\vdash \, n\,(\,mult\;two\,)\;one\; : \mathrm{N}\rightarrow\,\mathrm{N}
$\hspace{48mm}}
\\
%Zeile 1
$ (1)\;
\{
\underbrace{
\,mult\;:\;
\mathrm{N}\rightarrow\mathrm{N}\rightarrow\mathrm{N},\;
one\; : \; \mathrm{N},\,two\;\mathrm{N}\,
}_{:=\Gamma}
\vdash \; \lambda n.\,n\,(\, mult \; two\,)\;one\,:\mathrm{N}\rightarrow\mathrm{N}
$
\\
\textbf{Erkl\"arungen:}\\
\begin{small}
- (1) $\rightarrow_{i}$\\
- (2)(3) $\rightarrow_e$\\
- in (3) ist $[\,one:\mathrm{N}\,]$ mit Ax fertig\\
- in (4) ???\\
- (4)(links) $\forall_{e}$ (rechts) $\rightarrow_e$\\
\end{small}
$ $\\\\
\begin{tiny}
\copyright\ Joint-Troll-Expert-Group (JTEG) 2015
\end{tiny}
\end{document}