モジュールのキーワードとか構文

descriptionモジュールとterminologyモジュールにするか。モジュール名・名前空間があるが、description〈desc〉とterminology〈term〉は異なる名前空間〈名前コンテンナ〉。

description TransitionSystem

signture RightTransitionSystem within (C in MonCAT) {
  sort A
  sort S
  operation t: S×A → S
}

signature DetTransitionSystem := TransitionSystem within Set
signature ParTransitionSystem := TransitionSystem within Partial
signature NonDetTransitionSystem := TransitionSystem within NonDet

continue
terminology TransitionSystem

vocabulary TransitionSystem for module TransitionSystem {
  RightTransitionSystem
  RightTransitionSystem.A
  RightTransitionSystem.S
  RightTransitionSystem.t
  DetTransitionSystem
  ParTransitionSystem
  NonDetTransitionSystem
}

context StdAlias for vocabulary TransitionSystem {
  TransitionSystem := RightTransitionSystem
  TransitionSystem.alphabet := RightTransitionSystem.A
  TransitionSystem.state-space := RightTransitionSystem.S
  TransitionSystem.right-transition := RightTransitionSystem.t
  TransitionSystem.transition := RightTransitionSystem.t
}

continue

拡張子を .desc, .term にしようかな。上の例だと、

  • TransitionSystem.desc
  • TransitionSystem.term

名前空間構造が非常に重要。パッケージ=プロジェクトはグローバルなURIを付ける。リビジョン管理システムのコミットはグローバル・コンテントIDになる。コンテントIDは、コンテント・アクセス・ストレージに保存される。プロジェクト・コンテントIDの下に、名前空間ツリーをぶら下げる。名前空間は物理的存在にネーミングしているが、デノテーションは抽象的概念。