Add 1b and 1c responses
This commit is contained in:
parent
56e86b4b20
commit
dde1c4a854
1 changed files with 18 additions and 5 deletions
|
@ -7,7 +7,7 @@
|
|||
\usepackage{macro}
|
||||
|
||||
|
||||
\author{METTEZ VOS NOMS ICI}
|
||||
\author{Gwendal Aupee, Yorick Barbanneau}
|
||||
\date{2022-2023}
|
||||
\title{{\bf Conception Formelle} \\ TD-TP : Un peu de théorie et de pratique.}
|
||||
|
||||
|
@ -133,14 +133,28 @@ int abs(int n)
|
|||
\part Calculez $\WP(\code{abs},\psi)$ pour $\psi$ la post-condition fournie, et déduisez-en un triplet de \bsc{Hoare} valide.
|
||||
|
||||
\begin{solutionorbox}
|
||||
METTEZ VOTRE RÉPONSE ICI.
|
||||
\begin{alignat*}{3}
|
||||
\WP(\code{abs},\psi) &\equiv && \WP(5-7,\WP(8,\psi)) \\
|
||||
& \equiv && \WP(5-7,\psi[\result \leftarrow res]) \\
|
||||
& \equiv && n < 0 \implies \WP(7,\psi[\result \leftarrow res][res \leftarrow - n]) \\
|
||||
& && \wedge \lnot(n > 0) \implies \WP(5,\psi[\result \leftarrow res][res \leftarrow n]) \\
|
||||
& \equiv && n < 0 \implies (res \le 0)[ res \leftarrow - n] \\
|
||||
& && \wedge \lnot( n < 0) \implies (res \le 0)[ res \leftarrow n] \\
|
||||
& \equiv && ( n < 0 \implies - n \le 0 ) \wedge ( \lnot ( n < 0) \implies n \le 0) \\
|
||||
& \equiv && T \wedge n < 0 \vee n \le 0
|
||||
\end{alignat*}
|
||||
|
||||
Nous pouvons alors en déduire le triplet de Hoare suivant:
|
||||
|
||||
$\{\forall n \in \Z\} \text{ abs } \{\result \leftarrow abs(n)\}$
|
||||
|
||||
\end{solutionorbox}
|
||||
|
||||
\part Évidemment, on a ici une correction partielle, dans le sens où on n’a pas tenu compte des comportements indéterminés.
|
||||
Quelle information manque-t’il pour assurer qu’il n’y aura pas d’erreur à l’exécution ?
|
||||
|
||||
\begin{solutionorbox}
|
||||
METTEZ VOTRE RÉPONSE ICI.
|
||||
Notre calcul de \textit{weakest precondition} ci-dessus ne prend pas en compte les limites de notre processeur sur la taille des variables. Ici nous devons nous assurer que \code{n} soit comprise entre \code{INT_MAX et INT_MIN}.
|
||||
\end{solutionorbox}
|
||||
|
||||
|
||||
|
@ -160,7 +174,6 @@ int abs2(int n)
|
|||
Justifiez que la formule obtenue est toujours vraie (on ne demande pas une preuve formelle mais une explication de la raison).
|
||||
|
||||
\begin{solutionorbox}
|
||||
METTEZ VOTRE RÉPONSE ICI.
|
||||
\end{solutionorbox}
|
||||
|
||||
\part Quelle préconditions faut-il pour ne pas avoir de comportement indéterminé ? Justifiez.
|
||||
|
@ -439,4 +452,4 @@ int diameter(int* tab,unsigned int n);
|
|||
|
||||
\end{questions}
|
||||
|
||||
\end{document}
|
||||
\end{document}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue