ÀΰøÁö´É¾ð¾î PROLOG

 

Àü¹®°¡ ½Ã½ºÅÛ ¿ø¸®¿Í °³¹ß : ÀÌÀç±Ô, ÃÖÇü¸², ±èÇö¼ö, ¼­¹Î¼ö, ÁÖ¼®Áø, Áö¿øö °øÀú, ¹ý¿µ»ç, 1996, Page 238~249

 

1. ¼­·Ð

2. »ç½Ç (Facts)

3. ¹°À½ (Questions)

4. º¯¼ö (Variables)

5. ³í¸®Àû (Conjunctions)

6. ±ÔÄ¢(Rules)

7. Cut

 

 

1. ¼­·Ð

PROLOG´Â 1973³â ¸¶¸£¼¼ÀÌÀ¯ ´ëÇÐ ÀΰøÁö´É ¿¬±¸½Ç¿¡¼­ A. Colmerauer¿Í P. Roussel¿¡ ÀÇÇØ °³¹ßµÈ ³í¸®ÁöÇâÀû ¾ð¾îÀÌ´Ù. ƯÈ÷ ¼ú¾î³í¸®(Predicate Logic)¿¡ ±â¹ÝÀ» µÎ°í ÀÖ´Ù. PROLOG´Â LISP º¸´Ù´Â ±Ô¸ð°¡ À۱⠶§¹®¿¡ PC¸¦ ºñ·ÔÇÑ ¿©·¯ Á¾·ùÀÇ ÄÄÇ»ÅÍ¿¡¼­ ½ÇÇàÀÌ °¡´ÉÇÏ´Ù. PROLOG´Â Àü¹®°¡½Ã½ºÅÛÀÇ ¿¬±¸¿¡´Â ±â¿©¸¦ ÇØ¿ÔÀ¸³ª ´ëÇüÀü¹®°¡½Ã½ºÅÛ °³¹ß¿¡´Â ÀûÇÕÇÏÁö ¸øÇÏ´Ù. ±×·¯³ª º´·ÄŽ»ö¿¡ ÀûÇÕÇÏ°Ô ¼³°èµÇ¾î Àֱ⠶§¹®¿¡ º´·Ä󸮰¡ ÁÖ¿ä ¿ä¼Ò°¡ µÉ ¹Ì·¡ÀÇ ÄÄÇ»ÅÍ¿¡ ÀûÇÕÇÑ ¾ð¾î·Î ¿©°ÜÁö°í ÀÖ´Ù. ¹Ì·¡ÀÇ ¾ð¾î¿¡´Â ÀÌ·¯ÇÑ ±â´ÉµéÀÌ Ã·°¡µÇ¾î ¹ßÀüÇÏ°Ô µÉ °ÍÀÌ´Ù. PROLOGÀº À¯·´°ú ÀϺ»¿¡¼­ ¸¹ÀÌ »ç¿ëµÇ°í ÀÖÀ¸¸ç, ÀÌ°ÍÀÇ Æ¯¼º Áß ÀϺδ LISP¿¡¼­µµ ±¸ÇöµÇ°í ÀÖ´Ù. ´ÙÀ½ÀÇ <Ç¥ 1>¿¡´Â ÇöÀç »ó¿ëÈ­µÇ¾î ÀÖ´Â PROLOG ÄÄÆÄÀÏ·¯¿¡ ´ëÇÑ ¸ñ·ÏÀÌ ¿­°ÅµÇ¾î ÀÖ´Ù.

 


<Ç¥ 1> PROLOG ÄÄÆÄÀÏ·¯

PROLOG ÄÄÆÄÀÏ·¯

ȯ°æ(H/W, OS, ±âŸ)

°³ ¹ß ȸ »ç

AAIS Full Control

Macintosh Plus

Advanced AI Systems

Arity

DOS

Arity Co.

ALS

DOS, UNIX

Applied Logic Systems

BIM

SPARC, 8M RAM

BIM

Cogent

DOS

Amziod

Delphia

SPARC

Delphia

IF

DOS, UNIX, Windows

American Interface Computer

LPA

DOS, Windows, Macintosh

Logic Programming Associates

n-parallel

DOS

Computer Systems Architects

PDC

DOS, OS/2, Windows

Prolog Development Center

Quintus

DOS, UNIX

Quintus Co.

