2015-10-07 21:10:52 +02:00
\documentclass { article}
\usepackage { amsmath}
\usepackage { nccmath}
\DeclareMathSizes { 10} { 10} { 10} { 10}
\setlength { \parindent } { 0pt}
\title { Ko-Rekursion/-Induktion}
\date { }
\begin { document}
2015-10-08 10:45:48 +02:00
%\maketitle
2015-10-07 21:10:52 +02:00
\section { Korekursion}
\textbf { Gegeben:}
\begin { fleqn}
\begin { align*}
co& data Signal\: where \\
& \enspace currentSample : Signal \rightarrow Int \\
& \enspace discardSample : Signal \rightarrow Signal
\end { align*}
\end { fleqn}
\textbf { sowie:}
\begin { fleqn}
\begin { align*}
& currentSample(flat\: x) = x &
& discardSample(flat\: x) = flat\: x \\
2015-10-08 22:07:29 +02:00
& currentSample(square\: x\: y) = x &
& discardSample(square\: x\: y) = square\; y\; x
2015-10-07 21:10:52 +02:00
\end { align*}
\end { fleqn}
\textbf { Es soll gelten:} \\
sampler t s\enspace = s , wenn $ t> 0 $ und 0 sonst\\
sowie insbesondere:
\begin { fleqn}
\begin { align*}
& sampler:\: Signal\rightarrow Signal\rightarrow Signal \\
& sampler(square\: 0\: 1)(square\: x\: 0) = flat\: 0 \\
& sampler(square\: 1\: 0)(flat\: x) = square\: x\: 0 \\
\end { align*}
\end { fleqn}
\textbf { Schritt 1:} \\
$ \rightarrow $ sampler Funktion in codata-Funktionen einsetzen
\begin { fleqn}
\begin { align*}
& currentSample(sampler\: t\: s)\\
& discardSample(sampler\: t\: s)
\end { align*}
\end { fleqn}
\textbf { Schritt 2:} \\
$ \rightarrow $ Bedingung von oben bei erster Funktion anwenden also:
\begin { fleqn}
\begin { align*}
currentSample(sampler\: t\: s) = \: & if\: (currentSample\: \: t>0)\\
& then\: (currentSample\: \: s)\\
2015-10-08 20:58:43 +02:00
& else\: 0
2015-10-07 21:10:52 +02:00
\end { align*}
\end { fleqn}
\textbf { sowie zweite Formel zum Aufteilen verwenden:}
\begin { fleqn}
\begin { align*}
discardSample(sampler\: t\: s) = sampler(discardSample\: \: t)(discardSample\: \: s)
\end { align*}
\end { fleqn}
\newpage
\section { Ko-Induktion:}
\textbf { Induktionsanfang:} \\
$ \rightarrow $ anhand erster Formel 'R' aufstellen
\[
R = \{
\underbrace {
sampler(square\: 0\: 1)(square\: x\: 0)} _ { linke\: Seite} ,\underbrace { flat\: 0} _ { rechte\: Seite} \: |\: \underbrace { x\in Int} _ { von\: oben} \}
\]
$ \rightarrow $ "R ist Bisimulation" hinschreiben, linke Seite aufloesen\\
2015-10-08 22:07:29 +02:00
\[ currentSample ( \, sampler ( square \: 0 \: 1 ) ( square \: x \: 0 ) ) = 0 \]
2015-10-08 22:08:51 +02:00
$ \rightarrow $ wenn hier am Ende kein Term rauskommt, dann koennen wir einfach die \textbf { rechte Seite bei der normalen Funktion} einsetzen und selbige aufloesen:
2015-10-07 21:10:52 +02:00
\[ currentSample ( flat \; 0 ) = 0 \]
2015-10-09 13:17:16 +02:00
$ \rightarrow $ sehr gut, die rechten Seiten sind gleich wir sind hier also fertig\\ \\
\textbf { \underline { WICHTIG} Jetzt das selbe noch mit discardSample()!} \\ \\
2015-10-07 21:10:52 +02:00
\textbf { zweite Bedingung:}
2015-10-08 22:07:29 +02:00
\begin { align*}
discardSample(sampler& (square\; 1\; 0)(square\; 0\; x)) \\
=& sampler(discardSample (square\; 1\; 0))(discardSample(square\; 0\; x))
\end { align*}
2015-10-07 21:10:52 +02:00
\textit { das ist doof denn:}
2015-10-08 22:07:29 +02:00
\[ discardSample ( square \; x \; 0 ) = discardSample ( square \; 0 \; x ) \]
2015-10-07 21:10:52 +02:00
\textbf { Schritt 3:} \\
2015-10-08 22:41:09 +02:00
\[ R' = R \; \cup \; \{ \underbrace {
sampler(discardSample (square\; 1\; 0))(discardSample(square\; 0\; x))
2015-10-09 13:17:16 +02:00
} _ { aufgeloeste\; 2.\; Bedingung} ,discardSample(square\; x\; 0\, )\: |\: x\in Int\} \]
2015-10-07 21:10:52 +02:00
wir muessen jetzt zeigen:
\[
2015-10-09 13:17:16 +02:00
\underbrace { currentSample(sampler(square\: 1\: 0)(square\: 0\: x)} _ { currentSample(\, x\; 0\, )} ) = \underbrace { currentSample(square\; 0\, x)} _ { selbes\; wie\; rechts}
2015-10-07 21:10:52 +02:00
\]
passt also, jetzt wie oben auch zweite Funktion:
\[
discardSample(sampler(square\: 1\: 0)(square\: 0\: x)) = \underbrace { sampler(square\: 1\: 0)(square\: 0\: x)} _ { wieder\; linke\; Seite\; in\; R'} \] \[
2015-10-09 13:17:16 +02:00
discardSample(\, square\; x\; 0\, ) = \underbrace { discardSample(\, square\; 0\; x\, )} _ { wieder\; rechte\; Seite}
2015-10-07 21:10:52 +02:00
\]
und fertig!\\ \\
2015-10-08 21:44:34 +02:00
\section * { Sonstiges:}
Eine Relation $ \mathrm { R } \; \subset \; A ^ { \omega } \; $ x$ \; A ^ { \omega } $ heisst Bisimulation, wenn f\" ur
2015-10-08 22:41:09 +02:00
alle $ ( s,s' ) $ $ \in \; \mathrm { R } $ gilt: \\
\noindent \hspace { 1cm} currentSample s = currentSample s' \; \; \; \; weil Int zur\" uck\\
\noindent \hspace { 1cm} (discardSample\; s)\; R\; (discardSample\; t)\; \; \; \; weil wieder Signal\\ \\ \\ \\
2015-10-08 21:44:34 +02:00
Wenn R eine Bisimulation ist, dann gilt $ \mathrm { R } \; \subseteq \; id $ , d.h.
\[
sRt \Rightarrow s = t
\]
f\" ur alle s,t $ \in \; A ^ \omega $ \\ \\
2015-10-07 21:10:52 +02:00
\begin { tiny}
\copyright \ Joint-Troll-Expert-Group (JTEG) 2015
\end { tiny}
\newpage
2015-10-08 20:58:43 +02:00
\end { document}