Logic and Knowledge Representation L a n g u a g e P r o - - PowerPoint PPT Presentation

logic and knowledge representation
SMART_READER_LITE
LIVE PREVIEW

Logic and Knowledge Representation L a n g u a g e P r o - - PowerPoint PPT Presentation

Logic and Knowledge Representation L a n g u a g e P r o c e s s i n g , M e t a - p r o g r a m m i n g 1 J u n e 2 0 1 8 G i o v a n n i S i l e n o g s i l e n o @e n s t . f


slide-1
SLIDE 1

Logic and Knowledge Representation

G i

  • v

a n n i S i l e n

  • g

s i l e n

  • @e

n s t . f r

T é l é c

  • m

P a r i s T e c h , P a r i s

  • D

a u p h i n e U n i v e r s i t y

L a n g u a g e P r

  • c

e s s i n g , M e t a

  • p

r

  • g

r a m m i n g

1 J u n e 2 1 8

slide-2
SLIDE 2

Natural Language Processing

slide-3
SLIDE 3

About talking machines...

  • T

h e d r e a m

  • f

m a c h i n e t a l k i n g t

  • h

u m a n s i s p r e s e n t i n m a n y fj c t i

  • n

a l w

  • r

k s . . .

Samantha Data (Star Trek) C-3PO, R2-D2 (Star Wars) Hal 9000

slide-4
SLIDE 4

About talking machines...

  • T

h e d r e a m

  • f

m a c h i n e t a l k i n g t

  • h

u m a n s i s p r e s e n t i n m a n y fj c t i

  • n

a l w

  • r

k s . . . e v e n i n a n c i e n t t i m e s ! From the Iliad, Book XVIII: “There were golden handmaids also who worked for him [Hephaestus], and were like real young women, with sense and reason, voice also and strength, and all the learning of the immortals.”

slide-5
SLIDE 5

About talking machines...

V a r i a t i

  • n

s

  • f

t h e ( i n ) f a m

  • u

s “ T u r i n g t e s t ”

slide-6
SLIDE 6

First “concrete” attempts

E L I Z A

We i z e n b a u m ~ 1 9 6 5

slide-7
SLIDE 7

First “concrete” attempts

E L I Z A

We i z e n b a u m ~ 1 9 6 5 I f y

  • u

h a v e e m a c s , t r y M-x doctor

slide-8
SLIDE 8

First “concrete” attempts

S H R D L U

Wi n

  • g

r a d ~ 1 9 6 9

  • D

e e p e r u n d e r s t a n d i n g

  • b

u t l i m i t e d t

  • a

s i m p l e b l

  • c

k s w

  • r

l d

slide-9
SLIDE 9

Today?

  • B

u t d

  • a

u t

  • m

a t i c t r a n s l a t

  • r

s “ u n d e r s t a n d ” w h a t w e s a y ?

slide-10
SLIDE 10

Winograd Schema Challenge

“The city councilmen refused the demonstrators a permit because they [feared/advocated] violence.”

  • P

r

  • p
  • s

e d b y L e v e s q u e i n 2 1 4 t

  • g
  • b

e y

  • n

d t h e T u r i n g t e s t , i t c

  • u

n t s t

  • d

a y 1 4 s e n t e n c e s a s :

  • T
  • w

h

  • m

t h e y r e f e r s ?

slide-11
SLIDE 11

Winograd Schema Challenge

“The city councilmen refused the demonstrators a permit because they [feared/advocated] violence.”

  • P

r

  • p
  • s

e d b y L e v e s q u e i n 2 1 4 t

  • g
  • b

e y

  • n

d t h e T u r i n g t e s t , i t c

  • u

n t s t

  • d

a y 1 4 s e n t e n c e s a s :

  • T
  • w

h

  • m

t h e y r e f e r s ?

  • P

r

  • b

l e m : r e s

  • l

v i n g a n a p h

  • r

a s

slide-12
SLIDE 12

