Sunteți pe pagina 1din 44

Programare logic

An universitar 2013 2014


Anul III, Semestrul II

Vasile Alaiba <alaiba@info.uaic.ro>
http://profs.info.uaic.ro/~alaiba
Facultatea de Informatic, Universitatea Al.I.Cuza Iai

Sintaxa LP
Fie o mulime de variabile propoziionale, A
= {A
1
, A
2
, }, mulimea conectorilor logici
C = {(, v, .} i P = { ( , ) } mulimea
parantezelor.
Formulele vor fi cuvinte peste alfabetul
L = A U C U P
Sintaxa LP
Baza (formulele elementare sunt formule). A _ LP .
Pas constructiv.
(i) Dac F e LP atunci (( F) e LP.
(ii) Dac F
1
, F
2
e LP atunci ( F
1
v F
2
) e LP.
(iii) Dac F
1
, F
2
e LP atunci ( F
1
. F
2
) e LP.
(iv) Dac F e LP atunci (F) e LP.

Arborele asociat unei formule
S se construiasc arborele asociat formulei:
A \/ B /\ ~C
~B /\ (C \/ B /\ A)
B -> A /\ ~B \/ A


Mulimea subformulelor
Baza. F = A e A. Atunci subf(F) = {A}.
Pas constructiv.
(i) F = (( F
1
). Atunci subf(F) = subf(F
1
) U { (( F
1
) }.
(ii) F = (F
1
. F
2
). Atunci subf(F) = subf(F
1
) U subf(F
2
)
U { (F
1
. F
2
) }.
(iii) F = (F
1
v F
2
). Atunci subf(F) = subf(F
1
) U
subf(F
2
) U { (F
1
v F
2
) }.
(iv) F = (F
1
). Atunci subf(F) = subf(F
1
) U { (F
1
) }

Mulimea subformulelor
S se construiasc mulimea subformulelor
asociate formulei:
A \/ B /\ ~C
B -> A /\ ~B \/ A


Semantica LP
Orice funcie S, S : A B se numete asignare.
Pentru fiecare asignare S exist o unic extensie a acesteia,
S : LP B (numit structur sau interpretare), care
satisface:
(i) S(A) = S(A), pentru fiecare A e A.
(ii) S((( F)) = S(F) , pentru fiecare F e LP.
(iii) S((F
1
. F
2
) ) = S(F
1
) S(F
2
), pentru fiecare F
1
, F
2
e LP.
(iv) S((F
1
v F
2
) ) = S(F
1
) + S(F
2
), pentru fiecare F
1
, F
2
e LP.

Exerciiu
Fie F = A \/ B /\ ~C
Determinati o structur S astfel nct S(F) = 1
Determinati o structur S astfel nct S(F) = 0
Satisfiabilitate
O formul F e LP se numete satisfiabil dac
exist mcar o structur S pentru care S(F) = 1
O formul este valid (tautologie) dac pentru
orice structur S, S(F) = 1
O formul este nesatisfiabil (contradicie)
dac pentru orice structur S, S(F) = 0

Forme normale n LP
Form normal conjunctiv (FNC)
Clauze
Form normal conjunctiv (FNC)
O formul F e LP se afl n FNC dac este o
conjuncie de disjuncii de literali, adic o conjuncie
de clauze. Simbolic:


| | m i L L F
j i
n
j
j i
n
j
m
i
i i
e v = v . =
= = =
, C notam , ) (
,
1
i ,
1 1
Clauze (1)
Clauz
Este orice disjuncie (finit) de literali.
Clauz Horn
Este o clauz care are cel mult un literal pozitiv.
Clauz pozitiv
Este o clauz care conine doar literali pozitivi
Clauze (2)
Clauz negativ
Este o clauz care conine doar literali negativi.
Clauz definit (definite clause)
Clauz Horn pozitiv
Conine exact un literal pozitiv
Formule Horn
O formul n FNC n care toate clauzele sunt
Horn
Scrierea implicaional
~A \/ ~B \/ C== A /\ B -> C
~A \/ ~B == A /\ B -> 0
A == 1 -> A

Exerciiu
S se aplice algoritmul Horn formulei:
F = ( A v ( D ) . ( ( C v ( A v D ) . ( ( A v (
B ) . D . ( E
F = ((D \/ A) /\ ((A \/ B) /\ A /\ ((B \/ C) /\ ((C \/
D)

Rezoluie n LP
Fie clauzele C
1
, C
2
, R.
R = Res
L
(C
1
, C
2
) (R este rezolventul lui C
1
,
C
2
), dac exist un literal L e C
1
astfel nct ~L
e C
2
i R = (C
1
\ {L}) U (C
2
\ { ~L })

F este nesatisfiabil dac i numai dac
e Res
*
(F).

Exerciii
Gsii o respingere pentru formula:
F = {{A, B, (C}, {(A}, {A, B, C}, {A, (B}}

Sintaxa LP1 (1)
variabile (funcionale) X = {x
1
, x
2
, }
simboluri predicative P = {P
0
, P
1
, }
variabile predicative P
0

simboluri funcionale F = {F
0
, F
1
, ...}:
constante (funcionale) F
0

conectori logici C
1
= {(, v, .}
cuantificatori C
2
=
universali {(x) | x e X} U
existeniali {(- x) | x e X}
paranteze P = { (, ) }
Sintaxa LP1 (2)
Alf = X U (U P
i
) U (U F
i
) U C
1
U C
2
U P
T este mulimea termilor (funcionali)
Baza:
X _ T
F
o
_ T
Pas constructiv:
Pentru fiecare n e N*, f e F
n
, t
1
, t
2
, , t
n
e T,
avem f(t
1
, t
2
, , t
n
) e T.
Sintaxa LP1 (3)
LP1 este dat constructiv
Baza: At mulimea formulelor atomice
P
o
_ At
Pentru fiecare n e N*, P e P
n
, t
1
, t
2
, , t
n
e T,
avem P(t
1
, t
2
, , t
n
) e At.
Pas constructiv: dac F, F
1
, F
2
e LP1 atunci:
( (F) e LP1
(F
1
) . (F
2
) e LP1, (F
1
) v (F
2
) e LP1
(x)(F) e LP1, (- x)(F) e LP1
(F) e LP1
Exerciii
Identificai simbolurile care apar n formule.
Construii mulimea subformulelor i arborele
asociat.
Formulele:
(x)(P(x, a) Q(y) (z)P(z, x))
(x)(z)(P(x, y, z) Q(x)) (x)(Q(X)
R(f(x, z), a))
Variabil liber i legat
Fie F e LP1, x e X:
x apariie legat dac este parte a unei
subformule G a lui F de forma
G
1
= (x)(G)
G
2
= (-x)(G)
x apariie liber n caz contrar.
Substituii
Substituie elementar este o pereche de tipul
[x/t], unde x e X, t e T.
Prin substituie vom nelege o secven finit de
forma s = [x
1
/t
1
][x
2
/t
2
] [x
n
/t
n
], neN, x
i
eX,
t
i
eT.
O substituie s se aplic unei formule F,
rezultnd o formul G, notat (F)s, care se obine
din F prin nlocuirea fiecrei apariii libere a
variabilei x
i
cu termul t
i
, n ordinea dat n s.

Tipuri de substituii
Substituia elementar [x/t] este permis pentru F dac
t nu conine variabile libere care au apariii legate n F.
O substituie s este normalizat pentru F dac (F)s =
(F)s, pentru fiecare s care este obinut din s printr-o
permutare a componentelor acesteia, deci ordinea de
aplicare a substituiilor elementare componente nu
conteaz.
Substituia vid, notat [], este o secven de 0
substituii elementare i nu face nicio transformare n
formula F creia i este aplicat, deci (F)[] = F.

Exerciii
S se aplice substituia s = [x/f(z)][z/a][y/z]
formulelor:
F
1
= (x)(P(x, a) Q(y) ( (z)P(z, x))
F
2
= (x)(z)(P(x, y, z) (Q(x)) (x)(Q(x)
R(f(x, z), a))
F
3
= P(x) (P(y) (z)(x)Q(f(z), x)
F
4
= (x)P(x, f(x)) Q(x) (P(a, f(z))
F
5
= (x)(y)(P(f(x, a), f(a, y)))

Structur: S = <U
S
, I
S
>
U
S
este o mulime nevid
I
S
: X U P U F
U
S
U [U
S
*

B] U [U
S
*
U
S
]
Dac x e X, atunci

I
S
(x) e U
S
Dac P e P
n
, atunci I
S
(P) :

B
Dac F

e F
n
, atunci I
S
(F) : U
S
n

U
S
Semantica LP1 (1)
Semantica LP1 (2)
Fie S = <U
S
, I
S
>. Extensia sa este:
S : X U P U F U T U LP1
U
S
U [U
S
*

B] U [U
S
*
U
S
] U B
Pentru fiecare a e X U P U F :
S(a) = S(a)
Pentru fiecare n e N
*
, t
1
, t
2
, , t
n
e T , f e F
n
,
astfel nct t = f(t
1
, t
2
, , t
n
)
S(t) = S(f)(S(t
1
), S(t
2
), ... , S(t
n
)) (eU
S
)
Semantica LP1 (3)
Baza. Fie A e At .
A = P e P
0

S = S(P) e B
A = P(t
1
, t
2
, , t
n
), n e N
*
, t
1
, t
2
, , t
n
e T
S (P) = S(P)(S (t
1
), S (t
2
), ... , S (t
n
)) e B
Semantica LP1 (4)
Pas constructiv
F = (( F
1
). Atunci S(F) = S(F
1
)
F = (F
1
. F
2
). Atunci S(F) = S(F
1
) S(F
2
)
F = (F
1
v F
2
). Atunci S (F) = S(F
1
) + S(F
2
)
F = (x)(G). Atunci S(F) = 1 ddac pentru
fiecare u e U
S
avem S
[x/u]
(G) = 1
F = (-x)(G). Atunci S(F) = 1 ddac exist mcar
un u e U
S
astfel nct S
[x/u]
(G) = 1
Exerciii
Pentru formula F determinai o structur S
1
=
<U
S
, I
S
> astfel nct S
1
(F) = 0 i o alt
structur S
2
astfel nct S
2
(F) = 1.
F = P(x) (P(y) (z)(x)Q(f(z), x)
Aplicai substituia s = [x/f(z)][z/b] formulei
F, apoi determinai o structur S astfel nct
S((F)s)=0
F = (x) (y)(P(x, a) Q(y) (x)P(z, x))
Forme normale n LP1
Forma normal rectificat (FNR)
O formul F e LP1 se numete rectificat dac
nu conine variabile care apar att libere ct
i legate i
nu are cuantificatori care s lege aceeai
variabil, dar pe poziii diferite n formul.

Forme normale n LP1
Forma normal prenex (FNP)
O formul F e LP1 este n form normal
prenex dac
F = (
1
y
1
) (
n
y
n
)G, unde n e N,
i
e {-, }, i e
[n], iar
y
1
, , y
n
sunt toate variabilele distincte care apar
(liber) n G.
n plus, G nu mai conine cuantificatori.

Forme normale n LP1
Forma normal Skolem (FNS)
O formul F e LP1 este n form normal
Skolem (FNS, pe scurt), dac
are aspectul F = (x
1
) (x
k
)G, unde G nu mai
conine cuantificatori (este matricea lui F), iar
x
1
, x
2
, , x
k
sunt variabile distincte i reprezint
exact variabilele care apar n G

Forme normale n LP1
Form normal Skolem clauzal (FNSC)
O formul F e LP1 este n FNSC dac
este n FNS i
matricea sa este n FNC (forma normal
conjuctiv) ntr-un sens similar cu LP (literalii
reprezentnd acum formule atomice din LP1 sau
negaii ale lor).

Exerciiu
S se aduc la FNSC formula:
F = (x) (y)(P(x,z) Q(y) (z)(x)P(z, x))
F = (x)(P(x, y) (y)P(y, c))

Unificare
Fie L = {L
1
, L
2
, ... , L
k
} o mulime finit, nevid, de literali
din LP1.
L este unificabil dac exist o substituie s astfel nct
card((L)s) = 1.

s se numete unificator pentru L.

O substituie s se numete cel mai general unificator
(MGU) pentru o mulime unificabil L dac pentru fiecare
unificator s exist o substituie sub astfel nct s = s sub.

Rezoluie n LP1
Fie C
1
, C
2
i R clauze n LP1, C
1
C
2
.
R se numete rezolvent pentru C
1
i C
2
dac:
(i) Exist substituiile s
1
i s
2
astfel nct (C
1
)s
1
i (C
2
)s
2
nu au
variabile comune.
(ii)Exist L
1
, L
2
, ... , L
m
e (C
1
)s
1
i L
1
, L
2
, ... , L
n
e (C
2
)s
2
astfel nct mulimea: L = {( L
1
, ( L
2
, ... , ( L
m
, L
1
, L
2
, ... ,
L
n
} este unificabil.
(iii)Fie sub un cel mai general unificator pentru L.
R = (((C
1
)s
1
\ {L
1
, L
2
, ... , L
m
}) U ((C
2
)s
2
\ {L
1
, L
2
, ... ,
L
n
}))sub.
Exerciiu
Demonstrai utiliznd rezoluia c urmtoarea
formul din LP1 este nesatisfiabil:
F = (x)(y)(P(x,x)( ( P(x,g(y))Q(y))
(Q(f(a)))
F = (x)(y)((( P(x) v ( P(f(c)) v Q(y)) . P(y) .
(( P(g(b, x)) v ( Q(b)))


Tem curs
Un puzzle logic este un joc, textual sau vizual, bazat
pe deducie.
Gsii un puzzle logic, scriei-l sub form de
mulime de clauze n LP1 i cutai s l rezolvai
folosind metoda rezoluiei.

Venii cu tema la curs pentru a o prezenta.
Exemplu: Problema lui Einstein
Sunt cinci case diferite, fiecare pictata in alta
culoare.
In fiecare casa locuieste o persoana de alta
nationalitate, care prefera propria sa bautura,
diferita de a celorlalti.
Fiecare om are pe langa el un animal distinct
si fumeaza o marca distincta de tigari.
Exemplu: Problema lui Einstein
Se fac urmatoarele afirmatii:
1. Englezul locuieste in casa rosie.
2. Suedezul are un caine.
3. Danezul bea ceai.
4. Casa verde este la stanga casei pictata in
alb.
5. Persoana din casa verde bea cafea.
Exemplu: Problema lui Einstein
6. Persoana care fumeaza Pall Mall creste
pasari.
7. Persoana din casa galbena fumeaza
Dunhill.
8. Persoana din casa din mijloc bea lapte.
9. Norvegianul locuieste in prima casa.
10. Persoana care fumeaza Blend locuieste in
casa vecina celei unde se cresc pisici.
Exemplu: Problema lui Einstein
11. Persoana care creste cai locuieste langa
cel care fumeaza Dunhill.
12. Persoana care fumeaza Blue Master bea
bere.
13. Germanul fumeaza Prince.
14. Norvegianul locuieste alaturi de casa
vopsita in albastru.
15. Cel care fumeaza Blend este vecin cu
persoana care nu bea decat apa.
Exemplu: Problema lui Einstein
Intrebarea este:


Cine crete peti ?

S-ar putea să vă placă și