1. Sintaxis de Prolog



Documentos relacionados
Ecuaciones de primer grado con dos incógnitas

TEMA: ECUACIONES CON NÚMEROS NATURALES ECUACIONES DE PRIMER GRADO CON UNA INCÓGNITA.

Módulo 9 Sistema matemático y operaciones binarias

LÍMITES Y CONTINUIDAD DE FUNCIONES

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

Tema 07. LÍMITES Y CONTINUIDAD DE FUNCIONES

Capítulo 4 PROLOG 4.1 Introducción

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

1. Lección 5 - Comparación y Sustitución de capitales

Lección 24: Lenguaje algebraico y sustituciones

Para representar los conjuntos, los elementos y la relación de pertenencia, mediante símbolos, tendremos en cuenta las siguientes convenciones:

5 Ecuaciones lineales y conceptos elementales de funciones

DOMINIO Y RANGO DE UNA FUNCIÓN I N D I C E. martilloatomico@gmail.com. Página. Titulo:

Unidad 6 Cálculo de máximos y mínimos

Apuntes de Matemática Discreta 9. Funciones

Límite de una función

Objetivos. Contenidos. Revisar los principales conceptos de la lógica de primer orden

1º) Siempre que se pueda, hay que sacar factor común: :a b ± a c ± a d ± = a (b ± c ± d ± ):

Ingeniería en Informática

RELACIONES DE RECURRENCIA

ESTRUCTURAS ALGEBRAICAS 1

PRÁCTICA N 2 SISTEMAS DE NUMERACIÓN

Matrices equivalentes. El método de Gauss

CAPÍTULO III. FUNCIONES

Ejemplo: Resolvemos Sin solución. O siempre es positiva o siempre es negativa. Damos un valor cualquiera Siempre + D(f) =

Estructuras Algebraicas Una estructura algebraica es un objeto matemático consistente en un conjunto no vacío, con por lo menos una operación binaria.

La Lección de Hoy es Distancia entre dos puntos. El cuál es la expectativa para el aprendizaje del estudiante CGT.5.G.1

Significado de las f.b.f (fórmulas bien formadas) en términos de objetos, propiedades y relaciones en el mundo

MEDIDAS DE TENDENCIA CENTRAL

CURSO BÁSICO DE MATEMÁTICAS PARA ESTUDIANTES DE ECONÓMICAS Y EMPRESARIALES

Objetivos: Al inalizar la unidad, el alumno:

(A) Primer parcial. si 1 x 1; x 3 si x>1. (B) Segundo parcial

