Ciele
- Rekurzia v $\lambda$ -kalkule
Úvod
V rámci cvičenia bude Vašou úlohou definovať a vyhodnotiť rekurzívne funkcie v $\lambda$-kalkule.
Poznámka
Riešený príklad definície a následného vyhodnotenia rekurzívnej funkcie faktoriálu je zverejnený v druhej prednáške.
Postup
Krok 1
Rekurzívne funkcie
Úloha 1.1
Majme rekurzívnu funkciu, ktorú opisuje nasledujúca rekurzívna definícia:
$$ plus(m,n)= \begin{cases} m \quad \quad \quad \quad \quad \quad \quad \quad \text{ak}~n=0,\\ plus(m+1, n-1)\quad \text{inak.} \end{cases} $$ kde $m,n \in \mathbf{N}$.
- Definujte ju ako $\lambda$-term.
- Zjednodušte zápis definovaného $\lambda$-termu využím infixných aritmetických/booleovských operátorov a syntaxou jazyka NBL.
- Definujte funkciu pomocnú funkciu vyššieho rádu $g$.
- Prostredníctvom kombinátora fixného bodu nájdite fixný bod funkcie $g$.
- Vyhodnoťte funkciu pre argumenty $3$ a $2$.
Úloha 1.2
Majme rekurzívnu funkciu, ktorú opisuje nasledujúca rekurzívna definícia:
$$ minus(m,n)= \begin{cases} m \quad \quad \quad \quad \quad \quad \quad \quad \quad \text{ak}~n=0,\\ minus(m-1,n-1) \quad \text{inak.} \end{cases} $$ kde $m,n \in \mathbf{N}$.
- Definujte ju ako $\lambda$-term.
- Zjednodušte zápis definovaného $\lambda$-termu využím infixných aritmetických/booleovských operátorov a syntaxou jazyka NBL.
- Definujte funkciu pomocnú funkciu vyššieho rádu $g$.
- Prostredníctvom kombinátora fixného bodu nájdite fixný bod funkcie $g$.
- Vyhodnoťte funkciu pre argumenty $3$ a $2$.
Úloha 1.3
Majme rekurzívnu funkciu, ktorú opisuje nasledujúca rekurzívna definícia:
$$ times(m,n)= \begin{cases} 0 \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad ~~\text{ak}~n=0,\\ m+times(m,n-1) \quad \quad \text{inak.} \end{cases} $$ kde $m,n \in \mathbf{N}$.
- Definujte ju ako $\lambda$-term.
- Zjednodušte zápis definovaného $\lambda$-termu využím infixných aritmetických/booleovských operátorov a syntaxou jazyka NBL.
- Definujte funkciu pomocnú funkciu vyššieho rádu $g$.
- Prostredníctvom kombinátora fixného bodu nájdite fixný bod funkcie $g$.
- Vyhodnoťte funkciu pre argumenty $3$ a $2$.
Úloha 1.4
Majme rekurzívnu funkciu, ktorú opisuje nasledujúca rekurzívna definícia:
$$ fib(n) = \begin{cases} 0 & \text{ak } n = 0,\\ 1 & \text{ak } n = 1,\\ fib(n-1) + fib(n-2) & \text{ak } n > 1 \end{cases} $$ kde $n \in \mathbf{N}$.
- Definujte ju ako $\lambda$-term.
- Zjednodušte zápis definovaného $\lambda$-termu využím infixných aritmetických/booleovských operátorov a syntaxou jazyka NBL.
- Definujte funkciu pomocnú funkciu vyššieho rádu $g$.
- Prostredníctvom kombinátora fixného bodu nájdite fixný bod funkcie $g$.
- Vyhodnoťte funkciu pre argument $3$.
Úloha 1.5
Majme rekurzívnu funkciu, ktorú opisuje nasledujúca rekurzívna definícia:
$$ power(a, b) = \begin{cases} 1 & \text{ak } b = 0,\\ a \times power(a, b-1) & \text{ak } b > 0 \end{cases} $$ kde $a,b \in \mathbf{N}$.
- Definujte ju ako $\lambda$-term.
- Zjednodušte zápis definovaného $\lambda$-termu využím infixných aritmetických/booleovských operátorov a syntaxou jazyka NBL.
- Definujte funkciu pomocnú funkciu vyššieho rádu $g$.
- Prostredníctvom kombinátora fixného bodu nájdite fixný bod funkcie $g$.
- Vyhodnoťte funkciu pre argumenty $2$ a $3$.
Úloha 1.6
Majme rekurzívnu funkciu, ktorú opisuje nasledujúca rekurzívna definícia:
$$ sum(n) = \begin{cases} 0 & \text{ak } n = 0,\\ n + sum(n-1) & \text{ak } n > 0 \end{cases} $$ kde $n \in \mathbf{N}$.
- Definujte ju ako $\lambda$-term.
- Zjednodušte zápis definovaného $\lambda$-termu využím infixných aritmetických/booleovských operátorov a syntaxou jazyka NBL.
- Definujte funkciu pomocnú funkciu vyššieho rádu $g$.
- Prostredníctvom kombinátora fixného bodu nájdite fixný bod funkcie $g$.
- Vyhodnoťte funkciu pre argument $3$.