色々な例 (適宜追加)

  1. [n] = {1, ..., n} が作る集合・写像の圏
  2. アミダ図の圏と置換(代入ではない)の圏
  3. 1,0を持つ半環係数の行列圏
  4. ラベル付き boxes-and-wires 図の圏 ルシアン・アーディ図〈Lucian Hardy

一般論

  1. インデックス付き圏としてのブール行列圏
  2. 弱いトポスとしてのブール代数付き圏、ハイパードクトリン
  3. オートマトン形式言語理論
  4. {ダガー}?コンパクト閉圏と図式
  5. トレース付きモノイド圏と図式

なめらかさ補題とその周辺

ベクトル場と導分の対応は、可微分補題が鍵だと分かった。

まず、言葉の準備。

  1. {偏}?微分係数
  2. {偏}?導関数
  3. {偏}?微分作用素
  4. 点導分 P, Q
  5. 領域導分 X, Y

対応は、

代数的・公理的 解析的・具体的
点導分 微分係数汎関数
領域導分 微分作用素

古臭いが、

  1. 汎関数: 関数空間から実数
  2. 作用素: 関数空間から関数空間

接ベクトル=点導分なので、接ベクトル場=点導分場。点導分場を Ξ, Θ などで表す。領域微分から点導分場、点導分場から領域微分への対応。

  1. 領域微分 X
  2. 点導分場 Ξ
  3. 成分関数 ξi

逆は、

  1. 成分関数 ξi
  2. 領域微分 Σξii

なめらかさ補題〈smoothness lemma〉

  • 点導分場Θに関して次は同値。
    • Θの成分関数 θi はなめらかである。
    • 作用素 (Θ▷-) はなめらかである。

作用素がなめらかとは、なめらかな関数を渡すとなめらかな関数を返すこと。

記法:

  1. PtDer(U, a) 点aでの点導分の全体 Der(C(U)/R, R)
  2. RgnDer(U) 領域U上の領域導分の全体 Der(C(U)/R, C(U))
  3.  \coprod_{x\in U} PtDer(U, x)
  4. 点導分場 Θ:U→ \coprod_{x\in U} PtDer(U, x)
  5. 領域導分から点導分場 X  \mapsto Ξ、Ξ:U→ \coprod_{x\in U} PtDer(U, x)

ベクトルファミリーと不連続セクション

ベクトルバンドルの手前の概念で、ベクトルファミリーを定義する。

  1. 位相空間の各点にベクトル空間が付いている。
  2. 各ベクトル空間は有限次元ですべて同型(標準的同型ではない!)
  3. 個々のベクトル空間には位相があるが、全体としての位相はない。

ベクトルファミリーのセクションは集合論的に定義できるが、連続性や可微分性はない。そのようなセクションを不連続セクションと呼ぶ。不連続というより、連続性概念がそもそもないのだけど…

同様に、ベクトルファミリーのフレームセクション(フレーム場ともいう)の不連続版も定義できる。

ベクトルファミリーにフレームセクションを選んで固定すると、バンドル位相を入れることができる。他のセクションがこの位相に関して連続/可微分などを議論できるようになる。

点導分のベクトル空間が有限次元で、標準基底を持つことは分かっている。各点ごとに点導分空間と標準基底を割り当てると、ベクトルファミリーとフレーム場ができる。これにより、このベクトルファミリーの不連続セクションの連続性/可微分性を云々できる。

微分性定理:

  • 領域導分Xがあるとき、Xが定義する不連続セクションは∞可微分である。

これを得るには、

  • 点導分のベクトルファミリーに対して、
    • 不連続セクションαがなめらかである ⇔ 作用 α▷f が、なめらかである。

作用Fがなめらかとは、fがなめらかならF(f)もなめらかなこと。また、

  • (α▷f)(a) := (α(a))f

点導分の概念、点導分のベクトルファミリーと、その不連続セクションの概念がないと、証明の意味がわかりにくい。ベクトルファミリーも、フレーム場を任意に選ぶと、ただちにベクトルバンドルになる。

集合のアロー化とパス圏

