Entorno y herraminetas

Documentos relacionados
Métodos de Inteligencia Artificial

Tema 6: Programación Lógica: semántica declarativa. Lenguajes y Paradigmas de Programación

Programación declarativa ( )

Lenguajes lógicos: cláusulas de Horn

Tema 6: Teoría Semántica

Lógica de predicados

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

Lógica de Predicados de Primer Orden

Capítulo V: Programación Lógica. 5.1 Breve Introducción al Cálculo de Predicados

5.3 Tipos de Datos en Prolog

Lógica de predicados 3. Sintaxis. Juan Carlos León Universidad de Murcia

Deducción automática y programación lógica

Introducción a ASP (Answer Set Programming - programación con conjuntos respuestos)

PALABRA CLAVE Interpretación lógica

PROGRAMACIÓN ORIENTADA A OBJETOS

Resolución en lógica de primer orden

4 PRINCIPIO DE RESOLUCIÓN

RECURSIVIDAD. Ángeles Martínez Sánchez Curso 2016/2017 DMATIC ETSISI

Curso Extraordinario INTELIGENCIA ARTIFICIAL Y SISTEMAS EXPERTOS

Tema 1. Introducción al PROLOG. 1. Qué es el PROLOG? 2. Los elementos de PROLOG 3. Un programa de ejemplo 4. Ejercicios propuestos

Representación del conocimiento mediante reglas

Prolog. Sintaxis Informal. Sintaxis Informal. Hechos: ejemplos. Inteligencia Artificial 2º cuatrimestre de Hechos. Hechos. Reglas.

Unificación. Unificación

Inteligencia Artificial: Prolog

Tema 9: Cálculo Deductivo

PROBABILIDAD Y ESTADÍSTICA

Análisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez

1. EXPRESIONES ALGEBRAICAS.

Tema 16: Extracción de respuestas e introducción a la programación lógica

Expresiones algebraicas

Matemáticas Discretas Lógica

1. Resolución en lógica proposicional

Inteligencia en Redes de Comunicaciones. Prolog. Julio Villena Román.

Tema 5: Otros predicados predefinidos

Búsqueda e inferencia lógica. Programación Lógica y Prolog

Tema 2: Métodos de Deducción para la Lógica Proposicional

INTRODUCCION A LA INTELIGENCIA ARTIFICIAL MÓDULO 6- CÁLCULO DE PREDICADOS Y LÓGICA DE PRIMER ORDEN

Lógica proposicional. Ivan Olmos Pineda

Tema 1. PROGRAMACION en PROLOG Sintaxis: Hechos, Preguntas y Reglas Sintaxis: Objetos estructurados. Listas.

Lógica. Matemática discreta. Matemática discreta. Lógica

Tema 1: Revisión de Prolog

1 Resolución en lógica de proposiciones RESOLUCIÓN. Índice General. César Ignacio García Osorio. Resolución

a ij x i x j = [x] t B A+At ) t = At +(A t ) t = At +A x i x j + a ij + a ji x j x i = s ij x i x j + s ji x j x i 2

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tema 1: Sintaxis y Semántica de la Lógica Proposicional

Tema 9: Declaraciones de tipos y clases

Tema 2: Representación de problemas como espacios de estados

Propiedades de lenguajes independientes del contexto

Inteligencia Artificial. Oscar Bedoya

GUIA 4: ALGEBRA DE BOOLE

2.1.- Formalización de enunciados en lenguaje ordinario

Lógica de primer orden: Repaso y notación

Ejercicio 1 Completa: Monomio Coeficiente Parte literal Grado

Distribuciones de Probabilidad para Variables Aleatorias Discretas 1

23/09/2009. Introducción Hello word La familia Buendía Recursión Listas

PARADIGMAS DE PROGRAMACIÓN CALCULO LAMBDA CALCULO LAMBDA

Límites y Continuidad

Teorema de incompletitud de Gödel

Inteligencia Artificial

Lógica de Predicados

Teoremas: Condiciones Necesarias, Condiciones Suficientes y Condiciones Necesarias y Suficientes

PROLOG Inteligencia Artificial Universidad de Talca, II Semestre Jorge Pérez R.

POLINOMIOS Y DIVISIÓN DE POLINOMIOS MATEMÁTICAS 3º ESO

Grafos y espacios de estados

Programación con Listas

FUNCIONES DE PROPORCIONALIDAD: y = mx. Su pendiente es 0. La recta y = 0 coincide con el eje