Campos conservativos. f(x) = f (x) = ( f x 1

March 25, 2010 CAPÍTULO 2: LÍMITES Y CONTINUIDAD DE FUNCIONES EN EL ESPACIO EUCLÍDEO

Profr. Efraín Soto Apolinar. La función lineal. y = a 0 + a 1 x. y = m x + b

FUNCIONES CUADRÁTICAS Y RACIONALES

Repaso de Lógica de Primer Orden

La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx

SECRETARIA DE EDUCACIÓN PÚBLICA SUBSECRETARIA DE EDUCACIÓN MEDIA SUPERIOR DIRECCIÓN DE BACHILLERATOS ESTATALES Y PREPARATORIA ABIERTA

Funciones, x, y, gráficos

1. Dominio, simetría, puntos de corte y periodicidad

Matrices Invertibles y Elementos de Álgebra Matricial

Programa para el Mejoramiento de la Enseñanza de la Matemática en ANEP Proyecto: Análisis, Reflexión y Producción. Fracciones

Nota 2. Luis Sierra. Marzo del 2010

1. DML. Las subconsultas

El sistema decimal, es aquél en el que se combinan 10 cifras (o dígitos) del 0 al 9 para indicar una cantidad específica.

Números Reales. MathCon c

SOLUCIÓN CASO GESTIÓN DE PERSONAL I

De dos incógnitas. Por ejemplo, x + y 3 = 4. De tres incógnitas. Por ejemplo, x + y + 2z = 4. Y así sucesivamente.

Ejercicios. 1. Definir en Maxima las siguientes funciones y evaluarlas en los puntos que se indican:

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

UNIDAD 6. POLINOMIOS CON COEFICIENTES ENTEROS

4 Pruebas y análisis del software

Descripción: dos. función. decreciente. Figura 1. Figura 2

Complejidad - Problemas NP-Completos. Algoritmos y Estructuras de Datos III

1. Teorema del Valor Medio

Funciones uno-uno, sobre y biunívocas

1.3 Números racionales

TÉRMINOS Y CONDICIONES

BASES Y DIMENSIÓN. Propiedades de las bases. Ejemplos de bases.

Problemas Resueltos de Desigualdades y Programación Lineal

Problemas y Ejercicios Resueltos. Tema 2: Espacios vectoriales.

Operaciones con polinomios

Problemas fáciles, difíciles y muy difíciles

CESMA BUSINESS SCHOOL MATEMÁTICAS FINANCIERAS. TEMA 3 CAPITALIZACIÓN COMPUESTA

Se llama dominio de una función f(x) a todos los valores de x para los que f(x) existe. El dominio se denota como Dom(f)

Aritmética finita y análisis de error

Tema 3. Espacios vectoriales

Introducción al Cálculo Simbólico a través de Maple

Lección 4: Suma y resta de números racionales

Tema 2 : NÚMEROS ENTEROS. Primero de Educación Secundaria Obligatoria. I.e.s Fuentesaúco.

MATEMÁTICAS para estudiantes de primer curso de facultades y escuelas técnicas

Tema 1: Cuerpos geométricos. Aplicaciones

1.1. Introducción y conceptos básicos

1.4.- D E S I G U A L D A D E S

Matemáticas 1204, 2013 Semestre II Tarea 5 Soluciones

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Curso: Teoría de la Computación. Unidad 2, Sesión 8: Complejidad computacional (2)

Función exponencial y Logaritmos

Programación n declarativa: lógica y restricciones

Lic. Manuel de Jesús Campos Boc

Coordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 3: Lunes 25 - Jueves 28 de Marzo. Contenidos

Límites y Continuidad de funciones

Tema 2 Límites de Funciones

NÚMEROS NATURALES Y NÚMEROS ENTEROS

Universidad de Costa Rica Escuela de Matemática CONARE-PROYECTO RAMA. Funciones

Ejercicios Resueltos del Tema 4

QUÉ ES UN NÚMERO DECIMAL?

Juan Antonio González Mota Profesor de Matemáticas del Colegio Juan XIII Zaidín de Granada

1. Definición 2. Operaciones con funciones

Kaldeera Advanced Forms 2009 Guía del usuario

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Cualquier número de cualquier base se puede representar mediante la siguiente ecuación polinómica:

Una desigualdad se obtiene al escribir dos expresiones numéricas o algebraicas relacionadas con alguno de los símbolos

a < b y se lee "a es menor que b" (desigualdad estricta) a > b y se lee "a es mayor que b" (desigualdad estricta)

EJERCICIOS SOBRE : DIVISIBILIDAD

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

DOMINIO Y RANGO página 89. Cuando se grafica una función existen las siguientes posibilidades:

Transcripción:

1. Sintaxis de Prolog Términos: Constantes: enteros (Ejs: 3, 4), átomos (Ejs: juan, pi) (en minúscula). Variables: Ejs: X, Casa (en mayúscula) Estructuras: functor, seguido de uno o más argumentos, es decir, si f es un functor de aridad n, f(t 1,..., t n ) es un término si t i es un término i. Un término se llama cerrado si no posee variables. Fórmulas atómicas: Sea P un símbolo de predicado de aridad n, luego P (t 1,..., t n ) es una fórmula atómica t i. Observación: no se permiten predicados anidados. Tipos de cláusulas: Cláusula de programa: conforman el programa lógico. Tienen la forma de L :- B1,...,BS. Y se interpreta como: L es verdadero si valen B1,... y BS. Si S=0, se dice que la cláusula de programa es un hecho. Cláusula objetivo: tienen la forma de B1,...,BS y es lo que queremos probar. 2. Sustitución y Unificación Llamemos T erm al conjunto formado por todos los términos y todos los predicados. Una sustitución en una función σ : V ariables T erm tal que σ(x) X para finitos X(i.e. dominio finito). Notación: si el dominio de σ es X 1,..., X n, se nota σ = {X 1 σ(x 1 ),..., X n σ(x n )} Ej: σ = {X f(a), Y X} Se puede extender σ a la función σ : T erm T erm, de la siguiente manera: σ(x) = σ(x) si X es una variable. σ(g(t 1,..., t n )) = g( σ(t 1 ),..., σ(t n )) si t i es un término y g un functor o un predicado. σ(c) = c si c es una constante. (i.e. sólo interesan las variables). A partir de ahora vamos a anotar σ directamente como σ. Por ejemplo, si tomamos la sustitución σ del ejemplo anterior: σ(g(x, Y )) = g(σ(x), σ(y )) = g(f(a), X) Página 1 de 6

El problema de unificación se define de la siguiente manera: Dado un conjunto de ecuaciones S = {s 1 =? t 1,..., s n =? t n, donde s i y t i son términos, queremos saber si existe una sustitución σ tal que σ(s i ) = σ(t i ) 1 i n. Si esta sustitución existe, se dice que σ es un unificador de S. Tener en cuenta que la igualdad utilizada es puramente sintáctica (por ejemplo 3 2 + 1). Se dice que S es unificable si existen una o más sustituciones que cumplan lo dicho anteriormente (unificadores). Es claro que pueden existir más de un unificador para un conjunto S. Por ejemplo, si S = {X =? Y }, los siguientes son unificadores de S: σ 1 = {X Y }, σ 2 = {Y X}, σ 3 = {X a, Y a}. Lo que se intenta buscar es el unificador más general(mgu) de S. Una sustitución σ 1 es más general que σ 2 si existe un σ 3 tal que σ 2 = σ 3 (σ 1 ). Si ahora volvemos al ejemplo, podemos ver que σ 1 y σ 2 son más generales que σ 3. Además, σ 1 como σ 2, son ambos mgu de S. El problema de encontrar el mgu de un conjunto S es decidible y existen algoritmos eficientes para encontrarlos. Veamos otros ejemplos de conjuntos de ecuaciones: S = {a =? b} no unifica. En general S = {t =? t} unifica. S = {f(x) =? g(y )} no unifica. S = {f(x) =? X} no unifica. 3. Regla de Resolución Dado un programa lógico P (conjunto de cláusulas de programa) y un goal G, se quiere saber si dicho goal es consecuencia lógica de P. La regla de resolución que se utiliza es: B 1,...,B i,...,b n C: A 1,...,A p σ(b 1,...,B i 1,A 1,...,A p,...b i+1,...,b n) si σ es mgu de B i y C La conclusión de la regla de resolución es el nuevo goal a resolver. Prolog resuelve el goal comenzando desde B 1 de izquierda a derecha en DFS. El orden en el que recorre el programa P (buscando unificar las cabezas de las reglas) es de arriba hacia abajo. Tener en cuenta que el orden de las cláusulas (y subcláusulas) en el programa influye en el resultado. Esta es una cuestión mas bien implementativa. Ejemplo: Sea el siguiente programa P superheroe(senortostada). esvaliente(x) :- superheroe(x). El goal es esvaliente(señortostada). Apliquemos la reglade resolución: esv aliente(señort ostada) esv aliente(x): superheroe(x). superheroe(señort ostada) σ 1 = {X señort ostada} superheroe(señort ostada) superheroe(señort ostada). σ 2 = {} Al evaluar un goal, los resultados posibles son los siguientes: Página 2 de 6

Yes. Se aplicó la regla de resolución hasta alcanzar la cláusula vacía. No. Se llegó a una cláusula del goal que no unifica con ninguna cabeza de regla. Loop. El proceso de aplicación de la regla de resolución no termina. 4. Ejemplos Ejemplo de Loop: el programa P es m(x) :- m(x),n(x). Observación: como Prolog utiliza unificación, no es tipado. Es decir, una variable puede unificar con cualquier valor y siempre pueden compararse dos valores con =. Un ejemplo más complejo: mediatico(x) :- programabasura(y), actua(x,y). mediatico(x) :- amigodechizito(x). programabasura(intrusos). actua(guido, intrusos). amigodechizito(silvia). Goals: mediatico(lamomia) No. mediatico(guido) Yes. mediatico(x) X = guido; X = silvia; No. Veamos que sí importa el orden de las cláusulas con otro ejemplo: descendiente(x,y) :- hijo(x,y). descendiente(x,y) :- hijo(z,y), descendiente(x,z). hijo(bart, homero). hijo(homero, abuelo). Resultado:?- descendiente(bart,w). W = homero ; W = abuelo ; No?- descendiente(a,b). A = bart B = homero ; A = homero B = abuelo ; A = bart B = abuelo ; No descendiente(x,y) :- descendiente(x,z), hijo(z,y). descendiente(x,y) :- hijo(x,y). hijo(bart, homero). hijo(homero, abuelo). Página 3 de 6

Resultado:?- descendiente(bart,w). Loop descendiente(x,y) :- hijo(x,y). descendiente(x,y) :- descendiente(x,z), hijo(z,y). hijo(bart, homero). hijo(homero, abuelo). Resultado:?- descendiente(bart,w). W = homero ; W = abuelo ; Loop Ejemplos con functores: Vamos a representar los naturales con cero y suc(x). Observación: el comportamiento de los functores se definen a través de los predicados que los utilizan. nn(cero). nn(suc(x)) :- nn(x). suma(cero, X, X). suma(suc(x), Y, suc(z)) :- suma(x, Y, Z). No se estila en Prolog chequear que los argumentos de la suma sean naturales. Se utiliza el hecho de que Prolog sea no tipado como una ventaja. 5. Reversibilidad e Instanciación Reversibilidad: una relación no distingue entre input y output. Se puede preguntar en cualquier dirección. Por ejemplo, en el predicado suma, se puede evaluar suma(x, cero,suc(cero)). Un parámetro está instanciado si es un término cerrado en la sustitución actual. Por ejemplo si se intenta resolver: mediatico(x) :- programabasura(y), actua(x,y). y ya se ha resuelto programabasura(y), al evaluar el predicado actua(x,y), la variable Y ya se encuentra instanciada. Notación: si un predicado P (..., X,...) supone que el parámetro X está instanciado, se nota como P (..., +X,...). Si es indistinto, P (..., X,...). Esta notación no es sintaxis de Prolog, se utiliza a modo de documentación. 6. Aspectos Extralógicos Prolog utiliza un motor de operaciones aritméticas que permite realizar operaciones matemáticas por afuera del motor lógico. Esto simplifica el trabajo con dominios conocidos (naturales, racionales, etc). Página 4 de 6

Decimos que un término es una expresión aritmética si es un número natural, una variable instanciada en una expresión aritmética, o una expresión de la forma t 1 + t 2, t 1 t 2, t 1 t 2, etc. Donde cada t i es una expresión aritmética. Esto significa que todas las variables de una expresión aritmética se encuentran instanciadas. Hay que tener especial cuidado en trabajar con expresiones aritméticas, porque en caso contrario se genera una excepción en Prolog (que no es lo mismo que No). operador =. X = Y responde Yes si X unifica con Y (esto no es un aspecto extralógico). Ejemplos: 5 = 5, a = a, X = 2+3, 5 = 2 +3 operador is. X is E. E siempre debe ser una expresiónaritmética. Primero evalúa E y responde Yes si X unifica con laevaluación de E. Ejemplos: 5 is 2+3, 2+3 is 5, X is 2+3(asignacion), X is señortostada predicados relacionales. <, =:=, =<, >=, =/=. Ambos argumentos deben ser expresiones aritméticas. Se evalúan ambos argumentos y se compara el resultado de la evaluación. Ejemplo: factorial(0, 1). factorial(n, F) :- N > 0, N1 is N-1, factorial(n1, F1), F is N*F1. Ver lo siguiente: factorial(3,x) es X = 6. factorial(x,2) da ERROR. El predicado no es reversible. Qué pasa si quitamos la cláusula N > 0? 7. Listas Las listas se construyen de la siguiente manera: [] [X, Y,... L], donde X, e Y son elementos y L es una lista [X, Y, Z,...] donde X, Y y Z son elementos de la lista Ejemplos: [], [1], [1 []], [1, 2 [3]], [1,2,3], [[], 3, soygalleta] lista([]). lista([x XS]) :- lista(xs). longitud([], cero). longitud([x XS], suc(z)) :- longitud(xs, Z). Página 5 de 6

esto esta MAL! longitud([], cero). longitud([x XS], Z) :- longitud(xs, Y), Z is Y+1. esto esta BIEN!! :) longitud([], 0). longitud([x XS], Z) :- longitud(xs, Y), Z is Y+1. esto esta MAL!! (si Z no esta instanciado) longitud([], 0). longitud([x XS], Z) :- Y is Z-1, longitud(xs, Y). Página 6 de 6