PROLOG´Â ´ë»ó(Object)°ú ´ë»ó°£ÀÇ °ü°è(Relationship)¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¹®Á¦¸¦ ÇØ°áÇϴµ¥ »ç¿ëµÇ´Â ¾ð¾îÀÌ´Ù. ¿¹¸¦ µé¾î, "JohnÀº Ã¥À» °¡Áö°í ÀÖ´Ù."´Â ¹®ÀåÀº JohnÀ̶ó´Â ´ë»ó°ú Ã¥À̶ó´Â ¶Ç ´Ù¸¥ ´ë»ó°£ÀÇ ¼ÒÀ¯°ü°è¸¦ ¼±¾ðÇÏ°í ÀÖ´Ù(°ü°è¿¡¼­´Â ´ë»ó°£ÀÇ ¼ø¼­°¡ Áß¿ä).
   PROLOG ÇÁ·Î±×·¡¹ÖÀº ´ÙÀ½°ú °°Àº »çÇ×µé·Î µÇ¾î ÀÖ´Ù.
   1) ´ë»ó°ú ±×µé°£ÀÇ °ü°è¿¡ ´ëÇÑ »ç½Ç(Facts) ¼±¾ð
   2) ´ë»ó°ú ±×µé°£ÀÇ °ü°è¿¡ ´ëÇÑ ±ÔÄ¢(Rules)ÀÇ Á¤ÀÇ
   3) ´ë»ó°ú ±×µé°£ÀÇ °ü°è¿¡ ´ëÇÑ ¹°À½(Questions)

   µû¶ó¼­ PROLOG ½Ã½ºÅÛÀº »ç½Çµé°ú ±ÔÄ¢µé·Î ÀÌ·ç¾îÁ® ÀÖ°í, À̰͵é·Î ¹°À½¿¡ ´ëÇÑ ´ë´äÀ» ÇÑ´Ù.

2. »ç½Ç (Facts)

   "JohnÀº Mary¸¦ ÁÁ¾ÆÇÑ´Ù"´Â »ç½ÇÀº PROLOG¿¡¼­´Â ´ÙÀ½°ú °°ÀÌ Ç¥ÇöµÉ ¼ö ÀÖ´Ù.

        likes(john, mary).

   ¿©±â¼­ john°ú mary´Â ´ë»óÀÌ°í, likes´Â °ü°èÀÌ´Ù.
   »ç½Çµé·Î ´ë»ó°£ÀÇ °ü°è¸¦ Á¤ÀÇÇÒ ¶§¿¡´Â °ýÈ£ ¾È¿¡ ¿­°ÅµÉ ´ë»óµéÀÇ ¼ø¼­¿¡ ÁÖÀÇÇÏ¿©¾ß ÇÑ´Ù. À§ÀÇ ¿¹¿¡¼­ likes(mary, john)°ú °°ÀÌ john°ú maryÀÇ ¼ø¼­¸¦ ¹Ù²Ù¸é ÀÌ´Â "Mary´Â JohnÀ» ÁÁ¾ÆÇÑ´Ù"·Î Çؼ®µÈ´Ù.
   PROLOG¿¡¼­´Â ´ÙÀ½°ú °°Àº »çÇ׿¡ ÁÖÀÇÇØ¾ß ÇÑ´Ù.
   1) ´ë»ó°ú °ü°èÀÇ ¸íĪÀº ¹Ýµå½Ã ¾ËÆĺª ¼Ò¹®ÀÚ·Î ½ÃÀÛÇØ¾ß ÇÑ´Ù.
   2) °ü°è¸¦ ¾´ ÈÄ¿¡ ´ë»óµéÀÌ ÄÞ¸Ó·Î ±¸ºÐÇؼ­ ¿­°ÅµÇ¸ç, ´ë»óµéÀº ¼Ò°ýÈ£ ¾È¿¡ ¿­°ÅµÈ´Ù.
   3) »ç½Ç Ç¥ÇöÀÇ ³¡¿¡´Â ¸¶Ä§Ç¥¸¦ Âï´Â´Ù.   

   ¾Æ·¡ÀÇ »ç½ÇÀÇ ¿¹µé°ú ±×°ÍµéÀÇ Çؼ®À» º¸±â·Î ÇÏÀÚ.

     

  (¿¹)

 

 

    valuable(gold).                 
    female(jane).                   
    owns(john, gold).            
    father(john, mary).          
    gives(john, book, mary).

