mathématiques appliquées (ECG 1re année) · Chapitre 1 · Exercice
Croissance d'une liste, et la liste vide
Raisonnement et vocabulaire ensembliste · Logique et quantificateurs · niveau 3 (difficile)
Énoncé
Écrire une fonction Python est_croissante(L) qui teste si la liste L est croissante. Quel énoncé quantifié cette fonction vérifie-t-elle ? Que renvoie-t-elle sur une liste vide, et pourquoi est-ce le bon choix ?
Corrigé
def est_croissante(L):
for i in range(len(L) - 1):
if L[i] > L[i+1]:
return False
return True
L'énoncé vérifié est un « pour tout » : , où est la longueur de L. La fonction ne le vérifie pas directement : elle cherche un contre-exemple, c'est-à-dire un témoin de la négation . C'est exactement la règle de négation du , devenue une boucle.
Sur la liste vide, elle renvoie True. La longueur vaut , donc range(-1) est vide, aucun tour n'a lieu et l'on atteint return True.
Et c'est le bon choix : un énoncé universel portant sur un ensemble vide d'indices est vrai — il n'y a aucun couple à comparer, donc aucun qui puisse démentir. Ce n'est pas une convention arbitraire : elle rend le résultat cohérent (toute sous-liste d'une liste croissante reste croissante, y compris la vide) et évite un cas particulier dans tous les algorithmes qui appellent cette fonction.
Exercices semblables
- Quantifier, puis nier corrigé
- L'ordre des quantificateurs corrigé
- Réciproque et contraposée corrigé
- Nécessaire, suffisante, ou les deux corrigé
- Vrai ou faux, avec justification corrigé