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}}
|
\qformat{\large \textbf{Exercice \thequestion~: \thequestiontitle\hfill}}
|
||||||
|
|
||||||
|
|
||||||
\renewcommand{\solutiontitle}{\noindent\textbf{Réponse:}\par\noindent}
|
\renewcommand{\solutiontitle}{\noindent\textbf{Réponse:}\par\noindent}
|
||||||
\ifdef{\dyslexic}{
|
\ifdef{\dyslexic}{
|
||||||
\usepackage{fontspec}
|
\usepackage{fontspec}
|
||||||
|
@ -20,7 +21,10 @@
|
||||||
\setmainfont{OpenDyslexic}
|
\setmainfont{OpenDyslexic}
|
||||||
}{}
|
}{}
|
||||||
|
|
||||||
|
\usepackage{fontspec}
|
||||||
|
|
||||||
|
\setmainfont{Lato}
|
||||||
|
\setmonofont{Fira Code}
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
\maketitle
|
\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).
|
Justifiez que la formule obtenue est toujours vraie (on ne demande pas une preuve formelle mais une explication de la raison).
|
||||||
|
|
||||||
\begin{solutionorbox}
|
\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}
|
\end{solutionorbox}
|
||||||
|
|
||||||
\part Quelle préconditions faut-il pour ne pas avoir de comportement indéterminé ? Justifiez.
|
\part Quelle préconditions faut-il pour ne pas avoir de comportement indéterminé ? Justifiez.
|
||||||
|
|
||||||
\begin{solutionorbox}
|
\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}
|
\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.
|
\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,13 +5,17 @@
|
||||||
|
|
||||||
/*@ logic integer abs(integer n) = 0<n?n:-n;*/
|
/*@ logic integer abs(integer n) = 0<n?n:-n;*/
|
||||||
|
|
||||||
/*@ terminates \true;
|
/*@
|
||||||
|
requires INT_MIN <= n;
|
||||||
|
terminates \true;
|
||||||
ensures \result == abs(n);
|
ensures \result == abs(n);
|
||||||
*/
|
*/
|
||||||
int abs(int 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);*/
|
ensures \result == abs(n);*/
|
||||||
int abs2(int n);
|
int abs2(int n);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
\usepackage[utf8x]{inputenc}
|
\usepackage[utf8x]{inputenc}
|
||||||
|
\usepackage{lmodern}
|
||||||
\usepackage[T1]{fontenc}
|
\usepackage[T1]{fontenc}
|
||||||
\usepackage[french]{babel}
|
\usepackage[french]{babel}
|
||||||
\usepackage{amsmath, amsthm, amsfonts, amssymb}
|
\usepackage{amsmath, amsthm, amsfonts, amssymb}
|
||||||
|
@ -10,7 +11,7 @@
|
||||||
|
|
||||||
\lstdefinestyle{clang}{
|
\lstdefinestyle{clang}{
|
||||||
language=[ANSI]C,
|
language=[ANSI]C,
|
||||||
basicstyle=\ttfamily,
|
basicstyle=\ttfamily\scriptsize,
|
||||||
keywordstyle=\color{blue},
|
keywordstyle=\color{blue},
|
||||||
stringstyle=\color{brown},
|
stringstyle=\color{brown},
|
||||||
commentstyle=\bfseries\color{red},
|
commentstyle=\bfseries\color{red},
|
||||||
|
@ -64,4 +65,4 @@
|
||||||
\newcommand{\old}{\mathrm{old}}
|
\newcommand{\old}{\mathrm{old}}
|
||||||
\newcommand{\atp}{\mathrm{at}}
|
\newcommand{\atp}{\mathrm{at}}
|
||||||
|
|
||||||
\newcommand{\triplet}[3]{\{#2\}#1\{#3\}}
|
\newcommand{\triplet}[3]{\{#2\}#1\{#3\}}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue