Add 1b and 1c responses

This commit is contained in:
Yorick Barbanneau 2023-04-30 22:56:04 +02:00
parent 56e86b4b20
commit dde1c4a854

View file

@ -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 na pas tenu compte des comportements indéterminés.
Quelle information manque-til pour assurer quil ny aura pas derreur à lexé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}