finish Frama-C homework

This commit is contained in:
Yorick Barbanneau 2023-05-09 21:48:51 +02:00
parent 97a81f159a
commit 0bbf6ffde1
8 changed files with 142 additions and 24 deletions

View file

@ -3,10 +3,21 @@ int min_dist(int *tab, unsigned int n)
{
int min = abs(tab[0] - tab[1]);
unsigned int i = 0;
/*@
loop invariant I1: \at(i, LoopEntry) <= i < n - 1;
loop invariant I2: \exists integer k; (k == n - 1 ==> \at(min, LoopCurrent) >= min);
loop assigns i, min;
loop variant n - i;
*/
while (i < n - 1)
{
int min_i = abs(tab[i] - tab[i + 1]);
unsigned int j = i + 2;
/*@
loop invariant J1: \at(j, LoopEntry) <= j < n;
loop assigns i, j , min, min_i;
loop variant n - j;
*/
while (j < n)
{
int d = abs(tab[i] - tab[j]);
@ -19,4 +30,4 @@ int min_dist(int *tab, unsigned int n)
i++;
}
return min;
}
}