First part of TD

This commit is contained in:
Yorick Barbanneau 2023-05-03 00:57:37 +02:00
parent 522bdb0218
commit f295671946
3 changed files with 27 additions and 6 deletions

View file

@ -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.

View file

@ -5,12 +5,16 @@
/*@ 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);

View file

@ -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},