Levels of linguistic processing

[ S l i d e b y F a b i a n S u c h a n e k , T é l é c

  • m

P a r i s T e c h ]

slide-13
SLIDE 13

Levels of linguistic processing

[ S l i d e b y F a b i a n S u c h a n e k , T é l é c

  • m

P a r i s T e c h ]

  • A

l l t h e s e l e v e l s p l a y a r

  • l

e w i t h l a n g u a g e !

slide-14
SLIDE 14

not only in verbal language...

V i t t

  • r

e C a r p a c c i

  • ,

D u e D a m e , ~ 1 4 9 5

slide-15
SLIDE 15

V i t t

  • r

e C a r p a c c i

  • ,

D u e D a m e + C a c c i a i n v a l l e , ~ 1 4 9 5

not only in verbal language...

r e c

  • n

s t r u c t i

  • n
  • f

t h e

  • r

i g i n a l p a i n t i n g

B e w a r e

  • f

c

  • n

t e x t !

slide-16
SLIDE 16

Language Processing in Prolog

slide-17
SLIDE 17

Prolog and Context-Free Grammars

  • A

l a i n C

  • l

m e r a u e r a n d P h i l i p p e R

  • u

s s e l c

  • n

c e i v e d P r

  • l
  • g

( 1 9 7 2 ) t

  • f

a c i l i t a t e s y n t a x i c p r

  • c

e s s i n g , f

  • l

l

  • w

i n g t h e t h e

  • r

y

  • f

c

  • n

t e x t

  • f

r e e g r a m m a r s .

  • C

F G s w e r e i n t r

  • d

u c e d i n l i n g u i s t i c s b y N

  • a

m C h

  • m

s k y t

  • c

l e a r l y d i s t i n g u i s h s y n t a x f r

  • m

s e m a n t i c s [ a n d t

  • a

t t a c k s i m p l e s t a t i s t i c a l m

  • d

e l s

  • f

l a n g u a g e . ]

Colorless green ideas sleep furiously. Furiously sleep ideas green colorless.

slide-18
SLIDE 18

Context-Free Grammar

  • A

c

  • n

t e x t

  • f

r e e g r a m m a r G i s d e fj n e d b y G = ( V , Σ , R , S )

– V

i s t h e fj n i t e s e t

  • f

n

  • n
  • t

e r m i n a l c h a r a c t e r s ( v a r i a b l e s ) , s t a n d i n g f

  • r

t h e s y n t a x i c c a t e g

  • r

y

– Σ

i s a fj n i t e s e t

  • f

t e r m i n a l s y m b

  • l

s , d i s j

  • i

n t f r

  • m

V , s t a n d i n g f

  • r

t h e a c t u a l c

  • n

t e n t

  • f

t h e s e n t e n c e

– R

i s a s e t

  • f

r e w r i t e

  • r

p r

  • d

u c t i

  • n

r u l e s

  • f

t h e g r a m m a r , i . e . m a p p i n g s f r

  • m

V t

  • (

V ∪ Σ )

*

( * = K l e e n e s t a r s y m b

  • l

)

– S

i s t h e s t a r t s y m b

  • l

, u s e d t

  • r

e p r e s e n t t h e w h

  • l

e s e n t e n c e (

  • r

p r

  • g

r a m ) . I t b e l

  • n

g s t

  • V

.

slide-19
SLIDE 19

Context-Free Grammar

  • A

c

  • n

t e x t

  • f

r e e g r a m m a r G i s d e fj n e d b y G = ( V , Σ , R , S )

  • T

h e l a n g u a g e L ( G )

  • f

a g r a m m a r G i s d e fj n e d a s : L(G) = { w ∈ Σ* / S ⇒* w }

  • A

w

  • r

d i n L ( G ) d e r i v e s f r

  • m

S a n d c

  • n

t a i n s

  • n

l y t e r m i n a l s y m b

  • l

s .

  • A

