Uploaded by ricard Oliva Iglesias

logica de predicats

advertisement
Lògica 
de predicats
PID_00265955
Enric Sesa i Nogueras
Temps mínim de dedicació recomanat: 8 hores
© FUOC • PID_00265955
Enric Sesa i Nogueras
Llicenciat en Informàtica 
per la Universitat Politècnica 
de Catalunya. Actualment 
és professor i director del
Departament d’Informàtica
i Gestió de l’Escola Universitària
Politècnica de Mataró, on 
també ha estat director del Servei
Informàtic i Telemàtic. Ha impartit
assignatures de lògica a la Facultat
d’Informàtica de la Universitat
Politècnica de Catalunya, a l’Escola
Universitària Politècnica de Mataró i
a la UOC.
La revisió d’aquest recurs d’aprenentatge UOC ha estat coordinada 
per la professora: M. Antònia Huertas Sánchez (2019)
Segona edició: setembre 2019
Enric Sesa i Nogueras
Tots els drets reservats
d’aquesta edició, FUOC, 2019
Av. Tibidabo, 39-43, 08035 Barcelona
Realització editorial: FUOC
Cap part d’aquesta publicació, incloent-hi el disseny general i de la coberta, no pot ser copiada, 
reproduïda, emmagatzemada o transmesa de cap manera ni per cap mitjà, tant si és elèctric, 
com químic, mecànic, òptic, de gravació, de fotocòpia, o per altres mètodes, sense l’autorització
prèvia per escrit dels titulars dels drets.
Lògica de predicats
© FUOC • PID_00265955
Lògica de predicats
Índex
Introducció ............................................................................................
5
Objectius .................................................................................................
6
1. La lògica de predicats i el seu llenguatge .................................
7
1.1. La capacitat expressiva del llenguatge d’enunciats és limitada ...
7
1.2. El llenguatge de la lògica de predicats ..........................................
7
1.2.1. Predicats, variables i constants ..........................................
7
1.2.2. Quantificadors ...................................................................
9
1.2.3. Fórmules ............................................................................
10
1.2.4. Àmbit dels quantificadors .................................................
11
1.2.5. El significat dels quantificadors ........................................
12
1.3. La formalització ............................................................................
12
1.3.1. Com formalitzar ................................................................
12
1.3.2. Formalització de frases amb significat existencial 
o universal .........................................................................
14
1.3.3. Formalització de frases complexes ....................................
18
2. La deducció natural .......................................................................
24
2.1. Regles ............................................................................................
24
2.1.1. Eliminació i introducció de quantificadors ......................
24
2.1.2. Restriccions addicionals ....................................................
29
2.2. Exemples .......................................................................................
31
2.3. Regles derivades i equivalències deductives .................................
31
3. Veritat i falsedat en la lògica de predicats ..............................
34
3.1. El concepte d’interpretació en la lògica de predicats ...................
34
3.2. Pas de fórmules a enunciats .........................................................
35
3.3. Refutació de raonaments ..............................................................
37
4. Formes normals ...............................................................................
40
4.1. Forma normal de Skolem .............................................................
40
4.2. Eliminació de quantificadors existencials: eskolemització ..........
41
5. Resolució ...........................................................................................
44
5.1. Les novetats: forma normal de Skolem i substitucions ................
44
5.2. Substituir variables per termes ......................................................
44
5.2.1. Exemple comentat ............................................................
44
5.2.2. Qui substitueix qui i com ho fa ........................................
46
5.3. Més exemples ................................................................................
46
5.4. Automatització del càlcul de substitucions: 
l’algoritme d’unificació ................................................................
50
© FUOC • PID_00265955
Lògica de predicats
6. La programació lògica ...................................................................
55
6.1. Què és la programació lògica? ......................................................
55
6.2. La lògica de predicats “implementada”: Prolog ...........................
55
6.2.1. Elements bàsics: clàusules i regles .....................................
55
6.2.2. La validació de raonaments entra en joc: consultes .........
58
6.2.3. Prolog implementa el mètode de resolució ......................
60
Resum ......................................................................................................
64
Exercicis d’autoavaluació ..................................................................
65
Solucionari .............................................................................................
71
Glossari ...................................................................................................
94
Bibliografia ............................................................................................
95
© FUOC • PID_00265955
5
Introducció
Tot sistema formal té les seves limitacions. La lògica d’enunciats no n’és una
excepció. La seva simplicitat té una recompensa: és un vehicle ideal per a
transmetre els conceptes bàsics sobre els quals es construeix l’edifici d’aquesta
disciplina, però també té un preu: és excessivament simple per a poder ser una
veritable eina de treball.
No cal amoïnar-s’hi, perquè una vegada endinsats en el món de la lògica, per
mitjà dels enunciats i del seu llenguatge, de la deducció natural i les seves regles, de les taules de veritat i del mètode de resolució, és el moment de fer-hi
una capbussada més profunda: la lògica de predicats.
En aquest mòdul didàctic entrareu en el món de la lògica de predicats i coneixereu el llenguatge que n’és propi: el llenguatge de les fórmules. Amb
aquest llenguatge aprendreu a formalitzar raonaments que eren fora del modest abast del llenguatge d’enunciats. Veureu que molts dels aspectes de què
es tractarà no us són gens aliens: caldrà validar raonaments, utilitzant una versió ampliada de la deducció natural coneguda; refutar-los trobant contraexemples; calcular formes normals, i, és clar, estudiar el mètode que permet
mecanitzar la tasca de validació: la resolució.
Observareu que aquest mòdul té un paral·lelisme estret amb l’anterior. I això
és així perquè l’objectiu és el mateix –formalitzar i validar raonaments–,
però el llenguatge és més expressiu, és a dir, més potent. L’increment d’expressivitat comporta la necessitat d’adaptar-hi les eines conegudes.
Al final, veureu un dels punts on la lògica i la informàtica conflueixen, la programació lògica i el seu llenguatge per excel·lència: Prolog.
Repetim el mateix consell que us vam donar al mòdul didàctic anterior: llegiu,
enteneu i proveu de refer els molts exemples que hi ha.
Lògica de predicats
© FUOC • PID_00265955
6
Objectius
En els materials didàctics facilitats en aquest mòdul, trobareu les eines necessàries per a assolir, després de l’estudi i l’assimilació, els objectius que s’enumeren a continuació:
1. Adonar-se de la limitació expressiva del llenguatge d’enunciats i de l’increment en expressivitat que aporta el llenguatge de fórmules.
2. Saber expressar en el llenguatge de la lògica de predicats aquells raonaments expressats en llenguatge natural que són susceptibles de ser formalitzats.
3. Conèixer les regles d’inferència de la deducció natural que manipulen
quantificadors, i adonar-se tant de les seves possibilitats com de les seves
limitacions. Recolzar la comprensió dels quantificadors i del seu paper en
el coneixement d’aquestes regles.
4. Poder donar contraexemples que expliquin, encara que d’una manera limitada, la raó per la qual un raonament no és formalment correcte.
5. Manipular algebraicament les fórmules per a expressar-les en la forma normal de Skolem.
6. Conèixer el mètode de resolució i aplicar-lo amb desimboltura per a validar
raonaments expressats en el llenguatge de fórmules.
7. Tenir un primer contacte amb una de les aplicacions de la lògica de predicats, i en concret de la mecanització del mètode de resolució en el món de
la informàtica: la programació lògica.
Lògica de predicats
7
© FUOC • PID_00265955
Lògica de predicats
1. La lògica de predicats i el seu llenguatge
1.1. La capacitat expressiva del llenguatge d’enunciats és limitada
La capacitat expressiva del llenguatge d’enunciats és força limitada: no qualsevol frase declarativa simple es pot formalitzar convenientment. Aquest fet té
com a conseqüència que un gran nombre de raonaments que es poden expressar utilitzant el llenguatge natural no es puguin validar fent servir les eines de
la lògica d’enunciats.
Exemple de les limitacions de la lògica d’enunciats
A continuació presentem un exemple força revelador de les mancances de la lògica
d’enunciats i del seu llenguatge. Imaginem el raonament (correcte) següent: “Els estudiants són persones. En Joan és un estudiant. Així, doncs, en Joan és una persona.”
• La formalització (correcta) seria la següent: si assignem P a “els estudiants són persones”, Q a “en Joan és un estudiant” i R a “en Joan és una persona”, llavors tenim que:
P, Q  R,
no permet validar el raonament.
• Una altra formalització (que també es pot considerar correcta) és: si assignem P a “ser
estudiant”, Q a “ser persona”, R a “en Joan és un estudiant” i S a “en Joan és una persona”, llavors observem que:
P  Q, R  S,
tampoc no permet validar el raonament.
La lògica de predicats és una ampliació de la lògica d’enunciats que
compta amb un llenguatge formal més ric (més expressiu) i amb un
conjunt de regles que permeten validar raonaments expressats utilitzant aquest llenguatge. La lògica d’enunciats s’ha d’entendre, a partir
d’aquest moment, com un subconjunt de la lògica de predicats.
1.2. El llenguatge de la lògica de predicats
1.2.1. Predicats, variables i constants
Un predicat és una aplicació definida en un domini que pren valors en el
conjunt d’enunciats. Formalment s’expressa de la manera següent:
P(x): D  enunciats.
Representarem un predicat utilitzant una lletra majúscula de l’alfabet llatí,
amb els paràmetres, preferentment representats per lletres minúscules del
mateix alfabet a partir de x, entre parèntesis i separats per comes.
Informalment, un predicat és
un enunciat parametritzat
amb variables).
© FUOC • PID_00265955
8
Lògica de predicats
Per exemple, el predicat P(x) podria ser la formalització de “x és un estudiant”.
Noteu que el predicat P(x) no és un enunciat. P(x) es pot convertir en un enunciat substituint la variable x (el paràmetre) per algun element del seu domini.
Si el domini de x és el conjunt de les persones, llavors P(Joan) sí que és un
enunciat (i es correspon amb “en Joan és un estudiant”).
Per regla general no es parla de paràmetres, sinó de variables. Així ho farem a
partir d’aquest moment.
Un predicat pot tenir qualsevol nombre (n  0) de variables. Segons
aquest nombre, els predicats es classifiquen de la manera següent:
1) Els predicats amb n = 0 variables són els enunciats.
2) Els predicats amb n = 1 variables s’anomenen propietats o predicats
unaris.
3) Els predicats amb n = 2 variables s’anomenen relacions o predicats
binaris.
4) A partir de n = 3 no hi ha noms específics. Un predicat amb tres variables es pot anomenar relació ternària; un amb quatre, relació quaternària, etc.
Exemples de predicats amb diferent nombre de variables
a) Exemples de propietats o predicats unaris:
• P(x): “x és una persona”.
• Q(x): “x és de color vermell”.
b)Exemples de relacions o predicats binaris:
• P(x,y): “x menja y”.
• Q(x,y): “el quadrat de x és y”.
c) Exemples de relacions ternàries:
• R(x,y,z): “x saluda y al carrer z”.
• S(x,y,z): “la suma de x i de y és z”.
El domini d’una variable és tot el conjunt d’objectes que la poden
substituir.
En referència al domini d’una variable, heu de tenir present els aspectes següents:
1) Tot domini se suposa no buit (és a dir, diferent de ).
Exemple
La funció ƒ(x) = x2 + 1, amb x
en el domini dels nombres reals, no és un nombre. Però 
ƒ(x) pot convertir-se en un
nombre real substituint x per
algun element del seu domini.
Així, ƒ(3) = 10 sí que és un
nombre real.
9
© FUOC • PID_00265955
Lògica de predicats
2) Els predicats no poden ser elements de cap domini. Així, doncs, cap variable no pot ser substituïda per cap predicat.
Una constant és la representació d’un element d’un domini.
Les constants són representades per lletres minúscules de l’alfabet llatí.
Es trien, preferentment, a partir de la lletra a, per a evitar confusions
amb les lletres que representen les variables.
Quan totes les variables d’un predicat són substituïdes per constants, llavors
aquest es converteix en un enunciat. Així:
a) P(x,y,z) és un predicat, però no un enunciat.
b) P(a,b,c) i P(a,a,d) són enunciats.
c) P(a,y,z) i P(x,e,a) són una relació i una propietat, respectivament.
Les variables i les constants s’anomenen termes quan la distinció no és
important.
1.2.2. Quantificadors
Els quantificadors són els dos operadors que el llenguatge de la lògica de predicats afegeix a les connectives, ja conegudes, del llenguatge d’enunciats. Els dos operadors específics del llenguatge de la
lògica de predicats es corresponen, aproximadament, amb aquelles
construccions del llenguatge natural que tenen un significat de ‘tot
els.../totes les...’ i d’‘algun(s)/alguna(es)...’. Es representen amb els
símbols  i , respectivament. Són unaris, tenen prioritat màxima i
afecten les variables.
A continuació, presentem la taula resum dels quantificadors:
Quantificadors
Símbol
Nom
Significat
Correspondència
(aproximadament)

Quantificador
universal
‘(per) tot’
tots els...
totes les...
cada...

Quantificador
existencial
‘existeix (algun)’
hi ha un...
existeix un...
algun(s)...
Recordeu que les connectives es tracte
en el subapartat 1.3 del mòdul “Lògica
d’enunciats”.
© FUOC • PID_00265955
10
Lògica de predicats
Exemples amb quantificadors
Si P(x) vol dir “x és un estudiant”, llavors:
• x P(x) significa ‘hi ha estudiants’, ‘existeixen estudiants’, ‘alguns són estudiants’, ‘algú
és un estudiant’, etc.
• x P(x) significa ‘tots són estudiants’, ‘tothom és estudiant’, etc.
1.2.3. Fórmules
El llenguatge de la lògica de predicats s’anomena llenguatge de fórmules.
Aquest llenguatge utilitza com a alfabet les quatre connectives del
llenguatge d’enunciats, els dos quantificadors, els símbols de predicats, els símbols de constants, els símbols de variables i els parèntesis
d’obertura i de tancament.
Alfabet = , , , , , , P, Q, R, ..., a, b, c, ..., x, y, z, (,).


Constants
Variables

Termes
Les regles següents defineixen com cal construir, correctament, fórmules a
partir dels elements bàsics:
1) Si P és un símbol de predicat i t1, ..., tn (n  0) són símbols de termes, llavors
P(t1, ..., tn) és una fórmula. Aquestes fórmules també s’anomenen àtoms o fórmules atòmiques.
2) Si A i B són fórmules, llavors (A), (A B), (A B) i (A  B) també són fórmules.
3) Si A és una fórmula i x és una variable, llavors (x A) i (x A) també són
fórmules.
4) Tret dels casos exposats anteriorment, res més no és una fórmula.
Observeu a partir de l’alfabet i de les regles de construcció, que el llenguatge
d’enunciats és un subconjunt del llenguatge de fórmules.
En el llenguatge de fórmules s’utilitzen les mateixes convencions que en el
llenguatge d’enunciats per a fer la notació menys feixuga. Els quantificadors
tenen la mateixa prioritat, que és màxima (per sobre de ). En alguns casos, i
per a millorar la llegibilitat, utilitzarem els claudàtors ‘[’ i ‘]’ i les claus ‘{’ i ‘}’.
Vegeu les convencions utilitzades 
per a construir enunciats en el subapartat
1.4 del mòdul “Lògica d’enunciats”.
11
© FUOC • PID_00265955
Lògica de predicats
1.2.4. Àmbit dels quantificadors
S’anomena àmbit d’un quantificador aquella zona d’una fórmula que
està dins el seu camp d’acció, és a dir, sota els seus efectes.
Les variables que estan afectades per l’acció d’algun quantificador s’anomenen variables lligades. Les no afectades per cap quantificador s’anomenen
variables lliures.
Les fórmules sense cap variable lliure s’anomenen fórmules tancades. Les
que tenen alguna variable lliure, fórmules obertes.
Exemple de variables lliures i de variables lligades
Mostrem un exemple de variables lliures i de variables que estan sota la influència d’algun quantificador:
x [P(x)  x Q(x, z)  y R(x, y)]  Q(z, x)*.
Variable lliure
Variables lliures
Variables lliures
Variables lligades
Quan dues variables estan designades pel mateix símbol (mateixa lletra)
diem que:
1) Són la mateixa variable si estan sota l’abast del mateix quantificador, o si
totes dues són lliures.
2) Són variables diferents si estan sota l’abast de quantificadors diferents, o si
una és lliure i l’altra no.
Exposem alguns exemples de variables diferents i de variables que són la mateixa en el gràfic següent:
x [P(x)  x Q(x, z)  y R(x, y)]  Q(z, x).
Mateixa variable
Variables diferents
* Noteu que la parentització té
efectes sobre l’àmbit
dels quantificadors.
© FUOC • PID_00265955
12
Lògica de predicats
Evitareu confusions innecessàries donant noms diferents a variables diferents.
Així, l’exemple que acabem de veure també es podria haver escrit de la manera
següent: u [P(u)  tQ(t,z)  yR(u,y)]  Q(z,x)
1.2.5. El significat dels quantificadors
Quan totes les variables que apareixen en una fórmula estan quantificades, llavors la fórmula és un enunciat. Els quantificadors representen
la substitució de les variables quantificades per elements del domini.
Quan el domini de les variables és finit, es pot entendre la quantificació universal com una forma abreujada de la conjunció, i la quantificació existencial com una forma abreujada de la disjunció.
Exemple de substitució de quantificadors per connectives
Si el domini de la variable x és el conjunt { 1, 2, 3, 4 }, llavors:
• La fórmula x P(x) es pot entendre com P(1) P(2) P(3) P(4).
• La fórmula x P(x) es pot entendre com P(1) P(2) P(3) P(4).
Si el domini té cardinalitat infinita, aquestes substitucions no es poden fer.
Fins i tot en el cas de dominis de cardinalitat finita les substitucions de les variables per totes les constants no es porta mai a la pràctica. Es tracta, més que
res, d’una forma d’entendre el significat dels quantificadors.
1.3. La formalització
1.3.1. Com formalitzar
La formalització de frases i/o de raonaments en el llenguatge de la lògica de
predicats és una activitat semblant a la que es fa quan s’empra el llenguatge
de la lògica d’enunciats.
De manera general, els passos que caldrà seguir són els següents:
1) Determinar el domini. S’entendrà per domini el conjunt de tots els objectes dels quals es parlarà. Els predicats seran uns o d’altres segons quin sigui
el domini. Per a determinar el domini, caldrà respondre la pregunta “de què
es parla?”. Quan no és fàcil respondre aquesta pregunta o el domini no admet
una definició simple, es pot dir que el domini és un conjunt qualsevol no buit.
2) Determinar els predicats atòmics. En aquest cas, caldrà preguntar-se:
• Quins subconjunts es consideren dins del domini (que no es vulgui o no
calgui definir en termes de subconjunts més simples)?
El domini
A efectes pràctics, dir que 
el domini és un conjunt qualsevol no buit és el mateix que dir
que qualsevol objecte imaginable pertany o pot pertànyer 
al domini.
© FUOC • PID_00265955
13
Lògica de predicats
• Què es diu dels objectes del domini?, quines en són les propietats?, com es
relacionen entre si?
3) Determinar si hi ha elements concrets del domini que són identificables
de la resta. A cadascun li correspondrà una constant.
4) Formalitzar cada frase simple en termes dels predicats atòmics i les constants identificades en els dos punts anteriors. El resultat ha de ser una fórmula
sense variables lliures per cada frase. Per a decidir la quantificació escaient per
a cada fórmula es pararà atenció al sentit general (quantificació universal: )
o particular (quantificador existencial: ) de la frase.
Fórmules amb variables
lliures
Si una fórmula que formalitza
una frase conté variables lliures, segur que no és correcta!
A continuació proposem alguns exemples de formalització.
Atenció
Exemple 1
“Els bolets són apreciats pel seu sabor. Tot allò que és apreciat pel seu sabor
o per les seves propietats curatives és car. Els rovellons són bolets. Així,
doncs, els rovellons són cars.”
Com a domini per a formalitzar aquest raonament es considerarà un conjunt
no buit qualsevol perquè la pregunta “de què es parla?” no es pot respondre
de manera precisa (es parla de bolets, de rovellons, de coses apreciades pel seu
sabor, de coses apreciades per les seves propietats curatives i de coses cares. El
màxim que podríem precisar seria una cosa com ara: “el conjunt de totes
aquestes coses”).
S’assigna els significats següents a predicats atòmics: B(x): “x és un bolet”; S(x): “x
és apreciat pel seu sabor”; P(x): “x és apreciat per les seves propietats curatives”;
R(x): “x és un rovelló”; C(x): “x és car”.
La formalització del raonament seria:
x (B(x)  S(x)), x (S(x)  P(x)  C(x)), x (R(x)  B(x))  x (R(x)  C(x))
Exemple 2
“Hi ha persones honrades i hi ha persones assenyades. Les persones honrades sempre són assenyades. Podem concloure que hi ha persones que són
honrades i assenyades.”
En aquest raonament només es fa referència a persones, per la qual cosa podem decidir que el domini serà un conjunt de persones no buit (o el conjunt
de totes les persones). Com a predicats atòmics s’utilitzarà: H(x): “x es honrat
i A(x): “x és assenyat”. Observeu que, atès que el domini només conté perso-
Pareu atenció a l’elecció 
del domini i a la tria de predicats atòmics en aquests exemples. Potser de moment us
costarà una mica d’entendre
les formalitzacions, però no us
hi amoïneu, que ja les entendreu més endavant.
© FUOC • PID_00265955
14
nes, això és exactament el mateix que H(x): “x és una persona honrada” i A(x): “x
és una persona assenyada”.
La formalització del raonament és:
x H(x)  y A(y), x (H(x)  A(x))  x (H(x)  A(x))
Fixeu-vos que la primera premissa és la conjunció de dues fórmules quantificades.
Si el domini triat hagués estat un conjunt no buit qualsevol, llavors s’hauria
pogut fer l’assignació de significat a predicats atòmics següent: P(x): “x és una
persona”; H(x): “x és honrat”; A(x): “x és assenyat”; i la formalització seria:
x (P(x)  H(x))  y (P(y)  A(y)), x (P(x)  H(x)  A(x))  x (P(x)  H(x)  A(x))
Exemple 3
“Els que estan tristos rendeixen per sota de les seves possibilitats. N’hi ha
que no estan tristos i que tenen dificultats. El Llampec no està trist, però
rendeix per sota de les seves possibilitats. Llavors és que el Llampec té dificultats.”
Com a domini, considerarem un conjunt qualsevol no buit, que conté un
element singular (el Llampec). Allò que el fa singular és que hom s’hi refereix pel nom.
Assignarem els significats als predicats atòmics següents: T(x): “x està trist”;
R(x): “x rendeix per sota de les seves possibilitats”; D(x): “x té dificultats”.
Per a designar al Llampec s’utilitzarà una constant, a: “el Llampec”.
La formalització del raonament serà:
x (T(x)  R(x)), x (T(x)  D(x)), T(a)  R(a)  D(a)
1.3.2. Formalització de frases amb significat existencial 
o universal
Les frases de la forma “hi ha...”, “n’hi ha que...”, “alguns...” tenen un sentit
existencial. Això, en el context de la lògica de predicats, vol dir que es refereixen a alguns elements d’un subconjunt del domini.
Les frases de la forma “tots els...”, “els...”, “tothom que...” tenen un sentit universal. En el context de la lògica de predicats, això significa que es refereixen
a tots els elements d’un subconjunt del domini.
Lògica de predicats
15
© FUOC • PID_00265955
Lògica de predicats
Per a formalitzar frases amb qualsevol d’aquests dos significats, és útil fer-se les
preguntes següents:
1) A quin subconjunt del domini es fa referència? Aquest subconjunt s’anomenarà selecció.
2) Què es diu d’aquest subconjunt del domini?, quina o quines propietats tenen els seus elements? Anomenarem això propietats de la selecció.
Les frases amb sentit existencial es formalitzen segons el patró següent:
x (Selecció(x)  Propietats_de_la_selecció(x))
Observació
Les frases amb sentit universal es formalitzen segons el patró següent:
x (Selecció(x)  Propietats_de_la_selecció(x))
Si amb P(x): “x és un programa”; A(x): “x és antic”; V(x): “x té un valor considerable”; C(x): “El manteniment de x és complicat”, formalitzem les frases “Alguns programes antics tenen un valor considerable però el seu manteniment
és complicat” i “Tots els programes antics tenen un valor considerable però el
seu manteniment és complicat” obtindrem, respectivament:
x (P(x)  A(x)  V(x)  C(x))
 
 
Selecció
Propietats de la selecció
x (P(x)  A(x)  V(x)  C(x))
Selecció
Propietats de la selecció
A continuació presentem alguns exemples de formalització.
Exemple 1
Formalitzar la frase “Hi ha programes correctes que no satisfan l’usuari” amb
P(x): “x és un programa”; C(x): “x és correcte”; S(x): “x satisfà l’usuari”.
• Sentit: existencial.
• Selecció: la frase fa referència a aquells elements del domini que són simultàniament “programes” i “correctes”.
• Propietats de la selecció: dels elements seleccionats (d’alguns) diu que no
satisfan l’usuari:
x (P(x)  C(x)  S(x))
Adoneu-vos que en la formalització d’una frase amb sentit
existencial, les dues parts 
–selecció i propietats d’aquesta– s’uneixen amb una conjunció, mentre que si el sentit 
és universal, ho fan amb una
implicació.
16
© FUOC • PID_00265955
Exemple 2
Formalitzar la frase “Tots els directius importants porten corbata” amb D(x): “x és
un directiu”; I(x): “x és important”; C(x): “x porta corbata”.
• Sentit: universal.
• Selecció: elements del domini que són alhora “directius” i “importants”.
• Propietats de la selecció: els elements seleccionats porten corbata:
x (D(x)  I(x)  C(x))
Exemple 3
Formalitzar “Els ordinadors vells i els que no han estat actualitzats, ni funcionen correctament ni es poden mantenir” amb O(x): “x és un ordinador”; V(x):
“x és vell”; A(x): “x ha estat actualitzat”; “F(x): “x funciona correctament”;
M(x): x es pot mantenir”.
• Sentit: universal.
• Selecció: elements del domini que són ordinadors vells o que són ordinadors que no han estat actualitzats.
• Propietats de la selecció: els elements seleccionats no funcionen correctament i no es poden mantenir:
x (O(x)  (V(x)  A(x))  F(x)  M(x))
Exemple 4
Formalitzar la frase “Alguns navegants es maregen quan s’apropen a port”
amb N(x): “x és un navegant”; P(x): “x s’apropa a port”; M(x): “x es mareja”.
• Sentit: existencial.
• Selecció: elements del domini que són navegants.
• Propietats de la selecció: els elements seleccionats (alguns) es maregen
quan s’apropen a port:
x (N(x)  (P(x)  M(x)))


