First part of TD
This commit is contained in:
parent
522bdb0218
commit
f295671946
3 changed files with 27 additions and 6 deletions
|
@ -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.
|
||||
|
|
|
@ -5,12 +5,16 @@
|
|||
|
||||
/*@ logic integer abs(integer n) = 0<n?n:-n;*/
|
||||
|
||||
/*@ terminates \true;
|
||||
/*@
|
||||
requires INT_MIN <= n;
|
||||
terminates \true;
|
||||
ensures \result == abs(n);
|
||||
*/
|
||||
int abs(int n);
|
||||
|
||||
/*@ terminates \true;
|
||||
/*@
|
||||
requires INT_MIN <= n * (int)((int)n % 2 + ((int)n +1)%2) <= INT_MAX;
|
||||
terminates \true;
|
||||
ensures \result == abs(n);*/
|
||||
int abs2(int n);
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
\usepackage[utf8x]{inputenc}
|
||||
\usepackage{lmodern}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[french]{babel}
|
||||
\usepackage{amsmath, amsthm, amsfonts, amssymb}
|
||||
|
@ -10,7 +11,7 @@
|
|||
|
||||
\lstdefinestyle{clang}{
|
||||
language=[ANSI]C,
|
||||
basicstyle=\ttfamily,
|
||||
basicstyle=\ttfamily\scriptsize,
|
||||
keywordstyle=\color{blue},
|
||||
stringstyle=\color{brown},
|
||||
commentstyle=\bfseries\color{red},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue