
Prologé¢šã«æžããšæ¥å課é¡ãè§£ãçæAIïŒçç±ã¯åãããªãïŒ
ãŽãŒã«
çµéšåã®å¡ã§ãã補é ã»ç©æµã»äºåéšéã¯äœæ¥æšæºåãåºæ¥ãªããé£ã®äººãäœããã£ãŠãã®ãåãããªããããã»ã¹ããã©ãã©ã ãããèªååããŠãæå³ããªãããããå°ãªã人æ°ã§ãããªãããããã ãé£ã®äººã§ãåãããªãããããªã®ã§ãå€éšã®äººéã«åããçãç¡ããæã®æã¡ãããç¡ãã
ïŒïŒïŒ
ãProlog颚ãã«ã¯æ¡ä»¶ããããæ
£ããã°ç°¡åã
ãã©ãã©é·ãæžããŠãããããæããŠãã°é§ç®ã
â ã¢ãã«ã®æ§ç¯ïŒç°å¢ïŒ
â¡ã«ãŒã«
â¢åæå€
â£ãŽãŒã«ïŒåæ¢æ¡ä»¶ïŒ
å ·äœäŸ
æ®éã«è«ççãªè³ªåãçæAIã«æã€ã

éãåé¡ã§Prolog颚ã«ãããšãããªæãã
çæAIã¯ãã¡ãããšçããåºãã

ãè«ççããšã¯ã¡ãã£ãšéãããããŸã§ããProlog颚ãã
åãããªã人ã¯ããã©ãã©æžããçµæã§ãåãçïŒ
ChatGPTãåºããããããæ°ã«ãªã£ãŠLLMæ¬ãèªãã§èªãã§ã1幎éã¯äœ¿ãéãæãã€ããªãã1ç§ãè§Šããªãã£ãã
ã€ã³ã¿ãŒãã§ãŒã¹2024/8æå·ã§ãçæAIãç¹éãèªãã§ãã²ãŒã ãïŒããäœããšããã®ããã£ãŠé©ããããããâŠ
äœããèŠããæ°ãããã®ã§ãè§Šãå§ããŠãã£ãš1é±éã
èŠæš
質åã®åçã¯ããã³ãããšã³ãžãã¢ãªã³ã°ã§å¯èœã
åé¡è§£æ±ºã®åçã¯ããã³ãããšã³ãžãã¢ãªã³ã°ã§ã¯äžååã
è§£ãããæ¥å課é¡ãã©ããã£ãŠè¡šçŸãããè¯ããåãããªãããã ã
ïŒããã³ãããšã³ãžãã¢ãªã³ã°ã®æ¬ãåèã«ããŠããæžããªãïŒ
ãããPrologãæèããŠçæAIã«åé¡è§£æ±ºã®è³ªåãã¶ã€ãããšããªããšæ®éã«è§£ããŠããŸãããšãæ€èšŒã®çµæãããã
ïŒããã°ã©ã ã³ãŒããäœãã®ã§ã¯ãªãïŒ
éã«èšããšãçæAIã¯è«çããã°ã©ãã³ã°ãåºæ¥ãïŒã¿ããïŒã
ããæããããçæAIã®äœ¿çšæ³ã¯å€ãã®æ¥çš®è·çš®ã§ã¯åœãŠã¯ãŸããªãã
ããããããããã°å¯Ÿè±¡ç¯å²ãåºããããšãã§ããã
â»ChatGPT3.5ã§ããç®æ°ã匱ããã©ååã ã£ãã人ãçŽãã°ããã


ïŒ.ãè§£ãããåé¡ããç¥èãåãåé¡ã®å ŽåïŒäŒç»ãå¶æ¥éšéãªã©ã¯ãã¡ãã«è¿ãïŒ
確å®çãªåé¡ãšãèšãã¹ããïŒ
ãã®å Žåã¯ç°¡åãããã³ãããšã³ãžãã¢ãªã³ã°ããèŠããªãã
Googleã®èŠé ã
質åãããé£ãããªã£ãŠãããšããã³ãããšã³ãžãã¢ãªã³ã°ãå¿
èŠã
ã¯ãªãšã€ãã£ããªè³ªåãšããOKãããã¯ãããã©ãã©ã䜿ãã¹ãã ã
äŸïŒæ¥æ¬ã®éŠéœã¯ã©ãïŒïŒç¥èãåãåé¡ïŒ
2.ãè§£ãããåé¡ããæ¹æ³ãåãåé¡ã®å ŽåããïŒè£œé ãç©æµãäºåéšéã®èª²é¡ã¯ãã¡ãïŒ
äŸïŒãã³ãã³ãžãŒã«ããããåãããåé¡ïŒæ¹æ³ãåãåé¡ïŒ

https://psypod.wordpress.com/wp-content/uploads/2009/06/1f362b95e399550ea6975b7cdedc09c7.jpeg?w=180&h=300
äŸïŒïŒLãšïŒLããïŒLãåãåºãåé¡ïŒæ¢ç¥ã§ç¥èããŒã¹ã§è§£çå¯èœïŒ

https://www.chunichi.co.jp/article_photo/list?article_id=701772&pid=3499435
äŸïŒçŸãšçŒãšãã£ããã®åé¡ïŒæ¢ç¥ãªã®ã§ç¥èããŒã¹ã§è§£çå¯èœïŒ

ïŒïŒïŒ
åé¡ãæªç¥ã®å Žåãããã³ãããšã³ãžãã¢ãªã³ã°ã§ã¯è§£æ±ºãé£ããã
ç¹ã«ããã³ãã³ãžãŒãããããåãåé¡ã§ã¯åŒ·ååŠç¿ãšåãã§ãç°å¢ãèšè¿°ããã®ããšãŠãé£ãããã©ãæžãã°ããã®ãèªåãã¡ã§ãåãããªãã
ç§èªèº«ãçæAIæ¬ãèªãã§ãèªãã§ãäžåã«è
ã«èœã¡ãªãã£ãã
ããã©ããã£ãŠããã¡ã®ä»äºã«äœ¿ãã°ãããã ããâŠ
ããçæAIã§è°äºé²ïŒãããã§å¹Ÿãå²ããã ããâŠãïŒåã ãªïŒç¬ïŒã
ãïŒããèãããšãäžæ©ãé²ãŸãªãïŒ
ããã³ãããšã³ãžãã¢ãªã³ã°ã®æç§æžã£ãŠãç¥èãåãåé¡ã®è§£æ±ºæ³ãã¡ã€ã³ã«æžããŠããç§ã¯ãããªã®ã©ãã§ããããšæã£ãŠããã
確ãã«çãã®ç²ŸåºŠã¯äžãããã ãããã©ããã
ïŒïŒïŒ
ãã£ãšæœè±¡çãªåé¡ã«ãªããšã質åã§äœ¿ãèšèèªäœãæ°ãã«å®çŸ©ã¥ãããå¿ èŠãåºãŠããããããããã³ãããšã³ãžãã¢ãªã³ã°ãšããã°ãããªãã ãããã©ãã¡ãã£ãšæå³ãéããRAGïŒæè¡çã«ã¯ããã ãã©ããããã衚é¢çãªäºãèšãããã®ã§ã¯ãªãã
ïŒïŒïŒ
æ©ãã§ãããååã«ãç¡è¶ãªèª²é¡ããã£ããæ¯ã£ãŠããããšãé¡ãããŠããç§ãæªãã®ã ãã
ãããã®æ¥å課é¡ãçæAIã§è§£ããŸãããïŒã
ãšå®ã«æ°è»œã«æ¯ãããã
æããã«äžåããªãäžçš®ã®ã¹ã±ãžã¥ãŒãªã³ã°åé¡ã§ããã
æ®éã§èãããããã¯æ©æ¢°åŠç¿ããIFæã®åµã§è§£æ±ºããåé¡ã ã
ç¡çç¡çãšæããªããäžæ©å¯ããšã
äœæ
ãæ®éã«çæAIã§ããããåé¡ãæžããããã«ãªã£ãŠããã
æ°ã®ããã ãšæããè²ã
ãšè©Šããšã¹ã©ã¹ã©æžããŠããŸãã
ãŸã çãã®ç²ŸåºŠãæªãã®ã¯ç¢ºãã§ãããã¯ããã³ãããšã³ãžãã¢ãªã³ã°ã§è§£æ±ºã§ããã
ãããåé¡ã¯ããã§ã¯ãªããäœããä¹ãè¶ããæ°ãããã
ïŒïŒïŒ
äŸãã°ããããªâã²ãŒã âã¯ã©ããªGoogleããã®ç¥èã«ãç¡ãã ããã


å€åãæ°ãå€ããªããšãã³ã¯ããã®ã§äžæãèªå°ããå¿ èŠãããçã
ãããçæAIãè§£ããŠåœããåãããªããã§ããïŒ
LLMã®æ¬ãèªãã ãã©ãã©ãããŠè§£ããŠãããã®ãç§ã¯çè§£ã§ããªãã
Pythonã®ã³ãŒããæžããŠè§£ãã®ãªããŸã ããããã§ãéãã®ã ãã®ã
ïŒæé©ååé¡ã質åãããšçæAIã¯PythonãèªãåããçããåºãïŒ
çæAIã«è³ªåããŠã¿ããã©ãããŒãâŠããã©ãã¯ããã¯ã¹ãããã
ãã£ãŒãã©ãŒãã³ã°ã®åŠç¿çµæã ãã誰ã«ãåãããªãã£ãŠããšãã

ïŒïŒïŒ
çãæ·±ãã®ã§ããPythonã§èšç®ããŠãã ããããšãé¡ãããããçãã¯åãã ãã©å
šãéã衚瀺ïŒã©ã³ãã æ§ã§ã¯ãªãïŒã«ãªã£ãã
ãPythonã§èšç®ããŠããŸãããšåºãã
ã€ãŸããæ®éã«èšç®ããæã¯Pythonã¯äœ¿ã£ãŠããªããããã
ããããã°ããã®è³ªåãããæã¯ã®ãã¢ããããŠãéäžã§Pythonã䜿ã£ãŠèšç®ããŠãã

ïŒïŒïŒ
ããã¯åãªãçµã¿åããåé¡ã«è¿ããããã£ãšè€éãªæ¥ååé¡ã詊ããŠã¿ããChatGPT4.0ã¯ããªãè¯ã粟床ã§çããŠããã
ãã®ãã¡ã®äžã€ã¯ãExcelãã¯ããšPythonã§è©Šè¡é¯èª€ããªãã1ã¶æãããŠãããããã¹ãçãäœã£ãåé¡ã ã£ãããã£ãããšè§£ããŠããã®ã§ãæ€
åããä»°ãåã£ããç¹°ãè¿ãããããã°ã©ã ã®ã³ãŒããæžããŠãããã®ã§ã¯ãªããåé¡ãçŽæ¥ã«è§£ããŠããã
ïŒïŒïŒ
ä»®ã«ãåãªãçµã¿åããåé¡ã§ç·ãŠã®çµã¿åããã詊ãããã§ãå¥ã«ããã
çããããèŠããšãããæé©å€ãããªããå¥ã«è¯ãã®ã ã
æ¥åã®äžçã§ã¯æéãæããŠæé©å€ãåºãããã¯ãä»ããŸããŸãã®çããæ¬²ãããExcelã®ãœã«ããŒãšãã§çµããšå¥Žã¯å»¶ã
ãšç·ãŠã®çµã¿åãããæ¢ããŠæãè¯ãçããæ¢ããŠããã¡ããã®ã§ããããããå æžã«æžãŸããã®ãéã«é£ãããããããããã¥ãŒãªã¹ãã£ãã¯çãªè§£ã¯ããããããããã
çµã¿åããççºãèµ·ããã®ãªãããã®æã¯Pythonã®ã³ãŒããæžããŠããã£ãŠæåããããæ¥åã倧ããæãããšå€§å€ã«ãªããã©ãæå€ãšååã®æ±ããåé¡ã¯å°ããéšååããããšãããªã«å€§ããªåé¡ã§ç¡ãããšãå€ãã
ããã¯çµã¿åããæé©ååé¡ãšãããžã£ã³ã«ã§ãããã¯Prologã§ã¯ãªãå¥ã®äžçããããããã¯ãããç§ã®æ¬æ¥ã®åŸæåéãªã®ã§ãå¥ã®æžãæ¹ã§çæAIã«è§£ããŠããããïŒããã¯æªæ€èšŒã ããŸãåŸæ¥ããããããããããšããããã¯Pythonã³ãŒããæžããŠãªããããªè«æããã¬ã³ã¬ã³èªãã¹ããªã®ãâŠãããŒãã«äžãã£ããªïŒ
ããŸã å šç¶ããããªããã ãã©ã
ãããããç§ã¯35幎åã«ç¿ã£ãPrologã®ææ³ã䜿ã£ãŠå¶çŽè«çã§çæAIã«è§£ããŠæ¬²ããåé¡ãæžããŠããæ°ãããããããšã確ãã«ã¹ã©ã¹ã©ãšæžããŠããŸãã
å®éã«ã¯Prologã§æžããŠãèš³ãããªããŠãé ã®äžã§Prologã§æžããŠããããæ¥æ¬èªã«ããŠçæAIã«æžããŠããã®ã ã
Prologã®ã³ãŒããæžãã®ã¯ããªãã¶ã£é£ãã çºæ³ãå¿
èŠã§ããããã°ãäžççžã§ã¯ãããªããã ããç§ã¯Prologãããããäœ¿ãæ°ã¯ç¡ãããã©ããã®æ¹æ³ã«åŸãã°ç®ã®åã®èª²é¡ãã¹ã©ã¹ã©ãšçæAIã§èšè¿°ã§ããŠããŸãã®ã確ãã ã£ããïŒä»æ¥ã¯ãã£ãšããããã£ãŠãïŒ
æé©ååé¡ã§ãªããŠè¯ããŠãç§ã¯ãŠã£ãšãæ©ãçããæ¬²ããã®ã ã
éå»ã®åŠç¿ãå¿
èŠãªãã®ã¯æ©æ¢°åŠç¿ã«ããããã°ãããã§ãããã ãšèª°ã§ãã¯åºæ¥ãªãã
仿¥ãå®éã«Prolog颚ã§ãªãå ŽåïŒãã©ãã©æžããé·æïŒã§ãåãã ãããšæã£ãŠè©ŠããŠã¿ãããäœãšããªããŸãããå®éã«ã¯ããã©ãã©ðèŠçŽðåæã«Prolog颚ã«ãªãããšããéçšãèžã¿ãŸãããã
ïŒïŒïŒ
è«çããã°ã©ãã³ã°ãæžãã人ã¯ãçæAIã«æ®éã«ã©ããªåé¡ã§ãæžãããã§ã¯ãªãããªãã
ãŸããè²ã
ãšæ€èšŒããŠããããã仿¥è²ã
ãšè©Šããã
ã»è«çããã°ã©ãã³ã°ãå¯èœãããããïŒLPïŒ
ã»å¶çŽè«çããã°ã©ãã³ã°ãããå¯èœãïŒCLPïŒ
å¶çŽè«çããã°ã©ãã³ã°ã¯ãæé©åèšç®ã«æ¯ã¹ããšåãªãæ°åŒã§ã¯æ±ãã«ããåé¡ãå¯èœãªç¹ãç°ãªããããã¯åœããåã§Prologã¯åœé¡è«çã ãã§ã¯ãªããè¿°èªè«çãæ±ããŠããŸãã®ã ã
â»çæAIã«Prologã®ã³ãŒããæžãããŠå®è¡ããã®ã§ã¯ãªãã
ãçæAIã«Prologé¢šã«æžãã°åé¡ãè§£ããŠããŸãã®ã ããã
ãTransformerã£ãŠãããªæ©èœãç¡ãçãªãã ãã©ãªãããã
ïŒïŒïŒ
ç¹ã«ãå¶çŽè«çããã°ã©ãã³ã°ãMathematicaã®èšå·èšç®ã®æ§ã«ãæ°å€ãæªç¢ºå®ãªãŸãŸã§å€æ°ãæ±ã£ãŠããã®ãèŠã€ããŠé©æãããç®æ°ã¯åŒ±ãããã«ããããªããšãåºæ¥ããšã¯ã


ïŒãªããããæãã€ããããšèšããšïŒ
ããäžå¹Žã§èãããããããªããäœå幎ã®è©Šè¡é¯èª€âŠ
ã ãããããæ¬¡ã®äººïŒå±
ãã®ãïŒïŒã«ã¯èŠåŽããŠæ¬²ãããªãã
ïŒé ãè¯ã人ãã¡ã«ãé¡ãïŒ
ããã³ãããšã³ãžãã¢ãªã³ã°ã§ã¯ãªããããã®è«çããã°ã©ãã³ã°çã¿ãããªæŠå¿µãããã¯ãããããŠãçŸç¶äžçãç®±åºãšããŠèŠãã¢ããªã³ã°ã®ãã¯ããã¯ããããåãããããæ¬ã«ããŠãããããè²·ã£ãŠèªãããïŒäžåã§ãã
ãã®æ¹æ³ã§ããçŸå®äžçã®åé¡ãProlog颚ã«èšè¿°ãããšããã®ã¯ããŸã ãŸã æ·å±
ãé«ãããããåŽ©ãæ¹æ³ïŒã¢ããªã³ã°ãã©ãããã°ãããã
ç§ã¯18æ³äœããPrologãè§Šã£ãŠããŠãPrologããããã°ããæã«ãã®åãã«æåããŠä»¥æ¥ãæèæ¹æ³ãProlog颚ã«ããŠããŠããã®ã§Prolog颚ã«èããªãæ¹æ³ãåãããªãã®ã ã
ïŒïŒïŒ
Prologã§çŸå®äžçã®åé¡ãèšè¿°ããããšãã¢ããªã³ã°ãšèšãã®ã§ãæ¬æ¥ã¯ãã®å·¥çšãèªååãããã®ã ã
ïŒããŸãïŒ
ãã®è©±ãããŠã¿ãã
ã補é ç³»ã®äººïŒããŒãããšé¡ãããããã
ãæè¡ç³»ã®äººïŒãé¢çœãïŒããšèšãã
ãããããããïŒãããªæ±çšçãªç¡æããŒã«ã¯ç¡ãã®ãç¥ã£ãŠãïŒ
ãå¶æ¥ç³»ã®äººïŒãããããªã®åœããåãããïŒãšæããçããã
ãããããããðããŒãªãã ããåœããåãªãã ãïŒ
ïŒïŒïŒ
詊ãã«ããã®åé¡ãçæAIã«Prologã§æžãããŠã¿ããã
ããªãã¯äœæ¥ç®¡çè
ã§ãã
ä»äºïŒã¯ïŒæéããããAãããšBãããšCãããã§ããŸãã
ä»äºïŒã¯ïŒæéããããBãããšCãããã§ããŸãã
ä»äºïŒã¯ïŒæéããããAãããšCãããã§ããŸãã
AãããBãããCããã®äžéãïŒæéãšããŸãã
ä»äºïŒãšä»äºïŒãšä»äºïŒãçµããäºãæ¡ä»¶ã§ãã
ã©ã®ããã«äœæ¥ãæ¯ãåããã°ãAãããBãããCããã®ãã¡ïŒäººã§ããªããŸããïŒããããããŸã§ãã¡ããšã¯èªåã§ã¯ïŒæ¥ã§ãæžããªããªïŒç¬ïŒ
ã§ããäžã®æ¥æ¬èªãšã»ãŒïŒå¯ŸïŒã§ã³ãŒãã察å¿ããŠããäºãåããã
ã«ãŒã«ã ãæžãã°ãããã§åãã¡ããã®ãPrologã®äžæè°ã
% äœæ¥æéã®å®çŸ©
job(job1, 9, [a, b, c]).
job(job2, 3, [b, c]).
job(job3, 4, [a, c]).
% äœæ¥è
ã®äžéæé
limit(a, 9).
limit(b, 9).
limit(c, 9).
% äœæ¥ã®å²ãæ¯ãã確èª
can_complete_jobs([W1, W2]) :-
% åäœæ¥è
ã®åææé
limit(W1, Limit1), Limit1 >= 0,
limit(W2, Limit2), Limit2 >= 0,
W1 \= W2,
job(Job1, Time1, Workers1), member(W1, Workers1), NewLimit1 is Limit1 - Time1, NewLimit1 >= 0,
job(Job2, Time2, Workers2), member(W2, Workers2), NewLimit2 is Limit2 - Time2, NewLimit2 >= 0,
job(Job3, Time3, Workers3), (member(W1, Workers3), NewLimit3 is NewLimit1 - Time3, NewLimit3 >= 0; member(W2, Workers3), NewLimit4 is NewLimit2 - Time3, NewLimit4 >= 0).
% äœæ¥è
ã®çµã¿åãããçæ
worker_combination(W1, W2) :-
limit(W1, _),
limit(W2, _),
W1 \= W2.
% ãã¹ãŠã®äœæ¥è
ã®çµã¿åããã«ã€ããŠç¢ºèª
find_solution :-
worker_combination(W1, W2),
can_complete_jobs([W1, W2]),
format('Jobs can be completed by workers: ~w and ~w~n', [W1, W2]),
fail.
% ããã°ã©ã ã®éå§
:- find_solution.ïŒããã«ããŸããçŽæ¥è§£ããªããŠãè¯ãïŒ
匷ååŠç¿ããã1幎以äžå匷ããŠãããã©ãäžããããåé¡ã«å¯ŸããŠã©ããã£ãŠæžãå§ããã°ããã®ãå šç¶ããããªãã®ã§æŸçœ®ïŒïŒèªãããšã¯åºæ¥ãïŒ
äŸãã°ãäžè¬çãªå庫ã®éçšåé¡ããããªã®ãäœæ¥è
ã«ãã¢ãªã³ã°ããªããŠãæ³åã§èª°ã§ãæžãããå®éã¯ãã£ãšé£ããã
ãããæµç³ã«Prolog颚ã¯ç¡çãªã®ã§ãæ®éã«æžããŠã¿ãã