Selecció
Propietats de la selecció
Lògica de predicats
17
© FUOC • PID_00265955
Lògica de predicats
Exemple 5
Formalitzar “Tot és gris i d’aspecte descuidat” amb G(x): “x és gris” i D(x): “x
té l’aspecte descuidat”.
• Sentit: universal.
• Selecció: tot el domini (no es concreta de què es parla).
• Propietats de la selecció: tots els elements seleccionats (tot el domini) són
grisos i d’aspecte descuidat:
x (G(x)  D(x))

Propietats de la selecció
Exemple 6
Formalitzar “N’hi ha que volen” amb V(x): “x vola”.
• Sentit: existencial.
• Selecció: tot el domini (no es concreta de què es parla).
• Propietats de la selecció: d’entre els elements seleccionats (tot el domini)
Observació
n’hi ha que volen
x V(x)
Propietats de la selecció
Matisos de significat
Fixeu-vos en el significat de les fórmules següents (P(x): “x és un programa”; C(x): “x és
car”):
• x (P(x)  C(x)): “Els programes (tots, en general) són cars”. No s’afirma l’existència
de res que sigui un programa, ni de res que sigui car.
• x (P(x)  C(x)): “Tot són programes i tot és car (tot són programes cars)”. S’afirma que
en el domini no hi ha altra cosa que programes cars. No és equivalent a l’anterior. És
equivalent a x P(x)  x C(x).
• x (P(x)  C(x)): “Hi ha programes cars”. S’afirma l’existència, com a mínim, d’un programa car.
• x P(x)  x C(x): “Hi ha un programa i hi ha una cosa que és cara”. Però el programa
i allò que és car no tenen per què ser la mateixa cosa, així que no s’afirma l’existència
de cap programa car. No és equivalent a l’anterior.
• x (P(x)  C(x)): “Hi ha una cosa que, si fos un programa, seria cara”. No s’afirma l’existència de res que sigui un programa ni de res que sigui car. No és equivalent a cap de
les dues anteriors.
Com mostren els dos darrers
exemples, és possible fer referència al domini en la seva totalitat. En aquest cas, la part 
de selecció de la fórmula 
no hi serà.
18
© FUOC • PID_00265955
1.3.3. Formalització de frases complexes
Sovint, per a formalitzar amb el llenguatge de la lògica de predicats és convenient reduir un problema complex a una col·lecció de problemes més
simples, de manera semblant a com es fa en la formalització al llenguatge
de la lògica d’enunciats. Un bon exemple són aquelles frases que requereixen l’ús de més d’un quantificador per a la seva formalització. Els exemples
següents us ajudaran a veure-ho.
Exemple 1
Formalitzar “Els programadors que tenen assignat un despatx rendeixen per
sobre de la mitjana” amb P(x): “x és un programador”; D(x): “x és un despatx”;
R(x): “x rendeix per sobre de la mitjana”; A(x,y): “x té y assignat” (“y està assignat a x”).
• Sentit: universal.
• Selecció: subconjunt dels programadors que tenen assignat un despatx.
• Propietats de la selecció: els elements del subconjunt rendeixen per sobre
de la mitjana.
Esquemàticament la formalització serà:
x (P(x)  “x té assignat un despatx”  R(x))
Ara queda per resoldre el problema de formalitzar la frase “x té assignat un despatx”. Per a formalitzar-la, es procedirà com fins ara: demanar-se si el seu sentit és universal o existencial, demanar-se de què parla (selecció) i demanar-se
què afirma d’allò de què parla (propietats de la selecció). Atès que la resposta
a la pregunta “de què parla la frase?” no pot ser “parla de x” (perquè x ja està
afectat per un quantificador), llegirem la frase com “hi ha un despatx que està
assignat a x”.
• Sentit: existencial.
• Selecció: subconjunt dels despatxos.
• Propietats de la selecció: els elements de la selecció (alguns) estan assignats a x.
La formalització serà: y (D(y)  A(x,y)). Finalment, la formalització de tota la
frase és:
x (P(x)  y (D(y)  A(x,y))  R(x))
Lògica de predicats
19
© FUOC • PID_00265955
Exemple 2
Formalitzar “Hi ha excursionistes que coneixen totes les rutes i que no han
passejat per cap bosc ombrívol” amb E(x): “x és un excursionista”; R(x): “x és
una ruta”; B(x): “x és un bosc ombrívol”; C(x,y): “x coneix y”; P(x,y): “x passeja
(ha passejat) per y”.
• Sentit: existencial.
• Selecció: subconjunt dels excursionistes.
• Propietats de la selecció: els elements de la selecció (alguns) coneixen totes les rutes i mai no han passejat per cap bosc ombrívol.
Esquemàticament:
x (E(x)  “x coneix totes les rutes” 
 “x no ha passejat per cap bosc ombrívol”)
Per a formalitzar “x coneix totes les rutes”, fem la lectura “Totes les rutes són
conegudes per x” (es vol evitar que la resposta a la pregunta “de què parla la
frase?” sigui x, perquè x ja està quantificat) i obtenim:
y (R(y)  C(x,y)).
La frase “x no ha passejat per cap bosc ombrívol” es formalitzarà com la negació de la frase “x ha passejat per algun bosc ombrívol”. D’aquesta darrera frase,
fem la lectura: “hi ha algun bosc ombrívol pel qual x ha passejat” i obtenim la
formalització z (B(z)  P(x,z)). La negació d’aquesta fórmula és:
z (B(z)  P(x,z))
Finalment, la formalització de tota la frase és:
x [(E(x)  y (R(y)  C(x,y))  z (B(z)  P(x,z)))]
Exemple 3
Formalitzar “Quan tots els conductors novells respecten els senyals, els agents
només sancionen els infractors reincidents” amb C(x): “x és un conductor novell”; S(x): “x és un senyal”; R(x,y): “x respecta y”; A(x): “x és un agent”; F(x,y):
“x sanciona y”; I(x): “x és un infractor reincident”.
Globalment, la frase expressa una condició suficient pel fet que:
• “Tots els conductors novells respecten els senyals” és la condició suficient
per a:
• “Els agents només sancionen els infractors reincidents”
Lògica de predicats
20
© FUOC • PID_00265955
Pel que fa a la formalització de “Tots els conductors novells respecten els senyals”:
• Sentit: universal.
• Selecció: subconjunt dels conductors novells.
• Propietats de la selecció: els elements seleccionats respecten els senyals.
Esquemàticament:
x (C(x)  ”Els senyals són respectats per x”).
La frase “Els senyals són respectats per x” té sentit universal (tots els senyals,
els senyals en general). La selecció és el subconjunt dels senyals i d’aquesta selecció es diu que x la respecta: y (S(y)  R(x,y)). Així, la formalització de l’antecedent de la implicació és: x (C(x)  y (S(y)  R(x,y))).
Pel que fa a la formalització de la frase “Els agents només sancionen els infractors reincidents”:
• Sentit: universal (tots els agents, els agents en general).
Esquemàticament:
x (A(x)  ”x només sanciona infractors reincidents”).
La frase “x només sanciona infractors reincidents” expressa una condició necessària pel fet que:
• “Ser un infractor reincident” és necessari per a:
• “Ser sancionat per x”.
La lectura “Tot allò que no és un infractor reincident no és sancionat per x” ens
porta a la formalització y (I(y)  F(x,y)), que equival a y (F(x,y)  I(y)). Així, la formalització resultant és:
x (A(x)  y (I(y)  F(x,y))).
I la formalització de tota la frase és:
x [(C(x)  y (S(y)  R(x,y)))]  x [(A(x)  y (I(y)  F(x,y)))].
Exemple 4
Formalitzar “No hi ha cap persona que no conegui algun indret habitat per
mamífers” amb P(x): “x és una persona”; I(x): “x és un indret”; M(x): “x és
un mamífer”; H(x,y): “x habita y (y és habitat per x)”; C(x,y): “x coneix y”.
Lògica de predicats
21
© FUOC • PID_00265955
La frase que es vol formalitzar és la negació de “Hi ha persones que no coneixen cap indret habitat per mamífers”. Per a aquesta frase:
• Sentit: existencial.
• Selecció: subconjunt de les persones.
• Propietats de la selecció: els elements de la selecció (alguns) no coneixen
cap indret habitat per mamífers.
Esquemàticament: x (P(x)  “x no coneix cap indret habitat per mamífers”).
La frase “x no coneix cap indret habitat per mamífers” és la negació de “x coneix algun indret habitat per mamífers”, que podem llegir com “Hi ha indrets
habitats per mamífers que són coneguts per x”. Per a aquesta darrera frase:
• Sentit: existencial.
• Selecció: el subconjunt dels indrets habitats per mamífers.
• Propietats: els elements (alguns) de la selecció són coneguts per x.
Esquemàticament:
y (I(y)  ”y és habitat per mamífers” C(x,y))
La frase “y és habitat per mamífers” es formalitza com “Hi ha mamífers que
habiten y”: z (M(z)  H(z,y)). Finalment, la formalització de la frase “x no coneix...” serà:
y [I(y)  z (M(z)  H(z,y))  C(x,y)]
Amb això, la formalització de “No hi ha cap persona...” serà:
x {P(x)  y [I(y)  z (M(z)  H(z,y))  C(x,y)]}
Exemple 5
Formalitzar “Només si hi hagués un inversor que tingués totes les accions emeses per companyies solvents, cap inversor no compraria bons emesos per estats
en vies de desenvolupament” amb I(x): “x és un inversor”; A(x): “x és una acció”;
S(x): “x és una companyia solvent”; B(x): “x és un bo”; D(x): “x és un estat en
vies de desenvolupament”; E(x,y): “x emet y” (“y és emès per x”); T(x,y): “x té y”
(“x és el propietari de y”); C(x,y): “x compra y”.
Globalment, la frase expressa una condició necessària pel fet que:
• “Hi ha un inversor que té totes les accions emeses per companyies solvents” és necessari per a:
• “Cap inversor no compra bons emesos per estats en vies de desenvolupament.”
Lògica de predicats
22
© FUOC • PID_00265955
Pel que fa a la formalització de “Hi ha un inversor que té totes les accions emeses per companyies solvents”, esquemàticament és:
x (I(x)  “Totes les accions emeses per companyies solvents són de x”)
Respecte de la formalització de “Totes les accions emeses per companyies solvents són de x”:
• Sentit: universal.
• Selecció: accions emeses per companyies solvents.
• Propietats de la selecció: els elements de la selecció són propietat de x.
Esquemàticament:
y (A(y)  “y ha estat emesa per una companyia solvent”  T(x,y))
La formalització de “y ha estat emesa per una companyia solvent” és la d’“Una
companyia solvent ha emès y”: z (S(z)  E(z,y)).
La formalització de tota la frase “Hi ha un inversor...” és:
x {I(x)  y [A(y)  z (S(z)  E(z,y))  T(x,y)]}
Pel que fa a la formalització de “Cap inversor no compra bons emesos per estats en vies de desenvolupament”, és la negació de la formalització d’“Algun
inversor compra bons emesos per estats en vies de desenvolupament”.
Respecte a la formalització d’“Algun inversor compra bons emesos per estats
en vies de desenvolupament”, esquemàticament és:
x (I(x)  “x compra bons emesos per estats en vies de desenvolupament”)
La formalització de “x compra bons emesos per estats en vies de desenvolupament” és la de “Hi ha bons emesos per estats en vies de desenvolupament que
són comprats per x”. Aquesta formalització és:
y (B(y)  z(D(z)  E(z,y))  C(x,y))
La formalització de tota la frase “Cap inversor no compra bons emesos per estats en vies de desenvolupament” és:
x {I(x)  y [B(y)  z (D(z)  E(z,y))  C(x,y)]}
Lògica de predicats
© FUOC • PID_00265955
23
I amb això, la formalització de tota la frase que expressa una condició necessària és:
x {I(x)  y [B(y)  z (D(z)  E(z,y))  C(x,y)]} 
 x {I(x)  y [A(y)  z(S(z)  E(z,y))  T(x,y)]}
Lògica de predicats
24
© FUOC • PID_00265955
Lògica de predicats
2. La deducció natural
2.1. Regles
La deducció natural de la lògica de predicats manté les nou regles de la lògica
d’enunciats i n’afegeix quatre més: dues per a cada quantificador, una per eliminar-lo i una per introduir-lo.
2.1.1. Eliminació i introducció de quantificadors
a) Regla 10: eliminació del quantificador universal (E)
Quan una fórmula està quantificada universalment, la variable quantificada pot ser substituïda per qualsevol terme i el quantificador es pot
eliminar.
x A(x)
A(t)
On t és un terme qualsevol (una constant o una variable, segons convingui).
La regla E pot ser entesa de la manera següent: si una cosa (A) es pot dir de
tot el domini (x A(x)), llavors es pot dir de qualsevol dels seus elements (A(t)
–t és un terme qualsevol). Si es vol dir d’un element conegut o d’un element al
qual es dóna un nom, substituirem la variable quantificada universalment per
la constant que designa aquest element (per exemple, A(b)). Si es vol dir d’un
element qualsevol sense precisar més, la substituirem per qualsevol variable (per
exemple, A(u)).
Exemple d’utilització correcta de la regla E
Com a exemple d’utilització correcta d’aquesta regla es validarà el raonament:
“Els illencs són agradables. En Joan és illenc. En conseqüència, en Joan és
agradable.”
Es fa l’assignació de significat següent a predicats atòmics: I(x): “x és illenc”;
A(x): “x és agradable”; a (constant): “En Joan”. El raonament es formalitza:
x (I(x)  A(x)), I(a)  A(a)
Recordeu que les nou regles de la deducció
natural per a enunciats s’expliquen en
l’apartat 2 del mòdul “Lògica d’enunciats”
d’aquesta assignatura.
25
© FUOC • PID_00265955
(1)
x (I(x) A (x))
P
(2)
I(a)
P
(3)
I(a) A(a)
E 1 (x substituïda per la constant a)
(4)
A(a)
E 2, 3
Lògica de predicats
Fixeu-vos que en el pas 3 es passa de “Tots els illencs són agradables” a “Si en
Joan és illenc, llavors és agradable”. La constant a ha estat escollida per substituir x perquè qualsevol altre terme no hauria permès l’eliminació de la implicació i la validació del raonament.
b) Regla 11: introducció del quantificador universal (I)
Quan es disposa d’una fórmula que conté una variable lliure, aquesta
variable es pot quantificar universalment:
A(u)
x A(x)
Perquè l’aplicació de la regla sigui correcta calen les condicions següents:
Observació
a) La variable a u ha de ser arbitrària. Això vol dir dues coses:
• Que quan s’ha deduït A(u), on hi ha u es podria haver posat qualsevol altre
terme,
• no apareix en l’encapçalament (hipòtesi) de la subdeducció en la qual la
regla s’aplica.
b) La introducció del quantificador universal no ha de provocar captures involuntàries de variables lliures. Això vol dir que la variable x no apareix lliure
en la fórmula A.
c) Totes les ocurrències de la variable lliure u en la fórmula A han de ser substituïdes per x.
La regla I pot ser entesa de la manera següent: si una cosa (A) es pot dir de u
(A(u)) i es pot garantir que aquesta u podria ser qualsevol objecte del domini
(exigència d’arbitrarietat), llavors A es pot dir de tots els elements del domini (x A(x)).
Exemple d’aplicació correcta de la regla I
Com a exemple d’utilització correcta de la regla es validarà el raonament següent:
“Tothom és amic de tothom. Per tant, tothom és amic de si mateix.”
Fixeu-vos que la regla I va
acompanyada de condicions
que determinen la correcció 
de l’aplicació.
26
© FUOC • PID_00265955
El domini serà un conjunt qualsevol, no buit, de persones, i s’utilitzarà un
únic predicat: A(x,y): “x és amic de y”.
x y A(x,y)  z A(z,z)
(1)
x y A(x,y)
P
(2)
y A(u,y)
E 1 (x és substituïda per u)
(3)
A(u,u)
E 2 (y és substituïda per u)
(4)
z A(z,z)
I 3 (u era lliure i arbitrària)
Exemples d’aplicació incorrecta de la regla I
Els següents són exemples d’aplicacions incorrectes de la regla I. En tots els
casos es viola alguna de les condicions que garanteixen el seu ús correcte:
1) Deducció incorrecta perquè la variable lliure de la fórmula en què s’aplica la
regla apareix en l’encapçalament de la subdeducció en la qual es fa l’aplicació.
(1)
x (S(x)  P(x))
P
(2)
x S(x)
P
(3)
S(u)  P(u)
E 1
(4)
S(u)
H
(5)
x S(x)
I 4 error!
(6)
x S(x)
it 2
(7)
S(u)
I 4, 5, 6
(8)
P(u)
SD 3, 7
(9)
x P(x)
I 8
Aquesta deducció dóna per vàlid, sense ser-ho, el raonament següent:
“Els nombres enters són senars o parells. No tots els nombres enters són senars. En conseqüència, tots els nombres enters són parells.”
2) Aquesta deducció és incorrecta perquè no totes les aparicions de la variable
lliure s’han substituït en el moment de la introducció del quantificador:
(1)
x P(x,x)
P
(2)
P(u,u)
E 1
(3)
y P(u,y)
I 2 error! El correcte hauria estat y P(y,y)
(4)
x y P(x,y)
Aquesta deducció dóna per vàlid, sense ser-ho, el raonament següent:
“Tothom parla amb si mateix. Així doncs, tothom parla amb tothom.”
Lògica de predicats
27
© FUOC • PID_00265955
3) Un exemple de captura involuntària d’una variable lliure seria aquest: es
disposa de la fórmula A(u)  (B(x)  C(u,x)) en al qual u és una variable lliure
i arbitrària. Es tria x per a substituir u i introduir el quantificador universal i
s’obté x (A(x)  (B(x)  C(x,x))). No cal dir que qualsevol altre nom per a la
variable faria correcta la introducció del quantificador. Per exemple: y (A(y) 
(B(x)  C(y,x))).
c) Regla 12: Eliminació del quantificador existencial (E)
Quan una fórmula està quantificada existencialment, la variable quantificada pot ser substituïda per una constant nova i el quantificador es
pot eliminar.
x A(x)
A(a)
Perquè l’aplicació de la regla sigui correcta, cal garantir que la constant
utilitzada és nova; és a dir, que no hagi aparegut mai abans.
La regla E es pot entendre de la manera següent: si hom sap que hi ha un element del domini que compleix una determinada propietat (A), ens hi podem
referir amb una constant (a), sempre que la mateixa constant no s’utilitzi també per a referir-se a qualsevol altre element del domini.
La regla original d’eliminació del quantificador existencial
La regla d’eliminació del quantificador existencial que acabem de veure no és la que habitualment es considera. La regla original és la següent:
x A(x)
A(a)
...
B
B
Per a aplicar-la correctament cal que la constant a no aparegui ni en la fórmula A, ni en
la fórmula B ni en cap hipòtesi de cap subdeducció que encara estigui oberta.
La regla d’eliminació del quantificador existencial que s’estudia en aquest mòdul és equivalent a l’original, però més simple i més intuïtiva.
Exemple d’aplicació correcta de la regla E
Com a exemple d’aplicació correcta de la regla E es validarà el raonament següent:
“Si tots els programes han estat verificats, tots els resultats són correctes.
Però hi ha un resultat que no és correcte. Això vol dir que no tots els programes han estat verificats.”
Lògica de predicats
28
© FUOC • PID_00265955
Lògica de predicats
S’utilitzarà els predicats atòmics: P(x): “x és un programa”; V(x): “x ha estat verificat”; R(x): “x és un resultat”; C(x): “x és correcte”.
x (P(x)  V(x))  y (R(y)  C(y)), x (R(x)  C(x)) x (P(x)  V(x))
(1)
x (P(x)  V(x))  y (R(y)  C(y))
P
(2)
x (R(x)  C(x))
P
(3)
x (P(x)  V(x))
H
(4)
y (R(y)  C(y))
E 1, 3
(5)
R(a) C(a)
E
(6)
R(a)  C(a)
E 4
(7)
R(a)
E 5
(8)
C(a)
E 6, 7
(9)
C(a)
E 5
(10)
x (P(x)  V(x))
I 3, 8, 9
Exemple d’aplicació incorrecta de la regla E
La regla E s’aplica malament quan s’utilitza una constant que ja ha estat utilitzada abans, ja sia en alguna de les premisses, ja sia en una aplicació anterior
d’aquesta mateixa regla o de la regla E:
(1)
x [C(x)  y (B(y)  P(x,y))] P
(2)
C(a)
P
(3)
C(a)  y (B(y)  P(a,y))
E 1
(4)
y (B(y)  P(a,y))
E 2, 3
(5)
B(a)  P(a,a)
(6)
B(a)
E 4 error! El correcte hauria 
estat B(b)  P(a,b)
E 5
Aquesta deducció dóna per vàlid, sense ser-ho, el raonament:
“Tots els cowboys porten barret. En Johny és un cowboy. En conseqüència,
en Johny és un barret.”
d) Regla 13: introducció del quantificador existencial (I)
Les variables lliures d’una fórmula es poden quantificar existencialment.
Les constants d’una fórmula es poden substituir per una variable quantificada existencialment.
A(t)
x A(x)
On t és un terme qualsevol (si es tracta d’una variable, ha de ser lliure).
La línia 6
La línia 6 d’aquesta demostració és correcta. Per a aplicar 
la regla E cal utilitzar una
constant nova, però aquesta
restricció no s’aplica a la regla
E, en la qual es pot utilitzar
qualsevol terme.
© FUOC • PID_00265955
29
La regla I es pot entendre de la manera següent: si una cosa (A) es pot dir de
t (A(t)), llavors existeix un element del domini del qual es pot dir A (x A(x)).
Exemple d’aplicació correcta de la regla I
Com a exemple d’utilització correcta de la regla es validarà el raonament següent:
“Tots els bancs tenen ordinadors. De bancs, n’hi ha. En conseqüència, hi
ha ordinadors.”
S’utilitzarà els predicats següents: B(x): “x és un banc”; O(x): “x és un ordinador”; T(x,y): “x té y”.
x [B(x)  y (O(y)  T(x,y))], x B(x) x O(x)
(1)
x [B(x)  y (O(y)  T(x,y))]
P
(2)
x B(x)
P
(3)
B(a)
E 2
(4)
B(a)  y (O(y)  T(a,y))
E 1
(5)
y (O(y)  T(a,y))
E 3, 4
(6)
O(b)  T(a,b)
E 5
(7)
O(b)
E 6
(8)
x O(x)
I 7
2.1.2. Restriccions addicionals
Com hem vist, algunes de les regles referides a quantificadors van acompanyades de restriccions que cal tenir en compte per a garantir que s’apliquin correctament. A continuació se’n presenten dues més, una que afecta la introducció
del quantificador universal i una altra que restringeix l’ús que es pot fer de les
constants introduïdes en eliminar quantificadors existencials:
1) Quan una fórmula conté alhora:
• una variable lliure (u) que prové de l’eliminació d’un quantificador universal, i
• una constant (a) que prové de l’eliminació d’un quantificador existencial
que estava dins l’abast del quantificador universal anterior (aquell l’eliminació del qual ha original l’aparició de la variable u),
llavors: no es pot aplicar la regla I respecte de la variable lliure u.
Lògica de predicats
30
© FUOC • PID_00265955
Per exemple, de la fórmula x y C(x,y), no es pot deduir la fórmula y x C(x,y).
Observeu que el quantificador existencial es troba dins l’abast de l’universal.
(1)
x y C(x,y)
P
(2)
y C(u,y)
E 1
(3)
C(u,a)
E 2
(4)
x C(x,a)
(5)
y x C(x,y)
I 3 error ! a prové d’un  que estava dins
l’abast del  del qual prové u
I 4
Si s’atorga a C(x,y) el significat “x coneix y”, la deducció anterior dóna per vàlid, incorrectament, el raonament:
“Tothom coneix algú. Doncs, hi ha algú que coneix tothom.”
Però no hi ha cap problema si el quantificador existencial no es troba dins
l’abast de l’universal. De la fórmula x P(x)  y Q(y), sí que es pot deduir la
fórmula y x(P(x)  Q(y)).
(1)
x P(x)  y Q(y)
P
(2)
x P(x)
E 1
(3)
y Q(y)
E 1
(4)
P(u)
E 2
(5)
Q(a)
E 3
(6)
P(u)  Q(a)
I 4, 5
(7)
x (P(x)  Q(a))
I 6
(8)
y x (P(x)  Q(y))
I 7
2) Les constants introduïdes en aplicar la regla E són locals a la (sub)deducció que les ha originat i només poden ser utilitzades en el mateix nivell o en
nivells més interiors, però no poden pujar a nivells superiors.
Un exemple de demostració que és incorrecta perquè viola aquesta restricció
és el següent:
(1)
x P(x)  y R(y)
P
(2)
x P(x)
H
(3)
y R(y)
E 1, 2
(4)
R(a)
E 3
I 2, 4 error! (a no pot sortir
(5)
x P(x)  R(a)
de la subdeducció en la qual ha
estat introduïda)
Lògica de predicats
31
© FUOC • PID_00265955
Lògica de predicats
2.2. Exemples
A continuació exposem dos exemples d’aplicació de les regles de deducció natural:
1) Demostrem la validesa del raonament següent:
x y [P(x)  R(x, y)], x y [Q(y)  R(x, y)], x y [P(x)  S(x, y)]  x y S(x, y).
(1)
x y [P(x)  R(x,y)]
P
(2)
x y [Q(y)  R(x,y)]
P
(3)
x y [P(x)  S(x,y)]
P
(4)
y [Q(y)  R(a,y)]
E 2, x substituïda per a*.
(5)
Q(b)  R(a,b)
E 4, y substituïda per b*.
(6)
y (P(a)  R(a,y))
E 1, x substituïda per a.
(7)
P(a)  R(a,b)
E 6, y substituïda per b.
(8)
R(a,b)
E 5
(9)
P(a)
MT 7, 8
(10) y [P(a)  S(a,y)]
E 3, x substituïda per a.
(11) P(a)  S(a,c)
E 10, y substituïda per c*.
(12) S(a,c)
SD 9, 11
(13) y S(a,y)
I 12
(14) x y S(x,y)
I 13
* Totes aquestes constants són
constants noves.
2) Demostrem la validesa del raonament següent:
x [P(x)  Q(x)], y [P(y)  R(y)]  x [R(x)  Q(x)].
(1) x [P(x)  Q(x)]
P
(2) y [P(y)  R(y)]
P
(3) P(w)  Q(w)
E 1, w és arbitrària*.
(4) P(w)  R(w)
E 2, w és arbitrària*.
(5) P(w)
E 4
(6) R(w)
E 4
(7) Q(w)
E  3, 5
(8) R(w)  Q(w)
I 6, 7
(9) x [R(x)  Q(x)]
I 8, w era una variable arbitrària.
2.3. Regles derivades i equivalències deductives
En la lògica de predicats la deducció natural és força més complexa que en la
lògica d’enunciats, i la possibilitat de cometre errors també és més gran. Per a
reduir tant com sigui possible el risc d’errors és interessant utilitzar, sempre
que sigui factible, regles derivades i equivalències deductives de correcció
* En aquest cas w podria ser
qualsevol terme.
32
© FUOC • PID_00265955
provada. Les que s’exposen a continuació són algunes de les més útils i les que
s’utilitzen més freqüentment:
1) Canvi de nom de la variable quantificada:
 
