TRALE Definite Clauses Grammar Engineering, SS 2006 Georgiana Dinu - - PowerPoint PPT Presentation

trale definite clauses
SMART_READER_LITE
LIVE PREVIEW

TRALE Definite Clauses Grammar Engineering, SS 2006 Georgiana Dinu - - PowerPoint PPT Presentation

TRALE Definite Clauses Grammar Engineering, SS 2006 Georgiana Dinu TRALE Definite Clauses p. 1/3 Overview Definite clauses: Overview TRALE Definite Clauses p. 2/3 Overview Definite clauses: Overview Clauses in Prolog


slide-1
SLIDE 1

TRALE Definite Clauses

Grammar Engineering, SS 2006 Georgiana Dinu

TRALE Definite Clauses – p. 1/3

slide-2
SLIDE 2

Overview

  • Definite clauses: Overview

TRALE Definite Clauses – p. 2/3

slide-3
SLIDE 3

Overview

  • Definite clauses: Overview
  • Clauses in Prolog Language

TRALE Definite Clauses – p. 2/3

slide-4
SLIDE 4

Overview

  • Definite clauses: Overview
  • Clauses in Prolog Language
  • TRALE Definite Clauses
  • Defining a clause
  • Relational Attachments

TRALE Definite Clauses – p. 2/3

slide-5
SLIDE 5

Definite Clauses

  • (1) φ1 ∧ ... ∧ φn → φ0

φ0 : − φ1, ..., φn head : − body (2) φ0

  • TRALE syntax

<clause> ::= <literal> if <goal>. <literal> ::= <pred_sym> | <pred_sym>(<seq(desc)>)

  • member2 as a definite clause in TRALE:

member(X, hd:X) if true. member(X, tl:Xs) if member(X, Xs).

TRALE Definite Clauses – p. 3/3

slide-6
SLIDE 6

Definite Clauses in Prolog: Declarative Semantics

  • concatenate([], L, L).

concatenate([X|L1], L2, [X|L3]) :- concatenate(L1, L2, L3). ?- concatenate([a], [b], [a,b]). concatenate([a], [b], [a,b]) :- concatenate([], [b], [b]).

  • A goal is true if it is the head of some clause instance and each of the goals (if

any) in the body of that clause instance is true, where an instance of a clause (or term) is obtained by substituting, for each of zero or more of its variables, a new term for all occurrences of the variable.

TRALE Definite Clauses – p. 4/3

slide-7
SLIDE 7

Definite Clauses in Prolog: Declarative Semantics

  • concatenate([], L, L).

concatenate([X|L1], L2, [X|L3]) :- concatenate(L1, L2, L3). ?- concatenate([a], [b], [a,b]). concatenate([a], [b], [a,b]) :- concatenate([], [b], [b]).

  • A goal is true if it is the head of some clause instance and each of the goals (if

any) in the body of that clause instance is true, where an instance of a clause (or term) is obtained by substituting, for each of zero or more of its variables, a new term for all occurrences of the variable.

TRALE Definite Clauses – p. 5/3

slide-8
SLIDE 8

Definite Clauses in Prolog: Procedural Semantics

  • Query

?- concatenate(X, Y, [a,b]).

  • Instantiated queries

?- concatenate(X1, Y, [b]). ?- concatenate(X2, Y, []).

  • Solutions

X = [a,b] Y = [] X = [a] Y = [b] X = [] Y = [a,b]

  • If there is no matching head for a goal, the execution backtracks to the most recent

successful match.

TRALE Definite Clauses – p. 6/3

slide-9
SLIDE 9

The Cut Symbol

  • The cut operation commits the system to all choices made since the parent goal

was invoked, and causes other alternatives to be discarded.

  • member(X, [X|_]).

member(X, [_|L]) :- member(X, L). | ?- member(X, [d,e,f]). Solution: d, e, f.

  • member(X, [X|_]) :- !.

member(X, [_|L]) :- member(X, L). | ?- member(X, [d,e,f]). Solution: d

  • ?- member(e, [d, e, f]) .

Yes

TRALE Definite Clauses – p. 7/3

slide-10
SLIDE 10

If then else

  • P -> Q ; R

