SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
PD Tema 12: Introducción a la programación lógica con Prolog




                            Lógica informática (2011–12)
          Tema 12: Introducción a la programación lógica con Prolog


                                     José A. Alonso Jiménez
                                      Andrés Cordón Franco
                                     María J. Hidalgo Doblado

                                  Grupo de Lógica Computacional
                          Departamento de Ciencias de la Computación e I.A.
                                       Universidad de Sevilla




                                                                              1 / 43
PD Tema 12: Introducción a la programación lógica con Prolog




Tema 12: Introducción a la programación lógica con Prolog

  1. El sistema deductivo de Prolog

  2. Las listas en Prolog

  3. Operadores en Prolog

  4. Control mediante corte

  5. Negación como fallo




                                                               2 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog




Tema 12: Introducción a la programación lógica con Prolog

  1. El sistema deductivo de Prolog
         Deducción Prolog en lógica proposicional
         Deducción Prolog en lógica relacional
         Deducción Prolog en lógica funcional

  2. Las listas en Prolog

  3. Operadores en Prolog

  4. Control mediante corte

  5. Negación como fallo

                                                               3 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica proposicional



Deducción Prolog en lógica proposicional
         Base de conocimiento y objetivo:
                 Base de conocimiento:
                         Regla 1: Si un animal es ungulado y tiene rayas negras, entonces
                         es una cebra.
                         Regla 2: Si un animal rumia y es mamífero, entonces es ungulado.
                         Regla 3: Si un animal es mamífero y tiene pezuñas, entonces es
                         ungulado.
                         Hecho 1: El animal es mamífero.
                         Hecho 2: El animal tiene pezuñas.
                         Hecho 3: El animal tiene rayas negras.
                 Objetivo: Demostrar a partir de la base de conocimientos que el
                 animal es una cebra.




                                                                                            4 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica proposicional



Deducción Prolog en lógica proposicional
         Programa:

         es_cebra    :- es_ungulado, tiene_rayas_negras.       %R1
         es_ungulado :- rumia, es_mamífero.                    %R2
         es_ungulado :- es_mamífero, tiene_pezuñas.            %R3
         es_mamífero.                                          %H1
         tiene_pezuñas.                                        %H2
         tiene_rayas_negras.                                   %H3
         Sesión:
          > pl
          Welcome to SWI-Prolog (Multi-threaded, Version 5.6.20)
          Copyright (c) 1990-2006 University of Amsterdam.
          ?- [animales].
          Yes
          ?- es_cebra.                                           5 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica proposicional



Deducción Prolog en lógica proposicional
         Árbol de deducción:




                                                               6 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica proposicional



Deducción Prolog en lógica proposicional
         Demostración por resolución SLD:




                                                               7 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica relacional



Deducción Prolog en lógica relacional
         Base de conocimiento:
                 Hechos 1-4: 6 y 12 son divisibles por 2 y por 3.
                 Hecho 5: 4 es divisible por 2.
                 Regla 1: Los números divisibles por 2 y por 3 son divisibles por 6.
         Programa:

         divide(2,6).                                               %   Hecho   1
         divide(2,4).                                               %   Hecho   2
         divide(2,12).                                              %   Hecho   3
         divide(3,6).                                               %   Hecho   4
         divide(3,12).                                              %   Hecho   5
         divide(6,X) :- divide(2,X), divide(3,X).                   %   Regla   1



                                                                                       8 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica relacional



Deducción Prolog en lógica relacional
         Símbolos:
                 Constantes: 2, 3, 4, 6, 12
                 Relación binaria: divide
                 Variable: X
         Interpretaciones de la Regla 1:
                 divide(6,X) :- divide(2,X), divide(3,X).
                 Interpretación declarativa:
                 (∀X )[divide(2, X ) ∧ divide(3, X ) → divide(6, X )]
                 Interpretación procedimental.
         Consulta: ¿Cuáles son los múltiplos de 6?
          ?- divide(6,X).
          X = 6 ;
          X = 12 ;
          No
                                                                        9 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica relacional



Deducción Prolog en lógica relacional
         Árbol de deducción:




         Comentarios:
                 Unificación.
                 Cálculo de respuestas.
                 Respuestas múltiples.
                                                               10 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Representación de los números naturales:
              0, s(0), s(s(0)), . . .
         Definición de la suma:

         0 + Y = Y
         s(X) + Y = s(X+Y)
         Programa

         suma(0,Y,Y).                                          % R1
         suma(s(X),Y,s(Z)) :- suma(X,Y,Z).                     % R2
         Consulta: ¿Cuál es la suma de s(0) y s(s(0))?
          ?- suma(s(0),s(s(0)),X).
          X = s(s(s(0)))
          Yes
                                                                      11 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Árbol de deducción:




                                                               12 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Consulta:
                 ¿Cuál es la resta de s(s(s(0))) y s(s(0))?
                 Sesión:
                   ?- suma(X,s(s(0)),s(s(s(0)))).
                   X = s(0) ;
                   No




                                                               13 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Árbol de deducción:




                                                               14 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Consulta:
                 Pregunta: ¿Cuáles son las soluciones de la ecuación
                      X + Y = s(s(0))?
                 Sesión:
                   ?- suma(X,Y,s(s(0))).
                   X = 0         Y = s(s(0)) ;
                   X = s(0)      Y = s(0) ;
                   X = s(s(0)) Y = 0 ;
                   No




                                                                       15 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Árbol de deducción:




                                                               16 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Consulta:
                 Pregunta: resolver el sistema de ecuaciones
                      1+X =Y
                      X +Y =1
                 Sesión:
                   ?- suma(s(0),X,Y), suma(X,Y,s(0)).
                   X = 0
                   Y = s(0) ;
                   No




                                                               17 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Árbol de deducción:




                                                               18 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog




