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.