Analogous to if P then Q else R and defined as if by (P -> Q; R) :- P, !, Q. (P -> Q; R) :- R.

  • Only explores the first solution to the goal P (removes all choice-points created by

P and executes Q.)

  • P -> Q

When occurring as a goal, this construction is read as equivalent to: (P -> Q; fail)

  • Example

add(X,L1,L2) :- member(X,L1) -> L2 = L1 ; L2 = [X|L1]. 1 ?- add(a, [b,c], [a,b,c]) . Yes 2 ?- add(X, [b,c], [a,b,c]) . No

TRALE Definite Clauses – p. 8/3

slide-11
SLIDE 11

Negation by failure

  • Fails if the goal P has a solution, and succeeds otherwise. This is not real negation

("P is false"), but a kind of pseudo-negation meaning "P is not provable". It is defined as: \+(P) :- P, !, fail. \+(_).

  • The only time we get something like the desired result if there is no existentially

quantified variable in the goal.

  • Example

p(a). p(b). q(c). ?-q(X), \+p(X). % succeeds with X=c ?-\+p(X), q(X). % fails

TRALE Definite Clauses – p. 9/3

slide-12
SLIDE 12

TRALE Definite Clauses

  • Terms: TRALE Descriptions
  • Evaluation of a definite clause query
  • Solution to Queries: Satisfiers of the entire query as most general solutions
  • Example

| ?- query member(X, [noun, verb]).

  • Solution 1:

member([0] noun CASE case, ne_list HD [0] TL ne_list HD verb VFORM vform TL e_list)

TRALE Definite Clauses – p. 10/3

slide-13
SLIDE 13

TRALE Definite Clauses

  • Terms: TRALE Descriptions
  • Evaluation of a definite clause query
  • Solution to Queries: Satisfiers of the entire query as most general solutions
  • Example

| ?- query member(X, [noun, verb]).

  • Solution 2:

member([0] verb VFORM vform, ne_list HD noun CASE case TL ne_list HD [0] TL e_list)

TRALE Definite Clauses – p. 11/3

slide-14
SLIDE 14

TRALE Definite Clauses: Syntax

<goal> ::= true | <literal> | prolog(<prolog_goal>) | (<goal>,<goal>) | (<goal>;<goal>) | (<desc> =@ <desc>) | (<cut_free_goal> -> <goal>) | (<cut_free_goal> -> <goal> ; <goal>) | ! | (\+ <goal>) | when(cond, <goal>)

TRALE Definite Clauses – p. 12/3

slide-15
SLIDE 15

TRALE Definite Clauses: Syntax

<goal> ::= true

| <literal>

| prolog(<prolog_goal>) | (<goal>,<goal>) | (<goal>;<goal>) | (<desc> =@ <desc>) | (<cut_free_goal> -> <goal>) | (<cut_free_goal> -> <goal> ; <goal>) | ! | (\+ <goal>) | when(cond, <goal>)

TRALE Definite Clauses – p. 13/3

slide-16
SLIDE 16

TRALE Definite Clauses: Syntax

<goal> ::= true | <literal>

| prolog(<prolog_goal>)

| (<goal>,<goal>) | (<goal>;<goal>) | (<desc> =@ <desc>) | (<cut_free_goal> -> <goal>) | (<cut_free_goal> -> <goal> ; <goal>) | ! | (\+ <goal>) | when(cond, <goal>)

TRALE Definite Clauses – p. 14/3

slide-17
SLIDE 17

TRALE Definite Clauses: Syntax

<goal> ::= true | <literal> | prolog(<prolog_goal>)

| (<goal>,<goal>)

| (<goal>;<goal>) | (<desc> =@ <desc>) | (<cut_free_goal> -> <goal>) | (<cut_free_goal> -> <goal> ; <goal>) | ! | (\+ <goal>) | when(cond, <goal>)

TRALE Definite Clauses – p. 15/3

slide-18
SLIDE 18

TRALE Definite Clauses: Syntax

<goal> ::= true | <literal> | prolog(<prolog_goal>) | (<goal>,<goal>)

| (<goal>;<goal>)

| (<desc> =@ <desc>) | (<cut_free_goal> -> <goal>) | (<cut_free_goal> -> <goal> ; <goal>) | ! | (\+ <goal>) | when(cond, <goal>)

