KAOS (96) 過程ベースの仕様 (4.4.2-8)

ここでは,原書にある例を幾つか見る.

要求1

列車のドアは,プラットフォーム(駅)間では,閉まっていなければならない.但し,緊急事態のためにプラットフォーム間で停止している間は除く.

対応する様相論理記述

∀tr: Train, pl: Platform

(●At(tr, pl) ∧ ¬At(tr, pl) ⇒ tr.Doors = ‘closed’ W [At(tr, next(pl))  ∨  Alarm  (tr)  ∧ ¬Moving(tr)])

「一つ前ではプラットフォームにいるが,いまはいない」というのが条件部分である.このとき,列車のドアは,「閉まっている.それは,列車が次の駅に到着するか,停止してアラームがあるときまで続く」というのが,この文の解釈である.

最初の束縛変数の定義部分(∀tr: Train, pl: Platform)は,これまで説明していない.集合の要素と捉えてもよいし,なじみの抽象データ型とインスタンスというとらえ方でも良い.いずれ説明したい.trというのはある列車を,plはあるプラットフォーム(駅)を示している.いま全称限量子で束縛しているので,一つ前に駅にいて,いまはその駅にいない列車という条件になっている.ある列車を考えたときに,全ての駅に同時に存在することはできないので,「前に」ある駅にいた列車がいまはいないという制約が,●At(tr,pl)の部分である.●で十分かは,議論があるだろうが,何らかの制約は必要になる.

要求2

列車は,次のプラットフォームに5分以内に到着しなくてはならない.

対応する様相論理記述

∀tr: Train, pl:Platform (At(tr, pl) ⇒ ◇≤5m At(tr, next(pl))

≤5mという記述法は,始めて出てきている.◇は,いつか生じるということである.いつかというのは,あまりにも漠としているので,制約を加えている.時間(間隔)制約を書くときには,比較的よく見る記法となる.論理的な取扱に関して,実践的な方法はすくない 1.ここでは,あくまで要求としてどう表現するかというレベルで考える.

次回も引き続き原書の例について考える.

(nil)

Notes:

  1. 分野としては,時間(間隔)代数(Interval Algebra),時間(間隔)時相論理(Interval Temporal Logic, ITL)がある.発展形としては,duration calculiがある.