1ã¤åã®ãæªå±±ç¨ã¡ã¢ãã§æ¸ãããã¨ã«è¿½å ãã ããç¨èªã®æå³ãç¥ã£ã¦ããã°ãåç¬ã§èªããã¨ã³ããªã¼ã®ã¤ããï¼ï¼ï¼ã
æ¡ä»¶Pããã¼ã«ä»£æ°ã®ã¡ã³ãã¼ã ã¨æã£ã¦ãå®è¡æEã®ã»ããKleene代æ°ã§å®å¼åãããã¨ããã¢ããã¼ããããã
ãããå°ã説æãã¦ã¿ã¾ãã
ifãwhileã§ä½¿ãæ¡ä»¶ã®å ¨ä½ããã¼ã«ä»£æ°Bã ã¨æã£ã¦ãå®è¡æï¼ã³ãã³ãï¼ã®å ¨ä½ã¯ã¯ãªã¼ã代æ°*1Kã ã¨æãã¾ãããã¼ã«ä»£æ°ã®æ¼ç®â§ãâ¨ãÂ¬ã¯æ®éã«å®ç¾©ããã¯ãªã¼ã代æ°ã¯ãx;y ãé æ¬¡å®è¡ãx + y ãxã¨yã®ã©ã¡ãããå®è¡ãããï¼ãããã£ã¦ã両æ¹ã®ã±ã¼ã¹ãèããï¼ãx* ã¯xãä½åã(0éã§ãOKï¼ç¹°ãè¿ãå®è¡ã ã¨å®ç¾©ãã¾ãã
Bã®ã¡ã³ãã¼ã§ããæ¡ä»¶pã¯ãã¬ã¼ãï¼guardï¼ã¨ãã¦Kã®ã¡ã³ãã¼ã«ä½ç¨ããã¨èãã¾ããã¬ã¼ãã¨ã¯ãå®è¡ã«å
ç«ã¡ãã§ãã¯ãããæ¡ä»¶ã§ãã¬ã¼ãæ¡ä»¶ãçã§ãªãã¨ãã¯ãå®è¡ã䏿ï¼abortï¼ããã¾ããã¤ã¾ããã¬ã¼ãä»ãæï¼guarded statement/commandï¼p.x ã¯ãif(p) then x else Abort
ã®ãã¨ãAbortã¯Nopï¼ä½ãããªããSkipã¨ãæ¸ãï¼ã¨ã¯éãã¾ãããæ³¨æï¼ ææä¸å¯è½ãªä¾å¤ã¿ãããªããã ã¨æã£ã¦ãã ããã
ãã¼ã«ä»£æ°ãã¬ã¼ãã¨ãã¦ä½ç¨ãã¦ããã¯ãªã¼ã代æ°ãâãã¹ãä»ãã¯ãªã¼ã代æ°âï¼Kleene algebra with test; ç¥ç§°KATï¼ã¨å¼ã³ã¾ããDexter Kozenã®å®ç¾©ã§ã¯ãBãKã®é¨åéåã§ãâ§ã;ã§ãâ¨ã+ã§å®ç¾ãããããã«ãªã£ã¦ãã¾ããæ¨ä¸ããï¼å¤æ¾¤ããã®è«æ(PDF)ã§ã¯ããé¨åéåã§ãããã¨ã¯æ¬è³ªã§ã¯ãªããã¨ããã³ã¡ã³ãããã£ãã¨è¨æ¶ãã¦ã¾ãããé¨åéåã®ã»ããè¨ç®ã¯ç°¡åã§ãããããã«ãã¦ããæ¡ä»¶pãã³ãã³ãã¨èãããã®ãi(p)ï¼i(p) = pã§ãããï¼ã¨ããã¨ãp.x = i(p);x ã¨ããçå¼ãæç«ãã¾ãã
p.x ã®è§£éï¼if(p) then x else Abort
ï¼ã«åºã¥ãã¨ãif(p) then x else y
ã¯ãp.x + (¬p).y ã¨æ¸ãã¾ããwhile(p) {x}
ããä¸ååã®å®è¡ãå¤ã«åºãã¦æ¸ãæããã¨ãif(p) then {x; while (p){x}} else Nop
ã§ãããwhile(p) {x}
ãw(p, x)ã¨ç¥è¨ãã¦ãKATã®è¨èã§æ¸ãã°ï¼
w(p, x) = p.(x;w(p, x)) + (¬p).1
ããã¯ãw(p, x)ãæªç¥æ°ã¨ããå帰æ¹ç¨å¼ã§ããw(p, x)ãåã³Xã¨æ¸ãæãã¦ãæ´çããã¨ï¼
X = (i(p);x);X + (¬p)
ããã¯ãã¯ãªã¼ã代æ°ã®ãªãã®ç·å½¢å帰æ¹ç¨å¼ãªã®ã§ãã¯ãªã¼ãã¹ã¿ã¼ãç¨ãã¦è§£ãã¦ãX = w(p, x) = (i(p);x)*(¬p)ãããã§ãwhileæã®purely algebraicãªè¡¨ç¾ãå¾ããã¾ããã
ãªãã¦ã¨ã¬ã¬ã³ããªãã§ããããã£ã¦ããã³ãã«ï¼ 確ãã«ã¨ã¬ã¬ã³ããªãã§ããã©ãã¨ã¬ã¬ã³ãããã¦èå¼±ãªæãããã¾ããã¾ããæ¡ä»¶ã®å ¨ä½ããã¼ã«ä»£æ°ã«ãªããã©ããããããããp + ¬p = 1 ãæç«ããããã«ã¯ãpãtotally definedãããªãã¨ãããªããã©ãããã¯ä¿è¨¼ãã«ããã§ãããããã¨ãå ã®ç·å½¢å帰æ¹ç¨å¼ã§ãp = 1ï¼æ£ç¢ºã«ã¯ãp = true, i(p) = 1ï¼ã¨ãã¦ã¿ãã¨ï¼
X = x;X
ã«ãªã£ã¦ãã¾ããéèªæãªè§£ã¯å¾ããã¾ãããããã¯ãç¡éã«ã¼ãã¯ã¯ãªã¼ã代æ°ã®ãªãã«é©åãªè¡¨ç¾ãæããªãããã§ãã
ãç¡éã«ã¼ããªãã¦æå³ãªãããç¸æã«ããªããã°ãããããªãããã¨ããæè¦ã¯å´ä¸ããªã¢ã¯ãã£ãã»ã·ã¹ãã ãèãã¦ã¿ãã°ãç¡éã«ã¼ããããªãã¨æå³ããªããã¨ãããã®ã§ãããã
ã¨ããããã§ãç¡éã«ã¼ããå«ãã¦whileæãè§£éã§ãã¦ãã§ãããã¨ãªããããã§ããªãalgebraicãªæå³è«ã叿ãªã®ã§ããæ¥µéæä½ãå ¥ãã®ã§ãå®åæ§ã®ãããªãalgebraicã§ãªãæ¦å¿µãå¿ é ã«ãªãã®ãããããªããã©ã
*1:Kleeneãã«ã¿ã«ãæ¸ããããã¨ã«ãã¾ããã