Alloy本翻訳のレビュワー募集記事ã§ãéå»ã«èªåããããã£ãã®ããºã«ããAlloyã§è§£ããè¨äºãåç
§ããã®ã§ããâ¦
åèï¼
ä»è¦ç´ãã¨ããªããã¤ãã¤ãã
ç¹ã«ã3人ã®åãè¦æãã®ã«ããã¡ãã¡3åã³ãã³ãèµ°ãããªãã¨ãããªãã®ãããµãã
ã¨ãããã¨ã§ãæ¸ãç´ãã¦ã¿ã¾ããã
å
容ã®è©³ç´°ã¯ã³ã¡ã³ãè¦ã¦ãã ããã
-- ããã£ã one sig FootRace { -- é ä½ã®é å runner: seq Person } { -- ãã¹ã¦ã®äººã«é ä½ã決ã¾ã runner in Int one -> Person } -- ä¸éãäºéãä¸éã®å®£è¨ enum Person { Ichiro, Jiro, Saburo } -- ããã¤ããä¸äºº one sig Liar in Person {} -- é ä½ fun rank (p: Person): Int { FootRace.runner.idxOf[p] } -- ãåã¯ä¸çªãããªãã pred word1(p: Person) { not p in Liar iff p.rank != 0 } -- ãåã¯ä¸çªã ã pred word2(p: Person) { not p in Liar iff p.rank = 0 } --ãåã¯äºçªã ã pred word3(p: Person) { not p in Liar iff p.rank = 1 } -- 誰ãåãã¤ããï¼ pred whoIsLiar { -- ä¸éã word1 ãçºè¨ Ichiro.word1 -- äºéã word2 ãçºè¨ Jiro.word2 -- ä¸éã word3 ãçºè¨ Saburo.word3 } run whoIsLiar
ãããAlloyã®ãã¼ã¯ã¼ãè²ã¥ããããæ¥ãæ¥ãªãããªâ¦
ã¦ãªæãã§ãå®è¡çµæã®ã¹ã¯ãªã¼ã³ã·ã§ããã