このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

[参照用 記事]

一般関手モデル:相対スキーマと相対インスタンス

次の図で使っている“色”に注目してください。

水色のノードとピンクのノードがあります。この色の違いを説明する枠組みを作りたいと思います。

内容:

  1. スピヴァック理論の復習
  2. 相対スキーマ
  3. 相対インスタンス
  4. 特定インスタンス上の相対インスタンスの圏
  5. スキーマにおける“色”の解釈

スピヴァック理論の復習

毎度のことながら、スピヴァックによる関手データモデルのセッティングを復習します。ただし、出てくる言葉に「データベース」という形容詞は付けません。データベース以外でも使うつもりがあるからです。以下の2つの記事に書いた内容の要約です。

Schを“圏の圏”として、ドクトリンと呼びます。ドクトリンの対象 S, T などがスキーマであり、個々のスキーマは圏です。スキーマのあいだの関手 σ:S→T はドクトリンの射(σ∈Mor(Sch))ですが、σをスキーマ準同型射(あるいは単にスキーマ準同型)、スキーマ射などと呼びます。ドクトリンと呼ぶ圏の射が、対象であるスキーマのあいだの準同型射なので注意してください。スキーマ射は、ときにスキーマ変換(schema transform)、スキーマ発展(schema evolution)などとも呼ばれます。

スキーマを具体的に実現するための圏(アンビエント圏)Cを固定して、関手圏 [S, C] を、スキーマS上のインスタンスの圏と呼びます。圏 [S, C] の射は自然変換であり、インスタンスの準同型射と呼びます。[S, C] を InstC[S] とも書きます。Cが了解されているなら、Inst[S] でもかまいません。

対応 S|→Inst[S] は、ドクトリンSch上のインデックス付き圏となります。このインデックス付き圏のグロタンディーク構成(平坦化) ∫(s∈Sch | [s, C]) をInstと書きます。Instはすべてのインスタンスからなる圏で、その射はスキーマ射と(同一スキーマ上の)インスタンスの射の組み合わせです。Instはグロタンディーク構成に伴う標準的な射影を持ちます。この射影を Sch:Inst→Sch とします。インスタンスFに対して、Sch(F) はFのスキーマであり、Sch(f:F→G) は、インスタンスのあいだの射fのスキーマ部分(schema part)となります

相対スキーマ

相対スキーマ(relative schema)とは、単にドクトリンSch内の射 S→T に過ぎません。→ = {・→・} を、2つの異なる対象と恒等射を入れて3つの射からなる圏(図式)として、関手圏(指数) [→, Sch] = C→ を作ると、この関手圏の対象が相対スキーマで、射が相対スキーマの準同型となります。

実際には、すべての相対スキーマを考えるのではなくて、Sを固定して S→T の形の相対スキーマを考えることが多いでしょう。このときは、Sのアンダー圏 S/Sch が相対スキーマの圏となります。さらに、S→T が埋め込みの場合を考えると、SはTの部分圏(S⊆T)と考えてもよいので、圏Sとその拡張になっている圏Tの組 (S, T) が相対スキーマだと定義してもいいでしょう。

Sを固定して考えるときは、相対スキーマ S→T において、Sは基底(ベース)スキーマ、TはS下のスキーマと呼びましょう。「S上」じゃなくて「S下」なのは、アンダー圏を使っているからです。まー、上とか下とかあまり気にしてもしょうがない*1ですけど。

UがT下のスキーマ、TがS下のスキーマのとき、UはS下のスキーマとみなすことができます。これは、S→T→U という系列を考えれば明らかでしょう。S→T は、Uに対する“基底の取り替え”になっています。この場合の基底の取り換えは、引き戻しを使う必要はなくて単に射の結合だけです。

相対インスタンス

TがS下のスキーマ、つまり、j:S→T が相対スキーマのとき、S上のインスタンス F:S→C とT上のインスタンス G:T→C の組み合わせが相対インスタンス(relative instance)だとは、次の条件が成立することです。

  • j;G = F

jが埋め込み S⊆T のときを考えると、Tで定義されたGをSに制限するとFになることです。スキーマSとインスタンスFを固定して相対インスタンスを考えましょう。埋め込みとは限らない一般の場合も含めて j;G = F が成立しているとき、Gを“F下”の、いやっ、やっぱり“上”にしよう*2、F上のインスタンスと呼ぶことにします。Fが基底インスタンスとなり、Gは基底Fを拡張したインスタンスになっています。

