Está en la página 1de 9

lOMoARcPSD|19399203

Introducción al modelo de programación lógica

Programación Lógica Y Funcional (Instituto Tecnológico de Tijuana)

Studocu is not sponsored or endorsed by any college or university


Downloaded by Daniel Cipriano Garcia (leinadcg428@gmail.com)
lOMoARcPSD|19399203

Instituto Tecnologico de Tijuana

Ingeniería en Sistemas Computacionales

Materia
Programación Lógica y Funcional

Investigación

Profesor:
Luis Javier

Alumno
Alberto

Fecha
11/01/2020

Downloaded by Daniel Cipriano Garcia (leinadcg428@gmail.com)


lOMoARcPSD|19399203

Desarrollo

4.1 Introducción al modelo de programación


lógica

La programación lógica es la parte de la informática que se ocupa de la lógica como


lenguaje de programación. En este paradigma, un programa es un conjunto finito de
FBFs, y la computación es la obtención de pruebas formales.

Una forma de razonar para resolver problemas en matemáticas se fundamenta en la


lógica de primer orden. El conocimiento básico de las matemáticas se puede
representar en la lógica en forma de axiomas, a los cuales se añaden reglas
formales para deducir cosas verdaderas (teoremas) a partir de los axiomas. Gracias
al trabajo de algunos matemáticos de finales del siglo pasado y principios de éste,
se encontró la manera de automatizar computacionalmente el razonamiento lógico,
particularmente para un conjunto significativo de la lógica de primer orden, que
permitió que la lógica matemática diera origen a otros tipos de lenguajes de
programación, conocidos como lenguajes lógicos.

4.2. Semántica de los programas lógicos.

Hay tres maneras bien conocidas de dar significado o semántica a los programas
lógicos: la semántica declarativa, la semántica operacional y la semántica
denotacional (comúnmente llamada semántica de punto fijo).

Sea L un lenguaje de primer orden.

1. El universo de Herbrand de L, denotado HL, es el conjunto de todos


los términos de base que pueden formarse a partir de las constantes y
los símbolos de función que ocurren en L.

2. La base de Herbrand de L, denotada BL, es el conjunto de todos


los ´átomos que pueden formarse a partir de los predicados que ocurren
en L y los términos en HL.

3. Una estructura A para L es una estructura de Herbrand si su


dominio es HL y, para cada s´ımbolo de funci´on f de L y elementos

Downloaded by Daniel Cipriano Garcia (leinadcg428@gmail.com)


lOMoARcPSD|19399203

t1 . . . , tn de A, f
A(t1, . . . , tn) = f(t1, . . . , tn). Para cada constante c en
L, c
A = c.

4. Si Γ un conjunto de sentencias, un modelo de Herbrand de Γ es una


estructura de Herbrand que es un modelo para Γ. Debido a que en los
modelos de Herbrand la interpretación de las constantes y los s´ımbolos
de función son fijas, es posible identificar un modelo de Herbrand con
un subconjunto de la base de Herbrand.

Semántica declarativa. Desde el punto de vista lógico, un programa P puede verse


como una teoŕıa ĺogica formada por las cláusulas del programa. Los modelos de
Herbrand de esta teor ́ıa son considerados los modelos del programa P. Por
ejemplo, la base de Herbrand del programa P, BP , es un modelo de P.

Semántica operacional​. Está definida por el proceso de inferencia utilizado para


probar que un objetivo puede ser derivado del programa. En la próxima sección
estudiaremos en detalle este punto.

Semántica denotaciona​l. Esta semántica asigna significado a un programa


asociando una función sobre el dominio calculado por el programa. El significado
viene dado entonces por el punto fijo de la función, si existe..

4.3. Representación clausada del conocimiento.

Representación del conocimiento es un término para referirse a representaciones


pensadas para el procesamiento por ordenadores modernos, en particular, para
representaciones compuestas por objetos explícitos y de afirmaciones sobre ellos.

Representar el conocimiento mediante cláusulas permite a los ordenadores sacar


conclusiones de conocimiento previamente almacenados.