±ÝÀº ±ÍÁßÇÏ´Ù.
JaneÀº ¿©ÀÚÀÌ´Ù.
JohnÀÌ ±ÝÀ» °¡Áö°í ÀÖ´Ù.
JohnÀº MaryÀÇ ¾Æ¹öÁöÀÌ´Ù.
JohnÀÌ Mary¿¡°Ô Ã¥À» ÁØ´Ù.


   À§ÀÇ ¿¹¿¡¼­ ¼Ò°ýÈ£ ¾È¿¡ ¿­°ÅµÈ ´ë»óµéÀ» Àμö(Arguments)¶ó ÇÏ°í, °ýÈ£ ¾ÕÀÇ °ü°è´Â ¼ú¾î(Predicate)¶ó ÇÑ´Ù. valuabelÀº ÇÑ °³, likes´Â µÎ °³ÀÇ Àμö¸¦ °¡Áö°í ÀÖ´Â ¼ú¾îÀÌ´Ù.
   °ü°è(Relationship)´Â ÀÓÀÇÀÇ °³¼öÀÇ ÀμöµéÀ» °¡Áú ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î play¶ó´Â ¼ú¾î¸¦ Á¤ÀÇÇÏ·Á¸é, µÎ »ç¶÷ ÀÌ»óÀÇ ¼±¼ö¿Í ±×µéÀÌ ÇÏ´Â °ÔÀÓÀÇ ¸íĪÀÌ ÇÊ¿äÇÏ´Ù. µû¶ó¼­ ¼¼ °³ ÀÌ»óÀÇ Àμö°¡ ÇÊ¿äÇÏ´Ù. ¿¹¸¦ µé¾î,

        play(john, mary, football).
        play(jane, jim, badminton).

   µî°ú °°ÀÌ Ç¥ÇöµÉ ¼ö ÀÖ´Ù.

3. ¹°À½ (Questions)

   ¾î¶² »ç½ÇÀÌ ÀÖ´Ù¸é ±×°Í¿¡ ´ëÇÑ ¹°À½À» ÇÒ ¼ö ÀÖ´Ù. PROLOG¿¡¼­´Â ¹°À½Àº »ç½Ç(Facts)°ú ºñ½ÁÇÏ°Ô Ç¥ÇöÇÏÁö¸¸, ±× ¾Õ¿¡ Ư¼öÇÑ ½Éº¼À» ºÙ¿©¾ß ÇÑ´Ù. ÀÌ ½Éº¼Àº ¹°À½Ç¥¿Í ÇÏÀÌÇÂÀ¸·Î ±¸¼ºµÈ´Ù.
   PROLOG·Î Ç¥ÇöµÈ ´ÙÀ½°ú °°Àº Áú¹®À» »ý°¢ÇÏ¿© º¸ÀÚ.

        ?- owns(mary, book).

   ÀÌ ¹°À½¿¡¼­ mary¸¦ "Mary"¶ó ºÒ¸®¿ì´Â »ç¶÷À¸·Î Çؼ®À» ÇÏ°í, bookÀ» ¾î¶² ƯÁ¤ÀÇ Ã¥À» ÀǹÌÇÑ´Ù°í Çϸé, ÀÌ ¹°À½Àº "Mary°¡ ±× Ã¥À» °¡Áö°í Àִ°¡?"¶ó´Â ¹°ÀÓÀÌ µÈ´Ù.
   ÀÌ ¹°À½¿¡ ´ëÇÏ¿© PROLOG´Â ¾î¶»°Ô ´äÇϴ°¡ º¸±â·Î ÇÏÀÚ.
   1) ÀÌ·¯ÇÑ ¹°À½¿¡ ´ëÇÏ¿© PROLOG´Â »ç½ÇµéÀ» ¸ð¾Æ ³õÀº µ¥ÀÌÅͺ£À̽º¿¡¼­ ¹°À½ÀÇ »ç½ÇºÎºÐ°ú ÀÏÄ¡ÇÏ´Â »ç½ÇµéÀ» ã°Ô µÈ´Ù.
   2) ¸¸ÀÏ ÀÏÄ¡µÇ´Â »ç½ÇÀ» ã°Ô µÇ¸é PROLOG´Â yes¶ó ´äÇϸç, ¸ø ã´Â °æ¿ì¿¡´Â no¶ó ´äÇÑ´Ù. no¶ó´Â °ÍÀº ÀÏÄ¡ÇÏ´Â »ç½ÇÀÌ ¾øÀ½À» ÀǹÌÇÑ´Ù.

   ´ÙÀ½°ú °°Àº µ¥ÀÌÅͺ£À̽º¸¦ »ý°¢ÇØ º¸ÀÚ.

        likes(joe, fish).
        likes(joe, mary).
        likes(mary, book).
        likes(john, book).

   À̰͵鿡 ´ëÇÏ¿©

        ?- likes(joe, money).
        no
        ?- likes(mary, joe).
        no
        ?- likes(mary, book).
        yes
        ?- king(john, france).
        no

   ¿©±â¼­ no¶ó´Â °ÍÀº ¹°À½¿¡ ºÎÇÕÇÏ´Â °ÍÀÌ ¾Æ¹« °Íµµ ¾ø´Ù´Â ¶æÀ̸ç, false¸¦ ÀǹÌÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ´ÙÀ½°ú °°Àº ±×¸®½º öÇÐÀÚ¿¡ ´ëÇÑ µ¥ÀÌÅͺ£À̽º¸¦ »ý°¢ÇØ º¸ÀÚ.

        human(socrates).
        human(aristotle).
        athenian(socrates).

   ÀÌ°Í¿¡ ´ëÇÏ¿© ´ÙÀ½°ú °°Àº ¹°À½À» ÇÑ´Ù¸é,

        ?- athenian(socrates).
        yes
        ?- athenian(aristotle).
        no
        ?- greek(socrates).
        no

   ¿ª»çÀûÀ¸·Î º¼ ¶§, ½ÇÁ¦·Î ¾Æ¸®½ºÅäÅÚ·¹½º°¡ ¾ÆÅ׳׿¡¼­ »ì¾Ò¾úÀ¸³ª À§ÀÇ µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ´Â ±× »ç½ÇÀ» Áõ¸íÇÒ ¼ö ¾ø´Ù. ´õ±¸³ª, µ¥ÀÌÅͺ£À̽º¿¡´Â ¼ÒÅ©¶óÅ×½º°¡ ¾ÆÅ×³× »ç¶÷À̶ó´Â »ç½ÇÀÌ ÀÖÀ¸³ª, ÀÌ°ÍÀÌ ±×°¡ ±×¸®½ºÀÎÀ̶ó´Â °ÍÀ» Áõ¸íÇØ ÁÖÁö´Â ¸øÇÑ´Ù. µû¶ó¼­ no¶ó´Â ´äº¯Àº "Áõ¸íÇÒ ¼ö ¾ø´Ù"´Â Àǹ̷ΠÇؼ®ÇÒ ¼ö ÀÖ´Ù.

4. º¯¼ö (Variables)

   "JohnÀº Mary¸¦ ÁÁ¾ÆÇմϱî?"¶ó°í ¹¯´Â ´ë½Å¿¡ "JohnÀº X¸¦ ÁÁ¾ÆÇմϱî?"¶ó°í ¹¯´Â´Ù¸é X°¡ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö ¾Ë ¼ö°¡ ¾ø´Ù. ÀÌ °æ¿ì X¸¦ º¯¼ö¶ó ºÎ¸¥´Ù. PROLOG¿¡¼­ º¯¼ö¸¦ »ç¿ëÇÏ´Â °æ¿ì, º¯¼ö´Â instantiateµÇ°Å³ª not instantiateµÇ°Å³ª ÇÑ´Ù. instantiate°¡ µÇ¾ú´Ù´Â °ÍÀº º¯¼ö°¡ ¶æÇÏ´Â ´ë»óÀÌ Á¸ÀçÇÑ´Ù´Â ÀǹÌÀÌ´Ù. º¯¼ö´Â ¾ËÆĺª ´ë¹®ÀÚ·Î ½ÃÀÛÇÔÀ¸·Î½á ´ë»óµéÀÇ ¸íĪ°ú ±¸º°µÈ´Ù.

   ´ÙÀ½°ú °°Àº »ç½Çµé·Î ±¸¼ºµÈ µ¥ÀÌÅͺ£À̽º°¡ ÀÖ´Ù°í ÇÏÀÚ.

        likes(john, flowers).
        likes(john, mary).
        likes(paul, mary).

   À̰͵鿡 ´ëÇÏ¿© ´ÙÀ½°ú °°Àº ¹°À½ÀÌ ÀÖ´Ù°í ÇÏÀÚ.

        ?- likes(john, X).

   ÀÌ ¹°À½Àº "JohnÀÌ ÁÁ¾ÆÇÏ´Â °ÍÀÌ ¹«¾ùÀԴϱî?"¶ó´Â ÀǹÌÀ̸ç, ÀÌ¿¡ ´ëÇÏ¿© PROLOG´Â X=flowers¶ó°í ´äÇÑ´Ù. ÀÌ °úÁ¤À» º¸¸é,
   1) PROLOG´Â µ¥ÀÌÅͺ£À̽ºÀÇ Ã³À½ºÎÅÍ Ã£±â ½ÃÀÛÇÏ¿© likes(john, flowers)¸¦ ã°Ô µÈ´Ù. X´Â flower¸¦ ÀǹÌÇÏ°Ô µÈ´Ù.
   2) ¶ÇÇÑ µ¥ÀÌÅͺ£À̽º¿¡´Â ÀÏÄ¡ÇÏ´Â »ç½ÇÀÌ ¹ß°ßµÈ °÷À» Ç¥½ÃÇÑ´Ù. ¸¸ÀÏ ReturnÅ°¸¦ Ä¡¸é PROLOG´Â Ž»öÀ» Áß´ÜÇÑ´Ù. À̶§ ";" Å°¿Í ReturnÅ°¸¦ Ä¡¸é ¹Ù·Î Àü¿¡ Ç¥½ÃÇØ ³õÀº °÷ºÎÅÍ Å½»öÀ» ´Ù½Ã ½ÃÀÛÇÑ´Ù.
   3) ´ÙÀ½¿¡ ÀÏÄ¡ÇÏ´Â »ç½ÇÀº likes(john, mary)ÀÌ´Ù. º¯¼ö X´Â mary·Î instantiate¸ç likes(john, mary)¿¡ Ç¥½Ã¸¦ ³²±â°í X=mary¶ó°í ´äÇÑ´Ù.

   ´ÙÀ½ °°Àº Áú¹®¿¡ ´ëÇØ PROLOG´Â ´ÙÀ½°ú °°ÀÌ ´äÇÑ´Ù.

        ?- likes(X, mary).      Áú¹® "Mary¸¦ ÁÁ¾ÆÇÏ´Â ´ë»óÀÌ ¹«¾ùÀΰ¡?"
        X=john;                     Ã¹¹ø° ´ä. ";"¸¦ Ä¡¸é
        X=paul;                     µÎ¹ø° ´ä. ´Ù½Ã ";"¸¦ Ä¡¸é
        no                            ´õ ÀÌ»óÀÇ ´äÀÌ ¾øÀ½

5. ³í¸®Àû (Conjunctions)

   ´ÙÀ½°ú °°Àº ¹°À½ÀÌ ÀÖ´Ù°í ÇÏÀÚ.

        "John°ú Mary´Â ¼­·Î ÁÁ¾ÆÇϴ°¡?"

   ±×¸®°í ´ÙÀ½°ú °°Àº µ¥ÀÌÅͺ£À̽º°¡ ÀÖ´Ù°í ÇÏÀÚ.

        likes(mary, food).
        likes(mary, wine).
        likes(john, wine).
        likes(john, mary).

   À§ÀÇ Áú¹®Àº "JohnÀº Mary¸¦ ÁÁ¾ÆÇմϱî? ±×¸®°í Mary´Â JohnÀ» ÁÁ¾ÆÇմϱî?"¿Í °°Àº ÀǹÌÀ̹ǷΠµÎ °³ÀÇ ¸ñÇ¥(Goal)¸¦ µ¿½Ã¿¡ ¸¸Á·½ÃÄÑ¾ß ÇÑ´Ù. ÀÌ´Â ¸ñÇ¥ »çÀÌ¿¡ ÄÞ¸Ó¸¦ »ç¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ Ç¥ÇöµÈ´Ù.

        ?- likes(john, mary), likes(mary, john).

   µ¥ÀÌÅͺ£À̽º¿¡´Â JohnÀº Mary¸¦ ÁÁ¾ÆÇÑ´Ù´Â »ç½ÇÀÌ ÀÖÀ¸¹Ç·Î ù¹ø° ¸ñÇ¥´Â ÂüÀÌ´Ù. ±×·¯³ª Mary°¡ JohnÀ» ÁÁ¾ÆÇÑ´Ù´Â »ç½ÇÀº ¾ø±â ¶§¹®¿¡ µÎ¹ø° ¸ñÇ¥´Â °ÅÁþÀÌ´Ù. ¿ì¸®´Â µÎ »ç¶÷ÀÌ ¼­·Î ÁÁ¾ÆÇϴ°¡¸¦ ¾Ë°íÀÚ ÇÏ´Â °ÍÀ̹ǷΠPROLOG´Â ÀÌ ¹°À½¿¡ ´ëÇÏ¿© no·Î ´äÇÑ´Ù.
   ´ÙÀ½°ú °°Àº ¹°À½ÀÌ ÀÖ´Ù°í ÇÏÀÚ.

        "John°ú Mary°¡ ¸ðµÎ ÁÁ¾ÆÇÏ´Â °ÍÀÌ ¹«¾ùÀԴϱî?"

   ÀÌ ¹°À½µµ ´ÙÀ½ µÎ °³ÀÇ ¸ñÇ¥µé·Î µé¾î ÀÖ´Ù. ù°, Mary°¡ ÁÁ¾ÆÇÏ´Â °ÍµéÀ» ã´Â´Ù. µÑ°, ±×°Íµé Áß¿¡¼­ JohnÀÌ ÁÁ¾ÆÇÏ´Â °ÍÀ» ã´Â´Ù. ÀÌ°ÍÀº PROLOG·Î ´ÙÀ½°ú °°ÀÌ Ç¥ÇöµÈ´Ù.

        ?- likes(mary, X), likes(john, X).

   PROLOG´Â ´ÙÀ½°ú °°Àº ÀýÂ÷·Î ´äÀ» ã¾Æ³½´Ù.

¢Ñ µÇµ¹¸²ÃßÀûÀ̶õ PROLOG°¡ conjunction¿¡ ÀÖ´Â ¸ñÇ¥¸¦ ¸¸Á·½ÃÅ°·Á ÇÒ ¶§, ¸¸ÀÏ ¸¸Á·ÀÌ ¾ÈµÇ¸é ¹Ù·Î Àü¿¡ ¸¸Á·ÇÑ ¸ñÇ¥¿Í °ü·ÃµÈ »ç½ÇÀÌ Ç¥½Ã(¸¶Å©)µÇ¾î ÀÖ´Â °÷À¸·Î ´Ù½Ã µÇµ¹¾Æ¿Í ¸ñÇ¥¸¦ ´Ù½Ã ¸¸Á·½ÃÅ°°íÀÚ ÇÏ´Â °ÍÀ» ÀǹÌÇÑ´Ù.

 

6. ±ÔÄ¢(Rules)

   ´ÙÀ½°ú °°Àº »ç½ÇÀÌ ÀÖ´Ù°í ÇÏÀÚ.

        "JohnÀº ¸ðµç »ç¶÷À» ÁÁ¾ÆÇÑ´Ù."

   ÀÌ°ÍÀº µ¥ÀÌÅͺ£À̽º¿¡ ´ÙÀ½°ú °°ÀÌ Ç¥ÇöµÉ ¼ö ÀÖ´Ù.

        likes(john, alfred).
        likes(john, betrand).
        likes(john, charles).
        likes(john, david).
        ...

   ±×·¯³ª ÀÌ·¸°Ô ÇϳªÇϳª ¿­°ÅÇÏ´Â °Íº¸´Ù´Â JohnÀÌ ÁÁ¾ÆÇÏ´Â °ÍÀ» ±ÔÄ¢ÀÇ ÇüÅ·ΠǥÇöÇÑ´Ù¸é ÈξÀ È¿À²ÀûÀÏ °ÍÀÌ´Ù. ±ÔÄ¢Àº ¾î¶² »ç½ÇÀÌ ´Ù¸¥ »ç½ÇµéÀÇ ÁýÇÕ¿¡ ÀÇÁ¸ÀûÀÏ °æ¿ì¿¡ »ç¿ëµÈ´Ù. À̶§ ±ÔÄ¢À» Ç¥ÇöÇϴµ¥ ¸¸ÀÏ(if)À̶ó´Â ´Ü¾î°¡ »ç¿ëµÈ´Ù.

   (¿¹)
        ³ª´Â ¸¸ÀÏ ºñ°¡ ¿À¸é ¿ì»êÀ» »ç¿ëÇÑ´Ù.

    ±ÔÄ¢Àº ¶ÇÇÑ ¾î¶² °ÍÀ» Á¤ÀÇÇϴµ¥ »ç¿ëµÈ´Ù.

   (¿¡)
        ¸¸ÀÏ X°¡ µ¿¹°ÀÌ°í ³¯°³°¡ ÀÖ´Ù¸é X´Â »õÀÌ´Ù.                     (1)
        ¸¸ÀÏ X¿Í Y°¡ ¿©¼ºÀÌ°í X¿Í YÀÇ ºÎ¸ð°¡ °°´Ù¸é, X¿Í Y´Â ÀڸŰ£ÀÌ´Ù.(2)

   ±ÔÄ¢Àº ´ë»ó°ú ±×µé°£ÀÇ °ü°è¿¡ ´ëÇÑ ÀϹÝÀûÀΠǥÇöÀÌ´Ù. ±ÔÄ¢Àº head¿Í body·Î ±¸¼ºµÇ¸ç, ":-"·Î ¿¬°áµÈ´Ù. ¾Æ·¡ÀÇ ¿¹´Â ±ÔÄ¢À¸·Î ´ÙÀ½°ú °°ÀÌ Ç¥ÇöµÈ´Ù.

        "JohnÀº Æ÷µµÁÖ¸¦ ÁÁ¾ÆÇÏ´Â »ç¶÷À» ÁÁ¾ÆÇÑ´Ù."

   ¶Ç´Â º¯¼ö¸¦ »ç¿ëÇÏ¿©

        "¸¸ÀÏ X°¡ Æ÷µµÁÖ¸¦ ÁÁ¾ÆÇÑ´Ù¸é JohnÀº X¸¦ ÁÁ¾ÆÇÑ´Ù."
        likes(john, X) :- likes(X, wine).

   ±ÔÄ¢ÀÇ headºÎºÐÀº likes(john, X)ÀÌ¸ç ±ÔÄ¢ÀÌ Á¤ÀÇÇÏ°í ½ÍÀº »ç½ÇÀ» ±â¼úÇÑ´Ù.
   ±ÔÄ¢ÀÇ bodyºÎºÐÀº likes(X, wine)À̸ç head°¡ ÂüÀ̱â À§Çؼ­ ¸¸Á·½ÃÄѾßÇÒ ¸ñÇ¥µéÀ» ±â¼úÇÑ´Ù.
   À§ÀÇ ¿¹ (2)¸¦ ´ÙÀ½°ú °°ÀÌ Á¤¸®ÇÏ°í À̸¦ PROLOG±ÔÄ¢À¸·Î Ç¥ÇöÇÏ¸é ´ÙÀ½°ú °°´Ù.

        X is female,
        Y is female,
        X has mother M and father F, and
        Y has the same mother and father as X does.
        =>
        sister_of(X, Y) :- female(X),
                           female(Y),
                           parents(X, M, F),
                           parents(Y, M, F).