l a n g u a g e L i s a c

  • n

t e x t

  • f

r e e l a n g u a g e i f t h e r e i s a c

  • n

t e x t

  • f

r e e g r a m m a r G , s u c h t h a t L ( G ) = L .

slide-20
SLIDE 20

Regular Expressions

  • R

e g u l a r e x p r e s s i

  • n

s c

  • n

s i s t

  • f

:

– c

  • n

s t a n t s , d e n

  • t

i n g s e t s

  • f

s t r i n g s

d e n

  • t

i n g t h e e m p t y s e t : { }

  • ε

d e n

  • t

i n g t h e s e t c

  • n

t a i n i n g

  • n

l y t h e e m p t y s t r i n g : { “ ” }

  • a

d e n

  • t

i n g t h e s e t c

  • n

t a i n i n g

  • n

l y t h e s t r i n g “ a ” : { “ a ” }

slide-21
SLIDE 21

Regular Expressions

  • R

e g u l a r e x p r e s s i

  • n

s c

  • n

s i s t

  • f

:

– c

  • n

s t a n t s , d e n

  • t

i n g s e t s

  • f

s t r i n g s

d e n

  • t

i n g t h e e m p t y s e t : { }

  • ε

d e n

  • t

i n g t h e s e t c

  • n

t a i n i n g

  • n

l y t h e e m p t y s t r i n g : { “ ” }

  • a

d e n

  • t

i n g t h e s e t c

  • n

t a i n i n g

  • n

l y t h e s t r i n g “ a ” : { “ a ” }

– o

p e r a t

  • r

s y m b

  • l

s , d e n

  • t

i n g

  • p

e r a t i

  • n

s

  • v

e r s e t s .

g i v e n t w

  • s

e t s d e n

  • t

e d w i t h R a n d S , w e h a v e :

  • R

S ( c

  • n

c a t e n a t i

  • n

) : d e n

  • t

e s t h e s e t

  • f

s t r i n g s

  • b

t a i n e d b y c

  • n

c a t e n a n t i n g a s t r i n g

  • f

R a n d a s t r i n g

  • f

S

  • R

| S ( a l t e r n a n c e ) : d e n

  • t

e s t h e s e t

  • f

s t r i n g s

  • b

t a i n e d b y t h e u n i

  • n
  • f

R a n d S

  • R

* ( K l e e n e s t a r ) : d e n

  • t

e s s e t t h e i n c l u d i n g , a n d a l l p

  • s

s i b l e ε c

  • n

c a t e n a t i

  • n

s

  • f

s t r i n g s i n R ( c l

  • s

e d u n d e r c

  • n

c a t e n a t i

  • n

) .

slide-22
SLIDE 22

Context-Free vs Regular languages

  • A

r e g u l a r l a n g u a g e i s a l a n g u a g e t h a t c a n b e e x p r e s s e d t h r

  • u

g h a r e g u l a r e x p r e s s i

  • n

,

  • r

e q u i v a l e n t l y , b y a fj n i t e s t a t e m a c h i n e ( K l e e n e ' s T h e

  • r

e m ) .

  • A

l l r e g u l a r l a n g u a g e s a r e c

  • n

t e x t

  • f

r e e l a n g u a g e s , b u t n

  • t
  • t

h e r w i s e .

  • E

x a m p l e : {

n

1

n

: n N } i s n

  • t

r e g u l a r ∈

slide-23
SLIDE 23

Context-Free Grammar

  • A

C F G a l l

  • w

s u s t

  • s

a y w h e t h e r a s e n t e n c e i s s y n t a c t i c a l l y c

  • r

r e c t ( r e c

  • g

n i s e r ) a n d w h a t i s t h e i r s y n t a c t i c s t r u c t u r e ( p a r s e r ) .

slide-24
SLIDE 24

Context-Free Grammar

  • A

C F G a l l

  • w

s u s t

  • s