Tipos de Cláusulas
Ejemplos
1. Si algunos perros son mamíferos, luego todos son mamíferos.
2. Todos los colibríes son aves.
Este colibrí es ave.

Downloaded by Daniel Cipriano Garcia (leinadcg428@gmail.com)


lOMoARcPSD|19399203

4.4. Consulta de una base de cláusulas.

Las cláusulas contienen la especificación o implementación del conjunto de hechos


y reglas que componen el programa. se encabeza con la palabra CLAUSES. Una
cláusula puede ser: un hecho: por ejemplo padre(juan, maria). una secuencia de
cláusulas que definen un predicado se denomina procedimiento.

Tipos de datos estructurados:


Átomos: Constantes y variables de cadena.
Listas, representadas entre [ ].

Tipos definidos por el usuario. Las reglas para definir relaciones pueden actuar
como tipos de usuario.
SELECT select_list
FROM table_source
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING search_condition]
[ORDER BY order_expression [ASC | DESC] ]
FROM
Especifica de dónde queremos obtener los datos, es decir, de que tabla. Se utiliza
no sólo en el comando de consulta, SELECT, sino también en los comandos
UPDATE y DELETE .
WHERE
Está clausula es donde se indican las condiciones de filtrado de los datos. Estas
condiciones se definen a través de los operadores lógicos y de comparación.

4.5. Espacios de búsqueda.

Cuando se resuelve un problema, se busca la mejor solución entre un conjunto de


posibles soluciones. Al conjunto de todas las posibles soluciones a un problema
concreto se llama espacio de búsqueda.

Entonces parece que buscar una solución se reduce a buscar un valor extremo
(mínimo o máximo) en el espacio de búsqueda. A veces el espacio de búsqueda
puede ser bien definido, pero en la mayoría de las ocasiones sólo se conocen
algunos puntos en el espacio de búsqueda. Cuando se usa un AG las posibles
soluciones generan otras a medida que el genético evoluciona.

Downloaded by Daniel Cipriano Garcia (leinadcg428@gmail.com)


lOMoARcPSD|19399203

La resolución de un problema puede expresarse como la búsqueda del extremo de


una función Aquí resolvemos ese problema, este es un algoritmo genético que
calcula el máximo de una función. La gráfica representa un espacio de búsqueda y
las líneas verticales son posibles soluciones. La línea roja es el mejor individuo de la
población y las verdes el resto.

4.6. Programación lógica con números, listas y árboles.

Numéricos
en PROLOG los objetos numéricos pueden corresponder a tipo integer o float de c.
Para realizar operaciones numéricas, se tiene el predicado is, que se comporta
como una asignación en un lenguaje imperativo. Así, el objetivo X is <expresión>
será verdadero cuando X unifique con el resultado numérico de evaluar <expresión>

Listas
La representación de hechos simples no es lo común en la clasificación del
elemento, sino que se agrupan los elementos de un mismo tipo en una lista. las
listas son colecciones de elementos en PROLOG. Una lista se divide en dos partes:
● Cabeza. Es el primer elemento de la lista
● Cola. Es una lista con el resto de los elementos de la lista. la cabeza y la cola
de una lista se separan con el símbolo |

Árboles
Es más fácil entender la forma de una estructura complicada si la escribimos como
un árbol en el que el nombre es un nodo y los componentes son las ramas

4.7. Control de búsqueda en programas lógicos

El predicado ! proporciona control sobre el mecanismo de backtracking de


programación lógica: siempre tiene éxito pero tiene el efecto lateral de podar todas
las elecciones alternativas en el nodo correspondiente en el arbol de busqueda

El orden en que aparecen los literales dentro de una sentencia (dentro del cuerpo) o
el orden en que se introducen las sentencias en el programa son importantes en
PROLOG. El orden afecta tanto al correcto funcionamiento del programa, como al
recorrido del árbol de llamadas, determinando, entre otras cosas, el orden en que
PROLOG devuelve las soluciones a una pregunta dada. El orden de las sentencias
determina el orden en que se obtienen las soluciones ya que varía el orden en que