Redes Semánticas. Redes semánticas. Limitaciones de las redes semánticas. Notas

TÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad

Semántica: principales usos. Semántica: principales enfoques. Semántica Operacional. Sintaxis abstracta de un lenguaje (sujeto) Semántica Operacional

Tema 6: Estructuras de datos recursivas

REGLAS Y LEYES LOGICAS

Gramáticas lógicas. Programación Lógica InCo

Variables aleatorias unidimensionales

Capítulo 3. Polinomios

Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES. Funciones boolenas. Semántica

ÁLGEBRA I. Curso Grado en Matemáticas

CLAVE: MIS 206 PROFESOR: MTRO. ALEJANDRO SALAZAR GUERRERO

Conjuntos de Vectores y Matrices Ortogonales

5.1 DISTINTOS TIPOS DE FUNCIONES LINEALES

LÓGICA COMPUTACIONAL

7. Cálculo de predicados (CP)

El ente básico de la parte de la matemática conocida como ANÁLISIS, lo constituye el llamado sistema de los número reales.

Tema 9: Declaraciones de tipos y clases

Sistemas de Ecuaciones Lineales y Matrices

Introducción a la Matemática Discreta

Lógica proposicional

PROPUESTA A. 3A. a) Despeja X en la ecuación matricial X A B = 2X donde A, B y X son matrices cuadradas

UNIDAD I: SISTEMAS DE DOS ECUACIONES CON DOS INCÓGNITAS

LÓGICA DE PROPOSICIONAL Y PREDICADOS INGENIERÍA DE SISTEMAS

Capítulo 4. Lógica matemática. Continuar

El TAD Árbol. El TAD Árbol

Para hallar, gráficamente, la solución de un problema de Programación Lineal con dos variables, procederemos del siguiente modo:

Tema 4: Redes semánticas y marcos

UNIDAD DE APRENDIZAJE I

ÁLGEBRA DE BOOLE Y FUNCIONES LÓGICAS

2 LÓGICA DE PRIMER ORDEN

TEMA 5 El tipo grafo. Tipo grafo

unicoos Funciones lineales Objetivos 1.Función de proporcionalidad directa pág. 170 Definición Representación gráfica

IIC2213. IIC2213 Teorías 1 / 42

Transcripción:

PROGRAMACIÓN LÓGICA I. Sistemas para la programación lógica. II. Programación elemental con bases de datos y programación recursiva. III. Programación con listas y árboles. IV. Control explícito en Prolog. V. Metaprogramación. Entorno y herraminetas SWI-Prolog entorno de programación Prolog http://www.swi.psy.uva.nl/projects/swi-prolog/ SLD-Draw representación de árboles SLD http://www.lcc.uma.es/~pacog/slddraw 1

Bibliografía The Art of Prolog (2ed) Leon Sterling y Ehud Shapiro MIT Press, 1994 Prolog Programming for Artificial Intelligence (3ed) Ivan Bratko Addison-Wesley, 2000 Clause and Effect William F. Clocksin Springer-Verlag, 1997 Programación en Prolog (2ed) William F. Clocksin y Chris S. Mellish Gustavo Gili, 1993 Bibliografía en internet Libros gratuitos disponibles en internet: Prolog Programming: A First Course Paul Brna http://cbl.leeds.ac.uk/~paul/prologbook/ Logic, Programming and Prolog (2ed) Ulf Nilsson y Jan Maluszynski http://www.ida.liu.se/~ulfni/lpp/ 2

Sistema para la Programación Lógica. I.1 Términos, relaciones y programas. I.2 Interpretación declarativa de un programa. I.3 Interpretación operativa de un programa. I.4 Resolución SLD. I.5 Unificación de términos e instanciación de variables. Términos, relaciones y programas. Términos En los programas lógicos se opera con objetos o términos funcionales: constantes -denotaciones de objetos simples; (números o funtores sin parámetros) estructuras -denotaciones de objetos compuestos; (funtores con parámetros) Estructuras simples(registros). Estructuras recursivas. variables - denotaciones genéricas de objetos» (simples y compuestos) 3

