Introducción a PROLOG
|
|
|
- Concepción Suárez Acuña
- hace 7 años
- Vistas:
Transcripción
1 Inteligencia Artificial II Curso Introducción a PROLOG Carmen Graciani Díaz José L. Ruiz Reina Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla IA-II CcIa Introducción a PROLOG
2 Introducción Lógica como sistema de especificación y lenguaje de programación Principios Programas = Teorías (Bases de conocimiento) Ejecución = Búsqueda de una prueba (o respuesta) a una consulta (u objetivo) Programación = Modelización PROLOG PROgramación LÓGica (PROgramming in LOGic) Pensar declarativamente IA-II CcIa Introducción a PROLOG 2
3 Pequeño ejemplo: Lógica proposicional Base de conocimiento Regla : Si está contento entonces escucha música Regla 2: Si tiene radio entonces escucha música Regla 3: Si escucha música y tiene una guitarra entonces toca la guitarra Hecho : Tiene una guitarra Hecho 2: Está contento Consulta Está tocando la guitarra? IA-II CcIa Introducción a PROLOG 3
4 Pequeño ejemplo: Implementación Programa escucha_musica :- esta_contento. % Regla escucha_musica :- tiene_radio. % Regla 2 toca_la_guitarra :- escucha_musica, tiene_guitarra. % Regla 3 tiene_guitarra. % Hecho esta_contento. % Hecho 2 Ejecución Welcome to SWI-Prolog (Multi-threaded, Version 5.2.5)...?- [guitarra]. % guitarra compiled 0.00 sec,,276 bytes?- toca_la_guitarra.?- IA-II CcIa Introducción a PROLOG 4
5 Razonamiento Modus ponens: Si el cuerpo de una regla se puede deducir de la base de conocimiento entonces la cabeza se deduce de la base de conocimiento. Deducción Recorre la base de conocimiento buscando un hecho o la cabeza de una regla que coincida con la consulta Si coincide con un hecho entonces la consulta es cierta Si coincide con la cabeza de una regla y el cuerpo se deduce de la base de conocimiento entonces la consulta es cierta IA-II CcIa Introducción a PROLOG 5
6 Otro ejemplo: Lógica proposicional Base de conocimiento Regla : Si Vicente está contento y escucha música entonces toca la guitarra Regla 2: Si Beatriz está contenta entonces toca la guitarra Regla 3: Si Beatriz escucha música entonces toca la guitarra Hecho : Vicente está contento Hecho 2: Beatriz escucha música Consulta Está tocando la guitarra Vicente? Quién está tocando la guitarra? IA-II CcIa Introducción a PROLOG 6
7 Otro ejemplo: Implementación Programa toca_la_guitarra(vicente) :- esta_contento(vicente), % Regla escucha_musica(vicente). toca_la_guitarra(beatriz) :- esta_contento(beatriz). % Regla 2 toca_la_guitarra(beatriz) :- escucha_musica(beatriz). % Regla 3 esta_contento(vicente). % Hecho escucha_musica(beatriz). % Hecho 2 Ejecución?- [guitarra_arg]. % guitarra compiled 0.00 sec,,276 bytes?- toca_la_guitarra(vicente). No?- toca_la_guitarra(x). X = beatriz ; No IA-II CcIa Introducción a PROLOG 7
8 Razonamiento Deducción Recorre la base de conocimiento buscando un hecho o la cabeza de una regla tal que, al sustituir la variable de la consulta, coincida Si coincide con un hecho entonces la consulta es cierta y la respuesta es la sustitución realizada Si coincide con la cabeza de una regla y el cuerpo se deduce de la base de conocimiento entonces la consulta es cierta y la respuesta es la sustitución realizada IA-II CcIa Introducción a PROLOG 8
9 Otro ejemplo: Lógica de primer orden Base de conocimiento Regla : Si alguien está contento y escucha música entonces toca la guitarra Hecho : Vicente está contento Hecho 2: Beatriz está contenta Hecho 3: Beatriz escucha música Consulta Está tocando la guitarra Vicente? Quién está tocando la guitarra? IA-II CcIa Introducción a PROLOG 9
10 Y otro ejemplo: Implementación Programa toca_la_guitarra(x) :- esta_contento(x), escucha_musica(x). % Regla esta_contento(vicente). % Hecho esta_contento(beatriz). % Hecho 2 escucha_musica(beatriz). % Hecho 3 Ejecución?- [guitarra_var]. % guitarra compiled 0.00 sec,,276 bytes?- toca_la_guitarra(vicente). No?- toca_la_guitarra(x). X = beatriz ; No IA-II CcIa Introducción a PROLOG 0
11 Razonamiento Deducción Recorre la base de conocimiento buscando un hecho o la cabeza de una regla tal que, al unificar, coincidan Si coincide con un hecho entonces la consulta es cierta y la respuesta es la sustitución realizada Si coincide con la cabeza de una regla y el cuerpo se deduce de la base de conocimiento entonces la consulta es cierta y la respuesta es la sustitución realizada IA-II CcIa Introducción a PROLOG
12 listing?- [guitarra_var]. % guitarra_var compiled 0.00 sec,,068 bytes?- listing. toca_la_guitarra(a) :- esta_contento(a), escucha_musica(a). esta_contento(vicente). esta_contento(beatriz). escucha_musica(beatriz).?- listing(toca_la_guitarra). toca_la_guitarra(a) :- esta_contento(a), escucha_musica(a). IA-II CcIa Introducción a PROLOG 2
13 listing?- [guitarra]. % guitarra compiled 0.00 sec,,52 bytes?- listing(toca_la_guitarra). toca_la_guitarra :- escucha_musica, tiene_guitarra. toca_la_guitarra(a) :- esta_contento(a), escucha_musica(a).?- listing(toca_la_guitarra/). toca_la_guitarra(a) :- esta_contento(a), escucha_musica(a). IA-II CcIa Introducción a PROLOG 3
14 PROLOG: Sintaxis (I) Términos Átomo Sucesión de símbolos (mayúsculas o minúsculas) números y/o guión de subrayado empezando por una minúscula: toca la guitarra, libro, a8 4,... Sucesión de caracteres entre comillas simples: Alvaro,, toca la guitarra,... Sucesión de caracteres especiales: :-, -->,... Número: 237, -984, , 0E3, 746E-23,... Los números y átomos se denominan constantes IA-II CcIa Introducción a PROLOG 4
15 PROLOG: Sintaxis (II) Variable: Sucesión de símbolos (mayúsculas o minúsculas) números y/o guión de subrayado empezando por una mayúscula o guión de subrayado: Beatriz, X, libro,,... Término compuesto: <functor>(<argumentos>+), siendo <functor> un átomo y los <argumentos> son términos. toca la guitarra(vicente), h(r(p(x, Y), p(z, Y))),... Aridad: número de argumentos. IA-II CcIa Introducción a PROLOG 5
16 Unificación Dos términos unifican: Son iguales Contienen variables y estas pueden ser sustituidas por términos de tal forma que los términos resultantes son iguales Algoritmo de unificación:.- Los términos son constantes y coinciden 2.- Si uno de los términos es una variable se sustituye por el otro término (previamente las variables que aparecen se sustituyen todas por variables nuevas). 3.- Si son dos términos compuestos: Los functores y la aridad coinciden Cada par de argumentos (por orden, uno de cada término) unifica y las sustituciones encontradas son compatibles 4.- Dos términos unifican si y sólo si se cumple alguna de las tres condiciones anteriores. IA-II CcIa Introducción a PROLOG 6
17 Unificación =?- a = a.?- a = b. No?- 2 = +. No?- X = toca_la_guitarra(y). X = toca_la_guitarra(_g47) Y = _G47?- X = Y. X = _G47 Y = _G47 IA-II CcIa Introducción a PROLOG 7
18 Unificación =?- padre(x, Y) = padre(hijo(pepe), maria). X = hijo(pepe) Y = maria?- padre(x, maria) = padre(hijo(pepe), Y). X = hijo(pepe) Y = maria?- padre(x, maria) = padre(hijo(pepe), X). No?- padre(x) = X. X = padre(padre(padre(padre(padre(padre(padre(padre(padre(padre(...)))))))))) IA-II CcIa Introducción a PROLOG 8
19 Unificación Base de conocimiento horizontal(recta(pto(x, Y), pto(z, Y))). vertical(recta(pto(x, Y), pto(x, Z))). Consulta?- vertical(recta(pto(3, 2), pto(3, ))).?- vertical(recta(pto(3, 2), pto(x, ))). X = 3?- vertical(recta(pto(3, 2), pto(x, Y))). X = 3 Y = _G5?- horizontal(recta(pto(3, 2), Z)). Z = pto(_g207, 2) IA-II CcIa Introducción a PROLOG 9
20 SLD-Resolución Base de conocimiento f(a). f(b). g(a). g(b). h(b). k(x) :- f(x), g(x), h(x). Consulta?- k(x). X = b IA-II CcIa Introducción a PROLOG 20
21 SLD-Resolución? k(x). k(_x0) : f(_x0), g(_x0), h(_x0). {X/_X, _X0/_X}? f(_x), g(_x), h(_x). f(a). {_X/a}? g(a), h(a). g(a). f(b). {_X/b}? g(b), h(b). g(b).? h(a).? h(b). h(b). FALLO ACIERTO IA-II CcIa Introducción a PROLOG 2
22 SLD-Resolución trace [trace]?- k(x). Call: (7) k(_g273)? Call: (8) f(_g273)? Exit: (8) f(a)? Call: (8) g(a)? Exit: (8) g(a)? Call: (8) h(a)? Fail: (8) h(a)? Fail: (8) g(a)? Redo: (8) f(_g273)? Exit: (8) f(b)? Call: (8) g(b)? Exit: (8) g(b)? Call: (8) h(b)? Exit: (8) h(b)? Exit: (7) k(b)? X = b IA-II CcIa Introducción a PROLOG 22
23 Recursión Base de conocimiento hijo_de(maria, carlos). hijo_de(carlos, cristina). hijo_de(cristina, luis). descendiente(x, Y) :- hijo_de(x, Y). descendiente(x, Y) :- hijo_de(x, Z), descendiente(z, Y). Consulta?- descendiente(maria, luis). IA-II CcIa Introducción a PROLOG 23
24 Recursión? d(maria, luis). d(_x0, _Y0) : hijo_de(_x0, _Y0). {_X0/maria, _Y0/luis} d(_x, _Y) : hijo_de(_x, _Z), d(_z, _Y). {_X/maria, _Y/luis}? hijo_de(maria, luis). FALLO? hijo_de(maria, _Z), d(_z, luis). hijo_de(maria, carlos). {_Z/carlos}? d(carlos, luis). d(_x2, _Y2) : hijo_de(_x2, _Y2). {_X2/carlos, _Y2/luis} d(_x3, _Y3) : hijo_de(_x3, _Z3), d(_z3, _Y3). {_X3/carlos, _Y3/luis}? hijo_de(carlos, luis). FALLO? hijo_de(carlos, _Z3), d(_z3, luis) hijo_de(carlos, cristina). {_Z3/cristina}? d(cristina, luis). d(_x4, _Y4) : hijo_de(_x4, _Y4). {_X4/cristina, _Y4/luis}? hijo_de(cristina, luis). hijo_de(cristina, luis). ACIERTO IA-II CcIa Introducción a PROLOG 24
25 Recursión [trace]?- descendiente(maria, luis). Call: (7) descendiente(maria, luis)? Call: (8) hijo_de(maria, luis)? Fail: (8) hijo_de(maria, luis)? Redo: (7) descendiente(maria, luis)? Call: (8) hijo_de(maria, _G33)? Exit: (8) hijo_de(maria, carlos)? Call: (8) descendiente(carlos, luis)? Call: (9) hijo_de(carlos, luis)? Fail: (9) hijo_de(carlos, luis)? Redo: (8) descendiente(carlos, luis)? Call: (9) hijo_de(carlos, _G33)? Exit: (9) hijo_de(carlos, cristina)? Call: (9) descendiente(cristina, luis)? Call: (0) hijo_de(cristina, luis)? Exit: (0) hijo_de(cristina, luis)? Exit: (9) descendiente(cristina, luis)? Exit: (8) descendiente(carlos, luis)? Exit: (7) descendiente(maria, luis)? IA-II CcIa Introducción a PROLOG 25
26 Recursión Base de conocimiento hijo_de(maria, carlos). hijo_de(carlos, cristina). hijo_de(cristina, luis). descendiente(x, Y) :- descendiente(z, Y), hijo_de(x, Z). descendiente(x, Y) :- hijo_de(x, Y). Consulta?- descendiente(maria, luis). ERROR: Out of local stack Exception: (27,930) descendiente(_g9, luis)? a % Execution Aborted IA-II CcIa Introducción a PROLOG 26
27 Recursión?- trace. [trace]?- descendiente(maria, luis). Call: (7) descendiente(maria, luis)? Call: (8) descendiente(_g32, luis)? Call: (9) descendiente(_g32, luis)? Call: (0) descendiente(_g32, luis)? Call: () descendiente(_g32, luis)? Call: (2) descendiente(_g32, luis)? Call: (3) descendiente(_g32, luis)? Call: (4) descendiente(_g32, luis)? Call: (5) descendiente(_g32, luis)? Call: (6) descendiente(_g32, luis)? Call: (7) descendiente(_g32, luis)? Call: (8) descendiente(_g32, luis)? Call: (9) descendiente(_g32, luis)? Call: (20) descendiente(_g32, luis)? Call: (2) descendiente(_g32, luis)? Call: (22) descendiente(_g32, luis)? Call: (23) descendiente(_g32, luis)? Call: (24) descendiente(_g32, luis)? IA-II CcIa Introducción a PROLOG 27
28 Listas Términos Lista vacía: [] Lista compuesta: [<término>+{ <lista>}] <términos>: sucesión de los primeros elementos de la lista <lista>: lista con los restantes elementos [a, b, c] = [a, b, c []] = [a, b [c]] = [a [b, c]] Algunas relaciones que trabajan con listas append(l, L2, L3) :- La lista L3 unifica con la concatenación de las listas L y L2 member(e, L) :- E unifica con alguno de los elementos de la lista L reverse(l, L2) :- La inversa de la lista L unifica con la lista L2 IA-II CcIa Introducción a PROLOG 28
29 Listas listing(append/3). lists:append([], A, A). lists:append([a B], C, [A D]) :- append(b, C, D).?- listing(member). lists:member(a, [A B]). lists:member(a, [B C]) :- member(a, C).?- listing(reverse). lists:reverse(a, B) :- reverse(a, [], B, B). lists:reverse([], A, A, []). lists:reverse([a B], C, D, [E F]) :- reverse(b, [A C], D, F).?- IA-II CcIa Introducción a PROLOG 29
30 Aritmética is?- 2 is +.?- 2 is 6 / 3.?- X is mod(40, 3). X =?- X is 9 ** 2. X = 8?- 2 is 6 * X. ERROR: Arguments are not sufficiently instantiated Comparaciones: <(menor que), =<(menor o igual que), =:= (igualdad numérica), =\= (desigualdad numérica), >= (mayor o igual que), >(mayor que) Son todos infijos Unificación: =, \= IA-II CcIa Introducción a PROLOG 30
31 Aritmética Base de conocimiento sumar_3_y_duplicar(x, Y) :- Y is (X + 3) * 2. Consulta?- sumar_3_y_duplicar(2, Y). Y = 0?- sumar_3_y_duplicar(y, 2). ERROR: Arguments are not sufficiently instantiated ^ Exception: (8) 2 is (_G47+3)*2? IA-II CcIa Introducción a PROLOG 3
32 Acumuladores Base de conocimiento longitud([], 0). longitud([e L], N) :- longitud(l, LN), N is LN +. longitud_bis(l, N) :- longitud_ac(l, 0, N). longitud_ac([], A, A). longitud_ac([e L], A, N) :- LA is A +, longitud_ac(l, LA, N). Consultas?- longitud([a, b, c], N). N = 3?- longitud_bis([a, b, c], N). N = 3 IA-II CcIa Introducción a PROLOG 32
33 Acumuladores?- trace, longitud([a, b, c], N). Call: (8) longitud([a, b, c], _G57)? Call: (9) longitud([b, c], _G244)? Call: (0) longitud([c], _G244)? Call: () longitud([], _G244)? Exit: () longitud([], 0)? ^ Call: () _G249 is 0+? ^ Exit: () is 0+? Exit: (0) longitud([c], )? ^ Call: (0) _G252 is +? ^ Exit: (0) 2 is +? Exit: (9) longitud([b, c], 2)? ^ Call: (9) _G57 is 2+? ^ Exit: (9) 3 is 2+? Exit: (8) longitud([a, b, c], 3)? N = 3 IA-II CcIa Introducción a PROLOG 33
34 Acumuladores?- trace, longitud_bis([a, b, c], N). Call: (8) longitud_bis([a, b, c], _G283)? Call: (9) longitud_ac([a, b, c], 0, _G283)? ^ Call: (0) _G369 is 0+? ^ Exit: (0) is 0+? Call: (0) longitud_ac([b, c],, _G283)? ^ Call: () _G372 is +? ^ Exit: () 2 is +? Call: () longitud_ac([c], 2, _G283)? ^ Call: (2) _G375 is 2+? ^ Exit: (2) 3 is 2+? Call: (2) longitud_ac([], 3, _G283)? Exit: (2) longitud_ac([], 3, 3)? Exit: () longitud_ac([c], 2, 3)? Exit: (0) longitud_ac([b, c],, 3)? Exit: (9) longitud_ac([a, b, c], 0, 3)? Exit: (8) longitud_bis([a, b, c], 3)? N = 3 IA-II CcIa Introducción a PROLOG 34
35 Corte Base de conocimiento s(x, Y) :- q(x, Y). s(0, 0). q(x, Y) :- i(x), j(y). i(). i(2). j(). j(3). Consulta?- s(x, Y). X = Y = ; X = Y = 3 ; X = 2 Y = ; X = 2 Y = 3 ; X = 0 Y = 0 ; No IA-II CcIa Introducción a PROLOG 35
36 Corte Base de conocimiento s(x, Y) :- q(x, Y). s(0, 0). q(x, Y) :- i(x),!, j(y). i(). i(2). j(). j(3). Consulta?- s(x, Y). X = Y = ; X = Y = 3 ; X = 0 Y = 0 ; No IA-II CcIa Introducción a PROLOG 36
37 Corte Resolución (control de la ejecución) Si a lo largo de la resolución no se alcanza el lugar del corte, se procede como hasta ahora Si se alcanza el corte, se marca el predicado que define la regla, las condiciones de la regla anteriores al corte y la sustitución obtenida hasta el momento. A lo largo del resto de la resolución no se permite una nueva resolución de dicho predicado, ni de las condiciones, ni de las sustituciones obtenidas s(x, Y). s(_x, _Y) : q(_x, _Y). {X/_X, Y/_Y}? q(_x, _Y). q(_x2, _Y2) : i(_x2),!, j(_y2). {_X/_X2, _Y/ Y2}? i(_x2),!, j(_y2). i(). {_X2/} :!, j(_y2). IA-II CcIa Introducción a PROLOG 37
38 Corte s(x, Y). s(_x, _Y) : q(_x, _Y). {X/_X, Y/_Y}? q(_x, _Y). ACIERTO s(0, 0). {X/0, Y/0} q(_x2, _Y2) : i(_x2),!, j(_y2). {_X/_X2, _Y/ Y2}? i(_x2),!, j(_y2). i(). {_X2/} :!, j(_y2). : j(_y2). j(). {_Y2/} ACIERTO j(3). {_Y2/3} ACIERTO IA-II CcIa Introducción a PROLOG 38
39 Corte Base de conocimiento max(x, Y, Y) :- X =< Y. max(x, Y, X) :- X > Y. Consulta?- max(2, 5, X). X = 5?- max(2, 5, 2). No IA-II CcIa Introducción a PROLOG 39
40 Corte Base de conocimiento max(x, Y, Y) :- X =< Y,!. max(x, Y, X). Consulta?- max(2, 5, X). X = 5?- max(2, 5, 2). IA-II CcIa Introducción a PROLOG 40
41 Algunos predefinidos display(e): muestra el término PROLOG?- display([a, b])..(a,.(b, []))?- display(+). +(, ) write(e): escribe el término por pantalla?- write([a,b]). [a, b]?- write(+). + IA-II CcIa Introducción a PROLOG 4
42 Algunos predefinidos tab(n): escribe N espacios en blanco nl: escribe un salto de línea read(e): pide al usuario que escriba un término, falla si éste no unifica con el argumento?- read(x). a. X = a?- read(p(x)). a. No IA-II CcIa Introducción a PROLOG 42
43 Algunos predefinidos fail: Siempre falla assert(c), retract(c): permiten añadir o eliminar cláusulas dinámicamente de la base de conocimiento. (una regla o un hecho) retractall(s): elimina todas las cláusulas que definan la relación S not(e), \+ E: Falla si se puede resolver la consulta?- E., tiene éxito si esta consulta falla IA-II CcIa Introducción a PROLOG 43
44 Algunos predefinidos findall(e, O, L), bagof(e, O, L), setof(e, O, L)?- findall(x, s(x, _), L), write(l). [0, 0, 2, 2, 0] X = _G47 L = [0, 0, 2, 2, 0]?- bagof(x, s(x, Y), L). X = _G47 Y = 3 L = [0, 2] ; X = _G47 Y = 0 L = [0, 2, 0] ; No?- setof(x, s(x, Y), L). X = _G47 Y = 3 L = [0, 2] ; X = _G47 Y = 0 L = [0, 2] ; No IA-II CcIa Introducción a PROLOG 44
Tema 6: Representación lógica del conocimiento
Inteligencia Artificial Curso 999 2000 Tema 6: Representación lógica del conocimiento José A. Alonso Jiménez Miguel A. Gutiérrez Naranjo Francisco J. Martín Mateos Dpto. de Ciencias de la Computación e
Inteligencia en Redes de Comunicaciones. Prolog. Julio Villena Román.
Inteligencia en Redes de Comunicaciones Prolog Julio Villena Román [email protected] Prolog La lógica proporciona: un lenguaje base para la representación del conocimiento modelos para el razonamiento
Tema 2: Listas, aritmética y operadores
Programación Declarativa Curso 200 2002 Tema 2: Listas, aritmética y operadores José A. Alonso Jiménez Miguel A. Gutiérrez Naranjo Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad
Métodos de Inteligencia Artificial
Métodos de Inteligencia Artificial L. Enrique Sucar (INAOE) [email protected] ccc.inaoep.mx/esucar Tecnologías de Información UPAEP Contenido Lógica proposicional Lógica de predicados Inferencia en lógica
Algoritmo de unificación de Robinson
Capítulo 1 Algoritmo de unificación de Robinson 1.0 Introducción Con objeto de encontrar el unificador de máxima generalidad de dos términos se han propuesto numerosos algoritmos siendo el más conocido
Programación en PROLOG(1)
Programación en PROLOG(1) Inteligencia Artificial 2º cuatrimestre de 2008 Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Prolog Es el representante más conocido del
Prolog. Sintaxis Informal. Sintaxis Informal. Hechos: ejemplos. Inteligencia Artificial 2º cuatrimestre de Hechos. Hechos. Reglas.
Prolog Programación en PROLOG(1) Inteligencia Artificial 2º cuatrimestre de 2009 Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Es el representante más cocido del
Tema 6: Programación lógica de segundo orden
Programación Declarativa Curso 2000 200 Tema 6: Programación lógica de segundo orden José A. Alonso Jiménez Miguel A. Gutiérrez Naranjo Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad
Tema 1: El sistema deductivo de Prolog
Programación lógica Curso 2004 05 Tema : El sistema deductivo de Prolog José A. Alonso Jiménez [email protected] http://www.cs.us.es/ jalonso Dpto. de Ciencias de la Computación e Inteligencia
Inteligencia en Redes de Comunicaciones - 04a Prolog
En este Tema 4a se van a estudiar los fundamentos de Prolog, el lenguaje de programación lógica más extendido. 1 Prolog es un lenguaje de programación para representar conocimiento y realizar razonamientos
Tema 2. La Sintaxis. 1. El vocabulario de un programa PROLOG
Tema 2. La Sintaxis 1. El vocabulario de un programa PROLOG 2. TérminosT 2.1. Constantes 2.2. Variables 2.3. Estructuras 3. Operadores 4. Igualdad y Desigualdad 5. Aritmética tica en los programas PROLOG
Inteligencia Artificial: Prolog
Inteligencia Artificial: Prolog Unificación en Prolog Christopher Expósito-Izquierdo 1, Belén Melián-Batista 2 {cexposit 1, mbmelian 2 }@ull.es Universidad de La Laguna (España) Contenidos Satisfacer objetivos
INTRODUCCIÓN BÁSICA. Ingeniería Informática AL PROLOG. Departamento de Informática
INTRODUCCIÓN BÁSICA AL PROLOG Ingeniería Informática Departamento de Informática PRÓLOGO Esta introducción al Prolog está pensada para las prácticas de la asignatura de Matemática Discreta de la Universitat
6. Operadores en PROLOG
6. Operadores en PROLOG 1. Definición de operadores propios 2. Operadores predefinidos Igualdad Entrada y Salida básicos Manejo de ficheros Evaluación de expresiones aritméticas Comparación de números
LÓGICA FORMAL TEORIAS DE PRIMER ORDEN. Sintaxis y semántica
LÓGICA FORMAL TEORIAS DE PRIMER ORDEN Sintaxis y semántica Pedro López Departamento de Inteligencia Artificial Facultad de Informática Universidad Politécnica de Madrid Lenguajes de primer orden 1 La lógica
Tema 14: Sustitución y Unificación
Facultad de Informática Grado en Ingeniería Informática Lógica PARTE 4: RESOLUCIÓN Tema 14: Sustitución y Unificación Profesor: Javier Bajo [email protected] Madrid, España 04/12/2012 Introducción. 2/12
el proceso de backtracking.
1 El proceso de Backtracking 1.1 Backtracking En esta práctica se examina en detalle cómo Prolog busca todas las soluciones a un objetivo. Prolog responde a una pregunta hecha por el programador. Esta
Programación declarativa ( )
Programación declarativa (2004 05) Tema 2: Listas, operadores y aritmética José A. Alonso Jiménez Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla PD (2004 05) Tema 2 p.
Lógica de predicados 3. Sintaxis. Juan Carlos León Universidad de Murcia
Lógica de predicados 3. Sintaxis Juan Carlos León Universidad de Murcia Esquema del tema 3.1. Fórmulas bien formadas y funciones proposicionales 3.2. Alcance. Variables libres y ligadas 3.3. Teoremas 3.4.
Lógica de predicados 3. Sintaxis
Lógica de predicados 3. Sintaxis Juan Carlos León Universidad de Murcia Esquema del tema 3.1. Fórmulas bien formadas y funciones proposicionales 3.2. Alcance. Variables libres y ligadas 3.3. Teoremas 3.4.
Tema 9: Resolución en lógica de primer orden
de Tema 9: en lógica de no Dpto. Ciencias de la Computación Inteligencia Artificial Universidad de Sevilla Lógica Informática (Tecnologías Informáticas) Curso 2016 17 Contenido de no no Introducción Por
Inteligencia Artificial II Prolog I
Inteligencia Artificial II Prolog I Dr. Alejandro Guerra-Hernández Universidad Veracruzana Centro de Investigación en Inteligencia Artificial mailto:[email protected] http://www.uv.mx/personal/aguerra Maestría
Entorno y herraminetas
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.
Tema III Predicados Extralógicos de PROLOG
Tema III Predicados Extralógicos de PROLOG Programación Declarativa 1 Predicados Extralógicos Se incorporan al lenguaje como predicados predefinidos con usos limitados para acceder a funciones del sistema
5.3 Tipos de Datos en Prolog
5.3 Tipos de Datos en Prolog Objetos de Datos en Prolog Objetos de datos simples Objetos estructurados Calce de operaciones fundamentales sobre objetos 1 Tipos de Objetos de Datos Objetos de datos Objetos
5.3 Tipos de Datos en Prolog
5.3 Tipos de Datos en Prolog Objetos de Datos en Prolog Objetos de datos simples Objetos estructurados Calce de operaciones fundamentales sobre objetos Tipos de Objetos de Datos Objetos de datos Objetos
5.3 Tipos de Datos en Prolog
5.3 Tipos de Datos en Prolog Recocimiento de Tipos Se recoce el tipo de un dato por su forma sintáctica; se requiere de declaración de tipos Ejemplo: Variables se definen comienzan con primera en mayúsculas
5. Entrada y Salida en PROLOG
5. Entrada y Salida en PROLOG 1. Escritura de términos 2. Lectura de términos 3. Escritura y lectura de caracteres 4. Escritura en fichero 5. Lectura de fichero 1. Escritura de términos (I) Predicado predefinido
Metodología de Programación I Tutorial Prolog 2/3
Metodología de Programación I Tutorial Prolog 2/3 Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Facultad de Física e Inteligencia Artificial [email protected] http://www.uv.mx/aguerra
23/09/2009. Introducción Hello word La familia Buendía Recursión Listas
Prolog Contenido Introducción Hello word La familia Buendía Recursión Listas Qué es Prolog? Lenguaje de programación Declarativo Programación lógica Está compuesto de: Hechos Reglas Declarativo vs Imperativo
Programación Declarativa. Programación Lógica.
Programación Declarativa. Programación Lógica. Prog. Imperativa vs. Declarativa La programación lógica, junto con la funcional, forma parte de lo que se conoce como programación declarativa. En los lenguajes
Tema 7: Formas normales: Formas prenex y de Skolem
Tema 7: Formas normales: Formas prenex y de Skolem Dpto. Ciencias de la Computación Inteligencia Artificial Universidad de Sevilla Lógica Informática (Ingeniería del Software) Curso 2013 14 LI(IS), 2013
LENGUAJES DE PROGRAMACIÓN
LENGUAJES DE PROGRAMACIÓN Paradigma Lógico Caso de Estudio : Prolog Lenguajes de Programación 2018 Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 1 2 1 1/2
Tema 3. Listas Recursión sobre datos
Tema 3 Listas Recursión sobre datos José A. Alonso M. José Hidalgo Álvaro Romero Dpto. Ciencias de la Computación e Inteligencia Artificial UNIVERSIDAD DE SEVILLA Informática ListasRecursión sobre datos
Tema 9: Modelos de Herbrand
Lógica informática Curso 2003 04 Tema 9: Modelos de Herbrand José A. Alonso Jiménez Andrés Cordón Franco Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla LI 2003 04
Predicados Extra-lógicos. Predicados Extra-lógicos. Contenido. Prolog = Programación lógica. Programa (cláusulas de Horn)
Contenido Ingeniería Informática Ingeniería Técnica en Informática de Sistemas 1. Predicados extra-lógicos 2. Predicados aritméticos 3. Entrada/salida de términos 4. Unificación y no unificación 5. Comparación
Tema 12.- Entrada y Salida
UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO LENGUAJES DE INTELIGENCIA ARTIFICIAL INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN INGENIERÍA TÉCNICA
Tema 4: Corte, negación, tipos, acumuladores y segundo orden
Programación Declarativa Curso 200 2002 Tema 4: Corte, negación, tipos, acumuladores y segundo orden José A. Alonso Jiménez Miguel A. Gutiérrez Naranjo Dpto. de Ciencias de la Computación e Inteligencia
TUTORIAL PROLOG. Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato
TUTORIAL PROLOG Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato Prolog es un lenguaje de programación lógica de propósito general que se
Lógica de Predicados de Primer Orden
Lógica de Predicados: Motivación Todo natural es entero y 2 es un natural. Luego 2 es entero. p q r p, q r es claramente un razonamiento válido pero no es posible demostrarlo desde la Lógica Proposicional
Metaprogramación. Ingeniería Informática. Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga
Ingeniería Informática Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga Contenido 1. Clasificación de términos 2. Inspección de estructuras 2 Clasificación de términos Clasificación
Tema 3.- Predicados y sentencias condicionales
UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER
Tema 9: Cálculo Deductivo
Facultad de Informática Grado en Ingeniería Informática Lógica PARTE 2: LÓGICA DE PRIMER ORDEN Tema 9: Cálculo Deductivo Profesor: Javier Bajo [email protected] Madrid, España 24/10/2012 Introducción a la
Soluciones del examen de Lógica informática (Grupos 1 y 2) del 23 de Septiembre de José A. Alonso Jiménez
Soluciones del examen de Lógica informática (Grupos 1 y 2) del 23 de Septiembre de 2005 José A. Alonso Jiménez Grupo de Lógica Computacional Dpto. de Ciencias de la Computación e Inteligencia Artificial
Contenido. Prólogo... Prólogo a la edición en español Argumentos y proposiciones lógicas Introducción
CONTENIDO vii Contenido Prólogo... Prólogo a la edición en español... XVIl XXI 1 Cálculo proposicional... 1 1.1 Argumentos y proposiciones lógicas 1.1.1 Introducción 1 1 1.1.2 Algunos argumentos lógicos
Práctica 2 de IA /2012. LÓGICA Fecha publicación: 26 de octubre de 2011 Duración: 3 sesiones de laboratorio Versión: 2011/10/26
Práctica 2 de IA - 2011/2012. LÓGICA Fecha publicación: 26 de octubre de 2011 Duración: 3 sesiones de laboratorio Versión: 2011/10/26 Forward y backward chaining en lógica proposicional En la práctica
El lenguaje Prolog. Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales
II.4 Prolog El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales Creador: Robert Kowalski Algoritmo = Lógica + Control Aspectos
Programación Exploratoria - Predicados Predefinidos en Prolog -
Universidad Nacional del Centro de la Provincia de Buenos Aires Facultad de Ciencias Exactas Programación Exploratoria - Predicados Predefinidos en Prolog - Tipos de Predicados Construcción de Predicados
Tema 6: Funciones recursivas
Tema 6: Funciones recursivas Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Tema 6: Funciones
Tema 8: Formas normales.
Lógica informática Curso 2003 04 Tema 8: Formas normales. Cláusulas José A. Alonso Jiménez Andrés Cordón Franco Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla LI 2003
Curso Extraordinario INTELIGENCIA ARTIFICIAL Y SISTEMAS EXPERTOS
Curso Extraordinario INTELIGENCIA ARTIFICIAL Y SISTEMAS EXPERTOS Contenidos del Curso Introducción a la I.A. Cómo razonamos?. Algunas experiencias con el razonamiento automático El problema de representación
Polinomios CLAVES PARA EMPEZAR VIDA COTIDIANA. a) 3x b) c) d) x 2 3. a) iii b) ii c) i. a) 7 (4 2) c) 9x (x 4) 9x 2 36x
CLAVES PARA EMPEZAR a) 3x b) c) d) x 2 3 a) iii b) ii c) i a) 7 (4 2) 28 14 42 c) 9x (x 4) 9x 2 36x b) 3 (x ) 3x 1 d) ( 2x) (3x 2 4x 7) 6x 3 8x 2 14x VIDA COTIDIANA Largo de página x Ancho de página 2x
Metodología de Programación I Tutorial de Prolog (3/3)
Metodología de Programación I Tutorial de Prolog (3/3) Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Facultad de Física e Inteligencia Artificial [email protected] http://www.uv.mx/aguerra
Propiedades de imágenes y preimágenes
Propiedades de imágenes y preimágenes Objetivos. Demostrar las propiedades principales de las imágenes y preimágenes, por ejemplo que f[a B] = f[a] f[b]. Requisitos. Definición y ejemplos de imágenes y
Introducción a la Programación Lógica. Ingeniería Informática Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga
Introducción a la Programación Lógica Ingeniería Informática Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga Programming in Prolog opens the mid to a new way of looking at
Programación lógica. Cristian Andrés García Prieto Andrés Felipe López Becerra Miguel Ángel Borja Acevedo Jorge Andrés Solano Avila
Programación lógica Cristian Andrés García Prieto Andrés Felipe López Becerra Miguel Ángel Borja Acevedo Jorge Andrés Solano Avila Agenda Historia Conceptos claves Filosofía del paradigma Ventajas y desventajas
Representación del conocimiento mediante reglas
C. Graciani Díaz F. J. Martín Mateos J. L. Ruiz Reina Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Sistemas basados en el conocimiento Sistemas basados en el conocimiento:
Lógica como Representación. Dr. Eduardo Morales/Dr. Enrique Súcar
Lógica como Representación Dr. Eduardo Morales/Dr. Enrique Súcar Importante: Que las cosas que queremos que sean verdaderas coincidan con las que podemos probar Es decir: lo que nos implica la teoría
LÓGICA FORMAL TEORIAS DE PRIMER ORDEN. Teoremas
LÓGICA FORMAL TEORIAS DE PRIMER ORDEN Pedro López Departamento de Inteligencia Artificial Facultad de Informática Universidad Politécnica de Madrid Fórmulas elementales 1 Teniendo en cuenta las definiciones:
Minimanualillo de SWI-Prolog
Minimanualillo de SWI-Prolog Roberto Torres de Alba 22 de marzo de 2006 Índice 1. Introducción 2 2. Comandos básicos 2 3. Sintaxis de Prolog 2 4. Ayuda 4 5. Consultando y modificando programas 5 5.1. Consultar
Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales
UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo
CONTENIDO. 1.- Introducción a la Inteligencia Artificial (IA) 2.- Lógica de predicados. 3.- Búsqueda de soluciones
CONTENIDO 1.- Introducción a la Inteligencia Artificial (IA) 2.- Lógica de predicados 3.- Búsqueda de soluciones 4.- Lenguajes de IA e Introducción a Sistemas Expertos 1.- Introducción a la Inteligencia
Tema 1: Revisión de Prolog
Razonamiento Automático Curso 999 2000 Tema : Revisión de Prolog José A. Alonso Jiménez Miguel A. Gutiérrez Naranjo Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla
Tema 11.- Reevaluación y el corte
UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO LENGUAJES DE INTELIGENCIA ARTIFICIAL INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN INGENIERÍA TÉCNICA
Lógica proposicional. Ivan Olmos Pineda
Lógica proposicional Ivan Olmos Pineda Introducción Originalmente, la lógica trataba con argumentos en el lenguaje natural es el siguiente argumento válido? Todos los hombres son mortales Sócrates es hombre
PHP: Lenguaje de programación
Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054