• x A(x)
 
• x A(x)
y A(y).
y A(y).
2) Pas del quantificador universal a l’existencial:
x A(x)
x A(x)
3) Commutativitat dels quantificadors:
 
• x y A(x,y)
 
• x y A(x,y)
y x A(x,y).
y x A(x,y).


x A(x)

x A(x)

4) Relació dels quantificadors amb la negació, lleis de De Morgan:
x A(x)
x A(x)
Aquestes lleis també posen de manifest la relació que tenen els quantificadors
entre si.
5) Relació dels quantificadors amb la conjunció:

x A(x)  y B(y)

a) Per al cas del quantificador universal, tenim el següent:
z (A(z)  B(z)).
b) Per al cas del quantificador existencial no es dóna l’equivalència i només
tenim:
z (A(z)  B(z))
x A(x)  y B(y)
6) Relació dels quantificadors amb la disjunció:

x A(x)  y B(y)

a) Per al cas del quantificador existencial, tenim el següent:
z (A(z)  B(z)).
Lògica de predicats
33
© FUOC • PID_00265955
b) Per al cas del quantificador universal no es dóna l’equivalència i només tenim:
x A(x)  y B(y)
z (A(z)  B(z))
7) Relació dels quantificadors amb la implicació:
a) En el cas dels quantificadors universals la relació és la següent:
z (A(z) B(z))
x A(x)  y B(y)
b) En canvi, per al quantificador existencial, tenim:
x A(x)  y B(y)
z (A(z)  B(z))
Lògica de predicats
© FUOC • PID_00265955
34
Lògica de predicats
3. Veritat i falsedat en la lògica de predicats
3.1. El concepte d’interpretació en la lògica de predicats
Tot allò que vam explicar sobre la indiferència de la lògica respecte al significat
dels enunciats es pot estendre a la lògica de predicats i, concretament, a les fór-
Vegeu l’apartat 3 del mòdul “Lògica
d’enunciats”.
mules. La lògica de predicats també assumeix que qualsevol fórmula pot ser
vertadera o falsa, però no ambdues coses simultàniament, i garanteix que, si
un raonament és correcte, llavors, sempre que les premisses siguin vertaderes,
la conclusió també ho serà.
Però una fórmula és quelcom més complex que un enunciat. La definició d’interpretació ha de recollir aquesta complexitat més gran.
Amb una interpretació s’assigna un valor de veritat a una fórmula. Hi
ha tres aspectes que condicionen el valor de veritat d’una fórmula: el
Recordeu que...
... en la lògica d’enunciats una
interpretació es va definir com
una assignació de valor de veritat a cadascun dels àtoms d’un
enunciat.
domini considerat, el valor de veritat dels predicats quan les variables
són substituïdes per elements del domini i el significat de les constants
(quin element del domini designen). Així, per a construir una interpretació cal explicitar els aspectes següents:
1) El domini (D) de les variables, que no pot ser buit ().
2) Per a cada símbol de predicat, una interpretació (V o F) per a cada una
de les possibles substitucions de totes les seves variables per elements del
domini. El conjunt de totes aquestes interpretacions s’anomena Ip.
3) Per a cada símbol de constant, una assignació d’un element concret
del domini. El conjunt de totes aquestes assignacions s’anomena Ic.
Una interpretació en lògica de predicats és, doncs, un triplet de la
forma <D, Ip, Ic>.
Exemples de construcció d’una interpretació
1) Considerem la fórmula x y P(x,y) i vegem com se’n pot construir una interpretació:
• Com a domini es pren un conjunt de dos elements, que s’identifiquen amb
els nombres 1 i 2, D = { 1, 2 }.
Per a construir 
una interpretació...
... es consideren totes les substitucions de variables per
elements del domini, mentre
que només es considera una
substitució per cada constant. 
I és que una constant designa
un, i només un, element 
del domini.
© FUOC • PID_00265955
35
Lògica de predicats
• Totes les possibles substitucions que es poden fer de les variables del predicat P per elements del domini donen lloc a P(1,1), P(1,2), P(2,1) i P(2,2).
Una possible interpretació d’aquestes substitucions en el predicat P pot ser
P(1,1) = V, P(1,2) = F, P(2,1) = V i P(2,2) = F.
• Atès que a la fórmula no hi ha constants, no es poden fer assignacions a
elements concrets del domini.
Així, doncs, finalment, la interpretació ha quedat de la manera que exposem
a continuació:
{1, 2}, {P(1,1) = V, P(1,2) = F, P(2,1) = V, P(2,2) = F}, .
Fixeu-vos que, una vegada substituïts de les variables per valors concrets del
domini, els predicats ja es poden interpretar com a V o F, igual que els enunciats. L’explicació és simple: recordeu que un predicat en què s’han substituït
tots els paràmetres per elements concrets del domini és un enunciat.
Només tenint en compte que el nombre de possibles dominis és infinit ({ 1 },
{ 1, 2 },{ 1, 2, 3 }...) ja es pot veure que el nombre d’interpretacions d’una fórmula també és infinit. Això no passa en el cas dels enunciats, perquè un enunciat amb n àtoms té, exactament, 2n interpretacions.
2) Per a la fórmula z Q(z,a) una interpretació seria la següent:
• El domini de la fórmula és D = { 1, 2 }.
• Totes les substitucions que es poden fer de les variables del predicat Q donen
lloc a Q(1,1), Q(1,2), Q(2,1) i Q(2,2), i una possible interpretació de totes
aquestes substitucions pot ser Q(1,1) = F, Q(1,2) = V, Q(2,1) = V i Q(2,2) = F.
• A la constant a se li ha d’assignar un element del domini. Una possible assignació és a = 2.
Així, doncs, finalment, la interpretació ha quedat de la manera que presentem
tot seguit:
<{ 1, 2 }, { Q(1,1) = F, Q(1,2) = V, Q(2,1) = V, Q(2,2) = F }, { a = 2 }>.
3.2. Pas de fórmules a enunciats
Acabem de veure què s’entén per interpretació en la lògica de predicats. Ara
cal veure com s’ha de determinar el valor de veritat d’una fórmula, a partir dels
valors de veritat assignats als enunciats* i de l’assignació d’elements concrets
a les constants.
* Resultants de substituir
les variables dels predicats
per elements del domini.
36
© FUOC • PID_00265955
Lògica de predicats
S’ha de tenir en compte que, si el domini a partir del qual es fa la interpretació té n elements (D = { 1, 2, ..., n }), llavors:
1) Tota fórmula del tipus x P(x) és equivalent a l’enunciat:
P(1) ... P(n).
2) Tota fórmula del tipus x P(x) és equivalent a l’enunciat:
P(1) ... P(n).
Exemples d’equivalència entre enunciats i fórmules
Si D = { 1, 2, 3 }, llavors:
1) la fórmula x P(x) és equivalent a l’enunciat P(1) P(2) P(3);
2) la fórmula y [Q(y)  R(y)] és equivalent a l’enunciat següent:
(Q(1)  R(1))  (Q(2)  R(2))  (Q(3)  R(3));
3) la fórmula x y P(x,y) és equivalent a y P(1,y) y P(2,y) y P(3,y) i aquesta ho és a
l’enunciat següent:
[P(1, 1)  P(1, 2)  P(1, 3)]  [P(2, 1)  P(2, 2)  P(2, 3)]  [P(3, 1)  P(3, 2)  P(3, 3)].
Per a determinar el valor de veritat d’una fórmula, donada una interpretació
en concret, només cal convertir-la en un enunciat, seguint les dues regles que
acabem de descriure, i procedir de la mateixa manera com ho fem per a qualsevol altre enunciat.
Exemples de determinació del valor de veritat d’una fórmula
Donades la fórmula x y P(x,y) i la interpretació <{ 1, 2 }, { P(1,1) = V, P(1,2) = F, P(2,1) = V,
P(2,2) = F }, >, tenim que en el domini D = { 1, 2 } la fórmula és equivalent a l’enunciat
[P(1,1) P(1,2)] [P(2,1) P(2,2)]. Finalment, només cal procedir com si es calculés una única
fila d’una taula de veritat, com mostrem tot seguit:
P(1,1) P(1,2) P(2,1)
V
F
V
P(2,2)
P(1,1)P(1,2)
P(2,1) P(2,2)
x y P(x,y)
F
V
V
V
De la mateixa manera, per a la fórmula z Q(z,a) i la interpretació <{ 1, 2 }, { Q(1,1) = F,
Q(1,2) = V, Q(2,1) = V, Q(2,2) = F }, { a = 2 }>, tindríem que z Q(z,a) és equivalent
a Q(1,a) Q(2,a) i, atès que a = 2, això seria el mateix que Q(1,2) Q(2,2), i quedaria la
taula següent:
Q(1, a) = Q(1, 2)
Q(2,a) = Q(2,2)
z Q(z, a) = Q(1,2)  Q(2,2) (amb a = 2)
V
F
V
37
© FUOC • PID_00265955
Lògica de predicats
Retornant a la fórmula x y P(x,y), la taula de veritat per a totes les interpretacions on
el domini és D = { 1, 2 } seria la que presentem a continuació; resulta senzill adonar-se
que és possible construir la taula de veritat per a totes les interpretacions que tenen un
mateix domini.
P(1,1)
P(1,2)
P(2,1)
P(2,2)
P(1,1)  P(1,2)
P(2,1) P(2,2)
x y P(x, y)
V
V
V
V
V
V
V
V
V
V
F
V
V
V
V
V
F
V
V
V
V
V
V
F
F
V
F
F
V
F
V
V
V
V
V
V
F
V
F
V
V
V
V
F
F
V
V
V
V
V
F
F
F
V
F
F
F
V
V
V
V
V
V
F
V
V
F
V
V
V
F
V
F
V
V
V
V
F
V
F
F
V
F
F
F
F
V
V
F
V
F
F
F
V
F
F
V
F
F
F
F
V
F
V
F
F
F
F
F
F
F
F
Els conceptes de tautologia i antinòmia que s’apliquen als enunciats també es
poden aplicar a les fórmules.
Depenent del valor de veritat d’una fórmula, tenim que:
a) Una fórmula és una tautologia quan el seu valor de veritat és V en
totes les possibles interpretacions.
b) Una fórmula és una antinòmia quan el seu valor de veritat és F en
totes les possibles interpretacions.
c) Quan una fórmula ni és una tautologia ni és una contradicció, es diu
que és contingent.
Una fórmula és una tautologia si, i només si, és un teorema, i és una antinòmia
si, i només si, és una contradicció.
3.3. Refutació de raonaments
Com en el cas de la lògica d’enunciats, un raonament és correcte si, i només si, totes aquelles interpretacions que fan vertaderes les premisses
també fan vertadera la conclusió.
Recordeu els conceptes d’antinòmia 
i de tautologia que hem vist en el subapartat
3.3 del mòdul “Lògica d’enunciats”.
Observació
Per ‘en totes les possibles
interpretacions’ entenem 
‘per a qualsevol domini’, 
‘per a qualsevol combinació
d’atribució de valors de veritat 
a les possibles substitucions’ 
i ‘per a qualsevol assignació
d’elements del domini a constants’.
38
© FUOC • PID_00265955
Lògica de predicats
La infinitud en el nombre d’interpretacions no permet validar un raonament
per la via de comprovar que totes les interpretacions que fan vertaderes les premisses també fan vertadera la conclusió. Bo i aquesta adversitat, sí que és possible utilitzar aquesta via per a demostrar que un raonament és formalment
invàlid.
Un raonament és formalment invàlid quan existeix una interpretació,
com a mínim, que fa vertaderes les premisses i falsa la conclusió. Aquestes interpretacions s’anomenen, com en el cas de la lògica d’enunciats,
contraexemples.
El procés per a cercar un contraexemple que invalidi un raonament és el següent:
1) Es comença amb el domini més petit possible (D = { 1 }) i totes les interpretacions que es pugui construir amb aquest. Si alguna d’aquestes fa vertaderes
les premisses però no la conclusió, ja s’ha trobat el contraexemple que se cercava.
2) Es repeteix el procés afegint cada vegada un element més al domini. El procés s’atura quan es troba un contraexemple.
Si el raonament és invàlid, s’acabarà trobant el contraexemple que se cercava. Contrariament, si el raonament és correcte, el procés continuarà indefinidament*, cada vegada amb dominis de més elements, sense trobar res.
Això fa que aquest procediment s’hagi de reservar per a trobar contraexemples de raonaments que se saben invàlids o dels quals es té sospites fundades
d’invalidesa.
Exemple de com cal cercar un contraexemple
Demostrem la invalidesa del raonament x P(x) x P(x):
• Quan tenim el domini D = { 1 }. Substituint totes les variables del predicat P per elements del domini s’obté P(1). La fórmula x P(x) és equivalent a P(1), i x P(x) és equivalent a P(1). Llavors, obtenim la taula de veritat següent:
P(1)
x P(x)
x P(x)
V
V
V
F
F
F
Totes les interpretacions que fan vertadera la premissa també fan vertadera la conclusió.
En aquest domini, doncs, no hem trobat cap contraexemple.
* Si el raonament és correcte,
el procés es converteix en una
iteració infinita.
39
© FUOC • PID_00265955
Lògica de predicats
• Quan tenim el domini D = { 1, 2 } les substitucions donen lloc a P(1) i P(2). La premissa
és equivalent a P(1) P(2), i la conclusió és equivalent a P(1) P(2). Així, tenim la taula
de veritat següent:
P(1)
P(2)
P(1) P(2) = x P(x)
P(1) P(2) = xP(x)
V
V
V
V
V
F
V
F
F
V
V
F
F
F
F
F
Contraexemples
En aquest domini sí que s’han trobat contraexemples. En concret, s’ha trobat que les interpretacions <{ 1, 2 }, { P(1) = V, P(2) = F }, > i <{ 1, 2 }, { P(1) = F, P(2) = V }, > fan
vertadera la premissa però no la conclusió. S’acaba de demostrar que el raonament és invàlid i ja no cal continuar cercant en dominis de més elements.
40
© FUOC • PID_00265955
Lògica de predicats
4. Formes normals
4.1. Forma normal de Skolem
Les fórmules, igual que els enunciats, es manipulen algebraicament per a obtenir-ne fórmules equivalents. La transformació algebraica d’una fórmula té
per objectiu la consecució d’una forma normal.
La forma normal d’una fórmula rep el nom de forma normal prenexa.
Una fórmula està expressada en forma normal prenexa si, i només si,
presenta l’estructura següent:
Q1x1 ... Qnxn (expressió sense quantificadors),


Prefix
Matriu
on els Qi són quantificadors.
És a dir, una fórmula està expressada en forma normal prenexa quan tots els
quantificadors estan agrupats a la seva esquerra (la part anomenada prefix) i,
consegüentment, no apareix cap quantificador a la seva dreta (la part anomenada matriu).
La forma normal anomenada forma normal de Skolem (FNS) és la que
s’utilitza per a poder aplicar, posteriorment, el mètode de resolució. És
una forma normal prenexa, amb la matriu normalitzada (FNC) i amb
un prefix que només conté quantificadors universals. Els quantificadors
existencials s’eliminen seguint un procés anomenat eskolemització.
Per a trobar la forma normal de Skolem de qualsevol fórmula se segueixen
els passos següents:
1) Verificar que no existeixen variables lliures. Si existeixen variables lliures,
això és un símptoma d’error en la formalització i caldrà repassar-la. Si la fórmula
s’ha donat amb variables lliures, aquestes s’hauran de quantificar existencialment. Els quantificadors existencials que s’afegeixin s’hauran de col·locar a l’esquerra del tot de la fórmula.
2) (Opcionalment) Si s’utilitza el mateix nom per a variables dins l’àmbit de

3) Eliminar totes les aparicions de la connectiva AB

quantificadors diferents, pot ser útil canviar aquests noms.
A B).
© FUOC • PID_00265955
41
Lògica de predicats
4) Aplicar les lleis de De Morgan per a aconseguir que les negacions precedeixin els símbols de predicat. Caldrà aplicar tant les lleis de De Morgan estudiades per als enunciats com les que s’apliquen a les fórmules quantificades.
5) Eliminar els quantificadors existencials (eskolemització).
6) Moure tots els quantificadors* cap a l’esquerra.
7) Normalitzar la matriu. Per a poder aplicar el mètode de resolució cal que
estigui expressada en forma normal conjuntiva.
Els passos d’aquest procés s’han de seguir en l’ordre indicat. Alterar-ne l’ordre
podria provocar errors.
4.2. Eliminació de quantificadors existencials: eskolemització
El punt cabdal per a trobar la forma normal de Skolem d’una fórmula és l’eliminació dels quantificadors existencials. Per a dur-la a terme procedirem de la
manera següent:
1) Si un quantificador existencial no es troba dins l’àmbit de cap quantificador universal, llavors cal substituir la variable quantificada existencialment
per una constant que encara no hagi estat utilitzada, i eliminar el quantificador existencial. La constant no es podrà utilitzar posteriorment.
2) Si un quantificador existencial es troba dins l’àmbit d’un quantificador
universal, llavors cal substituir la variable quantificada existencialment per
una funció de la variable quantificada universalment, i eliminar el quantificador existencial. La funció no es pot haver utilitzat prèviament ni es podrà utilitzar posteriorment.
3) Si un quantificador existencial es troba dins l’àmbit de més d’un quantificador universal, llavors cal substituir la variable quantificada existencialment
per una funció de totes les variables afectades per aquests quantificadors universals, i eliminar el quantificador existencial. La funció no es pot haver utilitzat prèviament ni es podrà utilitzar posteriorment.
Els quantificadors universals afecten les variables quantificades existencialment que són dins el seu àmbit, però no afecten les altres variables quantificades universalment.
Els quantificadors existencials no afecten ni les variables quantificades universalment ni cap altra variable quantificada existencialment.
* Només hi haurà quantificadors
universals.
42
© FUOC • PID_00265955
Lògica de predicats
Exemple d’eskolemització
Com a exemple d’eskolemització, apliquem el procés d’eliminació de quantificadors
existencials a la fórmula següent:
x y [z P(x,z) u Q(u,y) w S(w) t (v R(v,t) S(t))] m S(m) S(a).
El primer pas és la detecció dels quantificadors universals i els seus àmbits, com mostrem
tot seguit:
x y [z P(x,z) u Q(u,y) w S(w) t (v R(v,t) S(t))] m S(m) S(a).

