Der unbestimmte Artikel (ein) wird in die Prädikatenlogik übersetzt als als:
λPλQ∃x(P(x) ∧ Q(x))
Hier sind P und Q Variablen für einstellige Prädikate.
Dieser Lambda-Ausdruck kann angewendet werden auf ein einstelliges Prädikat; dies entspricht in der Syntax der Regel np -> art n; dabei ist das einstellige Prädikat die Übersetzung des Nomens in die Prädikatenlogik.
λPλQ∃x(P(x) ∧ Q(x)) 'astronom (entspricht der Semantik der NP)
durch Lambda-Konversion (Beta-Reduktion) - ersetze alle Vorkommen von P durch 'astronom:
λQ∃x('astronom(x) ∧ Q(x)) (entspricht nun der Semantik der NP)
Nun wird in der Syntax ein NP mit einem intransitiven Verb zu einem Satz kombiniert (s -> np iv). Die entsprechende Operation in der Logik ist die Anwendung der NP Semantik auf das Prädikat, das die Übersetzung des intransitiven Verbs ist:
λQ∃x('astronom(x) ∧ Q(x)) 'lachen (entspricht nun der Semantik der Satzes)
durch Lambda-Konversion(Beta-Reduktion) - ersetze alle Vorkommen von P durch 'lachen:
∃x('astronom(x) ∧ lachen(x)) (entspricht nun der Semantik der Satzes)
Wir repräsentieren die Prädikatsvariablen P und Q hier aus technischen Gründen wieder durch Lambda-Ausdrücke, z.B.
P => lambda(X,P)
Dann erhalten wir folgendes Lexikon
art(lambda(lambda(X,P),lambda(lambda(X,Q),ex(X,und(P,Q))))) --> [ein].
n(lambda(X,astronom(X))) --> [astronom].
vi(lambda(X,lachen(X))) --> [lacht].
Die Grammatik muss nun zur Übersetzung eines Satzes in einen prädikatenlogischen Ausdruck nur noch die richtige Kombination der Lambda-Ausdrücke leisten:
satz(Sem_Satz)
--> np(lambda(Sem_Verb,Sem_Satz)), vi(Sem_Verb).
np(Sem_Np) --> art(lambda(Sem_N,Sem_Np)), n(Sem_N).
Und fertig ist die erste Version der Grammatik mit Artikel.
Wir haben nun ein Problem mit der Integration von Eigennamen. In den Syntaxregeln wird ein Lambda-Ausdruck, der die Semantik einer NP repräsentiert, auf ein Prädikat (Semantik eines Verbs oder Nomens) angewandt. Wie lässt sich nun die Übersetzung eines Eigennamens in die Prädikatenlogik, bisher eine Individuenkonstante, in einen Lambdaausdruck verwandeln? Die Idee ist, es, ein Individuum als Abstraktion aller Eigenschaften zu verstehen, die auf es zutreffen; so lässt sich etwa Herschel in der Logik definieren als:
λP(P('herschel))
In unserem Prolog-Format ergibt das (Das Prädikat P wird durch wieder aus technischen Gründen durch eine Lambda-Ausdrück repräsentiert; Herschel wird innerhalb dieses Ausdrucks in das Prädikat kopiert):
en(lambda(lambda(herschel,P),P)) --> [herschel].
Die zusätzliche NP-Regel ist dann einfach:
np(Sem_Np) --> en(Sem_Np).
Transitive Verben lassen ebenfalls leicht in dies Grammatik integrieren. Die Logikrepräsentation eines transitiven Verbs (hier "entdecken" ist dabei:
λx λy ('entdecken(x,y))
In Prolog: lambda(X,lambda(Y,entdecken(X,Y)))
Dies muss nun mit der Semantik einer NP kombiniert werden um die Semantik einer VP zu erhalten:
NP-Semantik ("ein Gestirn"):lambda(lambda(X,Q),ex(X,und(gestirn(X),Q)))
Dies wird über folgende Regel gewährleistet:
vp(lambda(Y,Sem)) --> vt(lambda(X,lambda(Y,P))), np(lambda(lambda(X,P),Sem)).
Hier nun noch die gesamte Grammatik als Prolog-Programm:
gram_sem_art.txt