å½¢å¼ææ³è¨èªAlloyã使ã£ã¦SATåé¡ã解ã
ãã¬ãã¸ã°ã©ãæ¨è«ãã£ã¬ã³ã¸ã§ãå½¢å¼ææ³è¨èªã§ããAlloyãè©ä¾¡ãããã®ã§ç°¡åã«ç´¹ä»ããããã¨æãã
http://alloytools.org/
ããã¬ãã¸ã°ã©ãæ¨è«ãã£ã¬ã³ã¸ã¨ã¯ã解éå¯è½AIã®åºç¤æè¡ãæ¢ç´¢ããç®çã§2018å¹´ã«éå¬ãããã³ã³ãã¹ãã ãã¡ãªã¿ã«ã第2åãä»åº¦éããããã·ã£ã¼ããã¯ãã¼ã ãºã®ãã¾ã ãã®ç´ãã¨ããçç·¨å°èª¬ãé¡æã«ãã¦ããã¼ã ãºãæ¨çããå ´é¢ã¾ã§ã®ãã¼ã¿ãå©ç¨ãããç¯äººããã¦ããã¨ãã¨ãç¯äººã§ããæ ¹æ ã示ããã¨ããæ°çæè¡ã§è¡ããã¨ãæ±ããããã
http://challenge.knowledge-graph.jp/
ã話ãããã¦ãã¾ããã解éå¯è½æ§AIã¨ã説æçAIã¨ãã¯ãæ¨ä»ãã¥ã¼ã¹ã§ã¡ããã¡ããç¾ãã¦ãã¦ããè¨èã§ãããèãããã¨ããã人ãå¤ãã¨æãã人工ç¥è½ã®å¤æãçµæã®æ ¹æ ããã¾ãæ示ã§ãããã©ãã¯ããã¯ã¹ã«ãªããã¡ãªãããéè¦ãªå¤æã§ã®å©ç¨ãèºèºããã¦ãã¾ããã¨ã大ããªæ¥çã®èª²é¡ã¨ãªã£ã¦ãã¾ã£ã¦ãããããã解決ãããã¨ãæ±ãããã¦ããã®ã§ãããç¹ã«ãä»åã®AIãã¼ã ã®ç¶ç¶ã«ã¯ããã®è§£éå¯è½æ§ã¨ãã課é¡ãã²ã¨ã¤ã®ãã¼ãã«ã«ãªã£ã¦ãã¦ãããã解決ããªããã°é£½åãè¿ãã®ã§ã¯ãªããã¨ããè¨ããã¦ããã
ããã¦ã話ãå ã«æ»ãã¦ãã³ã³ãã¹ãã§ã®AIã®æ¨çæè¡ã®ãªãã§ãSATåé¡ã¨Alloyã¨ãã2ã¤ã®é¢ç½ãããã¡ãï¼?ï¼ãè©ä¾¡ãããã®ã§ããã²ç´¹ä»ãããã
ãAlloyã¨ããã¯ãå½¢å¼ææ³è¨èªã®AlloyAnalyzerã®ãã¨ã ãã¾ãæåã«ç°¡åã«èª¬æããã¨ãããè¨è¨ããã·ã¹ãã ã«ä¸å ·åããªããã¨ã調ã¹ãããã§ãã£ãããä¸å ·åãããã°ã©ã®ãããªãã°ãããããè¦ã¤ãããã¢ãã«æ¤æ»ã¨ããé åã§ä¸»ã«ä½¿ããã¦ããã*1ä¸ããã«ã¼ã«ã¨ç¶æ ã«é¢ããäºå®ã使ã£ã¦ãã«ã¼ã«ã®éã«çç¾ããããã©ããããããã¢ã¯ã·ã§ã³ãã«ã¼ã«ã«æ´åãã¦ãããããã§ãã¯ããããã½ããã¦ã§ã¢ã§ããã
ããã¨ãã°ãä½ãããã°ã©ã ãæ¸ãããããããããªã±ã¼ã¹ãæ³å®ãã¦ããã°ããªãããã¹ãããããã¨ã¯ã誰ã§ãè¡ãã¨ã¯æããããã°ã©ã ã ãã§ãªããä½ãã®æ¥åã«ã¼ã«ã§ãã£ãããã»ãã¥ãªãã£ä¸ã®ã«ã¼ã«ã§ããããä½ãããããã®ã«ã¼ã«ãçå®ããæã«ã¯ããã®ã«ã¼ã«å士ãçç¾ããªããã¨ãç©´ããªããã調ã¹ããã¨ã¯å½ããåã«è¡ããã¨ã§ãããé常ã¯ãããã¤ãã®æ°å¤ããã¼ã¿ãæ³å®ãã¦ä»£å ¥ããåé¡ããªããã¨ããã§ãã¯ããããå½¢å¼ææ³ãã¢ãã«æ¤æ»ã§ã¯ãã®ã«ã¼ã«èªä½ãè«çå¦ã®è¨èã§æ¸ã表ãã¦ããã§ãã¯ãããã¨ããèãæ¹ããããç¾å¨ã§ã¯ãã«ã¼ã«ã«æ¯é ããã対象ã¨ãã¦ãããã°ã©ã 以å¤ã«ãæ¤æ»å¯¾è±¡ã¨ãªãäºä¾ãããã社å æ¥åãé路交éã§ããã対象ã¨ãªããæ°çè«çã®å½¢ã§ã«ã¼ã«ãæ¸ããã¨ã§ãæ確ã§å³å¯ãªè¨è¨ãç®æãããã«å©ç¨ããã¦ããã®ã§ããã
ãå ·ä½çã«ãè«çããã§ãã¯ããã¨ã¯ã©ããããã¨ãããã³ã³ãã¹ãã®è³æã®ä¾ã§è¦ã¦ã¿ãããã¨ãã°ã表ã®ããã«2人ã®äººç©ããã¦ã人ã¯èª°ãã殺ããã¨ãã§ãããã¾çæ¹ã®ã¿æ»ãã§ããç¶æ³ã¨ããããããã§ã¯ãåå¨ãã対象ãæ¯é ããè«çã観測ãããäºå®ã®3è¦ç´ ã«åãã¦ããã§ãã¯ããããã¨ãæ¸ãããã®ç¶æ³ä¸ã§ã®æ´åå¯è½ãªç¶æ³ãæ¢ç´¢ãããã
æ§æ | å ·ä½ | Alloyå½¢å¼ |
---|---|---|
対象 | ãã人ç©AãBããã | abstract sig Person { kill : this -> Person} one sig A,B extends Person {} |
è«ç | 人ã¯æ®ºãããã¨æ»ã¬ | pred dead[q:Person] { some Person.kill.q} |
äºå® | Aã¯çãã¦ãã Bã¯æ»ãã§ãã |
fact{ dead[B] not dead[A] } |
以ä¸ã®æ§æããAlloyã®ã¹ã¯ãªããã«èµ·ããã¨æ¬¡ã®ããã«ãªããä¸ã«æ¸ãããã¨ãããã®ã¾ã¾æ¸ãã ãã§ãåãã
github.com
abstract sig Person { kill : this -> Person} one sig A,B extends Person {} pred dead[q:Person] { some Person.kill.q} fact{ dead[B] not dead[A] } pred show {} run show
æå¾ã®2è¡ã¯ã表示ç¨ã®ãã¾ããªãã
å®è¡ãããã¨ã§ããã®ã«ã¼ã«ã¨è¦³æ¸¬äºå®ããå¯è½ãªç¶æ ããã¹ã¦åºåãããã
ä¾ãèããã ãã ã¨ãAãBã殺ããã¨ããä¸çªå·¦ã®ã±ã¼ã¹ãããªãããã«æãããdead[q:Person]ã®å®ç¾©ãè¦ãéããèªåèªèº«ã殺ãç¶æ³ãæé¤ããã¦ããªããã¤ã¾ããï¼ç¡çãã解éããã¨ï¼ãBã®èªæ®ºã«AãååãããããBãèªæ®ºãããã®2ã¤ã®è§£ã¾ã§è«çä¸ã¯å¯è½ãªè§£ã¨ãã¦æ示ããããå°ãããã¨ãããä¾ãããããªããããã®ããã«æ¤è¨¼ãããã«ã¼ã«ã¨äºå®ãè¨è¿°ãã¦ãèãã¦ãããã¨ã®æ¼ãããªãããç¶²ç¾ çã«èª¿ã¹ä¸ãããã¨ã§ãã«ã¼ã«ã®çç¾ãæ¼ãããã§ãã¯ããã®ã§ãããã¡ãªã¿ã«ãã³ã³ãã¹ãã§ã¯ãç»å ´äººç©ã®æå¨ã移åã®æ å ±ï¼ã¢ãªãã¤ï¼ã¨æ®ºå®³æ¹æ³ããã«ã¼ã«ã¨ãã¦è¨è¿°ããAlloyãå¯è½ãªç¯è¡ç¶æ³ãæ¢ãåºããã¨ã§ãç¯äººãç¹å®ãã¦ããã
ããããããå®éã®æ¥åã£ã½ã話ã ã¨ãã¬ã³ã¿ã«ã·ã¹ãã ãªã©ãè¯ãä¾ã«æããããã¨ãã°ã次ã®ãããªã¬ã³ã¿ã«ã·ã¹ãã ãèããã¨ãããã
ã¬ã³ã¿ã«ã·ã¹ãã ã®æ¡ä»¶
ã»å
¥ä¼ã¯æ人ãã§ããã
ã»å
¥ä¼ããã¨ä¼å¡ã«ãªãã
ã»ä¼å¡ã«ãªãã¨ãå³æ¸ãåããããã
ã»ä¼å¡ã¯å¸æããã°éä¼ã§ããã
æ®éã«æ¥åã¨ãã¦åãããã ãããã®ã·ã¹ãã ã§ã¯ãä¼å¡ã¯å³æ¸ãåããã¾ã¾éä¼ã§ãã¦ãã¾ãã®ã§ã ã¢ãã« ï¼æ¥åï¼ ã®ä¸åã ãã»ãã«ããå®éã«ä½¿ããã¦ããä¾ã¯å°ãªãã調ã¹ã¦ã¿ãã¨ãééã·ã¹ãã ã§ã®å©ç¨*2ããã£ãããã¤ã¢ã°ã©ã ï¼æå»è¡¨ï¼ã¨ä¾µå ¥ãã¼ã ãè¨è¨ããã®ã¯ä¸è¦å´ã ãããã人身äºæ ãçºçãã¦ãã¾ãã°ããã¤ã¢ãç·æ¥ã§æ¸ãç´ãã¦ããã§ãã¯ããªããã°ãããªãã®ã§ãæ©æ¢°çã«è¡ããã¨ã®ãã¼ãºãããã®ã ããã
ãã®ããã«ãå½¢å¼ææ³ãã¢ãã«æ¤æ»ã®ç¥èã¨ãAlloyãªã©ã®ãããªè¨èªã使ããã¨ã§ãITã·ã¹ãã ãæ¥åã·ã¹ãã ãæ½è±¡åãã¦ãå³å¯ã«æ¤è¨¼ãããã¨ãã§ãããæ¨ä»ã§ã¯ãã³ã³ãã©ã¤ã¢ã³ã¹å¨ãã®ç£æ»ã«ã¼ã«ãæ³æãªã©å¤æééãã§ã®äºæ
ãèµ·ãããªãã±ã¼ã¹ã§ã確çãã¼ã¹ã®æ·±å±¤å¦ç¿ããã«ã¼ã«ãã¼ã¹ã®æ¹æ³ãåãå
¥ãããããã¨ããããæå¾
ãé«ãã
ãä»åç´¹ä»ããAlloyèªä½ã¯ãç¹å®ã®å±¤ã®äººãã¡ã«ã¯ããç¥ããã¦ãããã®ã ã¨æãã®ã§ãããã§ã¯Alloyãå½¢å¼ææ³ã使ããªã人ã«ä½ãã§ããã®ãã¨ãããã¨ã ãä¼ãããã¨ã«å°å¿µãããããçµæ§èãã£ããããããªããé¡ä¼¼ã®è¨èªãããã¤ãããã®ã§ãèå³ããã£ãã調ã¹ã¦ã¿ã¦ã»ããã
*1:ã·ã¹ãã ã®ä»æ§ãæ¬ä¼¼ã³ã¼ãã«æ¸ã表ããã¨ã§ãAlloyããã®ã·ã¹ãã ãè«ççã«æ£ããããæ¤è¨¼ããããã·ã¹ãã ãå¯è½ãªç¶æ ãï¼å°ã¹ã³ã¼ã仮説â»ã®ãã¨ã§ï¼ç¶²ç¾ çã«èª¿ã¹ä¸ãã¦ããããã¢ãã«æ¤æ»æè¡ã®ã²ã¨ã¤ã§ããã
*2:è¡çªåé¿ã®ããã®æ¡ä»¶ï¼è«çå¼ï¼ â ä»»æã®ç¸ç°ãªãï¼ã¤ã®åè»ã¯åæå»ã«åç·è·¯åºéã«ããªããã¤ã¢è¨è¨ã«ãªã£ã¦ãããã¨ã®æ¤æ»ã https://www.ipa.go.jp/files/000005272.pdf â¡å符ãæããªã客ããé§ æ§å ã®æ¹æå ã¨ãªã¢ã«å ¥ããªãæ§é ã«ãªã£ã¦ãããã®æ¤æ»ã