APPENDICE Sintassi e semantica FOL Firts Order Logic

  • Slides: 16
Download presentation
APPENDICE. Sintassi e semantica FOL (Firts Order Logic) • Comp(P) e’ una formula del

APPENDICE. Sintassi e semantica FOL (Firts Order Logic) • Comp(P) e’ una formula del primo ordine pieno. Richiamiamo sintassi e semantica per chi non avesse seguito logica. Ci limitiamo alle interpretazioni di Herbrandt.

LA SINTASSI di FOL: Termine : : = Variabile | Costante | Simbolo. F(Termine,

LA SINTASSI di FOL: Termine : : = Variabile | Costante | Simbolo. F(Termine, …, Termine) Atomica : : = Simbolo. P(Termine, …, Termine) Formula : : = Atomica (not Formula) (Formula Formula) (Formula Formula) ( x Formula). | | | |

Esempio Nei cortili ci sono solo cani e gatti, cioè se X è in

Esempio Nei cortili ci sono solo cani e gatti, cioè se X è in un cortile è un cane o un gatto. Nel cortile corte 3 ci sono un gatto e un cane. x, c (incortile(x, c) cane(x) gatto(x)) a, b (cane(a) gatto(b) incortile(a, corte 3) incortile(b, corte 3)) Solite precedenze; i quantificatori hanno la precedenza di not

In prolog: le segnature % Segnatura corrente definita da una base dati con: %

In prolog: le segnature % Segnatura corrente definita da una base dati con: % aconst(X) : X è una costante % avar(X) : X è una variabile % afunc(F, N) : F simbolo funzione N-ario % apred(P, N) : P simbolo predicato N-ario avar(X) : - member(X, [a, b, c, x]). aconst(X) : - member(X, [felix, pluto, corte 3]). apred(cane, 1). apred(gatto, 1). apred(incortile, 2).

In prolog: le atomiche in una segnatura aterm(X) : - aconst(X); avar(X); ( X

In prolog: le atomiche in una segnatura aterm(X) : - aconst(X); avar(X); ( X =. . [F|Terms], afunc(F, N), terms(Terms, N) ). an. Atom(X) : - X =. . [P|Terms], apred(P, N), terms(Terms, N). terms([], 0). terms([T|TT], N) : - N > 0, M is N-1, aterm(T), terms(TT, M).

In prolog: le formule % uso operatori infissi : - op(200, xfy, &). :

In prolog: le formule % uso operatori infissi : - op(200, xfy, &). : - op(220, xfy, v). : - op(150, fy, non). : - op(250, xfx, imp). : - op(250, xfx, se). : - op(250, xfx, sse). aformula(X) : - an. Atom(X); X = non A, aformula(A); X = A & B, aformula(A), aformula(B); X = A v B, aformula(A), aformula(B); X = A imp B, …. . X = exi(V, A), avar(V), aformula(A); X = for(V, A), avar(V), aformula(A).

Variabili libere • è detto quantificatore universale ed è detto quantificatore • • •

Variabili libere • è detto quantificatore universale ed è detto quantificatore • • • esistenziale In (Qx A), dove Q è un quantificatore, A è detta scopo di Qx Una variabile x occorre vincolata in una formula se occorre nello scopo di un quantificatore Qx; occorre libera se non occorre vincolata; può occorrere sia libera, sia vincolata. Una formula è chiusa se nessuna variabile occorre libera Le sostituzioni sostituiscono SOLO le occorrenze libere Le istanze chiuse o ground si ottengono sostituendo con termini ground tutte le occorrenze libere di variabili

ESEMPIO X, C (incortile(X, C) cane(X) gatto(X)) X quantificata vede(X, Y) X libera (

ESEMPIO X, C (incortile(X, C) cane(X) gatto(X)) X quantificata vede(X, Y) X libera ( X, C (incortile(X, C) cane(X) gatto(X)) vede(X, Y)){X/fido} = ( X, C (incortile(X, C) cane(X) gatto(X)) vede(fido, Y) Le istanze ground nell’universo {fido, felix} sono 4: ( X, C (incortile(X, C) cane(X) gatto(X)) vede(fido, fido) cane(X) gatto(X)) vede(fido, felix) cane(X) gatto(X)) vede(felix, fido) cane(X) gatto(X)) vede(felix, felix)

Sostituzione in Prolog % La sostituzione distingue fra quantificatori e qualsiasi altro operatore; %

Sostituzione in Prolog % La sostituzione distingue fra quantificatori e qualsiasi altro operatore; % conviene introdurre due decomposizioni in sottoespressioni: quantified(QF, Q, V, Sub) : F = [Q, V|Sub], member(Q, [for, exi]). compound(F, Op, Sub) : F. . = [Op|Sub], ( afunc(Op, _); apred(Op, _); a. Propositrional. Op(Op) ) a. Propositional. Op(X) : member(X, [non, &, v, imp, se, sse])

Sostituzione in Prolog subst(X, S, T, Bounded) : - avar(X), % Bounded -> non

Sostituzione in Prolog subst(X, S, T, Bounded) : - avar(X), % Bounded -> non sostituita member(X, Bounded) -> T=X; ( member(X/T 1, S) -> T = T 1; T = X ). subst(C, _, C, _) : aconst(C). subst(F, S, F 1, Bound. V) : - compound(F, Op, Sub), substlist(Sub, S, Sub 1, Bound. V), compound(F, Op, Sub 1). subst(QF, S, QF 1, Bound. V) : - quantified(QF, Q, V, Subf), substlist(Subf, S 1, Subf 1, [V|Bound. V]), quantified(QF 1, Q, V, Subf 1). substlist([X|L], S, [X 1|L 1], B) : - subst(X, S, X 1, B), substlist(L, S, L 1, B). substlist([], _S, [], _B).

Modelli di Herbrandt in Prolog • Ci limitiamo al caso privo di funzioni; ci

Modelli di Herbrandt in Prolog • Ci limitiamo al caso privo di funzioni; ci sono solo costanti, come in datalog. Usiamo: intp(Interp, [C 1, …, Cn], [A 1, . . , An]) : C 1, . . , Cn è l’universo di Herbrandt dominio di Interp e A 1, …, An sono tutti e soli i fatti veri in Interp • Esempio: intp(caniegatti, [felix, fido], [vede(felix, fido), scappa(felix)]).

Verità in un modello di Herbrandt Base. A atomica chiusa: H |= A sse

Verità in un modello di Herbrandt Base. A atomica chiusa: H |= A sse A H Passo. • H |= A sse non H |= A • H |= A B sse H |= A e H |= B • H |= A B sse H |= A o H |= B • H |= x A sse H |= A per ogni istanza chiusa A • H |= x A sse H |= A per almeno un’istanza chiusa A Nota. A B equivale a B A A B equivale a (A B)

Esercizio Prolog • Usando le rappresentazione e i predicati prolog definiti nei lucidi precedenti

Esercizio Prolog • Usando le rappresentazione e i predicati prolog definiti nei lucidi precedenti e messi nel file prolog allegato alla lezione, definire i seguenti predicati, dove V e’ una variabile, A, A 1 sono formule chiuse e H e’ un’interpretazione di Herbrandt: istanza(V/C, A, A 1, H) : significa “A 1 = A{V/C} per un C nel dominio di H” H /= A : significa “A è vera in H” Per la quantificazione universale si puo’ usare il predicato predefinito prolog forall come segue: forall(istanza(V/_, A, A 1, H), vera(A 1, H)).

Esempio x y ( cane(x) incortile(x, y)) x ( cane(x) abbaia(x)) È vera nella

Esempio x y ( cane(x) incortile(x, y)) x ( cane(x) abbaia(x)) È vera nella seguente interpretazione? cane(pluto). abbaia(pluto). gatto(felix). incortile(pluto, c 1). Universo = {pluto, felix, c 1}

cane(pluto). abbaia(pluto). gatto(felix). incortile(pluto, c 1). Universo = {pluto, felix, c 1} 1. x

cane(pluto). abbaia(pluto). gatto(felix). incortile(pluto, c 1). Universo = {pluto, felix, c 1} 1. x y ( cane(x) incortile(x, y)) vero? 2. x ( cane(x) abbaia(x)) vero? Risolviamo 1. Scegliamo l’istanza x=pluto y ( cane(pluto) incortile(pluto, y)) vero? Scegliamo l’istanza y = c 1 cane(pluto) incortile(pluto, c 1) vero? ora come nel proposizionale

cane(pluto). abbaia(pluto). gatto(felix). incortile(pluto, c 1). Universo = {pluto, felix, c 1} 1. x

cane(pluto). abbaia(pluto). gatto(felix). incortile(pluto, c 1). Universo = {pluto, felix, c 1} 1. x y ( cane(x) incortile(x, y)) vero? 2. x ( cane(x) abbaia(x)) vero? Risolviamo 2. Le istanze sono x=pluto, x=felix, x=c 1 cane(pluto) abbaia(pluto) vero? cane(felix) abbaia(felix) vero? cane(c 1) abbaia(c 1) vero? ora come nel proposizionale