Tema 12: Introducción a la programación lógica con Prolog

  1. El sistema deductivo de Prolog

  2. Las listas en Prolog
        Definición de relaciones sobre listas

  3. Operadores en Prolog

  4. Control mediante corte

  5. Negación como fallo



                                                               19 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog




Representación de listas
   ?- [X|Y] =            [a,b].
   X = a
   Y = [b]
   ?- [X|Y] =            [a,b,c,d].
   X = a
   Y = [b, c,            d]
   ?- [X,Y|Z]            = [a,b,c,d].
   X = a
   Y = b
   Z = [c, d]




                                                               20 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog
     Definición de relaciones sobre listas



Definición de concatenación (append)
         Especificación: conc(A,B,C) se verifica si C es la lista obtenida
         escribiendo los elementos de la lista B a continuación de los
         elementos de la lista A. Por ejemplo,
          ?- conc([a,b],[b,d],C).
          C =[a,b,b,d]
         Definición 1:

         conc(A,B,C) :- A=[], C=B.
         conc(A,B,C) :- A=[X|D], conc(D,B,E), C=[X|E].
         Definición 2:

         conc([],B,B).
         conc([X|D],B,[X|E]) :- conc(D,B,E).
                                                                           21 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog
     Definición de relaciones sobre listas



Consultas con la relación de concatenación
         Analogía entre la definición de conc y la de suma,
         ¿Cuál es el resultado de concatenar las listas [a,b] y [c,d,e]?
          ?- conc([a,b],[c,d,e],L).
          L = [a, b, c, d, e]
         ¿Qué lista hay que añadirle a la lista [a,b] para obtener
         [a,b,c,d]?
          ?- conc([a,b],L,[a,b,c,d]).
          L = [c, d]
         ¿Qué dos listas hay que concatenar para obtener [a,b]?
          ?- conc(L,M,[a,b]).
          L = []           M = [a, b] ;
          L = [a]          M = [b] ;
          L = [a, b] M = [] ;
          No
                                                                           22 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog
     Definición de relaciones sobre listas



Árbol de deducción de ?- conc(L,M,[a,b]).




                                                               23 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog
     Definición de relaciones sobre listas



Definición de la relación de pertenencia (member)
         Especificación: pertenece(X,L) se verifica si X es un elemento
         de la lista L.
         Definición 1:

         pertenece(X,[X|L]).
         pertenece(X,[Y|L]) :- pertenece(X,L).

         Definición 2:

         pertenece(X,[X|_]).
         pertenece(X,[_|L]) :- pertenece(X,L).




                                                                        24 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog
     Definición de relaciones sobre listas



Consultas con la relación de pertenencia
   ?- pertenece(b,[a,b,c]).
   Yes
   ?- pertenece(d,[a,b,c]).
   No
   ?- pertenece(X,[a,b,a]).
   X = a ;
   X = b ;
   X = a ;
   No
   ?- pertenece(a,L).
   L = [a|_G233] ;
   L = [_G232, a|_G236] ;
   L = [_G232, _G235, a|_G239]
   Yes                                                         25 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog
     Definición de relaciones sobre listas



Árbol de deducción de ?- pertenece(a,L).




                                                               26 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Operadores en Prolog




Tema 12: Introducción a la programación lógica con Prolog

  1. El sistema deductivo de Prolog

  2. Las listas en Prolog

  3. Operadores en Prolog

  4. Control mediante corte

  5. Negación como fallo




                                                               27 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Operadores en Prolog




Ejemplos de operadores aritméticos
         Ejemplos de notación infija y prefija en expresiones aritméticas:
          ?- +(X,Y) = a+b.
          X = a
          Y = b
          ?- +(X,Y) = a+b+c.
          X = a+b
          Y = c
          ?- +(X,Y) = a+(b+c).
          X = a
          Y = b+c
          ?- a+b+c = (a+b)+c.
          Yes
          ?- a+b+c = a+(b+c).
          No
                                                                           28 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Operadores en Prolog




Ejemplos de asociatividad y precedencia
         Ejemplos de asociatividad:
          ?- X^Y = a^b^c.
          X = a         Y = b^c
          ?- a^b^c = a^(b^c).
          Yes
         Ejemplo de precedencia
          ?- X+Y = a+b*c.
          X = a         Y = b*c
          ?- X*Y = a+b*c.
          No
          ?- X*Y = (a+b)*c.
          X = a+b       Y = c
          ?- a+b*c = (a+b)*c.
          No                                                   29 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Operadores en Prolog




