Hennessy-Milner logic

Hennessy-Milner logic は、プロセスの性質を表現するための論理式。ちょっと複雑な性質を表現するためには Recursive Hennessy-Milner logic を使うことになる*1。これに関する資料が少ないので一応。 id:syd_syd さんに非常に感謝。
π計算のモデルチェッカには Mobility Workbench(MWB) や Advanced Bisimulation Checker(ABC) があるが、 Recursive Hennessy-Milner logic が使えるのは MWB のみ。*2

例として、"これから先、このプロセスはずっと 'a をしない" みたいな性質は次のように書く。

(max Y(a).( (['x](x#a)) & ([x]Y(a)) & ([t]Y(a)) ) )(a)

これは、 "a でない送信をする、かつ、何かを受信したら次はまたこの論理式を満たす、かつ、τ遷移したら次はまたこの論理式を満たす" と読む感じ。 [t] と はたぶん同じ意味。 max が求めたい不動点が最大不動点であることを表し、 Y(a) の Y がこの論理式の名前、 a が引数である。最後の (a) は Y への実際の引数を表している。

また、"このプロセスはそのうち 'a する" という性質はこんな感じ。

(min Y(a).( (<'x>(x=a)) | (<x>Y(a)) | (<t>Y(a)) ) )(a)

読み方は、"このプロセスは今すぐ 'a をするか、何かを受信したら次にこの論理式を満たすか、τ遷移したら次はこの論理式を満たす" という感じか。

間違ってる可能性もあるのでご注意ください。

  • -

やっぱり間違っていました。コメント欄を参照してください。 id:syd_syd さん、いつもありがとうございます。

*1:Recursive Hennessy-Milner logic が正式名称なのかどうかは知らない。時相論理ってこれのこと?

*2:ABC って Another Bisimulation Checker かと思ってたんだけど、どうやら違うらしい