a y w h e t h e r a s e n t e n c e i s s y n t a c t i c a l l y c

  • r

r e c t ( r e c

  • g

n i s e r ) a n d w h a t i s t h e i r s y n t a c t i c s t r u c t u r e ( p a r s e r ) .

  • E

x a m p l e :

s np vp ⇒ np det n ⇒ vp v np ⇒ vp v ⇒ det ⇒ a det ⇒ the n ⇒ woman n ⇒ man v ⇒ kisses a man kisses a woman. a woman kisses a man. a man kisses a man. a woman kisses a woman. * kisses woman. * a man kisses woman. ? a man kisses.

slide-25
SLIDE 25

CFG recognition in Prolog

  • P

r

  • l
  • g

i m p l e m e n t a t i

  • n

u s i n g d i fge r e n c e l i s t s :

s np vp ⇒ np det n ⇒ vp v np ⇒ vp v ⇒ det ⇒ a det ⇒ the n ⇒ woman n ⇒ man v ⇒ kisses s(X, Z) :- np(X, Y), vp(Y, Z). np(X, Z) :- det(X, Y), n(Y, Z). vp(X, Z) :- v(X, Y), np(Y, Z). vp(X, Z) :- v(X, Z). det([the|W], W). det([a|W], W). n([woman|W], W). n([man|W], W). v([kisses|W], W). ?- s([a,woman,kisses,a,man], []). True.

slide-26
SLIDE 26

From CFG to DCG

  • R

e w r i t i n g i t a s d e fj n i t e c l a u s e g r a m m a r s ( D C G ) :

s np vp ⇒ np det n ⇒ vp v np ⇒ vp v ⇒ det ⇒ a det ⇒ the n ⇒ woman n ⇒ man v ⇒ kisses s --> np, vp. np --> det, n. vp --> v, np. vp --> v. det --> [the]. det --> [a]. n --> [woman]. n --> [man]. v --> [kisses]. ?- s([a,woman,kisses,a,man], []). True.

slide-27
SLIDE 27

A computational example

B a c k u s

  • N

a u r F

  • r

m ( B N F ) : < e x p r > : : = < n u m > | < n u m > + < e x p r > | < n u m >

  • <

e x p r >

expr num ⇒ expr num ⇒ + expr expr num ⇒ – expr num ⇒ 0 num ⇒ 1 num ⇒ 2 num ⇒ ...

slide-28
SLIDE 28

A computational example

B a c k u s

  • N

a u r F

  • r

m ( B N F ) : < e x p r > : : = < n u m > | < n u m > + < e x p r > | < n u m >

  • <

e x p r >

expr num ⇒ expr num ⇒ + expr expr num ⇒ – expr num ⇒ 0 num ⇒ 1 num ⇒ 2 num ⇒ ... expr --> num. expr --> num, [+], expr. expr --> num, [-], expr. num --> [D], {number(D)}. expr_recognize(L) :- expr(L, []).

slide-29
SLIDE 29

A computational example

B a c k u s

  • N

a u r F

  • r

m ( B N F ) : < e x p r > : : = < n u m > | < n u m > + < e x p r > | < n u m >

  • <

e x p r >

expr(Z) --> num(Z). expr(Z) --> num(X), [+], expr(Y). expr(Z) --> num(X), [-], expr(Y). num(D) --> [D], {number(D)}. expr_compute(L, V) :- expr(V, L, []).

  • fj

r s t , c r e a t e s p a c e f

  • r

a v a l u e t

  • b

e p a s s e d

slide-30
SLIDE 30

A computational example

B a c k u s

  • N

a u r F

  • r

m ( B N F ) : < e x p r > : : = < n u m > | < n u m > + < e x p r > | < n u m >

  • <

e x p r >

expr(Z) --> num(Z). expr(Z) --> num(X), [+], expr(Y), {Z is X + Y}. expr(Z) --> num(X), [-], expr(Y), {Z is X - Y}. num(D) --> [D], {number(D)}. expr_compute(L, V) :- expr(V, L, []).

  • fj

