• Aucun résultat trouvé

DS 1

N/A
N/A
Protected

Academic year: 2022

Partager "DS 1"

Copied!
1
0
0

Texte intégral

(1)

DS 1

Option informatique, première année

Julien Reichert

Toutes les fonctions de ce DS sont à écrire en Caml.

Exercice 1 : Réécrire une version de la fonction (déjà existante, pour info) de signature rev : 'a list -> 'a list telle que rev l retourne le miroir de l.

Exercice 2 : Réécrire de même une version des fonctions for_all et exists qui déterminent si tous les éléments (resp. au moins un élément) de la liste en deuxième argument satisfont (resp. satisfait) un prédicat1 en premier argument. On donnera d'abord la signature des fonctions.

Exercice 3 : Prouver que la fonction mccarthy dénie ci-dessous retourne 91 quel que soit l'entier inférieur à 102 en argument.

let rec mccarthy = function

| n when n > 100 -> n - 10

| n -> mccarthy (mccarthy n + 11);;

Exercice 4 : Soit une fonction de signature f : int list -> int list telle que f l existe dès que l n'est pas la liste vide et hd l >= 0, et telle que f l soit une liste dont le premier élément est positif et soit ce premier élément est strictement inférieur au premier élément de l, soit la taille de f l est strictement inférieure à la taille de l.2 On considère la fonction suivante : let rec boucle = function [0] -> false | l -> boucle (f l);;.

1) Prouver que la terminaison de boucle n'est pas garantie en donnant un exemple de fonction f respectant ces propriétés (avec son code) et une liste initiale provoquant une boucle innie.

2) Prouver que la terminaison de boucle est garantie quelle que soit la fonction f telle que pour toute liste l le premier élément de f l soit de plus toujours inférieur ou égal au premier élément de l.

Exercice 5 : Démontrer qu'il n'existe pas de fonction termine : (int -> int) -> int -> bool telle que termine f n détermine si le calcul de f n termine.

Remarque : Ce résultat se généralise et il s'agit d'une preuve fondamentale en calculabilité : il est indécidable de créer une machine de Turing qui détermine si une machine de Turing s'arrête sur son entrée.

Indication : Raisonner par l'absurde et écrire une fonction récursive f impliquant le résultat de termine sur f.

En pratique, on pourra démontrer qu'il n'existe pas de fonction termine : int -> int -> bool dont le premier argument est le numéro d'une fonction de signature (int -> int) (ces fonctions étant dénombrables3).

1. c'est-à-dire une fonction prenant en argument des objets du type commun des éléments de la liste et retournant un booléen 2. En particulier, cela impose que dans ce cas f [0] soit la liste vide (f [] provoque une erreur quoi qu'il arrive).

3. Conséquence : puisque le nombre de fonctions mathématiques deZdansZest indénombrable, il y en a qui ne peuvent pas être représentées par des fonctions écrites sous forme de programmes.

1

Références

Documents relatifs

[r]

Un nombre entier naturel non nul n est dit parfait si la somme des diviseurs de n qui sont supérieurs ou égaux à 1 est égale au double de n. Par exemple, 6 est un

soi ee au desripteur de p eriph erique pass e en argument est d enie dans le hier linux/net/-..

Cours de math´ ematiques Int´ egration. Th´ eor`

Si une fonction paire admet un d´eveloppement limit´e d’ordre n en 0 alors les coefficients des termes de degr´e impair sont nuls, si une fonction impaire admet un

Société spécialisée dans la vente par correspondance de biscuits et chocolats, HORIZON 2000 sou- haitait optimiser la gestion de son stock et de ses préparations de commandes dans

Lebois par ses qualités d'aspect et par la diversité de ses mises en œuvre est en mesure d'établir cette transition entre bâti ancien et édifice nouveau en raison de son

[r]