Master INFO M1 UE Programmation Logique 10 juin 2011
Transcription
Master INFO M1 UE Programmation Logique 10 juin 2011
Master INFO M1 UE Programmation Logique 10 juin 2011 Enseignants : P. Moraitis / E. Bonzon Aucun document autorisé Année 2010-2011 Question 1 (3.5 points) : Soit les deux versions suivantes du programme ancetre: ancetre(X, Z) :- parent(X,Z). ancetre(X, Z) :- parent(X,Y), ancetre(Y,Z). ancetre2(X, Z) :- ancetre2(X,Y), parent(Y,Z). ancetre2(X, Z) :- parent(X,Z). Comparez ces deux programmes. Permettront-ils d'obtenir le même résultat? Expliquez. Question 2 (5 points) : Ecrire les fonctions suivantes~: rang_impair(L1,L2), qui étant donnés une liste L1, renvoit la liste L2 qui ne contient que les éléments de rang impair de la liste L1. Par exemple, rang_impair([a,b,c,d],L2) retourne L2=[a,c] mentionTB(L,L1,L2), qui étant donnés une liste de nombres L, calcule la liste L1 des nombres de L strictement inférieurs à 16, et la liste L2 des nombres de L supérieurs ou égaux à 16. Par exemple, mentionTB([8,16,12,15,18,5],L1,L2) retourne L1=[8,12,15,5] et L2=[16,18] Question 3 (6 points) Trouver les « answer sets » des programmes suivants : a) pnot q qnot p rp rq b) pnot q qnot p rnot r rp Question 4 (5.5 points) Considérer le programme suivant Π1: p not r, not q, q Utiliser le SLDNF calculus pour trouver si {p} est une conséquence de ce programme. Décrire en détail les différentes étapes.