ESPECIALIDAD: Ingeniería en sistemas computacionales MATERIA: Programación lógica y funcional TEMA: !"!# Representación clausa$a $el conocimiento !%!# Consulta $e una &ase $e clausulas '(IDAD: I) CATEDRATIC*: Rui+ Celaya ,la-io A.uiles I(TE/RA(TES DEL E0'IP*: Da-inson 1ern2n$e+ Mel3n$e+
SEMESTRE:
/R'P*:
45
6*7
!%!# C*(S'LTA DE '(A 8ASE DE CLA'S'LAS Clausulas: es una separación finita de cero o mas literales. Cuando la clausula está compuesta de un solo literal diremos que es una clausula unitaria. Las cláusulas contienen la especificación o implementación del conjunto de hechos y reglas que componen el programa. Dicha sección se encabeza con la palabra CLA!"!. na cláusula puede ser: n hecho: por ejemplo padre #$uan% mar&a'. Los predicados se definen mediante un conjunto de cláusulas: clausula( clausula) ... clausulan. Donde el orden es significati*o. +ara facilitar la lectura% se suele dejar una l&nea en blanco entre cláusula y cláusula. Las cláusulas son t,rminos #como todo en +rolog' con el siguiente formato: cabeza :- ojeti*o(% ojeti*o)% ...% ojeti*o. /odo gira en torno al operador 0:-0. Lo que aparece a la izquierda se denomina cabeza y la secuencia de objeti*os que aparece a la derecha se denomina cuerpo. La cabeza es un t,rmino simple% por ejemplo% p#1%()' podr&a ser la cabeza de una cláusula del predicado p2). "s decir% todas las cláusulas de un mismo predicado tienen en la cabeza un t,rmino con el mismo functor y aridad% aunque los argumentos pueden ser distintos. "l cuerpo no es más que el conjunto de condiciones que deben cumplirse #tener ,3ito' para que el predicado tenga ,3ito si lo in*ocamos con un objeti*o que unifique con la cabeza. Cuando in*ocamos un objeti*o% +rolog unifica dicho objeti*o con las cabezas de las cláusulas. Cada cláusula que unifique constituye un punto de elección. A continuación se ejecuta el cuerpo de la primera cláusula. +ara ello se mantienen las ligaduras que ocurrieron en el paso anterior. !i el cuerpo tiene ,3ito% pueden ocurrir nue*as ligaduras. Dichas ligaduras pueden afectar de nue*o a la cabeza de la cláusula. "n consecuencia% el ámbito de *isibilidad de las *ariables es una 4nica cláusula. !i el cuerpo de la cláusula falla% el mecanismo de bac5trac5ing nos lle*a al siguiente punto de elección% es decir% la siguiente cláusula. "l proceso se repite mientras queden cabezas que unifiquen #es decir% puntos de elección'. Cuando no quedan cabezas que unifiquen% el objeti*o falla.
E9emplo simple 6eamos un predicado compuesto por una simple cláusula: es7*iejo#8ndi*iduo' :- edad#8ndi*iduo%6alor'% 6alor 9 ;. Ahora in*ocamos el objeti*o es7*iejo#luis'. +ara ello supongamos que la edad de Luis es <) a=os% es decir% el objeti*o edad#luis%<)' tiene ,3ito. +rimero se unifica la cabeza de la cláusula con el objeti*o. "s decir% unificamos es7*iejo#luis' y es7*iejo#8ndi*iduo'% produci,ndose la ligadura de la *ariable 8ndi*iduo al *alor luis. Como el ámbito de *isibilidad de la *ariable es su cláusula% la ligadura tambi,n afecta al cuerpo% luego estamos ejecutando realmente: es7*iejo#luis' :- edad#luis%6alor'% 6alor 9 ;. Ahora ejecutamos el cuerpo% que liga la *ariable 6alor a <). +ero el cuerpo falla porque el segundo objeti*o falla #<)9; es falso'. "ntonces la cláusula falla y se produce bac5trac5ing. Como no hay más puntos de elección el objeti*o falla. "s decir% Luis no es un *iejo.
Cl2usulas sin cuerpo !i no e3isten condiciones para que una cláusula sea cierta podemos omitir el cuerpo. "n tal caso solamente escribimos la cabeza terminada en punto. +or E9emplo: "dad #$uan% <)'. "dad #Luis% );'. !on dos cláusulas de predicado edad2). Las cláusulas sin cuerpo se suelen denominar ecos% e.g. es un hecho que la edad de Luis es ); a=os. De&e sa&er •
•
•
•
+odemos escribir las cláusulas en una sola l&nea% si no lo hacemos es por legibilidad: a :- b%c%d. "l orden de escritura de las cláusulas determina el orden en que se suceden las soluciones. >ecuerde que pueden aparecer puntos de elección dentro del cuerpo de una cláusula% como en toda secuencia de objeti*os. "sto significa que una 4nica cláusula puede dar lugar a *arias soluciones cuando uno o más objeti*os del cuerpo tienen tambi,n *arias soluciones. !i una misma *ariable aparece en dos cláusulas diferentes% entonces son *ariables diferentes pero con el mismo nombre. >ecuerde que el ámbito de *isibilidad de las *ariables es una 4nica cláusula.