TRALE Definite Clauses – p. 16/3

slide-19
SLIDE 19

TRALE Definite Clauses: Syntax

<goal> ::= true | <literal> | prolog(<prolog_goal>) | (<goal>,<goal>) | (<goal>;<goal>)

| (<desc> =@ <desc>)

| (<cut_free_goal> -> <goal>) | (<cut_free_goal> -> <goal> ; <goal>) | ! | (\+ <goal>) | when(cond, <goal>)

TRALE Definite Clauses – p. 17/3

slide-20
SLIDE 20

TRALE Definite Clauses: Syntax

<goal> ::= true | <literal> | prolog(<prolog_goal>) | (<goal>,<goal>) | (<goal>;<goal>) | (<desc> =@ <desc>)

| (<cut_free_goal> -> <goal>)

| (<cut_free_goal> -> <goal> ; <goal>) | ! | (\+ <goal>) | when(cond, <goal>)

TRALE Definite Clauses – p. 18/3

slide-21
SLIDE 21

TRALE Definite Clauses: Syntax

<goal> ::= true | <literal> | prolog(<prolog_goal>) | (<goal>,<goal>) | (<goal>;<goal>) | (<desc> =@ <desc>) | (<cut_free_goal> -> <goal>)

| (<cut_free_goal> -> <goal> ; <goal>)

| ! | (\+ <goal>) | when(cond, <goal>)

TRALE Definite Clauses – p. 19/3

slide-22
SLIDE 22

TRALE Definite Clauses: Syntax

<goal> ::= true | <literal> | prolog(<prolog_goal>) | (<goal>,<goal>) | (<goal>;<goal>) | (<desc> =@ <desc>) | (<cut_free_goal> -> <goal>) | (<cut_free_goal> -> <goal> ; <goal>)

| !

| (\+ <goal>) | when(cond, <goal>)

TRALE Definite Clauses – p. 20/3

slide-23
SLIDE 23

TRALE Definite Clauses: Syntax

<goal> ::= true | <literal> | prolog(<prolog_goal>) | (<goal>,<goal>) | (<goal>;<goal>) | (<desc> =@ <desc>) | (<cut_free_goal> -> <goal>) | (<cut_free_goal> -> <goal> ; <goal>) | !

| ( \+ <goal>)

| when(cond, <goal>)

TRALE Definite Clauses – p. 21/3

slide-24
SLIDE 24

TRALE Definite Clauses: Syntax

<goal> ::= true | <literal> | prolog(<prolog_goal>) | (<goal>,<goal>) | (<goal>;<goal>) | (<desc> =@ <desc>) | (<cut_free_goal> -> <goal>) | (<cut_free_goal> -> <goal> ; <goal>) | ! | (\+ <goal>)

| when(cond, <goal>)

TRALE Definite Clauses – p. 22/3

slide-25
SLIDE 25

Co-routining 1

  • Syntax

| when(<cond>,<goal>)

  • when/2 delays execution until some event is witnessed.
  • Example:

append(X,Y,Z) if when( ( X=(e_list;ne_list) ; Y=e_list ; Z=(e_list;ne_list) ), undelayed_append(X,Y,Z)). undelayed_append(L,[],L) if true. undelayed_append([],(L,ne_list),L) if true. undelayed_append([H|T1],(L,ne_list),[H|T2]) if append(T1,L,T2).

TRALE Definite Clauses – p. 23/3

slide-26
SLIDE 26

Co-routining 2

  • Conditional descriptions syntax

<cond> ::= <variable>ˆ(<cond>) | <quantified_cond> <quantified_cond> ::= <quantified_cond>,<quantified_cond> | <quantified_cond>;<quantified_cond> | <variable>=<cond_desc> <cond_desc> ::= <variable> | <type> | max(<type>) | <feat>:<cond_desc> | <path> == <path> | <cond_desc>, <cond_desc> | <cond_desc> ;<cond_desc>

TRALE Definite Clauses – p. 24/3

slide-27
SLIDE 27

Co-routining 3

  • Shared variables in conditionals

when(X=([f]==[g]),bar(X)) when(X=(f:Y,g:Y),bar(X))

  • Narrow scope