特定インスタンス上の相対インスタンスの圏

インスタンス F:S→C を固定して、Fを基底インスタンスとする相対インスタンスの全体はまた圏となります。この圏を Inst/F と書いて、実際に構成してみます。

相対スキーマ j:S→T とインスタンス G:T→C の組が Inst/F の対象であるとは、j;G = F が成立することです。このような (j, G) の全体が |Inst/F| です。j':S→T'、G':T'→C として、F上の相対インスタンス (j, G) からもう1つのインスタンス (j', G') への準同型射を定義します。

まず、2つの相対インスタンスが同じスキーマ上で定義されているとき、G:T→C、H:T→C のケースを考えます。自然変換 α::G⇒H : T→C が、GからHへの無条件の準同型です。G、Hは相対インスタンスだったので、背後に相対スキーマ j:S→T がいて、j;G = F、j;H = F が成立しているとします。すると、(j;α)A = αj(A) で定義される自然変換 j;α は、FからFへの自然変換です。次の条件を満たすときに、αは相対インスタンスの準同型だとします。

  • j;α = idF ::F⇒F :S→C

idFは関手Fの恒等自然変換です。つまり、GとHに基底インスタンスFが含まれていると考えて「αは基底Fを動かさない」ということです。

次により一般に、G:T→C と G':T'→C のあいだの準同型を考えます。インスタンスGとG'のスキーマは異なるかもしれません。また、G、G'にはそれぞれ j:S→T、j':S→T' という相対スキーマが伴い、j;G = j';G' = F が成立しています。スキーマ準同型 ρ:T→T' とインスタンス準同型 α::G⇒ρ*(G') の組が相対インスタンスのあいだの準同型だとは、次の条件が満たされることです。

  1. ρは相対スキーマのあいだの準同型である。つまり、j;ρ = j' :S→T' 。
  2. αは、j;α = idF ::F⇒F :S→C を満たす。

このようにして定義した相対インスタンスのあいだの準同型が、全体として圏をなすことは練習問題です。

以上の定義は、Inst/F の対象と射を手でコツコツ組み立てた感じですが、指数(関手圏)/インデクシング/ファイブレーションを使って一気に構成することもできるでしょう。そうすれば、相対インスタンスの圏が、相対スキーマの圏のうえに拡がっている状況が見やすくなると思います。

スキーマにおける“色”の解釈

相対スキーマと相対インスタンスをもう少し具体化するために、二色に塗り分けられた圏を考えます(実際には、二色塗り分けというよりは部分圏が特定されれば十分ですが)。圏Dが次の構造を持つとします。

  1. Dの対象の集合 |D| が、|D| = |D|B + |D|V と直和に分解されている。
  2. Dの射の集合 Mor(D) が、Mor(D) = Mor(D)B + Mor(D)V と直和に分解されている。
  3. f∈Mor(D)B ならば、dom(f)∈|D|B かつ cod(f)∈|D|B 。

下付き添字のBはベース、Vはバリアブル(可変)のつもりです。最後の条件は、対偶をとれば、dom(f)∈|D|B でないか、または cod(f)∈|D|B でないならば、f∈Mor(D)B ではない(したがって、f∈Mor(D)V)、となります。

相対スキーマが埋め込みになっている状況に限定することにして、|D|B が水色のノード、|D|V がピンクのノードと考えてください。冒頭の絵では、辺(矢印)に色が付いてませんが、辺も彩色することにして、Mor(D)B は水色の辺、Mor(D)V はピンクの辺とします。

圏Dの水色部分、つまり |D|B と Mor(D)B を考えると、これはDの部分圏となりますので、DB とします。埋め込み j:DB→D は相対スキーマを定義します。関手 F:DB→C は基底インスタンスとなります。

特定の基底インスタンス F:DB→C に対する相対インスタンスは、FをD上に拡張した G:D→C となります。基底インスタンスFとは、水色のノードと辺に集合と写像でラベリングすることです。それを拡張した相対インスタンスGとは、ピンクのノードと辺にもラベリングをすることです。水色のラベリングは固定して、ピンクのほうは変化してもいいとすれば、F上の相対インスタンスをたくさん考えることになります。

データベースに戻って考えると、基底インスタンスはドメイン(データ型)の定義であり、その基底の上の相対インスタンスは、特定のドメイン定義(型システム)上に構築されたデータベースインスタンスです。

*1:気にしない、気にしない。

*2:結局、気にしてるじゃん。