I1M2016: Programa en Haskell para reconocer tautologías

En la primera parte de la clase de hoy de Informática de 1º del Grado en Matemáticas se ha estudiado cómo construir un programa para determinar si una fórmula es una tautología.

Para ello se consideran las siguientes fases:

  1. definir un tipo de dato algebraico para las fórmulas proposicionales,
  2. definir un tipo de dato para las interpretaciones,
  3. definir una función para calcular los valores de las fórmulas en las interpretaciones
  4. definir una función para generar todas las posibles interpretaciones de una fórmula y
  5. definir una función que para decidir si una fórmula es tautología (es decir, su valor es verdadero en todas sus interpretaciones).

Los apuntes correspondientes a la clase son

El código correspondiente es
Read More “I1M2016: Programa en Haskell para reconocer tautologías”

LMF2016: Formas normales de Skolem y cláusulas

En la primera parte de la clase de hoy del curso de Lógica matemática y fundamentos se ha estudiado cómo diseñar un procedimiento de forma que dada una fórmula F obtenga otra G que sólo tenga cuantificadores al principio, que su cuerpo esté en forma normal conjuntiva y que sea equisatisfacible con F (es decir, que G es satisfacible precisamente si lo es F). Con dicho procedimiento se calcula la forma normal de Skolem.

A continuación se ha estudiado la sintaxis y la semántica de la lógica clausal de primer orden.

Mediante las formas de Skolem, se obtien un algoritmo que dado un conjunto S de fórmulas de primer orden obtiene un conjunto de cláusulas S’ tal que S y S’ son equiconsistentes. De esta forma, el problema de consecuencia en la lógica de primer orden se reduce al de consistencia de un conjunto de cláusulas.

Las transparencias usadas son las del tema 10.