Definición de operadores
         Definición (ejemplo_operadores.pl)

         :-op(800,xfx,estudian).
         :-op(400,xfx,y).

         juan y ana estudian lógica.
         Consultas
          ?- [ejemplo_operadores].
          ?- Quienes estudian lógica.
           Quienes = juan y ana
           ?- juan y Otro estudian Algo.
           Otro = ana
           Algo = lógica
                                                               30 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Control mediante corte




Tema 12: Introducción a la programación lógica con Prolog

  1. El sistema deductivo de Prolog

  2. Las listas en Prolog

  3. Operadores en Prolog

  4. Control mediante corte

  5. Negación como fallo




                                                               31 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Control mediante corte




Ejemplo de nota sin corte
         nota(X,Y) se verifica si Y es la calificación correspondiente a la
         nota X; es decir, Y es suspenso si X es menor que 5, Y es
         aprobado si X es mayor o igual que 5 pero menor que 7, Y es
         notable si X es mayor que 7 pero menor que 9 e Y es
         sobresaliente si X es mayor que 9. Por ejemplo,
          ?- nota(6,Y).
          Y = aprobado;
          No

         nota(X,suspenso)                            :-    X   < 5.
         nota(X,aprobado)                            :-    X   >= 5, X < 7.
         nota(X,notable)                             :-    X   >= 7, X < 9.
         nota(X,sobresaliente)                       :-    X   >= 9.

                                                                              32 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Control mediante corte




Deducción en el ejemplo sin corte
         Árbol de deducción de ?- nota(6,Y).




                                                               33 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Control mediante corte




Ejemplo de nota con cortes
         Definición de nota con cortes

         nota(X,suspenso)       :- X < 5, !.
         nota(X,aprobado)       :- X < 7, !.
         nota(X,notable)        :- X < 9, !.
         nota(X,sobresaliente).




                                                               34 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Control mediante corte




Deducción en el ejemplo con cortes




         ¿Un 6 es un sobresaliente?
          ?- nota(6,sobresaliente).
          Yes
                                                               35 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Tema 12: Introducción a la programación lógica con Prolog

  1. El sistema deductivo de Prolog

  2. Las listas en Prolog

  3. Operadores en Prolog

  4. Control mediante corte

  5. Negación como fallo




                                                               36 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Definición de la negación como fallo
         Definición de la negación como fallo not:

         no(P) :- P, !, fail.                                  % No 1
         no(P).                                                % No 2




                                                                        37 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Programa con negación
         Programa:

         aprobado(X) :-                                        % R1
            no(suspenso(X)),
            matriculado(X).
         matriculado(juan).                                    % R2
         matriculado(luis).                                    % R3
         suspenso(juan).                                       % R4

         Consultas:
          ?- aprobado(luis).
          Yes
           ?- aprobado(X).
           No
                                                                      38 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Árbol de deducción de ?- aprobado(luis).




                                                               39 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Árbol de deducción de ?- aprobado(X).




                                                               40 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Modificación del orden de los literales
         Programa:

         aprobado(X) :-                                  % R1
            matriculado(X),
            no(suspenso(X)).
         matriculado(juan).                              % R2
         matriculado(luis).                              % R3
         suspenso(juan).                                 % R4

         Consulta:
          ?- aprobado(X).
          X = luis
          Yes


                                                                41 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Árbol de deducción de ?- aprobado(X).




                                                               42 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Bibliografía




Bibliografía
    1. J.A. Alonso (2006) Introducción a la programación lógica con
       Prolog.
                 Cap. 0 (Introducción).
    2. I. Bratko (1990) Prolog Programming for Artificial Intelligence
       (2nd ed.)
                 Cap. 1 (An overview of Prolog) y Cap. 2 (Syntax and meaning of
                 Prolog programs).




                                                                                  43 / 43

Más contenido relacionado

La actualidad más candente

CURSO DE PROGRAMACION BASICA - Cap 1
CURSO DE PROGRAMACION BASICA - Cap 1CURSO DE PROGRAMACION BASICA - Cap 1
CURSO DE PROGRAMACION BASICA - Cap 1Daniel Irene
 
Algoritmos y Programación
Algoritmos y ProgramaciónAlgoritmos y Programación
Algoritmos y ProgramaciónJuan Guadama
 
Metodo abierto punto fijo
Metodo abierto punto fijoMetodo abierto punto fijo
Metodo abierto punto fijoTensor
 
Utp ia_2015-1_s11-12_logica difusa y conjuntos difusos
 Utp ia_2015-1_s11-12_logica difusa y conjuntos difusos Utp ia_2015-1_s11-12_logica difusa y conjuntos difusos
Utp ia_2015-1_s11-12_logica difusa y conjuntos difusosjcbp_peru
 
Las cuatro p de la gestión de proyectos
Las cuatro p de la gestión de proyectosLas cuatro p de la gestión de proyectos
Las cuatro p de la gestión de proyectosMiguel Gonzalez
 
Método de gauss
Método de gaussMétodo de gauss
Método de gaussalgebra
 
Cuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoCuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoLutzo Guzmán
 