when(Yˆ(X=(f:Y,g:Y)),bar(X)) foo(X) if Z = f:Y, when(Yˆ(X=(f:Y,g:Y)),bar(Y,Z))

TRALE Definite Clauses – p. 25/3

slide-28
SLIDE 28

Attaching Definite Relations: Con- straints

  • Syntax

CondDesc *> Desc goal Goal.

  • If a goal is specified in a constraint, the constraint is satisfied only if the goal

succeeds.

  • Variables occuring in the consequent are bound with scope that extends over the

consequent and over the relation attachments.

  • Example

phrase *> (synsem:category:subcat:PhrSubcat, dtr1:synsem:Synsem, dtr2:synsem:category:subcat:HeadSubcat) goal append(PhrSubcat,[Synsem],HeadSubcat).

TRALE Definite Clauses – p. 26/3

slide-29
SLIDE 29

Attaching Definite Relations: Phrase Structure Rules 1

  • Syntax

<rule_clause> ::= cat> <desc> |cats> <desc> |goal <goal>

  • Example

backward_application rule # (synsem:..., qstore:Qs) ===> cat> (synsem:..., qstore:Qs1), cat> (synsem:..., qstore:Qs2), goal> append(Qs1,Qs2,Qs).

TRALE Definite Clauses – p. 27/3

slide-30
SLIDE 30

Attaching Definite Relations: Phrase Structure Rules 2

Evaluation

  • evaluated in the order they are specified
  • all possible solutions are found and the resulting instantiations are carried over to

the rule Example schema2 rule # (cat:(head:Head,subcat:[SubjSyn])) goal> three_or_less(Comps), cats> Comps, cat> (cat:(head:Head, subcat:[Subj|Comps])). three_or_less([]) if true. three_or_less([_]) if true. three_or_less([_,_]) if true. three_or_less([_,_,_]) if true.

TRALE Definite Clauses – p. 28/3

slide-31
SLIDE 31

Attaching Definite Relations: Lexical Rules

  • Syntax:

<lex_rewrite> ::= <desc> **> <desc> if <goal>

  • passive_lex_rule ##

(word, synsem:..., arg_st:[(loc:(cat:..., cont:Cont2)), Synsem1|List]) **> (word, synsem:..., arg_st:([Synsem1|List];Result)) if append(([Synsem1|List]),[(loc:(cat:..., cont:Cont2))],Result) morphs X becomes X.

TRALE Definite Clauses – p. 29/3

slide-32
SLIDE 32

Summary

  • TRALE’s definite clause extension provides a way of encoding HPSG relations

TRALE Definite Clauses – p. 30/3

slide-33
SLIDE 33

Summary

  • TRALE’s definite clause extension provides a way of encoding HPSG relations
  • Various computational aspects become important in:
  • Formulating definite clauses
  • Attaching them as relational constraints

TRALE Definite Clauses – p. 30/3

slide-34
SLIDE 34

Summary

  • TRALE’s definite clause extension provides a way of encoding HPSG relations
  • Various computational aspects become important in:
  • Formulating definite clauses
  • Attaching them as relational constraints
  • Further reading:
  • On Prolog definite clauses: Sicstus Prolog Manual
  • Prolog Language:

http://www.sics.se/sicstus/docs/latest/html/sicstus.html/Prolog- Intro.html#Prolog%20Intro

  • Predicate Index:

http://www.sics.se/sicstus/docs/latest/html/sicstus.html/Predicate- Index.html#Predicate%20Index

TRALE Definite Clauses – p. 30/3

slide-35
SLIDE 35

Summary

  • On defining TRALE clauses: TRALE User Manual Chapter 5

http://www.ale.cs.toronto.edu/docs/man/ale_trale_man/index.html Co-routining: 5.2 Shared variables in conditionals: 5.2.1

  • On attaching goals: TRALE User Manual Chapters 4,6

Constraints: T4.3 Phrase structure rules: 6.4.1 Lexical Rules: 6.3

  • On evaluating definite clause queries: Trale User Manual Appendix B, Section 2.4
  • On source level debugger: Trale User Manual Appendix B, Section 2.10

TRALE Definite Clauses – p. 31/3