PROGRAMACIÓN LÓGICA INTRODUCCIÓN. Juan Juárez Fuentes

Documentos relacionados
1 INTRODUCCIÓN. Cuadro 1: Sistema de lenguaje natural de Colmerauer y Roussel [7].

Programación Declarativa

Programación Declarativa Curso

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Tema 1: Introducción. Definiciones. Lógica Computacional. Lógica Computacional. Temas Avanzados en Ingeniería Informática I (Lógica)

5.2 Introducción a Prolog. Lenguaje Prolog. Características de Prolog. Su nombre viene de Programación en Lógica, creado a comienzos de los 70:

Contenido. BLOQUE I: PRELIMINARES Tema 1: INTRODUCCIÓN Lógica Grado en Ingeniería Informática. Introducción. El lenguaje natural.

1. Computadores y programación

Paradigma lógico Lógica proposicional Resolución. Programación Lógica. Eduardo Bonelli. Departamento de Computación FCEyN UBA. 10 de octubre, 2006

Inteligencia Artificial

Métodos de Inteligencia Artificial

Programación Funcional en LISP Lógica para Ciencias de la Computación

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

Programación Declarativa. Programación Lógica.

Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca

Lógica Proposicional IIC1253. IIC1253 Lógica Proposicional 1/64

UNIDAD I.- INTRODUCCIÓN

Introducción a la Programación en C

COLEGIO DE ESTUDIOS DE POSGRADO DE LA CIUDAD DE MÉXICO

Lógica e Inteligencia Artificial: Una Historia sin Fin

Tema 1: Introducción a la Inteligencia Artificial

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

Programación Lógica. David Barrera Steven Bustos Jhonatan Guzmán

Tema 3: Características de la programación funcional. Sesión 5: El paradigma funcional (1)

Axiomas del Cálculo de Predicados

INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Razonamiento Automático. Representación en Lógica de Predicados. Aplicaciones. Lógica de Predicados. Sintáxis y Semántica

Lenguajes de Programación Programación funcional

Enfoques computacionales de la memoria humana: un estado del arte. Renato Garita Figueiredo PROIFED

Capítulo 2 El Método de Resolución

Lógica proposicional. Ivan Olmos Pineda

Programación Concurrente y distribuida

Inteligencia en Redes de Comunicaciones - 04a Prolog

CONTENIDO. 1.- Introducción a la Inteligencia Artificial (IA) 2.- Lógica de predicados. 3.- Búsqueda de soluciones

El sistema deductivo de Hilbert

Matemáticas Discretas Lógica

Evolución de la Programación Orientada a Objetos

Inteligencia Artificial. Carrera: Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

Inteligencia Artificial II Razonamiento Bayesiano

Principios de diseño de lenguajes

LÓGICA COMPUTACIONAL

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

Introducción a la programación

Programación estructurada (Lenguajes de programación)

Proyecto: Programación Declarativa: Lenguaje Prolog

Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional

Tema 03: Programación estructurada

INSTITUCIÓN EDUCATIVA SAN CRISTÓBAL

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Solución al parcial 14

Lógica de predicados

Cálculo de predicados. Lógica de predicados. Cálculo de predicados. Cálculo de predicados 08/06/2011

Lógica Proposicional. Sergio Stive Solano Sabié. Marzo de 2012

Representación de Conocimientos

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

Indique la respuesta correcta (d=ninguna de las anteriores, e=todas las anteriores)

Paradigmas de lenguajes de programación. Introducción a la programación imperativa. Lenguaje C. Programación imperativa

Lenguajes de programación Última modificación 2008/10

Introducción a la programación

Lógica Proposicional. Sergio Stive Solano Sabié. Abril de 2013

Programa de estudios por competencias Inteligencia Artificial I

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

Introducción a la programación: Contenido. Introducción

Tópicos Avanzados: Inteligencia Computacional I

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERIA SYLLABUS. PROYECTO CURRICULAR: Ingeniería de Sistemas

INGENIERÍA EN SISTEMAS Y COMUNICACIONES

Ing. Iván Adrianzén Olano. Programación Lógica

M.C. Mariano Larios G. 3 de diciembre de 2009

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

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

Inteligencia Artificial: Prolog

Programación Funcional

El lenguaje P. Lógica y Computabilidad ( ) símbolos p. Verano convenciones. Lógica Proposicional - clase 1

1 Relaciones entre la lógica y la computación. 2 Descripción y análisis de lenguajes. 3 Otras tres áreas de aplicación directa de la lógica

PROGRAMA DE CURSO. Horas Docencia Horas de Trabajo Horas de Cátedra Docentes. Personal Resultados de Aprendizaje

José Luis Alonzo Velázquez

Matemáticas Discretas TC1003

LÓGICA FORMAL TEORIAS DE PRIMER ORDEN. Axiomática

