www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

bonavero-duperon.tex (11863B)


      1 \documentclass[a4paper,french,12pt]{article}
      2 \usepackage{geometry}
      3 \geometry{a4paper, top=2cm, bottom=2.0cm, left=2.4cm, right=2.47cm}
      4 \usepackage[frenchb]{babel}
      5 \usepackage[utf8]{inputenc}
      6 \usepackage[T1]{fontenc}
      7 \usepackage{amsmath}
      8 \usepackage{amssymb}
      9 \usepackage{enumerate}
     10 \usepackage{centernot}
     11 \usepackage{multirow}
     12 \usepackage{graphicx}
     13 \usepackage{tikz}
     14 \usetikzlibrary{positioning,calc,chains}
     15 \def\P{\mathcal{P}}
     16 \def\GUi{G \cup \{i\}}
     17 \def\nottransition#1{\stackrel{#1}{\centernot\longrightarrow}}
     18 \def\transition#1{\stackrel{#1}{\longrightarrow}}
     19 \def\Transition#1{\stackrel{#1}{\Longrightarrow}}
     20 \def\forte{\sim}
     21 \def\observationnelle{\approx}
     22 \def\conf{\ \text{conf}\ }
     23 \DeclareMathOperator{\Tr}{Tr}
     24 \DeclareMathOperator{\Acc}{Acc}
     25 \DeclareMathOperator{\Ref}{Ref}
     26 \def\si{\quad\text{si}\quad}
     27 \let\simule\gtrsim
     28 \let\simuleobs\gtrapprox
     29 \let\estsimulepar\gtrsim
     30 \begin{document}
     31 
     32 \section{Files d'attente et équivalences}
     33 \subsection{$B2err\simule B1$}
     34 
     35 $B2err$ simule $B1$ car~:
     36 \begin{itemize}
     37 \item $B2err \simule B1$~:
     38   \begin{itemize}
     39   \item $B1\transition{inp} outp;B1$, et il existe $B2err\transition{inp}outp;B2err$.
     40   \item Il faut donc que $outp;B2err \simule outp;B1$.
     41   \end{itemize}
     42 \item $outp;B2err \simule outp;B1$~:
     43   \begin{itemize}
     44   \item $outp;B1\transition{outp}B1$, et il existe $outp;B2err\transition{outp}B2err$.
     45   \item Il faut donc que $B2err \simule B1$, ce qui est notre premier point.
     46   \end{itemize}
     47 \end{itemize}
     48 
     49 \subsection{$\neg\ B2err\conf B1$}
     50 $B2err$ n'est pas conforme à $B1$ car $Ref(B2err, inp) = \{\{inp\}, \{outp\}\}$, alors que $Ref(B1,inp) = \{\{outp\}\}$,
     51 et donc on n'a pas $Ref(B2err, inp) \subseteq Ref(B1, inp)$.
     52 
     53 \subsection{$B2par$ respecte-t-il la spécification $B_20$ ?}
     54 $B2par$ respecte la spécification $B_20$~:
     55 \begin{enumerate}[i)]
     56 \item Un message émis a toujours été reçu : pour qu'un message soit
     57   émis par la porte $outp$ du $B1$ de droite, il faut qu'il ait été
     58   reçu par la porte $mid$ du $B1$ de droite, synchronisé sur la porte
     59   $mid$ du $B1$ de gauche. Pour que le message soit émis sur la porte
     60   $mid$ du $B1$ de gauche, il faut qu'il ait au préalable été reçu sur
     61   la porte $inp$ du $B1$ de gauche.
     62 \item Lorsqu'un $B1$ reçoit un message, il refuse les $inp$ jusqu'à ce
     63   qu'il ait effectué un $outp$. Comme la porte $outp$ du $B1$ de
     64   gauche est synchronisée sur la porte $inp$ du $B1$ de droite, cela
     65   signifie que si les deux $B1$ «contiennent» un message, celui de
     66   droite n'accepera pas d'$inp$ tant qu'il n'aura pas effectué
     67   d'$outp$, et en cascade, celui de gauche ne pourra pas faire
     68   d'$outp$ tant que celui de droite n'aura pas été «vidé», et donc
     69   celui de gauche refusera les $inp$. On ne pourra donc pas effectuer
     70   un $inp$ sur le $B1$ de gauche tant que les deux $B1$ «contiendront»
     71   un message, et il ne pourra donc pas y avoir plus de deux messages
     72   dans la file.
     73 \end{enumerate}
     74 
     75 \subsection{$B2seq \observationnelle B2par$}
     76 
     77 {\raggedright
     78   $B2seq$ et $B2par$ sont observationnellement équivalents car~:
     79   \begin{itemize}
     80   \item $B2s \observationnelle B2par$~:
     81     \begin{itemize}
     82     \item $B2s\transition{inp} B21$,
     83       et il existe $B2par \Transition{\hat{inp}} (i;B1[inp,i] \ |[i]|\ B1[i,outp])$
     84       et $B2par \Transition{\hat{inp}} (B1[inp,i] \ |[i]|\ outp;B1[i,outp])$.
     85     \item Dans l'autre sens,
     86       $B2par \transition{inp} (i;B1[inp,i] \ |[i]|\ B1[i,outp])$
     87       et il existe $B2s\transition{inp} B21$.
     88     \item Il faut donc que $B21 \observationnelle (i;B1[inp,i] \ |[i]|\ B1[i,outp])$.
     89     \end{itemize}
     90   \item $B21 \observationnelle (i;B1[inp,i] \ |[i]|\ B1[i,outp])$~:
     91     \begin{itemize}
     92     \item $B21 \transition{inp} outp;B21$,
     93       et il existe
     94       $(i;B1[inp,i] \ |[i]|\  B1[i,outp]) \Transition{\hat{inp}} (i;B1[inp,i] \ |[i]|\ outp;B1[i,outp])$
     95     \item $B21 \transition{outp} B2s$, et
     96       et il existe
     97       $(i;B1[inp,i] \ |[i]|\  B1[i,outp]) \Transition{\hat{outp}} (B1[inp,i] \ |[i]|\ B1[i,outp])$,
     98       autrement dit
     99       $(i;B1[inp,i] \ |[i]|\  B1[i,outp]) \Transition{\hat{outp}} B2par$
    100     \item Dans l'autre sens,
    101       $(i;B1[inp,i] \ |[i]|\ B1[i,outp]) \transition{i} (B1[inp,i] \ |[i]|\ outp;B1[i,outp])$,
    102       mais comme on $\hat{i}$ est le chemin vide, on n'aura rien à vérifier sur $B21$.
    103     \item Il faut donc que $outp;B21 \observationnelle (i;B1[inp,i] \ |[i]|\ outp;B1[i,outp])$,
    104       et que $B2s \observationnelle B2par$. Cette deuxième condition est en fait notre premier point.
    105     \end{itemize}
    106   \item $outp;B21 \observationnelle (i;B1[inp,i] \ |[i]|\ outp;B1[i,outp])$~:
    107     \begin{itemize}
    108     \item $outp;B21 \transition{outp}B21$,
    109       et il existe
    110       $(i;B1[inp,i] \ |[i]|\ outp;B1[i,outp]) \Transition{\hat{outp}} (i;B1[inp,i] \ |[i]|\ B1[i,outp])$.
    111     \item Il faut donc que $B21 \observationnelle (i;B1[inp,i] \ |[i]|\ B1[i,outp])$, ce qui est notre deuxième point.
    112     \end{itemize}
    113   \end{itemize}
    114 }
    115 
    116 \subsection{$B2ent = B2par$}
    117 
    118 Étant donné que $B2ent$ et $B2par$ ne commencent pas par l'action
    119 interne, tester leur égalité au sens de la congruence observationnelle
    120 revient à tester s'ils sont observationnellement équivalents.
    121 
    122 On applique donc la même méthode que dans la section précédente, avec
    123 les équivalences suivantes~:
    124 
    125 {\raggedright
    126   \begin{itemize}
    127   \item Pour que $B2ent = B2par$, il faut qu'après $inp$ (la seule
    128     action que les systèmes peuvent exécuter dans leurs états respectifs),
    129     $(outp;B1[inp;outp] ||| B1[inp;outp]) \observationnelle (i;B1[inp;i]\ |[i]|\ B1[i,outp])$.
    130   \item Pour cela, il faut qu'après $outp$,
    131     $(B1[inp;outp] ||| B1[inp;outp]) \observationnelle (B1[inp;i]\ |[i]|\ B1[i,outp])$,
    132     autrement dit $B2ent = B2par$, ce qui est une condition plus faible que le premier point.
    133 
    134     Il faut aussi qu'après $inp$,
    135     $(outp;B1[inp;outp] ||| outp;B1[inp;outp]) \observationnelle (i;B1[inp;i]\ |[i]|\ outp;B1[i,outp])$.
    136     
    137     Dans l'autre sens, on peut ignorer ce qui se passe après le $i$ de
    138     $(i;B1[inp;i]\ |[i]|\ B1[i,outp])$, car $\hat{i}$ est le chemin vide,
    139     donc pas de conditions sur $(outp;B1[inp;outp] ||| B1[inp;outp])$.
    140   \item Occupons-nous de
    141     $(outp;B1[inp;outp] ||| outp;B1[inp;outp]) \observationnelle (i;B1[inp;i]\ |[i]|\ outp;B1[i,outp])$.
    142     Dans ces états, les systèmes ne peuvent faire qu'$outp$. Il faut donc qu'après $outp$,
    143     $(outp;B1[inp;outp] ||| B1[inp;outp]) \observationnelle (i;B1[inp;i]\ |[i]|\ B1[i,outp])$,
    144     ce qui correspond au deuxième point.
    145   \end{itemize}
    146 }
    147 
    148 \subsection{$B2par \simuleobs B1$}
    149 
    150 $B2par$ simule observationnellement $B1$ car~:
    151 
    152 \begin{itemize}
    153 \item $B1\transition{inp}outp;B1$, et il existe
    154   $B2par\Transition{\hat{inp}}(i;B1[inp,i]\ |[i]| B1[i;outp])$ et
    155   $B2par\Transition{\hat{inp}}(B1[inp,i]\ |[i]| outp;B1[i;outp])$.
    156   Il suffit donc que soit $(i;B1[inp,i]\ |[i]| B1[i;outp]) \simuleobs outp;B1$,
    157   soit $(B1[inp,i]\ |[i]| outp;B1[i;outp]) \simuleobs outp;B1$. On prend
    158 \item On prend cette deuxième possibilité.
    159   $outp;B1 \transition{outp} B1$, et il existe
    160   $(B1[inp,i]\ |[i]| outp;B1[i;outp])\Transition{\hat{outp}}(B1[inp,i]\ |[i]| B1[i;outp])$,
    161   autrement dit
    162   $(B1[inp,i]\ |[i]| outp;B1[i;outp])\Transition{\hat{outp}}B2par$, notre premier point.
    163 \end{itemize}
    164 
    165 \subsection{$\not B2par \conf B1$}
    166 
    167 Pour que $B2par$ soit conforme à $B1$, car pour toute trace $t$ de $B1$,
    168 $\Acc(B2par) \subset\subset \Ref(B1)$.
    169 
    170 \begin{itemize}
    171 \item Pour la trace $\emptyset$, $\Acc(B2par) = \Acc(B1) = \{\{inp\}\}$.
    172 \item Pour la trace $inp$, $\Acc(B2par) = \{\{\}, \{inp,outp\}\}$, mais $\Acc(B1) = \{\{outp\}\}$.
    173 \item Pour la trace $inp;outp$, on est revenu aux mêmes états que la trace $\emptyset$.
    174 \end{itemize}
    175 Pour le point 2 $\forall X \in \{\{\}, \{inp,outp\}\},\quad \{outp\} \not\subseteq X$, et donc $\neg(B2par \conf B1)$
    176 
    177 \section{Exercice de l'atelier}
    178 
    179 \subsection{Question 1}
    180 
    181 \begin{figure}[h]
    182   \centering
    183   \includegraphics[width=15cm]{question1}
    184 \end{figure}
    185 
    186 \subsection{Question 2}
    187 
    188 \begin{verbatim}
    189 Maillet[prendM,poseM] := prendM;MailletOcc[prendM,poseM]
    190 MailletOcc[prendM,poseM] := poseM;Maillet[prendM,poseM]
    191 \end{verbatim}
    192 
    193 \subsection{Question 3}
    194 
    195 \begin{verbatim}
    196 UtiliseMarteau[ent,sortie,prend,pose,prendM,poseM](travail:TRAVAIL) :=
    197   prend;sortie!fait(travail);pose;
    198   Ouvrier[ent,sortie,prend,pose,prendM,poseM]
    199 \end{verbatim}
    200 
    201 \begin{verbatim}
    202 UtiliseMaillet[ent,sortie,prend,pose,prendM,poseM](travail:TRAVAIL) :=
    203   prendM;sortie!fait(travail);poseM;
    204   Ouvrier[ent,sortie,prend,pose,prendM,poseM]
    205 \end{verbatim}
    206 
    207 \begin{verbatim}
    208 Commence[ent,sortie,prend,pose,prendM,poseM](travail:TRAVAIL) :=
    209   [facile(travail)] ->
    210     sortie!fait(travail);
    211     Ouvrier[ent,sortie,prend,pose,prendM,poseM]
    212   []
    213   [difficile(travail)] ->
    214     UtiliseMarteau[ent,sortie,prend,pose,prendM,poseM](travail)
    215   []
    216   [(not(facile(travail)) and not(difficile(travail)))] ->
    217     UtiliseOutil[ent,sortie,prend,pose,prendM,poseM](travail)
    218 \end{verbatim}
    219 
    220 \begin{verbatim}
    221 Ouvrier[ent,sortie,prend,pose,prendM,poseM] :=
    222   ent?travail:TRAVAIL;
    223   Commence[ent,sortie,prend,pose,prendM,poseM](travail)
    224 \end{verbatim}
    225 
    226 \begin{verbatim}
    227 Atelier[ent,sortie] :=
    228   hide prend,pose,prendM,poseM in
    229     (
    230       (
    231         Marteau[prend,pose]
    232         |||
    233         Maillet[prendM,poseM]
    234       )
    235       |[prend,pose,prendM,poseM]|
    236       (
    237         Ouvrier[ent,sortie,prend,pose,prendM,poseM]
    238         |||
    239         Ouvrier[ent,sortie,prend,pose,prendM,poseM]
    240       )
    241     )
    242 \end{verbatim}
    243 
    244 \subsection{Question 4}
    245 
    246 Nécessite l'outil \verb!casear!.
    247 
    248 \subsection{Question 5}
    249 
    250 \begin{verbatim}
    251 AtelierV[ent,sortie] :=
    252   hide e,s in
    253     Verificateur[ent,sortie,e,s]
    254     |[e,s]|
    255     Atelier[e,s]
    256 \end{verbatim}
    257 
    258 La composition parallèle générale synchronisant les ouvriers et le
    259 vérificateur est la synchronisation sur l'ensemble de portes
    260 $\{ent,sortie\}$ de l'atelier sans vérificateur.
    261 
    262 On place le vérificateur «entre» les ouvriers et l'environnement~: Si
    263 un travail est mal fait, le vérificateur le défait et le repasse à
    264 l'entrée des ouvriers, sinon, il l'envoie vers la sortie de
    265 l'environnement. À tout moment, il peut récupérer du travail depuis
    266 l'environnement, et le passer aux ouvriers. Nous avons choisi de ne
    267 pas limiter le nombre de fois que le vérificateur peut laisser les
    268 ouvriers obtenir du travail depuis l'environnement, puisque nous ne
    269 savons pas combien de travaux peuvent être sur les tapis roulants
    270 $ent$ et $sortie$ sans que le vérificateur y ait encore eu accès.
    271 
    272 \begin{verbatim}
    273 Verificateur[ent,sortie,e,s] :=
    274   (
    275     s?produit:PRODUIT;
    276     [not(correct(produit))] ->
    277       e!defait(produit);Verificateur[ent,sortie,e,s]
    278     []
    279     [correct(produit)] ->
    280       sortie!produit;Verificateur[ent,sortie,e,s]
    281   )
    282   []
    283   (
    284     ent?travail:TRAVAIL;
    285     e!travail;
    286     Verificateur[ent,sortie,e,s]
    287   )
    288 \end{verbatim}
    289 
    290 \subsection{Question 6}
    291 
    292 $Assemble$ n'est pas observationnellement équivalent à $Atelier$, car
    293 après avoir exécuté l'action $ent$, $Atelier$ peut encore exécuter
    294 $ent$ (puisqu'il y a deux ouvriers, qui peuvent accepter deux
    295 travaux), tandis que $Assemble$ ne pourra exécuter que $sortie$.
    296 
    297 {\raggedright
    298   \begin{itemize}
    299   \item $Atelier[\dots] \transition{ent} (\dots) \ |[\dots]|\ (Commence[\dots] ||| Ouvrier[\dots])$,
    300     et il existe
    301     $Assemble[\dots] \transition{ent} Assembler[\dots]$. Il faudrait que 
    302     $(\dots) \ |[\dots]|\ (Commence[\dots] ||| Ouvrier[\dots]) \observationnelle Assembler[\dots]$.
    303   \item Mais
    304     $(\dots) \ |[\dots]|\ (Commence[\dots] ||| Ouvrier[\dots]) \not\observationnelle Assembler[\dots]$
    305     car $(\dots) \ |[\dots]|\ (Commence[\dots] ||| Ouvrier[\dots]) \transition{ent} (\dots) \ |[\dots]|\ (Commence[\dots] ||| Commence[\dots])$
    306     tandis que $Assembler[\dots] \nottransition{ent}$.
    307   \end{itemize}
    308 }
    309 \subsection{Question 7}
    310 
    311 Nécessite l'outil \verb!aldebaran!.
    312 
    313 \end{document}