Àmbit de t
Àmbit de y
Ara ja podem determinar quins són els quantificadors universals que afecten cada quantificador existencial:
x y [z P(x,z) u Q(u,y) w S(w) t (v R(v,t) S(t))] m S(m) S(a).
Afectat per y
No afectat
Afectat per y
Afectat per y i t
Afectat per y
No afectat
Amb aquesta informació podem dir quines variables han de ser substituïdes i per quina
constant o funció ho han de ser:
• La variable x serà substituïda per la constant b (a no es pot utilitzar perquè ja apareix
a la fórmula).
• La variable z serà substituïda per la funció f (y).
Nota
• La variable u serà substituïda per la funció g(y).
• La variable w serà substituïda per la funció k(y).
f (y), g(y), k(y) i h(y,t) són funcions noves qualssevol.
• La variable v serà substituïda per la funció h(y,t).
• La variable m serà substituïda per la constant c (b no es pot utilitzar perquè ja s’ha utilitzat abans, igual que a).
Per a acabar només cal fer les substitucions i eliminar els quantificadors existencials, i obtenim el que presentem a continuació:
y [P(b,f(y)) Q(g(y),y) S(k(y)) t (R(h(y,t),t) S(t))] S(c) S(a).*
* En negreta, hem indicat el canvis
que s’han produït.
Les funcions utilitzades per a eliminar els quantificadors existencials afectats per quantificadors universals reben el nom de funcions de Skolem i
s’han de considerar termes. Com les constants, no poden quantificar-se.
Les funcions de Skolem posen en evidència les relacions funcionals que existeixen entre les variables quantificades existencialment i aquelles quantificades universalment.
Recordeu el concepte terme vist 
en el subapartat 1.2.1 d’aquest mòdul
didàctic.
© FUOC • PID_00265955
43
Lògica de predicats
Un exemple us ajudarà a entendre aquest fet. Suposem que utilitzem el predicat Q(x,y), “el quadrat del nombre x és el nombre y”, per a formalitzar la frase
“Tot nombre natural té un quadrat (que també és un nombre natural)”. La formalització seria x y Q(x,y). Si aquesta fórmula és eskolemitzada en resulta
x Q(x,f (x)). Parafrasejada, la fórmula resultant es pot llegir com ‘tot nombre
natural té un quadrat que és funció seva’. En aquest cas és evident que f (x) = x2.
En altres casos potser no serem capaços de donar una definició de la funció de
Skolem. Però aquest és un fet sense importància; el que és realment important
és que la funció de Skolem evidencia la relació funcional entre x i y (y = f (x)).
Exemple de determinació d’una forma normal de Skolem
Amb la fórmula x [P(x) (t Q(x,t) y R(x,y)) z A(z) u B(u,x)] exemplifiquem
el procés complet de determinació d’una forma normal de Skolem:
1) S’examina la fórmula per a detectar variables lliures. No n’hi ha.
2) S’examina la fórmula per a detectar repeticions en el nom de les variables. No es detecta cap repetició.
3) S’eliminen les implicacions:
x [(P(x) (t Q(x,t) y R(x,y)))(z A(z) u B(u,x))].
4) S’hi apliquen les lleis de De Morgan per a apropar les negacions als símbols de predicats:





  
  

x [(P(x) (t Q(x,t) y R(x,y))) (z A(z) u B(u,x))]
x [(P(x) (t Q(x,t) y R(x,y))) (z A(z) u B(u,x))]
x [(P(x) (t Q(x,t) y R(x,y))) (z A(z) u B(u,x))]
x [(P(x) (t Q(x,t) y R(x,y))) (z A(z) u B(u,x))].
5) Se n’eliminen els quantificadors existencials: la variable y és substituïda per una funció
de x. La variable z és substituïda per una altra funció de x:
x [(P(x) (t Q(x,t) R(x,f(x)))) (A(g(x)) u B(u,x))].
6) Es mouen tots els quantificadors universals a l’esquerra:
x t u [(P(x) (Q(x,t) R(x,f(x)))) (A(g(x)) B(u,x))].
7) Es calcula la forma normal conjuntiva de la matriu:
x t u [(P(x) A(g(x))) P(x) B(u,x)) Q(x,t)  R(x,f(x)) A(g(x))) 
Q(x,t) R(x,f(x)) B(u,x))].
L’aplicació de les lleis de De Morgan provoca que alguns quantificadors universals es converteixin en existencials i al revés. Aquesta és la raó per la qual
l’eskolemització (pas 5) no es pot aplicar abans: es correria el risc d’eliminar
quantificadors existencials que posteriorment s’haurien de convertir en universals i, a més, podrien aparèixer nous quantificadors existencials, per transformació dels universals.
44
© FUOC • PID_00265955
Lògica de predicats
5. Resolució
5.1. Les novetats: forma normal de Skolem i substitucions
El mètode de resolució que hem estudiat en aquesta assignatura per a la lògica
d’enunciats també el podem utilitzar per a validar o refutar raonaments expressats en el llenguatge de fórmules. Només cal que adaptem el mètode de
resolució a les seves particularitats.
El mètode de resolució de la lògica de predicats es basa en:
1) Una única regla: la de resolució.
2) Una única estratègia: la reducció a l’absurd.
3) La utilització de la forma normal de Skolem (amb matriu en FNC).
4) La utilització de la tècnica del replantejament de la darrera decisió,
per a garantir la sistematicitat.
5) El càlcul de substitucions i l’algoritme d’unificació.
El darrer punt representa la novetat realment important de la resolució en la
lògica de predicats.
5.2. Substituir variables per termes
5.2.1. Exemple comentat
El concepte de substitució és molt important. Una explicació mitjançant un
exemple ens permetrà una introducció informal.
Suposem que volem validar el raonament “Tots els homes són impacients. En
Joan és un home. Consegüentment, en Joan és impacient.”
Si assignem a H(x) “x és un home”, a a (constant) “en Joan” i a I(x) “x és impacient”, llavors:
x [H(x) I(x)], H(a) I(a).
Trobem a continuació les formes normals de Skolem:
Recordeu el mètode de resolució 
per a enunciats que hem vist en l’apartat 5
del mòdul “Lògica d’enunciats”.
45
© FUOC • PID_00265955
Lògica de predicats
• FNS (x [H(x) I(x)]) x [ H(x) I(x)].
• FNS (H(a)) H(a).
• FNS ( I(a)) I(a).
A l’hora de considerar les clàusules, els quantificadors no es tenen en compte,
però cal no oblidar que tots són universals. Així, doncs, si en una clàusula apareix una variable, això vol dir que estava quantificada i que el quantificador
era universal.
El conjunt de clàusules resultant és S {H(x) I(x), H(a), I(a) }.
Amb el conjunt de suport = { I(a) }.
L’arbre de resolució corresponent a aquest exemple seria el que presentem tot
seguit:
I(a)
H(x) I(x)
Sembla que no es pot continuar
Sembla que no es pot continuar perquè en la clàusula troncal es té I(a), mentre que en la lateral es té I(x) i, atès que són diferents, la regla de resolució no
.... la regla de resolució en
aquest cas, si la clàusula lateral
contingués el literal I(a).
es pot aplicar.
Efectivament, la regla de resolució no es pot aplicar, ja que un literal no és la
negació de l’altre. Ara bé, el literal I(x) conté la variable x. Si aquesta variable
pogués ser substituïda per la constant a, llavors la situació es desbloquejaria.
És possible aquesta substitució?
La resposta és afirmativa perquè la clàusula troncal és realment xH(x) I(x)]
i perquè la regla d’eliminació del quantificador universal afirma que una variable quantificada universalment pot ser substituïda per qualsevol terme, i la
constant a és un terme.
En conclusió, la variable x es pot substituir per la constant a (de fet, el que es

fa és aprofitar que xH(x) I(x)]
Es podria aplicar...
H(a) I(a)).
46
© FUOC • PID_00265955
Lògica de predicats
Així, doncs, obtindríem l’arbre de resolució que trobareu representat a la figura següent:
I(a)
H(x) I(x)
Substituir x per a
H(a) I(a)
H(a)
H(a)

5.2.2. Qui substitueix qui i com ho fa
Quan el mètode de resolució s’aplica a la lògica de predicats, la substitució de
variables és imprescindible. Així, doncs, cal tenir clars els aspectes que presentem tot seguit:
1) En cada moment s’ha de triar aquella substitució que, una vegada aplicada,
permeti eliminar el literal de més a la dreta de la clàusula troncal. Encara que
una variable pot ser substituïda per qualsevol terme, només són útils les substitucions que condueixen a l’eliminació d’aquest literal.
2) Si hi ha més d’una substitució que permet eliminar el literal de més a la dreta de la clàusula troncal, se n’utilitza qualsevol i la resta es reserven com a alternatives per si cal aplicar el replantejament de la darrera decisió.
3) Només es poden substituir les variables. Una variable pot ser substituïda
per una constant, per una funció o per una altra variable. Però ni les constants
ni les funcions no poden ser substituïdes per res.
Hi ha una excepció a la possibilitat de substituir una variable per qualsevol terme: una variable no pot ser substituïda per una funció d’ella mateixa.
4) Quan una variable és substituïda, cal substituir totes les aparicions d’aquesta
variable en la clàusula on apareix. Però la clàusula original s’ha de deixar intacta.
La substitució s’ha de fer sobre la còpia que s’utilitza en l’arbre de resolució.
5.3. Més exemples
1) Volem validar el raonament següent:
x y [C(x,y) C(y,x)], y x C(x,y), x y z [C(x,y) C(y,z) C(x,z)] x C(x,x).
Per exemple,...
... x es pot substituir per f (y) o
per g(y,z), però mai per f (x) 
o per g(y,x), ja que són 
funcions d’ella mateixa.
47
© FUOC • PID_00265955
Lògica de predicats
Primer de tot, cal que trobem les formes normals de Skolem de les premisses i
de la negació de la conclusió:
• FNS(x y [C(x,y) C(y,x)]) x y [ C(x,y) C(y,x)]
• FNS(y x C(x,y)) x C(x,a)*
* a és una constant nova que
substitueix y.
• FNS(x y z [C(x,y) C(y,z) C(x,z)]) x y z [C(x,y) C(y,z) C(x,z)].
• FNS(x C(x,x)) C(b,b)*
* b és una constant nova que
substitueix x.
Així, el conjunt de clàusules resultant és el següent:
S  { C(x,y)  C(y,x), C(x,a), C(x,y)  C(y,z)  C(x,z), C(b,b) }
Amb el conjunt de suport  { C(b,b) }.
El primer intent de començar la resolució seria:
Observació
Les substitucions necessàries
s’indiquen al costat de l’arbre
de resolució. El resultat d’aplicar-les s’indica sota la clàusula
afectada (poden ser totes dues,
tant la lateral com la troncal).
Quan cal més d’una substitució, s’indiquen en seqüència.
Atès que s’ha produït una repetició, es fa necessari replantejar-se la darrera decisió presa.
L’intent següent seria:
C(b,b)
C(x,a)
No es pot continuar
48
© FUOC • PID_00265955
Lògica de predicats
Aquest intent fracassa perquè tot i que la variable x es pot substituir per b, cosa
que fa que la clàusula lateral quedi C(b,a), ni a es pot substituir per b ni b es
pot substituir per a.
El tercer intent ens portarà al següent arbre de resolució (deixem de mostrar
els intents sense èxit que comporten replantejaments).
C(b,b)
C(x,y) C(y,z) C(x,z)
Substituir x per b i z per b
C(b,y) C(y,b) C(b,b)
Substituir
y per u
C(b,y) C(y,b)
C(x,u) C(u,x)
C(b,u) C(u,b)
C(b,u) C(u,b)
C(b,u) C(b,u)
Substituir
x per b
C(x,a)
Es pot simplificar
Substituir x per b
C(b,u)
Substituir u per a
C(b,a)
C(b,a)

Observeu que quan s’utilitza la clàusula C(x,y)  C(y,x) es canvia el nom de la
amb el mateix nom. Això podria provocar fàcilment confusions en les substitu-
x [yA(y,x)   zB(z,x)] x y[A(y,x)  B(y,x)]
Primer de tot busquem les formes normals de Skolem:
a) Per a la premissa:
FNS(x [y A(y,x)   zB(z,x)])  x [A(f(x),x)  B(g(x),x)].
b) Per a la negació de la conclusió:
FNS(x y[A(y,x)  B(y,x)])  y [A(y,a)  B(y,a)].

2) Validem el raonament següent:

cions. En aquest cas concret, el canvi de nom no era estrictament necessari.
Passar de C(x,y)  C(y,x) 
a C(x,u)  C(u,x) és perfectament lícit perquè:
xy[C(x,y)  C(y,x)]
xu[C(x,u)  C(u,x)]

calcular les substitucions escaients, la clàusula troncal i la lateral tinguin variables
Canvi de nom

variable y per u. Això es fa així per a evitar que, d’entrada, abans de començar a
49
© FUOC • PID_00265955
Lògica de predicats
El conjunt de clàusules resultant és:
S = { A(f(x),x) B(g(x),x), A(y,a), B(y,a) }.
Amb el conjunt de suport = { A(y,a), B(y,a) }.
L’arbre que obtindrem serà el que representem a la figura següent:
A(f(x),x) B(g(x),x)
A(y,a)
Substituir y per f(x)
Substituir x per a
A(f(x),a)
Substituir x per a
A(f(a),a) B(g(a),a)
A(f(a),a)
B(y,a)
B(g(a),a)
B(g(a),a)
Substituir
y per g(a)

3) Com en la lògica d’enunciats, quan totes les alternatives possibles s’han
tingut en compte sense èxit, llavors es pot afirmar que el raonament no és
correcte.
És el que mostra l’exemple següent:
Demostrar que el raonament x y A(x,y)  x [y A(y,y)  y A(y,x)] no és
vàlid.
Les formes normals de Skolem són:
a) Per a la premissa: FNS(x y A(x,y))  x A(x,f(x))
b) Per a la negació de la conclusió:
FNS(x [y A(y,y)  y A(y,x)])  x [A(g(x),g(x))  A(h(x),x)].
El conjunt de clàusules que s’obté és (les dues darreres són el conjunt de suport):
S  { A(x,f(x)), A(g(x),g(x)), A(h(x),x) }
© FUOC • PID_00265955
50
Lògica de predicats
El primer intent d’iniciar la resolució és:
Observació
Fixeu-vos que en utilitzar 
la clàusula A(x,f(x)) hem canviat
x per u per evitar duplicitat de
noms amb la clàusula troncal.
Aquest primer intent fracassa perquè g(x) no es pot substituir per f(g(x)) ni
f(g(x)) es pot substituir per g(x). I és que cap dels dos no és una variable.
El segon intent també fracassa:
En aquest cas el problema rau en el fet que la substitució de x per f(h(x)) no és
possible perquè una variable no pot ser substituïda per una funció de si mateixa.
Amb això s’han esgotat les possibilitats amb les clàusules del conjunt de suport. Si descartem aquestes clàusules, el conjunt es redueix a { A(x,f(x)) }, i
d’aquest conjunt, mai no obtindrem .
Ja podem concloure que el raonament no és correcte.
5.4. Automatització del càlcul de substitucions: 
l’algoritme d’unificació
El fet de poder determinar en cada moment quines són les substitucions
que cal fer és una qüestió molt important per a l’aplicació del mètode de
resolució. Sovint és possible determinar-les a partir de la simple inspecció
© FUOC • PID_00265955
51
Lògica de predicats
dels literals involucrats. Per a aquelles situacions on la simple inspecció no
és suficient, o quan es vol mecanitzar el mètode, hi ha l’algoritme d’unificació per a calcular substitucions.
Abans de presentar aquest algoritme és necessari donar tot un seguit de definicions que us seran útils:
a) Unificar significa determinar si dues expressions poden esdevenir idèntiques aplicant-hi les substitucions escaients de les seves variables.
b) Una substitució és un parell de la forma <v/t>, on v és una variable i t és
un terme*.
* El terme pot ser una constant, una
variable o una funció que no ho
sigui de v.
** És a dir, que fa idèntiques
ambdues expressions.
c) Un unificador () és una seqüència de substitucions que unifica** dues expressions. Per a denotar que l’unificador  s’aplica a la fórmula F s’escriu F.
Així, si  és un unificador de F1 i de F2, llavors F1 = F2.
Quan un parell de fórmules F1 i F2 d’un únic predicat tenen un unificador que
les fa idèntiques, llavors és diu que són fórmules unificables.
d) Donades dues fórmules amb el mateix predicat F1 i F2, una discrepància
és un parell de termes que són diferents però que ocupen la mateixa posició
en el predicat.
Quan dues fórmules amb el mateix predicat no tenen cap discrepància, estan
unificades (són fórmules idèntiques).
Donat un parell de fórmules amb el mateix predicat, l’algoritme d’unificació
calcula l’unificador que les fa idèntiques, si aquest existeix, o informa de la
seva no-unificabilitat, si aquest no existeix:
Algoritme càlcul_de_l’unificador (F1, F2: fórmules amb el mateix predicat)
/* F1 i F2 són les fórmules que es vol unificar */
D := conjunt de les discrepàncies entre F1 i F2
 :=  /* inicialment la substitució és buida –nul·la– */
unificable := cert
/* iterar mentre hi hagi discrepàncies i possibilitat de superar-les */
mentre D   i unificable fer
/* buscar la primera discrepància i treure-la del conjunt */
<t1,t2> := la primera discrepància de D
D := D  { <t1,t2> }
/* provar de superar la discrepància */
si t1 és una variable i t2 és un terme que no és una funció de t1
o al revés, t1 és el terme i t2 és la variable
Exemple de discrepància
a. Les fórmules P(x,b) i P(a,b)
presenten la discrepància
<x,a>, perquè a la primera posició es té x en la primera fórmula i a en la segona fórmula.
b. Les fórmules Q(x,f (x),y) 
i Q(z,a,b) presenten les discrepàncies <x,z>, <f (x),a> 
i <y,b>, perquè en cap 
de les tres posicions no es té 
el mateix terme.
52
© FUOC • PID_00265955
aleshores
/* la discrepància és superable */
variable := la variable de <t1,t2>
terme := el terme de <t1,t2>
/* ampliar la substitució */
afegir <variable/terme> al final de 
/* aplicar la substitució a les fórmules */
F1 := F1
F2 := F2
/* aplicar la substitució al que queda del conjunt */
/* de discrepàncies */
D := D
sino
si t1 i t2 són la mateixa funció amb paràmetres diferents
aleshores
aplicar aquest mateix algoritme per a unificar les
funcions
si les funcions són unificables
aleshores
Afegir el seu unificador al final de 
F1 := F1; F2 : = F2
D := D
sino
unificable := fals
fsi
sino
unificable := fals
fsi
fsi
fmentre
si unificable
aleshores
finalitzar l’algoritme amb resposta:
1.  és l’unificador que es buscava
2. les fórmules unificades queden: F1
sino
finalitzar l’algoritme amb resposta:
les fórmules no són unificables
fsi
falgoritme
Exemples d’aplicació de l’algoritme d’unificació
Uns quants exemples d’aplicació de l’algoritme d’unificació, dels quals mostrarem les traces, ens serviran per a il·lustrar-ne el funcionament.
a) Traça 1. Volem unificar les fórmules P(x,g(x,y),a) i P(ƒ(z),u,w).
Lògica de predicats
53
© FUOC • PID_00265955
L’algoritme és aplicable perquè són fórmules amb el mateix predicat. Per tant, 
F1 = P(x,g(x,y),a) i F2 = P(f (z),u,w). El conjunt de discrepàncies és D = { <x,f (z)>, <g(x,y),u>,
<a,w> }. Inicialment  = { }.
• Iteració 1: la primera discrepància del conjunt és <x,f (z)>. S’elimina del conjunt i aquest
queda D = { <g(x,y),u>, <a,w> }. La discrepància és de la forma variable (x)/terme (f (z)). La
substitució que cal fer-hi per a solucionar-la és <x/ƒ(z)>. Aquesta substitució s’afegeix
al final de , i queda  = { <x/f (z)> }.
L’unificador s’aplica a les fórmules i a D (només cal substituir x per f (z)), i queda el següent:
F1 = P(f (z),g(f (z),y),a), F2 = P(f (z),u,w) i D = { <g(f (z),y),u>, <a,w> }.
• Iteració 2: la primera discrepància del conjunt és <g(f (z),y),u>. Es treu del conjunt i
aquest queda D = { <a,w> }. La discrepància és de la forma terme/variable, i la substitució que cal fer-hi per a solucionar-la és <u/g(f (z),y)>. Aquesta substitució s’afegeix al final de , i queda  = { <x/f (z)>, <u/g(f (z),y)> }.
L’unificador s’aplica a les fórmules i a D, i queda el següent:
F1 = P(f (z),g(f (z),y),a), F2 = P(f (z),g(f (z),y),w) i D = { <a,w> }.
• Iteració 3: la primera discrepància del conjunt és <a,w>. Es treu del conjunt i aquest
queda buit. La discrepància és de la forma terme/variable, i la substitució que cal
fer-hi per a solucionar-la és <w/a>. Aquesta substitució s’afegeix al final de , i queda  = { <x/f (z)>, <u/g(f (z),y)>, <w/a> }.
Aquest unificador s’aplica a les fórmules i a D, i queda el següent:
F1 = P(f (z),g(f (z),y),a), F2 = P(f (z),g(f (z),y),a) i D = { }.
• Final: ambdues fórmules són unificables, l’unificador és  = { <x/f (z)>, <u/g(f (z),y)>,
<w/a> }, i el resultat de la unificació és el següent:
P(f (z),g(f (z),y),a).
b)Traça 2. Volem unificar les fórmules Q(a,x,f (g(y))) i Q(z,h(z,w),f (w)). En aquest cas el
conjunt de discrepàncies és D = { <a,z>, <x,h(z,w)>, <f (g(y)),f (w)> }.
• Iteració 1: la primera discrepància dóna lloc a la substitució <z/a>, amb la qual cosa les
fórmules queden F1 = Q(a,x,f (g(y))), F2 = Q(a,h(a,w),f (w)), i el conjunt de discrepàncies,
D = { <x,h(a,w)>, <f (g(y)),f (w)> }.
• Iteració 2: la primera discrepància del conjunt dóna lloc a la substitució <x/h(a,w)>.
Amb això, les fórmules queden F1 = Q(a,h(a,w),f (g(y))), F2 = Q(a,h(a,w),f (w)), i el conjunt de discrepàncies, D = { <f (g(y)),f (w)> }.
• Iteració 3: la darrera discrepància del conjunt és <f (g(y)),f (w)>. Aquesta no és una discrepància de la forma variable/terme, sinó que es tracta d’una discrepància de la forma
funció/funció. Atès que la funció és la mateixa en ambdós casos, és possible intentar
unificar-les. Com podeu veure, la discrepància és <g(y),w>, que es pot solucionar amb
la substitució <w/g(y)>. Així, l’unificador de f (g(y)) i f (w) és { <w/g(y)> }. Aquest unificador s’afegeix al final del que es construïa per a les dues fórmules, i queda  = { <z/a>,
<x/h(a,w)>, <w/g(y)> }.
• Final: les dues fórmules són unificables, l’unificador és  = { <z/a>, <x/h(a,w)>, <w/g(y)> },
i el resultat de la unificació és el següent:
Q(a,h(a,g(y)),f (g(y))).
c) Traça 3. Volem unificar les fórmules R(x,f (y,z)) i R(x,a). En aquest cas el conjunt de discrepàncies és D = { <f (y,z),a> }.
• Iteració 1: l’única discrepància d’aquest conjunt no és de la forma variable/terme ni de
la forma funció/funció. Consegüentment, no hi ha cap substitució que la pugui solucionar.
• Final: les fórmules no són unificables.
Lògica de predicats
© FUOC • PID_00265955
54
d)Traça 4. Volem unificar les fórmules S(f (a)) i S(f (h(b))). El conjunt de discrepàncies és
D = { <f (a),f (h(b))> }.
• Iteració 1: l’única discrepància del conjunt és de la forma funció/funció. Per tant, es
prova d’unificar les dues funcions. En el cas de les funcions f (a) i f (h(b)) l’única discrepància és <a,h(b)>. Aquesta discrepància no és de la forma variable/terme ni de la forma funció/funció. Així, les dues funcions no són unificables i, consegüentment, no hi
ha una substitució que solucioni la discrepància original.
• Final: les fórmules no són unificables.
Lògica de predicats
55
© FUOC • PID_00265955
Lògica de predicats
6. La programació lògica
6.1. Què és la programació lògica?
La programació lògica és el punt on conflueixen la lògica i la informàtica.
La programació lògica ofereix els mecanismes necessaris per a poder
descriure un algoritme en termes de propietats i de relacions lògiques
entre objectes.
Un programa escrit en un llenguatge de programació dels anomenats lògics és
una col·lecció de sentències lògiques (típicament, fórmules) que descriuen una
determinada situació. El programador ha d’especificar totes les propietats i totes les relacions que són rellevants pel que fa als objectes que participen en la
situació que es descriu.
Executar un programa lògic consisteix a determinar si una conclusió
donada se segueix de les sentències lògiques especificades. Per aquesta
raó els intèrprets d’aquests llenguatges implementen un demostrador
automàtic.
6.2. La lògica de predicats “implementada”: Prolog
6.2.1. Elements bàsics: clàusules i regles
El llenguatge de programació lògica més conegut i utilitzat és el Prolog
(Programming in the logic). Un programa Prolog és una col·lecció de regles (també anomenades predicats). Cada regla especifica una relació entre objectes.
Sintàcticament, una regla d’un programa Prolog es compon d’una o mes
clàusules. La forma general d’una clàusula és la següent:
<part-esquerra> :- <part-dreta>.
on <part-esquerra> ha de ser simple (no contenir connectives), mentre que
<part-dreta> pot no ser-ho (pot contenir conjuncions).
En el context...
... de la programació en 
Prolog, paraules com predicat 
o clàusula tenen un significat
lleugerament diferent del 
que se’ls ha donat fins ara.
56
© FUOC • PID_00265955
Lògica de predicats
A continuació presentem dos exemples en què es definiran dues regles d’un
programa Prolog que contindran una clàusula o dues, respectivament:
a) Una regla amb una única clàusula:
avi(X,Y) :- progenitor(Z,Y), pare(X,Z).
Si utilitzem la notació a la qual estem acostumats, podríem dir el següent: assignem a avi(X,Y) “X és l’avi de Y”, a progenitor(Z,Y) “Z és un progenitor de Y” i a pare(X,Z) “X és el pare de Z”.
En Prolog les variables es representen amb lletres majúscules o, més
concretament, amb cadenes de caràcters que comencen amb una lletra
majúscula. El símbol :- pot llegir-se com una implicació capgirada

