Está en la página 1de 18

Lógica de Predicados - Sintaxis

Contenido
Limitaciones de la Lógica Proposicional ..................................................................................2
Sintaxis de la Lógica de Predicados ........................................................................................4
El Vocabulario .....................................................................................................................6
Reglas de sintaxis ................................................................................................................7
Distinción: Primer Orden vs Segundo Orden .......................................................................9
Árbol de sintaxis y precedencia .........................................................................................10
Cuantificación y ligadura de variables ...............................................................................11
La sintaxis de LPO en Haskell ............................................................................................12
Recursión en LPO ..............................................................................................................13
Formalización de enunciados ............................................................................................15

1
Limitaciones de la Lógica Proposicional
La sintaxis de un lenguaje natural, como el Español o el Inglés, es mucho más compleja que
la sintaxis del lenguaje formal de Lógica Proposicional que hemos considerado hasta ahora.
Cuando usamos LP para formalizar un razonamiento del lenguaje natural, se eligen letras
proposicionales (típicamente 𝑝, 𝑞, 𝑟, etc.) para denotar las oraciones declarativas más
básicas que podemos identificar en el razonamiento, las cuales llamamos proposiciones
atómicas.

Muchas de las proposiciones que consideramos “atómicas” en LP, tienen en su forma


natural una estructura interna que es ignorada porque no es apropiadamente formalizable
con la sintaxis de LP. Algunos de los componentes lingüísticos que se pueden encontrar en
la estructura interna son:

• Términos singulares: expresiones cuyo propósito es designar/denotar individuos


particulares, ya sean personas, números, lugares u objetos. Los términos singulares
pueden ser nombres propios, descripciones definidas o pronombres.
Por ejemplo, en la oración:
Si Alicia ha leído la obra de Darwin, ella no es creacionista
Tenemos que “Alicia” es un nombre propio, “la obra de Darwin” es una descripción
definida, y “ella” es un pronombre que refiere a la misma entidad que “Alicia”.
• Predicados: los podemos pensar como proposiciones incompletas con huecos que al ser
llenados con términos singulares se obtienen proposiciones completas.
Por ejemplo:
o “_ es creacionista” es un predicado unario.
o “_ ha leído _” es un predicado binario.
o “_ se encuentra entre _ y _” es un predicado ternario.
En general, si hay n huecos decimos que el predicado es n-ario. Los predicados expresan
relaciones entre individuos. Adicionalmente, en el contexto de las matemáticas, a las
funciones las podemos pensar también como relaciones pero con propiedades
especiales.
• Expresiones cuantificadas: expresiones del tipo “Todo”, “Alguno”, “Alguien”, “Ninguno”,
“Nadie”, etc. A estos les llamamos comúnmente cuantificadores. Hacen referencia a la
cantidad de individuos involucrados en algún predicado.
Por ejemplo:
o “Algunas personas no han leído la obra de Darwin”.
o “Todo número natural es igual a sí mismo”

2
Consideremos el siguiente razonamiento:

Ninguno de los amigos de David apoya personas radicales.


Alicia apoya a Juan y Juan es radical.
Por lo tanto, Alicia no es amiga de David.

Intuitivamente, este es un razonamiento válido.

Para formalizarlo en LP, tomamos las letras 𝑝, 𝑞, 𝑟, y 𝑠 para denotar las siguientes
proposiciones atómicas:

𝑝 = “Ninguno de los amigos de David apoya personas radicales”


𝑞 = “Alicia apoya a Juan”
𝑟 = “Juan es radical”
𝑠 = “Alicia es amiga de David”

El razonamiento nos queda:


𝑝
𝑞∧𝑟
∴ ¬𝑠

Pero este no es un razonamiento válido de acuerdo con nuestra definición de consecuencia


lógica en LP, o sea 𝑝, 𝑞 ∧ 𝑟 ⊭ ¬ 𝑠.

El problema es que las diferentes proposiciones atómicas en LP no tienen ninguna conexión


entre ellas porque en cualquier interpretación el valor de verdad de cada una es
independiente del resto.

Lo que hace válido al razonamiento anterior es la interconexión entre:


• Los términos singulares: “Alicia”, “Juan” y “David”.
• Los predicados: “_ es radical”, “_ apoya a _” y “_ es amigo de _”.
• El cuantificador “Ninguno”.

3
Sintaxis de la Lógica de Predicados
El lenguaje formal de Lógica de Predicados que vamos a introducir es mucho más expresivo
que el lenguaje de Lógica Proposicional porque su sintaxis permite representar los
componentes lingüísticos mencionados anteriormente (términos, predicados y
cuantificadores), además de las conectivas lógicas habituales (¬ , ∧ , ∨ , etc.). Podemos
pensarlo como una extensión de la Lógica Proposicional. Al mismo tiempo, tener mayor
expresividad tendrá su precio.