Constantes Ejemplo de términos cero, 1.3, antonio, casado, soltero, nil, arbol_vacio (los nombres de funtores comienzan con minúscula) Estructuras simples(registros): ficha(antonio, casado), substancia(azufre,16,32.1). arco(a,b) Estructuras recursivas: suc(cero), suc(suc(cero)),... arbol(antonio,arbol_vacio,arbol_vacio), arbol(antonio,arbol(juan,arbol_vacio,arbol_vacio),arbol_vacio) Variables X, Nombre, Ficha, Estado_civil (los nombres de variables comienzan con mayúscula) Relaciones/Predicados Representan correspondencias entre términos funcionales Se utilizan para construir términos predicativos o fórmulas atómicas susceptibles de satisfacción o valoración lógica. padre(antonio, jose) elemento(3,[1,5,7]) Son los sujetos de los cálculos en la programación lógica. No son objetos de cálculo. 4

Definición de relaciones Mediante cláusulas de Horn estableciendo hechos fórmula-atómica ". estableciendo reglas fórmula-atómica ":-" fórmula-atómica {","fórmula-atómica}"." La definición de una relación puede requerir de varias cláusulas Cada relación se caracteriza por su nombre y su número de argumentos o aridad. Ejemplo padre(antonio, maria). padre(antonio, luis). madre(maria, jose). persona(x). progenitor(a,d) :- padre(a,d). progenitor(a,d) :- madre(a,d). antepasado(a,d) :- progenitor(a,d). antepasado(a,d) :- progenitor(a,h), antepasado(h,d). % padre/2 % madre/2 % persona/1 % progenitor/2 % antepasado/2 5

Sintaxis de Prolog cláusula::= fórmula-atómica "." fórmula-atómica ":-" fórmula-atómica {","fórmula-atómica}"." fórmula-atómica ::= predicado "(" término {"," término} ")" predicado ::= letra-minúscula {letra dígito} término ::= constante estructura variable constante ::= letra-minúscula {letra dígito} número estructura ::= funtor "(" término {"," término} ")" lista funtor ::= letra-minúscula {letra dígito} lista ::= "[]" "["cabecera " " cola "]" cabecera ::= término cola ::= lista variable ::= letra-mayúscula {letra dígito} "_"{letra dígito} Programa Definiciones de relaciones (Base de conocimiento) + Cuestión Cuestión/Objetivo Conjunción de fórmulas atómicas establecidas entre objetos que pueden ser fijos, variables o estar determinados parcialmente. "?-"fórmula-atómica {"," fórmula-atómica}"." 6

Cuestiones Cuestiones de mera comprobación?- padre(antonio, maria).?- padre(antonio, jose). (se aplica la identidad como regla de deducción)?- persona(antonio). (se aplica la instanciación como regla de deducción: de una proposición cuantificada universalmente se deduce cualquier instancia ) Cuestiones Cuestiones para el cálculo de valores de objetos?- padre(antonio, X).?- padre(x, maria).?- progenitor(antonio, X), madre(x, jose). (se aplica la generalización como regla de deducción: una cuestión existencial es siempre una consecuencia lógica de la existencia de una instancia de dicha cuestión) 7

Interpretación declarativa Cláusulas de Horn Las cláusulas de Horn son cláusulas con, a lo más, un literal positivo ( A B ) X,..., 1 X 1... n B k Una cláusula de la forma A. sólo tiene el literal positivo y se interpreta simplemente como la afirmación de que la fórmula A es cierta, para todos los valores posibles de las variables que aparecen (si aparece alguna). Interpretación declarativa Una cláusula completa A :-B 1,B 2,...,B k. se interpreta como una implicación de la forma siguiente: A B B... 1 con todas las variables que aparezcan cuantificadas universalmente: la fórmula A es cierta, para todos los valores posibles de las variables que aparezcan, para los que son ciertas todas las fórmulas B i ; lo que puede requerir la existencia de alguna combinación de valores para las variables que no aparecen en A. 2 B k 8

Interpretación declarativa antepasado(a,d) :- progenitor(a,h),antepasado(h,d). se interpreta como ( progenitor( A, H ) antepasado( H, D) antepasado( A, )) A, D, H D arco(a,b). arco(a,d). arco(b,c). camino(x,y) :- arco(x,y). camino(x,y) :- arco(x,z), camino(z,y). Interpretación declarativa Una cuestión?- B 1, B 2,..., B k. sólo tiene literales negativos y se interpreta como para cada combinación de valores de las variables que aparecen, alguna fórmula B i no es cierta?- progenitor(antonio, X), madre(x, jose). significa X ( progenitor( antonio, X ) madre( X, jose)) si conseguimos una refutación, habremos probado lo contrario o lo que es lo mismo X ( progenitor( antonio, X ) madre( X, jose)) X ( progenitor( antonio, X ) madre( X, jose)) 9