SISTEMA DE ECUACIONES CUADRATICAS
SISTEMA DE ECUACIONES CUADRATICAS SISTEMA DE ECUACIONES CUADRATICAS
SISTEMA DE ECUACIONES CUADRATICAS jacqueline llamuca
 
Informe de arreglos en PseInt
Informe de arreglos en PseInt Informe de arreglos en PseInt
Informe de arreglos en PseInt Chad Bridge
 
NÚMEROS PSEUDOALEATORIOS UNIDAD II
 NÚMEROS PSEUDOALEATORIOS UNIDAD II NÚMEROS PSEUDOALEATORIOS UNIDAD II
NÚMEROS PSEUDOALEATORIOS UNIDAD IIMarvey Monjaras
 
50 programas con pseudocódigo y diagramas de flujo
50 programas con pseudocódigo y diagramas de flujo50 programas con pseudocódigo y diagramas de flujo
50 programas con pseudocódigo y diagramas de flujoLeonardo Torres
 
EchoSign-for-Salesforce v12 Customization Guide
EchoSign-for-Salesforce v12 Customization GuideEchoSign-for-Salesforce v12 Customization Guide
EchoSign-for-Salesforce v12 Customization GuideJason M. Lemkin
 
Arreglos vectores pseint
Arreglos vectores pseintArreglos vectores pseint
Arreglos vectores pseintHEIVER CUESTA
 
Algoritmo congruencial aditivo
Algoritmo congruencial aditivoAlgoritmo congruencial aditivo
Algoritmo congruencial aditivoEwing Ma
 
Funciones racionales
Funciones racionalesFunciones racionales
Funciones racionalesNormaToledo
 

La actualidad más candente (20)

CURSO DE PROGRAMACION BASICA - Cap 1
CURSO DE PROGRAMACION BASICA - Cap 1CURSO DE PROGRAMACION BASICA - Cap 1
CURSO DE PROGRAMACION BASICA - Cap 1
 
Algoritmos y Programación
Algoritmos y ProgramaciónAlgoritmos y Programación
Algoritmos y Programación
 
Leyes de los exponentes
Leyes de los exponentesLeyes de los exponentes
Leyes de los exponentes
 
Metodo abierto punto fijo
Metodo abierto punto fijoMetodo abierto punto fijo
Metodo abierto punto fijo
 
Utp ia_2015-1_s11-12_logica difusa y conjuntos difusos
 Utp ia_2015-1_s11-12_logica difusa y conjuntos difusos Utp ia_2015-1_s11-12_logica difusa y conjuntos difusos
Utp ia_2015-1_s11-12_logica difusa y conjuntos difusos
 
Factorizar polinomios (slide share)
Factorizar polinomios (slide share)Factorizar polinomios (slide share)
Factorizar polinomios (slide share)
 
Las cuatro p de la gestión de proyectos
Las cuatro p de la gestión de proyectosLas cuatro p de la gestión de proyectos
Las cuatro p de la gestión de proyectos
 
Unidad 2 polinomios_algebra superior_rosa_depena
Unidad 2 polinomios_algebra superior_rosa_depenaUnidad 2 polinomios_algebra superior_rosa_depena
Unidad 2 polinomios_algebra superior_rosa_depena
 
Método de gauss
Método de gaussMétodo de gauss
Método de gauss
 
Cuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoCuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamiento
 
SISTEMA DE ECUACIONES CUADRATICAS
SISTEMA DE ECUACIONES CUADRATICAS SISTEMA DE ECUACIONES CUADRATICAS
SISTEMA DE ECUACIONES CUADRATICAS
 
Informe de arreglos en PseInt
Informe de arreglos en PseInt Informe de arreglos en PseInt
Informe de arreglos en PseInt
 
NÚMEROS PSEUDOALEATORIOS UNIDAD II
 NÚMEROS PSEUDOALEATORIOS UNIDAD II NÚMEROS PSEUDOALEATORIOS UNIDAD II
NÚMEROS PSEUDOALEATORIOS UNIDAD II
 
50 programas con pseudocódigo y diagramas de flujo
50 programas con pseudocódigo y diagramas de flujo50 programas con pseudocódigo y diagramas de flujo
50 programas con pseudocódigo y diagramas de flujo
 
EchoSign-for-Salesforce v12 Customization Guide
EchoSign-for-Salesforce v12 Customization GuideEchoSign-for-Salesforce v12 Customization Guide
EchoSign-for-Salesforce v12 Customization Guide
 
Arreglos vectores pseint
Arreglos vectores pseintArreglos vectores pseint
Arreglos vectores pseint
 
Los Números
Los NúmerosLos Números
Los Números
 
Algoritmo congruencial aditivo
Algoritmo congruencial aditivoAlgoritmo congruencial aditivo
Algoritmo congruencial aditivo
 
Funciones racionales
Funciones racionalesFunciones racionales
Funciones racionales
 
Ejercicios Python Parte 2
Ejercicios Python Parte 2Ejercicios Python Parte 2
Ejercicios Python Parte 2
 

Más de José A. Alonso

Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.José A. Alonso
 
