• Aucun résultat trouvé

Devoir de Programmation Fonctionnelle

N/A
N/A
Protected

Academic year: 2022

Partager "Devoir de Programmation Fonctionnelle"

Copied!
1
0
0

Texte intégral

(1)

Devoir de Programmation Fonctionnelle

I) Sujet du devoir

On désire implémenter en Ocaml l’algorithme d’unification entre termes du premier ordre qui a été vu en cours. On implémentera bien l’algorithme du cours (i.e. la transformation d’un système d’équations entre termes du premier ordre par le moyen de quatre pas de calcul élémentaires jusqu’à obtention d’un système d’équations sous forme résolue ou d’un échec) et pas un autre.

Pour représenter les termes du premier ordre, on utilisera le type Ocaml suivant :

# type terme = X of int | A | B | F of terme | G of terme * terme | H of terme * terme * terme;;

Un terme est donc soit une variable Xi, soit la constante A, soit la constante B, soit le symbole de fonction F (resp. G, H) ayant pour argument(s) un (resp. deux, trois) terme(s). Une équation sera un couple de tels termes, et un système d’équations une liste de telles équations.

Parmi les nombreuses fonctions que vous ne manquerez pas de définir figureront les suivantes : forme_resolue qui prend en entrée un système d’équations, et renvoie un booléen indiquant si ce système est sous forme résolue ; substitution qui prend en entrée une variable Xi, un terme t1 et un terme t2, et renvoie le terme t2 où toutes les occurrences de Xi ont été substituées par t1 ; test_occurrence qui prend en entrée une variable et un terme, et renvoie un booléen indiquant si la variable apparaît dans le terme ; etc.

II) Document attendu

Le devoir sera réalisé en binôme et donnera lieu à un rapport papier qui rendu le mardi 23 mai à 14h.

Ce document comprendra :

- Une présentation du problème et de sa solution algorithmique en pseudo-code.

- Une discussion des différents choix d’implémentation ainsi que des problèmes rencontrés.

- Un listing commenté des types et fonctions Ocaml utilisés.

- Des jeux d’essais nombreux et pertinents.

La notation prendra en compte, à parts égales, le contenu (i.e. le code) et la forme (i.e. le rapport), ce devoir étant autant l’occasion d’apprendre à rédiger un document que celle de programmer en Ocaml.

Références

Documents relatifs

Comme les pommes coûtent trois fois moins chers que les tomates, on en déduit que les tomates coûtent trois fois plus chers que les pommes, c’est- à-dire on en déduit que le

Équations diérentielles linéaires scalaires du premier

Nous allons chercher à présent les conditions suffisantes pour que les intégrales. des

Toute équation aux dérivées partielles, pour laquelle les tangentes aux courbes intégrales déterminent un complexe tétraédral est une transformée ponctuelle de

Il en résulte qu'étant donnée une équa- tion (i), on reconnaît à l'aide d'opérations linéaires si l'on peut déter- miner un pareil système, et, dansée cas, le système

On sait reconnaître algébriquement si l'intégrale de l'équation ( i ) donnée ne prend (fuun nombre fini de valeun autour des points ûrùù/ues mobiles, la valeur correspondante de

On reconnaît algébriquement si l'intégrale de ( ï ) est de cette nature et correspond à la valeur CT == ï de m Cet l'équation s'intégre alors par qua- dratures), ou bien on

Cette limite supérieure de P est très élevée : dans chaque cas parti- culier, on pourra l'abaisser notablement. On arrive ainsi à une rela- tion où figure celle des quantités A-J