- [n] = {1, ..., n} が作る集合・写像の圏
- アミダ図の圏と置換(代入ではない)の圏
- 1,0を持つ半環係数の行列圏
- ラベル付き boxes-and-wires 図の圏 ルシアン・アーディ図〈Lucian Hardy〉
一般論
まず、言葉の準備。
対応は、
代数的・公理的 | 解析的・具体的 |
---|---|
点導分 | 微分係数汎関数 |
領域導分 | 微分作用素 |
古臭いが、
接ベクトル=点導分なので、接ベクトル場=点導分場。点導分場を Ξ, Θ などで表す。領域微分から点導分場、点導分場から領域微分への対応。
逆は、
なめらかさ補題〈smoothness lemma〉:
作用素がなめらかとは、なめらかな関数を渡すとなめらかな関数を返すこと。
記法:
ベクトルバンドルの手前の概念で、ベクトルファミリーを定義する。
ベクトルファミリーのセクションは集合論的に定義できるが、連続性や可微分性はない。そのようなセクションを不連続セクションと呼ぶ。不連続というより、連続性概念がそもそもないのだけど…
同様に、ベクトルファミリーのフレームセクション(フレーム場ともいう)の不連続版も定義できる。
ベクトルファミリーにフレームセクションを選んで固定すると、バンドル位相を入れることができる。他のセクションがこの位相に関して連続/可微分などを議論できるようになる。
点導分のベクトル空間が有限次元で、標準基底を持つことは分かっている。各点ごとに点導分空間と標準基底を割り当てると、ベクトルファミリーとフレーム場ができる。これにより、このベクトルファミリーの不連続セクションの連続性/可微分性を云々できる。
可微分性定理:
これを得るには、
作用Fがなめらかとは、fがなめらかならF(f)もなめらかなこと。また、
点導分の概念、点導分のベクトルファミリーと、その不連続セクションの概念がないと、証明の意味がわかりにくい。ベクトルファミリーも、フレーム場を任意に選ぶと、ただちにベクトルバンドルになる。
単なる集合からグラフを作る方法。
これらにパス圏構成をつなげると、集合から圏を作れる。それ以外に、
ハッセ図とは、痩せた圏=プレ順序集合の生成系=プレゼンテーション=コンピュータッド。
本編の 微分はライプニッツ法則に支配されている - 檜山正幸のキマイラ飼育記 (はてなBlog) の拡張として、ベクトル場と関数環の導分の対応がある。
しかし、単なる代数的導分ではどうもうまくいかない。「導分←→ベクトル場」対応ではなくて、「導分層←→ベクトル場」対応だろう。
単に単一の大域的導分があっても、それをジャームに持っていけない。点局所な作用素として、ジャーム相対可換環の導分 C∞Germ(Rn)→C∞Germ(Rn) が得られないと、話が進まない。
次の順序で構成が進む。
これで、導分層に対して、各点ごとに実数タプルを割り当てることが可能になる。問題はこの割り当てがなめらかか?
記号の使用法を決めておく。
Dとξは:
示すべきは、
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 》 》 》
大きなラムダ式を含めて、ダブルギュメは何らかの構成の記述で、コンテキスト部がソース指標、ターゲット指標は暗黙に指定される。
備忘録。
指標内で項を使ってよい。項は、プロファイルのなかで使える。ただし、当該の宣言文が出現する前に登場した(提供された)基本記号と、メタ指標(指標の指標=親指標)のメタ記号を使って構成される項に限る。
一方で、構成〈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 | 可換環 |
指標の忘却関係
集合の一覧:
名前 | ひとこと |
---|---|
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-圏 |
注意:
0-インスタンスには、制約を満たす直積集合の要素が許されるから。データベース・レコードは0-インスタンスとなる。
0-インスタンスであるレコードを要素とする集合は0-クラスになる。したがって、データベース・テーブルは1-クラスになる。1-クラスは演算を持ってもいいので、オブジェクト指向クラスは1-クラスになる。オブジェクト指向クラスの1-インスタンスは、オブジェクト・インスタンスとしてのレコード・データである。
代数系、実装/(言語処理)エンジン は同義語だけど、言葉の運用が違う。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
横階層の場合でも、階層グラフの辺が何で与えられるか?が違う。
これ以外の階層はうまくいかないことがあるし、この二種を混合するのはマズい。
階層の例:
階層グラフの辺の実体:
階層構造を理解するとは、その階層グラフが世界のなかで、どのような形で配置されているかを正確に知ること。また、階層グラフの頂点と辺の実体が何であるかも正確に知ること。