(
), i les comes fan el paper de conjuncions.
b) Una regla que consta de dues clàusules:
progenitor(X,Y) :- pare(X,Y).
progenitor(X,Y) :- mare(X,Y).
Les clàusules de Prolog no són més que implicacions escrites amb una sintaxi
particular. Així, per a la mateixa regla de l’exemple que acabem de veure, tenim que:
avi(X,Y) :- progenitor(Z,Y), pare(X,Z).
que vol dir que ‘si Z és un progenitor de Y i X és el pare de Z, llavors X és l’avi
de Y’.
Si traslladem l’expressió anterior a la notació del llenguatge de fórmules, podem escriure:
X Y Z [progenitor(Z,Y) pare(X,Z)  avi(X,Y)].
Finalment, és fàcil entendre per què s’anomenen clàusules les construccions de
la forma <part-esquerra> :- <part-dreta>. Si tornem a la fórmula de
l’exemple que acabem de veure, i en calculem la FNS, veiem que aquesta és la
següent:
X X Z [progenitor(Z,Y) pare(X,Z) avi(X,Y)],
que, efectivament, és una clàusula (una vegada eliminats els quantificadors).
Noteu que,...
... per a no allunyar-nos excessivament de la notació del Prolog, utilitzem símbols 
de predicat de més d’una lletra
i representem les variables 
amb lletres majúscules.
57
© FUOC • PID_00265955
Una regla, segons s’entén en Prolog, és un conjunt d’implicacions de la
forma:
B1 BnA
...
C1 CpA
on A, Bi i Ci són predicats i on les variables estan quantificades universalment.
La forma habitual d’entendre les clàusules Prolog és la següent: la part dreta
especifica les condicions que s’han de complir (que han de ser vertaderes) perquè es doni (és a dir, sigui vertadera) la part esquerra.
Així, continuant amb l’exemple anterior, tenim la clàusula que presentem a
continuació:
progenitor(X,Y) :- pare(X,Y).
Aquesta clàusula vol dir que ‘perquè X sigui un progenitor de Y cal que X sigui
el pare de Y’.
Sovint es diu que les parts esquerres representen objectius, mentre que les dretes representen subobjectius. Un objectiu queda assolit quan s’han assolit tots
els subobjectius associats.
Les clàusules que no tenen part esquerra s’anomenen fets, i representen
aquelles propietats i relacions que es donen de forma incondicional.
Exemples de fets
• pare(rafel,enric).
• mare(margarida,enric).
• mare(margarida,merce).
• pare(eliseu,rafel).
• pare(josep,margarida).
En Prolog les constants es representen amb cadenes de caràcters que comencen amb una lletra minúscula. Les cadenes que comencen amb una
lletra majúscula són variables.
Lògica de predicats
58
© FUOC • PID_00265955
Lògica de predicats
6.2.2. La validació de raonaments entra en joc: consultes
Les clàusules i els fets són elements computacionalment passius, és a
dir, descriuen propietats i relacions, però no provoquen que es calculi
(computi) res. En Prolog els elements actius s’anomenen consultes. Típicament, les consultes s’introdueixen quan l’intèrpret mostra el seu
prompt, que solen ser els caràcters ?- o quelcom similar.
Un exemple de consulta, que parafrasegem com ‘És l’Eliseu el pare d’en Rafel?’*,
és el següent:
* Els caràcters ?- no han de ser
introduïts per l’usuari.
?- pare(eliseu,rafel)
Davant d’una consulta l’intèrpret obra de la manera següent:
1) Considera totes les regles i tots els fets introduïts prèviament com a premisses.
2) Considera que l’usuari demana que es validi la conclusió*.
3) Intenta validar la conclusió i informa de si ha estat possible fer-ho.
Assumint que les regles i els fets coneguts per l’intèrpret són els que s’han utilitzat abans com a exemple, tenim que:
a) L’intèrpret respondria YES, cosa que indica que la conclusió és correcta.
Llavors:
?- pare(eliseu,rafel).
YES
?b) Quan la conclusió no es pot validar, l’intèrpret respon NO:
?- pare(enric,josep).
NO
?c) No cal que les consultes es refereixin a fets explicitats. Atès l’exemple que
ens ocupa, tenim el següent:
?- avi(eliseu,enric).
YES
?-
* En l’exemple que acabem
d’exposar la conclusió seria
pare(eliseu,rafel).
59
© FUOC • PID_00265955
Lògica de predicats
En el cas de l’exemple, l’intèrpret no coneix cap fet com a avi(eliseu,enric)
i, tot i així, és capaç de respondre que la conclusió és vàlida. Com ho fa? Aplica
el mètode de resolució per a validar la conclusió. El procés, que explicarem basant-nos en l’exemple en qüestió, és el següent:
1) L’intèrpret descobreix la clàusula següent:
avi(X,Y) :- progenitor(Z,Y), pare(X,Z).
Canvia els noms de les variables i la reescriu així:
avi(X1,Y1) :- progenitor(Z1,Y1), pare(X1,Z1).
Com que es vol demostrar avi(eliseu,enric), l’intèrpret substitueix X1
per eliseu i Y1 per enric, i queda la clàusula següent:
avi(eliseu,enric):-progenitor(Z1,enric), pare(eliseu,Z1).
Davant d’aquesta clàusula entén que per a demostrar que l’avi de l’Enric és
que el pare de Z1 és l’Eliseu. Això és com dir que per a assolir l’objectiu de demostrar que l’Eliseu és l’avi de l’Enric cal, primer, assolir els subobjectius de
demostrar que Z1 és un progenitor de l’Enric i, després, assolir els de demostrar
que l’Eliseu és el pare de Z1.
2) L’intèrpret intenta demostrar progenitor(Z1,enric). En aquest intent
descobreix la clàusula progenitor(X,Y) :- pare(X,Y) i la reescriu com a
progenitor(X2,Y2) :- pare(X2,Y2). Tot seguit, substitueix X2 per Z1 i Y2
per enric, i queda:
progenitor(Z1,enric) :- pare(Z1,enric).
En aquest punt entén que per a demostrar que Z1 és un progenitor de l’Enric
ha de demostrar que Z1 és el pare de l’Enric.
A més, l’intèrpret “pren nota” que la clàusula:
progenitor(X,Y) :- mare(X,Y).
també es podria haver utilitzat. Això és el mateix que dir que la decisió d’utilitzar la clàusula progenitor(X,Y) :- pare(X,Y) té una alternativa.
3) L’intèrpret intenta demostrar pare(Z1,enric). En aquest intent descobreix el fet pare(rafel,enric) i substitueix Z1 per rafel. Amb aquesta
substitució queda provat que pare(Z1,enric). Aquí és important adonar-se
de la substitució que es fa, perquè totes les aparicions de la variable Z1 seran
substituïdes per enric.
Si enteneu :- com

l’Eliseu ha de demostrar, primer, que Z1 és un progenitor de l’Enric i, després,
,...
... veureu que l’únic que fa l’intèrpret és intentar arribar al
consegüent d’una implicació:
primer necessita assolir l’antecedent.
60
© FUOC • PID_00265955
Lògica de predicats
Com que queda provat que pare(rafel,enric), també queda provat el fet
següent:
progenitor(rafel,enric).
4) En aquest punt la clàusula:
avi(eliseu,enric) :- progenitor(Z1,enric), pare(eliseu,Z1).
ja s’ha reescrit de la manera següent:
avi(eliseu,enric) :- progenitor(rafel,enric), pare(eliseu,rafel).
En el punt anterior ja s’ha demostrat progenitor(rafel,enric) i, per tant,
només queda demostrar pare(eliseu,rafel) per a completar la demostració d’avi(eliseu,enric).
5) Ara l’intèrpret intenta demostrar pare(eliseu,rafel). Descobreix el fet
que pare(rafel,enric), però aquest mateix fet no serveix per a demostrar
pare(eliseu,rafel). Però hi ha una alternativa, que és el fet següent:
pare(eliseu,rafel).
i aquest fet és el mateix que es vol demostrar.
6) Atès que els dos subobjectius que calia demostrar s’han demostrat, l’intèrpret respon YES.
6.2.3. Prolog implementa el mètode de resolució
La resolució que executa un intèrpret de Prolog és equivalent a la que s’ha estudiat en aquesta assignatura. El mateix exemple que s’acaba de veure servirà
per a mostrar que, efectivament, un intèrpret de Prolog no fa més que executar
una forma particular de l’algoritme de resolució que coneixem.
Les clàusules i els fets, que explicitem tot seguit:
• avi(X,Y) :- progenitor(Z,Y), pare(X,Z),
• progenitor(X,Y) :- pare(X,Y),
• progenitor(X,Y) :- mare(X,Y),
• pare(rafel,enric),
Recordeu que hem explicat el mètode de
resolució mitjançant l’algoritme d’unificació
en el subapartat 5.4 d’aquest mòdul
didàctic.
© FUOC • PID_00265955
61
• mare(margarida,enric),
• mare(margarida,merce),
• pare(eliseu,rafel),
• pare(josep,margarida),
no són més que un conjunt de premisses com les següents:
• X Y Z [progenitor(Z,Y) pare(X,Z)  avi(X,Y)],
• X Y [pare(X,Y)  progenitor(X,Y)],
• X Y [mare(X,Y)  progenitor(X,Y)],
• pare(Rafel,Enric),
• mare(Margarida,Enric),
• mare(Margarida,Mercè),
• pare(Eliseu,Rafel),
• pare(Josep,Margarida),
mentre que la consulta avi(eliseu,enric) és la conclusió.
Tot això dóna lloc al conjunt de clàusules següents:
S = { progenitor(Z,Y) pare(X,Z) avi(X,Y), pare(X,Y) progenitor(X,Y),
mare(X,Y) progenitor(X,Y), pare(Rafel,Enric), mare(Margarida,Enric), 
mare(Margarida,Mercè), pare(Eliseu,Rafel), pare(Josep,Margarida),
avi(Eliseu,Enric) }.
Amb el conjunt de suport { avi(Eliseu,Enric) }.
A diferència de com es feia en el mòdul anterior, en lloc de provar d’eliminar
el literal de més a la dreta, les eliminacions es faran en el mateix ordre en què
les faria un intèrpret de Prolog. La clàusula que s’hagi d’eliminar serà la que es
troba en negreta en el gràfic de la pàgina següent.
Si observeu la clàusula del requadre, veureu que es correspon amb aquella situació en què l’intèrpret acaba de descobrir que, per a demostrar que l’avi de
l’Enric és l’Eliseu, ha de demostrar, primer, que Z1 és un progenitor de l’Enric
Lògica de predicats
62
© FUOC • PID_00265955
Lògica de predicats
i, després, que el pare de Z1 és l’Eliseu. La mateixa analogia es pot fer amb les
altres clàusules troncals.
avi (Eliseu, Enric)
progenitor(Z,Y) pare(X,Z)  avi(X,Y)
Canviar el nom
de les variables
progenitor(Z1,Y1) pare(X1,Z1)  avi(X1,Y1)
Substituir X1 per Eliseu
i Y1 per Enric
progenitor(Z1,Enric) pare(Eliseu,Z1)  avi(Eliseu,Enric)
progenitor(Z1,Enric) pare(Eliseu,Z1)
pare(X,Y)  progenitor(X,Y)
pare(X2,Y2)  progenitor(X2,Y2)
pare(Z1,Enric)  progenitor(Z1,Enric)
pare(Eliseu,Z1) pare(Z1,Enric)
Canviar el nom
de les variables
Substituir X2 per Z1
i Y2 per Enric
pare(Rafel,Enric)
Substituir Z1 per Rafel
pare(Eliseu,Rafel) pare(Rafel,Enric)
pare(Eliseu,Rafel)
pare(Eliseu,Rafel)