çæAIã«ïŒèªåãç¥ããªãïŒPythonã®åŒ·ååŠç¿ã§ãµã³ãã«ã³ãŒããæžããŠããããããã¯æ®éã®çºæ³ã§ãããåžè²©æ¬ã«æžããŠããæ¹æ³ã

ïŒïŒïŒ
åã£ããªããä»ãŸã§ã¯Pythonã³ãŒããèŒã£ãŠãªããããšèªãŸãªãã£ãæè¡æžãå šéšèªãã§ãããªããšãªããªãã®ãâŠãããŒã

ãé³¥ãã®åŠç¿ãéããªããã ã£ãŠãããŒãâŠ
ïŒïŒïŒ
ãã³ãã³ãžãŒãšãããã®åé¡ã詊ãã«æžããŠããã£ãã
ãããŸã§æœè±¡çãªåé¡ãPrologã«èœãšãã®ã¯çžåœã«é£ããâŠ
ã²ãã£ãšãããšãã¢ããªã³ã°ãæ¢ã«ã§ããã®ãâŠïŒïŒ
åããªâŠã人éãæ²¹æãããšéŠ¬é¹¿ã«ãªããªã
ãããããããã颚ã«çµãã®ãã
ããããåé¡ã¯Pythonã§ãæžãããã ãããã©ãé¢çœããªãã
ãããããPrologã®åŒ·ã¿ã ã
Prologã¯æ¢çŽ¢æ¹æ³ã¯èšè¿°ããªããæ·±ãåªå
æ¢çŽ¢ã ããå¹çã¯æªããã©ã
ããªãPrologãåŸæãªè«çåŠè
ã§ãã
以äžã®ç°å¢ãPrologã§æžããè§£ããŠãã ããã
ç°å¢ïŒ
ãã³ãã³ãžãŒãããŸãã
ãã³ãã³ãžãŒã¯ãããã奜ç©ã§ãã
倩äºããããããã¶ãäžãã£ãŠããŸãã
ãã³ãã³ãžãŒã¯å±ããŸããã
ãã³ãã³ãžãŒã®åšãã«ã¯ãç®±ã幟ã€ããããŸãã
ã©ããããç®±ãç©ã¿éããŠããã®äžã«ä¹ãã°ãããã«å±ãããã§ããðïŒäžèšã¯ChatGPTã®èšèãã®ãŸãŸïŒ
以äžã¯ãPrologã䜿ã£ãŠãã³ãã³ãžãŒããããã«å±ãããã®ã·ããªãªã衚çŸãã解決ããã³ãŒãã§ãã
ãŸããç°å¢ãå®çŸ©ããŸãã
% ãã³ãã³ãžãŒãšãããã®ç¶æ
ãå®çŸ©
:- dynamic(at/2).
% åæç¶æ
initial_state :-
assert(at(chimpanzee, ground)),
assert(at(banana, ceiling)),
assert(at(box, ground)).
% ç¶æ
ã®å€æŽ
move(chimpanzee, ground, box) :-
retract(at(chimpanzee, ground)),
assert(at(chimpanzee, box)).
stack(box) :-
retract(at(box, ground)),
assert(at(box, stack)).
% ãã³ãã³ãžãŒããããã«å±ããã©ããã確èªããã«ãŒã«
can_reach_banana :-
at(chimpanzee, stack),
at(banana, ceiling).
% è¡åã·ãŒã±ã³ã¹ãå®çŸ©
plan :-
initial_state,
move(chimpanzee, ground, box),
stack(box),
move(chimpanzee, box, stack),
(can_reach_banana -> write('ãã³ãã³ãžãŒã¯ãããã«å±ããŸãã'); write('ãã³ãã³ãžãŒã¯ãããã«å±ããŸãã')).
ãã®Prologããã°ã©ã ã¯ä»¥äžã®æé ã§åäœããŸãã
åæç¶æ ãå®çŸ©ããŸãã
ãã³ãã³ãžãŒãå°é¢ããç®±ã«ç§»åããŸãã
ç®±ãç©ã¿éããŸãã
ãã³ãã³ãžãŒãç®±ã®äžã«ç§»åããŸãã
ãã³ãã³ãžãŒããããã«å±ããã©ããã確èªããŸãã
以äžã®ããã«ããã°ã©ã ãå®è¡ããããšã§ãçµæã確èªã§ããŸãã
?- plan.ãã®ããã°ã©ã ãå®è¡ãããšããã³ãã³ãžãŒããããã«å±ããã©ããã衚瀺ãããŸãã