r s t , c r e a t e s p a c e f

  • r

a v a l u e t

  • b

e p a s s e d

  • s

e c

  • n

d , m a k e t h e a c t u a l c a l c u l a t i

  • n

s !

slide-31
SLIDE 31

Limitations

expr --> num. expr --> expr, [+], expr. expr --> expr, [-], expr. num --> [D], {number(D)}.

  • A

l t h

  • u

g h t h i s g r a m m a r e x p r e s s e s a n e q u i v a l e n t l a n g u a g e , i t s D C G d

  • e

s n

  • t

w

  • r

k i n P r

  • l
  • g

.

  • D

C G s h a v e t

  • b

e r i g h t

  • r

e c u r s i v e .

slide-32
SLIDE 32

Limitations

expr --> num. expr --> expr, [+], expr. expr --> expr, [-], expr. num --> [D], {number(D)}.

  • A

l t h

  • u

g h t h i s g r a m m a r e x p r e s s e s a n e q u i v a l e n t l a n g u a g e , i t s D C G d

  • e

s n

  • t

w

  • r

k i n P r

  • l
  • g

.

  • D

C G s h a v e t

  • b

e r i g h t

  • r

e c u r s i v e .

  • F

u r t h e r m

  • r

e , b e c a u s e P r

  • l
  • g

d e s c e n t i s a m n e s i c , i t m a y i n e ffj c i e n t l y r e p e a t t h e s a m e c

  • m

p u t a t i

  • n

s ( c f . c h a r t p a r s i n g ) .

slide-33
SLIDE 33

Extending DCGs

slide-34
SLIDE 34

Top-down recognizer

:

  • c
  • n

s u l t ( ' d c g 2 r u l e s . p l ' ) . % n p

  • >

d e t , n . b e c

  • m

e s r u l e ( n p , [ d e t , n ] ) :

  • d

c g 2 r u l e s ( ' n a t u r a l g r a m m a r e x a m p l e . p l ' ) . % a s s e r t r u l e ( n p , [ d e t , n ] ) t d r ( P r

  • t
  • ,

Wo r d s ) :

  • %

P r

  • t
  • =

l i s t

  • f

n

  • n
  • t

e r m i n a l s

  • r

w

  • r

d s m a t c h ( P r

  • t
  • ,

Wo r d s , [ ] , [ ] ) . % s u c c e s s i f b e g i n n i n g

  • f

P r

  • t
  • =

Wo r d s t d r ( [ X | P r

  • t
  • ]

, Wo r d s ) :

  • r

u l e ( X , R H S ) , % r e t r i e v i n g r u l e t h a t m a t c h e s X a p p e n d ( R H S , P r

  • t
  • ,

N e w P r

  • t
  • )

, % r e p l a c i n g X b y R H S ( = r i g h t

  • h

a n d s i d e ) n l , w r i t e ( X ) , w r i t e ( '

  • >

' ) , w r i t e ( R H S ) , m a t c h ( N e w P r

  • t
  • ,

Wo r d s , N e w P r

  • t
  • 1

, N e w Wo r d s ) , t d r ( N e w P r

  • t
  • 1

, N e w Wo r d s ) . % l a t e r a l r e c u r s i v e c a l l m a t c h ( [ X | L 1 ] , [ X | L 2 ] , R 1 , R 2 ) :

  • !