単なる集合からグラフを作る方法。

  1. 一端アロー化: Aに⊥を加えて、⊥→a (a∈A) をアロー=有向辺 として足す。Aとアローは1:1に対応。
  2. ニ端アロー化: Aに⊥, T を加えて、⊥→a→T (a∈A) をアロー=有向辺 として足す。Aとアローは1:1に対応。
  3. ループ化: ⊥を足すが、⊥→a→⊥ という自己ループを作る。結合可能なアローになる。

これらにパス圏構成をつなげると、集合から圏を作れる。それ以外に、

  1. 離散圏構成 離散グラフ構成から
  2. 余離散圏構成 完全グラフ構成から

ハッセ図とは、痩せた圏=プレ順序集合の生成系=プレゼンテーション=コンピュータッド。

導分ではなくて導分層

本編の 微分はライプニッツ法則に支配されている - 檜山正幸のキマイラ飼育記 (はてなBlog) の拡張として、ベクトル場と関数環の導分の対応がある。

しかし、単なる代数的導分ではどうもうまくいかない。「導分←→ベクトル場」対応ではなくて、「導分層←→ベクトル場」対応だろう。

単に単一の大域的導分があっても、それをジャームに持っていけない。点局所な作用素として、ジャーム相対可換環の導分 CGerm(Rn)→CGerm(Rn) が得られないと、話が進まない。

次の順序で構成が進む。

  1. 導分層
  2. 一点でのストーク(ジャーム空間)の導分
  3. 一点でのストーク(ジャーム空間)からRへの導分
  4. 一点での成分(実数のタプル)

これで、導分層に対して、各点ごとに実数タプルを割り当てることが可能になる。問題はこの割り当てがなめらかか?

記号の使用法を決めておく。

  • X:導分層 X = (VX | V⊆openU)
  • v: ベクトル場、単に U→Rn
  • ベクトル場が決める導分層 Dv
  • 導分が決めるベクトル場 ξX := λa∈U.(ξ(a))

Dとξは:

  • D : CVectField(U) → DER(C(- ⊆U)/R)
  • ξ : DER(C(- ⊆U)/R) → C-1VectField(U)

示すべきは、

  • X = Dv ならば、ξX = v
  • v = ξX ならば、Dv = X

アダマールの補題

アダマール補題ってのがある。

これは、テイラー/マクローリン展開の精密化になっているから、アダマール形式のテイラー/マクローリン展開と言っていいと思う。

アダマール商を作用とみなして、アダマール作用素Hiを次のように定義する。Uは原点のまわりの星状開集合とする。Uは開円板だと思ってもよい。

  • For f∈C(U),
     H_i f := \lambda x\in U. \int_{t=1}^1 (D_i f)(xt) dt

第i方向へのアダマール作用素Hiを第i方向へに偏微分作用素Diと共に使っって、テイラー/マクローリン展開の残余項 R(k) を精密かつ具体的に表示できる。それが、アダマール形式のテイラー/マクローリン展開

*-as-Typesパラダイム

  1. Sets-as-Types, Functions-as-Terms
  2. Algebra-as-Types, Morphisms-as-Terms
  3. Coalgebra-as-Types, Morphisms-as-Terms
  4. Categories-as-Types, Functors-as-Terms
  5. Propositions-as-Types, Proofs-as-Terms

Sets-as-Types と (Co)Algebras-as-Types は、単純型=ソートと構造型〈複雑型〉として説明できる。単純型の圏の上の具象圏(忘却関手付き圏)として構造型が定義できる。忘却関手達のグラフは型階層を与える。

Categories-as-Types は、圏という代数を Algebrs-as-Types で解釈すれば、構造型の一種になるが、通常は 圏=種=型の型と考えて 2-型の理論を展開する。2-型の2-指標をドクトリンと呼ぶ。

Propositions-as-Types は、自然演繹を使う場合とシーケンとを使う場合ではだいぶ違う。2つの定式化の関係をハッキリとすべき。

入れ子になった指標と構成

