Le principe d’induction générale s’énonce de la manière suivante :
(∀b.(∀c.c < b ⇒A(c)) ⇒A(b)) ⇒ ∀a.A(a).
C’est-à-dire, si, en supposant que Asoit vraie pour tous les éléments cstric-
tement plus petits qu’un élément générique b, on arrive à démontrer que A
est vraie pour blui-même, alors Aest vraie pour tous les éléments.
Concrètement, une preuve par induction sur l’ordre bien fondé (S, ≤)a
la forme suivante : on essaie de démontrer que Aest vraie pour un b∈S
générique en supposant que Aest vraie pour n’importe quel cstrictement
plus petit que b(cette derniere est appelée hypothèse d’induction). Il y a
maintenant deux situations :
1. best minimal, c’est-à-dire, il n’y pas de c < b ; dans ce cas, l’hypothèse
d’induction est inutile et la démonstration sera directe ;
2. bn’est pas minimal ; on utilise alors l’hypothèse d’induction.
Dans le cas particulier où S=Net ≤est l’ordre habituel des entiers, on
reconnaîtra dans (1) et (2) respectivement le cas de base et d’induction du
principe de récurrence formulé ci-dessus.
Exercice 3. (Fonction d’Ackermann) Considérer la fonction suivante :
int ack(int m, int n)
{
if (m == 0) return n + 1;
else
if (n == 0) return ack(m - 1, 1);
else return ack(m - 1, ack(m, n - 1));
}
Prouver que, pour tout m, n ≥0, le calcul de la fonction ack termine. (La
fonction d’Ackermann est une drôle de bête : bien qu’elle soit totale, c.-à-d.
son calcul termine toujours, il est impossible de la programmer à l’aide de
seules boucles for, il faut impérativement utiliser quelque part des boucles
while, ou bien faire une récursion imbriquée comme dans la définition ci-
dessus).
Excerice 4. (Admissibilité de l’affaiblissement) Démontrer que la
règle de l’affaiblissement
`Γ
`Γ, A
3