Downloaded by Daniel Cipriano Garcia (leinadcg428@gmail.com)


lOMoARcPSD|19399203

se recorren las ramas del árbol de búsqueda de soluciones. Ejemplo: A continuación


se presentan dos versiones del programa "miembro de una lista". Ambas versiones
tienen las mismas sentencias pero escritas en distinto orden. A ambas versiones les
hacemos la misma pregunta ?miembro (X, [1,2,3]).

4.8. Manipulación de términos.

Existen operadores para el chequeo de tipos de términos, se pueden usar par


manejo de errores, el predicado var/1 se satisface cuando su argumento es una
variable no unificada

Consiste en construir programas que manipulan otros programas proporcionando


una mayor expresividad al lenguaje
Predicados
Meta-Lógicos
abuelo(X,Y):-novar(X)
hombre(x), progenitor(x,z), progenitor(z,y).
abuelo(x,y):-novar(y)
progenitor(z,y), progenitor(x,z), hombre(x)
abuelo(x,y):- X es abuelo de Y
X es una variable no instanciada
Permiten controlar el algoritmo de resolución facilitando la meta-programación.
|?- var(x)
X=_
|?- X-1, var(x)
no
Es uno de los más útiles entre la biblioteca standard Prolog:
El predicado functor/3

Downloaded by Daniel Cipriano Garcia (leinadcg428@gmail.com)


lOMoARcPSD|19399203

4.9 Predicados mitológicos.

la construcción sirve para pasar nombres de predicados como argumentos. El


siguiente predicado determina si cierta lista está ordenada según algún criterio que
no se conoce a priori.

El predicado functor es uno de los más útiles entre la biblioteca standard Prolog.
Este predicado permite extraer el functor y la aridad de un término cualquiera.
Pero, al ser reversible, también permite construir nuevos términos a partir del functor
y la aridad deseada.
Los modos de uso son:
• Functor(+Término,-Functor,-Aridad).
• Functor(-Término,+Functor,+Aridad).
Predicados meta-lógicos
Ejemplo:
Predicados de Clasificación
Los predicados meta-lógicos permiten controlar el algoritmo de resolución facilitando
la meta-programación.

Downloaded by Daniel Cipriano Garcia (leinadcg428@gmail.com)


lOMoARcPSD|19399203

Referencias

Programación lógica | Apuntes de 4o de Ingeniería Informática. (s. f.). github.


http://adrm.github.io/apuntes-cuarto/ico/4_programacion_logica.html

Serra, S. (2011, junio). Paradigma logico. labsys.


https://labsys.frc.utn.edu.ar/ppr-2011/Unidad%20V%20-%20Paradigma%20Lógico/U
nidad%20V%20-%20Paradigma%20LOGICO.pdf

Moreno, L. D. C. L., & Perfil, V. T. M. (s. f.). 4.3 Representación clausada del
conocimiento. Blogspot.
https://lucydelcarmenleonmoreno.blogspot.com/2019/05/43-representacion-clausada
-del.html#:%7E:text=Representaci%C3%B3n%20del%20conocimiento%20es%20un
,y%20de%20afirmaciones%20sobre%20ellos​.

Pasarella, E. (2004, mayo). Apuntes. cs.upc.edu.


https://www.cs.upc.edu/~edelmira/ApuntesLP.pdf

Lopez, R. J. A. (2019, 11 mayo). Programacion Logica y funcional. GoConqr.


https://www.goconqr.com/es/mindmap/9271680/programacion-logica-y-funcional

Chuc, I. E. (s. f.). ProgramaciÃ3n lÃ3gica con nÃomeros, listas y árboles.


prezi.com.
https://prezi.com/s58qigggszsd/programacion-logica-con-numeros-listas-y-arboles/

Couoh, R. (s. f.). 4.1.1 Manipulacion de terminos 4.1.2 Predicados Metalogicos.


prezi.com.
https://prezi.com/wzpdx9r407pp/411-manipulacion-de-terminos-412-predicados-met
alogicos/

Downloaded by Daniel Cipriano Garcia (leinadcg428@gmail.com)

También podría gustarte