Académique Documents
Professionnel Documents
Culture Documents
[1/11]
» Exemple sur une instance
[2/11]
» Implémentation sans vérification
[3/11]
» Pré-conditions
1 requires a != null
2
[4/11]
» Post-conditions
1 ensures sorted(a, 0, a.Length-1) //Vérifie que le
résultat est un tableau trié
2 ensures multiset(a[..]) == multiset(old(a[..])) //
Vérifie que le résultat est une permutation des
éléments de a
3
[5/11]
» Recherche des invariants
[6/11]
» Invariants : Propagation des post-conditions.
∗ Le tableau est toujours trié dans la plage [i, a.Length − 1].
∗ Le résultat est une permutation de a.
[7/11]
» Invariants : Partition de a
[8/11]
» Invariants : Partition de a
Nous ajoutons cet invariant aux deux boucles car la boucle
interne conserve cette propriété. Boucle externe :
Boucle interne :
1 invariant 0 < i < a.Length && 0 <= j <= i
2 invariant sorted(a, i, a.Length-1)
3 invariant partitioned(a, i)
4 invariant multiset(a[..]) == multiset(old(a[..]))
5
[9/11]
» Invariants : boucle interne
[10/11]
» Les fonctions de rang
[11/11]