249 lines
No EOL
8.3 KiB
TeX
Executable file
249 lines
No EOL
8.3 KiB
TeX
Executable file
% ..............................................................................
|
|
% Demo of the fau-beamer template.
|
|
%
|
|
% Copyright 2022 by Tim Roith <tim.roith@fau.de>
|
|
%
|
|
% This program can be redistributed and/or modified under the terms
|
|
% of the GNU Public License, version 2.
|
|
%
|
|
% ------------------------------------------------------------------------------
|
|
\documentclass[final]{beamer}
|
|
|
|
% ========================================================================================
|
|
% Theme: inner, outer, font and colors
|
|
% ----------------------------------------------------------------------------------------
|
|
\usepackage[institute=Tech,
|
|
%SecondLogo = template-art/FAUWortmarkeBlau.pdf,
|
|
%ThirdLogo = template-art/FAUWortmarkeBlau.pdf,
|
|
%WordMark=None,
|
|
aspectratio=169,
|
|
fontsize=11,
|
|
fontbaselineskip=13,
|
|
scale=1.
|
|
]{styles/beamerthemefau}
|
|
% ----------------------------------------------------------------------------------------
|
|
% Input and output encoding
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage[utf8]{inputenc}
|
|
% ----------------------------------------------------------------------------------------
|
|
% Language settings
|
|
\usepackage[german]{babel}
|
|
|
|
% ========================================================================================
|
|
% Fonts
|
|
% - Helvet is loaded by styles/beamerfonts
|
|
% - We use serif for math environements
|
|
% - isomath is used for upGreek letters
|
|
% ----------------------------------------------------------------------------------------
|
|
\usepackage{isomath}
|
|
\usefonttheme[onlymath]{serif}
|
|
\usepackage{exscale}
|
|
\usepackage{anyfontsize}
|
|
\setbeamercolor{alerted text}{fg=BaseColor}
|
|
% ----------------------------------------------------------------------------------------
|
|
% custom commands for symbols
|
|
\usepackage{styles/symbols}
|
|
|
|
\usepackage{tikz-cd}
|
|
\usetikzlibrary{cd, babel}
|
|
|
|
% ========================================================================================
|
|
% Setup for Titlepage
|
|
% ----------------------------------------------------------------------------------------
|
|
\title[fau-beamer]{Theorie der Programmierung}
|
|
\subtitle{\texorpdfstring{Übung 07 - Rekursion und der einfach getypte $\lambda$-Kalkül}{Übung 05 - Rekursion und der einfach getypte Lambda-Kalkül}}
|
|
\author[L. Vatthauer]{
|
|
Leon Vatthauer}
|
|
%
|
|
|
|
% Instead of \institute you can also use the \thanks command
|
|
% ------------------------------------------------
|
|
%\author[T. Roith]{
|
|
%Tim Roith\thanks{Friedrich-Alexander Universität Erlangen-Nürnberg, Department Mathematik}\and%
|
|
%Second Author\thanks{Second Insitute}\and%
|
|
%Third Author\thanks{Third Insitute}%
|
|
%}
|
|
|
|
\date{\today}
|
|
|
|
|
|
% ================================================
|
|
% Bibliography
|
|
% ------------------------------------------------
|
|
\usepackage{csquotes}
|
|
\usepackage[style=alphabetic, %alternatively: numeric, numeric-comp, and other from biblatex
|
|
defernumbers=true,
|
|
useprefix=true,%
|
|
giveninits=true,%
|
|
hyperref=true,%
|
|
autocite=inline,%
|
|
maxcitenames=5,%
|
|
maxbibnames=20,%
|
|
uniquename=init,%
|
|
sortcites=true,% sort citations when multiple entries are passed to one cite command
|
|
doi=true,%
|
|
isbn=false,%
|
|
url=false,%
|
|
eprint=false,%
|
|
backend=biber%
|
|
]{biblatex}
|
|
\addbibresource{bibliography.bib}
|
|
\setbeamertemplate{bibliography item}[text]
|
|
\babeltags{en=english}
|
|
|
|
% ================================================
|
|
% Hyperref and setup
|
|
% ------------------------------------------------
|
|
\usepackage{hyperref}
|
|
\hypersetup{
|
|
colorlinks = true,
|
|
final=true,
|
|
plainpages=false,
|
|
pdfstartview=FitV,
|
|
pdftoolbar=true,
|
|
pdfmenubar=true,
|
|
pdfencoding=auto,
|
|
psdextra,
|
|
bookmarksopen=true,
|
|
bookmarksnumbered=true,
|
|
breaklinks=true,
|
|
linktocpage=true,
|
|
urlcolor=BaseColor,
|
|
citecolor=BaseColor,
|
|
linkcolor=BaseColor,
|
|
unicode = true
|
|
}
|
|
|
|
% ================================================
|
|
% Additional packages
|
|
% ------------------------------------------------
|
|
\usepackage{listings}
|
|
\usepackage{lstautogobble} % Fix relative indenting
|
|
\usepackage{color} % Code coloring
|
|
\usepackage{zi4} % Nice font
|
|
|
|
\definecolor{bluekeywords}{rgb}{0.13, 0.13, 1}
|
|
\definecolor{greencomments}{rgb}{0, 0.5, 0}
|
|
\definecolor{redstrings}{rgb}{0.9, 0, 0}
|
|
\definecolor{graynumbers}{rgb}{0.5, 0.5, 0.5}
|
|
\lstset{
|
|
%autogobble,
|
|
columns=fullflexible,
|
|
showspaces=false,
|
|
showtabs=false,
|
|
breaklines=true,
|
|
showstringspaces=false,
|
|
breakatwhitespace=true,
|
|
escapeinside={(*@}{@*)},
|
|
commentstyle=\color{greencomments},
|
|
keywordstyle=\color{bluekeywords},
|
|
stringstyle=\color{redstrings},
|
|
numberstyle=\color{graynumbers},
|
|
basicstyle=\ttfamily\normalsize,
|
|
mathescape=true,
|
|
%frame=l,
|
|
framesep=12pt,
|
|
xleftmargin=.1\textwidth,%12pt,
|
|
tabsize=4,
|
|
captionpos=b
|
|
}
|
|
% end of listings setup
|
|
|
|
% ================================================
|
|
% Various custom commands
|
|
% ------------------------------------------------
|
|
%\setbeameroption{show notes on second screen}
|
|
\begingroup\expandafter\expandafter\expandafter\endgroup
|
|
\expandafter\ifx\csname pdfsuppresswarningpagegroup\endcsname\relax
|
|
\else
|
|
\pdfsuppresswarningpagegroup=1\relax
|
|
\fi
|
|
% Change color for cite locally
|
|
\newcommand{\colorcite}[3]{{\hypersetup{citecolor=#1}{\cite[#2]{#3}}}}
|
|
% ------------------------------------------------
|
|
% ================================================
|
|
% The main document
|
|
% ------------------------------------------------
|
|
\begin{document}
|
|
% Title page
|
|
\begin{frame}[t, titleimage]{-}
|
|
\titlepage%
|
|
\end{frame}
|
|
|
|
\newcommand{\isaeq}{=_\alpha^?}
|
|
\newcommand{\isbr}{\rightarrow_\beta^?}
|
|
|
|
\newcommand{\betared}{\rightarrow_\beta}
|
|
\newcommand{\alphaeq}{=_\alpha}
|
|
\newcommand{\deltared}{\rightarrow_\delta}
|
|
\newcommand{\etared}{\rightarrow_\eta}
|
|
\newcommand{\betadeltared}{\rightarrow_{\beta\delta}^*}
|
|
|
|
\newcommand{\ceil}[1]{\lceil {#1} \rceil}
|
|
|
|
\newcommand{\definitionAlphaEq}{
|
|
\begin{block}{$\alpha$-Äquivalenz}
|
|
Zwei Terme $t_1, t_2$ heißen $\alpha$-Äquivalent, wenn sie durch Umbenennung gebundener Variablen auseinander hervorgehen. Formal:
|
|
$$\lambda x.t \alphaeq \lambda y.t[y / x]\quad\text{wenn } y \not\in FV(t)$$
|
|
\end{block}
|
|
}
|
|
|
|
\newcommand{\definitionBetaReduction}{
|
|
\begin{block}{$\beta$-Reduktion}
|
|
Die $\beta$-Reduktion modelliert das Ausrechnen einer Funktionsanwendung, z.B: $(\lambda x.3 + x)\; 5 \betared 3 + 5$
|
|
|
|
Die Einschrittreduktion $\betared$ ist:
|
|
$$C((\lambda x.t)\;s) \rightarrow_\beta C(t[s / x])$$
|
|
\end{block}
|
|
}
|
|
\newcommand{\churchnumerals}{
|
|
\begin{block}{Church-Numerale}
|
|
\begin{equation*}\ceil{n} := \lambda f\;a.\underbrace{f(f(f(\ldots f}_n\; a)))\tag{1}\end{equation*}
|
|
\noindent
|
|
\begin{minipage}{0.45\textwidth}
|
|
\begin{align*}
|
|
&zero = \lambda f\;a.a\\
|
|
&succ\;n = \lambda f\;a.f\;(n\;f\;a)
|
|
\end{align*}
|
|
\end{minipage}
|
|
\begin{minipage}{0.45\textwidth}
|
|
\begin{alignat*}{2}
|
|
&one &&= succ\;zero\\
|
|
&two &&= succ\;one\\
|
|
&three &&= succ\;two\\
|
|
&four &&= succ\;three
|
|
\end{alignat*}
|
|
\end{minipage}
|
|
\end{block}
|
|
}
|
|
|
|
\AtBeginSection{}
|
|
|
|
% Introduction
|
|
\section{Aufgabe 1 - Rekursive Definitionen II}
|
|
\begin{frame}[t, fragile]{Aufgabe 1}{Rekursive Definitionen II}
|
|
|
|
Wir erinnern uns an die rekursiv definierte Fakultätsfunktion vom letzten Blatt:
|
|
\begin{lstlisting}[language=haskell]
|
|
fact n = if n $\leq$ $\ceil{\texttt{1}}$ then $\ceil{\texttt{1}}$ else n * (fact (n - $\ceil{\texttt{1}}$))
|
|
\end{lstlisting}
|
|
Wir wollen zeigen, dass \texttt{fact} tatsächlich eine korrekte Implementierung der Fakultätsfunktion ist, genauer, dass $fact \ceil{n} \betadeltared \ceil{n!}$ für jede natürliche Zahl $n$.
|
|
\\\;\\
|
|
\begin{enumerate}
|
|
\item Bevor wir mit dem Beweis beginnen können, benötigen wir zunächst entsprechende Aussagen über die in obiger Definition von \texttt{fact} verwendeten Funktionen und Operationen.
|
|
Zum Beispiel benötigen wir, dass $\ceil{n} * \ceil{m} \betadeltared \ceil{n * m}$ für alle $n, m \in \mathbb{N}$. Ergänzen Sie die Aussagen für die restlichen Operationen.
|
|
Wir werden diese im Folgenden ohne gesonderten Beweis verwenden.
|
|
\\\;\\
|
|
\pause
|
|
\item Beweisen Sie nun per Induktion, dass $fact \ceil{n} \betadeltared \ceil{n!}$ für alle $n \in \mathbb{N}$. Kennzeichnen Sie dabei, an welchen Stellen die Eigenschaften aus Teilaufgabe 1 einfließen.
|
|
\end{enumerate}
|
|
\end{frame}
|
|
|
|
\section{Der einfach getypte Lambda-Kalkül}
|
|
\begin{frame}[t]{Der einfach getypte $\lambda$-Kalkül}
|
|
|
|
\end{frame}
|
|
|
|
% input exmple sections
|
|
%\input{sections/01_Intro_Landscape}
|
|
\end{document} |