Download - 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
26.06.2000 Merkmalslogik 2
MerkmalsstrukturenMerkmalsstrukturen
Var, Type, [F1:V1,... ,Fn:Vn] FSSfalls:
• Var PROLOGVARS
• Type TYPES
• F FEATURES
• V FSS
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
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.
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
26.06.2000 Merkmalslogik 6
MakrodefinitionenMakrodefinitionen
MakroHead macro Descr.
wobei:
MakroHead = MakroName(Arg1, ..., Argn)
MakroName ATOM
Argi PROLOGVAR
Descr DESCR
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
26.06.2000 Merkmalslogik 8
VariablenVariablen
mgu(V, _, FS):-
var(V), !,
mgu(top, _, FS),
FS = (V - _ = _).
26.06.2000 Merkmalslogik 9
TypenTypen
mgu(T, _, FS):-
type(T), !,
db_fs(T, FS).
vorkompiliert
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
26.06.2000 Merkmalslogik 11
KonjunktionKonjunktion
mgu((A,B),C,I):- !,
mgu(A,C,AI),
mgu(B,C,BI),
unify(AI,BI,I).
26.06.2000 Merkmalslogik 12
DisjunktionDisjunktion
mgu((A;B),C,I):- !,
(mgu(A,C,I) ;
mgu(B,C,I)).
Nicht-Determinismus
26.06.2000 Merkmalslogik 13
MakrosMakros
mgu(@ Macro,C,MI):- !,
call(Macro macro Def),
mgu(Def,C,MI).
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.
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.
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).
26.06.2000 Merkmalslogik 17
Negation von F:V-PaarenNegation von F:V-Paaren
mgu(- (F:V),C,I):- !,
mgu((F:(-V)),C,I).
26.06.2000 Merkmalslogik 18
Negation von KonjunktionNegation von Konjunktion
mgu(- (A,B),C,I):- !,
mgu(((-A);(-B)),C,I).
Nach DeMorgan.
26.06.2000 Merkmalslogik 19
Negation von DisjunktionNegation von Disjunktion
mgu(- (A;B),C,I):- !,
mgu(((-A),(-B)),C,I).
Nach DeMorgan.
26.06.2000 Merkmalslogik 20
Doppelte NegationDoppelte Negation
mgu(-(-(D)),I):- !,
mgu(D,I).
26.06.2000 Merkmalslogik 21
Negation von MakrosNegation von Makros
mgu(- @ Macro,C,MI):- !,call(Macro macro Def),mgu(- Def,C,MI).
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
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).
26.06.2000 Merkmalslogik 24
LiteraturLiteratur
• Carpenter, Bob (199?): The Logic of Typed Feature Structures.
• O‘Keefe, Richard (199?): The Craft of Prolog.