Un intèrpret de Prolog demostra totes les seves capacitats* amb consultes que
inclouen variables. Per a l’exemple que ens ocupa, tenim el següent:
* I, per tant, les capacitats
del mètode de resolució,
en el qual es basa.
?- avi(X,enric).
X=eliseu?
La consulta, que es pot parafrasejar com ‘Hi ha algun X que sigui l’avi de l’Enric?’*, té la resposta que podeu observar (X=eliseu?). Això vol dir dues coses:
a) Que s’ha pogut demostrar que hi ha algun X que és l’avi de l’Enric.
b) Que durant el procés de demostració la variable X ha estat substituïda per
la constant Eliseu i que, per tant, l’Eliseu és l’avi de l’Enric.
* Aquesta consulta expressada
en el llenguatge de fórmules
quedaria com X avi(X,Enric).
63
© FUOC • PID_00265955
El mètode de resolució serveix per a validar raonaments i, gràcies a la
substitució de variables, per a respondre a determinades qüestions.
L’intèrpret ha “calculat” que l’Eliseu és l’avi de l’Enric. Però, si després de la
resposta de l’intèrpret l’usuari escriu “;” llavors el resultat és com el següent:
?- avi(X,enric)
X=eliseu?;
X=josep?;
YES.
Utilitzant el replantejament de la darrera decisió per a explorar totes les alternatives possibles, l’intèrpret és capaç de determinar que substituint X per Josep també pot demostrar la conclusió.
Lògica de predicats
© FUOC • PID_00265955
64
Resum
Aquest mòdul didàctic s’ha iniciat amb la constatació de la limitació expressiva del llenguatge de la lògica d’enunciats. Aquesta limitació és pal·liada pel
llenguatge de fórmules, del qual el d’enunciats és un subconjunt. Hem presentat els elements bàsics d’aquest nou llenguatge: els predicats, els termes –
variables i constants– i els quantificadors. I també la forma que tenen de relacionar-se entre si. Tot seguit, el llenguatge de fórmules s’ha posat al servei de
la formalització de frases, expressades en llenguatge natural.
La deducció natural s’ha ampliat amb quatre noves regles que permeten introduir i eliminar quantificadors. La presència d’aquests operadors proporciona a aquest mètode de validació una complexitat que no tenia en el cas de la
lògica d’enunciats i que, parcialment, pot ser pal·liada per la utilització de regles derivades i equivalències deductives.
Per a poder refutar raonaments d’invalidesa segura, o quasi segura, s’ha estudiat la manera de trobar-ne contraexemples. Abans ha estat necessari adaptar el concepte d’interpretació a la complexitat més gran del llenguatge de
fórmules.
En el camp de la manipulació algebraica, la forma normal de Skolem pren el
relleu de la forma normal conjuntiva. Per a calcular aquesta forma normal cal
eliminar els quantificadors existencials. El procés per a dur a terme aquesta eliminació rep el nom d’eskolemització.
Després hem tornat al mètode de resolució. Aquest, utilitzant les formes normals de Skolem i recolzant-se en la substitució de variables per termes, permet
validar i refutar raonaments expressats en el llenguatge de fórmules. Quan les
substitucions són complicades de calcular, l’algoritme d’unificació descriu,
fil per randa, el que cal fer.
Finalment, Prolog i la programació lògica mostren com la implementació
del mètode de resolució és un punt on lògica i informàtica conflueixen.
Lògica de predicats
© FUOC • PID_00265955
65
Exercicis d’autoavaluació
1. Digueu quines d’aquestes llistes de símbols són fórmules correctes del llenguatge de predicats i quines no ho són:
a) T(a,b,x)
b) a  b
c) T(x,y Q(y),a)
d) x y P(x,y)
e) x Q(x)y Q(y)
f) x (y Q(a)  z (P(x,z)  T(a,b,z)))
g) z (T(x,y,z)  P(z,z))
h) x  z P(x,z)
i) x z
j) x z P(x,z)
k) a x y T(a,x,y)
2. Digueu quines variables són lliures, quines són lligades i en l’àmbit de quin quantificador
es troben. En cas que dues variables tinguin el mateix nom, digueu si són diferents o són la
mateixa variable:
a) x Q(x)  y P(x,y)
b) x Q(a)  y P(x,y)
c) x (y T(x,y,z)  x Q(x)  z P(x,z))
d) x y (z R(x,y,z,t)  y T(x,y,t)  Q(y))
e) x (x Q(x)  P(x,x))  T(x,x,x)
f) x y z (t R(x,y,z,t)  x P(x,t))
g) x (x P(x,x)  Q(a)  y R(a,x,a,y)  T(y,y,x))
3. Formalitzeu les frases que donem a continuació. Utilitzeu els predicats que s’indica entre
parèntesis:
a) Les pomes i les taronges són gustoses i nutritives (P(x): “x és una poma”; T(x): “x és una
taronja”; G(x): “x és gustós”; N(x): “x és nutritiu”).
b) Hi ha aliments que només es poden menjar si són cuits (A(x): “x és un aliment”; M(x): “x
es pot menjar”; C(x): “x és cuit”).
c) Sense frens, no hi ha cap auto segur (F(x): “x té frens”; A(x): “x és un auto”; S(x): “x és
segur”).
d) No tothom és ric, culte i educat, ni tots els rics són educats i cultes (R(x): “x és ric”; C(x):
“x és culte”; E(x): “x és educat”. Domini: conjunt de totes les persones).
e) No totes les coses comprades a baix preu són flonges i trencadisses (C(x): “x és una cosa”;
B(x): “x ha estat comprat a baix preu”; F(x): “x és flonjo”; T(x): “x és trencadís”).
f) No tot home que deserta és un covard (H(x): “x és un home”; D(x): “x deserta”; C(x): “x
és covard”).
4. Formalitzeu les frases següents tenint en compte els dominis que es proposen:
a) Totes les persones són honrades (domini: el conjunt de les persones).
b) Totes les persones són honrades (domini: un conjunt no buit qualsevol).
c) Algunes persones són honrades (domini: el conjunt de les persones).
d) Algunes persones són honrades (domini: un conjunt no buit qualsevol).
e) En Joan és honrat (domini: el conjunt de les persones).
f) En Joan és honrat (domini: un conjunt no buit qualsevol).
g) Les persones honrades es tracten amb tothom (domini: el conjunt de les persones).
h) Les persones honrades es tracten amb tothom (domini: un conjunt no buit qualsevol).
i) Les persones honrades només es tracten amb gent honrada (domini: el conjunt de les persones).
j) Les persones honrades només es tracten amb gent honrada (domini: un conjunt no buit
qualsevol).
k) Algunes persones honrades només es tracten amb gent honrada (domini: el conjunt de
les persones).
l) Hi ha gent no honrada que no tracta ningú (domini: el conjunt de les persones).
m) Hi ha gent no honrada que no tracta ningú (domini: un conjunt no buit qualsevol).
n) En Joan i la Maria es tracten mútuament (domini: el conjunt de les persones honrades).
o) En Joan tracta algunes persones honrades (domini: el conjunt de les persones honrades).
p) En Joan tracta algunes persones honrades (domini: un conjunt no buit qualsevol).
5. Formalitzeu les frases següents, utilitzant els predicats que s’indica. Si no es diu explícitament el contrari, el domini és un conjunt no buit qualsevol:
a) N’hi ha de blancs i n’hi ha de negres, però no n’hi ha que siguin blancs i negres alhora
(B(x): “x és blanc”; N(x): “x és negre”).
b) Els homes i les dones tenen sentiments (H(x): “x és un home”; D(x): “x és una dona”; T(x):
“x té sentiments”).
c) Tots els nombres racionals són reals, però només alguns nombres reals són racionals (domini: conjunt de tots els nombres; Q(x): “x és racional”; R(x): “x és real”).
Lògica de predicats
© FUOC • PID_00265955
66
d) No tots els productes cars són de qualitat (P(x): “x és un producte”; C(x): “x és car”; Q(x):
“x és de qualitat”).
e) Només les persones molt intel·ligents són sòcies del club (domini: el conjunt de totes les
persones; I(x): “x és molt intel·ligent”; S(x): “x és soci del club”).
f) Tots els esportistes federats tenen una assegurança (domini: el conjunt de tots els esportistes; F(x): “x està federat”; T(x): “x té una assegurança”).
g) Tots els esportistes federats tenen una assegurança (domini: un conjunt no buit qualsevol; E(x): “x és un esportista”; F(x): “x està federat”; A(x): “x és una assegurança”; T(x,y):
“x té y”).
h) Si no hi ha subvencions, cap institució no funciona correctament (S(x): “x és una subvenció”; I(x): “x és una institució”; F(x): “x funciona correctament”).
i) Certs espectadors admiren tots els presentadors, però no hi ha cap presentador que admiri tots els espectadors (E(x): “x és un espectador”; P(x): “x és un presentador”; A(x,y): “x
admira y” –“y és admirat per x”–).
j) Tots els animals que viuen en un zoo senten nostàlgia de la llibertat (A(x): “x és un animal”; Z(x): “x és un zoo”; V(x,y): “x viu a y”; N(x): “x sent nostàlgia de la llibertat”).
k) Hi ha persones que compren tots els objectes que apareixen en els catàlegs (P(x): “x és una
persona”; O(x): “x és un objecte”; C(x): “x és un catàleg”; B(x,y): “x compra y”; A(x,y): “x
apareix a y”).
l) Hi ha persones que compren tots els objectes que apareixen en tots els catàlegs (P(x): “x
és una persona”; O(x): “x és un objecte”; C(x): “x és un catàleg”; B(x,y): “x compra y”;
A(x,y): “x apareix a y”).
m) Cada persona misteriosa té algun secret que els seus veïns desconeixen (P(x): “x és una
persona misteriosa”; S(x): “x és un secret”; T(x,y): “x té y” –“y és de x”–; V(x,y): “x és veí
de y”; D(x,y): “x desconeix y”).
6. Formalitzeu les frases següents en els dominis que s’indica. Abans de fer la formalització,
heu de dir quins predicats utilitzareu i amb quin significat:
a) Només els catalans mengen escudella (domini: el conjunt de tots els europeus).
b) A cada empresa treballa un administratiu poc honrat (domini: un conjunt no buit qualsevol).
c) Cada diputat s’asseu en un escó (domini: un conjunt no buit qualsevol).
d) Hi ha un escó on s’han assegut tots els diputats (domini: un conjunt on hi ha escons i
diputats).
e) Hi ha periodistes que coneixen tots els secrets dels famosos (domini: un conjunt no buit
qualsevol).
f) Els informàtics només entenen els informàtics (domini: un conjunt qualsevol de persones).
g) Quan un membre de la colla es troba malament, tots es posen de mal humor (domini: el
conjunt format per tots els membres de la colla).
h) Quan un membre de la colla es troba malament, tots es posen de mal humor (domini: un
conjunt de persones qualsevol).
7. Formalitzeu les frases que es donen a continuació utilitzant únicament i exclusivament
els predicats següents: O(x): “x és una ovella”; P(x): “x és un pastor”; T(x,y): “x té y” (“x és
propietari de y”); N(x): “x és negre”; A(x): “x és alegre”.
a) Hi ha pastors que no tenen ovelles.
b) Si un pastor té ovelles, llavors en té alguna de negra.
c) Si un pastor no té cap ovella negra, llavors en té alguna d’alegre.
d) Hi ha un pastor que només té ovelles negres (no té res més que no siguin ovelles negres).
e) Hi ha un pastor que, d’ovelles, només en té de negres.
f) Si s’és pastor, cal tenir ovelles negres per a tenir-ne d’alegres.
g) Hi ha una ovella que és propietat de tots els pastors.
h) Hi ha un pastor que és el propietari de totes les ovelles negres.
8. Formalitzeu les frases que es donen a continuació, utilitzant únicament i exclusivament
els predicats següents: H(x): “x és home”; D(x): “x és dona”; A(x): “x és animal”; G(x): “x és
gos”; T(x,y): “x té y” (“x és propietari de y”); C(x,y): “x i y estan casats”; N(x): “x és noble”; I(x):
“x és intel·ligent”; a (constant): “L’Anna”; b (constant): “En Bobby”; c (constant): “En Carles”.
a) Els gossos nobles són animals intel·ligents.
b) Si en Carles és propietari d’en Bobby, l’Anna també ho és.
c) Cal ser propietari d’un gos noble per a ser un home intel·ligent.
d) Tots els animals nobles i intel·ligents són propietat d’en Carles.
e) Si tots els propietaris d’en Bobby són intel·ligents, llavors l’Anna està casada amb algun
home noble.
f) Si tots els gossos fossin nobles, cada animal intel·ligent seria propietat d’alguna dona.
g) Cada home casat amb una dona intel·ligent és propietari d’un gos noble.
h) Hi ha homes i dones que són propietaris d’animals, però que no són intel·ligents.
i) L’Anna és una dona noble que és propietària de tots els gossos que no són propietat de
cap home.
j) Tots els homes casats amb dones que no són propietàries de cap animal intel·ligent tenen
un gos noble.
Lògica de predicats
© FUOC • PID_00265955
67
9. Demostreu, utilitzant les regles de la deducció natural, que els raonaments següents són
correctes.
a) x (H(x)  M(x)), M(a)  H(a)
b) x (H(x)  M(x)), y M(y)  z H(z)
c) x (H(x)  D(x)), D(a)  H(a)
d) x (H(x)  D(x)), y D(y)  z H(z)
e) x (M(x)  H(x)), x H(x)  x M(x)
f) x (H(x)  M(x)  F(x)), y (H(y)  M(y))  z F(z)
g) x A(x)  x A(x)
h) x A(x)  x A(x)
i) x y P(x,y)  y x P(x,y)
j) x [P(x)  y(G(y)  T(x,y))  M(x)], G(b)  T(a,b)  M(a)  z P(z)
10. Demostreu amb les regles de la deducció natural que els raonaments següents són correctes:
a) x (C(x)  N(x)  P(x)), x (C(x)  O(x)  P(x)), x (O(x)  S(x))  x (C(x)  S(x)  N(x))
b) x (H(x)  M(x)), y M(y)  z H(z). Plantegeu la demostració com una reducció a
l’absurd i proveu de fer-la sense utilitzar les lleis de De Morgan).
c) x (H(x)  M(x)  F(x)), x (H(x)  M(x))  z (H(z)  F(z)). Atenció, la fórmula x (H(x)  M(x))
és la negació d’una fórmula quantificada existencialment –la connectiva principal no és
el quantificador existencial. No seria correcte aplicar-hi la regla E per a obtenir, per
exemple, (H(a)  M(a)). Plantegeu la demostració com una reducció a l’absurd i utilitzeu
les lleis de De Morgan i totes les equivalències deductives que us calguin.
d) x (H(x)  D(x)), y D(y)  z H(z)
e) x [C(x)  P(x)]  x y [M(x)  C(y)  F(x,y)], M(a), z (C(z)  F(a,z))  x (C(x)  P(x))
f) x [y P(x,y)  z S(x,z)], y x P(x,y)  x z S(x,z)
g) x P(x,x)  x y P(x,y). Plantegeu la demostració com una reducció a l’absurd i utilitzeu
les lleis de De Morgan tantes vegades com calgui.
h) x [P(x)  y (M(y)  A(x,y))], x [P(x)  y (C(y)  A(x,y))]  x (M(x)  C(x)). Plantegeu la demostració com una reducció a l’absurd i utilitzeu les lleis de De Morgan i altres
equivalències deductives tantes vegades com calgui.
11. Valideu per deducció natural els raonaments següents:
a) x y [M(x)  G(x,y)  P(x,y)], P(a,b), G(a,b)  M(a)
b) x A(x)  y B(y), x (B(x)  C(x)), x C(x)  x A(x)
c) x A(x)  y B(y)  z (A(z)  B(z))
d) x {O(x)  y [G(y)  A(x,y)]}, x (P(x)  G(x))  x {O(x)  y [P(y)  A(x,y)]}
12. Per al raonament x y (Q(x)  P(y,x)) y x (Q(x)  P(y,x)):
a) Digueu si la interpretació <{1, 2}, {Q(1)  V, Q(2)  V, P(1,1)  V, P(1,2)  F, P(2,1)  F, P(2,2) 
V}, > n’és un contraexemple o no. Es pot afirmar alguna cosa respecte de la validesa del raonament?
b) Doneu, si n’hi ha, una interpretació en un domini d’un sol element, que en sigui un contraexemple.
c) Doneu, si n’hi ha, una interpretació en un domini de dos elements que no en sigui un
contraexemple.
13. Donat el raonament x P(x,x), x y (P(x,y)  P(y,x)) x y P(x,y), digueu si alguna
d’aquestes tres interpretacions n’és un contraexemple:
I1: <{1}, {P(1,1)  V}, >
I2: <{1, 2}, {P(1, 1)  V, P(1, 2)  V, P(2, 1)  F, P(2, 2)  V}, >
I3: <{1, 2}, {P(1, 1)  V, P(1, 2)  F, P(2, 1)  F, P(2, 2)  F}, >
Considerant només aquestes tres interpretacions es pot afirmar alguna cosa sobre la validesa
del raonament?
14. Donat el raonament x [P(x)  y Q(x,y)] , x y Q(x,y)  x P(x), digueu si alguna
d’aquestes tres interpretacions n’és un contraexemple:
I1: < {1, 2}, {P(1)  F, P(2)  F, Q(1,1)  V, Q(1,2)  V, Q(2,1)  V, Q(2,2)  V}, >
I2: < {1, 2}, {P(1)  V, P(2)  V, Q(1,1)  V, Q(1,2)  V, Q(2,1)  F, Q(2,2)  F}, >
I3: < {1, 2}, {P(1)  V, P(2)  F, Q(1,1)  V, Q(1,2)  V, Q(2,1)  F, Q(2,2)  F}, >
Considerant només aquestes tres interpretacions es pot afirmar alguna cosa sobre la validesa
del raonament?
15. Donat el raonament x y (A(x)  R(x,y)  C(y)), A(a), x y R(x,y)  x C(x), digueu si
alguna d’aquestes tres interpretacions n’és un contraexemple:
I1: <{1}, {A(1)  V, C(1)  V, R(1, 1)  V}, {a  1}>
I2: <{1, 2}, {A(1)  V, A(2)  V, C(1)  V, C(2)  V, R(1,1)  F, R(1,2)  F, R(2,1)  F, R(2,2)  F}, {a  1}>
I3: <{1, 2}, {A(1)  V, A(2)  F, C(1)  F, C(2)  F, R(1,1)  F, R(1,2)  F, R(2,1)  V, R(2,2)  V}, {a  1}>
Considerant només aquestes tres interpretacions es pot afirmar alguna cosa sobre la validesa
del raonament?
Lògica de predicats
© FUOC • PID_00265955
68
16. Els raonaments que es donen a continuació no són correctes. Formalitzeu-los i doneu un
contraexemple per a cadascun:
a) Els polítics són intel·ligents. Alguns funcionaris també ho són. Per tant, hi ha polítics que
són funcionaris.
b) Hi ha dones responsables. Consegüentment, tothom és responsable.
c) Només els que s’han examinat poden ser aptes. Només els aptes poden ser recomanats.
D’això es desprèn que tots els examinats són recomanats.
d) Tots els marcians tenen un desintegrador. De desintegradors, no n’hi ha. Per tant, hi ha
marcians que no tenen cap desintegrador.
17. Trobar la forma normal de Skolem de les fórmules:
a) x {P(x)  y [O(y)  T(x,y)]}
b) x [P(x)  y Q(x,y)]  z R(z)
c) x [P(x)  y Q(x,y)]  z u R(z,u)
d) x {P(x)  y [O(y)  T(x,y)]  z [O(z)  N(z)  T(x,z)]}
e) x {P(x)  y [R(x,y)  z T(y,z)]  u Q(x,u)}
f) x {P(x)  y [T(x,y)  O(y)  N(y)]}
18. En obtenir la forma normal de Skolem de les fórmules següents s’ha comès errors. Trobeulos i esmeneu-los (els nombres romans indiquen els diferents passos que s’efectuen):
a)
i)x y [Q(x)  R(y)  T(x,y)]
ii)x y [(Q(x)  R(y))  T(x,y)]
iii)x y [Q(x)  R(y)  T(x,y)]
b)
i)y x T(x,y)  z Q(z)
ii)x T(x,a)  Q(a)
c)
i)y x [T(x,y)  z Q(z,y)]
ii)y x [T(x,y)  z Q(z,y)]
iii)x [T(x,a)  Q(b,y)]
d)
i)y [C(y)  x T(x,y)]  z [R(z)  t T(t,z)]
ii)y [C(y)  x T(x,y)]  z [R(z)  t T(t,z))]
iii)[C(a)  x T(x,a)]  z [R(z)  T(f(z),z)]
iv)x z [(C(a)  T(x,a))  R(z)  T(f(z),z)]
e)
i)x [C(x)  y T(x,y)  z R(z)]
ii)x [C(x)  T(x,f(x))  z R(z)]
iii)x [(C(x)  T(x,f(x)))  z R(z)]
iv)x [C(x)  T(x,f(x))  z R(z)]
v)x z [C(x)  T(x,f(x))  R(z)]
f)
i)x [Q(x)  R(x)]  y z T(y,z)
ii)x [Q(x)  R(x)]  y z T(y,z)
iii)x[Q(x) R(x)]  y z T(y,z)
iv)x [Q(x)  R(x)]  y z T(y,z)
v)[Q(a)  R(a)]  y T(y,f(y))
vi)y [(Q(a)  R(a))  T(y,f(y))]
vii)y [(Q(a)  T(y,f(y)))  (R(a)  T(y,f(y)))]
g)
i)x {R(x)  y z [T(y,z)  t (S(x,t,z)  Q(t))]}
ii)x {R(x)  y z [T(y,z)  t (S(x,t,z)  Q(t))]}
iii)x {R(x)z[T(f(x),z)  (S(x,g(z),z)  Q(g(z)))]}
iv)x z {R(x)  T(f(x),z)  [ S(x,g(z),z)  Q(g(z))]}
v)x z {[R(x)  T(f(x),z)  S(x,g(z),z)]  [R(x)  T(f(x),z)  Q(g(z))]}
h)
i)x y {T(x,y)  z t u [S(z,t,u)  R(x)  Q(y)]}
ii)x y {T(x,y)  z t u [S(z,t,u)  (R(x)  Q(y))]}
iii)x y {T(x,y)  u [S(f(x,y),f(x,y),u)  (R(x)  Q(y))]}
iv)x y u {T(x,y)  [S(f(x,y),f(x,y),u)  (R(x)  Q(y))]}
v)x y u {[T(x,y)  S(f(x,y),f(x,y),u)  R(x)]  [T(x,y)  S(f(x,y),f(x,y),u)  Q(y)]}
19. Utilitzeu el mètode de resolució per a esbrinar si els raonaments següents són correctes o no:
a) x y P(x,y)  y x P(x,y)
b) x [P(x)  y(G(y)  T(x,y))  M(x)], G(b)  T(a,b), M(a)  xP(x)
c) x (P(x)  Q(x)), x (R(x)  P(x))  x(Q(x)  R(x))
d) x [y P(x,y)  z S(x,z)], y x P(x,y)  x z S(x,z)
e) x A(x)  y B(y), x (B(x)  C(x)), x C(x)  x A(x)
f) x D(x), x[P(x)  y (D(y)  T(x,y))]  x [P(x)  y (D(y)  T(x,y))]
g) x [P(x)  y (C(y)  A(x,y))], x [P(x)  y (M(y)  A(x,y))] x (C(x)  M(x))
h) x P(x,x), x y (P(x,y)  P(y,x)) x y P(x,y)
Lògica de predicats
© FUOC • PID_00265955
69
20. Formalitzeu els raonaments següents i valideu-los utilitzant el mètode de resolució:
a) Cap astròleg no és amic de cap científic. Tots els físics són científics. Com a conclusió podem dir que cap astròleg no és amic de cap físic.
b) Hi ha pacients que senten admiració per tots els metges. No hi ha cap pacient que admiri
cap curandero. Així, doncs, no hi ha cap metge que sigui curandero.
c) L’Albert és feliç si a tots els seus amics els agrada la música. Avui no es veu l’Albert gaire
feliç. Deu ser que a algun amic seu no li agrada la música.
d) Tot nombre que es pot dividir per trenta-dos es pot dividir per quatre. Els nombres divisibles per quatre són parells. Els nombres que no són divisibles per dos no són parells.
Setanta-tres no és divisible per dos. Consegüentment, setanta-tres no es pot dividir per
trenta-dos.
e) Si hi ha lingüistes, hi ha traductors. Si hi ha traductors, tots els escriptors escriuen novel·les (cada escriptor escriu alguna novel·la). Les novel·les són escrits narratius. Totes les
novel·les són escrites per algun escriptor (cada novel·la és escrita per algun escriptor).
Doncs bé, tots els escriptors lingüistes escriuen algun escrit narratiu.
21. És possible que les següents aplicacions del mètode de resolució continguin errors. Digueu de quins errors es tracta, si n’hi ha, i com s’esmenarien. Les clàusules en negreta són el
conjunt de suport.
a) S  {A(x,y)  B(y,x), A(b,c), B(f(x),x), A(x,f(x))}
b) S  { C(x)  B(a,f(x)), C(b), B(x,z) }
El raonament que ha donat lloc al conjunt S no és correcte perquè començant amb la
clàusula del suport no es pot arribar a  i les premisses són consistents perquè del conjunt
{ C(x)B(a,f(x)), C(b)} no se pot obtenir la clàusula buida.
Lògica de predicats
© FUOC • PID_00265955
70
c) { B(x)  F(x,f(x)), A(y)  B(y)  F(x,f(x)), A(x), A(a)  F(c,z) }
No es pot continuar perquè la clàusula A(x) no es pot resoldre contra A(a)  A(y), ja
que x i y són dues variables diferents i, per tant, la discrepància és irresoluble.
d) {A(x)  B(a), D(x,y,z)  B(y), C(u)  B(u), C(a), A(z), A(b)  D(b,a,c)}
Lògica de predicats
71
© FUOC • PID_00265955
Solucionari
1.
a) Correcta, perquè T és un predicat ternari, a i b són constants i x és una variable.
b) Incorrecta, perquè a i b són constants i no fórmules.
c) Incorrecta, perquè y Q(y) no és un terme.
d) Correcta, perquè P(x,y) és una fórmula atòmica i y P(x,y) i x y P(x,y) són fórmules correctes.
e) Correcta.
f) Correcta.
g) Incorrecta, perquè el quantificador universal, de fet qualsevol quantificador, ha de precedir una variable i a P(z,z) no ho fa.
h) Incorrecta, perquè la conjunció ha de “connectar” dues fórmules i x no és una fórmula.
i) Incorrecta, perquè igual que en el cas anterior, z no és una fórmula i, en conseqüència,
tampoc no ho és z; llavors, x z tampoc no és cap fórmula.
j) Correcta, perquè P(x,z) és una fórmula; llavors, z P(x,z) també ho és. Atès que z P(x,z)
és una fórmula, z P(x,z) també ho és. Llavors x z P(x,z) és una fórmula i, finalment,
x z P(x,z) també ho és.
k) Incorrecta, perquè les constants no es poden quantificar.
2. Per a aquesta solució s’utilitzaran subíndexs per a indicar quines variables són “la mateixa
variable”. Atenció!, la utilització de subíndexs no es preveu en l’escriptura de fórmules, sinó
que és només un recurs utilitzat en aquest exercici amb el propòsit de fer la solució més clara.
a) x1 Q(x1)  y2 P(x3,y2). La variable x3 és lliure.
b) x1 Q(a)  y2 P(x3,y2). La variable x3 és lliure.
c) x1(y2 T(x1,y2,z3)  x4 Q(x4)  z5 P(x1,z5)). La variable z3 és lliure.
d) x1 y2 (z3 R(x1,y2,z3,t4)  y5 T(x1,y5,t4)  Q(y2)). La variable t4 és lliure.
e) x1 (x2 Q(x2)  P(x1,x1))  T(x3,x3,x3). La variables x3 és lliure.
f) x1 y2 z3 (t4 R(x1,y2,z3,t4)  x5 P(x5,t6)). La variable t6 és lliure.
g) x1 (x2 P(x2,x2)  Q(a)  y3 R(a,x1,a,y3)  T(y4,y4,x1)). La variable y4 és lliure.
3.
a) x [P(x)  T(x)  G(x)  N(x)].
També és correcta: x [P(x)  G(x)  N(x)]  y [T(y)  G(y)  N(y)].
Són deductivament equivalents.
b) x [A(x)  (M(x)  C(x))]
O també: x [A(x)  (C(x)  M(x))].
Són deductivament equivalents. Observeu que la condició que s’expressa és de necessitat.
c) x [A(x)  (F(x)  S(x))]
O també: x [A(x)  (S(x)  F(x))]
O també: x [A(x)  F(x)  S(x)]
Totes tres són deductivament equivalents.
d) x [R(x)  C(x)  E(x)]  x [R(x)  C(x)  E(x)]
O també: x [R(x)  C(x)  E(x)]  x [R(x)  (C(x)  E(x))]
Són equivalents.
e) x [C(x)  B(x)  F(x)  T(x)]
O també: x [C(x)  B(x)  (F(x)  T(x))]
Són equivalents.
f) x [H(x)  D(x)  C(x)], o també:
x [H(x)  D(x)  C(x)]
Són equivalents.
4.
a) H(x): “x és honrat”
x H(x)
b) P(x): “x és una persona”; H(x): “x és honrat”
x (P(x)  H(x))
c) H(x): “x és honrat”
x H(x)
d) P(x): “x és una persona”; H(x): “x és honrat”
x (P(x)  H(x))
e) H(x): “x és honrat”; a: “En Joan”
H(a)
Lògica de predicats
72
© FUOC • PID_00265955
f) H(x): “x és honrat”; a: “En Joan”
H(a)
Observeu que aquesta formalització no “afirma” que en Joan sigui una persona. Si creiem
que sí que ho és i que cal explicitar-ho, llavors: P(x): “x és una persona”; H(x): “x és honrat”; a: “En Joan”
P(a)  H(a)
g) H(x): “x és honrat”; T(x,y): “x es tracta amb y”
x (H(x)  y T(x,y))
h) P(x): “x és una persona”; H(x): “x és honrat”; T(x,y): “x es tracta amb y”
x (P(x)  H(x)  y (P(y)  T(x,y)))
Observeu que hem entès que “tothom” vol dir “totes les persones”.
i) H(x): “x és honrat”; T(x,y): “x es tracta amb y”
x (H(x)  y (T(x,y)  H(y)))
Observeu que hem entès que “gent” és sinònim de “persones”.
j) P(x): “x és una persona”; H(x): “x és honrat”; T(x,y): “x es tracta amb y”
x (P(x)  H(x)  y (T(x,y)  P(y)  H(y)))
k) H(x): “x és honrat”. T(x,y): “x es tracta amb y”
x (H(x)  y (T(x,y)  H(y)))
l) H(x): “x és honrat”; T(x,y): “x es tracta amb y”
x (H(x)  y T(x,y))
m) P(x): “x és una persona”; H(x): “x és honrat”; T(x,y): “x tracta y”
x (P(x)  H(x)  y (P(y)  T(x,y)))
Observeu que hem entès que “ningú” vol dir “cap persona”.
n) T(x,y): “x tracta y”: a: “En Joan”; b: “La Maria”
T(a,b)  T(b,a)
o) T(x,y): “x tracta y”; a: “En Joan”
x T(a,x)
p) P(x): “x és una persona”; H(x): “x és honrat”; T(x,y): “x tracta y”; a: “En Joan”
x (P(x)  H(x)  T(a,x))
Aquesta formalització no “afirma” que en Joan sigui una persona, ni molt menys que sigui
honrat. Si volguéssim mantenir la mateixa semàntica del punt anterior caldria formalitzar:
x (P(x)  H(x)  T(a,x))  P(a)  H(a)
5.
a) x B(x)  y N(y)  z (B(z)  N(z))
Totes les formalitzacions següents també serien correctes (són equivalents a la donada):
x B(x)  x N(x)  x (B(x)  N(x)),
x B(x)  y N(y)  z (B(z)  N(z)) i
x B(x)  y N(y)  z (B(z)  N(z))
b) x (H(x)  D(x)  T(x))
També serien correctes:
x (H(x)  T(x))  y (D(y)  T(y)) i
x (H(x)  T(x))  x (D(x)  T(x)).
En canvi, no seria correcta: x (H(x)  D(x)  T(x)).
Lògica de predicats
73
© FUOC • PID_00265955
c) x (Q(x)  R(x))  y (R(y)  Q(y))  z (R(z)  Q(z))
També seria correcta:
x (Q(x)  R(x))  y (R(y)  Q(y))  z (R(z)  Q(z)).
Observeu que “Només alguns nombres reals són racionals” s’ha interpretat com “Hi ha reals que són racionals, però no tots els reals són racionals”.
d) Observeu que la manera més senzilla de formalitzar aquesta frase és negar la formalització
de “Tots els productes cars són de qualitat”:
x (P(x)  C(x)  Q(x))
També seria correcta: x (P(x)  C(x)  Q(x)).
e) x (S(x)  I(x)). També seria correcta: x (I(x)  S(x)).
Observeu que la frase expressa una condició necessària: ser molt intel·ligent és necessari
per a ser soci del club.
f) x (F(x)  T(x))
g) x [E(x)  F(x)  y (A(y)  T(x,y))]
h) x S(x)  y (I(y)  F(y))
També serien correctes: x S(x)  x (I(x)  F(x)) i x S(x)  y (I(y)  F(y)).
Observeu que la frase donada és una implicació i que cada part de la implicació és una
fórmula quantificada.
i) x [E(x)  y (P(y)  A(x,y))]  x [P(x)  y (E(y)  A(x,y))]
j) x [A(x)  y (Z(y)  V(x,y))  N(x)]
k) x {P(x)  y [O(y)  z (C(z)  A(y,z))  B(x,y)]}
l) x {P(x)  y [O(y)  z (C(z)  A(y,z))  B(x,y)]}
m) x {P(x)  y [S(y)  T(x,y)  z (V(z,x)  D(z,y))]}
6.
a) C(x): “x és català”; M(x): “x menja escudella”
x (M(x)  C(x))
També seria correcta: x (C(x)  M(x)).
Atès que la frase expressa una condició necessària (cal ser català per a menjar escudella),
la formalització x (C(x)  M(x)) no seria correcta.
b) E(x): “x és una empresa”; A(x): “x és un administratiu”; P(x): “x és poc honrat”; T(x,y): “x
treballa a y”
x [E(x)  y (A(y)  P(y)  T(y,x))]
També hauria estat correcte no distingir entre “ser administratiu” i “ser poc honrat”, utilitzant un sol predicat H(x): “x és un administratiu poc honrat”. Llavors, la formalització
seria:
x [E(x)  y (H(y)  T(y,x))]
c) D(x): “x és un diputat”; E(x): “x és un escó”; S(x,y): “x s’asseu a y”
x [D(x)  y (E(y)  S(x,y))]
d) D(x): “x és un diputat”; E(x): “x és un escó”; S(x,y): “x s’asseu a y” (o “x s’ha assegut a y”)
x [E(x)  y (D(y)  S(y,x))]
e) P(x): “x és un periodista”; S(x): “x és un secret”; F(x): “x és famós”; T(x,y): “x és de y”;
C(x,y): “x coneix y”
x {P(x)  y [S(y)  z (F(z)  T(y,z))  C(x,y)]}
També hauria estat correcte prescindir dels predicats S(x) i F(x) amb el significat que se’ls
ha atorgat i haver utilitzat M(x): “x és un secret d’un famós”. Llavors, la formalització hauria estat: x [P(x)  y (M(y)  C(x,y))].
f) I(x): “x és un informàtic”; E(x,y): “x entén y”
x [I(x)  y (E(x,y)  I(y))]
g) M(x): “x es troba malament”; H(x): “x es posa de mal humor”
x M(x)y H(y)
També és correcta: xM(x)  xH(x).
Lògica de predicats
74
© FUOC • PID_00265955
h) C(x): “x és membre de la colla”; M(x): “x es troba malament”; H(x): “x es posa de mal humor”
x (C(x)  M(x))  y (C(y)  H(y)).
També és correcta: x (C(x)  M(x))  x (C(x)  H(x)).
Observeu que hem interpretat que “Tots es posen de mal humor” vol dir “Tots els membres de la colla”.
7.
a) x {P(x)  y [O(y)  T(x,y)]}
b) x {P(x)  [y (O(y)  T(x,y))  z (O(z)  N(z)  T(x,z))]}
c) x {P(x)  [y (O(y)  N(y)  T(x,y))  z (O(z)  A(z)  T(x, z))]}
d) x {P(x)  y [T(x, y)  O(y)  N(y)]}
e) x {P(x)  y [T(x, y)  O(y)  N(y)]}
f) x {P(x)  [y (O(y)  N(y)  T(x,y))  z (O(z)  A(z)  T(x, z))]}
g) x {O(x)  y [P(y)  T(y,x)]}
h) x {P(x)  y [O(y)  N(y)  T(x,y)]}
8.
a) x [G(x)  N(x)  A(x)  I(x)]
b) T(c,b)  T(a,b)
c) x [H(x)  I(x)  y (G(y)  N(y)  T(x,y))]
O també: x [y (G(y)  N(y)  T(x,y))  (H(x)  I(x))]
d) x [A(x)  N(x)  I(x)  T(c,x)]
e) x [T(x,b)  I(x)]  x [H(x)  N(x)  C(a,x)]
f) x [G(x)  N(x)]  x [A(x)  I(x)  y (D(y)  T(y,x))]
g) x [H(x)  y (D(y)  I(y)  C(x,y))  z (G(z)  T(x,z)  N(z))]
h) x [H(x)  y (A(y)  T(x,y))  I(x)]  x [D(x)  y (A(y)  T(x,y))  I(x)],
O també: x [(H(x)  D(x))  y (A(y)  T(x,y))  I(x)]
i) N(a)  D(a)  x [G(x)  y (H(y)  T(y,x))  T(a,x)]
j) x {H(x)  y [D(y)  z (A(z)  I(z)  T(y,z))  C(x,y)]  t (G(t)  N(t)  T(x,t))}
9.
a)
(1)
x (H(x)  M(x))
P
(2)
M(a)
P
(3)
H(a)  M(a)
E 1
(4)
H(a)
MT 2, 3
Observeu que el pas 3 és correcte perquè x està quantificada universalment i, per tant, pot
ser substituïda per qualsevol terme.
b)
(1)
x (H(x)  M(x))
P
(2)
y M(y)
P
(3)
M(a)
E 2
(4)
H(a)  M(a)
E 1
(5)
H(a)
MT 3, 4
(6)
z H(z)
I 5
Fixeu-vos que en el pas 4 es tria la constant a per a eliminar el quantificador universal
perquè amb qualsevol altre terme no seria possible aplicar la regla MT en el pas 5.
c)
(1)
x (H(x)  D(x))
P
(2)
D(a)
P
(3)
H(a)  D(a)
E 1
(4)
H(a)
SD 2, 3
Lògica de predicats
75
© FUOC • PID_00265955
d)
(1)
x (H(x)  D(x))
P
(2)
y D(y)
P
(3)
D(a)
E 2
(4)
H(a)  D(a)
E 1
(5)
H(a)
SD 3, 4
(6)
z H(z)
I 5
Fixeu-vos que cal eliminar primer el quantificador existencial i, posteriorment, l’universal. La demostració següent no seria correcta:
(1)
x (H(x)  D(x))
P
(2)
y D(y)
P
(3)
H(a)  D(a)
E 1
(4)
D(a)
E 2 incorrecte!
(5)
H(a)
SD 3,4
(6)
z H(z)
I 5
En aquest cas el pas 4 és incorrecte perquè s’utilitza una constant que ja ha aparegut
abans.
e)
(1)
x (M(x)  H(x))
P
(2)
x H(x)
P
(3)
M(z)  H(z)
E 1
(4)
H(z)
E 2
(5)
M(z)
MT 3, 4
(6)
M(z)
E 5
(7)
x M(x)
I 6
Observeu que el pas 7 és correcte perquè la variable z era arbitrària: en el pas 3, z ha estat
utilitzada per a eliminar el quantificador universal d’1, però es podria haver utilitzat qualsevol altre terme. Fixeu-vos també que en el pas 4 s’ha utilitzat la mateixa variable que en
el pas anterior per a poder aplicar després la regla MT.
f)
(1)
x (H(x)  M(x)  F(x))
P
(2)
y (H(y)  M(y))
P
(3)
H(a)  M(a)
E 2
(4)
H(a)  M(a)  F(a)
E 1
(5)
H(a)
E 3
(6)
M(a)  F(a)
E 4, 5
(7)
M(a)
E 3
(8)
F(a)
SD 6, 7
(9)
z F(z)
I 8
Lògica de predicats
76
© FUOC • PID_00265955
Fixeu-vos que, pel que fa a l’ordre en què els quantificadors s’han eliminat, s’ha seguit la
mateixa estratègia que en el punt d.
g)
(1)
x A(x)
P
(2)
x A(x)
H
(3)
A(a)
E 2
(4)
A(a)
E 1
(5)
x A(x)
I 2, 3, 4
(1)
x A(x)
P
h)
(2)
x A(x)
H
(3)
A(a)
E 1
(4)
A(a)
E 2
(5)
x A(x)
I 2, 3, 4
(1)
x y P(x,y)
P
(2)
y P(a,y)
E 1
(3)
P(a,t)
E 2
(4)
x P(x,t)
I 3
(5)
y x P(x,y)
I 4
(1)
x [P(x)  y (G(y)  T(x,y))  M(x)]
P
(2)
G(b)  T(a,b)  M(a)
P
(3)
P(a)  y (G(y)  T(a,y))  M(a)
E 1
(4)
M(a)
E 2
(5)
(P(a)  y (G(y)  T(a,y)))
MT 3, 4
(6)
P(a)  y (G(y)  T(a,y))
ED 5
(7)
G(b)  T(a,b)
E 2
(8)
y (G(y)  T(a,y))
I 7
(9)
P(a)
SD 6, 8
(10)
z P(z)
I 9
i)
j)
Tingueu present que, abans d’eliminar un quantificador universal, és necessari reflexionar sobre quin terme (una variable, una constant, quina constant), cal utilitzar per a l’eliminació? En aquest cas, ha calgut utilitzar la constant a per a poder, per exemple,
disposar de M(a) i, posteriorment, aplicar la regla MT.
Lògica de predicats
77
© FUOC • PID_00265955
10.
a)
(1)
x (C(x)  N(x)  P(x))
P
(2)
x (C(x)  O(x)  P(x))
P
(3)
x (O(x)  S(x))
P
(4)
C(a)  O(a)  P(a)
E 2
(5)
C(a)  N(a)  P(a)
E 1
(6)
P(a)
E 4
(7)
(C(a)  N(a))
MT 5, 6
(8)
C(a)  N(a)
ED 7
(9)
C(a)
E 4
(10)
N(a)
SD 8, 9
(11)
O(a)  S(a)
E 3
(12)
O(a)
E 4
(13)
S(a)
E 11, 12
(14)
C(a)  S(a)  N(a)
I 9, 10, 13
(15)
x (C(x)  S(x)  N(x))
I 14
(1)
x (H(x)  M(x))
P
(2)
y M(y)
P
b)
(3)
z H(z)
H
(4)
M(a)
E 2
(5)
H(a)  M(a)
E 1
(6)
H(a)
E 3
(7)
M(a)
E 5, 6
(8)
M(a)
it 4
(9)
z H(z)
I3, 7, 8
(1)
x (H(x)  M(x)  F(x))
P
(2)
x (H(x)  M(x))
P
c)
(3)
z (H(z)  F(z))
H
(4)
z (H(z)  F(z))
ED 3
(5)
(H(a)  F(a))
E 4
(6)
H(a)  F(a)
ED 5
(7)
H(a)  M(a)  F(a)
E 1
(8)
H(a)
E 6
(9)
M(a)  F(a)
E 7, 8
(10)
F(a)
E 6
(11)
M(a)
SD 9, 10
(12)
H(a)  M(a)
I 8, 11
(13)
x (H(x)  M(x))
I 12
(14)
x (H(x)  M(x))
it 2
(15)
z (H(z)  F(z))
I 3, 13, 14
(16)
z (H(z)  F(z))
E 15
Lògica de predicats
78
© FUOC • PID_00265955
Lògica de predicats
La demostració següent, que no és una reducció a l’absurd, també seria correcta:
(1)
x (H(x)  M(x)  F(x))
P
(2)
x (H(x)  M(x))
P
(3)
x (H(x)  M(x))
ED 2
(4)
(H(u)  M(u))
E 3
(5)
H(u)  M(u)
ED 4
(6)
H(u)
H
(7)
H(u)  F(u)
I 6
(8)
H(u)  F(u)
ED 7
(9)
M(u)
H
(10)
H(u)  M(u)  F(u)
E 1
(11)
F(u)
H
(12)
M(u)  F(u)
I 9, 11
(13)
(M(u)  F(u))
ED 12
(14)
H(u)
MT 10, 13
(15)
F(u)  H(u)
I 11, 14
(16)
H(u)  F(u)
ED 15
(17)
H(u)  F(u)
E 5, 8, 16
(18)
z (H(z)  F(z))
I 17
d)
(1)
x (H(x)  D(x))
P
(2)
y D(y)
P
(3)
y D(y)
ED 2
(4)
D(a)
E 3
(5)
H(a)  D(a)
E 1
(6)
H(a)
SD 4, 5
(7)
z H(z)
I 6
e)
(1)
x [C(x)  P(x)]  x y [M(x)  C(y)  F(x,y)]
P
(2)
M(a)
P
(3)
z (C(z)  F(a,z))
P
(4)
x (C(x)  P(x))
H
(5)
x y [M(x)  C(y)  F(x,y)]
E 1, 4
(6)
y [M(a)  C(y)  F(a,y)]
E 5
(7)
M(a)  C(b)  F(a,b)
E 6
(8)
M(a)
it 2
(9)
C(b)  F(a,b)
E 7, 8
(10)
C(b)  F(a,b)
E 3
(11)
C(b)
E 9
(12)
F(a,b)
E 10, 11
(13)
F(a,b)
E 9
(14)
x (C(x)  P(x))
I 4, 12, 13
79
© FUOC • PID_00265955
Lògica de predicats
Observeu el següent:
•
•
•
La primera premissa és una implicació ( és la connectiva principal). Per aquesta raó, és
lícit aplicar-hi la regla E quan es disposa de l’antecedent (pas 5).
La fórmula x y [M(x)  C(y)  F(x,y)] està quantificada universalment (és el resultat de
quantificar universalment una fórmula quantificada existencialment). Per aquest motiu,
el quantificador que s’elimina és l’universal (pas 6). Després es pot aplicar la regla E al
resultat d’aquesta eliminació. No seria correcte passar de x y [M(x)  C(y)  F(x,y)] a x
[M(x)  C(b)  F(x,b)] per eliminació del quantificador existencial.
En el pas 6, la constant utilitzada en aplicar E ha estat b. La constant a no podia utilitzarse perquè ja havia aparegut abans.
f)
(1)
x [y P(x,y)  z S(x,z)]
P
(2)
y x P(x,y)
P
(3)
x P(x,a)
E 2
(4)
P(t,a)
E 3
(5)
y P(t,y)
I 4
(6)
y P(t,y)  z S(t,z)
E 1
(7)
z S(t,z)
E 5, 6
(8)
x z S(x,z)
I 7
(1)
x P(x,x)
g)
P
x y P(x,y)
(2)
H
(3)
x y P(x,y)
ED 2
(4)
x y P(x,y)
ED 3
(5)
y P(a,y)
E 4
(6)
P(a,a)
E 5
(7)
P(a,a)
E 1
(8)
x y P(x,y)
I 2, 6, 7
(9)
x y P(x,y)
E 8

