Rappresentando le formula in forma di clausole, ovvero come disgiungioni di letterali, la regola di risoluzione puo' venire riscritta comenot a -> b, b -> c a or b, not b or c
_______________________ oppure ______________________not a -> c a or c
Nel caso di formule del primo ordine l'ugualianza di termini e' da intendere a meno di "unificazione", ovvero per una coppia di atomi unificabili a1, a2, deve esistere una sostituzione theta tale cheW = { w1, ... , wk , q } , V = { v1, ... , vl , not q } _________________________________________________________________{ w1, ... , wk , v1, ... , vl }
La risoluzione rappresenta una generalizzazione della regola-MP (modus-ponens), derivabile da questa nel modo seguentea1.theta = a2.theta
a, a -> b Vero -> a, a -> bL'inferenza con risoluzione viene applicata alla refutazione (reductio ad absurdum) per dimostrare la verita' di una tesi attraverso la ricerca della contraddorieta' della propria negazione. Se la verita' di una tesi non puo' venire dimotrata in questo modo, in un modello di Herbrand (mondo chiuso), la tesi viene dichiarata falsa.
_______________ ____________________b Vero -> b
Il processo di risoluzione considera ad ogni passo una coppia di clausole
a cui applicare la regola di inferenza. Il procedimento viene detto "lineare",
quando in ogni passo una delle clausole della coppia deve essere costituita
dalla risolvente del passo precedente, mentre la seconda puo' essere o
una premessa iniziale o una clausola gia' derivata. Se oltre a considerare
la clausola ottenuta al passo precedente, la scelta della seconda clausola
e' limitata alle sole premesse iniziali, il precedimento viene definito
ad "input-lineare".
La risoluzione ad "input-lineare" non risulta essere un procedimento
di dimostrazione completa per clausole generiche, mentre e' applicabile
in modo completo a clausole di Horn (disgiunzione di predicati con
al piu' un disgiunto positivo).
La selezione della clausola da considerare in un passo di risoluzione potrebbe influenzare negativamente l'esito della dimostrazione in presenza di tesi negate non ground.Un criterio "sicuro" (safe) puo' essere introdotto nel modo seguente: non selezionare per la risoluzione una sottoclausola negata non ground, trattare completamente una sottoclausola negata ground prima di considerare le rimanenti
Esempio:
Sia c la clausola
c = figlia( X,Y ) :- femmina( X ), genitore( Y,X ).sia theta = { X/maria, Y/anna }, e c' la clausola ottenuta applicando theta a c (c.theta)
c' = figlia( maria, anna ) :- femmina( maria ), genitore( anna, maria ).applicando c' la sostituzione inversa theta-1 = { maria/X, anna/Y }, si ritrova la clausola c originale
c'.theta-1 = c = figlia( X,Y ) :- femmina( X ), genitore( Y,X ).
op-V( c, r ) = h tale che c, h |- r ( r :- h,c )Esempio
sia r la clausola
la conoscenza di fondo B comprenda le clausole b1 e b2r = figlia( maria, anna )
l'operatore V, applicato due volte con le sostizioni inverse theta1-1 = { anna/Y } e theta2-1 = { maria/X } produrra' la clausola hb1 = genitore( maria, anna )
b2 = femmina( maria )
h = figlia( X,Y ) :- femmina(X), genitore( Y,X ).infatti
h' = op-V( b1,r ) = r.theta1-1= figlia( maria,Y ) :- genitore( Y, maria ).doveh = op-V( b2,h' ) = h'.theta2-1= figlia( X,Y ) :- genitore( Y, Y ).
Un problema con l'operatore-V e' che date c e r la clausola h = op-V(c,r) non risulta in generale univocamente determinata, infatti op-V(c,r) effettivamente identifica l'insieme delle clausole che godono della proprieta' c, h |- r .r :- b1,b2,h
Esempio
siano r1 e r2
le clausole c1,c2,c3 ottenute dall'operatore-W introducendo il nuovo predicato p'=genitore(X,Y) sonor1 = nonno( X,Y ) :- padre( X,Z ), padre( Z,Y ).r2 = nonno( a,b ) :- padre( a,c ), madre( c,b ).
L'operatore-W viene anche chiamato "operatore di intra-costruzione".c1 = genitore( Z,Y ) :- padre( Z,Y ).c2 = nonno( X,Y ) :- padre( X,Z ), genitore( Z,Y ).
c3 = genitore( c,b ) :- madre( c,b ).
h = figlia( maria,anna ) :- femmina(maria), genitore( anna,maria ).