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
continueterminology 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の下に、名前空間ツリーをぶら下げる。名前空間は物理的存在にネーミングしているが、デノテーションは抽象的概念。