親子関係で入れ子になった指標=ジニアロジーの書き方はまだ試行錯誤だけど、ともかくも、いくつかの論理的概念の定義を試みる。

3-signature {
 sort LoicalCat

 2-signature {
  /* Cは論理的圏の構造を持った圏
     Cでは、対象定数_Bや指数ベキが意味を持つ。
  */
  sort C in LogicalCat

  signature proposition, 命題, 真偽 {
   p:_1→_B
  }
  signature predicate, 述語, "propositional function", 命題関数 {
   sort X in C
   operation p:X→_B in C
  }

  signature "logical connective", 論理結合子, "truth function", 真理関数 (value n:_1→_N){
   opertion p: _B^n→_B in C
  }
 }
}

法則とは何かを示唆する指標と構成。インデントなしで書いている。

3-signature {
 sort CartCat
2-signature {
 /* Cはデカルト圏 */
 sort C in CartCat

signature PointedMagma {
 sort X in C
 operation m:X×X→X in C
 operation a:_1→X in C
}

constructin LeftUnitLaw from PoitedMagma to predicate {
 X := X
 p := λx∈X.(eq(m(i, x), x))
}

constructin LeftUnitLaw2 from PoitedMagma to proposition {
 p := ∀x∈X.(eq(m(i, x), x))
}

}
}


親子関係で入れ子になった指標や構成の書き方としてダブルギュメも使ってみる。

《3-sort CartCat |
  《2-sort C in CartCat |
    《1-sort X in C, 1-operation m:X×X→X in C, 1-operation a:_1→X in C |
        1-sort X := X in C
        1-operation p:X→_B := λx∈X.(eq(m(i, x), x)) in C
     》
   》
》

大きなラムダ式を含めて、ダブルギュメは何らかの構成の記述で、コンテキスト部がソース指標、ターゲット指標は暗黙に指定される。

キーワード無し構文

備忘録。

kは0以上の整数とする。使う記号。

記号 意味
in アンビエントアビタを示す
from 構成のソース指標
to 構成のターゲット指標
k-σ k-指標
k-γ k-構成
k k-射の宣言
:k k重のコロン
→k k重の矢印
:= 割り当て記号
( ) パラメトライズ
( ) 気休め語〈consolation word〉
{ } ブロック構造

気休め語〈consolation word〉は次の形で使える。

  1. k-σ(fooBar)
  2. k-γ(fooBar)
  3. k(fooBar)
  4. X(fooBar){ } パートのブロック、Xはラテン大文字

項の使い方、ジニアロジー

備忘録。

指標内で項を使ってよい。項は、プロファイルのなかで使える。ただし、当該の宣言文が出現する前に登場した(提供された)基本記号と、メタ指標(指標の指標=親指標)のメタ記号を使って構成される項に限る。

一方で、構成〈construction〉でも項は使える。構成は(原則として)、割り当て文〈assignment statement | 代入文〉しかない。割り当て文の左辺は記号だけなので、項は割り当て文の右辺になる。右辺を割り当て文のボディとも呼ぶ。よって、割り当て文の項はボディ項〈body term〉という。

構成のボディ項は、構成のソース指標が提供する記号と構成のメタ指標の記号の組み合わせになる。

さて、なんらかのモノ(圏論的な実体/スタッフ)、またはモノを表す記号があるとき、その型つけ〈typeing〉は容易ではない。完全な型つけで得られる情報全体を、そのモノ(や記号)のジニアロジー〈系譜 | genealogy〉と呼ぶ。

ジニアロジーは、モノのクラス/指標/アンビエントを、無限の上方まですべて辿ったもの。ジニアロジーは、特定のモノを下端とする代数的ラダーで、代数的セオリーそのものだと言ってもよい。ジニアロジーは、モノに対する構文論・意味論の情報をすべて持っている。

アドホック選択

後で追加修正するかも。

指標の一覧:

名前 提供記号 ひとこと
Magma * 乗法記号使ったマグマ
UnitalMagma *, 1 単位的マグマ
MonoidAste *, 1 モノイド
MonoidPlus +, 0 モノイド
Group *, 1, ~
AbGroupPlus +, 0, - アーベル群
Ring +, 0, -, *, 1 可換とは限らない環
SemiRing +, 0, *, 1 可換とは限らない半環
CommRing +, 0, -, *, 1 可換環