Isabelle como un lenguaje funcional

Programación Orientada a Objetos Profr. Pedro Pablo Mayorga

LP - Lenguajes de Programación

Lenguajes de Cuarta Generación

TEC SATCA 1 : Carrera:

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

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.

Ampliación Matemática Discreta. Justo Peralta López

Sumario Prólogo Unidad didáctica 1. Historia de la lógica Objetivos de la unidad... 10

Contenido del curso Fundamentos de Lenguajes de Programación

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

Funciones recursivas

Metodología de Desarrollo de Programas

Dr. Carlos A. Coello Coello Departamento de Computación CINVESTAV IPN

Fundamentos de programación

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

Carrera : RSF-1302 SATCA 1

FACULTAD DE INGENIERÍA INGENIERÍA EN COMPUTACIÓN UNIDAD DE APRENDIZAJE: ANÁLISIS DE LOS LENGUAJES DE PROGRAMACIÓN.

Programación imperativa. Algoritmos y Estructuras de Datos I. Ciclos

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

Programación I Otoño 2017 FCFM - BUAP

Introducción a la Inteligencia Artificial

Transcripción:

PROGRAMACIÓN LÓGICA INTRODUCCIÓN Juan Juárez Fuentes 1

Trabajo propuesto en 1970 Cómo programar un sistema como el siguiente? Usuario> Los gatos matan ratones. Usuario> Tom es un gato al que no le gustan los ratones que comen queso. Usuario> Jerry es un raton que come queso. Usuario> Max no es un gato. Usuario> Qué hace Tom? Sistema> A Tom no le gustan los ratones que comen queso. Sistema> Tom mata ratones. Usuario> Qien es un gato? Sistema> Tom. Usuario> Qué como Jerry? Sistema> Queso 2

Elementos de una lógica Cómo programar un sistema como el siguiente? Observe que este lenguaje define s ımbolos (sintaxis) para: Designar elementos (Tom, Jerry, etc.). Designar conjuntos (Gatos, Ratones, etc.). Relaciones binarias (Comer, Matar, Gustar, etc.). Funciones (The, Subset, True) El razonamiento automático (semántica) se hacía mediante resolución - SL. 3

Historia 1965. Alan Robinson [3] formula el principio de resolución. Reglas de inferencias menos humanas, pero más eficientes. 1970. Alain Colmerauer, Philippe Roussel y Robert Pasero [1] trabajan en traducción automática y procesamiento de lenguaje natural. 1971. Robert Kowalski[2] define la resolución - SL. 1974. El lenguaje Prolog. 4

Mas generalmente Siglo XIX. En su segunda mitad, Gottlob Frege introduce la lógica de primer orden. Modificada a su forma actual por Giuseppe Peano y Bertrand Russell. 1930 s. Kurt Gôedel y Jacques Herbrand estudiaron la noción de computabilidad basada en derivaciones. 1965. La resolución y unificación por Alain Robinson. 1974. La resolución SL de Kowalski: fin del debate (en ese momento) sobre representaciones declarativas y procedimentales. Prolog. 1983. La máquina abstracta de Warren [1], Compilación independiente al procesador usado. 5

Resumiendo La programación lógica es una herramienta y un sujeto de estudio de la inteligencia artificial. La lógica de primer orden es fundamental para entender este paradigma de programación. La programación lógica es un paradigma de programación, que difiere de otros paradigmas como la programaci on imperativa (Algol, C, Pascal, etc.), la orientada a objetos (Simula, Smalltalk, Eiffel, C++, Java, etc.), o la funcional (ML, Haskell, Lisp, etc.). Prolog no es igual a programación lógica, pero es su realización práctica más usada en la actualidad. 6

Objetos Relaciones y programas Asumamos que queremos razonar sobre una genealogía [2]: 1. progenitor(pam, bob). 2. progenitor(tom, bob). 3. progenitor(tom, liz). 4. progenitor(bob, ann). 5. progenitor(bob, pat). 6. progenitor(pat, jim). 7

Cargando Prolog (1) Prolog se puede ejecutar desde una terminal: 8

Cargando Prolog (2) El sistema está en un ciclo Read Eval Print (REPL). 1. progenitor(pam, bob). 2. progenitor(tom, bob). 3. progenitor(tom, liz). 4. progenitor(bob, ann). 5. progenitor(bob, pat). 6. progenitor(pat, jim). 9

Variables Se pueden hacer preguntas más interesantes usando variables:?progenitor(x,liz). X = tom?progenitor(bob,x). X = ann ; X = pat ; false. 1. progenitor(pam, bob). 2. progenitor(tom, bob). 3. progenitor(tom, liz). 4. progenitor(bob, ann). 5. progenitor(bob, pat). 6. progenitor(pat, jim). 10

