cours/content/conception_formelle/99-DM_framac/code/diameter.h
2023-05-09 21:57:24 +02:00

14 lines
No EOL
964 B
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <limits.h>
#include "abs.h"
/*
Le résultat doit être une valeur v telle que il existe i et j telle que v est t[i]-t[j], et que cest le minimum pour lensemble des indices i des maximum pour les indices j des abs(t[i]-t[j]).
Une précondition peu évidente à trouver vous est spécifiée (elle vient de lutilisation de abs, et empêche de prouver un seul invariant, donc je préfère vous la donner).
De même, la post-condition principale vous est donnée. Commencez par la démontrer, puis, comme dans les exercices précédents, observez que ce nest pas suffisant et donnez et démontrez la post-condition manquante.
*/
/*@
requires \forall integer i; 0 <= i < n ==> INT_MAX > tab[i] >= 0;ensures \forall integer l; 0 <= l < n ==> (\exists integer b; 0 <= b < n && \forall integer k; 0 <= k < n ==> abs(tab[l]-tab[b]) >= abs(tab[l] - tab[k]) && \result <= abs(tab[l]-tab[b]));
*/
int diameter(int *tab, unsigned int n);