Más precisamente, la lógica de predicados que vamos a estudiar es una Lógica de Primer
Orden (LPO), el motivo de esta denominación quedará claro luego. Antes de dar la sintaxis
formal, hacemos un resumen anticipado. La sintaxis consta de:

• Símbolos de Constante: 𝑐1, 𝑐2, 𝑐3 , ….


Se asume que disponemos de una cantidad infinita de estos símbolos. Estos se usan
para denotar individuos particulares (personas, números, etc.).
En la práctica, cuando es posible nos permitimos usar otras letras minúsculas que
sean convenientes como a, b, c, d, …
Por ejemplo, para denotar a las personas Alicia y David podemos definir las
constantes:
a = Alicia
d = David
• Símbolos de Predicado: P1𝑘1 , P𝑘2 𝑘3
2 , P3 , ….
Se asume que disponemos de una cantidad infinita de estos símbolos. Cada uno de
ellos teniendo una aridad correspondiente, la cual forma parte de su notación en
forma de superíndice. Es decir, 𝑘1 es la aridad del simbolo P1𝑘1 , donde 𝑘1 puede ser
cualquier número natural.
En la práctica, normalmente alivianamos la notación usando las letras mayúsculas
P 𝑘 , Q𝑘 , R𝑘 , …, etc. donde cada una tiene su aridad correspondiente.
Por ejemplo, podemos denotar el predicado binario “_ es amigo de _” con P 2 . Un
uso concreto de este símbolo (asumiendo los símbolos del ejemplo anterior) es
P 2 (a, d) cuyo significado es “Alicia es amigo de Juan”.
𝑘2
• Símbolos de Función: f1𝑘1 , f2 , f3𝑘3 , ….
Se asume que disponemos de una cantidad infinita de estos símbolos y el significado
de la notación es análogo al caso anterior de los predicados.
En la práctica, normalmente alivianamos la notación usando las letras minúsculas f 𝑘 ,
g 𝑘 , h𝑘 , …, etc. donde cada una tiene una aridad correspondiente.

4
Por ejemplo, podemos denotar la función suma con f 2 . Si en vez de hablar de
personas queremos hablar de números y las constantes a y d representan ciertos
numeros específicos, entonces f 2 (a, d) representa la suma de ellos.
• Símbolos de Variable: 𝑥1 , 𝑥2 , 𝑥3 , ….
Se asume que disponemos de una cantidad infinita de estos símbolos. Estos símbolos
denotan individuos arbitrarios del universo del discurso.
En la práctica, cuando es posible nos permitimos usar otras letras minúsculas que
sean convenientes como 𝑥, 𝑦, 𝑧, …
Atención: no son equivalentes a las “variables/letras proposicionales” de LP, ni nada
parecido.
• Símbolos de Cuantificación: ∀ , ∃
Se usan sobre variables y predicados. Por ejemplo, asumiendo que el contexto que
nos interesa consiste en personas y sus relaciones de amistad, para expresar que
todos son amigos de todos escribimos: (∀𝑥 )(∀𝑦)P 2 (𝑥, 𝑦), mientras que para
expresar que todos son amigos de David escribimos: (∀𝑥 )P 2 (𝑥, d),

De manera similar a LP, seguimos teniendo símbolos para las conectivas lógicas habituales y
los paréntesis ( y ) como símbolos de agrupacion.

5
El Vocabulario
En general, al razonar siempre tenemos cierto contexto o situación particular en mente.
Este es llamado el universo (o dominio) del discurso. Los símbolos que adoptamos y el
significado que les damos depende de ese universo del cual queremos hablar. Para cada
universo que nos interesa, queremos tener bien definido un vocabulario que sea apropiado
para razonar sobre las propiedades y relaciones entre los individuos de ese universo.

Definición (Vocabulario). Un vocabulario 𝑉 es una terna (𝒦, ℱ, 𝒫) donde 𝒦 , ℱ y 𝒫 son


conjuntos de símbolos (se asumen disjuntos entre sí) tales que:

• 𝒦 = {𝑐1 , 𝑐2, 𝑐3 , … } , son símbolos para constantes


𝑘2
• ℱ = { f1𝑘1 , f2 , f3𝑘3 , …. } , son símbolos para funciones
• 𝒫 ={ P1𝑘1, P𝑘2
2 , P3𝑘3 , …. } , son símbolos para predicados

Ejemplo.
• Si queremos formalizar el razonamiento válido considerado antes, es suficiente
definir un vocabulario con tres símbolos de constantes (para los individuos Alicia,
David y Juan), tres símbolos de predicado (para las relaciones “_ es radical”, “_
apoya a _” y “_ es amigo de _”) y sin ningún símbolo de función.
Tal vocabulario podría ser:
({a, b, c}, ∅, {P1, Q2, R2 })

• Si queremos formalizar la Aritmética, es suficiente definir un vocabulario con un


