Version finale du TP de systèmes réactifs.

This commit is contained in:
Georges Dupéron 2011-12-17 10:30:50 +01:00
parent 1b6ad58fc7
commit f2ce5d59d0
2 changed files with 89 additions and 2 deletions

View File

@ -7,14 +7,14 @@
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{enumerate}
%\usepackage{centernot}
\usepackage{centernot}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{positioning,calc,chains}
\def\P{\mathcal{P}}
\def\GUi{G \cup \{i\}}
\def\nottransition#1{\stackrel{#1}{\not\longrightarrow}}%\centernot\longrightarrow}}
\def\nottransition#1{\stackrel{#1}{\centernot\longrightarrow}}
\def\transition#1{\stackrel{#1}{\longrightarrow}}
\def\Transition#1{\stackrel{#1}{\Longrightarrow}}
\def\forte{\sim}
@ -223,4 +223,91 @@ Ouvrier[ent,sortie,prend,pose,prendM,poseM] :=
Commence[ent,sortie,prend,pose,prendM,poseM](travail)
\end{verbatim}
\begin{verbatim}
Atelier[ent,sortie] :=
hide prend,pose,prendM,poseM in
(
(
Marteau[prend,pose]
|||
Maillet[prendM,poseM]
)
|[prend,pose,prendM,poseM]|
(
Ouvrier[ent,sortie,prend,pose,prendM,poseM]
|||
Ouvrier[ent,sortie,prend,pose,prendM,poseM]
)
)
\end{verbatim}
\subsection{Question 4}
Nécessite l'outil \verb!casear!.
\subsection{Question 5}
\begin{verbatim}
AtelierV[ent,sortie] :=
hide e,s in
Verificateur[ent,sortie,e,s]
|[e,s]|
Atelier[e,s]
\end{verbatim}
La composition parallèle générale synchronisant les ouvriers et le
vérificateur est la synchronisation sur l'ensemble de portes
$\{ent,sortie\}$ de l'atelier sans vérificateur.
On place le vérificateur «entre» les ouvriers et l'environnement~: Si
un travail est mal fait, le vérificateur le défait et le repasse à
l'entrée des ouvriers, sinon, il l'envoie vers la sortie de
l'environnement. À tout moment, il peut récupérer du travail depuis
l'environnement, et le passer aux ouvriers. Nous avons choisi de ne
pas limiter le nombre de fois que le vérificateur peut laisser les
ouvriers obtenir du travail depuis l'environnement, puisque nous ne
savons pas combien de travaux peuvent être sur les tapis roulants
$ent$ et $sortie$ sans que le vérificateur y ait encore eu accès.
\begin{verbatim}
Verificateur[ent,sortie,e,s] :=
(
s?produit:PRODUIT;
[not(correct(produit))] ->
e!defait(produit);Verificateur[ent,sortie,e,s]
[]
[correct(produit)] ->
sortie!produit;Verificateur[ent,sortie,e,s]
)
[]
(
ent?travail:TRAVAIL;
e!travail;
Verificateur[ent,sortie,e,s]
)
\end{verbatim}
\subsection{Question 6}
$Assemble$ n'est pas observationnellement équivalent à $Atelier$, car
après avoir exécuté l'action $ent$, $Atelier$ peut encore exécuter
$ent$ (puisqu'il y a deux ouvriers, qui peuvent accepter deux
travaux), tandis que $Assemble$ ne pourra exécuter que $sortie$.
{\raggedright
\begin{itemize}
\item $Atelier[\dots] \transition{ent} (\dots) \ |[\dots]|\ (Commence[\dots] ||| Ouvrier[\dots])$,
et il existe
$Assemble[\dots] \transition{ent} Assembler[\dots]$. Il faudrait que
$(\dots) \ |[\dots]|\ (Commence[\dots] ||| Ouvrier[\dots]) \observationnelle Assembler[\dots]$.
\item Mais
$(\dots) \ |[\dots]|\ (Commence[\dots] ||| Ouvrier[\dots]) \not\observationnelle Assembler[\dots]$
car $(\dots) \ |[\dots]|\ (Commence[\dots] ||| Ouvrier[\dots]) \transition{ent} (\dots) \ |[\dots]|\ (Commence[\dots] ||| Commence[\dots])$
tandis que $Assembler[\dots] \nottransition{ent}$.
\end{itemize}
}
\subsection{Question 7}
Nécessite l'outil \verb!aldebaran!.
\end{document}

Binary file not shown.