指標の忘却関係

  1. UnitalMagma →Magma
  2. MonoidAste → UnitalMagma
  3. Group → MonoidAste
  4. AbGroupPlus → MonoidPlus
  5. SemiRing → Ring
  6. CommRing → Ring

集合の一覧:

名前 ひとこと
Real 実数
String 文字列
Vect3 3次元数ベクトル
SqMat[n] n次元数正方行列

※ SqMat = square matrix

二項演算子アドホック選択テーブル、指標を選ぶ:

+ *
Real CommRing CommRing
String MonoidPlus UnitalMagma
Vect3 AbGroupPlus Magma
SqMat[n] Ring Ring

※選択テーブル=ルックアップ・テーブル

単項演算子アドホック選択テーブル、指標を選ぶ:

~ -
Real なし CommRing
String なし なし
Vect3 なし AbGroup
SqMat[n] なし Ring

定数のアドホック選択テーブル、指標を選ぶ:

0 1
Real CommRing CommRing
String MonoidPlus UnitalMagma
Vect3 AbGroupPlus なし
SqMat[n] Ring Ring

実装の選択テーブル、指標の実装を選ぶ:

Real String Vect3 SqMat[n]
Magma なし 継承 Vect3Cross なし
UnitalMagma なし StringMult なし なし
MonoidAste なし なし なし なし
MonoidPlus なし StringAdd なし なし
Group なし なし なし なし
AbGroupPlus なし なし Vect3Add なし
Ring 継承 なし なし AqMatRing[n]
SemiRing 継承 なし なし 継承
CommRing RealRing なし なし なし

言葉の整理

あまりにも車輪の再発明凄まじ過ぎて、用法や雰囲気(だけ)が違う同義語が山のようだ。少し整理しておく。

基本レベルとは圏の次元を基準としたレイヤー番号のこと。基本レベルが1の存在物〈スタッフ〉はレイヤー1にいて、存在物の圏論的次元は1。

基本レベル k k-クラス k-インスタンス 圏論的には
0 集合, 型 要素,値, データ 要素 in 0-圏
1 2-型,種,型クラス 型,代数系,クラス実装 対象 in 1-圏
2 3-型,メタ種 1-圏 in 圏の2-圏

注意:

  1. 0-クラスは0-圏なので集合。プレーンな集合とは限らず、直積集合とか指数集合とかかも知れない。
  2. 0-インスタンスは0-クラスの対象なので、集合の要素。値、データだが、タプルデータや関数データもあり得る。
  3. 1-クラスは1-圏なので圏。プレーンな圏とは限らず、直積圏とか関手圏とかかも知れない。
  4. 1-インスタンスは1-クラスの対象なので、圏の対象。集合、構造付き集合、代数系だが、公理を満たす必要があるかも知れない。
  5. 2-クラスは2-圏。プレーンな2-圏とは限らず、直積2-圏とか関手2-圏とかかも知れない。
  6. 2-インスタンスは2-クラスの対象なので、2-圏の対象。圏、構造付き圏、代数圏だが、公理を満たす必要があるかも知れない。

0-インスタンスには、制約を満たす直積集合の要素が許されるから。データベース・レコードは0-インスタンスとなる。

0-インスタンスであるレコードを要素とする集合は0-クラスになる。したがって、データベース・テーブルは1-クラスになる。1-クラスは演算を持ってもいいので、オブジェクト指向クラスは1-クラスになる。オブジェクト指向クラスの1-インスタンスは、オブジェクト・インスタンスとしてのレコード・データである。