x y P(x,y)

Observeu que els punts 3 i 4 es podrien haver resumit en un de sol perquè:
x y P(x,y)
h)
(1)
x [P(x)  y (M(y)  A(x,y))]
(2)
x [P(x)  y (C(y)  A(x,y))]
x (M(x)  C(x))
(3)
P
P
H
(4)
x (M(x)  C(x))
ED 3
(5)
M(a)  C(a)
E 4
(6)
P(b)  y (M(y)  A(b,y))
E 1
(7)
x [P(x)  y (C(y)  A(x,y))] ED 2
(8)
P(b)  y (C(y)  A(b,y))
E 7
(9)
P(b)
E 6
(10)
y (C(y)  A(b,y))
E 8, 9
(11)
y (M(y)  A(b,y))
E 6
(12)
C(a)  A(b,a)
E 10
(13)
M(a)  A(b,a)
E 11
(14)
C(a)
E 5
(15)
M(a)
E 5
(16)
A(b,a)
E 12, 14
(17)
A(b,a)
E 13, 15
(18)
x (M(x)  C(x))
I 3, 16, 17
(19)
x (M(x)  C(x))
E 18
80
© FUOC • PID_00265955
Lògica de predicats
Observeu que el pas 7 és, en el fons, la interiorització de la negació de la segona premissa:





11.
a)
(1)
x y [M(x)  G(x,y)  P(x,y)]
P
(2)
P(a,b)
P
(3)
G(a,b)
P
(4)
y [M(a)  G(a,y)  P(a,y)]
E 1
(5)
M(a)  G(a,b)  P(a,b)
E 4
(6)
(M(a)  G(a,b))
MT 2, 5
(7)
M(a)  G(a,b)
ED 6
(8)
M(a)
SD 7, 3
(1)
x A(x)  y B(y)
P
(2)
x (B(x)  C(x))
P
(3)
x C(x)
P
(4)
x C(x)
ED 3
(5)
B(u)  C(u)
E 2
(6)
C(u)
E 4
(7)
B(u)
MT 5, 6
(8)
y B(y)
I 7
(9)
y B(y)
ED 8
(10)
x A(x)
MT 1, 9
(11)
x A(x)
ED 10
(1)
x A(x)  y B(y)
b)
c)
P
(2)
z (A(z)  B(z))
H
(3)
z (A(z)  B(z))
ED 2
(4)
z (A(z)  B(z))
ED 3
(5)
A(u)  B(u)
E 4
(6)
A(u)
E 5
(7)
x A(x)
I 6
(8)
y B(y)
E 1, 7
(9)
B(a)
E 8
(10)
A(a)  B(a)
E 4
(11)
B(a)
E 10
(12)
z (A(z)  B(z))
I 2, 9, 11
(13)
z (A(z)  B(z))
E 12









