Rekurzia v netypovanom $\lambda$-kalkule

Ciele

  1. 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$.