From f295671946f85adf393770ec1d0ae0f675f768cd Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Wed, 3 May 2023 00:57:37 +0200 Subject: [PATCH] First part of TD --- .../conception_formelle/99-DM_framac/TD-TP.tex | 18 +++++++++++++++++- .../99-DM_framac/code/abs.h | 10 +++++++--- .../99-DM_framac/sty/macro.sty | 5 +++-- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/content/conception_formelle/99-DM_framac/TD-TP.tex b/content/conception_formelle/99-DM_framac/TD-TP.tex index d81e3db..4584b90 100644 --- a/content/conception_formelle/99-DM_framac/TD-TP.tex +++ b/content/conception_formelle/99-DM_framac/TD-TP.tex @@ -13,6 +13,7 @@ \qformat{\large \textbf{Exercice \thequestion~: \thequestiontitle\hfill}} + \renewcommand{\solutiontitle}{\noindent\textbf{Réponse:}\par\noindent} \ifdef{\dyslexic}{ \usepackage{fontspec} @@ -20,7 +21,10 @@ \setmainfont{OpenDyslexic} }{} +\usepackage{fontspec} +\setmainfont{Lato} +\setmonofont{Fira Code} \begin{document} \maketitle @@ -174,12 +178,24 @@ 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} + \begin{alignat*}{3} + \WP(\code{abs},\psi) &\equiv && \WP(5,\WP(6,\psi)) \\ + & \equiv && \WP(5,\psi[\result \leftarrow n * aux]) \\ + & \equiv && n \ge 0 \implies \psi[\result \leftarrow n * aux][aux \leftarrow 1] \\ + & && \wedge \lnot (n \ge 0) \implies \psi[\result \leftarrow n * aux][aux \leftarrow -1] \\ + & \equiv && n \ge 0 \implies \result \leftarrow n \\ + & && \wedge \lnot (n \ge 0) \implies \result - n \\ + & \equiv && n \ge 0 \implies \result \ge 0 \\ + & && \wedge \lnot (n \ge 0) \implies \result \ge 0 \\ + & \equiv && \top \\ + \end{alignat*} + \end{solutionorbox} \part Quelle préconditions faut-il pour ne pas avoir de comportement indéterminé ? Justifiez. \begin{solutionorbox} - METTEZ VOTRE RÉPONSE ICI. + Comme pour \code{abs}, nous devons prendre en compte les limites du processeur, mais cette fois \code{n} devra être comprise entre 0 et \code{INT_MAX}. \end{solutionorbox} \part Compléter le fichier \texttt{abs.h} de manière à ce que Frama-C puisse démontrer la post-condition fournie, en ajoutant les assertions RTE. Il est bien évidemment possible (et encouragé) de répondre aux questions précédentes grâce à celle-ci. diff --git a/content/conception_formelle/99-DM_framac/code/abs.h b/content/conception_formelle/99-DM_framac/code/abs.h index 08b358a..ad03ed3 100644 --- a/content/conception_formelle/99-DM_framac/code/abs.h +++ b/content/conception_formelle/99-DM_framac/code/abs.h @@ -5,13 +5,17 @@ /*@ logic integer abs(integer n) = 0