merkmalslogik prolog aufbaukurs ss 2000 heinrich-heine-universität düsseldorf christof rumpf

24
Merkmalslogi Merkmalslogi k k Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

Upload: katarina-bockelman

Post on 05-Apr-2015

107 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

MerkmalslogikMerkmalslogik

Prolog Aufbaukurs SS 2000

Heinrich-Heine-Universität Düsseldorf

Christof Rumpf

Page 2: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 2

MerkmalsstrukturenMerkmalsstrukturen

Var, Type, [F1:V1,... ,Fn:Vn] FSSfalls:

• Var PROLOGVARS

• Type TYPES

• F FEATURES

• V FSS

Page 3: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 3

Beispiel - FSsBeispiel - FSs

(_1,agr, [ cas:(_2,cas,[]),

num:(_3,num,[]),gen:(_4,gen,[])])

:

:

:

agr

cas cas

num num

gen gen

(_1,agr, [ cas:(_2,acc,[]),

num:(_3,sg,[]),gen:(_4,fem,[])])

:

:

:

agr

cas acc

num sg

gen fem

Klasse Instanz

Page 4: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 4

MerkmalslogikMerkmalslogik• Eine Merkmalslogik definiert eine Beschreibungssprache

für Merkmalsstrukturen.

• Die Semantik eines Ausdrucks in unserer Merkmalslogik wird durch die partielle Funktion mgu definiert:

mgu: Descr 2FSs

• Partiell: nicht alle Beschreibungen haben Lösungen.

• Potenzmenge: manche Beschreibungen haben mehrere Lösungen, da durch Disjunktion und Negation ein Nichtdeterminismus eingebracht wird.

Page 5: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 5

Bestandteile der LogikBestandteile der Logik

• Variablen• Typen• Attribut-Wert-Paare• Konjunktion• Disjunktion• Negation• Makros

• PrologVar DESCR• Type DESCR• F:DESCR DESCR• DESCR, DESCR DESCR• DESCR; DESCR DESCR• - DESCR DESCR• @MacroHead DESCR

Page 6: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 6

MakrodefinitionenMakrodefinitionen

MakroHead macro Descr.

wobei:

MakroHead = MakroName(Arg1, ..., Argn)

MakroName ATOM

Argi PROLOGVAR

Descr DESCR

Page 7: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 7

mgu/1mgu/1

mgu(Descr):-

mgu(Descr,top, FS),

print_fs(FS).

:

:

:

agr

cas cas

num num

gen gen

(_1,agr, [ cas:(_2,cas,[]),

num:(_3,num,[]),gen:(_4,gen,[])])

agr

Page 8: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 8

VariablenVariablen

mgu(V, _, FS):-

var(V), !,

mgu(top, _, FS),

FS = (V - _ = _).

Page 9: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 9

TypenTypen

mgu(T, _, FS):-

type(T), !,

db_fs(T, FS).

vorkompiliert

Page 10: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 10

Attribut-Wert-PaareAttribut-Wert-Paare

mgu(F:V,_,FS):- !,

db_feature_lub(F:C,LUB),

mgu(V,C,VFS),

fval_unify(F,LUB,VFS,FS).

fval_unify(F,LUB,VFS,FS):-

mgu(LUB,top,LUBFS),

unify((_-LUB=[F:VFS]),LUBFS,FS),

!.

Backtracking

Page 11: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 11

KonjunktionKonjunktion

mgu((A,B),C,I):- !,

mgu(A,C,AI),

mgu(B,C,BI),

unify(AI,BI,I).

Page 12: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 12

DisjunktionDisjunktion

mgu((A;B),C,I):- !,

(mgu(A,C,I) ;

mgu(B,C,I)).

Nicht-Determinismus

Page 13: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 13

MakrosMakros

mgu(@ Macro,C,MI):- !,

call(Macro macro Def),

mgu(Def,C,MI).

Page 14: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 14

NegationNegation• Negation von

– Variablen– Typen– Attribut-Wert-Paaren– Konjunktion– Disjunktion– Negation– Makros

Strategie:

Auflösung der Negation komplexer Beschreibungen durch Verschiebung auf einfachere Bestandteile.

Page 15: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 15

Negation von VariablenNegation von Variablen

mgu(V, _, FS):-

var(V),

!, fail.

Diese Semantik negierter Variablen ist auf Dauer nicht wünschenswert.

Page 16: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 16

Negation von TypenNegation von Typen

mgu(-A,CT,FS):-

type(A), !,

complement(A,CT,C),

member(T,C),

mgu(T,CT,FS).

Page 17: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 17

Negation von F:V-PaarenNegation von F:V-Paaren

mgu(- (F:V),C,I):- !,

mgu((F:(-V)),C,I).

Page 18: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 18

Negation von KonjunktionNegation von Konjunktion

mgu(- (A,B),C,I):- !,

mgu(((-A);(-B)),C,I).

Nach DeMorgan.

Page 19: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 19

Negation von DisjunktionNegation von Disjunktion

mgu(- (A;B),C,I):- !,

mgu(((-A),(-B)),C,I).

Nach DeMorgan.

Page 20: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 20

Doppelte NegationDoppelte Negation

mgu(-(-(D)),I):- !,

mgu(D,I).

Page 21: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 21

Negation von MakrosNegation von Makros

mgu(- @ Macro,C,MI):- !,call(Macro macro Def),mgu(- Def,C,MI).

Page 22: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 22

Unifikation IUnifikation Iunify(FS1,FS2,FS3):- unify_tfs(FS1,FS2,FS3), !.

unify_tfs(FS,FS,FS):- !.

unify_tfs((O-T1=FS1),(O-T2=FS2),(O-T3=FS3)):- !,db_glb(T1,T2,T3),unify_avl(FS1,FS2,FS4),reentrancies(FS4,FS5),qsort(FS5,FS3).

Bemerkung: vollständig nur für BCPOs

Page 23: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 23

Unifikation IIUnifikation II

unify_avl([],FS,FS):- !.

unify_avl([F:V1|FS1],FS2,[F:V3|FS3]):-delete(F:V2,FS2,FS21), !,unify_tfs(V1,V2,V3),unify_avl(FS1,FS21,FS3).

unify_avl([FV|FS1],FS2,[FV|FS3]):-unify_avl(FS1,FS2,FS3).

Page 24: Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

26.06.2000 Merkmalslogik 24

LiteraturLiteratur

• Carpenter, Bob (199?): The Logic of Typed Feature Structures.

• O‘Keefe, Richard (199?): The Craft of Prolog.