Tema 23: Técnicas de diseño descendente de algoritmos
Tema 23: Técnicas de diseño descendente de algoritmosTema 23: Técnicas de diseño descendente de algoritmos
Tema 23: Técnicas de diseño descendente de algoritmosJosé A. Alonso
 
I1M-T19: El TAD de los árboles de búsqueda
I1M-T19: El TAD de los árboles de búsquedaI1M-T19: El TAD de los árboles de búsqueda
I1M-T19: El TAD de los árboles de búsquedaJosé A. Alonso
 
I1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntosI1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntosJosé A. Alonso
 
Panorama de la demostración asistida por ordenador
Panorama de la demostración asistida por ordenadorPanorama de la demostración asistida por ordenador
Panorama de la demostración asistida por ordenadorJosé A. Alonso
 
LMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenLMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenJosé A. Alonso
 
LMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenLMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenJosé A. Alonso
 
LMF-T5b: Aplicaciones de la lógica proposicional
LMF-T5b: Aplicaciones de la lógica proposicionalLMF-T5b: Aplicaciones de la lógica proposicional
LMF-T5b: Aplicaciones de la lógica proposicionalJosé A. Alonso
 
LMF-T5: Resolución proposicional
LMF-T5: Resolución proposicionalLMF-T5: Resolución proposicional
LMF-T5: Resolución proposicionalJosé A. Alonso
 
LMF-T3: Tableros semánticos
LMF-T3: Tableros semánticosLMF-T3: Tableros semánticos
LMF-T3: Tableros semánticosJosé A. Alonso
 
LMF-T2: Deducción natural proposicional
LMF-T2: Deducción natural proposicionalLMF-T2: Deducción natural proposicional
LMF-T2: Deducción natural proposicionalJosé A. Alonso
 
I1M-T21: El TAD de los polinomios en Haskell
I1M-T21: El TAD de los polinomios en HaskellI1M-T21: El TAD de los polinomios en Haskell
I1M-T21: El TAD de los polinomios en HaskellJosé A. Alonso
 
LMF-T1: Sintaxis y semántica de la lógica proposicional
LMF-T1: Sintaxis y semántica de la lógica proposicionalLMF-T1: Sintaxis y semántica de la lógica proposicional
LMF-T1: Sintaxis y semántica de la lógica proposicionalJosé A. Alonso
 
LI-T6: Sintaxis y semántica de la lógica de primer orden
LI-T6: Sintaxis y semántica de la lógica de primer ordenLI-T6: Sintaxis y semántica de la lógica de primer orden
LI-T6: Sintaxis y semántica de la lógica de primer ordenJosé A. Alonso
 
LI-T5b: Algoritmos para SAT. Aplicaciones
LI-T5b: Algoritmos para SAT. AplicacionesLI-T5b: Algoritmos para SAT. Aplicaciones
LI-T5b: Algoritmos para SAT. AplicacionesJosé A. Alonso
 
Panorama del razonamiento automático
Panorama del razonamiento automáticoPanorama del razonamiento automático
Panorama del razonamiento automáticoJosé A. Alonso
 
LI -T5: Resolución proposicional
LI -T5: Resolución proposicionalLI -T5: Resolución proposicional
LI -T5: Resolución proposicionalJosé A. Alonso
 
I1M2010-T24: Programación dinámica en Haskell
I1M2010-T24: Programación dinámica en HaskellI1M2010-T24: Programación dinámica en Haskell
I1M2010-T24: Programación dinámica en HaskellJosé A. Alonso
 
LI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer ordenLI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer ordenJosé A. Alonso
 

Más de José A. Alonso (20)

Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.
 
Tema 23: Técnicas de diseño descendente de algoritmos
Tema 23: Técnicas de diseño descendente de algoritmosTema 23: Técnicas de diseño descendente de algoritmos
Tema 23: Técnicas de diseño descendente de algoritmos
 
I1M-T19: El TAD de los árboles de búsqueda
I1M-T19: El TAD de los árboles de búsquedaI1M-T19: El TAD de los árboles de búsqueda
I1M-T19: El TAD de los árboles de búsqueda
 
I1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntosI1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntos
 
Panorama de la demostración asistida por ordenador
Panorama de la demostración asistida por ordenadorPanorama de la demostración asistida por ordenador
Panorama de la demostración asistida por ordenador
 
LMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenLMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer orden
 
LMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenLMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer orden
 
LMF-T5b: Aplicaciones de la lógica proposicional
LMF-T5b: Aplicaciones de la lógica proposicionalLMF-T5b: Aplicaciones de la lógica proposicional
LMF-T5b: Aplicaciones de la lógica proposicional
 
LMF-T5: Resolución proposicional
LMF-T5: Resolución proposicionalLMF-T5: Resolución proposicional
LMF-T5: Resolución proposicional
 
LMF-T4: Formas normales
LMF-T4: Formas normalesLMF-T4: Formas normales
LMF-T4: Formas normales
 
LMF-T3: Tableros semánticos
LMF-T3: Tableros semánticosLMF-T3: Tableros semánticos
LMF-T3: Tableros semánticos
 
LMF-T2: Deducción natural proposicional
LMF-T2: Deducción natural proposicionalLMF-T2: Deducción natural proposicional
LMF-T2: Deducción natural proposicional
 