Interpretación operativa de un programa Cláusulas de Horn (interpretación procedimental) Una cláusula de Horn A :-B 1,B 2,...,B k. se puede interpretar también en la forma para resolver A se debe resolver B 1, B 2,...y B k ; con lo que será comparable a la definición de un procedimiento, donde A hace el papel de la cabecera del procedimiento, B 1,B 2,...y B k serán el cuerpo, interpretado como una serie de llamadas a procedimientos auxiliares B i, Resolución SLD Selective Lineal for Definite clauses Procedimiento de refutación?- B 1,B 2,...,B k. Cada paso de resolución, aplicado a una cuestión o resolvente?- B 1,B 2,...,B k. consiste en la siguiente secuencia de operaciones: r1) seleccionar una fórmula B i del resolvente, r2) seleccionar una cláusula C del programa, dentro del procedimiento correspondiente al predicado que aparece en B i, cuya cabecera coincida con B i (en realidad serán literales opuestos), r3) si se encuentra tal cláusula, sustituir, en el resolvente, B i por el cuerpo de C; si no la resolución termina sin éxito. ejc00.pl 10

Situaciones de indeterminación Las reglas para la selección de fórmulas dentro de una cuestión se denominan reglas de cálculo o de selección y se demuestra que no afectan al resultado de los cálculos (únicamente afectan al número de pasos). Las reglas para la selección de cláusulas de la base de conocimiento se denominan reglas de búsqueda y sí tienen consecuencias sobre el resultado de los cálculos. Espacio de búsqueda asociado a un Programa Fijada una regla de cálculo, los distintos cálculos posibles para un programa constituido por una cuestión Q y una base de conocimiento P se pueden representar gráficamente mediante un árbol de búsqueda caracterizado por: su raíz, etiquetada con la cuestión Q o primer resolvente; y los demás nodos etiquetados con los resolventes producidos por pasos de resolución; además para cada nodo etiquetado con un resolvente no vacío, si A es la fórmula que selecciona la regla de cálculo, existirán tantos descendientes como cláusulas con cabecera coincidente con A existan en el procedimiento de definición del correspondiente predicado, los nodos etiquetados con resolventes vacíos no tienen descendientes. Las distintas reglas de búsqueda representan distintas formas de recorrido de los árboles de búsqueda. ejc01.pl 11

Unificación de términos... progenitor(a,d) :- padre(a,d)....?- progenitor(antonio,x). Sustituimos antonio por A, y X por D y tomamos la regla progenitor(antonio,x) :- padre(antonio,x). La nueva resolvente es padre(antonio,x). Sustituciones e Instancias. Una sustitución de variables es un conjunto finito θ = {V 1 /t 1,...,V n /t n } de ligaduras V i /t i donde cada V i es una variable distinta y cada t i un término distinto de V i. Una instancia de una fórmula E, por aplicación de una sustitución θ, es la expresión Eθ obtenida tras la sustitución simultánea de todas las variables que aparecen en θ por los términos de sus correspondientes ligaduras; p.e.: si E = p(x, f(y),a) y θ = {X/b, Y/X} Eθ = p(b, f(x), a). 12

Sustituciones Una redenominación o cambio de nombre de las variables de una fórmula E es una sustitución de variables que aparecen en la expresión por otras variables que no aparecen en la expresión o por algunas de las que se van a cambiar; p.e.: para E = p(x, f(y),a), θ = {X/Z, Y/X} es una redenominación de las variables de E. Composición de sustituciones Sean dos sustituciones θ = {V 1 /t 1,...,V n /t n } y τ = {U 1 /s 1,..., U m /s m } Se define como la sustitución resultante de aplicar primero θ y después τ. Esta sustitución es equivalente a la sustitución obtenida a partir de {V 1 /t 1 τ,...,v n /t n τ, U 1 /s 1,..., U m /s m } eliminando 1) las ligaduras U i /s i tales que la variable U i coincida con alguna variable V j ; y 2) las ligaduras V i /t i τ tales que V i = t i τ. p.e.: la composición de θ = {X/f(Y), Y/Z} y τ = {X/a,Y/b, Z/Y} será θτ = {X/f(b), Z/Y} 13

