\documentclass[a4paper]{article}
\usepackage{progm}
\analpacks
\analoldal{3. feladatsor, 13. feladat, függvényabsztarkcióval}
\newcommand{\X}{\mathbb{X}}
\begin{document}
\noindent
\emph{Feladat:} Az $x$ sorozat egy szöveget tartalmaz.  Tömörítsük a
szöveget úgy, hogy mindenütt, ahol több szóköz van egymás mellett,
csak egy szóközt hagyjunk meg!

\emph{Specifikáció:}\\
$\X = \seq(Ch)$\\
$A = \alatt{\X}{x} \times \alatt{\X}{y}$\\
$B = \alatt{\X}{x'}$\\
$Q = ( x=x' )$\\
$R = ( y=f(dom(x'))_1 )$, ahol $f:[0,dom(x')]\nyil \X\times\L, f(0):=(<>,\hamis), \forall i\in[1,dom(x')]:f(i):=F(i,f(i-1))$
\[
F(i,z):= \left\{
\begin{array}{ll}
(hiext(z_1,x_i), \hamis) & \text{, ha } x_i\ne \_ \\
(hiext(z_1,x_i), \igaz) & \text{, ha } x_i=\_ \es \nem z_2 \\
z & \text{, ha } x_i=\_ \es z_2 \\
\end{array}
\right.
\]

Ez a specifikáció visszavezethetõ a rekurzív formulával adott
függvény kiszámításának tételére, amit sorozatra írunk fel:

\begin{stuki}
  \stm{y,l:=<>,\hamis}
  \begin{WHILE}{4}{\stm{x.\dom\ne 0}}
    \begin{CASE}{2}{3}
      \WHEN{\stm{x.\lov\ne\_}}
      \stm{y:\hiext(x.\lov)}
      \stm{l:=\hamis}
      \WHEN{\stm{x.\lov=\_ \es \nem l}}
      \stm{y:\hiext(x.\lov)}
      \stm{l:=\igaz}
      \WHEN{\stm{x.\lov=\_ \es l}}
      \SKIP
    \end{CASE}
    \stm{x:\lorem}
  \end{WHILE}
\end{stuki}


\end{document}
