Está en la página 1de 8

INSTITUTO TECNOLÓGICO SUPERIOR DE PÁNUCO

División de Ingeniería en
Sistemas Computacionales

PROGRAMACIÓN LOGICA &


FUNCIONAL

Reporte de investigación.
“Sintaxis y semántica de la lógica de primer orden y
cláusulas de Horn”

UNIDAD III. PROGRAMACIÓN LÓGICA.

Melo Hernández Jaime Javier IS16CO324

Titular de la materia:
MCA. Gil Santana Esparza.

Pánuco, Ver. 19 de diciembre de 2019


INTRODUCCIÓN.
El presente documento muestra conceptos relacionados a la programación lógica.

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 a físicos matemáticos del siglo pasado, 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.

También se conoce a estos lenguajes como lenguajes declarativos, porque


todo lo que el programador tiene que hacer para solucionar un problema es
describirlo vía axiomas y reglas de deducción. Dando referencia a todo esto, como
introducción al tema de investigación.
DESARROLLO.
Programación lógica.

La programación lógica tiene sus orígenes en los trabajos de prueba automática de


teoremas. Para esto se utiliza una única regla de inferencia llamada principio de
resolución, mediante la cual la prueba de un teorema puede ser llevada a cabo en
forma automática. La resolución es una regla que se aplica sobre las fórmulas
surgidas de la lógica de primer orden y la demostración de teoremas mediante esta
regla de inferencia se lleva a cabo por reducción al absurdo.

3.1 Repaso de la lógica de primer orden.

Se sabe como tal, que la mayoría de los lenguajes de programación se basan en la teoría lógica
de primer orden, aunque también incorporan algunos comportamientos de orden superior, en este
sentido, destacan los lenguajes funcionales ya que se basan en el Cálculo Lambda, es la única
teoría lógica de orden superior.

Esto ya mencionado en unidades anteriores y temas mencionados en clase.


Dos definiciones que pueden definir de manera simple son:

"Modelar problemas por medio de la abstracción, utilizando un sistema de


lógica formal que permite llegar a una conclusión por medio de hechos y
reglas"

"Aplicación de reglas de la lógica para inferir conclusiones a partir de datos."

Para entender todo esto, es necesario entender ¿Qué es la programación lógica?

Como respuesta a la pregunta, La programación lógica, junto con la funcional, forma


parte de lo que se conoce como Programación Declarativa, es decir la programación
consiste en indicar como resolver un problema mediante sentencias, en la
Programación Lógica, se trabaja en una forma descriptiva, estableciendo relaciones
entre entidades, indicando no como, sino que hacer.

Para definir la idea, se dice que la idea esencial de la programación lógica es:

3.2 Unificación y resolución.

Para probar la existencia de algo:

Suponer lo opuesto y usar modus ponens y la regla de eliminación del cuanticador


universal, para encontrar un contra ejemplo al supuesto.

Modus Ponendo Ponens.

El modus ponendo ponens es un tipo de argumento lógico, de inferencia razonada,


perteneciente al sistema formal de las reglas de deducción de la conocida lógica
proposicional. Esta estructura argumentativa es la pauta inicial que se transmite en la
lógica proposicional y se relaciona directamente con los argumentos condicionales.

El argumento modus ponendo ponens puede ser visto como un silogismo de dos
patas, que en vez de usar un tercer término que le sirva de enlace, más bien utiliza
una sentencia condicional con la cual relaciona al elemento antecedente con el
elemento consecuente.

Entendiendo el concepto, podemos ver al modus ponendo ponens como un


procedimiento (modus) de las normas de deducción, que por medio de la
aseveración (ponendo) de un antecedente o referencia, logra aseverar
(ponens) a un consecuente o conclusión.
Esta formulación razonable parte de dos proposiciones o premisas. Busca
poder deducir a través de estas una conclusión que, a pesar de estar implícita
y condicionada dentro del argumento, requiere de una doble afirmación —
tanto del término que le precede como de sí misma— para poder llegar a ser
considerada un consecuente.

Modus Ponendo Tollens.

Modus ponendo tollens es una regla de inferencia válida de la lógica proposicional, a


veces abreviado MPT. El modus ponendo tollens establece que, si no es posible que
dos términos sean simultáneamente verdaderos; y uno de ellos es verdadero;
entonces se puede inferir que el otro término no puede ser verdadero.

El modus ponendo tollens puede escribirse formalmente como:

donde cada vez que aparezcan las instancias de " ¬(𝑃⋀𝑄) " y " 𝑃 " en las líneas de
una demostración, se puede colocar " ¬𝑄 " en una línea posterior. En resumen,
"si P y Q no pueden ser verdad simultáneamente, y P es verdad, entonces Q no
puede ser verdad."

Referente a la conclusión del tema Modus ponendo tollens, es el principio de que, si


se sostiene la negación de una conjunción, y también una de sus oraciones
conjuntivas, entonces la negación de la otra oración conjuntiva asimismo se sostiene.

3.3 Cláusulas de Horn.

Resolución SLD.

La resolución general es un mecanismo muy potente de demostración... pero tiene


un alto grado de indeterminismo: en la selección de las cláusulas con las que hacer
resolución y en la selección de los literales a utilizar en la resolución Desde el punto
de vista computacional es muy ineficiente.
Una cláusula de Horn es una secuencia de literales que contiene a lo sumo un literal
positivo. Al escribirla en notación de Kowalski tendrá una de estas cuatro formas:

Los hechos y las reglas se denominan cláusulas definidas: los hechos representan
“hechos acerca de los objetos” (de nuestro universo de discurso), relaciones
elementales entre estos objetos las reglas expresan relaciones condicionales entre
los objetos, dependencias.

Selection-rule driven Linear resolution for Definite clauses.

Es un caso particular de la resolución general, donde: Los resolventes son siempre


objetivos (cláusulas sin cabeza). Los programas son conjuntos de cláusulas (de
Horn) definidas, i.e., hechos y reglas. Hay una función de selección que selecciona
un átomo del resolvente a quien aplicar resolución.

Esto es un ejemplo de una cláusula de Horn:


CONCLUSIÓN.

Como punto final, doy como entendido en los lenguajes lógicos se utiliza el
formalismo de la lógica de primer orden para representar el conocimiento sobre un
problema y para hacer preguntas que, si se demuestra que se pueden deducir a
partir del conocimiento dado en forma de axiomas y de las reglas de deducción
estipuladas, se vuelven teoremas.

Así se encuentran soluciones a problemas formulados como preguntas. Con


base en la información expresada dentro de la lógica de primer orden, se formulan
las preguntas sobre el dominio del problema y el intérprete del lenguaje lógico trata
de encontrar la respuesta automáticamente.

El conocimiento sobre el problema se expresa en forma de predicados


(axiomas) que establecen relaciones sobre los símbolos que representan los datos
del dominio del problema.

Para que todo esto visto, lo implementemos en la siguiente unidad, ya en base


a la programación en el lenguaje de PROLOG.
REFERENCIAS BIBLIOGRAFICAS.

Modus ponendo ponens. 2013. Lógica. España: Webnode. Recuperado de:


leyes-de-inferencia5.webnode.es.

Mazón, R. (2015). Ponendo ponens. México: Súper Mileto. Recuperado de:


supermileto.blogspot.com.

También podría gustarte