ãã¡ã¤ã³ä»ãã¯ãªã¼ã代æ°ãAlloyã§
ä¹ ã ããã¦ãã¯ã¦ãªã®æ¸ãæ¹ãå¿ãã¦ãã¾ãã¾ããã
ãã¦ï¼è絡ãªãï¼ï¼
ä¸è¨ã®è¨äºãä»æ´èªãã ã®ã§ãã*1ãããããç§ããæãã¹ãä»ãã¯ãªã¼ã代æ°â¦ã®æ¡å¼µã®ãã¡ã¤ã³ä»ãã¯ãªã¼ã代æ°ï¼Kleene Algebra with Domain, KADï¼ãAlloyã§æ¸ãã¦ã¿ããã¨ãããã¾ãã¦ã
cf. [cs/0310054] Kleene algebra with domain -- arXiv
GitHubã«ç½®ãã¦ããã®ã§ãã¨ãããããªã³ã¯è²¼ã£ã¨ãã¾ãã
ãã®ã¢ãã«ã§ã¯ãã¯ãªã¼ã代æ°ã¯ã·ã°ããã£Propä¸ã®2é
é¢ä¿ Prop->Prop ã§è¡¨ç¾ãã¦ãã¦ããã¼ã«å¤ã¯Propã®éåã§ãä¹æ³ã¯ãããçµåãè«çç©ã¯éåç©ã§æ¸ãã¦ã¾ããããã¨ãã°ã
(pâ§q)ã»f = pã»(qã»f)
ã¯
(p & q).toKA.f = p.toKA.(q.toKA).f
ã¨æ¸ãã¦ï¼toKAã¯ãã¼ã«ãã¯ãªã¼ã代æ°ã«æã£ã¦ãããã¾ããªãï¼ããããªâã¢ãµã¼ã·ã§ã³ãæ¸ãã¦ãã£ã¦ãåä¾ã¯åºãªãããã«ã¯ãªã£ã¦ããã¾ãã
def_and: check { all p, q: set Prop, f: Prop->Prop { (p & q).toKA.f = p.toKA.(q.toKA).f } } for 10
以ä¸ãã»ã¨ãã©ã¡ã¢çãªå
容ã§å
·ä½çãªèª¬æãªãã§å¤§å¤ä¸è¦ªåãªã®ã§ããã
æè¿ã¾ãKADãèªåå
ã§ãªãã¤ãã«ãå§ãã¦ã¦ãæ¬å½ã¯ãã£ã¤ã解説æ¸ãããã¨æã£ããã§ããä½ããã¬ããä¸é¨ç´è¦³çã§ãªãã¨ããããã£ãããä»è¦ãã¨ã¤ãã¤ãã ãªã¼ã¨æãã¨ããããã£ããã§ãããã¨ããããã
æ°åãä¹ã£ãã追å ã§ã¾ãæ¸ãããã