Quién es el abuelo de jim??progenitor(y,jim), progenitor(x,y). Y = pat X = bob?progenitor(x,y), progenitor(y,jim). X = bob Y = pat?progenitor(tom,x), progenitor(x,y). X = bob Y = ann ; X = bob Y = pat ; false. 11

Resumiendo Es sencillo definir en Prolog una relación especificando las n-tuplas de objetos que la satisfacen. N es conocido como aridad. Un programa Prolog consiste de cláusulas. Los argumentos de una relación pueden ser: objetos concretos o constantes como tom y ann; objetos generales o variables como X e Y. Las preguntas planteadas a Prolog consisten en una o más metas. Una secuencia de metas significa conjunción. La respuesta a una pregunta puede ser positiva o negativa, dependiendo de si la meta se puede satisfacer o no. Si varias respuestas satisfacen una pregunta, Prolog encontrará tantas como el usuario quiera. 12

Reglas Las reglas tienen dos partes: Una parte condicional (el lado derecho de la regla o cuerpo de la regla). Una conclusión (el lado izquierdo de la regla o cabeza de la regla). 13

Extendiendo nuestro conocimiento 14

Probando el nuevo conocimiento La relación hermana/2 presenta una anomalía:?hermana(ann,pat). true.?hermana(x,pat). X = ann ; X = pat ; false. 15

Resumiendo Los programas Prolog pueden extenderse fácilmente agregando nuevas cláusulas. Las cláusulas en Prolog son de tres tipos: hechos, reglas y metas. Los hechos declaran cosas que son verdaderas siempre, incondicionalmente. Las reglas declaran cosas que son verdaderas dependiendo de ciertas condiciones. Por medio de las metas el usuario puede computar qué cosas son verdaderas. 16

Resumiendo (2) Las reglas de Prolog tienen cabeza y cuerpo. El cuerpo es una lista de metas separadas por comas. Las comas implican conjunción. Los hechos son cláusulas con el cuerpo vacío; las preguntas tienen la cabeza vac ıa; y las reglas tienen cabeza y cuerpo. En el curso de una computación, las variables pueden ser substituidas por otros objetos. Las variables se asumen cuantificadas universalmente. La cuantificación existencial solo es posible en las variables que aparecen en el cuerpo de una cl ausula. 17

Extensional contra Intensional 18

Definición recursiva Ancestro definido en términos de ancestro.?ancestro(pam,x). X = bob ; X = ann ; X = pat ; X = jim ; false.?ancestro(x,jim). X = pat ; X = bob ; X = pam ; X = tom ; false. 19

Resumiendo Las reglas recursivas definen conceptos en términos de ellos mismos. Están definidas por lo menos dos casos: uno terminal (no recursivo) y la llamada recursiva. Una relación recursiva define intensionalmente un concepto. intensional no es igual a intencional. 20

Demostración como Computo Satisfacer una meta implica que la meta es verdadera, asumiendo que las relaciones en el programa lógico son verdaderas. Satisfacer una meta significa entonces demostrar que la meta es una consecuencia lógica de los hechos y reglas definidas en un programa. Si la pregunta contiene variables, Prolog necesita también computar cuales son los objetos particulares (que remplazaran a las variables) para los cuales la meta se satisface. 21

Programas lógicos como matemáticas Prolog acepta hechos y reglas como un conjunto de axiomas. El usuario plantea preguntas teoremas Prolog trata de probar este teorema, es decir, demostrar que el teorema se sigue lógicamente de los axiomas. 22

Ejemplos Axioma1: Todos los hombres son falibles. Axioma2: Sócrates es un hombre. Conclusión: Sócrates es falible. 23

?- ancestro(tom, pat) El proceso en un paso: 24

?- ancestro(tom, pat) El proceso en dos pasos: 25

?- ancestro(tom, pat). Recursión 26

Traza de un programa 27

Ejercicio: Coloreando mapas 28

Enunciado Escriba un programa que describa el siguiente mapa. Añada una que verifique si el esquema de color empleado es consistente. Cuántos cómputos son necesarios para verificar un mapa de N regiones? 29

Bibliografía 1. A. Colmerauer and P. Roussel. The birth of Prolog. ACM SIGPLAN Notices, 28(3):1 31, 1993. 2. R. Kowalski and D. Kuehner. Linear resolution with selection function. Artificial Intelligence, 2(3):227 260, 1971. 3. J. A. Robinson. Amachine oriented logic based on the resolution principle. Journal of the ACM, 12(1):23 41, 1965. 30

Bibliografía (2) 4. D. H. D. Warren. An abstract Prolog instruction set. TechnicalReport309,SRI,1983. 5. I. Bratko. Prolog programming for Artificial Intelligence. Addison-Wesley, 1986.. 6. Notas del DR Alejandro Guerra Hernandez. 31