| version 1.4, 2007/06/03 11:33:05 |
version 1.5, 2007/07/11 00:44:51 |
|
|
| % 26/02/2003 - created |
% 26/02/2003 - created |
| % |
% |
| |
|
| % $Platon: doc/ztp-zbierka/04-semantika-programov.tex,v 1.3 2005-11-23 19:33:59 nepto Exp $ |
% $Platon: doc/ztp-zbierka/04-semantika-programov.tex,v 1.4 2007-06-03 11:33:05 nepto Exp $ |
| |
|
| \chapter{Sémantika programov} |
\chapter{Sémantika programov} |
| |
|
| Line 212 Konštrukcia riešenia je nasledovná: |
|
| Line 212 Konštrukcia riešenia je nasledovná: |
|
| platí $\phi_1 = \phi_2$. |
platí $\phi_1 = \phi_2$. |
| \item |
\item |
| Pri zjednodušovaní používame špeciálne pravidlo, |
Pri zjednodušovaní používame špeciálne pravidlo, |
| pomockou ktorého sa dostaneme bližšie k rieŠeniu. |
pomockou ktorého sa dostaneme bližšie k riešeniu. |
| |
|
| Musíme používať korektné pravidlo, ktorým máme |
Musíme používať korektné pravidlo, ktorým máme |
| garanatované, že nech ho použijeme ako chceme, vždy |
garanatované, že nech ho použijeme ako chceme, vždy |
| Line 254 Nájdite jeho pevný bod. |
|
| Line 254 Nájdite jeho pevný bod. |
|
| Nájdime jeho pevný bod. Keďže je funkcionál spojitý, môžeme použiť |
Nájdime jeho pevný bod. Keďže je funkcionál spojitý, môžeme použiť |
| Kleeneho vetu: |
Kleeneho vetu: |
| |
|
| $$ |
$$ |
| \begin{array}{rcl} |
\begin{array}{rcl} |
| \tau^0[\Omega] & \equiv & \Omega\\ |
\tau^0[\Omega] & \equiv & \Omega\\ |
| |
\\ |
| \tau^1[\Omega] & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0 |
\tau^1[\Omega] & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0 |
| ~\cmd{else}~ x + \tau^0[\Omega](x - 1) ~\cmd{fi}~ \equiv\\ |
~\cmd{else}~ x + \tau^0[\Omega](x - 1) ~\cmd{fi}~ \equiv\\ |
| & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0 |
& \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0 ~\cmd{else} \perp \cmd{fi}\\ |
| ~\cmd{else}~ \perp\\ |
\\ |
| \tau^2[\Omega] & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0 |
\tau^2[\Omega] & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0 |
| ~\cmd{else}~ x + \tau^1[\Omega](x - 1) ~\cmd{fi}~ \equiv\\ |
~\cmd{else}~ x + \tau^1[\Omega](x - 1) ~\cmd{fi}~ \equiv\\ |
| & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0 |
& \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0 |
| ~\cmd{else}~ x + \cmd{if}~ x - 1 = 0 |
~\cmd{else}~ x + (\cmd{if}~ x - 1 = 0 |
| ~\cmd{then}~ 0 ~\cmd{else} \perp \cmd{fi}~\cmd{fi}\\ |
~\cmd{then}~ 0 ~\cmd{else} \perp \cmd{fi}) ~\cmd{fi}\\ |
| |
\\ |
| \tau^3[\Omega] & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0 |
\tau^3[\Omega] & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0 |
| ~\cmd{else}~ x + \tau^2[\Omega](x - 1) ~\cmd{fi}~ \equiv\\ |
~\cmd{else}~ x + \tau^2[\Omega](x - 1) ~\cmd{fi}~ \equiv\\ |
| & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0 |
& \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0\\ |
| ~\cmd{else}~ x + \cmd{if}~ x - 1 = 0 |
& & \cmd{else}~ x + (\cmd{if}~ x - 1 = 0 |
| ~\cmd{then}~ 0 ~\cmd{else} |
~\cmd{then}~ 0 ~\cmd{else}~ x - 1 + (\cmd{if}~ x - 1 = 1 ~\cmd{then}~ 0 |
| x - 1 + ~\cmd{if}~ x - 1 = 1 ~\cmd{then}~ 0 ~\cmd{else} \perp |
~\cmd{else} \perp \cmd{fi}) ~\cmd{fi}) ~\cmd{fi}~ \equiv\\ |
| \cmd{fi}~\cmd{fi}~ \equiv\\ |
& \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0\\ |
| & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 0 ~\cmd{else}~ x + \cmd{if}~ x + \cmd{if} |
& & \cmd{else}~ x + (\cmd{if}~ x = 1 ~\cmd{then}~ 0 |
| x - 1 = 0 ~\cmd{then}~ 0 ~\cmd{else}~ x - 1 + \cmd{if}~ x = 2 ~\cmd{then}~ 0 |
~\cmd{else}~ x - 1 + (\cmd{if}~ x = 2 ~\cmd{then}~ 0 |
| ~\cmd{else} \perp \cmd{fi}~\cmd{fi}~\cmd{fi}\\ |
~\cmd{else} \perp \cmd{fi}) ~\cmd{fi}) ~\cmd{fi}\\ |
| ... & & |
\cdots |
| \end{array} |
\end{array} |
| $$ |
$$ |
| |
|
|
|
| |
|
| Na tomto mieste je vhodné sa zamyslieť, čo znamená najmenšia horná hranica. To je taký funkcionál, |
Na tomto mieste je vhodné sa zamyslieť, čo znamená najmenšia horná hranica. To je taký funkcionál, |
| že všetky ostatné sú od neho menej schopné. Takže $k$-ta aproximácia dokáže sumy prvých $i$ čísiel, |
že všetky ostatné sú od neho menej schopné. Takže $k$-ta aproximácia dokáže sumy prvých $i$ čísiel, |
| ale nie pre ľubovoľné~$i$. Zato pevný bod to dokáže pre hocijaké $i$. Pevný bod je teda všemohúci |
ale nie pre ľubovoľné~$i$. Zato pevný bod to dokáže pre hocijaké $i$. Pevný bod je teda najmenší, čo |
| a~zároveň najmenší všemohúci, čo dokáže nájsť našu sumu. |
dokáže nájsť našu sumu. |
| |
|
| |
\end{solution} % */ |
| |
|
| |
\begin{example} % /* |
| |
Majme nasledovnú jednoduchú fukciu: |
| |
|
| |
$$ |
| |
\begin{array}{rcl} |
| |
f_a(0) & = & 1\\ |
| |
f_a(x) & = & a \cdot f_a(x - 1) |
| |
\end{array} |
| |
$$ |
| |
|
| |
Nájdite pevný bod. |
| |
\end{example} % */ |
| |
|
| |
\begin{solution} % /* |
| |
|
| |
Najskôr to prepíšeme na funkcionál: |
| |
|
| |
$$ |
| |
\begin{array}{rcl} |
| |
\phi(x) & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 1 ~\cmd{else}~ a \cdot \phi(x - 1) ~\cmd{fi} |
| |
\end{array} |
| |
$$ |
| |
|
| |
Teraz hľadajme pevný bod: |
| |
|
| |
$$ |
| |
\begin{array}{rcl} |
| |
\tau^0[\Omega] & \equiv & \Omega\\ |
| |
\\ |
| |
\tau^1[\Omega] & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 1\\ |
| |
& & \cmd{else} \perp \cmd{fi}\\ |
| |
\\ |
| |
\tau^2[\Omega] & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 1\\ |
| |
& & \cmd{else}~ |
| |
a \cdot (\cmd{if}~ x = 1 ~\cmd{then}~ 1 ~\cmd{else} \perp \cmd{fi}) ~\cmd{fi}\\ |
| |
\\ |
| |
\tau^3[\Omega] & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 1\\ |
| |
& & \cmd{else}~ |
| |
a \cdot (\cmd{if}~ x = 1 ~\cmd{then}~ 1 ~\cmd{else}~ |
| |
a \cdot (\cmd{if}~ x = 2 ~\cmd{then}~ 1 ~\cmd{else} \perp \cmd{fi}) |
| |
~\cmd{fi}) ~\cmd{fi}\\ |
| |
\cdots |
| |
\end{array} |
| |
$$ |
| |
|
| |
Po rozpísaní štvrtého člena už môžeme vidieť ako to pekne aproximuje pevný bod. |
| |
Ten zapíšeme nasledovne: |
| |
|
| |
$$ |
| |
\begin{array}{rcl} |
| |
f_p(x) & \equiv & \cmd{if}~ x = 0 ~\cmd{then}~ 1 ~\cmd{else}~ a^x ~\cmd{fi} |
| |
\end{array} |
| |
$$ |
| |
|
| \end{solution} % */ |
\end{solution} % */ |
| |
|
| % vim: ts=4 |
% vim: ts=4 tw=100 |
| % vim600: fdl=0 fdm=marker fdc=0 fmr=/*,*/ |
% vim600: fdl=0 fdm=marker fdc=0 fmr=/*,*/ |
| |
|