¤ä¤Ã¤Æ¤ß¤è¤¦
Last-modified: 2011-01-15 (ÅÚ) 21:42:12 (4872d)
Top / ¤ä¤Ã¤Æ¤ß¤è¤¦
½àÈ÷ †
- ¤³¤³¤Ç¤ÏCHR¥×¥í¥°¥é¥ß¥ó¥°¤ò¹Ô¤¦¤¿¤á¤Î½èÍý·Ï¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ë¤Ä¤¤¤Æ²òÀ⤷¤Þ¤¹¡£ ËÜ¥µ¥¤¥È¤Ç¤ÏPC¤ÎOS¤È¤·¤ÆWindows Vista¤òÁÛÄꤷ¡¢Prolog¤Î½èÍý·Ï¤È¤·¤ÆÍ̾¤ÊSWI-Prolog¤òÍѤ¤¤Þ¤¹¡£
1. ½èÍý·Ï¤Î¥À¥¦¥ó¥í¡¼¥É †
- SWI-Prolog¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤¿¤á¤Î¼Â¹Ô¥Õ¥¡¥¤¥ë¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Þ¤¹¡£
- SWI-Prolog¤Î¥Û¡¼¥à¥Ú¡¼¥¸¤ò³«¤¯¡£
- º¸Â¦¤Î¥á¥Ë¥å¡¼¤«¤é¥À¥¦¥ó¥í¡¼¥É¤òÁªÂò¡£
- Available versions¤Îstable release¤òÁªÂò¡£
- SWI-Prolog/XPCE (¥Ð¡¼¥¸¥ç¥óÈÖ¹æ) for Windows NT/2000/XP/Vista¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤¡£
- 64bitÈǤÎWindows¤äUNIX¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤½¤ì¤ËÂбþ¤·¤¿¤â¤Î¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤¡£
2. ½èÍý·Ï¤Î¥¤¥ó¥¹¥È¡¼¥ë †
- SWI-Prolog¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£¥À¥¦¥ó¥í¡¼¥É¤·¤¿.exe¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô¤·¤Þ¤·¤ç¤¦¡£
- ÍøÍѵ¬Ìó¤ËƱ°Õ¡£
- ¥¤¥ó¥¹¥È¡¼¥ë·Á¼°(Æäˤ³¤À¤ï¤ê¤¬Ìµ¤±¤ì¤Ð"Typical")¤òÁªÂò¤·¤Þ¤¹¡£
- ¥¤¥ó¥¹¥È¡¼¥ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£
- Prolog¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤È¤·¤Æ»ÈÍѤ¹¤ë³ÈÄ¥»Ò¤òÀßÄꤷ¤Þ¤¹¡£
- ½é´üÀßÄê¤Ç¤Ï.pl¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢¥Þ¥Ë¥å¥¢¥ë¤Ç¿ä¾©¤µ¤ì¤Æ¤¤¤ë.swi¤ò»ØÄꤷ¤Þ¤·¤ç¤¦¡£.pl¤ÏPerl¤Ç»ÈÍѤµ¤ì¤Æ¤¤¤ë¤Ê¤É¿§¡¹¤ÈÉÔÅԹ礬¤¢¤ë¤è¤¦¤Ç¤¹¡£
- ¤³¤³¤Ç»ØÄꤷ¤¿³ÈÄ¥»Ò¤Î¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô¤¹¤ë¤È¡¢¼«Æ°Åª¤ËSWI-Prolog¤¬µ¯Æ°¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
- Install¤ò²¡¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤ò¼Â¹Ô¤·¤Þ¤¹¡£Completed¤Èɽ¼¨¤µ¤ì¤¿¤éfinished¤ò²¡¤·¤Æ½ªÎ»¤Ç¤¹¡£
3. ½èÍý·Ï¤Îµ¯Æ°³Îǧ †
- SWI-Prolog¤òµ¯Æ°¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
- Windows¤Î¥¹¥¿¡¼¥È¥á¥Ë¥å¡¼¢Í¤¹¤Ù¤Æ¤Î¥×¥í¥°¥é¥à¢ÍSWI-Prolog¢ÍProlog¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£ ²¼¿Þ¤Î¤è¤¦¤Ê¥¦¥£¥ó¥É¥¦¤¬³«¤±¤Ð¡¢Àµ¾ï¤Ëµ¯Æ°¤Ç¤¤Æ¤¤¤ë¡Ê¤Ï¤º¡Ë¤Ç¤¹¡£
- 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¥Õ¥¡¥¤¥ë¤ò³«¤¤Þ¤·¤ç¤¦¡£
- ²¼¿Þ¤Î¤è¤¦¤Ë¥³¥ó¥Ñ¥¤¥ë¤¬¹Ô¤ï¤ì¤Þ¤¹¡£¥¨¥é¡¼½ÐÎϤ¬Ìµ¤±¤ì¤Ð¥³¥ó¥Ñ¥¤¥ëÀ®¸ù¤Ç¤¹¡£
- ¤½¤ì¤Ç¤ÏŬÅö¤Ê¥¯¥¨¥ê¤òÍ¿¤¨¤Æ¡¢¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
?- gcd(8), gcd(2).
- 8¤È2¤ÎºÇÂç¸øÌó¿ô¤Ï2¤Ç¤¹¡£¤³¤ì¤òÂǤÁ¹þ¤ó¤Ç¥¨¥ó¥¿¡¼¥¡¼¤ò²¡¤¹¤È°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
- gcd(2)¤¬ÆÀ¤é¤ì¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£
- ¥×¥í¥°¥é¥à¤Î¼Â¹Ô¤ò½ªÎ»¤¹¤ë¤È¤¤Ï¡¢¥»¥ß¥³¥í¥ó(;)¤òÂǤÁ¤Þ¤¹¡£
- °Ê¾å¤¬´ðËÜŪ¤Ê¥×¥í¥°¥é¥à¤Î¼Â¹ÔÊýË¡¤Ë¤Ê¤ê¤Þ¤¹¡£
- ËܲÈ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)¤Î½ç¤Ç¥ë¡¼¥ëŬÍѤò»î¤ß¤Þ¤¹¡£
- ¤³¤Î¥ë¡¼¥ë¤Î¾ì¹ç¡¢²¼¿Þ¤Î¤è¤¦¤Ë1°ú¿ô¤Îa, b¤È¤¤¤¦À©Ì󤬿ô¿¤¯Â¸ºß¤·¤¿¾ì¹ç¤Ë¤Ï¡¢¥Þ¥Ã¥Á¥ó¥°¤¬Èó¸úΨŪ¤Ë¹Ô¤ï¤ì¤ë²ÄǽÀ¤¬¹â¤¯¤Ê¤ê¤Þ¤¹¡£
- ¤³¤ÎÌäÂê¤ò²ò·è¤¹¤ë¤¿¤á¡¢CHR¤Ç¤Ï¶¦ÄÌÏÀÍýÊÑ¿ô¤òÍøÍѤ·¤¿¥Þ¥Ã¥Á¥ó¥°ºÇŬ²½¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
- ¤³¤ÎºÇŬ²½¤òÍøÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢²¼µ¤Î¤è¤¦¤Ë¥ë¡¼¥ë¤òÊѹ¹¤¹¤ë¤À¤±¤ÇOK¤Ç¤¹¡£
a(X), b(X) <=> true.
- ¤³¤¦¤¹¤ë¤³¤È¤Ç¡¢¥Þ¥Ã¥Á¥ó¥°»þ¤Î½èÍý¤Î½ç½ø¤¬²¼¿Þ¤Î(1)¤«¤é(3)¤Î¤è¤¦¤Ë¤Ê¤ê¡¢
- ¥Þ¥Ã¥Á¥ó¥°¤Î¼ºÇÔ¤ò¶ËÎϸº¤é¤¹¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
źÉÕ¥Õ¥¡¥¤¥ë: matching5.jpg 203·ï [¾ÜºÙ] matching4.jpg 209·ï [¾ÜºÙ] matching3.jpg 185·ï [¾ÜºÙ] matching2.jpg 180·ï [¾ÜºÙ] matching.jpg 122·ï [¾ÜºÙ] gcd2.jpg 209·ï [¾ÜºÙ] gcd.jpg 205·ï [¾ÜºÙ] test.jpg 193·ï [¾ÜºÙ] consult.jpg 238·ï [¾ÜºÙ] gcd.swi 248·ï [¾ÜºÙ]