System F, ML-Polymorphie begonnen

This commit is contained in:
Marco Ammon 2018-10-04 23:55:01 +02:00
parent d8341f0c81
commit 2f8cdc41dc
2 changed files with 57 additions and 2 deletions

Binary file not shown.

View File

@ -1,5 +1,5 @@
\documentclass[11pt,a4paper]{scrartcl}
\usepackage[a4paper,left=1.5cm,right=3.0cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage[a4paper,left=3cm,right=3cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage[ngerman]{babel}
\usepackage{amssymb}
\usepackage{amsthm}
@ -110,7 +110,9 @@
\item Subjektreduktion: Wenn $\Gamma\vdash t:\alpha$ und $t \rightarrow_\beta^* s$, dann auch $\Gamma \vdash s:\alpha$, aber nicht umgekehrt! \satz{3.38}{45}
\end{itemize}
\section*{Induktive Datentypen}
\subsection*{Mengenkonstruktionen}
\subsection*{Mehrsortigkeit}
\subsection*{Strukturelle Induktion}
\begin{itemize}
\item über einsortige Datentypen \siehe{S. 63}
@ -135,8 +137,61 @@
\end{itemize}
\subsection*{Kodatentypen mit Alternativen}
\section*{System F}
\section*{Polymorphie}
\subsection*{Curry}
\begin{itemize}
\item Typen:\defin{5.1}{84}
\begin{align*}
\alpha, \beta \coloneqq a\ \vert\ \alpha \rightarrow \beta\ \vert\ \forall a.\alpha && (a\in V)
\end{align*}
\item Typisierung: \textbf{TODO: $\lambda \rightarrow$}, \textbf{TODO} \defin{5.1}{84}
\begin{align*}
Inhalt...
\end{align*}
\end{itemize}
\subsection*{Church-Kodierung}\siehe{S. 84}
\begin{itemize}
\item Natürliche Zahlen
\begin{align*}
\textbf{Todo}
\end{align*}
\item Paare
\begin{align*}
Inhalt...
\end{align*}
\item Summen
\begin{align*}
Inhalt...
\end{align*}
\item Listen
\begin{align*}
Inhalt...
\end{align*}
\end{itemize}
\subsection*{ML-Polymorphie}
\begin{itemize}
\item Einschränkung von System F durch $\forall$ nur auf oberster Ebene sowie Mehrfachinstanziierung polymorpher Funktionen nur in $let$-Konstrukt \siehe{S. 88}
\item Typen
\begin{equation*}
\alpha, \beta \coloneqq a\ \vert\ \alpha \rightarrow \beta
\end{equation*}
\item Typschemata
\begin{align*}
S \coloneqq \forall a_1, \ldots, a_k.\alpha &&(k\geq 0)
\end{align*}
\item Terme
\begin{equation*}
t,s \coloneqq x\ \vert\ t\ s\ \vert\ \lambda x.t\ \vert\ let\ x = t\ in\ s
\end{equation*}
\item Kontexte
\begin{align*}
\Gamma &= ( x_1:S_1,\ldots, x_n :S_n )\\
Cl(\Gamma, \alpha) &= \forall a_1,\ldots,a_k.\alpha &&\text{für $FV(\alpha)\backslash FV(\Gamma) = \lbrace a_1,\ldots,a_k \rbrace$}
\end{align*}
\item Typisierungsregeln \textbf{TODO}
\item Inversionslemma \textbf{TODO}
\item erweiterter Algorithmus W \textbf{TODO}
\end{itemize}
\section*{Reguläre Ausdrücke}
\section*{Unifikationsalgorithmus (Martelli/Montanari)}
\begin{align*}
&S \cup \lbrace x \pteq x\rbrace &&\rightarrow S &&\text{(delete)}\\