Ejercicios E=p(X, g(y), Z) σ= {X/f(Y)} θ= {Y/a, Z/b, X/c} Calcular (E σ) θ E (σ θ) Unificadores Un unificador de dos fórmulas atómicas A y B es una sustitución θ tal que Aθ =Bθ; p.e.: θ ={Y/f(a), X/a, Z/a} es un unificador para las fórmulas A =p(f(x),z) y B = p(y,a), pues Aθ = p(f(a), a) = Bθ. Otro es θ ={Y/f(g(b)), X/g(b), Z/a} 14

Unificador de máxima generalidad Un unificador de dos fórmulas atómicas A y B se dice que es un unificador de máxima generalidad (o un umg) cuando cualquier otro siempre se puede expresar como composición de éste con alguna sustitución (viene a ser el que establece el menor número de ligaduras) p.e.: para A = p(f(x),z) y B = p(y,a), θ = {Y/f(X), Z/a} es un unificador de máxima generalidad. Un umg de dos términos no siempre es único, pueden existir varios; pero entonces se diferenciarán únicamente en una redenominación de las variables; p.e.: para A = p(f(x), Z) y B = p(f(y),v), θ = {X/Y, Z/V} y τ = {Y/X, Z/V} son dos umgs tales que θ= τ{x/y} y τ =θ{y/x} Algoritmo de unificación 0) SI ambas fórmulas comienzan por predicados distintos, ENTONCES (no son unificables) PARAR SI NO CONTINUAR; 1) k := 0; θ 0 = ε (sustitución vacía); 2) SI Eθ k = Fθ k ENTONCES (θ k será un umg) PARAR SI NO determinar aquéllos dos términos que comienzan en el primer carácter de Eθ k y Fθ k, respectivamente en el que difieren ambas expresiones (primer par de discordancia); 3) SI uno de los términos es una variable X y el otro es un término t donde no aparece X ENTONCES construir θ k+1 componiendo θ k con {X/t}; k:=k+1; IR A 2) SI NO (no son unificables) PARAR 15

Ejercicios Aplicar el algoritmo de unificación a los pares siguientes a) p(f(a), g(x)), p(y,y) b) p(a, X, h(g(z))), p(z, h(y),h(y)) c) p(x,x), p(y, f(y)) Resolución con variables Si E y F son fórmulas atómicas unificables, con umg θ, entonces {(E C)θ,( F C )θ} = (C C')θ Todas las instancias de (C C')θ son consecuencia lógica de las instancias (E C)θ y ( F C')θ 16

Extensión del algoritmo de resolución?- B 1,B 2,...,B k. r1) seleccionar una fórmula B i del resolvente; r2) seleccionar una cláusula C del programa, dentro del procedimiento correspondiente al predicado que aparece en B i ; r3) redenominar las variables de la cláusula C, si es necesario, para que no coincidan con las variables que aparecen en el resolvente; r4) unificar B i con la cabecera de la cláusula (redenominada); r5) si la unificación tiene éxito y produce un umg θ - sustituir, en el resolvente, B i por el cuerpo de C (redenominada), - aplicar las sustituciones de θ al resolvente resultante para obtener un nuevo resolvente. ejc02.pl Resolución SLD aplicada a cláusulas de Horn consistente -si para un objetivo Q existe un cálculo que tiene éxito, dicho objetivo es consecuencia lógica de la base de conocimiento, desde el punto de vista de la semántica declarativa, para los valores de las variables que aparecen en la sustitución calculada; y completa si un objetivo Q es consecuencia lógica, desde el punto de vista de la semántica declarativa, para ciertos valores de las variables, entonces existe un cálculo de resolución que termina en éxito y produce los mismos valores para las variables 17

Prolog Regla de selección: De izquierda a derecha Regla de búsqueda: De arriba abajo Cómo construye el árbol SLD? En profundidad de izquierda a derecha Backtraking o reevaluación Esto hace que no sea completo ejc01.pl Ejemplos p(x,y):-q(x,y). p(x,y):-q(a,x). q(a,a). q(x,a):- r(y),s(x,y). q(x,y):-r(x),p(x,y). s(b,b). s(b,x):-r(x). r(b). r(a). ejc09.pl?-p(b,z). 18

Ejemplos p(x,v,v). p(x,f(x,y),z):-p(x,y,z). p(x,f(y,z),f(x,t)):-p(x,z,t).?-p(x,f(a,f(b,f(a,v))),l). ejc10.pl 19