next up previous contents
suivant: Correction partielle et logique monter: Programmer avec des invariants précédent: Programmation, preuve et documentation   Table des matières

Sémantique opérationnelle

Pour pouvoir décrire par une formule de logique ce que fait un programme il faut d'abord donner une signification à ce que fait un programme. Pour cela on va définir un peu plus formellement le comportement d'un programme: on va définir une sémantique opérationnelle.

On peut (avec difficulté) définir une sémantique opérationnelle pour un langage de programmation. Considérons que l'état du système ( $S \in \mathcal{S}$) est décrit par l'état des variables du système: ( $S \in [Var \rightarrow
V]$), il est relativement facile de définir l'effet des diverses instructions sur cet état du système. On notera $S(v)$ la valeur de $v$ dans l'état $S$.

Par exemple:

On peut donc définir l'effet des instructions sur les états du système: $\mathcal{I}(\mathtt{Ins})$ est une fonction (partielle) de $\mathcal{S}$ dans $\mathcal{S}$. Par exemple, comme on vient de le voir:

\begin{displaymath}\forall S\in \mathcal{S}:
\mathcal{I}(\mathtt{x:=e})(S)=S[x\rightarrow e]\end{displaymath}

Exercice: Définir $\mathcal{I}(\mathtt{x:=x+3+y})$. Si $S(x)=0$ et $S(y)=2$ quelle sera la valeur de $x$ dans le nouvel état.

Définir $\mathcal{I}$ pour une instruction if then else.

Vérifier que while C do I od est équivalent à if C then I; while C do I od fi

Ce résultat peut servir à définir $\mathcal{I}(\mbox{\texttt{while C
do I od}})$:

Soit $\mathcal{H}(F)$ (où $F$ est une fonction de l'ensemble des états dans l'ensemble de états) défini pour chaque état $S$ par:

\begin{displaymath}
\mathcal{H}(F)(S)= \mbox{ if } \mathcal{E}(C)(S) \mbox{ then }
(\mathcal{H}(F))(\mathcal{I}(I)(S)) \mbox{ else } S\end{displaymath}

On peut vérifier que: $\mathcal{H}(\mathcal{I}(\mbox{\texttt{while C do I od}}))=\mathcal{I}(\mbox{\texttt{while C do
I od}})$ et donc que $\mathcal{I}(\mbox{\texttt{while C do
I od}}))$ est une point fixe de $\mathcal{H}$ (i.e. une fonction $F$ telle que $\mathcal{H}(F)=F$)


next up previous contents
suivant: Correction partielle et logique monter: Programmer avec des invariants précédent: Programmation, preuve et documentation   Table des matières
Hugues FAUCONNIER 2003-01-09