Montrer que l`ensemble des fonctions récursives

Transcription

Montrer que l`ensemble des fonctions récursives
Université Paris 7
M2 Logique
2012-2013
Série no 3
Exercice 1 : Montrer que l’ensemble des fonctions récursives (partielles) et l’ensemble des fonctions récursives totales sont dénombrables.
Exercice 2 : Montrer que la réciproque d’une fonction récursive bijective est
récursive. Ce résultat est faux pour les fonctions primitives récursives : voir l’exercice 10 de cette feuille (ou Cori-Lascar ex 16 p 58).
Exercice 3 : Soit f une fonction (totale) de Np −→ N. Montrer que f est récursive
si et seulement si son graphe est récursif (Cori-Lascar ex 10 p 57).
Ce résultat est faux si l’on remplace récursif par primitif récursif, par exemple le
graphe de la fonction d’Ackermann est primitif récursif : voir l’exercice 9 de cette
feuille ou Cori-Lascar ex 11 p 57.
Exercice 4 : Montrer qu’un sous-ensemble de N récursif infini est l’image d’une
fonction récursive totale, puis généraliser à tout sous-ensemble de N récursif non
vide.
La réciproque est fausse.
Exercice 5 : (voir Cori-Lascar ex 13 et 12 p 58) 1. Montrer qu’un ensemble
récursivement énumérable infini est l’image d’une fonction récursive injective, i.e.
montrer que pour toute fonction récursive totale f dont l’image est infinie, il existe
une fonction récursive totale injective g telle que Imf = Img.
2. Montrer que l’image d’une fonction récursive totale croissante est un ensemble
récursif.
3. Réciproquement montrer que tout ensemble récursif infini est l’image d’une
fonction récursive strictement croissante.
Exercice 6 : Montrer que tout ensemble récursivement énumérable infini contient
un ensemble récursif infini, on peut se servir de résultats de l’exercice 5 (voir CoriLascar ex 14 p 58).
Exercice 7 : Soit A ⊂ N, montrer que si A et son complémentaire Ac sont tous
deux images d’une fonction récursive totale (récursivement énumérables) alors A est
récursif.
Exercice 8 : Soient A, B ⊂ N, tels que A et B sont images d’une fonction récursive
totale. 1. Montrer que A ∪ B est image d’une fonction récursive totale. 2. Montrer
que si A ∩ B est non vide, alors A ∩ B est image d’une fonction récursive totale.
Exercice 9 : Le but de cet exercice est de démontrer que le graphe de la fonction
d’Ackermann A définie à la feuille 3 est primitif récursif. On peut en déduire que la
fonction d’Ackermann est récursive.
On pose A0 (n, x) = A(n + 2, x). On vérifiera que, A0 (n, x) > x et que les fonctions
λx.A(n, x) sont strictement croissantes, donc injectives.
On remarquera aussi que A0 (n, x) ≥ 1. Posons :
h(n, y) = µx < y A0 (n, x) = y
h0 (z) = h(π21 (z), π22 (z))
H(z) = [1 + h0 (z); · · · ; 1 + h0 (i); · · · ; 1 + h0 (0)]
1
2
1. Montrer que pour tous entiers n, x, y :
A0 (n, x) = y ⇐⇒ [(h(n, y) = x ∧ x 6= 0) ∨ (y = 1 ∧ x = 0)].
2. Calculer pour y quelconque h(0, y), puis pour n quelconque, h(n, 0) et h(n, 1).
3. . Soient n, y, x, t des entiers vérifiant :
P [n, y, x, t] ≡d h(n, y) = t ∧ h(n + 1, t) = x ∧ t 6= 0 ∧ x 6= 0
montrer qu’alors h(n + 1, y) = 1 + x.
4. En déduire que pour tous entiers n, x, y ≥ 2 :
si ∃x < y∃t < yP [n, y, x, t]
alors h(n + 1, y) = 1 + µx < y ∃t < yP [n, y, x, t]
sinon h(n + 1, y) = 0.
5. Calculer h0 (0) et exprimer h0 (z + 1) de façon primitive récursive en fonction de
H(z).
6. En déduire que les fonctions H, h0 et h sont primitives récursives.
7. En déduire que que le graphe de la fonction A0 , puis celui de la fonction d’Ackermann est primitif récursif.
8. En déduire que la fonction d’Ackermann est récursive.
Le théorème du point fixe est une méthode bien plus générale qui permet entre
autre de montrer que les fonctions définies par des schémas de récurrence double
telle la fonction d’Ackermann sont récursives ( voir Exercice 3 de la série 5 ).
Exercice 10 : Le but de cet exercice est de montrer qu’il existe une fonction
primitive récursive bijective dont la réciproque n’est pas primitive récursive. On
reprend les fonctions h et h0 définies à l’exercice 9 dont on a démontré qu’elles
étaient primitives récursives.
1. Montrer que la fonctions h est surjective et vérifie :
∀n∀x 6= 0∃!y 6= 0 h(n, y) = x.
2. En déduire que la fonction primitive récursive h1 définie par
h1 (z) = α2 (π12 (z), h(π12 (z), π22 (z))) vérifie :
∀u(π22 (u) 6= 0 ⇒ ∃!z h1(z) = u).
3. Montrer que ci-dessous est bien définie une fonction (totale) g, qui est primitive
récursive et bijective
g(0) = 0
si π22 (h1 (z + 1)) 6= 0
.
alors g(z + 1) = 2h1 (z + 1)−1
z
P
sg(π22 (h1 (i + 1)))
sinon g(z + 1) = 2
i=0
4. Montrer que la réciproque de g est récursive mais pas primitive récursive
(montrer que si g −1 était primitive récursive la fonction d’Ackermann le serait
également).
ENSEMBLES DE FONCTIONS RÉCURSIVEMENT ÉNUMÉRÉS.
Exercice 11 : En utilisant la méthode diagonale, montrer qu’aucun des ensembles
de fonction de N −→ N suivants ne sont récursivement énumérés : l’ensemble des
fonctions récursives totales, l’ensemble des fonctions récursives totales croissantes au
sens large comme au sens strict, l’ensemble des fonctions récursives totales injectives
/ surjectives / bijectives.
3
ÉNUMÉRATION DES FONCTIONS RÉCURSIVES.
Exercice 12 :
1. Montrer (directement, sans utiliser que K = {i; ϕi (i) ↓} n’est pas récursif)
qu’il existe un x tel que ϕx (x) n’est pas définie.
2. Montrer qu’il existe une fonction récursive partielle qui ne peut pas être prolongée en une fonction récursive totale (indication : prendre λx.ϕx (x)).
PROBLÈME de l’ARRÊT.
Exercice 13 : Montrer qu’il n’existe pas de fonction récursive totale qui borne la
longueur du calcul, plus précisément, il n’existe pas de fonction récursive totale à 2
variables τ telle que pour tout m et pour tout x, la machine à registres de code m
termine pour l’entrée x si et seulement si elle termine en moins de τ (m, x) étapes.
Exercice 14 : On rappelle le schéma de définition par minimisation. Soit f partielle récursive à p + 1 arguments, alors la fonction partielle notée
g(x1 , · · · , xp ) = µy f (x1 , · · · , xp , y) = 0
est définie en x1 , · · · , xp et vaut z si et seulement si
a.f (x1 , · · · , xp , z) = 0;
b.∀y < z f (x1 , · · · , xp , y) est définie;
c.∀y < z f (x1 , · · · , xp , y) 6= 0;
La condition b. est naturelle, si l’on pense à l’algorithme induit par cette définition.
Montrer qu’elle est indispensable si l’on veut que g soit récursive partielle. Indication : si lon omet la condition b., on peut alors définir une fonction totale qui
détermine le problème de l’arrêt.
Exercice 15 : Rappeler pourquoi toute fonction partielle récursive est la composée, dans l’ordre, d’une fonction primitive récursive, et d’une fonction obtenue par
minimisation à partir d’une fonction primitive récursive (forme normale de Kleene).
Montrer que cette forme est, en quelque sorte ” minimale”, c’est à dire qu’il existe
une fonction récursive partielle ψ (à une variable), qui n’est pas obtenue directement
par minimisation à partir d’une fonction récursive totale (indication : poser ψ(x) = x
si ϕx (x) est définie, non définie sinon).
THÉORÈME S-M-N.
Exercice 16 : Soit un ensemble F de fonctions (partielles) récursives à une variable. Nous dirons qu’une fonction totale à une variable f énumère des indices pour
F si :
F = {ϕx ; x ∈ Im f }.
Montrer que F est récursivement énuméré ssi il existe une fonction primitive
récursive qui énumère des indices pour F.
Exercice 17 : On donne dans cet exercice une démonstration ”effective” de l’indécidabilité
du problème de l’arrêt.
Nous dirons qu’une fonction g à deux variables détermine l’arrêt des machines à
une entrée si elle vérifie, pour tous x et y :
g(x, y) = 1 si ϕ(x, y) est définie;
g(x, y) = 0 si ϕ(x, y) n’est pas définie;
1. Démontrer l’indécidabilité du problème de l’arrêt de la façon suivante : associer
à une fonction récursive totale g : N2 → N, le code d’une machine dont g ne
détermine pas l’arrêt
4
2. Montrer qu’il existe une fonction primitive récursive à une variable h telle que,
si i est l’indice d’une fonction à 2 variables g, h(i) est l’indice d’une machine à
une entrée dont g ne détermine pas l’arrêt.
Exercice 18 :
1. On suppose que f est récursive totale, et énumère des indices pour un ensemble
F de fonctions récursives totales à une variable.
Construire explicitement à partir de f une fonction récursive totale qui n’est
pas dans F.
2. Montrer qu’il existe une fonction primitive récursive e telle que, si i est l’indice
d’une fonction à une variable f qui énumère des indices pour un ensemble de
fonctions récursives totales F , alors e(i) est l’indice d’une fonction récursive
totale à une variable qui n’est pas dans F.
3. Montrer qu’il existe une fonction primitive récursive h à deux variables, telle
que :
ϕ1h(a,i) (0) = a; ϕ1h(a,i) (n + 1) = ϕ1i (n)
4. Montrer que, pour tout ensemble I récursivement énumérable d’indices de
fonctions récursives totales à une variable, il existe un ensemble récursivement
énumérable disjoint de I d’indices de fonctions récursives totales à une variable,
toutes distinctes entre elles et distinctes des fonctions d’indice dans I.