アビタとアビタベース

実体〈entity | thing | stuff〉に対して、そのアビタ(直接的)とアビタベース(間接的)の区別がついてなかったのではないか? アビタは型インスタンスの型クラスと言っていいが、アビタベースはベース型クラスとは違う概念。

  • アビタベース=“指標のターゲット圏”
  • ターゲット圏のアビタがアンビエント

オブジェクト指向との関係で言えば:

  • オブジェクト・インターフェイス=単ソート隠蔽指標=余代数指標
  • オブジェクト・インターフェイスの型クラス=モデル圏
  • オブジェクト・クラス=“オブジェクト・インターフェイスのモデル”=型インスタンス=モデル圏の対象=余代数
  • オブジェクト=オブジェクト・クラスの状態点
  • マルチオブジェクト=オブジェクト・クラスの直積の状態点

クラス継承は、型階層とは分離して考えたほうがいい。継承を型システム内で考えると無様な事になる。継承グラフは、型階層グラフの部分グラフであるが別物、型理論では議論しない、out-of-scope。

Jave 擬似言語
D extends C D inherits C
J extends I J extends C
C implements I C satisfies I, C typeinstanceof I

オブジェクト・クラスCの、直接のアビタである型クラス達を T1, ..., Tk とすると、これは型クラスのk-コスパンとなる。ファイベー積=余極限で、型クラスを加工・構成する。指標側で余極限なので、モデル側では極限になる。

もう一度区別すべき概念:

  • 指標とモデルは違う。
  • 指標は余極限で加工・構成され、モデルは極限で加工・構成される。
  • 指標はモデル圏を定義する。個別モデルを定義しない(タイト意味論では定義するが)。
  • モデル圏の対象は関手である。
  • モデルのアビタとアビタベースは違う。
  • アビタベースはモデルのターゲット圏である。