símbolo de constante (para el cero), tres símbolos de función (para las funciones de
sucesor, suma y producto) y dos símbolos de predicado (para las relaciones “_ es
menor a _”, “_ es igual a _”).
Tal vocabulario podría ser:
({a}, {f 1, g 2 , h2 }, {P 2, Q2 })
Por supuesto que en este caso ya tenemos, por años de práctica, ciertos símbolos
asociados a estos conceptos. Por ejemplo, las relaciones mencionadas son
simbolizadas habitualmente por “<” y “=”. Podemos permitirnos definir este
vocabulario de una manera que nos resulte más familiar, por ejemplo:

({a}, {s, +,×}, {<, =})


Pero nunca hay que perder de vista que dentro de las fórmulas del lenguaje de LPO
estos son solo meros símbolos cuyo significado, por más intuitivo que sea, quedará
exclusivamente determinado luego por la semántica. Por ejemplo, no decimos “a es
el cero”, lo que decimos es “el símbolo a es interpretado por el cero”.

6
Reglas de sintaxis
Las reglas de sintaxis que describen (o generan) las expresiones bien formadas de un
lenguaje de primer orden se definen con respecto a un vocabulario 𝑉 y a un conjunto
de variables 𝑉𝑎𝑟 .

Cuál es exactamente el conjunto 𝑉𝑎𝑟 no es lo importante. Siempre vamos a asumir un


conjunto 𝑉𝑎𝑟 = {𝑥1 , 𝑥2 , 𝑥3 , … . }. Lo que hace la diferencia es el vocabulario. Decimos
que un lenguaje de primer orden queda determinado por la elección del vocabulario.

Las expresiones del lenguaje se distinguen en dos categorías sintácticas:

1. Términos: están formados por combinaciones de variables, constantes y


funciones aplicadas recursivamente sobre términos.
El conjunto de términos Term(𝑉, 𝑉𝑎𝑟) queda definido por las siguientes reglas:

𝑡 ∷= 𝑥 donde 𝑥 ∈ 𝑉𝑎𝑟
| c 𝑐∈ 𝒦
| f 𝑘 (𝑡1, … , 𝑡𝑘 ) f𝑘 ∈ ℱ

Los “casos base” aquí son las variables y las constantes, mientras que el caso
recursivo es la formación de funciones. Los términos tienen como propósito denotar
individuos del universo.
Ejemplos de términos bien formados: f 1 (𝑥), f 1 (f 1 (𝑥)) , f 1 (g 2 (𝑥, f 1 (a)))

2. Fórmulas: están formadas por combinaciones de predicados aplicados sobre


términos, las combinaciones recursivas de conectivas lógicas ya consideradas en
LP y combinaciones recursivas de cuantificadores con fórmulas.
El conjunto de formulas Form(𝑉, 𝑉𝑎𝑟) queda definido por las siguientes reglas:

𝛼, 𝛽 ∷= P 𝑘 (𝑡1, … , 𝑡𝑘 ) donde P 𝑘 ∈ 𝒫 y 𝑡1 , … , 𝑡𝑘 ∈ Term(𝑉, 𝑉𝑎𝑟)


| (¬ α)
| (α o β) o ∈ {∧,∨, ⊃, ↔}
| (∀𝑥)α 𝑥 ∈ 𝑉𝑎𝑟
| (∃𝑥)α 𝑥 ∈ 𝑉𝑎𝑟

El “caso base” aquí es la formación de predicados, mientras que los demás casos son
recursivos. Sin embargo, notar que los predicados están formados por términos y
estos a su vez se forman recursivamente por las reglas dadas antes.

7
Las fórmulas tienen como propósito denotar valores de verdad. Estas son las
fórmulas propiamente dichas del lenguaje de LPO, están formadas por términos y no
al revés. Notar que los términos no pueden construirse a partir de fórmulas.
Ejemplos de fórmulas bien formadas: P1 (𝑥) , P1 (f 1 (𝑥)) , (∃𝑥)P1 (f 1 (𝑥))

A veces puede ser conveniente agrupar los cuantificadores en una sola regla de
manera similar a como hacemos con las conectivas binarias, por lo cual las últimas
dos reglas se pueden abreviar en una sola:

| (𝑄𝑥)α 𝑥 ∈ 𝑉𝑎𝑟 y 𝑄 ∈ { ∀, ∃ }

En otras presentaciones alternativas de LPO, se tiene como símbolo adicional del


lenguaje la igualdad, para lo cual debería haber también una regla que permite
formar ecuaciones entre términos:
| (𝑡1 = 𝑡2) 𝑡1, 𝑡2 ∈ Term(𝑉, 𝑉𝑎𝑟)

No vamos a trabajar bajo esta modalidad en este curso, esto complicaría nuestra
discusión posterior de sistemas deductivos. Pero de todas maneras, en cualquier
universo donde sea necesario hablar de igualdad, podemos reservar en el
vocabulario un símbolo de predicado binario para darle ese significado y esto
será suficiente para nuestros propósitos.