代数系、実装/(言語処理)エンジン は同義語だけど、言葉の運用が違う。A:Σ --◇ A' がAのプロファイルだとして:

  • Aは、A'におけるΣ-代数
  • Aは、ΣのA'{値}?エンジン
  • Aは、ΣのA'実装
  • Aは、(Σ, A')-クラスのインスタンス

次の記事を見て、言葉の運用も考えるとよい。

放物線に制約された点のクラス

_R のような下線で始まる語は太字の代替で、固有名詞(特定インスタンスを指す名前)となる。

次元ごとに付けるキーワードは恣意的なので括弧に入れることにした。

1-sinature movable {
 0(sort) S in _Set
 1(mathod) moveBy:S×_R→S in _Set
 2(equation) assco:: for s in S. moveBy(moveBy(s, x), y) = moveBy(s, x+y) : S×_R×_R→S in _Set
 2(equation) unit:: for s in S. moveBy(s, 0) = s : S→S in _Set
}
0-signature parabola {
 0(slot) x in _R
 0(slot) y in _R
 1(constraint) con: x*x = y in _R
}

この2つの指標を組み合わせると、「放物線内に成約された点」のクラスが出来ると思うが、その構造を分析せよ。

一般に内部〈content〉を持つ台対象があり、内部の仕様も指標で書いたものがクラス定義になる。クラス定義を指標の立場から言えば、次元が異なる指標の組み合わせ。0次元指標のクラス(レコード集合)が、1次元指標の台対象(アンビエント圏の対象)を与える状況。

ここでも、対象とそのアロー化リフトである点射〈point morphism〉の関係を使っているような気がする。


アロー化リフトの解説:

n-圏Cを(n+1)圏D内で扱う方法のひとつ。n-圏Cは、内部に0-射からn-射を持つが、それを、外の(n+1)-圏Dの1-射から(n+1)-射に対応させて持ち上げる。キュリアの格上げと呼んでいたテクニック。

アロー化するには、外の(n+1)-圏Dに単位対象が必要。単位対象をIとして、a∈ 0 C を、a~:I→C in D に対応させる。D(I, C) はDのホムシングなのでn-圏だが、ここにCをスッポリと埋め込むと C~⊆D(1, C) となる。

Cの内部構造は、D内にC~として展開されるので、Cの内部構造に言及する必要はなくなる。

型の縦階層と横階層

型階層を考える上で、型を分類する必要がある。

  • 型と種
  • 無構造型(集合)と構造付き型
  • 単純型〈基本型 | 組み込み型〉と複合型〈構成型 | 複雑型〉
  • 全域型と部分型〈制約型〉

型と種は縦階層。縦階層は、オブジェクトレベル、メタレベル、メタメタレベルのような階層で、タワー、ラダーなどと呼ぶ。異なるレベルをプレーンやレイヤーで識別する。階層グラフの辺はレイヤー間を必ずまたぐ。

横階層は、同一のプレーン/レイヤー内でのツリー構造やグラフ構造のこと。階層グラフは同一レイヤーにあるので、レイヤーをまたぐ辺はない。

グラフ形状が同じでも:

縦階層のグラフ(Nは自然数、Rは実数)

 モノイド圏の2圏
 |
 モノイドの圏
/\
N R

縦階層のグラフ

 モノイドの圏
 |
 N
/\
1 3

横階層のグラフ(Cは複素数、2Zは偶数)

 C
 |
 R
/\
N 2Z


横階層の場合でも、階層グラフの辺が何で与えられるか?が違う。

  1. 台集合の埋め込み写像で与えられる。部分型と全域型。
  2. 台集合の射影写像で与えられる。構造付き型の構造を忘れる。

これ以外の階層はうまくいかないことがあるし、この二種を混合するのはマズい。

階層の例:

  1. 図形クラスのクラス階層:点クラス、色付き点クラス、折れ線クラス、多辺形クラス
  2. 数系の包含階層:N⊆Z⊆Q⊆R
  3. 代数系の構造的階層:群、モノイド、半群、マグマ

階層グラフの辺の実体:

  1. 状態空間の射影写像
  2. 台集合の埋め込み写像〈包含写像
  3. 圏の忘却関手 ≒ 指標の埋め込み写像

階層構造を理解するとは、その階層グラフが世界のなかで、どのような形で配置されているかを正確に知ること。また、階層グラフの頂点と辺の実体が何であるかも正確に知ること。