I1M-T21: El TAD de los polinomios en Haskell
I1M-T21: El TAD de los polinomios en HaskellI1M-T21: El TAD de los polinomios en Haskell
I1M-T21: El TAD de los polinomios en Haskell
 
LMF-T1: Sintaxis y semántica de la lógica proposicional
LMF-T1: Sintaxis y semántica de la lógica proposicionalLMF-T1: Sintaxis y semántica de la lógica proposicional
LMF-T1: Sintaxis y semántica de la lógica proposicional
 
LI-T6: Sintaxis y semántica de la lógica de primer orden
LI-T6: Sintaxis y semántica de la lógica de primer ordenLI-T6: Sintaxis y semántica de la lógica de primer orden
LI-T6: Sintaxis y semántica de la lógica de primer orden
 
LI-T5b: Algoritmos para SAT. Aplicaciones
LI-T5b: Algoritmos para SAT. AplicacionesLI-T5b: Algoritmos para SAT. Aplicaciones
LI-T5b: Algoritmos para SAT. Aplicaciones
 
Panorama del razonamiento automático
Panorama del razonamiento automáticoPanorama del razonamiento automático
Panorama del razonamiento automático
 
LI -T5: Resolución proposicional
LI -T5: Resolución proposicionalLI -T5: Resolución proposicional
LI -T5: Resolución proposicional
 
I1M2010-T24: Programación dinámica en Haskell
I1M2010-T24: Programación dinámica en HaskellI1M2010-T24: Programación dinámica en Haskell
I1M2010-T24: Programación dinámica en Haskell
 
LI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer ordenLI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer orden
 

Último

Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfssuser50d1252
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTESaraNolasco4
 
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxLudy Ventocilla Napanga
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORGonella
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsxJuanpm27
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxEribertoPerezRamirez
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfssuser50d1252
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfssuser50d1252
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicialLorenaSanchez350426
 

Último (20)

La luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luzLa luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luz
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTE
 
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIOR
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicial
 
VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 