De aquí en adelante, otra simplificación notacional que haremos cuando sea posible es
omitir las aridades en los símbolos de predicado y función, ya que la aridad la podemos
deducir directamente de la cantidad de argumentos presentes. O sea, P1 (𝑥) lo escribimos
P(𝑥). Pero en el contexto de un mismo vocabulario, no tiene sentido usar P(𝑥) en un lado y
luego usar P(𝑥, 𝑦) en otro, todo símbolo debe ser usado de manera consistente con la
misma aridad.

8
Distinción: Primer Orden vs Segundo Orden
Se dice que las reglas dadas definen un lenguaje de primer orden, porque los
cuantificadores solo aplican sobre individuos del universo (las variables 𝑥, 𝑦, 𝑧, etc.). En un
lenguaje de segundo orden, sería posible también cuantificar sobre predicados, teniendo
que tener también variables para predicados además de las variables para individuos.

Por ejemplo, el axioma de inducción de la aritmética establece que si una propiedad se


cumple para el cero y además es preservada por el sucesor de cada número, entonces la
propiedad se cumple para cualquier número. Si este axioma se formaliza como:

P1 (a) ∧ (∀𝑥)(P1 (𝑥) ⊃ P1 (s(𝑥)) ⊃ (∀𝑥)P1 (𝑥)

Solo aplica para una propiedad expresada por el predicado unario P1. Pero hay infinitas
propiedades sobre números, las cuales podríamos expresar si además incluimos el resto de
los símbolos de predicados P2, P3, …, etc., lo que nos lleva a que en este lenguaje
deberíamos tener una versión del axioma disponible para cada símbolo:

P2 (a) ∧ (∀𝑥)(P2 (𝑥) ⊃ P2 (s(𝑥)) ⊃ (∀𝑥)P2 (𝑥)

P3 (a) ∧ (∀𝑥)(P3 (𝑥) ⊃ P3 (s(𝑥)) ⊃ (∀𝑥)P3 (𝑥)

… etc.

Por esto no hay una axiomatización finita para la aritmética en LPO. Lo mejor que podemos
hacer aquí expresar el axioma como un esquema de axioma que sea instanciado para cada
propiedad de interés, ocultando el hecho de que en realidad hay infinitos axiomas de
inducción.

Por otro lado, en un lenguaje de segundo orden podríamos escribir algo como:

(∀𝑃)(𝑃(a) ∧ (∀𝑥)(𝑃(𝑥) ⊃ 𝑃(s(𝑥)) ⊃ (∀𝑥)𝑃(𝑥))

donde 𝑃 es una variable de predicado (no un predicado específico del vocabulario), así
como 𝑥 es una variable de individuo. Con un solo axioma basta.

Si bien una lógica de segundo orden (LSO) provee aún mayor expresividad, esto siempre
tiene un precio. Se dejan de cumplir propiedades deseables. Por ejemplo, no existe para
LSO un sistema deductivo que sea Sólido y Completo. En este curso, por “lógica de
predicados” nos referimos siempre a LPO.

9
Árbol de sintaxis y precedencia
Los cuantificadores son como nuevas conectivas lógicas unarias. L es asignamos el
mismo nivel de precedencia que la negación.
Las reglas de precedencia de LPO en orden descendente:
(∀ 𝑥 ) (∃𝑥 ) ¬



Ejemplo.
• (∀𝑥 )P(𝑥 ) ∨ Q(𝑥 ) es (((∀𝑥)P(𝑥)) ∨ Q(𝑥)) de la misma manera en que ¬ α ∨ β es
((¬ α) ∨ β).
• (∀𝑥)(∀𝑥)P(𝑥) es ((∀𝑥)((∀𝑥)P(𝑥))) de la misma manera en que ¬¬α es (¬ (¬ α))

Teniendo en cuenta las reglas de precedencia, cada fórmula se puede representar


unívocamente como un árbol de sintaxis:

Sintaxis lineal concreta Árbol de sintaxis concreto


d

(∀𝑥) Q

P 𝑥
(∀𝑥 )P(f(𝑥, c)) ∨ Q(𝑥 )

𝑥 c

(∀𝑥)

(∀𝑥)(P(f(𝑥, y)) ∨ (∃𝑦)Q(𝑦)) P (∃𝑦)

f Q

𝑥 𝑦 𝑦

10
Cuantificación y ligadura de variables
Los cuantificadores ∀ y ∃ en LPO son operadores de ligadura, de manera similar al 𝜆 en el
calculo lambda o el ∑ en la aritmética. Estos operadores ligan una variable dentro de cierto
alcance, y se dice que esa variable no está libre en dicho alcance. Por otro lado, cualquier
variable no ligada por ningún cuantificador, se dice que está libre.

En general, para cualquier cuantificador 𝑄, en la fórmula (𝑄𝑥)α el alcance del


cuantificador 𝑄 sobre 𝑥 es toda la fórmula (𝑄𝑥)α, por lo cual 𝑥 no está libre en (𝑄𝑥)α.

Ejemplo.
• En (∀𝑥 )P(𝑥 ) ∨ Q(𝑥 ) la variable 𝑥 está libre, porque el alcance del universal es la
subfórmula (∀𝑥 )P(𝑥 ).
• En (∀𝑥)(P(𝑥) ∨ Q(𝑥)) la variable 𝑥 no está libre, porque el alcance del universal es
toda la fórmula.

El nombre de las variables ligadas no importa. Consideramos (∀𝑥 )P(𝑥 ) equivalente a


(∀𝑦)P(𝑦), una se puede convertir a la otra haciendo renombre de variable.

Vamos a escribir 𝐹𝑉(𝛼) para denotar el conjunto de las variables libres en 𝛼. Más adelante,
definimos 𝐹𝑉 por recursión.

Definición (Cerrada, Abierta, No libre en). Para cualquier fórmula 𝛼:


• 𝛼 es Cerrada si y solo si 𝐹𝑉(𝛼) = ∅
• 𝛼 es Abierta si y solo si 𝐹𝑉(𝛼) ≠ ∅
• 𝑥 no aparece libre en 𝛼 si y solo si 𝑥 ∉ 𝐹𝑉(𝛼)
Esto lo vamos a escribir 𝑥 ⋕ 𝛼

Ejemplo.
• La fórmula (∀𝑥 )P(𝑥 ) ∨ Q(𝑥 ) es abierta porque 𝐹𝑉((∀𝑥 )P(𝑥 ) ∨ Q(𝑥 )) = {𝑥}
• La fórmula (∀𝑥)(P(𝑥) ∨ Q(𝑥)) es cerrada porque 𝐹𝑉 ((∀𝑥)(P(𝑥) ∨ Q(𝑥))) = ∅
• 𝑥 ⋕ (∀𝑥 )P(𝑥 )
• 𝑥 ⋕ P(𝑦)

Observaciones sobre cuantificación y el nombre de las variables:

• En la fórmula (∀𝑥 )P(𝑥 ) ∨ Q(𝑥 ), la variable 𝑥 se esta usando de forma libre y ligada
dentro de la misma fórmula. Aunque no es incorrecto, para evitar confusión es
recomendable usar nombres diferentes. Como el nombre de las variables ligadas no
importa, podemos reescribirla en la forma equivalente (∀𝑦)P(𝑦) ∨ Q(𝑥 ).
• En la fórmula (∀𝑥)(P(𝑥) ⊃ (∃𝑥)Q(𝑥)), la sub-fórmula (∃𝑥)Q(𝑥) se encuentra
dentro del alcance del universal, pero este no tiene injerencia sobre la variable 𝑥
dentro de (∃𝑥)Q(𝑥) porque aquí 𝑥 está ligada por el existencial. Es decir, la misma

11
variable 𝑥 no denota necesariamente el mismo individuo dentro de la sub-fórmula
(∃𝑥)Q(𝑥) y fuera de ella. Aquí también puede ser conveniente reescribir la fórmula
en otra forma equivalente: (∀𝑥)(P(𝑥) ⊃ (∃𝑦)Q(𝑦)).

La sintaxis de LPO en Haskell


Para codificar en Haskell la sintaxis concreta de LPO que hemos presentado, primero
definimos tipos adecuados para representar los conceptos de símbolo, aridad, variable y
vocabulario:

type Ari = Int


type Sim = String
type Voc = ([Sim], [(Sim,Ari)], [(Sim,Ari)])
type Var = String

En realidad, hasta aquí no hemos definido ningún tipo nuevo, los tipos recién
introducidos se definieron como abreviaciones en términos de otros tipos de Haskell
más básicos que parecen convenientes para nuestro propósito.

Ahora podemos definir qué son los términos. Para esto definimos un nuevo tipo
inductivo siguiendo las reglas de sintaxis de LPO:

data Term = V Var


| C Sim
| F (Sim,Ari) [Term]

Luego definimos otro tipo inductivo para las fórmulas:

data Form = P (Sim,Ari) [Term]


| Neg Form
| BC Form C Form
| All Var Form
| Ex Var Form
donde

data C = And | Or | Imp | Iff

Entonces, la fórmula (∀𝑥)P(f(𝑥), a) en sintaxis abstracta es:

All "x" (P ("P", 2) [F ("f", 1) [V "x"], C "a"])

De manera similar a como omitimos la aridad en la sintaxis concreta, es posible


simplificar la definición anterior omitiendo el tipo Ari, ya que dado un predicado o
función podemos computar el largo de su lista de argumentos para saber la aridad.

12
Recursión en LPO

De manera similar a como ya hicimos en LP, presentamos esquemas de recursión para


definir funciones por recursión primitiva en LPO.

Siempre que sea posible y convenga, asumimos que en las reglas de sintaxis las
conectivas binarias están agrupadas en un solo caso y lo mismo para los
cuantificadores.

Recursión sobre términos


Estilo simil “fundamentos” Más informal, omitiendo constructores de
tipo y usando pattern matching

ℎ ∶ Term → 𝐵 ℎ ∶ Term → 𝐵
ℎ = 𝜆 𝑡 . case 𝑡 of ℎ(𝑥 ) =𝑏
𝑉𝑥→𝑏 (
ℎ 𝑐 ) = 𝑏′
𝐶 𝑐 → 𝑏′ ℎ(f 𝑘 𝑡𝑠) = … ℎ 𝑡𝑠 …
𝐹 f 𝑘 𝑡𝑠 → … ℎ 𝑡𝑠 …

donde 𝑏, 𝑏 ′ : 𝐵 donde 𝑏, 𝑏 ′ : 𝐵

Recursión sobre fórmulas

𝑔 ∶ Form → 𝐵 𝑔 ∶ Form → 𝐵
𝑔 = 𝜆 𝛼 . case 𝛼 of 𝑔(P 𝑘 𝑡𝑠) = … ℎ 𝑡𝑠 …
𝑃 P 𝑘 𝑡𝑠 → … ℎ 𝑡𝑠 … 𝑔 (¬ 𝛼 ) = … 𝑔 𝛼 …
¬𝛼 → … 𝑔𝛼… 𝑔(𝛼 𝑜 𝛽 ) = … 𝑔 𝛼 … 𝑔 𝛽 …
𝛼𝑜𝛽 → … 𝑔𝛼… 𝑔𝛽… 𝑔((𝑄𝑥)𝛼) = … 𝑔 𝛼 …
(𝑄𝑥 )𝛼 → … 𝑔 𝛼 …

Donde ℎ ∶ 𝑇𝑒𝑟𝑚 → 𝐵 Donde ℎ ∶ 𝑇𝑒𝑟𝑚 → 𝐵

La expresión … ℎ 𝑡𝑠 … representa la aplicación recursiva de la función ℎ sobre todos


los miembros de la lista ts (es decir ℎ 𝑡1 , ℎ 𝑡2 , … , ℎ 𝑡𝑘 ) y la combinación de todos los
resultados obtenidos.
Esto es necesario porque cada símbolo de predicado y función que aparece en una
fórmula (o término) tiene una cantidad arbitraria de argumentos, y la recursión en
general debe poder aplicarse sobre todos los argumentos.

13
Anteriormente dijimos que 𝐹𝑉(𝛼) denota el conjunto de las variables libres en 𝛼. 𝐹𝑉 es una
función que se define por recursión primitiva en 𝛼. Usando conceptos matemáticos
ordinarios podemos definir FV como:

𝐹𝑉 (P 𝑘 𝑡𝑠) = ⋃𝑘𝑖=1 𝑣𝑎𝑟𝑠(𝑡𝑖 )


𝐹𝑉 (¬ 𝛼) = 𝐹𝑉(𝛼)
𝐹𝑉 (𝛼 𝑜 𝛽 ) = 𝐹𝑉(𝛼) ∪ 𝐹𝑉(𝛽)
𝐹𝑉((𝑄𝑥)𝛼) = 𝐹𝑉 (𝛼) ∖ {𝑥}

donde 𝑣𝑎𝑟𝑠 realiza el resto de la recursión sobre los términos:

𝑣𝑎𝑟𝑠 (𝑥 ) = {𝑥}
𝑣𝑎𝑟𝑠(c) =∅
𝑣𝑎𝑟𝑠(f 𝑡𝑠) = ⋃𝑘𝑖=1 𝑣𝑎𝑟𝑠(𝑡𝑖 )
𝑘

Ejemplo:
𝐹𝑉((∃𝑥 )P (f (𝑥, a), 𝑦)) = 𝐹𝑉(P (f (𝑥, a), 𝑦)) ∖ {𝑥}
= (𝑣𝑎𝑟𝑠(f (𝑥, a)) ∪ 𝑣𝑎𝑟𝑠(𝑦)) ∖ {𝑥}
= ((𝑣𝑎𝑟𝑠(𝑥) ∪ 𝑣𝑎𝑟𝑠(a)) ∪ 𝑣𝑎𝑟𝑠(𝑦)) ∖ {𝑥}
= (({𝑥} ∪ ∅) ∪ {𝑦}) ∖ {𝑥 }
= {𝑥, 𝑦} ∖ {𝑥 }
= {𝑦}

Para trasladar la definición anterior en algo más cercano a Haskell es más conveniente
trabajar con listas, cuya notación ya forma parte del lenguaje. La unión de los conjuntos de
variables que aparecen en cada término lo expresamos como la concatenación de las listas
de variables que aparecen en cada término, o sea:
𝑣𝑎𝑟𝑠 𝑡1 ++ 𝑣𝑎𝑟𝑠 𝑡2 ++ … ++ 𝑣𝑎𝑟𝑠 𝑡𝑘

Para esto combinamos las funciones 𝑚𝑎𝑝 ∶ (𝑎 → 𝑏) → [𝑎] → [𝑏] y 𝑐𝑜𝑛𝑐𝑎𝑡 ∶ [[𝑎]] → [𝑎].
Adicionalmente hay que eliminar repetidos, ya que originalmente la idea original era
obtener un “conjunto” de variables.

𝐹𝑉 ∶ Form → [Var]
𝐹𝑉 (P 𝑘 𝑡𝑠) = 𝑛𝑢𝑏 (𝑐𝑜𝑛𝑐𝑎𝑡 (𝑚𝑎𝑝 𝑣𝑎𝑟𝑠 𝑡𝑠))
𝐹𝑉 (¬ 𝛼) = 𝐹𝑉 𝛼
𝐹𝑉 (𝛼 𝑜 𝛽 ) = 𝑛𝑢𝑏 (𝐹𝑉 𝛼 ++ 𝐹𝑉 𝛽)
𝐹𝑉((𝑄𝑥)𝛼) = 𝐹𝑉 𝛼 ∖∖ [𝑥]

𝑣𝑎𝑟𝑠 ∶ Term → [Var]


𝑣𝑎𝑟𝑠 (𝑥 ) = [𝑥]
𝑣𝑎𝑟𝑠(c) = []
𝑘
𝑣𝑎𝑟𝑠(f 𝑡𝑠) = 𝑛𝑢𝑏 (𝑐𝑜𝑛𝑐𝑎𝑡 (𝑚𝑎𝑝 𝑣𝑎𝑟𝑠 𝑡𝑠))

En Haskell, las funciones 𝑛𝑢𝑏 y \\ están definidas en el módulo Data.List.

14
Formalización de enunciados

Las expresiones cuantificadas pueden ser de la forma:


1. Todo A es B
2. Ningún A es B (o lo mismo: Todo A no es B)
3. Algún A es B
4. No todo A es B (o lo mismo: Algún A no es B)

Las clasificamos en universales o existenciales:

Clasificación Español En Matemática informal En LPO


Todo A es B ∀ 𝑥 ∈ 𝐴 ∶ 𝐵(𝑥) (∀ 𝑥)(A(𝑥) ⊃ B(𝑥))
Universal
Ningún A es B ∀ 𝑥 ∈ 𝐴 ∶ 𝑛𝑜 𝐵(𝑥) (∀ 𝑥)(A(𝑥) ⊃ ¬B(𝑥))
Algún A es B ∃ 𝑥 ∈ 𝐴 ∶ 𝐵(𝑥) (∃ 𝑥)(A(𝑥) ∧ B(𝑥))
Existencial
No todo A es B ∃ 𝑥 ∈ 𝐴 ∶ 𝑛𝑜 𝐵(𝑥) (∃ 𝑥)(A(𝑥) ∧ ¬B(𝑥))

Todo A es B Ningún A es B

Algún A es B No todo A es B

Observaciones:
• En la notación matemática habitual los conceptos son expresados en términos de
conjuntos. El “tipo” de los individuos se indica usando la relación de pertenencia ∈.
Pero el lenguaje de LPO no tiene un símbolo de pertenencia, la sintaxis no presupone
la noción de conjunto. En LPO es necesario indicar el tipo también como una
propiedad, ese es el rol del “A(𝑥)” en las fórmulas de la tabla anterior.
• Los enunciados universales son juicios hipotéticos, no presuponen la existencia de un
individuo. Es decir, si no hay ningún individuo con la propiedad, el enunciado es
verdadero vacuamente.
• Los enunciados existenciales afirman la existencia de un individuo con la propiedad.
• Por los puntos anteriores, las expresiones universales hacen uso del ⊃, mientras que
las expresiones existenciales hacen uso del ∧.

15
Ejemplo.

• Todas las personas son aburridas


Se debe entender como: “Dado un x, si x es una persona entonces x es aburrida.”
Se formaliza como: (∀ 𝑥)(P(𝑥) ⊃ A(𝑥)) donde interpretamos el símbolo P1 como
el predicado “_ es persona” y el símbolo A1 como el predicado “_ es aburrido”.
La fórmula será verdadera en cualquier universo donde todas las personas sean
aburridas, y será falsa en cualquier universo donde haya al menos una persona que
no sea aburrida.
Notar que no estaría bien formalizar el enunciado como (∀ 𝑥)(P(𝑥) ∧ A(𝑥)), porque
estaríamos diciendo algo más fuerte: todo es una persona y todo es aburrido. Luego,
en un universo donde todas las personas son aburridas pero hay algo que no es
persona, la fórmula sería falsa, lo cual no es coherente con lo que esperamos del
enunciado original donde solo se habla de personas.
• Algunas personas son aburridas
Se debe entender como: “Hay al menos un 𝑥 tal que x es una persona y 𝑥 es
aburrido.”
Se formaliza como: (∃ 𝑥)(P(𝑥) ∧ A(𝑥)), asumiendo el mismo vocabulario e
interpretación del ejemplo anterior.
La fórmula será verdadera en cualquier universo donde haya al menos una persona
aburrida, y será falsa en cualquier universo donde todas las personas no sean
aburridas (o en cualquier universo sin personas).
Notar que no estaría bien formalizar el enunciado como (∃ 𝑥)(P(𝑥) ⊃ A(𝑥)), porque
estaríamos diciendo algo más débil: existe un individuo tal que si es una persona
entonces es aburrido. Luego, en cualquier universo sin personas, la fórmula sería
trivialmente verdadera, perdiendo el carácter de afirmación existencial que
esperamos del enunciado original.

Si quisiéramos limitarnos a considerar universos que consisten únicamente en personas,


entonces en los dos ejemplos anteriores el símbolo P1 es redundante, porque P(𝑥) es
verdadero para cualquier 𝑥 y las fórmulas se pueden simplificar:

(∀ 𝑥)(P(𝑥) ⊃ A(𝑥)) ≈ (∀ 𝑥)A(𝑥)

(∃ 𝑥)(P(𝑥) ∧ A(𝑥)) ≈ (∃ 𝑥)A(𝑥)

16
Suponiendo que el universo es finito y que conocemos explícitamente que consiste en los
individuos 𝑑1 , 𝑑2 …, 𝑑𝑛 , entonces el universal es precisamente equivalente a una
conjuntoria y el existencial es precisamente equivalente a una disyuntoria:

(∀ 𝑥 )𝛼 ≈ 𝛼[𝑥 ≔ 𝑑1 ] ∧ … ∧ 𝛼[𝑥 ≔ 𝑑𝑛 ]

(∃ 𝑥 )𝛼 ≈ 𝛼[𝑥 ≔ 𝑑1 ] ∨ … ∨ 𝛼[𝑥 ≔ 𝑑𝑛 ]

Cuando el universo no es finito o no lo conocemos explícitamente, las equivalencias


anteriores no son técnicamente precisas (notar que nosotros no admitimos fórmulas ni
deducciones infinitas), pero aun así nos sirven para pensar intuitivamente en el universal y
existencial como formas de conjunción y disyunción.

De todas maneras, sin importar si el universo es finito o no, tenemos una forma más general
para las leyes de De Morgan ya vistas en LP:

En LP y LPO En LPO

¬(𝛼 ∧ 𝛽 ) ≈ ¬ 𝛼 ∨ ¬𝛽 ¬(∀ 𝑥 )𝛼 ≈ (∃ 𝑥 )¬ 𝛼
¬(𝛼 ∨ 𝛽 ) ≈ ¬ 𝛼 ∧ ¬𝛽 ¬(∃ 𝑥 )𝛼 ≈ (∀ 𝑥 )¬ 𝛼

Con las cuales es fácil justificar que tener dos cuantificadores no es necesario porque
cualquiera de los dos se puede definir en términos del otro y haciendo uso de la negación:

(∀ 𝑥 ) 𝛼 ≈ ¬(∃ 𝑥 )¬ 𝛼
(∃ 𝑥 ) 𝛼 ≈ ¬(∀ 𝑥 )¬ 𝛼

17
Consideremos nuevamente el ejemplo de razonamiento usado como motivación inicial:

Ninguno de los amigos de David apoya personas radicales.


Alicia apoya a Juan y Juan es radical.
Por lo tanto, Alicia no es amiga de David.

Definimos un vocabulario formado por los símbolos de constante {a, d, j} y los símbolos de
predicado {R1 , A2 , P 2 }, los cuales interpretamos como:
• a = Alicia
• d = David
• j = Juan
• R1 = “_ es radical”
• A2 = “_ es amigo de _”
• P 2 = “_ apoya a_”

Asumiendo un universo de personas, el razonamiento formal es:

(∀ 𝑥)(A(𝑥, d) ⊃ ¬(∃𝑦)(P(𝑥, 𝑦) ∧ R(𝑦)))


P(a, j) ∧ R(j)
∴ ¬A(a, d)

Luego estudiaremos métodos semánticos y deductivos para determinar la validez de


razonamientos. Pero ahora mismo nos vamos a conformar con el siguiente argumento
informal:

Supongamos por el contrario que A(a, d).


Por la premisa 1, si A(a, d) entonces ¬(∃𝑦)(P(a, 𝑦) ∧ R(𝑦)).
Por la premisa 2, el individuo j es testigo de que se cumple (∃𝑦)(P(a, 𝑦) ∧ R(𝑦)).
Pero esto es una contradicción, por lo tanto debe ser ¬A(a, d).

Ahora sabemos que Alicia no es amiga de David. Pero vale preguntarse, ¿también es cierto
que David no es amigo de Alicia?. No hemos supuesto que la amistad sea una relación
bilateral (o sea, simétrica), por lo que no hay necesidad de que eso sea cierto.
Para modelar la relación de amistad como una relación bilateral tendríamos que agregar a
nuestras premisas: (∀ 𝑥)(∀ 𝑦)(A(𝑥, 𝑦) ↔ A(𝑦, 𝑥))

18

También podría gustarte