% -*- coding: iso-8859-2 -*-
\documentclass[a4paper]{article}
\usepackage{progm}
\analpacks
\analoldal{2. feladatsor, 53. feladat}
\begin{document}
\noindent
\emph{Feladat:} Adjuk meg a $t$ mátrix egy olyan sorának indexét,
amely nem tartalmaz pozitív elemet!

\emph{Specifikáció:}\\
$\M = \vect(\Z, \vect(\Z, \Z))$ \\
$A = \alatt{\M}{t} \times \alatt{\Z}{i} \times \alatt{\L}{l}$\\
$B = \alatt{\M}{t'}$\\
$Q = ( t=t' )$\\
$R = ( Q \es l = (\exists i\in [t.\lob,t.\hib]: g(i)=0) \es l\nyil (i\in[t.\lob, t.\hib] \es g(i)=0))$, ahol $g(i):=\sum\limits_{j=t_i.\lob}^{t_i.\hib}\chi({t_i}_j>0)$

Visszavezetés a lin. ker. 2.8-ra, általánosított, mivel nem az első ilyen sort, hanem egy tetszőlegeset keresünk.

\begin{tabular}{cc}
  \parbox{5cm}{
    \begin{tabular}{ccc}
      feladat &  & lin. ker. 2.8 \\
      \hline
      $t.\lob$ & \knyil & $m$ \\
      $t.\hib$ & \knyil & $n$ \\
      $g(i)=0$ & \knyil & $\beta(i)$
    \end{tabular}
  } &
  \parbox{7cm}{
    \begin{stukibox}[7cm]
      \stm{i,l:=t.\lob-1,\hamis}
      \begin{WHILE}{2}{\stm{\nem l \es i\ne t.\hib}}
        \stm{l:=(g(i+1)=0)}
        \stm{k:=k+1}
      \end{WHILE}
    \end{stukibox}
  }
\end{tabular}

A $g(i+1)$ függvényt helyettesítsük változóval a ciklusmagban:
\begin{stuki}[7cm]
  \stm{i,l:=t.\lob-1,\hamis}
  \begin{WHILE}{3}{\stm{\nem l \es i\ne t.\hib}}
    \stm{z:=g(i+1)}
    \stm{l:=(z=0)}
    \stm{k:=k+1}
  \end{WHILE}
\end{stuki}

Most specifikáljuk és vezessük vissza a számlálásra az $z:=g(i+1)$ nem
megengedett értékadást:

\begin{tabular}{cc}
\parbox{5cm}{
$A' = \alatt{\M}{t} \times \alatt{\Z}{i} \times \alatt{\N_0}{z}$\\
$B' = \alatt{\M}{t'} \times \alatt{\Z}{i'}$\\
$Q' = ( t=t' \es i=i')$\\
$R' = ( Q \es z=\sum\limits_{j=t_{i+1}.\lob}^{t_{i+1}.\hib}\chi({t_{i}}_j>0))$
} &
\parbox{5cm}{
\begin{tabular}{ccc}
  feladat &  & számlálás \\
  \hline
  $t_{i+1}.\lob$ & \knyil & $m$ \\
  $t_{i+1}.\hib$ & \knyil & $n$ \\
  ${t_{i+1}}_j>0$ & \knyil & $\beta(j)$ \\
\end{tabular}
}
\end{tabular}

\begin{stuki}[7cm]
  \stm{k,z:=t_{i+1}.\lob-1,0}
  \begin{WHILE}{3}{\stm{k\ne t_{i+1}.\hib}}
    \begin{IF}{1}{\stm{{t_{i+1}}_{k+1} > 0}}
    \stm{z:=z+1}
    \ELSE
    \SKIP
    \end{IF}
    \stm{k:=k+1}
  \end{WHILE}
\end{stuki}

A visszavezetés paraméteres $i$ szerint.

\end{document}
