\chapter{Algorithms specifications}
\label{chap:specification}

\section{Vocabulary}

In \Vauc, we use a precise vocabulary to speak about automaton. As is
it specific to our project and some expressions may be not widely used
or approved by the automata community, we choose to define them here.

\begin{description}
\item[$\mathbb{B}$] Boole's semiring.

\item[Boolean automaton] is a ``classical'' automaton. Precisely, it
  is a automaton over a free monoid which transitions are labeled by
  letters of an alphabet with multiplicity in $\mathbb{B}$.

\item[automaton with multiplicity in $\mathbb{B}$] is an automaton
  over any kind of monoid (in \Vauc we have free monoid and product
  of free monoids) with its multiplicity in $\mathbb{B}$.

\item[realtime automaton] is an automaton over a monoid which
  transitions are labelled by letters only (not words).

\item[FMP-transducer] is a transducer over a free monoid product.

\item[RW-transducer] is a transducer over a series $\mathbb{K'}<< \mathbb{K}<<A^*>> >>$.
\end{description}

\section{Algorithms applicability in \Vauc}

%% FIXME: Precise which algorithms takes only realtime, deterministic,
%% automata as input.

%% FIXME: Precise what we can expect from resulting automaton.


\subsection{Algorithms on graph}

\begin{description}
\item[accessible] (accessible.hh)
\item[accessible\_states] (accessible.hh)
\item[coaccessible] (accessible.hh)
\item[coaccessible\_states] (accessible.hh)
\item[trim] (trim.hh)
\item[useful\_states] (trim.hh)
\item[sub\_automaton] (sub\_automaton.hh)
\item[is\_void] %% FIXME: is it called is_empty in vaucanson?
\end{description}

\subsection{Algorithms on labeled graphs}
%% Algorithmes sur les graphes étiquetés (sans interpreter les étiquettes)}

\begin{description}
\item[are\_isomorphic] (isomorph.hh)
\item[aut\_to\_exp] (aut\_to\_exp.hh)
\item[sum] (sum.hh)
\item[thompson\_of] (thompson.hh)
\item[is\_normalized] (normalized.hh)
\item[normalize] (normalized.hh)
\item[union\_of\_normalized] (normalized.hh)
\item[concatenate\_of\_normalized] (normalized.hh)
\item[star\_of\_normalized] (normalized.hh)
\item[standard\_of] (standard\_of.hh)
\item[standardize] (standard.hh)
\item[is\_standard] (standard.hh)
\item[union\_of\_standard] (standard.hh)
\item[concat\_of\_standard] (standard.hh)
\item[star\_of\_standard] (standard.hh)
\end{description}

\subsection{Algorithms on labeled graphs (epsilon-transitions are distinguish)}
%%== Algorithmes sur les graphes étiquetés ( trans. spontanees distinguees) ==

\begin{description}
\item[generalized]
\item[closure] (closure.hh)
\item[backward\_closure] (closure.hh)
\item[forward\_closure] (closure.hh)
\item[concatenate] (concatenate.hh)
\item[cut\_up] (cut\_up.hh)
\end{description}

\subsection{Algorithms on graphs labeled on $\mathbb{K}<<A^*>>$}
%%== Algorithmes sur les graphes étiquetés sur K << A* >> ==

\begin{description}
\item[is\_realtime] (realtime\_decl.hh)
\item[backward\_realtime] (backward\_realtime.hh)
\item[forward\_realtime] (forward\_realtime.hh)
\item[realtime] (realtime.hh)
\end{description}

\subsection{Algorithms on graphs labeled on series of letter with
  multiplicities ($\sum{(a, \mathbb{K}_{a*}a)}$)}
%%== Algorithmes sur les graphes étiquetés sur une série de lettres à coefficients (sum(a, k_a*a)) ==

\begin{description}
\item[product] (product.hh)
\item[eval] (eval.hh)
\item[evaluation] (evaluation.hh)
\item[is\_ambiguous]
\item[is\_deterministic] (determinize.hh)
\item[is\_sequential]
\item[quotient] (minimization\_hopcroft.hh)
\item[derived\_term\_automaton] (derived\_term\_automaton.hh)
\item[broken\_derived\_term\_automaton] (derived\_term\_automaton.hh)
\item[complete] (complete.hh)
\item[is\_complete] (complete.hh)
\item[transpose] (transpose.hh)
\end{description}

\subsection{Algorithms on Boolean automata}
%%== Algorithmes sur les automates booléens ==

\begin{description}
\item[determinize] (determinize.hh)
\item[brzozowski] (brzozowski.hh)
\item[berry\_sethi] (berry\_sethi.hh)
\item[canonical] (aci\_canonical.hh)
\item[complement] (complement.hh)
\item[minimization\_moore] (minimization\_moore.hh)
\item[co\_minimization\_moore] (minimization\_moore.hh)
\item[minimization\_hopcroft] (minimization\_hopcroft.hh)
\item[search] (search.hh)
\end{description}

\subsection{Algorithms on automata with multiplicities in $\mathbb{K}<<A^*>>$}
%%== Algorithmes sur les automates à multiplicité dans K<<A*>> (rw-transducers) ==
%% Les algorithmes V fonctionnent evidemment dans cette classe

\begin{description}
\item[domain]
\item[image]
\item[extension] (extension.hh)
\item[inverse]
\end{description}

\subsection{Algorithms on realtime transducers}
%%== Algorithmes sur les transducteurs realtime ==

\begin{description}
\item[evaluation] (evaluation.hh)
\item[realtime\_composition] (realtime\_composition.hh)
\item[realtime\_to\_fmp] (realtime\_to\_fmp.hh)
\end{description}

\subsection{Algorithms on realtime RW-transducers}
%%== Algorithmes sur les RW-transducteurs lettre a letter ==

\begin{description}
\item[letter\_to\_letter\_composition] (letter\_to\_letter\_composition.hh)
\end{description}

\subsection{Algorithms on FMP-transducers}
%%== Algorithmes sur les FMP ==

\begin{description}
\item[domain] (projections\_fmp.hh)
\item[image] (projections\_fmp.hh)
\item[extension] (extension.hh)
\item[identity] (projections\_fmp.hh)
\item[evaluation\_fmp] (evaluation\_fmp.hh)
\item[inverse]
\item[insplitting] (outsplitting.hh)
\item[outsplitting] (outsplitting.hh)
\item[sub\_normalize] (sub\_normalize.hh)
\item[normalized\_composition] (normalized\_composition.hh)
\item[fmp\_to\_realtime] (fmp\_to\_realtime.hh)
\end{description}

\subsection{Algorithms on Boolean FMP-transducers}
%%== Algorithmes sur les FMP booleens ==

\begin{description}
\item[b\_composition] (normalized\_composition.hh)
\end{description}

\subsection{Algorithms on regular expressions over $\mathbb{K}<<A^*>>$}
%%== Algorithmes sur les expressions sur K<<A*>> ==

\begin{description}
\item[flatten] (krat\_exp\_flatten.hh)
\item[expand] (krat\_exp\_expand.hh)
\end{description}




%%% Local Variables:
%%% mode: latex
%%% ispell-local-dictionary: "american"
%%% TeX-master: "vaucanson-user-manual"
%%% End:
