¥È¥Ã¥×   ÊÔ½¸ Åà·ë²ò½ü º¹Ê¬ ¥Ð¥Ã¥¯¥¢¥Ã¥× źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS

¤ä¤Ã¤Æ¤ß¤è¤¦

Last-modified: 2011-01-15 (ÅÚ) 21:42:12 (4872d)
Top / ¤ä¤Ã¤Æ¤ß¤è¤¦

TopPage

½àÈ÷

  • ¤³¤³¤Ç¤ÏCHR¥×¥í¥°¥é¥ß¥ó¥°¤ò¹Ô¤¦¤¿¤á¤Î½èÍý·Ï¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ë¤Ä¤¤¤Æ²òÀ⤷¤Þ¤¹¡£ ËÜ¥µ¥¤¥È¤Ç¤ÏPC¤ÎOS¤È¤·¤ÆWindows Vista¤òÁÛÄꤷ¡¢Prolog¤Î½èÍý·Ï¤È¤·¤Æͭ̾¤ÊSWI-Prolog¤òÍѤ¤¤Þ¤¹¡£

1. ½èÍý·Ï¤Î¥À¥¦¥ó¥í¡¼¥É

  • SWI-Prolog¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤¿¤á¤Î¼Â¹Ô¥Õ¥¡¥¤¥ë¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Þ¤¹¡£
  1. SWI-Prolog¤Î¥Û¡¼¥à¥Ú¡¼¥¸¤ò³«¤¯¡£
  2. º¸Â¦¤Î¥á¥Ë¥å¡¼¤«¤é¥À¥¦¥ó¥í¡¼¥É¤òÁªÂò¡£
  3. Available versions¤Îstable release¤òÁªÂò¡£
  4. SWI-Prolog/XPCE (¥Ð¡¼¥¸¥ç¥óÈÖ¹æ) for Windows NT/2000/XP/Vista¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤¡£
    • 64bitÈǤÎWindows¤äUNIX¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤½¤ì¤ËÂбþ¤·¤¿¤â¤Î¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤¡£

2. ½èÍý·Ï¤Î¥¤¥ó¥¹¥È¡¼¥ë

  • SWI-Prolog¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£¥À¥¦¥ó¥í¡¼¥É¤·¤¿.exe¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô¤·¤Þ¤·¤ç¤¦¡£
  1. ÍøÍѵ¬Ìó¤ËƱ°Õ¡£
  2. ¥¤¥ó¥¹¥È¡¼¥ë·Á¼°(Æäˤ³¤À¤ï¤ê¤¬Ìµ¤±¤ì¤Ð"Typical")¤òÁªÂò¤·¤Þ¤¹¡£
  3. ¥¤¥ó¥¹¥È¡¼¥ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£
  4. Prolog¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤È¤·¤Æ»ÈÍѤ¹¤ë³ÈÄ¥»Ò¤òÀßÄꤷ¤Þ¤¹¡£
    • ½é´üÀßÄê¤Ç¤Ï.pl¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢¥Þ¥Ë¥å¥¢¥ë¤Ç¿ä¾©¤µ¤ì¤Æ¤¤¤ë.swi¤ò»ØÄꤷ¤Þ¤·¤ç¤¦¡£.pl¤ÏPerl¤Ç»ÈÍѤµ¤ì¤Æ¤¤¤ë¤Ê¤É¿§¡¹¤ÈÉÔÅԹ礬¤¢¤ë¤è¤¦¤Ç¤¹¡£
    • ¤³¤³¤Ç»ØÄꤷ¤¿³ÈÄ¥»Ò¤Î¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô¤¹¤ë¤È¡¢¼«Æ°Åª¤ËSWI-Prolog¤¬µ¯Æ°¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
  5. Install¤ò²¡¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤ò¼Â¹Ô¤·¤Þ¤¹¡£Completed¤Èɽ¼¨¤µ¤ì¤¿¤éfinished¤ò²¡¤·¤Æ½ªÎ»¤Ç¤¹¡£

3. ½èÍý·Ï¤Îµ¯Æ°³Îǧ

  • SWI-Prolog¤òµ¯Æ°¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
  • Windows¤Î¥¹¥¿¡¼¥È¥á¥Ë¥å¡¼¢Í¤¹¤Ù¤Æ¤Î¥×¥í¥°¥é¥à¢ÍSWI-Prolog¢ÍProlog¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£ ²¼¿Þ¤Î¤è¤¦¤Ê¥¦¥£¥ó¥É¥¦¤¬³«¤±¤Ð¡¢Àµ¾ï¤Ëµ¯Æ°¤Ç¤­¤Æ¤¤¤ë¡Ê¤Ï¤º¡Ë¤Ç¤¹¡£
test.jpg
  • SWI-Prolog¤ò½ªÎ»¤µ¤»¤ë¤¿¤á¤Ë¤Ï¡¢halt¤òÂǤÁ¤Þ¤¹¡£
?- halt.

CHR ¥×¥í¥°¥é¥ß¥ó¥°

  • ¤½¤ì¤Ç¤Ï¼ÂºÝ¤ËCHR¥×¥í¥°¥é¥à¤ò½ñ¤¤¤Æ¤ß¤Þ¤·¤ç¤¦¡£¤³¤³¤Ç¤ÏÎã¤È¤·¤Æ¥æ¡¼¥¯¥ê¥Ã¥É¤Î¸ß½üË¡¤Ë¤è¤Ã¤ÆºÇÂç¸øÌó¿ô¤òµá¤á¤ëÎãÂê¡ÊGCD¡Ë¤ò°·¤¤¤Þ¤¹¡£

CHR ¥é¥¤¥Ö¥é¥ê¤Î¸Æ¤Ó½Ð¤·

  • Á°½Ò¤ÎÄ̤ꡢCHR¤Ï¥Û¥¹¥È¸À¸ì¾å¤Ë¥é¥¤¥Ö¥é¥ê¤È¤·¤ÆÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¥½¡¼¥¹¥Õ¥¡¥¤¥ëÃæ¤Ç¥é¥¤¥Ö¥é¥ê¸Æ¤Ó½Ð¤·¤ò¹Ô¤¤¤Þ¤¹¡£
:- use_module(library(chr)).

À©Ìó¤ÎÀë¸À

  • CHR ¥×¥í¥°¥é¥àÃæ¤Ë½Ð¸½¤¹¤ëÀ©Ìó¤Ï¡¢Á´¤ÆÀë¸À¤¬É¬ÍפǤ¹¡£º£²ó¤Ïgcd¤È¤¤¤¦1°ú¿ô¤ÎÀ©Ìó¤òÍѤ¤¤Þ¤¹¡£
:- chr_constrain gcd/1.

¥ë¡¼¥ë¤ÎÀë¸À

  • CHR¤Ë¤Ï3¼ïÎà¤Î¥ë¡¼¥ë¤¬¤¢¤ê¤Þ¤¹¡£
  • Simplification rule
    Head <=> Guard | Body.
  • GuardÉô¤¬À®¤êΩ¤Ä¤È¤­¡¢HeadÉô¤òBodyÉô¤Ø¤È½ñ¤­´¹¤¨¤ë
  • Propagation rule
    Head ==> Guard | Body.
  • GuardÉô¤¬À®¤êΩ¤Ä¤È¤­¡¢Æ±Åù¤ÊHeadÉô¤ËÂФ·¤ÆBodyÉô¤ò¹â¡¹1²óÄɲ乤롣
  • Simpatation rule
    Head \ Head' <=> Guard | Body.
  • GuardÉô¤¬À®¤êΩ¤Ä¤È¤­¡¢\¤è¤ê¤â¸å¤í¤ÎHead'Éô¤òBodyÉô¤Ø¤È½ñ¤­´¹¤¨¤ë¡£
  • º£²ó¤Ï´ðËÜŪ¤Ê¥ë¡¼¥ë¤Ç¤¢¤ëSimplification rule¤ò2Ëܵ­½Ò¤·¤Þ¤¹¡£
  • 1ËÜÌܤΥ롼¥ë¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
    gcd(X), gcd(Y) <=> 0<X, X=<Y | Z is Y mod X, gcd(X), gcd(Z).
  • ¤³¤Î¥ë¡¼¥ë¤Ç¤Ï¡¢0<X¤«¤ÄX=<Y¤òËþ¤¿¤¹¤è¤¦¤ÊÆó¤Ä¤ÎÀ°¿ôX¤ÈY¤¬¤¢¤ë¾ì¹ç¤Ë¡¢Y¤ÎÀ°¿ô¤ò»ý¤ÄÀ©Ìógcd(Y)¤òY mod X¤ÎÀ°¿ô¤Ç¤¢¤ëZ¤ò»ý¤ÄÀ©Ìógcd(Z)¤Ø¤È½ñ¤­´¹¤¨¤Æ¤¤¤Þ¤¹¡£
  • 2ËÜÌܤΥ롼¥ë¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
    gcd(0) <=> true.
  • 1ËÜÌܤΥ롼¥ë¤Ë¤è¤Ã¤Ægcd(0)¤¬À¸À®¤µ¤ì¤¿¾ì¹ç¤Ï¡¢¤½¤ì¤ò¾Ãµî¤·¤Æ¤¤¤Þ¤¹¡£true¤ÏÄ̾ï¤ÎÀ©Ìó¤Ç¤Ï¤Ê¤¯¡¢¤½¤Î¥ë¡¼¥ë¤¬À®¤êΩ¤Ä¤³¤È¤ò¼¨¤¹ÆÃÊ̤ÊÀ©Ìó¤Ç¤¹¡£

¼Â¹Ô

  • °Ê¾å¤ÎCHR¥×¥í¥°¥é¥à¤òµ­½Ò¤·¤¿¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤¬¤³¤Á¤é¤Ç¤¹¡£
  • ¤³¤Î¥Õ¥¡¥¤¥ë¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤¿¤é¡¢SWI-Prolog¤òµ¯Æ°¤·¤Þ¤·¤ç¤¦¡£
  • ¥á¥Ë¥å¡¼¤«¤éconsult¤òÁªÂò¤·¡¢gcd.swi¥Õ¥¡¥¤¥ë¤ò³«¤­¤Þ¤·¤ç¤¦¡£
  • ²¼¿Þ¤Î¤è¤¦¤Ë¥³¥ó¥Ñ¥¤¥ë¤¬¹Ô¤ï¤ì¤Þ¤¹¡£¥¨¥é¡¼½ÐÎϤ¬Ìµ¤±¤ì¤Ð¥³¥ó¥Ñ¥¤¥ëÀ®¸ù¤Ç¤¹¡£
consult.jpg
  • ¤½¤ì¤Ç¤ÏŬÅö¤Ê¥¯¥¨¥ê¤òÍ¿¤¨¤Æ¡¢¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
?- gcd(8), gcd(2).
  • 8¤È2¤ÎºÇÂç¸øÌó¿ô¤Ï2¤Ç¤¹¡£¤³¤ì¤òÂǤÁ¹þ¤ó¤Ç¥¨¥ó¥¿¡¼¥­¡¼¤ò²¡¤¹¤È°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
gcd.jpg
  • gcd(2)¤¬ÆÀ¤é¤ì¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£
  • ¥×¥í¥°¥é¥à¤Î¼Â¹Ô¤ò½ªÎ»¤¹¤ë¤È¤­¤Ï¡¢¥»¥ß¥³¥í¥ó(;)¤òÂǤÁ¤Þ¤¹¡£
gcd2.jpg
  • °Ê¾å¤¬´ðËÜŪ¤Ê¥×¥í¥°¥é¥à¤Î¼Â¹ÔÊýË¡¤Ë¤Ê¤ê¤Þ¤¹¡£
  • ËܲÈCHR ¥µ¥¤¥È¤ÎÎãÂê¥Ú¡¼¥¸¤Ë¤ÏÍÍ¡¹¤ÊCHR¥½¡¼¥¹¥³¡¼¥É¤¬ÃÖ¤«¤ì¤Æ¤¤¤Þ¤¹¡£¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¿§¡¹¤ÈÍ·¤ó¤Ç¤ß¤Þ¤·¤ç¤¦¡£

¥ª¥×¥·¥ç¥ó

  • CHR¤Ë¤Ï¥½¡¼¥¹¥³¡¼¥ÉÃæ¤Ëµ­½Ò¤¹¤ëÊØÍø¤Ê¥ª¥×¥·¥ç¥ó¡¦´Ø¿ô¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤¤¤¯¤Ä¤«¾Ò²ð¤·¤Þ¤¹¡£

¥È¥ì¡¼¥¹¥â¡¼¥É

  • ·×»»½èÍý¤ò1¥¹¥Æ¥Ã¥×¤º¤Äɽ¼¨¤µ¤»¤Ê¤¬¤é¼Â¹Ô¤·¤Þ¤¹¡£CHR¥×¥í¥°¥é¥à¤ÎµóÆ°¤À¤±¤Ç¤Ï¤Ê¤¯¡¢CHR½èÍý·Ï¡Ê¤³¤³¤Ç¤ÏSWI-Prolog¤Ç¤¹¤¬¡Ë¤¬ÆâÉô¤Ç¤É¤Î¤è¤¦¤Ê½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤ë¤Î¤«¤òÇÄ°®¤¹¤ë¼ê½õ¤±¤ò¤·¤Æ¤¯¤ì¤Þ¤¹¡£
:- chr_trace.

¼Â¹Ô»þ´Ö·×¬

  • CHR¤Ç¤Ï¤Ê¤¯Prolog¤Î´Ø¿ô¤È¤·¤Æcputime´Ø¿ô¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
hoge <=> cputime(X).
  • ¾å¤Î¥ë¡¼¥ë¤Î¤è¤¦¤Ë¡¢²¿¤é¤«¤Î¥ë¡¼¥ë¤Î¥Ü¥Ç¥£Éô¤Ë1°ú¿ô¤ÎcputimeÀ©Ìó¡Ê´Ø¿ô¡Ë¤òµ­½Ò¤¹¤ë¤È¡¢¥ë¡¼¥ë¤¬Å¬ÍѤµ¤ì¤¿»þÅÀ¤Ç¤Î»þ´Ö¤òÊÑ¿ôX¤ËÂåÆþ¤·¤Þ¤¹¡£

ºÇŬ²½¥â¡¼¥É

  • CHR¤Ç¤ÏÏÀÍýÊÑ¿ô¤ä·¿ÂηϤʤɤòÍøÍѤ·¤¿ºÇŬ²½¥â¡¼¥É¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
:- chr_option(optimize, full).
  • ¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢°Ê²¼¤Î¤è¤¦¤ÊºÇŬ²½¤¬ÍøÍѲÄǽ¤È¤Ê¤ê¤Þ¤¹¡£

¶¦ÄÌÏÀÍýÊÑ¿ô¤òÍøÍѤ·¤¿¥Þ¥Ã¥Á¥ó¥°ºÇŬ²½

  • ¥Þ¥Ã¥Á¥ó¥°¤È¤Ï¥Ø¥Ã¥ÉÉô¤Î¹½Â¤¤ËÅö¤Æ¤Ï¤Þ¤ëÀ©Ìó¤òõº÷¤¹¤ë½èÍý¤Ç¤¹¡£°Ê²¼¤Î¥ë¡¼¥ë¤òÎã¤Ë²òÀ⤷¤Þ¤¹¡£
a(X), b(Y) <=> X == Y | true.
  • ¤³¤Î¥ë¡¼¥ë¤Ï²¼¿Þ¤Î(1)¤«¤é(3)¤Î½ç¤Ç¥ë¡¼¥ëŬÍѤò»î¤ß¤Þ¤¹¡£
matching2.jpg
  • ¤³¤Î¥ë¡¼¥ë¤Î¾ì¹ç¡¢²¼¿Þ¤Î¤è¤¦¤Ë1°ú¿ô¤Îa, b¤È¤¤¤¦À©Ì󤬿ô¿¤¯Â¸ºß¤·¤¿¾ì¹ç¤Ë¤Ï¡¢¥Þ¥Ã¥Á¥ó¥°¤¬Èó¸úΨŪ¤Ë¹Ô¤ï¤ì¤ë²ÄǽÀ­¤¬¹â¤¯¤Ê¤ê¤Þ¤¹¡£
matching3.jpg
  • ¤³¤ÎÌäÂê¤ò²ò·è¤¹¤ë¤¿¤á¡¢CHR¤Ç¤Ï¶¦ÄÌÏÀÍýÊÑ¿ô¤òÍøÍѤ·¤¿¥Þ¥Ã¥Á¥ó¥°ºÇŬ²½¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
  • ¤³¤ÎºÇŬ²½¤òÍøÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢²¼µ­¤Î¤è¤¦¤Ë¥ë¡¼¥ë¤òÊѹ¹¤¹¤ë¤À¤±¤ÇOK¤Ç¤¹¡£
a(X), b(X) <=> true.
  • ¤³¤¦¤¹¤ë¤³¤È¤Ç¡¢¥Þ¥Ã¥Á¥ó¥°»þ¤Î½èÍý¤Î½ç½ø¤¬²¼¿Þ¤Î(1)¤«¤é(3)¤Î¤è¤¦¤Ë¤Ê¤ê¡¢
matching4.jpg
  • ¥Þ¥Ã¥Á¥ó¥°¤Î¼ºÇÔ¤ò¶ËÎϸº¤é¤¹¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
matching5.jpg

źÉÕ¥Õ¥¡¥¤¥ë: filematching5.jpg 203·ï [¾ÜºÙ] filematching4.jpg 209·ï [¾ÜºÙ] filematching3.jpg 185·ï [¾ÜºÙ] filematching2.jpg 180·ï [¾ÜºÙ] filematching.jpg 122·ï [¾ÜºÙ] filegcd2.jpg 209·ï [¾ÜºÙ] filegcd.jpg 205·ï [¾ÜºÙ] filetest.jpg 193·ï [¾ÜºÙ] fileconsult.jpg 238·ï [¾ÜºÙ] filegcd.swi 248·ï [¾ÜºÙ]