LI-T12: LI2011-12: Introducción a la programación lógica con Prolog

  • 1. PD Tema 12: Introducción a la programación lógica con Prolog Lógica informática (2011–12) Tema 12: Introducción a la programación lógica con Prolog José A. Alonso Jiménez Andrés Cordón Franco María J. Hidalgo Doblado Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 1 / 43
  • 2. PD Tema 12: Introducción a la programación lógica con Prolog Tema 12: Introducción a la programación lógica con Prolog 1. El sistema deductivo de Prolog 2. Las listas en Prolog 3. Operadores en Prolog 4. Control mediante corte 5. Negación como fallo 2 / 43
  • 3. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Tema 12: Introducción a la programación lógica con Prolog 1. El sistema deductivo de Prolog Deducción Prolog en lógica proposicional Deducción Prolog en lógica relacional Deducción Prolog en lógica funcional 2. Las listas en Prolog 3. Operadores en Prolog 4. Control mediante corte 5. Negación como fallo 3 / 43
  • 4. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica proposicional Deducción Prolog en lógica proposicional Base de conocimiento y objetivo: Base de conocimiento: Regla 1: Si un animal es ungulado y tiene rayas negras, entonces es una cebra. Regla 2: Si un animal rumia y es mamífero, entonces es ungulado. Regla 3: Si un animal es mamífero y tiene pezuñas, entonces es ungulado. Hecho 1: El animal es mamífero. Hecho 2: El animal tiene pezuñas. Hecho 3: El animal tiene rayas negras. Objetivo: Demostrar a partir de la base de conocimientos que el animal es una cebra. 4 / 43
  • 5. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica proposicional Deducción Prolog en lógica proposicional Programa: es_cebra :- es_ungulado, tiene_rayas_negras. %R1 es_ungulado :- rumia, es_mamífero. %R2 es_ungulado :- es_mamífero, tiene_pezuñas. %R3 es_mamífero. %H1 tiene_pezuñas. %H2 tiene_rayas_negras. %H3 Sesión: > pl Welcome to SWI-Prolog (Multi-threaded, Version 5.6.20) Copyright (c) 1990-2006 University of Amsterdam. ?- [animales]. Yes ?- es_cebra. 5 / 43
  • 6. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica proposicional Deducción Prolog en lógica proposicional Árbol de deducción: 6 / 43
  • 7. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica proposicional Deducción Prolog en lógica proposicional Demostración por resolución SLD: 7 / 43
  • 8. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica relacional Deducción Prolog en lógica relacional Base de conocimiento: Hechos 1-4: 6 y 12 son divisibles por 2 y por 3. Hecho 5: 4 es divisible por 2. Regla 1: Los números divisibles por 2 y por 3 son divisibles por 6. Programa: divide(2,6). % Hecho 1 divide(2,4). % Hecho 2 divide(2,12). % Hecho 3 divide(3,6). % Hecho 4 divide(3,12). % Hecho 5 divide(6,X) :- divide(2,X), divide(3,X). % Regla 1 8 / 43
  • 9. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica relacional Deducción Prolog en lógica relacional Símbolos: Constantes: 2, 3, 4, 6, 12 Relación binaria: divide Variable: X Interpretaciones de la Regla 1: divide(6,X) :- divide(2,X), divide(3,X). Interpretación declarativa: (∀X )[divide(2, X ) ∧ divide(3, X ) → divide(6, X )] Interpretación procedimental. Consulta: ¿Cuáles son los múltiplos de 6? ?- divide(6,X). X = 6 ; X = 12 ; No 9 / 43
  • 10. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica relacional Deducción Prolog en lógica relacional Árbol de deducción: Comentarios: Unificación. Cálculo de respuestas. Respuestas múltiples. 10 / 43
  • 11. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Representación de los números naturales: 0, s(0), s(s(0)), . . . Definición de la suma: 0 + Y = Y s(X) + Y = s(X+Y) Programa suma(0,Y,Y). % R1 suma(s(X),Y,s(Z)) :- suma(X,Y,Z). % R2 Consulta: ¿Cuál es la suma de s(0) y s(s(0))? ?- suma(s(0),s(s(0)),X). X = s(s(s(0))) Yes 11 / 43
  • 12. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Árbol de deducción: 12 / 43
  • 13. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Consulta: ¿Cuál es la resta de s(s(s(0))) y s(s(0))? Sesión: ?- suma(X,s(s(0)),s(s(s(0)))). X = s(0) ; No 13 / 43
  • 14. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Árbol de deducción: 14 / 43
  • 15. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Consulta: Pregunta: ¿Cuáles son las soluciones de la ecuación X + Y = s(s(0))? Sesión: ?- suma(X,Y,s(s(0))). X = 0 Y = s(s(0)) ; X = s(0) Y = s(0) ; X = s(s(0)) Y = 0 ; No 15 / 43
  • 16. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Árbol de deducción: 16 / 43
  • 17. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Consulta: Pregunta: resolver el sistema de ecuaciones 1+X =Y X +Y =1 Sesión: ?- suma(s(0),X,Y), suma(X,Y,s(0)). X = 0 Y = s(0) ; No 17 / 43
  • 18. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Árbol de deducción: 18 / 43
  • 19. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Tema 12: Introducción a la programación lógica con Prolog 1. El sistema deductivo de Prolog 2. Las listas en Prolog Definición de relaciones sobre listas 3. Operadores en Prolog 4. Control mediante corte 5. Negación como fallo 19 / 43
  • 20. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Representación de listas ?- [X|Y] = [a,b]. X = a Y = [b] ?- [X|Y] = [a,b,c,d]. X = a Y = [b, c, d] ?- [X,Y|Z] = [a,b,c,d]. X = a Y = b Z = [c, d] 20 / 43
  • 21. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Definición de relaciones sobre listas Definición de concatenación (append) Especificación: conc(A,B,C) se verifica si C es la lista obtenida escribiendo los elementos de la lista B a continuación de los elementos de la lista A. Por ejemplo, ?- conc([a,b],[b,d],C). C =[a,b,b,d] Definición 1: conc(A,B,C) :- A=[], C=B. conc(A,B,C) :- A=[X|D], conc(D,B,E), C=[X|E]. Definición 2: conc([],B,B). conc([X|D],B,[X|E]) :- conc(D,B,E). 21 / 43
  • 22. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Definición de relaciones sobre listas Consultas con la relación de concatenación Analogía entre la definición de conc y la de suma, ¿Cuál es el resultado de concatenar las listas [a,b] y [c,d,e]? ?- conc([a,b],[c,d,e],L). L = [a, b, c, d, e] ¿Qué lista hay que añadirle a la lista [a,b] para obtener [a,b,c,d]? ?- conc([a,b],L,[a,b,c,d]). L = [c, d] ¿Qué dos listas hay que concatenar para obtener [a,b]? ?- conc(L,M,[a,b]). L = [] M = [a, b] ; L = [a] M = [b] ; L = [a, b] M = [] ; No 22 / 43
  • 23. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Definición de relaciones sobre listas Árbol de deducción de ?- conc(L,M,[a,b]). 23 / 43
  • 24. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Definición de relaciones sobre listas Definición de la relación de pertenencia (member) Especificación: pertenece(X,L) se verifica si X es un elemento de la lista L. Definición 1: pertenece(X,[X|L]). pertenece(X,[Y|L]) :- pertenece(X,L). Definición 2: pertenece(X,[X|_]). pertenece(X,[_|L]) :- pertenece(X,L). 24 / 43
  • 25. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Definición de relaciones sobre listas Consultas con la relación de pertenencia ?- pertenece(b,[a,b,c]). Yes ?- pertenece(d,[a,b,c]). No ?- pertenece(X,[a,b,a]). X = a ; X = b ; X = a ; No ?- pertenece(a,L). L = [a|_G233] ; L = [_G232, a|_G236] ; L = [_G232, _G235, a|_G239] Yes 25 / 43
  • 26. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Definición de relaciones sobre listas Árbol de deducción de ?- pertenece(a,L). 26 / 43
  • 27. PD Tema 12: Introducción a la programación lógica con Prolog Operadores en Prolog Tema 12: Introducción a la programación lógica con Prolog 1. El sistema deductivo de Prolog 2. Las listas en Prolog 3. Operadores en Prolog 4. Control mediante corte 5. Negación como fallo 27 / 43
  • 28. PD Tema 12: Introducción a la programación lógica con Prolog Operadores en Prolog Ejemplos de operadores aritméticos Ejemplos de notación infija y prefija en expresiones aritméticas: ?- +(X,Y) = a+b. X = a Y = b ?- +(X,Y) = a+b+c. X = a+b Y = c ?- +(X,Y) = a+(b+c). X = a Y = b+c ?- a+b+c = (a+b)+c. Yes ?- a+b+c = a+(b+c). No 28 / 43
  • 29. PD Tema 12: Introducción a la programación lógica con Prolog Operadores en Prolog Ejemplos de asociatividad y precedencia Ejemplos de asociatividad: ?- X^Y = a^b^c. X = a Y = b^c ?- a^b^c = a^(b^c). Yes Ejemplo de precedencia ?- X+Y = a+b*c. X = a Y = b*c ?- X*Y = a+b*c. No ?- X*Y = (a+b)*c. X = a+b Y = c ?- a+b*c = (a+b)*c. No 29 / 43
  • 30. PD Tema 12: Introducción a la programación lógica con Prolog Operadores en Prolog Definición de operadores Definición (ejemplo_operadores.pl) :-op(800,xfx,estudian). :-op(400,xfx,y). juan y ana estudian lógica. Consultas ?- [ejemplo_operadores]. ?- Quienes estudian lógica. Quienes = juan y ana ?- juan y Otro estudian Algo. Otro = ana Algo = lógica 30 / 43
  • 31. PD Tema 12: Introducción a la programación lógica con Prolog Control mediante corte Tema 12: Introducción a la programación lógica con Prolog 1. El sistema deductivo de Prolog 2. Las listas en Prolog 3. Operadores en Prolog 4. Control mediante corte 5. Negación como fallo 31 / 43
  • 32. PD Tema 12: Introducción a la programación lógica con Prolog Control mediante corte Ejemplo de nota sin corte nota(X,Y) se verifica si Y es la calificación correspondiente a la nota X; es decir, Y es suspenso si X es menor que 5, Y es aprobado si X es mayor o igual que 5 pero menor que 7, Y es notable si X es mayor que 7 pero menor que 9 e Y es sobresaliente si X es mayor que 9. Por ejemplo, ?- nota(6,Y). Y = aprobado; No nota(X,suspenso) :- X < 5. nota(X,aprobado) :- X >= 5, X < 7. nota(X,notable) :- X >= 7, X < 9. nota(X,sobresaliente) :- X >= 9. 32 / 43
  • 33. PD Tema 12: Introducción a la programación lógica con Prolog Control mediante corte Deducción en el ejemplo sin corte Árbol de deducción de ?- nota(6,Y). 33 / 43
  • 34. PD Tema 12: Introducción a la programación lógica con Prolog Control mediante corte Ejemplo de nota con cortes Definición de nota con cortes nota(X,suspenso) :- X < 5, !. nota(X,aprobado) :- X < 7, !. nota(X,notable) :- X < 9, !. nota(X,sobresaliente). 34 / 43
  • 35. PD Tema 12: Introducción a la programación lógica con Prolog Control mediante corte Deducción en el ejemplo con cortes ¿Un 6 es un sobresaliente? ?- nota(6,sobresaliente). Yes 35 / 43
  • 36. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Tema 12: Introducción a la programación lógica con Prolog 1. El sistema deductivo de Prolog 2. Las listas en Prolog 3. Operadores en Prolog 4. Control mediante corte 5. Negación como fallo 36 / 43
  • 37. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Definición de la negación como fallo Definición de la negación como fallo not: no(P) :- P, !, fail. % No 1 no(P). % No 2 37 / 43
  • 38. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Programa con negación Programa: aprobado(X) :- % R1 no(suspenso(X)), matriculado(X). matriculado(juan). % R2 matriculado(luis). % R3 suspenso(juan). % R4 Consultas: ?- aprobado(luis). Yes ?- aprobado(X). No 38 / 43
  • 39. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Árbol de deducción de ?- aprobado(luis). 39 / 43
  • 40. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Árbol de deducción de ?- aprobado(X). 40 / 43
  • 41. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Modificación del orden de los literales Programa: aprobado(X) :- % R1 matriculado(X), no(suspenso(X)). matriculado(juan). % R2 matriculado(luis). % R3 suspenso(juan). % R4 Consulta: ?- aprobado(X). X = luis Yes 41 / 43
  • 42. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Árbol de deducción de ?- aprobado(X). 42 / 43
  • 43. PD Tema 12: Introducción a la programación lógica con Prolog Bibliografía Bibliografía 1. J.A. Alonso (2006) Introducción a la programación lógica con Prolog. Cap. 0 (Introducción). 2. I. Bratko (1990) Prolog Programming for Artificial Intelligence (2nd ed.) Cap. 1 (An overview of Prolog) y Cap. 2 (Syntax and meaning of Prolog programs). 43 / 43