, w r i t e ( ' \ t * * * * r e c

  • g

n i z e d : ' ) , w r i t e ( X ) , m a t c h ( L 1 , L 2 , R 1 , R 2 ) . m a t c h ( L 1 , L 2 , L 1 , L 2 ) .

s t a r t f r

  • m

s t r u c t u r e s a n d fj l l t h e m w i t h w

  • r

d s . .

slide-35
SLIDE 35

Bottom-up parsing

b u p ( [ s ] ) . % s u c c e s s w h e n

  • n

e g e t s s a s a l i s t

  • f

w

  • r

d s b u p ( P ) :

  • a

p p e n d ( P r e f , R e s t , P ) , % P i s s p l i t i n t

  • t

h r e e p i e c e s a p p e n d ( R H S , S u fg , R e s t ) , % P = P r e f + R H S + S u fg r u l e ( X , R H S ) , % b

  • t

t

  • m

u p u s e

  • f

r u l e a p p e n d ( P r e f , [ X | S u fg ] , N E WP ) , % R H S i s r e p l a c e d b y X i n P : b u p ( N E WP ) . % l a t e r a l r e c u r s i v e c a l l

s t a r t f r

  • m

w

  • r

d s t

  • fj

l l s t r u c t u r e s . . .

slide-36
SLIDE 36

Exploiting unification

np(Number) --> det(Number), n(Number). det(singular) --> [a]. det(plural) --> [many]. det(_) --> [the]. n(singular) --> [dog]. n(plural) --> [dogs].

  • U

s i n g a r g u m e n t s w e c a n p e r f

  • r

m a d d i t i

  • n

a l c h e c k s , e . g . c h e c k i n g n u m b e r a g r e e m e n t :

slide-37
SLIDE 37

Exploiting unification

np(Number) --> det(Number), n(Number). det(singular) --> [a]. det(plural) --> [many]. det(_) --> [the]. n(singular) --> [dog]. n(plural) --> [dogs].

  • U

s i n g a r g u m e n t s w e c a n p e r f

  • r

m a d d i t i

  • n

a l c h e c k s , e . g . c h e c k i n g n u m b e r a g r e e m e n t :

  • b

u t a l s

  • g

e n d e r a g r e e m e n t , t r a n s i t i v i t y , e t c .

slide-38
SLIDE 38

Exploiting unification

np(Number) --> det(Number), n(Number). det(singular) --> [a]. det(plural) --> [many]. det(_) --> [the]. n(singular) --> [dog]. n(plural) --> [dogs].

  • U

s i n g a r g u m e n t s w e c a n p e r f

  • r

m a d d i t i

  • n

a l c h e c k s , e . g . c h e c k i n g n u m b e r a g r e e m e n t :

  • b

u t a l s

  • g

e n d e r a g r e e m e n t , t r a n s i t i v i t y , e t c .

  • b

u t a l s

s e m a n t i c ” a g r e e m e n t s ( e d i b l e

  • b

j e c t s f

  • r

e a t i n g , e t c . )

slide-39
SLIDE 39

Feature structures

np([number:singular, person:3, gender:feminine, sentience:true]) --> [mary]. v([subj:[number:singular, person:3, gender:_, sentience:true], event:false]) --> [thinks]. v([subj:[number:singular, person:3, gender:_, sentience:_], event:true]) --> [falls].

  • F

e a t u r e s t r u c t u r e s m a y b e d e s c r i b e d w i t h l i s t s . B u t a n i m p

  • r

t a n t i m p r

  • v

e m e n t c

  • n

s i s t s i n u s i n g m a p s :

slide-40
SLIDE 40

Variable-length feature structures

?- A = [number:singular, person:3, sentience:true, gender:feminine | _], B = [number:singular, person:3 | _], A = B.

  • T
  • h

a v e t h e p

  • s

s i b i l i t y

  • f

n

  • t

d e fj n i n g a l l e l e m e n t s

  • f

f e a t u r e s s t r u c t u r e s , w e c

  • n

s i d e r u n t e r m i n a t e d l i s t s

slide-41
SLIDE 41

Variable-length feature structures

?- A = [number:singular, person:3, sentience:true, gender:feminine | _], B = [number:singular, person:3 | _], A = B.

  • T
  • h

a v e t h e p

  • s

s i b i l i t y

  • f

n

  • t

d e fj n i n g a l l e l e m e n t s

  • f

f e a t u r e s s t r u c t u r e s , w e c

  • n

s i d e r u n t e r m i n a t e d l i s t s

  • b

u t w e n e e d t

  • n

e g l e c t t h e i r

  • r

d e r s t i l l . . .

slide-42
SLIDE 42

Variable-length feature structures

?- A = [number:singular, person:3, sentience:true, gender:feminine | _], B = [number:singular, person:3 | _], A = B.

  • T
  • h

a v e t h e p

  • s

s i b i l i t y

  • f

n

  • t

d e fj n i n g a l l e l e m e n t s

  • f

f e a t u r e s s t r u c t u r e s , w e c

  • n

s i d e r u n t e r m i n a t e d l i s t s

  • b

u t h e r e t h e i r

  • r

d e r s t i l l m a t t e r s . . . s

  • u

s e t h i s :

unify(FS, FS) :- !. unify([ Feature | R1 ], FS) :- select(Feature, FS, FS1), !, unify(R1,FS1).

slide-43
SLIDE 43

Meta-programming

slide-44
SLIDE 44

Going meta-

  • T

h e p r e fj x m e t a

  • i

s u s e d t

  • s

a y t h e w e g

u p ” r e c u r s i v e l y

  • n

a c

  • n

c e p t :

– m

e t a

  • p

h y s i c s : p h y s i c s

  • f

p h y s i c s

– m

e t a

  • d

a t a : d a t a a b

  • u

t d a t a

– m

e t a

  • r

e a s

  • n

i n g : r e a s

  • n

i n g a b

  • u

t r e a s

  • n

i n g

– .

. .

slide-45
SLIDE 45

C P U Me m

  • r

y ( e . g . R A M) I / O d e v i c e s r e g i s t e r s C e n t r a l P r

  • c

e s s i n g U n i t

A modern computer (roughly)

I n s t r u c t i

  • n

s & D a t a

~ Von Neumann architecture

F r

  • m

a h a r d w a r e p e r s p e c t i v e , i n s t r u c t i

  • n

s a r e d a t a !

slide-46
SLIDE 46
  • A

m e t a

  • p

r

  • g

r a m i s a p r

  • g

r a m t h a t m a n i p u l a t e s

  • t

h e r p r

  • g

r a m s (

  • r

i t s e l f ) a s i t s d a t a .

Meta-programming

slide-47
SLIDE 47
  • A

m e t a

  • p

r

  • g

r a m i s a p r

  • g

r a m t h a t m a n i p u l a t e s

  • t

h e r p r

  • g

r a m s (

  • r

i t s e l f ) a s i t s d a t a .

  • M

e t a

  • p

r

  • g

r a m m i n g i s t h e a c t

  • f

w r i t i n g m e t a

  • p

r

  • g

r a m s . E x a m p l e s

  • f

m e t a

  • p

r

  • g

r a m s a r e :

– w

h e n e x e c u t e d , p r i n t a c

  • p

y

  • f

t h e i r c

  • d

e s

– u

s i n g a n " e v a l " f u n c t i

  • n

t

  • e

x e c u t e d y n a m i c a l l y g e n e r a t e d c

  • d

e

– r

e l y i n g

  • n

m a c r

  • s

( g e n e r a t i v e p r

  • g

r a m m i n g )

– r

e a s

  • n

i n g w i t h t h e i r

  • w

n s t r u c t u r e s a n d p r

  • c

e s s e s ( e . g . r e a d i n g t h e c l a s s

  • f

a n

  • b

j e c t ) ( r e fm e c t i

  • n

, n a m e l y i n t r

  • s

p e c t i

  • n

)

– c

  • m

p i l e r s

  • r

i n t e r p r e t e r s

  • f

a n y l a n g u a g e

Meta-programming

slide-48
SLIDE 48
  • A

m e t a

  • p

r

  • g

r a m i s a p r

  • g

r a m t h a t m a n i p u l a t e s

  • t

h e r p r

  • g

r a m s (

  • r

i t s e l f ) a s i t s d a t a .

  • Wh

y i s i t d

  • n

e ?

– t

  • g

e t a r

  • u

n d l i m i t a t i

  • n

s

  • f
  • r

t

  • e

n h a n c e w i t h n e w f e a t u r e s t h e p r i m a r y d e v e l

  • p

m e n t l a n g u a g e ,

– t

  • e

n c a p s u l a t e d

  • m

a i n

  • s

p e c i fj c k n

  • w

l e d g e , b y i n t r

  • d

u c i n g a d

  • m

a i n

  • s

p e c i fj c l a n g u a g e ( D S L ) w i t h i t s

  • w

n s e m a n t i c s

– t

  • a

l l

  • w

u s e r s t

  • c
  • n

fj g u r e a s y s t e m i n a e a s i e r w a y

Meta-programming

slide-49
SLIDE 49
  • L

e t u s s t a r t f r

  • m

t h e s i m p l e s t m e t a

  • i

n t e r p r e t e r . .

prove(Goal) :- call(Goal).

call/1 i s a b u i l t

  • i

n p r e d i c a t e i n v

  • k

i n g t h e p a r a m e t e r a s g

  • a

l

Meta-programming in Prolog

slide-50
SLIDE 50
  • L

e t u s s t a r t f r

  • m

t h e s i m p l e s t m e t a

  • i

n t e r p r e t e r . .

prove(Goal) :- call(Goal).

call/1 i s a b u i l t

  • i

n p r e d i c a t e i n v

  • k

i n g t h e p a r a m e t e r a s g

  • a

l

Goal

  • b

j e c t i n s t r u c t i

  • n

g

  • i

n g m e t a

  • b

j e c t

  • l

e v e l m e t a

  • l

e v e l

( t e r m )

Goal

( p r

  • v

e m e . . . )

Meta-programming in Prolog

slide-51
SLIDE 51
  • G
  • i

n g f u r t h e r . . .

prove(true). prove([Goal1, Goal2]) :- prove(Goal1), prove(Goal2). prove(Goal) :- clause(Goal, Body), prove(Body).

clause/2 i s a b u i l t

  • i

n p r e d i c a t e t r u e i f H e a d c a n b e u n i fj e d w i t h a c l a u s e h e a d a n d B

  • d

y w i t h t h e c

  • r

r e s p

  • n

d i n g c l a u s e b

  • d

y .

Meta-programming in Prolog

slide-52
SLIDE 52

Meta-programming in Prolog

  • G
  • i

n g f u r t h e r . . .

prove(true). prove([Goal1, Goal2]) :- prove(Goal1), prove(Goal2). prove(Goal) :- clause(Goal, Body), prove(Body).

clause/2 i s a b u i l t

  • i

n p r e d i c a t e t r u e i f H e a d c a n b e u n i fj e d w i t h a c l a u s e h e a d a n d B

  • d

y w i t h t h e c

  • r

r e s p

  • n

d i n g c l a u s e b

  • d

y .

I n t r

  • s

p e c t i

  • n
slide-53
SLIDE 53
  • U

s i n g i t f

  • r

s

  • m

e t h i n g m

  • r

e u s e f u l : t r a c e

  • f

p r

  • f

!

prove(true) :- !. prove([Goal1, Goal2]) :- !, prove(Goal1), prove(Goal2). prove(Goal) :- write(’Call: ‘), write(Goal), nl, clause(Goal, Body), prove( Body), write(’Exit: ‘), write( Goal), nl.

clause/2 i s a b u i l t

  • i

n p r e d i c a t e t r u e i f G

  • a

l c a n b e u n i fj e d w i t h a c l a u s e h e a d a n d B

  • d

y w i t h t h e c

  • r

r e s p

  • n

d i n g c l a u s e b

  • d

y .

Meta-programming in Prolog