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

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

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

参照用 記事

ストリング図のテキスト化は何が大変か?

昨日の記事「ストリング図のテキスト化」で、「テキスト表示を使って、オペラッド結合の記述や計算をするのは、やる前に気力が萎える」と言いました。つまり、大変なんです。大変でやる気になれないのですが、でもやらざるを得ないでしょう -- 低コストの情報伝達手段がテキスト化する以外にないので。

実際のテキスト化を実行する前に、「テキスト化の大変な部分はどこなのか?」を明らかにしておくのは無駄ではないでしょう。「ここが大変」と理解した上で覚悟を決めよう、ってことです。

内容:

絵による結合の説明

穴があいたキャンバスを考えます。キャンバスには模様(ストリング図)が描いてあっても何も描いてなくてもいいです。キャンバスと穴の形は任意ですが、丸(円板)と矩形がよく使われます。穴あきキャンバスで比喩される概念はオペラッド〈複圏〉のオペレーション〈オペレーター | 複射〉ですが、今はオペラッドの知識は不要です。興味があれば次の記事を参照してください。

穴あきキャンバスの穴に、別な(同じときもある)穴あきキャンバス(穴がないときもある)をはめ込む操作をオペラッド結合〈operadic composition〉と呼びます。「オペラッド結合」という言葉を使いますが、はめ込む操作に名前を付けたと思っておけばいいです。

オペラッド結合の説明図として、昨日の記事で例題に使ったスピヴァックの絵*1を挙げます。

この説明図では、キャンバス(+描かれているワイヤー)全体に付けた名前 $`\phi_1, \phi_2, \psi`$ 以外に名前は登場しません。ワイヤーや穴に名前/番号は付けていません。それでもオペラッド結合の説明になっています。

もうひとつオペラッド結合の説明図として、Wikipedia項目 Operad -- "Little something" operads の絵も挙げます。

こちらの絵では、キャンバス(形は丸で白紙)ごとに穴の番号をふっています。オペラッド結合の結果はイコールの右ですが、穴の番号はリナンバリング〈ふり直し〉されています。例えば、中央の列の上から二番目のキャンバスの穴 1, 2, 3 は、結合結果の穴 3, 4, 5 になります。もとの番号そのままだと、番号のかち合い〈コンフリクト〉が置きてしまうからです。

オペラッド結合ではないですが、“ある種の結合”を説明する別の絵も紹介します*2

パッと見ただけでは分かりにくいでしょう。白丸記号 $`\circ`$ は結合の記号で、模様が描かれた四角いキャンバスを結合します。白丸記号の左のキャンバスを上に、白丸記号の右のキャンバスを下に配置してピッタリとくっつけることが結合です。結合結果では、接着部分の境界線は消し去ります。上下左右の約束事を知らないと分かりにくいですが、その約束を知っていれば意味は明白でしょう。

直示参照と名前参照

もし僕が(物理的実体としての)ホワイトボードに絵を描いてオペラッド結合の説明をするなら、「このキャンバスのこの穴にあっちのキャンバスをはめ込む」といった表現をするでしょう。ここで使われている「この」「あっち」などは直示表現〈ダイクシス | deixis〉です。直示表現は、その発話がされた現場における状況(例えばどこを指さしているか)がないと意味不明な表現です。場所やモノに対する直示表現には、「ここ」「あそこ」「これ」「あれ」などがあります。

目の前に説明用の絵がない、あるいは絵があっても直示表現は一切使えないとしましょう。そのときどうすればいいでしょうか? 絵の各部に名前(番号も含む)を付けて、付けた名前による参照で説明するしかありません。

直示表現による参照を直示参照、名前(番号も含む)による参照を名前参照識別子参照〉と呼ぶことにします。この言葉を使うと、ストリング図/穴あきストリング図をテキスト化するとき何が必要か、何が大変かを的確に言えます -- テキストでは、直示参照が使えない/すべてを名前参照にする必要がある

名前参照の準備

昨日の記事で紹介したアーディ〈Lucien Hardy〉のテキスト化手法*3では、ノードには名前、ワイヤーには番号を付けておく必要があります。

スピヴァックの絵に対しても、ワイヤーと穴に名前を割り当てる必要がありました。

ワイヤーに付くラベルとしては、識別目的の名前(番号含む)以外に型ラベルがあります。すべてのワイヤーが同じ型ラベルを持つとき(シングルソートという)は、型ラベルを省略できますが、それでもテキスト化のための識別ラベル=名前は必要です。

テキスト化に先立って、次のような名付けの作業をします。以下の「名前」は番号も含みます。

  • キャンバス(描いてある模様も含む)に名前を付ける。
  • キャンバスの穴に名前を付ける。
  • キャンバスの穴ではないノードにも名前を付ける。
  • ワイヤーに名前を付ける。

名前の操作と管理

最初の節で、オペラッド結合(はめ込み)と縦に並べる結合(縦結合と呼ぶ)を紹介しました。他に、キャンバスを横に並べてくっつける結合(横結合と呼ぶ)もあります。テキスト表現では、これら各種結合の計算過程と計算結果も名前参照で記述しなくてはなりません。

ラムダ計算や論理において、自由変数と束縛変数の区別が重要ですが、ストリング図/穴あきストリング図のテキスト表現内の名前にも、自由出現と束縛出現があります。それぞれの名前にはスコープがあります。新しい束縛や置換をすると、自由・束縛の別やスコープが変化します。このとき厄介なのは、名前のかち合いや意図せぬ束縛が生じることです。トラブルが起きないようにするには、適切なリネーム(アルファ変換ともいう)が必要です。最初に付けた名前は、各種結合の計算過程において頻繁にリネームされます。

最初の名付け、計算過程でのリネームは、やってみると思いのほか大変です。ストリング図/穴あきストリング図のテキスト化とテキストによる計算で「何が大変か?」というと、それは名前の操作と管理です。テキスト化の覚悟を決めるとは、名前と戦う覚悟を決めることです。僕はまだ覚悟が決まってないけど ‥‥

*1:https://math.mit.edu/~dspivak/informatics/talks/WD-IntroductoryTalk.pdf よりコピー

*2:https://arxiv.org/abs/1502.06845 よりコピー

*3:アーディが始めたという意味ではありません。