x [P(x)  y (C(y)  A(x,y))]
x [P(x)  y (C(y)  A(x,y))]
x [P(x)  y (C(y)  A(x,y))]
x [P(x)  y (C(y)  A(x,y))]
x [P(x)  y (C(y)  A(x,y))]
x [P(x)  y (C(y)  A(x,y))]
x [P(x)  y (C(y)  A(x,y))]
81
© FUOC • PID_00265955
Lògica de predicats
d)
(1)
x {O(x)  y [G(y)  A(x,y)]}
P
(2)
x (P(x)  G(x))
P
(3)
x {O(x)  y [P(y)  A(x,y)]}
H
(4)
O(a)  y [P(y)  A(a,y)]
E 3
(5)
y [P(y)  A(a,y)]
E 4
(6)
P(b)  A(a,b)
E 5
(7)
P(b)  G(b)
E 2
(8)
P(b)
E 6
(9)
G(b)
E 7, 8
(10)
A(a,b)
E 6
(11)
G(b)  A(a,b)
I 9, 10
(12)
y [G(y)  A(a,y)]
I 11
(13)
O(a)
E 4
(14)
O(a)  y [G(y)  A(a,y)]
I 12, 13
(15)
x {O(x)  y [G(y)  A(x,y)]}
I 14
(16)
x {O(x)  y [G(y)  A(x,y)]}
it 1
(17)
x {O(x)  y [P(y)  A(x,y)]}
I 3, 15, 16
12.
a) En el domini {1, 2}, la premissa del raonament és equivalent al següent:
x [(Q(x)  P(1,x))  (Q(x)  P(2,x))], que és equivalent a:
[(Q(1)  P(1,1))  (Q(1)  P(2,1))]  [(Q(2)  P(1,2))  (Q(2)  P(2,2))],
i el seu valor en la interpretació donada és:
[(V  V)  (V  F)]  [(V  F)  (V  V)]  V
Pel que fa a la conclusió, en el domini {1, 2} és equivalent a:
y [(Q(1)  P(y,1))  (Q(2)  P(y,2))], que és equivalent a:
[(Q(1)  P(1,1))  (Q(2)  P(1,2))]  [(Q(1)  P(2,1))  (Q(2)  P(2,2))],
i el seu valor en la interpretació donada és:
[(V  V)  (V  F) ]  [(V  F)  (V  V)]  F
Així, la interpretació és un contraexemple del raonament perquè fa certes les premisses i
falsa la conclusió. I això ens permet afirmar que el raonament no és vàlid.
b) En un domini d’un sol element, per exemple {1}, la premissa del raonament és equivalent
a Q(1)  P(1,1) i la conclusió és equivalent a Q(1)  P(1,1). Atès que es tracta del mateix
enunciat, és impossible fer cert el primer i fals el segon. En conseqüència, podem afirmar
que el raonament no té cap contraexemple en un domini d’un sol element.
c) Una interpretació no és un contraexemple si fa falsa alguna de les premisses o certa la
conclusió (o les dues coses simultàniament). Provarem de trobar una interpretació que
faci certa la conclusió.
Es tracta que sigui cert l’enunciat:
[(Q(1)  P(1,1))  (Q(2)  P(1,2))]  [(Q(1)  P(2,1))  (Q(2)  P(2,2))].
82
© FUOC • PID_00265955
Atès que és una disjunció, n’hi haurà prou de fer que un dels disjuntands sigui cert. Agafem el primer (Q(1)  P(1,1))  (Q(2)  P(1,2)). Una manera de fer-lo cert és que Q(1) 
F i Q(2)  F. Així, una interpretació que no és un contraexemple és:
<{1, 2}, {Q(1)  F, Q(2)  F, P(1,1)  V, P(1,2)  V, P(2,1)  V, P(2,2)  V}, >
i una altra és:
<{1, 2}, {Q(1)  F, Q(2)  F, P(1,1)  F, P(1,2)  V, P(2,1)  F, P(2,2)  V}, >
13. En el domini {1}, el raonament equival al següent:
P(1,1), P(1,1)  P(1,1)  P(1,1), que és vàlid.
Això vol dir que el raonament no té contraexemples en dominis de mida 1.
En el domini {1, 2} podem reescriure la primera premissa com a P(1,1)  P(2,2). La tercera
interpretació fa fals aquest enunciat i, en conseqüència, no és un contraexemple. També
en el domini {1, 2}, podem reescriure la conclusió del raonament de la manera següent:
(P(1,1)  P(1,2))  (P(2,1)  P(2,2)).
La segona interpretació fa cert aquest enunciat i, en conseqüència, tampoc no és un contraexemple.
Atès que cap de les tres interpretacions no és un contraexemple, no es pot afirmar que el
raonament sigui incorrecte. Ara bé, tampoc es pot afirmar que sigui correcte perquè potser hi ha alguna altra interpretació que sí que és un contraexemple.
De fet, el raonament no és correcte perquè la interpretació següent sí que és un contraexemple:
<{1, 2}, {P(1,1)  V, P(1,2)  F, P(2,1)  F, P(2,2)  V}, >
14. Totes tres interpretacions fan falsa la segona premissa i, llavors, cap de les tres no és un
contraexemple. El fet de no trobar un contraexemple no ens permet d’afirmar res sobre la
validesa o invalidesa del raonament. Ara bé, podem demostrar que el raonament és vàlid per
altres mitjans:
(1)
x [P(x)  y Q(x,y)]
P
(2)
x y Q(x,y)
P
(3)
x P(x)
H
(4)
P(a)
E 3
(5)
P(a)  y Q(a,y)
E 1
(6)
y Q(a,y)
E 4, 5
(7)
Q(a,b)
E 6
(8)
y Q(a,y)
E 2
(9)
Q(a,b)
E 8
(10)
x P(x)
I3, 7, 9
15. Un contraexemple ha de fer falsa la conclusió, però la primera i la segona interpretació
no la hi fan. La tercera interpretació sí que és un contraexemple pels motius següents:
•
La primera premissa es pot reescriure:
(A(1)  R(1,1)  C(1))  (A(1)  R(1,2) C(2)
 (A(2)  R(2,1)  C(1))  (A(2)  R(2,2)  C(2)),
i el seu valor en la tercera interpretació és:
(V  F  F)  (V  F  F)  (F  V  F)  (F  V  F)  V
•
•
La segona premissa es pot reescriure A(1) i és certa en la tercera interpretació.
Finalment, podem reescriure la tercera premissa de la manera següent:
R(1,1)  R(1,2)  R(2,1)  R(2,2)
i el seu valor en la tercera interpretació és F  F  V  V  V.
Atès que el raonament té, com a mínim, un contraexemple, podem afirmar que és incorrecte.
Lògica de predicats
83
© FUOC • PID_00265955
Lògica de predicats
16.
a) P(x): “x és un polític”; I(x): “x és intel·ligent”; F(x): “x és funcionari”
x (P(x)  I(x)), x (F(x)  I(x))  x (P(x)  F(x))
En un domini d’un sol element, per exemple {1}, el raonament és equivalent al següent:
P(1)  I(1), F(1)  I(1)  P(1)  F(1)
Fem la taula de veritat:
P(
1)
I(1
)
F(
1)
P(1)  I(1)
F(1)  I(1)
P(1)  F(1)
V
V
V
V
V
V
V
V
F
V
F
V
F
V
F
V
F
F
F
F
V
V
V
V
F
V
F
V
F
F
F
V
V
F
F
F
F
V
F
F
Descobrim que la interpretació <{1}, {P(1)  F, I(1)  V, F(1)  V}, > és un contraexemple.
b) D(x): “x és una dona”; R(x): “x és responsable”
x (D(x)  R(x))  x R(x)
En un domini d’un sol element el raonament no té cap contraexemple per la raó següent:
D(1)  R(1)  R(1) és un raonament correcte.
En un domini de dos elements, sí que hi ha contraexemples (cerquem una situació en què
no tots els elements del domini siguin “responsables”, però que un d’ells –una dona– sí
que ho sigui. D’aquesta manera farem certa la premissa i falsa la conclusió). Per exemple:
<{1, 2}, {D(1)  V, D(2)  V, R(1)  V, R(2)  F}, >
c) E(x): “x s’ha examinat”; A(x): “x pot ser (és) apte”; R(x): “x pot ser (és) recomanat”
x (A(x)  E(x)), x (R(x)  A(x))  x (E(x)  R(x))
En un domini d’un sol element, {1}, podem reescriure aquest raonament:
A(1)  E(1), R(1)  A(1)  E(1)  R(1)
Un contraexemple ha de fer fals E(1)  R(1). L’única possibilitat és E(1)  V i R(1)  F. Per
a fer cert A(1)  E(1) quan E(1)  V, pot ser A(1)  V. Així, un contraexemple del raonament és:
<{1}, {E(1)  V, A(1)  V, R(1)  F}, >
Amb A(1)  F també s’aconsegueix que la primera premissa sigui certa.
d) M(x): “x és un marcià”; D(x): “x és un desintegrador”; T(x,y): “x té y”
x [M(x)  y (D(y)  T(x,y))], x D(x)  x[M(x)  y (D(y)  T(x,y))]
En un domini d’un sol element el raonament es pot reescriure:
M(1)  D(1)  T(1,1), D(1)  M(1)  D(1)  T(1,1))
Un contraexemple ha de fer cert D(1) i l’única possibilitat és D(1)  F. La conclusió del
raonament ha de ser falsa. Si M(1)  F llavors la conclusió és falsa i la primera premissa
certa, independentment del que sigui T(1,1). Així, un contraexemple del raonament és:
<{1}, {M(1)  F, D(1)  F, T(1,1)  F}, >.
84
© FUOC • PID_00265955
17. En cada apartat, els nombres romans indiquen els passos que s’efectuen:
a)
i)x {P(x)  y [O(y)  T(x,y)]}
ii)x {P(x)  y [O(y)  T(x,y)]}
iii)P(a)  y [O(y)  T(a,y)]
iv)y [P(a)  (O(y)  T(a,y))]
b)
i)x [P(x)  y Q(x,y)]  z R(z)
ii)x [P(x)  y Q(x,y)]  z R(z)
iii)x [P(x)  y Q(x,y)]  z R(z)
iv)(P(a)  y Q(a,y))  R(b)
v)y [(P(a)  Q(a,y))  R(b)]
vi)y [(P(a)  R(b))  (Q(a,y)  R(b))]
c)
i)x [P(x)  y Q(x,y)]  z u R(z,u)
ii)x [P(x)  y Q(x,y)]  z u R(z,u)
iii)x [P(x)  y Q(x,y)]  z u R(z,u)
iv)x [P(x)  Q(x,f(x))]  z R(z,g(z))
v)x z [P(x)  Q(x,f(x))  R(z,g(z))]
d)
i)x {P(x)  y [O(y)  T(x,y)]  z [O(z)  N(z)  T(x,z)]}
ii)x {(P(x)  y [O(y)  T(x,y)])  z [O(z)  N(z)  T(x,z)]}
iii)x {(P(x)  y [O(y)  T(x,y)])  z [O(z)  N(z)  T(x,z)]}
iv)x {(P(x)  y [O(y)  T(x,y)])  [O(f(x))  N(f(x))  T(x, f(x))]}
v)x y {P(x)  O(y)  T(x,y)  [O(f(x))  N(f(x))  T(x, f(x))]}
vi)x y {[P(x)  O(y)  T(x,y)  O(f(x))] 
 [P(x)  O(y)  T(x,y)  N(f(x))] 
 [P(x)  O(y)  T(x,y)  T(x,f(x))]}
e)
i)x {P(x)  y [R(x,y)  z T(y,z)]  u Q(x,u)}
ii)x {(P(x)  y [R(x,y)  z T(y,z)])  u Q(x,u)}
iii)x {(P(x)  y [R(x,y)  z T(y,z)])  u Q(x,u)}
iv)x {(P(x)  y [R(x,y)  T(y,f(x,y))])  Q(x,g(x))}
v)x y [P(x)  R(x,y)  T(y,f(x,y))  Q(x,g(x))]
f)
i)x {P(x)  y [T(x,y)  O(y)  N(y)]}
ii)x {P(x)  y [T(x,y)  (O(y)  N(y))]}
iii)P(a)  y [T(a,y)  (O(y)  N(y))]
iv)y {P(a)  [T(a,y)  (O(y)  N(y))]}
v)y [P(a)  (T(a,y)  O(y))  (T(a,y)  N(y))]
18.
a) En el darrer pas la interiorització de la negació (aplicació de De Morgan) no s’ha fet correctament. Hauria de ser x y [(Q(x)  R(y))  T(x,y)] i finalment s’obtindria:
x y [(Q(x)  T(x,y))  (R(y)  T(x,y))]
b) S’ha utilitzat la mateixa constant per a quantificadors existencials diferents. Hauria de
ser:
x T(x,a)  Q(b).
c) L’errada es troba en el tercer pas: la segona aparició de la variable y dins la fórmula està
afectada pel mateix quantificador que la primera. Totes dues aparicions s’han de substituir per la mateixa constant. A més, el quantificador z està dins l’abast del quantificador
x, així que la variable z s’hauria de substituir per una funció de x. Hauria de ser:
x [T(x,a)  Q(f(x),a)]
d) En el darrer pas, la matriu de la fórmula no està en FNC, sinó en FND. Hauria de ser:
x z [(C(a)  R(z)  T(f(z),z))  (T(x,a)  R(z)  T(f(z),z))]
Lògica de predicats
85
© FUOC • PID_00265955
e) En el segon pas l’eliminació del quantificador existencial s’ha fet prematurament. Primer
s’havia d’haver eliminat la implicació. Hauria de ser:
ii)x [(C(x)  y T(x,y))  z R(z)]
iii)x [C(x)  y T(x,y)  z R(z)]
iv)x [C(x)  y T(x,y)  z R(z)]
v)x y z [C(x)  T(x,y)  R(z)]


f) En el tercer pas s’ha aplicat malament la interiorització de la negació (De Morgan) perquè
x A(x). Hauria de ser:
x A(x)
iii)x [Q(x)  R(x)]  y z T(y,z)
iv)x [Q(x)  R(x)]  y z T(y,z)
v)x [Q(x) R(x)]  y T(y,f(y))
vi)x y [(Q(x)  T(y,f(y)))  (R(x)  T(y,f(y)))]
g) El tercer pas és incorrecte: el quantificador t està sota l’abast de dos quantificadors universals: x i z. Per això, la variable t s’ha de substituir per una funció de x i de z. Hauria
de ser:
x {R(x)  z [T(f(x),z)  (S(x,g(x,z),z)  Q(g(x,z)))]}.
Al final s’obtindria:
x z {(R(x)  T(f(x),z)  S(x,g(x,z),z))  (R(x)  T(f(x),z)  Q(g(x,z)))}
h) L’error es troba en el tercer pas. Les variables z i t s’han de substituir per funcions de x i
de y, però cadascuna de les funcions ha de tenir un nom diferent (per cada variable la funció ha de ser nova). Hauria de ser:
iii)x y {T(x,y)  u [S(f(x,y),g(x,y),u)  (R(x)  Q(y))]}
iv)x y u {T(x,y)  [S(f(x,y),g(x,y),u)  (R(x)  Q(y))]}
v)x y u {[T(x,y)  S(f(x,y),g(x,y),u)  R(x)]  [T(x,y)  S(f(x,y),g(x,y),u)  Q(y)] }
19.
a)
• FNS(x y P(x,y))  y P(a,y)
• FNS(y x P(x,y))  x P(x,b)
{P(a,y), P(x,b)}
El raonament és correcte.
Lògica de predicats
© FUOC • PID_00265955
86
b)
•
FNS(x [P(x)  y (G(y)  T(x,y))  M(x)]) x y (P(x)  G(y)  T(x,y)  M(x))
•
FNS(G(b)  T(a,b))  G(b)  T(a,b)
•
FNS(M(a))  M(a)
•
FNS(x P(x))  x P(x)
{P(x)  G(y)  T(x,y)  M(x), G(b), T(a,b), M(a), P(x)}
El raonament és correcte.
c)
•
FNS(x (P(x)  Q(x)))  x (P(x)  Q(x))
•
FNS(x (R(x)  P(x)))  x (R(x)  P(x))
•
FNS(x (Q(x)  R(x)))  Q(a)  R(a)
{P(x)  Q(x), R(x)  P(x), Q(a), R(a)}
D’aquest conjunt de clàusules no es podrà
obtenir la clàusula buida. L’absència del literal Q descarta les clàusules que contenen aquest predicat i redueixen el conjunt
a {R(x)  P(x), R(a)}. Les dues clàusules
que han quedat no es poden resoldre entre
si. El raonament no és correcte.
d)
•
FNS(x [y P(x,y)  z S(x,z)]) x y
(P(x,y)  S(x,f(x)))
•
FNS(y x P(x,y))  x P(x,a)
•
FNS(x z S(x,z))  z S(b,z)
{P(x,y)  S(x,f(x)), P(x,a), S(b,z)}
El raonament és correcte, vegueu la figura al
marge.
Lògica de predicats
87
© FUOC • PID_00265955
e)
•
•
•
•
FNS(x A(x)  y B(y))  x (A(x)  B(a))
FNS(x (B(x)  C(x)))  x (B(x)  C(x))
FNS(x C(x))  x C(x)
FNS(x A(x))  A(b)
{A(x)  B(a), B(x)  C(x), C(x), A(b)}
El raonament és correcte.
f)
• FNS(x D(x))  x D(x)
• FNS(x [P(x)  y (D(y)  T(x,y))])  x [(P(x)  D(f(x)))  (P(x)  T(x,f(x)))]
• FNS(x [P(x)  y (D(y)  T(x,y))]) x [(P(x)  D(g(x)))  (P(x)  T(x,g(x))]
{D(x), P(x)  D(f(x)), P(x)  T(x,f(x)), P(x)  D(g(x)), P(x)  T(x,g(x))}
L’absència del literal P fa inútils totes les clàusules que contenen aquest predicat. Això redueix el conjunt a {D(x)}, del qual no es pot obtenir la clàusula buida.
g)
• FNS(x [P(x)  y (C(y)  A(x,y))])  x y (P(x)  C(y)  A(x,y))
• FNS(x [P(x)  y (M(y)  A(x,y))])  y [P(a)  (M(y)  A(a,y))]
• FNS(x (C(x)  M(x)))  C(b)  M(b)
{P(x)  C(y)  A(x,y), P(a), M(y)  A(a,y), C(b), M(b)}
El raonament és correcte.
Lògica de predicats
88
© FUOC • PID_00265955
h)
• FNS(x P(x,x))  x P(x,x)
• FNS(x y (P(x,y)  P(y,x))) x y (P(x,y)  P(y,x))
• FNS(x y P(x,y))  x P(x,f(x))
{P(x,x), P(x,y)  P(y,x), P(x,f(x))}
El raonament no és correcte. Començant amb la clàusula P(x,f(x)), no és possible de resoldre per les raons següents:
•
Contra P(z,z) (canviem x per z per evitar duplicitat de noms de variables en les dues clàusules que es pretén resoldre) no es pot perquè cal substituir una variable per una funció
de si mateixa.
•
Contra P(z,y)  P(y,z) (canvi de x per z per evitar duplicitats) cal substituir y per x i z per
f(x). La resolvent és P(f(x),x). Aquesta clàusula no es pot resoldre contra P(z,z) perquè
caldria fer la substitució d’una variable per una funció de si mateixa. S’ha de tornar a utilitzar P(z,y)  P(y,z) i substituir y per f(x) i z per x. Amb això s’obté P(x,f(x)), que és la
clàusula inicial.
El raonament només pot ser correcte si les premisses són inconsistents. Però del conjunt
{P(x,x), P(x,y)  P(y,x)} no es pot obtenir la clàusula buida, així que les premisses no són
inconsistents.
20.
a) T(x): “x és (un) astròleg”; C(x): “x és (un) científic”; F(x): “x és (un) físic”; A(x,y): “x és amic
de y”
x [T(x)  y (C(y)  A(x,y))], x (F(x)  C(x))  x [T(x)  y (F(y)  A(x,y))]
•
•
•
FNS(x [T(x)  y (C(y)  A(x,y))])  x y (T(x)  C(y)  A(x,y))
FNS(x (F(x)  C(x)))  x (F(x)  C(x))
FNS(x [T(x)  y (F(y)  A(x,y))])  T(a)  F(b)  A(a,b)
{T(x)  C(y)  A(x,y), F(x)  C(x), T(a), F(b), A(a,b)}
Lògica de predicats
© FUOC • PID_00265955
89
b) P(x): “x és un pacient”; M(x): “x és un metge”; C(x): “x és curandero”; A(x,y): “x admira
(sent admiració per) y”
x {P(x)  y [M(y)  A(x,y)]}, x {P(x)  y [C(y)  A(x,y)]}  x [M(x)  C(x)]
•
•
•
FNS(x {P(x)  y [M(y)  A(x,y)]}) y [P(a)  (M(y)  A(a,y))]
FNS(x {P(x)  y [C(y)  A(x,y)]) x y (P(x)  C(y)  A(x,y))
FNS(x [M(x)  C(x)])  M(b)  C(b)
{ P(a), M(y)  A(a,y), P(x)  C(y)  A(x,y), M(b), C(b)}
c) F(x): “x és feliç”; M(x): “A x li agrada la música”; A(x,y): “x és amic de y”; a (constant):
“L’Albert”
x (A(x,a)  M(x))  F(a), F(a)  x (A(x,a)  M(x))
•
•
•
FNS(x (A(x,a)  M(x))  F(a))  (A(b,a)  F(a))  (M(b)  F(a))
FNS(F(a))  F(a)
FNS(x (A(x,a)  M(x)))  x (A(x,a)  M(x))
{ A(b,a)  F(a), M(b)  F(a), F(a), A(x,a)  M(x)}
El raonament també es podria formalitzar: F: “L’Albert és feliç”; M(x): “A x li agrada la música”; A(x): “x és amic de l’Albert”
x (A(x)  M(x))  F; F  x (A(x)  M(x))
Lògica de predicats
90
© FUOC • PID_00265955
d) 2, 4, 32, 73: constants que designen els elements dos, quatre, trenta-dos i setanta-tres, respectivament; P(x): “x és parell”; D(x,y): “x és divisible per y”.
x (D(x,32)  D(x,4)),
x (D(x,4)  P(x)),
x (D(x,2)  P(x)),
D(73,2)
 D(73,32)
{D(x,32)  D(x,4), D(x,4)  P(x), D(x,2)  P(x), D(73,2), D(73,32)}
e) L(x): “x és lingüista”; T(x): “x és traductor”; E(x): “x és escriptor”; N(x): “x és una novel·la”;
M(x): “x és un escrit narratiu”; W(x,y): “x escriu y”
•
•
•
•
•
x L(x)  yT(y),
x T(x) y {E(y)  z [N(z)  W(y,z)]},
x (N(x)  M(x)),
x {N(x)  y [E(y)  W(y,x)]}
 x {E(x)  L(x)  y [M(y)  W(x,y)]}
FNS(x L(x)  y T(y))  x (L(x)  T(a))
FNS(x T(x)  y {E(y)  z [N(z)  W(y,z)]})  
x y [(T(x)  E(y)  N(f(y)))  (T(x)  E(y)  W(y,f(y)))]
FNS(x (N(x)  M(x)))  x (N(x)  M(x))
FNS(x {N(x)  y [E(y)  W(y,x)]})  x [(N(x)  E(g(x)))  (N(x)  W(g(x),x))]
FNS(x {E(x)  L(x)  y [M(y)  W(x,y)]}) 
y [E(b)  L(b)  (M(y)  W(b,y))]
{L(x)  T(a), T(x)  E(y)  N(f(y)), T(x)  E(y)  W(y,f(y)), N(x)  M(x),
N(x)  E(g(x)), N(x)  W(g(x),x), E(b), L(b), M(y)  W(b,y)}
Vegeu l’arbre de resolució a la pàgina següent. Fixeu-vos que quan s’ha utilitzat N(x) 
M(x) s’ha canviat x per z per a evitar la repetició de x en dues clàusules diferents. El mateix
quan s’ha utilitzat T(x)  E(y)  W(y, f(y)) i L(x)  T(a).
Observeu també que no s’han utilitzat les clàusules de la quarta premissa “Totes les
novel·les són escrites per algun escriptor”. Això vol dir que la conclusió no en depèn i que
aquesta informació és supèrflua per a aquest raonament.
Lògica de predicats
Aclariment formal
Per a més claredat, hom s’ha
permès de no seguir la convenció habitual segons la qual 
les constants s’han de designar
per lletres minúscules de l’inici
de l’alfabet llatí.
© FUOC • PID_00265955
91
21.
a) Les clàusules A(x,f(x)) i A(b,c) no es poden resoldre entre si perquè no es poden unificar:
la primera discrepància <x, b> es pot resoldre substituint x per b, amb la qual cosa la primera clàusula queda A(b,f(b)). La segona discrepància és <f(b), c> i no es pot resoldre.
El conjunt de clàusules donat no permet d’arribar a . Començant amb la primera clàusula del suport s’arriba a A(x,f(x)) i a partir d’aquest punt no es pot continuar. La situació
és exactament la mateixa si es comença amb la segona clàusula del suport perquè aquesta
és precisament A(x,f(x)). Si es descarten les clàusules del suport per a verificar la possibilitat que les premisses del raonament siguin inconsistents, s’obté el conjunt format per
les dues primeres clàusules, que no permet d’arribar a trobar la clàusula buida.
Lògica de predicats
© FUOC • PID_00265955
92
b) El problema rau en la manera com s’ha calculat i aplicat la substitució. La variable x de
B(x,z) no és la mateixa que la de C(x)  B(a,f(x)). Això vol dir que si cal substituir x per
a a B(x,z), aquesta substitució no s’ha d’aplicar a la variable x de l’altra clàusula. Per a
esmenar l’error només cal recordar que és útil canviar el nom de les variables de les clàusules laterals per a evitar coincidències amb les troncals.
c) Hom troba dos errors en la resolució: primer, quan en el segon pas s’ha substituït y per c el
resultat hauria d’haver estat A(c)  B(c)  F(x,f(x)). I és que quan s’aplica una substitució, s’han de substituir totes les ocurrències de la variable involucrada. Segon, l’afirmació
que A(x) no es pot resoldre contra A(a)  A(y) és incorrecta. Només cal substituir x per y
o y per x. Sempre hi ha una solució (de fet dues) per a les discrepàncies variable/variable.
Un arbre de resolució correcte seria:
Lògica de predicats
© FUOC • PID_00265955
93
d) La darrera aplicació de la regla de resolució no s’ha fet de manera correcta perquè s’ha
aplicat simultàniament a dos literals, quan només es pot aplicar a un. El resultat de
resoldre A(b)  B(a) contra A(b)  B(a) és un teorema (que força el replantejament de
la darrera decisió).
De totes maneres, el raonament és correcte:
Lògica de predicats
© FUOC • PID_00265955
94
Glossari
Algoritme d’unificació: algoritme que permet calcular les substitucions que cal aplicar a
dues fórmules per a fer-les idèntiques.
Constant: representació (referència) d’un element distingit d’un domini. Les constants no
es poden quantificar.
Eskolemització: eliminació dels quantificadors existencials d’una fórmula. Les variables
quantificades existencialment són substituïdes per constants i funcions de Skolem.
Fórmula: element del llenguatge formal de la lògica de predicats.
Predicat: aplicació des d’algun domini cap als enunciats. Més informalment es pot dir que
es tracta d’un enunciat parametritzat.
Prolog: llenguatge de programació. És el més conegut dels llenguatges de programació anomenats lògics.
Propietat: predicat unari.
Quantificadors: operadors propis de la lògica de predicats. Afecten les variables. N’hi ha
dos: l’universal () i l’existencial ().
Relació: predicat binari.
Terme: referència a un objecte d’un domini. Un terme pot ser una constant, una variable o
una funció (de Skolem).
Variable: referència a un objecte no especificat d’un domini.
Lògica de predicats
© FUOC • PID_00265955
95
Bibliografia
Bibliografia bàsica
Arenas, L. (1996). Lógica formal para informáticos. Madrid: Díaz de Santos.
Bibliografia complementària
Deaño, A. (1993). Introducción a la lógica formal (ed. original 1974). Madrid: Alianza Editorial
(Alianza Universidad Textos, 11).
Garrido, M. (1995). Lógica simbólica (ed. original 1974). Madrid: Tecnos.
Sancho, J. (1990). Lógica matemática y computabilidad. Madrid: Díaz de Santos.
Suppes, P.; Hill, S. (1986). Introducción a la lógica matemática. Barcelona: Reverté.
Lògica de predicats
Download