7. Cut

   CutÀº ¸¸Á·µÈ ¸ñÇ¥(Goal)¸¦ µû¶ó BacktrackingÀ» ÇÒ ¶§, ÀÌ¹Ì ¼±ÅõǾú´ø °ÍÀº ´Ù½Ã °í·ÁÀÇ ´ë»óÀÌ µÇÁö ¸øÇϵµ·Ï ÇÏ°í ÀÖ´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á ÇÁ·Î±×·¥ÀÇ ¼öÇà¼Óµµ¸¦ ³ôÀÌ°í È¿À²ÀûÀÎ ¸Þ¸ð¸®ÀÇ »ç¿ëÀÌ °¡´ÉÇØÁø´Ù. CutÀº ¸ñÇ¥°¡ ÀÖ´Â ±ÔÄ¢¿¡ '!'¸¦ »ç¿ëÇÏ¿© ³ªÅ¸³½´Ù. Backtracking½Ã '!'°¡ ÀÖ´Â ¸ñÇ¥°¡ ÇÑ ¹ø ¸¸Á·µÇ¸é ÀÌ ¸ñÇ¥´Â ´Ù½Ã ¸¸Á·µÇ¾îÁöÁö ¾Ê´Â´Ù.
   CutÀÌ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö¸¦ ¿¹¸¦ ÅëÇÏ¿© º¸±â·Î ÇÏÀÚ. ´ÙÀ½Àº µµ¼­°üÀÇ ½Ã¼³µéÀ» ¾î¶² »ç¶÷µé¿¡°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØÁÙ °ÍÀΰ¡¶ó´Â ¹®Á¦ÀÌ´Ù. ¿­¶÷½Ç°ú °°Àº ±âº»ÀûÀÎ ½Ã¼³Àº ¸ðµç »ç¶÷µé¿¡°Ô °³¹æµÇ¾î¾ß ÇÑ´Ù. ¹Ý¸é¿¡ ´ëÃâÀº ¼±ÅÃÀûÀ¸·Î ÀÌ·ç¾îÁ®¾ß ÇÑ´Ù. ´ÙÀ½ÀÇ ¿¹´Â Ã¥À» ºô·Á°£ »ç¶÷ÀÌ ±âÀÏÀÌ Áö³ªµµ µµ¼­¹Ý³³À» ÇÏÁö ¾Ê´Â °æ¿ì, ¿©·¯ ºÎ¼Ó½Ã¼³µéÀ» ÀÌ¿ëÇÏÁö ¸øÇϵµ·Ï ÇÏ´Â ÇÁ·Î±×·¥ÀÇ ÀϺÎÀÌ´Ù.

        facility(Pers, Fac) :- book_overdue(Pers, Book),!,basic_facility(Fac).
        facility(Pers, Fac) :- general_facility(Fac).
        basic_facility(reference).
        basic_facility(enquiries).
        additional_facility(borrowing).
        additional_facility(inter_library_loan).
        general_facility(X) :- basic_facility(X).
        general_facility(X) :- additional_facility(X).
        book_overdue('C. Watzer', book10089).
        book_overdue('A. Jones', book29907).
        ...
        ...
        client('C. Watzer').
        client('W. Netesk').

   ÀÌÁ¦ ¾î¶² »ç¶÷µé¿¡°Ô ¾î¶² ½Ã¼³À» ÀÌ¿äÇÒ ¼ö ÀÖµµ·Ï ÇØÁÙ °ÍÀΰ¡ º¸±â·Î ÇÏÀÚ.

        ?- client(X), facility(X, Y).

   ¶ó´Â Áú¹®¿¡ ´ëÇÏ¿© PROLOG´Â ù¹ø° »ç¶÷ 'A. Jones'¸¦ ã¾Æ³½´Ù. ÀÌ »ç¶÷ÀÌ Ã¥ ¿©·¯ ±ÇÀÇ ¹Ý³³À» ÁöüÇß´Ù°í ÇÏÀÚ. ¾î¶² ½Ã¼³À» ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô ÇÒ °ÍÀΰ¡¸¦ ¾Ë±â À§ÇØ PROLOG´Â Facility¿¡ ´ëÇÑ Ã¹¹ø° ¹®À» ã´Â´Ù. ¿©±â¿¡´Â ±×°¡ ÁöüÇÑ Ã¥ÀÌ Àִ°¡¿¡ ´ëÇÑ ¸ñÇ¥°¡ ÀÖ´Ù. À̾î A. Jones°¡ ÁöüÇÑ Ã¥ÀÌ ÀÖ´Ù´Â »ç½ÇÀ» ã¾Æ³½´Ù. ´ÙÀ½ÀÇ ¸ñÇ¥´Â CutÀÌ´Ù. ÀÌ ¸ñÇ¥°¡ ¸¸Á·µÇ°í Facility¹®ÀÌ ¼±ÅõǾúÀ¸¹Ç·Î ¸ðµç °áÁ¤À» ¿©±â¼­ ³»¸°´Ù. ÀÌ °úÁ¤À» ±×¸²À¸·Î ³ªÅ¸³» º¸¸é,

   

   CutÀ» ¸¸³ª¸é Áö±Ý±îÁöÀÇ È帧ÀÌ ²÷±â°í, Facility ¸ñÇ¥¿Í Cut ¸ñÇ¥ »çÀÌÀÇ ¸ðµç °ÍÀ» ÇÇÇϵµ·Ï È帧ÀÇ °æ·Î¸¦ ¹Ù²Û´Ù. Áï, book_overdue('A. Jones', Book)ÀÇ ¶Ç ´Ù¸¥ Çظ¦ ãÁö ¾Ê´Â´Ù. ¶ÇÇÑ µÎ¹ø° Facility¹®µµ °í·ÁÇÏÁö ¾Ê´Â´Ù. ÀÌ ¿¹¿¡¼­ "Cut"ÀÇ ¿µÇâÀº ´ÙÀ½°ú °°ÀÌ ±â¼úµÉ ¼ö ÀÖ´Ù :
   ¸¸ÀÏ ¹Ý³³ÀÏÀÌ Áö³­ Ã¥À» °¡Áø »ç¿ëÀÚ°¡ ÀÖÀ¸¸é, ±× »ç¶÷Àº µµ¼­°í³ªÀÇ ±âº»½Ã¼³¸¸À» »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ±× »ç¶÷ÀÌ ÁöüÇÑ ¸ðµç Ã¥À» ãÀ» ÇÊ¿ä°¡ ¾øÀ¸¸ç, ½Ã¼³¿¡ °üÇÑ ´Ù¸¥ ±ÔÄ¢µéµµ °í·ÁÇÏÁö ¾Ê´Â´Ù.
   À§ÀÇ ¿¹¿¡¼­ Cut Àº ±×°ÍÀÌ ÀÖ´Â °÷¿¡¼­ºÎÅÍ ¼Ò±ÞÇÑ Facility ¸ñÇ¥ ³»¿¡¼­ ¸ðµç °á·ÐÀ» ³»µµ·Ï ÇÑ´Ù. À̸¦ Cut GoalÀÇ Parent GoalÀ̶ó ÇÑ´Ù. À̸¦ ¸¸Á·½ÃÅ°´Â ¶Ç ´Ù¸¥ ¸ðµç ÇصéÀº ¹«½ÃµÇ¸ç Parent Goal°ú Cut Goal »çÀÌÀÇ ¾î¶² Goalµµ ¸¸Á·½ÃÅ°·Á´Â ½Ãµµ¸¦ ÇÏÁö ¾Ê´Â´Ù.