モノイド閉圏の事例: カリー化の自然性 (続き)

前の記事の続き。後でひとつの記事にまとめるかも。

カーブに沿ったスライディング
  • ΦX,A',Y( (X^□p);f ) = ΦX,A,Y(f);hom(p, Y) : X→hom(A', Y)

左辺のΦの内側:

(X^□p);f : X□A'→Y =
[
 λ(x, a')∈X□A'.( f(x, p(a')) ∈Y)
 ALSO
 λ(x→x', a')∈X□A'.( f(x→x', p(a')) ∈Y)
 OR
 λ(x, a'→a'')∈X□A'.( f(x, p(a'→a'')) ∈Y)
] : X□A'→Y

左辺:

Φ( (X^□p);f ) : X→hom(A', Y)
=
  [
   λ0x∈X.(
     [
       λ0a'∈A'.( f(x, p(a')) ∈Y)
       ALSO
       λ1a'→a''∈A'.( f(x, p(a'→a'')) ∈Y)
     ]  ∈Hom(A', Y)
   )
   ALSO
   λ1x→x'∈X.(
     [
       λ01a'∈A'.( f(x→x', p(a')) ∈Y)
     ] ∈Defm(A', Y))
  ] : X→hom(A', Y)

右辺を計算するにあたって、Φ(f) = F とする。

  • F : X→hom(A, Y)
  • p:A→A'
  • hom(p, Y) : hom(A, Y)→hom(A', Y)

右辺:

F;hom(p, Y)
= F;(λτ∈hom(A, Y).( hom(p, Y)(τ) ))
=
λξ∈X./( hom(p, Y)(τ) / τ = F(ξ) )/
=
λ{x ALSO x→x'}∈X./(
  hom(p, Y)({u ALSO u⇒v})
  /
  {u ALSO u⇒v} = F({x ALSO x→x'})
)/
=
λ{x ALSO x→x'}∈X./(
  [
    λ0u∈hom(A, Y).( p;u ∈Hom(A, Y) )
    ALSO
    λ1u⇒v∈hom(A, Y).( p;;(u⇒v) ∈Defm(A, Y) )
  ]({u ALSO u⇒v})
  /
  {u ALSO u⇒v} = F({x ALSO x→x'})
)/
=
λ{x ALSO x→x'}∈X./(
  {
    ( p;u ∈Hom(A, Y) )
    ALSO
    ( p;;(u⇒v) ∈Defm(A, Y) )
  }
  /
  {u ALSO u⇒v} = F({x ALSO x→x'})
)/
=
λ{x ALSO x→x'}∈X.(
  {
    ( p;F(x) ∈Hom(A, Y) )
    ALSO
    ( p;;(F(x→x')) ∈Defm(A, Y) )
  }
)
=
[
  λ0x∈X.( p;F(x) ∈Hom(A, Y) )
  ALSO
  λ1x→x'∈X.( p;;(F(x→x')) ∈Defm(A, Y) )
]

ここで、次を計算する。

  • For x∈X(0), p;F(x) ∈Hom(A, Y)
F(x)
=
 [
   λ0a∈A.( f(x, a) ∈Y)
    ALSO
   λ1t→t'∈A.( f(x, t→t') ∈Y) /* 都合により t→t' */
 ]  ∈Hom(A, Y)



p;F(x)
= p;(λξ∈A.( F(x)(ξ) )
= λτ∈A'./( F(x)(ξ) / ξ = p(τ) )/
=
λ{a' ALSO a'→a''}∈A'./(
  F(x)({{a ALSO t→t'}})
  / {a ALSO t→t'} = p({a' ALSO a'→a''})
)/
=
λ{a' ALSO a'→a''}∈A'./(
 [
   λ0a∈A.( f(x, a) ∈Y)
    ALSO
   λ1t→t'∈A.( f(x, t→t') ∈Y) /* 都合により t→t' */
 ]({{a ALSO t→t'}})
  / {a ALSO t→t'} = p({a' ALSO a'→a''})
)/
=
λ{a' ALSO a'→a''}∈A'./(
 {
   ( f(x, a) ∈Y)
    ALSO
   ( f(x, t→t') ∈Y)
 }
  / {a ALSO t→t'} = p({a' ALSO a'→a''})
)/
=
λ{a' ALSO a'→a''}∈A'.(
 {
   ( f(x, p(a')) ∈Y)
   ALSO
   ( f(x, p(a'→a'')) ∈Y)
 }
)
=
[
 λ0a'∈A'.( f(x, p(a')) ∈Y)
 ALSO
 λ1a'→a''∈A'.( f(x, p(a'→a'')) ∈Y)
]

さらに次を計算する。

  • For x→x'∈X(1), p;;(F(x→x')) ∈Defm(A, Y)
F(x→x')
=
λ01a∈A.( f(x→x' a) ∈Y)


p;;F(x→x')
=
p;;(λ01a∈A.( f(x→x' a) ∈Y))
=
λ01a'∈A'./(
  ( f(x→x' a) ∈Y)
  /
  a = p(a')
)/
=
λ01a'∈A'./(
  ( f(x→x' a) ∈Y)
  /
  a = p(a')
)/
=
λ01∈A'.( f(x→x' p(a')) ∈Y)

以上の計算を組み合わせれば、左辺=右辺が出る。

次の記事に続く。

モノイド閉圏の事例: カリー化の自然性

続きの記事2つあり。

内容:

記法と設定と法則

 \Lambda^{X,A}_Y を ΦX,A,Y に、\otimes を □ に変える以外は元記事と同じ記号を使う。idA などは、バンプアップ記号'^'を使って A^ などと書く。

  • f:X□A→Y
  • v:X'→X
  • p:A'→A
  • q:Y→Y'
タイトニング
  • ΦX',A,Y( (v□A^);f ) = v;ΦX,A,Y(f) : X'→hom(A, Y)

 \Lambda^{X',A}_Y( (v\otimes id_A);f) =  v;\Lambda^{X,A}_Y(f)

カーブに沿ったスライディング
  • ΦX,A',Y( (X^□p);f ) = ΦX,A,Y(f);hom(p, Y) : X→hom(A', Y)

 \Lambda^{X,A'}_Y( (id_X\otimes p);f ) =  \Lambda^{X,A}_Y(f);[p, Y]


真っすぐなスライディング
  • ΦX,A,Y'( f;q ) = ΦX,A,Y(f);hom(A, q) : X→hom(A,Y')

 \Lambda^{X,A}_{Y'}( f;q ) =  \Lambda^{X,A}_Y(f);[A, q ]

定義の確認

過去記事より、定義を引用する。

カリー化 Φ
Φ:Hom(A□B, C)→Hom(A, hom(B, C)) := λf∈Hom(A□B, C).(
  [
   λ0a∈A.(
     [
       λ0b∈B.( f(a, b) ∈C)
       ALSO
       λ1b→b'∈B.( f(a, b→b') ∈C)
     ]  ∈Hom(B, C)
   )
   ALSO
   λ1a→a'∈A.(
     [
       λ01b∈B.( f(a→a', b) ∈C)
     ] ∈Defm(B, C))
  ] ∈Hom(A, hom(B, C))
)
射のボックス積 f□g
f□g:A□C→B□D :=
[
 λ0(a, c)∈A□C.( (f(a), g(c)) ∈B□D)
 ALSO
 λ1(a→a', c)∈A□C.( (f(a→a'), g(c)) ∈B□D)
 OR
 λ1(a, c→c')∈A□C.( (f(a), g(c→c')) ∈B□D)
]
hom(p, Y), hom(A, q)
hom(p:A'→A, Y):hom(A, Y)→hom(A', Y) :=
[
  λ0u∈hom(A, Y).( p;u ∈Hom(A, Y) )
  ALSO
  λ1u⇒v∈hom(A, Y).( p;;(u⇒v) ∈Defm(A, Y) )
]

hom(A, q:Y→Y'):hom(A, Y)→hom(A, Y') :=
[
  λ0u∈hom(A, Y).( u;q ∈Hom(A, Y) )
  ALSO
  λ1u⇒v∈hom(A, Y).( (u⇒v);;q  ∈Defm(A, Y) )
]

計算

タイトニング
  • ΦX',A,Y( (v□A^);f ) = v;ΦX,A,Y(f) : X'→hom(A, Y)
左辺 =
ΦX',A,Y( (v□A^);f :X'□A→Y) : X'→hom(A, Y) =
[
 λ0x'∈X'.(
   [
     λ0a∈A.( ( (v□A^);f)(x', a) ∈Y)
     ALSO
     λ1a→a'∈A.( ( (v□A^);f)(x', a→a') ∈Y)
   ]  ∈Hom(A, Y)
 )
 ALSO
 λ1x'→x''∈X'.(
   [
     λ01a∈A.( ( (v□A^);f)(x'→x'', a) ∈Y)
   ] ∈Defm(A, Y))
] : X'→hom(A, Y)
=
[
 λ0x'∈X'.(
   [
     λ0a∈A.( f(v(x'), a) ∈Y)
     ALSO
     λ1a→a'∈A.( f(v(x'), a→a') ∈Y)
   ]  ∈Hom(A, Y)
 )
 ALSO
 λ1x'→x''∈X'.(
   [
     λ01a∈A.( f(v(x'→x''), a) ∈Y)
   ] ∈Defm(A, Y))
] : X'→hom(A, Y)

右辺 = v;ΦX,A,Y(f:X□A→Y) :X'→hom(A, Y) を計算するにあたって、ΦX,A,Y(f:X□A→Y) = Φ(f) = F :X→hom(A, Y) と置く。すると、

  • 右辺 = v;F :X'→hom(A, Y)

後半の(α, β, ... とは違う)ギリシャ文字小文字をブロック変数として使う。ブロック変数は説明してないが見当は付くだろう。

  v;F
= v;(λξ∈X.F(ξ))
= λξ'∈X'./( F(ξ) / ξ = v(ξ') )/

これに対して、次の定義を使う。

F = 
   [
   λ0x∈X.(
     [
       λ0a∈A.( f(x, a) ∈Y)
       ALSO
       λ1a→a'∈A.( f(x, a→a') ∈Y)
     ]  ∈Hom(A, Y)
   )
   ALSO
   λ1t→t'∈X.( /* 都合により変数名は t */
     [
       λ01a∈A.( f(t→t', a) ∈Y)
     ] ∈Defm(A, Y))
  ] : X→hom(A, Y)
右辺
= v;F
= v;(λξ∈X.F(ξ))
= λξ'∈X'./(
  F(ξ)
  /
  ξ = v(ξ')
)/
=
λ{x' ALSO x'→x''}∈X'./(
   [
   λ0x∈X.(
     [
       λ0a∈A.( f(x, a) ∈Y)
       ALSO
       λ1a→a'∈A.( f(x, a→a') ∈Y)
     ]  ∈Hom(A, Y)
   )
   ALSO
   λ1t→t'∈X.( /* 都合により変数名は t */
     [
       λ01a∈A.( f(t→t', a) ∈Y)
     ] ∈Defm(A, Y))
  ]
  /
  {x ALSO t→t'} = v({x' ALSO x'→x''})
)/
=
λ{x' ALSO x'→x''}∈X'.(
   {
     [
       λ0a∈A.( f(v(x'), a) ∈Y)
       ALSO
       λ1a→a'∈A.( f(v(x'), a→a') ∈Y)
     ]  ∈Hom(A, Y)
   ALSO
     [
       λ01a∈A.( f(v(x'→x''), a) ∈Y)
     ] ∈Defm(A, Y)
  }
)
=
[
 λ0x'∈X'.(
   [
     λ0a∈A.( f(v(x'), a) ∈Y)
     ALSO
     λ1a→a'∈A.( f(v(x'), a→a') ∈Y)
   ]  ∈Hom(A, Y)
 )
 ALSO
 λ1x'→x''∈X'.(
   [
     λ01a∈A.( f(v(x'→x''), a) ∈Y)
   ] ∈Defm(A, Y))
] :X'→hom(A, Y)

念のため、最後の式をコピーして比較。

左辺 = 
[
 λ0x'∈X'.(
   [
     λ0a∈A.( f(v(x'), a) ∈Y)
     ALSO
     λ1a→a'∈A.( f(v(x'), a→a') ∈Y)
   ]  ∈Hom(A, Y)
 )
 ALSO
 λ1x'→x''∈X'.(
   [
     λ01a∈A.( f(v(x'→x''), a) ∈Y)
   ] ∈Defm(A, Y))
] : X'→hom(A, Y)

右辺 =
[
 λ0x'∈X'.(
   [
     λ0a∈A.( f(v(x'), a) ∈Y)
     ALSO
     λ1a→a'∈A.( f(v(x'), a→a') ∈Y)
   ]  ∈Hom(A, Y)
 )
 ALSO
 λ1x'→x''∈X'.(
   [
     λ01a∈A.( f(v(x'→x''), a) ∈Y)
   ] ∈Defm(A, Y))
] :X'→hom(A, Y)

続きは別記事。

モノイド閉圏の事例: データブロック、適用、代入計算

表題の記法・概念を説明します。まだ、計算の準備。

内容:

写像ブロック

ブロック記法を導入しましたが、一般的に f:A→X, g:B→Y, h:C→Y in Set に関して [f ALSO g] は写像の直和になり、[g OR h] は写像のコタプルになります。

ここでの記法 集合圏での標準的記法
[f ALSO g] f + g : A+B→X+Y
[g OR h] [g, h] : B+C→Y
[f ALSO g OR h] f + [g, h] : A+B+C→X+Y

ブロック記法に関する計算法則は、(必要なら)写像の直和/写像のコタプルの性質から導くことができます。

既に使っているブロック記法は写像〈関数〉を表現しているので、写像ブロック関数ブロック〉と呼ぶことにします。

データブロック

関数ブロックと類似の構文のデータ表現も導入します。Aを単純グラフとして、a∈A(0), i∈A(1) だとして、{a ALSO i} をAのデータブロックと呼びます。

A□B をボックス積グラフとして、(a, b)∈(A□B)(0), (i, b)∈A(1)×B(0) (a, j)∈A(0)×B(1) だとして、{(a, b) ALSO (i, b) OR (a, j)} をA□Bのデータブロックと呼びます。

データブロックの実体(セマンティクス)は:

  • {a ALSO i} : {1, 2}→A(0)+A(1)
  • {(a, b) ALSO (i, b) OR (a, j)} : {1, 2, 3}→(A□B)(0)+(A(1)×B(0))+(A(0)×B(1))

写像として意味づけできるので、(必要なら)この定義からデータブロックの性質を導くことができます。

データブロックのセマンティクスはタプルと同じですが、構文的にはタプルとは違います。例えば、{a ALSO a→a'} に出現する2つのaは同じ頂点とは解釈しません。ALSOの左右で、変数のスコープは独立しています。

適用

写像〈関数〉とデータの適用〈評価〉を、写像ブロックとデータブロックに対しても定義します。

  • [f(0) ALSO f(1)]({a ALSO i}) = {f(0)(a) ALSO f(1)(i)}
  • [f(0) ALSO f(1)1 OR f(1)2]({(a, b) ALSO (i, b) OR (a, j)}) = {f(0)(a, b) ALSO f(1)1(i, b) OR f(1)2(a, j)}

({...}) が煩雑なので、丸括弧は省略可能としましょう。

  • [f(0) ALSO f(1)]{a ALSO i} = {f(0)(a) ALSO f(1)(i)}
  • [f(0) ALSO f(1)1 OR f(1)2]{(a, b) ALSO (i, b) OR (a, j)} = {f(0)(a, b) ALSO f(1)1(i, b) OR f(1)2(a, j)}

なお、図式順の適用は次のようにドットで書きます。

  • {a ALSO i}.[f(0) ALSO f(1)] = {a.f(0) ALSO i.f(1)}
  • {(a, b) ALSO (i, b) OR (a, j)}.[f(0) ALSO f(1)1 OR f(1)2] = {(a, b).f(0) ALSO (i, b).f(1)1 OR (a, j).f(1)2}

適用とイータ同値

ラムダ式では、一般に次(イータ同値)が成立します。

  • f = λx∈X.(f(x))

fが写像ブロックとして書けるときも同様なので:

f:A→B =
[f(0) ALSO f(1)]:A→B = 
λ{a ALSO i}∈A.(
   [f(0) ALSO f(1)]{a ALSO i} ∈B
)


f:A□B→C =
[f(0) ALSO f(1)1 OR f(1)2]:A□B→C =
λ{(a, b) ALSO (i, b) OR (a, j)}∈A□B.(
 [
   f(0)
   ALSO
   f(1)1
   OR
   f(1)2
 ]{(a, b) ALSO (i, b) OR (a, j)}
 ∈ C)

また、次も成立します。

λ{a ALSO i}∈A.(
   [f(0) ALSO f(1)]{a ALSO i} ∈B
) =
λ{a ALSO i}∈A.(
   {f(0)(a) ALSO f(1)(i)} ∈B
) = 
[
  λ0a∈A.( f(0)(a) ∈B)
  ALSO
  λ1i∈A.( f(1)(i) ∈B)
]


λ{(a, b) ALSO (i, b) OR (a, j)}∈A□B.(
 [
   f(0)
   ALSO
   f(1)1
   OR
   f(1)2
 ]{(a, b) ALSO (i, b) OR (a, j)}
 ∈ C)
=
λ{(a, b) ALSO (i, b) OR (a, j)}∈A□B.(
 {
   f(0)(a, b)
   ALSO
   f(1)1(i, b)
   OR
   f(1)2(a, j)
 } ∈ C)
=
[
   λ(0)(a, b)∈A□B.( f(0)(a, b) ∈C)
   ALSO
   λ(1)(i, b)∈A□B.( f(1)1(i, b) ∈C)
   OR
   λ(1)(a, j)∈A□B.( f(1)2(a, j)  ∈C)
]

代入計算

グラフ射の結合 f;g をラムダ記法で計算するとき、代入計算が必要になります。代入〈置換〉の表現にも角括弧や波括弧が使われますが、既に使ってしまったので、別な記号を割り当てます。

  • /(式1 / 変数=式2)/

これで、「式1のなかに登場する変数を式2で置換することを示します。

一般に、代入計算は次のように使います。

  x.(f;g)
 = (f;g)(x)
 = ( (λy∈Y.g(y)) \circ f )(x)
 = /( g(y) / y = f(x) )/

モノイド閉圏の事例: hom(p, Y), hom(A, q) の定義

homが反変・共変の双関手であることは、直接示す必要はありません(間接的に言えます)が、計算のための具体的な表示は必要になります。

内容:

グラフ射と変形の結合

f:A→B がグラフ射、β:w⇒w':B (0→1) C が変形だとします。両端がグラフ射である変形の定義より、

  • β:B(0)→C(1)
  • β;s = w(0) (w(1) は自動的に決まる)
  • β;t = w'(0) (w'(1) は自動的に決まる)

fとβの結合〈composition〉を次のように定義します。

  • (f;;β)(a) := β(f(a)) ∈C(1)

f;;β が変形 A (0→1) C になるのは明らかですが、

  • f;;β: f;w⇒f;w' : A (0→1) C

つまり、f;;β の両端は、f;w と f;w' になります。

同様に、α:u⇒u':A (0→1) B, g:B→C に対して、

  • (α;;g)(a) := g(α(a)) ∈C(1)

と定義すると、

  • α;;g: u;g⇒u';g : A (0→1) C

ホムグラフとグラフ射

A', A, Y, Y' ∈|SG|, p:A'→A, q:Y→Y' in SG とします。文字の使用が奇妙なのは、後で出てくる記法と合わせるため。hom(-, -) の片側にグラフ射、もう一方にはグラフを入れた形を直接定義します。

hom(p:A'→A, Y):hom(A, Y)→hom(A', Y) :=
[
  λ0u∈hom(A, Y).(
    p;u /* グラフ射の結合 図式順、pを前結合 */
  ∈Hom(A', Y) )
  ALSO
  λ1u⇒v∈hom(A, Y).(
    p;;(u⇒v) /* グラフ射と変形の結合 図式順、pを前結合 */
  ∈Defm(A', Y) )
]


hom(A, q:Y→Y'):hom(A, Y)→hom(A, Y') :=
[
  λ0u∈hom(A, Y).(
    u;q /* グラフ射の結合 図式順、qを後結合 */
  ∈Hom(A, Y') )
  ALSO
  λ1u⇒v∈hom(A, Y).(
    (u⇒v);;q  /* 変形とグラフ射の結合 図式順、qを後結合 */
  ∈Defm(A, Y') )
]

モノイド閉圏の事例: ブロック式

具体的な結果を示すには具体的な計算が必要で、往々にして計算はドブ板作業になります。ドブ板作業を少しでも軽減するために、ツール(計算デバイス)を整備・改善します。

内容:

ブロック式構文

視認性・可読性・理解容易性を改善するために、ラムダ記法にブロック式という構文を導入する。とはいえ、囲み記号として角括弧 '[', ']' を新規に追加するだけ。

角括弧は、λ0, λ1, λ01 で始まるラムダ式と、ALSO, OR 接続詞の組み合わせを囲むために使う。角括弧で囲まれた部分をブロック式〈block expression〉と呼ぶ。ブロック式は次の3種類に限定する。

  1. グラフ射を表現する: [λ0... ALSO λ1...]
  2. ボックス積からのグラフ射を表現する: [λ0... ALSO λ1... OR λ1...]
  3. 変形を表現する: [λ01...]

その他の用途では、今までどうり丸括弧を使う。角括弧は、必ずグラフ射か変形を表す(ようにする)。

ブロック式に角括弧を使うので、hom(A, B) を [A, B] と書く記法は採用できない。

値の型の表記

  • 式の値の型は、「∈ B」のような書き方で示すが、このとき「∈1B」や「∈B(1)」とは書かない。頂点・辺の区別(要素の次元)は文脈から読み取る

文脈から読み取るのが負担になることもあるので、規則を変更する

  1. 式の値が頂点であるときは、「∈B(0)」と書く。
  2. 式の値が辺であるときは、「∈B(1)」と書く。
  3. 単に「∈B」と書くことも許す。そのときは、(読む側は)「∈B(0)」か「∈B(1)」かを文脈から読み取る。

特に、値をホムグラフに取るようなグラフ射(高階グラフ射)のときは次の書き方を許す。

  1. hom(B, C)(0) = Hom(B, C) なので、「∈hom(B, C)(0)」の代わりに「∈Hom(B, C)」と書いてよい。
  2. B (0→1) C の形の変形の全体を Defm(B, C) と書くことにする。
  3. hom(B, C)(1) ⊆ Defm(B, C) なので、「∈hom(B, C)(1)」の代わりに「∈Defm(B, C)」と書いてよい。

高階グラフ射の表現

ホムグラフに値を取るグラフ射を高階グラフ射〈higher-order graph morphism〉と呼ぶ。F:A→hom(B, C) が高階グラフ射のとき、Fをラムダ式で表現する。

まず、単純なグラフ射ブロックを使って:

F = [
 λ0a∈A.( F(0)(a) ∈hom(B, C)(0))
 ALSO
 λ1a→a'∈A.( F(1)(a→a') ∈hom(B, C)(1))
]

値の型を具体的に書いて:

F = [
 λ0a∈A.( F(0)(a) ∈Hom(B, C))
 ALSO
 λ1a→a'∈A.( F(1)(a→a') ∈Defm(B, C))
]

F(0)(a) と F(1)(a→a') をブロック式で書けば:

F(0)(a) = [
 λ0b∈B.( F(0)(a)(b) ∈C)
    /* ∈C(0) とは書かなかった */
 ALSO
 λ1b→b'∈B.( F(0)(a)(b→b') ∈C)
    /* ∈C(1) とは書かなかった */
]

F(1)(a→a') = [
  λ01b∈B.( F(1)(a→a')(b) ∈C)
    /* ∈C(1) とは書かなかった */
]

これらを先の式に代入して:

F = [
 λ0a∈A.(
   [
     λ0b∈B.( F(0)(a)(b) ∈C)
     ALSO
     λ1b→b'∈B.( F(0)(a)(b→b') ∈C)
   ]  ∈Hom(B, C))
 ALSO
 λ1a→a'∈A.(
   [
     λ01b∈B.( F(1)(a→a')(b) ∈C)
   ] ∈Defm(B, C))
]

記号の乱用で、F(0), F(1) の下付き添字を省略すれば、

F = [
 λ0a∈A.(
   [
     λ0b∈B.( F(a)(b) ∈C)
     ALSO
     λ1b→b'∈B.( F(a)(b→b') ∈C)
   ]  ∈Hom(B, C))
 ALSO
 λ1a→a'∈A.(
   [
     λ01b∈B.( F(a→a')(b) ∈C)
   ] ∈Defm(B, C))
]

事例として、f:A□B→C をカリー化した高階グラフ射 F:A→hom(B, C) を新しい記法で記述してみる。

F:A→hom(B, C) :=
[
 λ0a∈A.(
   [
     λ0b∈B.( f(a, b) ∈C)
     ALSO
     λ1b→b'∈B.( f(a, b→b') ∈C)
   ]  ∈Hom(B, C)
 )
 ALSO
 λ1a→a'∈A.(
   [
     λ01b∈B.( f(a→a', b) ∈C)
   ] ∈Defm(B, C)
 )
]

F = Φ(f) なのだから、Φ(ΦA,B,Cを略記)自体は次のように書ける。

Φ:Hom(A□B, C)→Hom(A, hom(B, C)) := λf∈Hom(A□B, C).(
  [
   λ0a∈A.(
     [
       λ0b∈B.( f(a, b) ∈C)
       ALSO
       λ1b→b'∈B.( f(a, b→b') ∈C)
     ]  ∈Hom(B, C)
   )
   ALSO
   λ1a→a'∈A.(
     [
       λ01b∈B.( f(a→a', b) ∈C)
     ] ∈Defm(B, C))
  ] ∈Hom(A, hom(B, C))
)

モノイド閉圏の事例: 計算の準備

とりあえず、記号の使い方を決めます。が、使っているうちに変更される可能性があります。決めた記法により、いくつかの定義もします。

用語のバリエーションの書き方は「用語のバリエーション記述のための正規表現」を参照。

内容:

基本的な記法

記法の決め方の方針:

  1. 誤解をしにくい。
  2. 視認性が良い。
  3. 手早く書ける。

上の項目ほど優先順位が高い。計算に使う記法では、統一性は重要ではないのでかなり不統一。

  1. グラフAの頂点集合は A(0) とも書く。|A| = A(0)
  2. グラフAの辺集合は A(1) とも書く。
  3. s, t:A(1)→A(0) は、それぞれ、辺の始点と終点。
  4. グラフ射〈準同型写像〉f:A→B の頂点部分は f(0):A(0)→B(0), 辺部分は f(1):A(1)→B(1) と書く。単純グラフでは、頂点部分が決まれば、辺部分は自動的に決まる(任意性がない)。
  5. a, a'∈|A| として、辺は a→a' と書く。単純グラフでは、両端が決まれば、辺は自動的に決まる(任意性がない)。
  6. 辺は両端で決まるので、名前を付ける必要性は少ないが、i:a→a' in A のようにも書く。i は辺の名前。単純グラフなので、i:a→a' ⇔ i = (a→a') 。
  7. f, gがホムグラフの頂点(i.e. グラフ射)のとき、ホムグラフ(後述)の辺を α:f⇒g のようにも書く。ただし、α:f→g でもよい。「⇒」は、ホムグラフの辺であることを強調する/注記する記法。単純グラフなので、α:f⇒g ⇔ α = (f⇒g) = (f→g)
  8. a ∈0 A :⇔ a ∈ A(0)
  9. i ∈1 A :⇔ i ∈ A(1)

記法に慣れるために、幾つかの定義と等式を書いておく。

  1. s(a→b) = a, t(a→b) = b
  2. For a, b ∈0 A, A(a, b) := {i∈A(1) | s(i) = a ∧ t(i) = b}
  3. For f:A→B in SG
    1. f(0)(s(i)) = s(f(1)(i))
    2. f(0)(t(i)) = t(f(1)(i))
    3. i∈A(a, b) ⇒ f(1)(i)∈B(f(0)(a), f(0)(b)) (ここの「⇒」は「ならば」)
記号の乱用

f(0)もf(1)も区別せずに単にfと書くことが多い。f(0) から f(1) が決まってしまうので、乱用しても弊害は少ないと思われる。

  • For f:A→B in SG
    1. f(s(i)) = s(f(i))
    2. f(t(i)) = t(f(i))
    3. i∈A(a, b) ⇒ f(i)∈B(f(a), f(b))

文字の使い方の目安

あくまで目安。守らないことも、変更することもあり得る。

文字 種別 用途・意味 備考
a, b, c, d 変数 グラフの頂点 a', b' なども
f, g, h 変数 グラフ射 SGの射、ホムグラフの頂点
i, j, k 変数 グラフの辺 あまり使わない
s, t 構成素名 辺の始点と終点
u, v, w 変数 グラフ射 主にホムグラフの頂点
x, y, z 変数 グラフの頂点 x', y' なども
A, B, C, D 変数 単純グラフ SGの対象
F, G 変数 ホムグラフへのグラフ射 高階グラフ射
1 固有名 単頂点離散グラフ 太字のイチ
X, Y, Z 変数 単純グラフ SGの対象
α, β, γ 変数 変形 ホムグラフの辺
γ 構成素名 内部結合 変数とかぶり
α 構成素名 結合律子 変数とかぶり
ε 構成素名 随伴の余単位 ev とも書く
η 構成素名 随伴の単位 ins とも書く
φ 構成素名 内部カリー化 ホムグラフ間の射
ψ 構成素名 内部反カリー化 ホムグラフ間の射
λ 構成素名 左単位律子
λ メタ記号 ラムダ記号 左単位律子とかぶり
ρ 構成素名 右単位律子
σ 構成素名 対称〈スワップ〉
ι 構成素名 内部恒等
Φ 構成素名 {右}?カリー化 ホムセット間写像、通常はΛ
Ψ 構成素名 反{右}?カリー化 ホムセット間写像、通常はΓ

グラフ射を部分に分ける

f:A→B in SG を f = (f(0), f(1)) と書く。Aの辺集合 A(1) が直和で A(1) = A(1)1 + A(1)2 と書けるとき、

  • f(1)1 := (fの、A(1)1 への制限)
  • f(1)2 := (fの、A(1)2 への制限)

として、次の書き方をする。

  • f = (f(0), f(1)1 | f(1)2)

この書き方では、「,」より「|」のほうが優先度(結合の強度)が高い。

「,」、「|」では視認性が悪いときは、ALSO, OR を使う。

  • f = (f(0) ALSO f(1)1 OR f(1)2)

ラムダ記法

通常のインフォーマルな型付きラムダ記法を用いるが、'λ'の肩に 0, 1 を付けることがある。

  1. λ0x∈X.( ... ) は、λx∈0X.( ... ) 、あるいは、λx∈X(0).( ... ) と同じ。グラフ射の頂点部分を表す。
  2. λ1x∈X.( ... ) は、λx∈1X.( ... ) 、あるいは、λx∈X(1).( ... ) と同じ。グラフ射の辺部分を表す。
  3. 式の値の型は、「∈ B」のような書き方で示すが、このとき「∈1B」や「∈B(1)」とは書かない。頂点・辺の区別(要素の次元)は文脈から読み取る
  4. 前節の区切りキーワード ALSO, OR を使って組み合わせる。

同語反復だが、

f:A→B = (
  λ0a∈A.(f(0)(a) ∈B)
  ALSO
  λ1a→a'∈A.(f(1)(a→a') ∈B)
)

または、

f:A→B = (
  λ0a∈A.(f(0)(a) ∈B)
  ALSO
  λ1a→a'∈A.(f(0)(a)→f(0)(a') ∈B)
)

f:A→B, g:C→D に対する f×g の定義:

f×g:A×C→B×D := (
  λ0(a, c)∈A×C.( (f(a), g(c)) ∈B×D )
  ALSO
  λ1(a, c)→(a', c')∈A×C.( (f(a→a'), g(c→c')) ∈B×D )
)

ボックス積

  • (A□B)(0) := A(0)×B(0)
  • (A□B)(1) := A(1)×B(0) + A(0)×B(1)

s, t の定義は(通常のラムダ記法で示す):

s:(A□B)(1)→(A□B)(0) := (
  λ(a→a', b)∈A(1)×B(0).( (a, b) ∈A(0)×B(0) )
  OR
  λ(a, b→b')∈A(0)×B(1).( (a, b) ∈A(0)×B(0) )
)

t:(A□B)(1)→(A□B)(0) := (
  λ(a→a', b)∈A(1)×B(0).( (a', b) ∈A(0)×B(0) )
  OR
  λ(a, b→b')∈A(0)×B(1).( (a, b') ∈A(0)×B(0) )
)

1 に関して、1(0) = {0}, 1(1) = {} = 空集合。1□B を計算してみる。

  • (1□B)(0) := 1(0)×B(0) \cong B(0)
  • (1□B)(1) := 1(1)×B(0) + 1(0)×B(1) = 1(0)×B(1) \cong B(1)

s, t の定義は(通常のラムダ記法で示す):

s:(1□B)(1)→(1□B)(0) := (
  λ(a, b→b')∈1(0)×B(1).( (0, b) ∈1(0)×B(0) )
)
\cong λb→b'∈B(1).(  b ∈B(0) )

t:(1□B)(1)→(1□B)(0) := (
  λ(a, b→b')∈1(0)×B(1).( (0, b') ∈1(0)×B(0) )
)
\cong λb→b'∈B(1).(  b' ∈B(0) )

以上で、1□B \cong B が示せた。より直接的な λB:1□B→B in SG の表示は('λ'がかぶっていて、困ったことだが):

λB:1□B→B := (
  λ0(0, b)∈1□B.( b ∈B) /* 頂点部分 */
  ALSO
  λ1(0, b→b')∈1□B.( b→b' ∈B)  /* 辺部分 */
)

この定義に対して、次が可換になるので、λB はグラフ射。

\require{AMScd}
\begin{CD}
({\bf 1}\Box B)_{(1)} @>{(\lambda_B)_{(1)}}>>  B_{(1)} \\
@V{s, t}VV                                   @VV{s, t}V \\
({\bf 1}\Box B)_{(0)} @>{(\lambda_B)_{(0)}}>>  B_{(0)}
\end{CD}

射のボックス積

f:A→B, g:C→D in SG に対して、f□g を定義する。

f□g:A□C→B□D := (
 λ0(a, c)∈A□C.( (f(a), g(c)) ∈B□D) /* 頂点部分 */
 ALSO
 λ1(a→a', c)∈A□C.( (f(a→a'), g(c)) ∈B□D) /* 辺部分 その1 */
 OR
 λ1(a, c→c')∈A□C.( (f(a), g(c→c')) ∈B□D) /* 辺部分 その2 */
)

実際には、次の可換図式が必要になる。


\begin{CD}
(A\Box C)_{(1)}  @>(f \Box g)_{(1)}>> (B\Box D)_{(1)} \\
@V{s, t}VV           @VV{s, t}V \\
(A\Box C)_{(0)}  @>(f \Box g)_{(0)}>> (B\Box D)_{(0)}
\end{CD}

変形

A, B∈|SG| として、A(0) から B(1) の写像を変形〈deformation〉と呼ぶことにする(一般的な用語ではない)。変形を次の形のラムダ記法で書く。

  • λ01a∈A.( ... ∈B)

「...」の部分には、Bの辺を表す式が入る。Aが反射的なとき、頂点にその自己ループ辺を対応させる変形は:

λ01a∈A.( a→a ∈A)

αが A(0)→B(1) の形の変形であることを α:A (0→1) B と書く。ぎごちない記法だが、どうせたいして使わないからいいとする。

α:A (0→1) B に対して、写像 α;s, α;t :A(0)→B(0) が決まる。α;s, α;t は、単なる頂点集合間の写像なので、それがグラフ射を定義するとは限らない。が、もし次の条件が成立しているなら、αをfからgへの変形と呼ぶ。

  • α;s = f :A→B かつ α;t = g :A→B

このとき、α:f⇒g と書く。AとBの情報を添えたいときは、α:f⇒g: A (0→1) B と書く(が、面倒だからほとんど書かない)。今後、考える変形は、両端がグラフ射になっているようなものである。

[補足]両端がグラフ射にならない変形の例:


  • グラフ A : A(0) = {1, 2}, A(1) = {1→2}
  • グラフ B : B(0) = {1, 2, 3, 4}, B(1) = {1→3, 2→4}
  • 変形 α : α(1) = 1→3, α(2) = 2→4

変形αの両端を f, g とすると:

  • ソース側 : f(1) = 1, f(2) = 2
  • ターゲット側 : g(1) = 3, g(2) = 4

fもgもグラフ射にはなってない。Aの辺 1→2 の送り先が存在しない。
[/補足]

ホムグラフ

圏はSGしか考えないので、次の略記をする。

  • Hom(A, B) = HomSG(A, B) = SG(A, B)

2つの単純グラフ A, B に対して、そのホムグラフ hom(A, B) を次のように定義する。

  • |hom(A, B)| = hom(A, B)(0) := Hom(A, B)
  • For f, g∈|hom(A, B)|,
    hom(A, B)(f, g) := {α | α:f⇒g という変形}

この定義から、ただちに hom(A, B) が単純グラフだと言えるわけではないが、容易に次は分かる。

  • A, B∈|SG| ⇒ hom(A, B)∈|SG|

つまり、

  • hom(A, B)(f, g) は空集合か単元集合

hom(A, B) は正確に言えば内部ホムグラフで、Hom(A, B) とは次の点で違う。

  • Hom(A, B) は外部ホムセット=普通のホムセットで、単なる集合、グラフ構造は持たない。SGの対象とも考えない。
  • hom(A, B) は内部ホム対象で、グラフ構造を持ち、SGの対象と考える。

エバル〈評価射〉

A, B∈|SG| に対して、evA,B:hom(A, B)□A→B を次のように定義する。

evA,B:hom(A, B)□A→B := (
 λ0(f, a)∈hom(A, B)□A.( f(a) ∈B)
 ALSO
 λ1(f⇒f', a)∈hom(A, B)□A.( f(a)→f'(a) ∈B)
 OR
 λ1(f, a→a')∈hom(A, B)□A.( f(a→a') ∈B)
)

evA,Bは、上記のラムダ記法で定義されるSGの射である。実際には、次の可換図式が必要になる。


\begin{CD}
(hom(A, B)\Box A)_{(1)} @>{(ev_{A,B})_{(1)}}>>  B_{(1)} \\
@V{s, t}VV                                      @VV{s, t}V \\
(hom(A, B)\Box A)_{(0)} @>{(ev_{A,B})_{(0)}}>>  B_{(0)}
\end{CD}

カリー化〈随伴転置〉

カリー化〈随伴転置〉は、ホムセット(外部ホムセット)のあいだの写像であり、グラフ射ではない。Hom(A□B, C) の要素 f に対して、A から hom(B, C) へのグラフ射を対応させる。値であるグラフ射の頂点部分は「頂点→グラフ射」で、辺部分は「辺→変形」となる。

ΦA,B,C:Hom(A□B, C)→Hom(A, hom(B, C)) :=
  λf∈Hom(A□B, C).(
     λ0a∈A.(
        (λ0b∈B.( f(a, b) ∈C)
         ALSO
         λ1b→b'∈B.( f(a, b→b') ∈C)
        ) ∈hom(B, C)
     )
     ALSO
     λ1a→a'∈A.(
       (λ01b∈B.( f(a→a', b) ∈C)) ∈hom(B, C)
     )
  )

コメント付き:

ΦA,B,C:Hom(A□B, C)→Hom(A, hom(B, C)) :=
  λf∈Hom(A□B, C).( /* グラフ射 f:A□B→C が与えられる */

     /* ここから下に、
        f に対する値である高階グラフ射 F:A→hom(B, C)
        を記述する
     */

     /* 高階グラフ射 F の頂点部分 */
     λ0a∈A.(
        /* a∈A(0) に対して、
           F(a) はグラフ射 F(a):B→C
        */
        (λ0b∈B.( f(a, b) ∈C) /* F(a)(b) := f(a, b) */
         ALSO
         λ1b→b'∈B.( f(a, b→b') ∈C) /* F(a)(b→b') := f(a, b→b') */
        ) ∈hom(B, C) /* end of グラフ射 F(a) */
     ) : A→hom(B, C) /* end of F の頂点部分 */
     ALSO
     /* 高階グラフ射 F の辺部分 */
     λ1a→a'∈A.( /* 辺 a→a' が与えられる */
       /* F(a→a') は変形 F(a→a'):B (0→1) C */
        ( /* 変形は、Bの頂点 b にCの辺を対応させる */
         λ01b∈B.(
           f(a→a', b) ∈C)
        ) ∈hom(B, C) /* end of 変形 F(a→a') */
     ) : A→hom(B, C)  /* end of F の辺部分 */
  )

モノイド閉圏の事例: 必要な計算

単に箇条書きで列挙するだけ。「*」が付いている項目は、理論上は不要。だけど、実際の計算を示すのが望ましい。済んだ項目には順次「◯」を付ける。「△」は、ほんとはやるべきだが省略した計算。

  1. (SG, □, 1, α, λ, ρ) がモノイド圏であること
    1. □の定義 ◯
    2. □の双関手性 ◯
    3. α, λ, ρ の定義 △
    4. α, λ, ρ の同型性 △
    5. マックレーンの五角形 △
    6. マックレーンの三角形 △
  2. hom(-, -) の定義 ◯
  3. hom(-, -) が双関手であること *
  4. カリー化の定義 ◯
  5. カリー化の自然性 ◯
  6. 反カリー化の定義 * ◯
  7. 反カリー化の自然性 *
  8. カリー化の可逆性 * ◯
  9. ev = ε の定義 ◯
  10. ins = η の定義 *
  11. ベータ変換等式 ◯
  12. イータ変換等式 *
  13. 内部テンソル・ホム随伴 *

モノイド閉圏と内部ホムについては:

  1. ラムダ計算の自然性とお絵描き
  2. モノイド閉圏: カリー化からニョロニョロまで

モノイド閉圏の事例: ☓(ループ除去)はやはり☓(ダメ)だ

[追記 date="2019-12-07"] 追記を、ここ(記事冒頭)と記事のおしりにします。が、既存部分の編集はしません。タイトルも変えません。☓は実際ダメなヤツだと思うので。

しかし、☓の直後に○が付くと、☓のダメさは打ち消されます。☓○ = ○ 。さらに、最初から○な状況であるなら、☓の効果も○の効果もなくなってしまい、何もしないプレーンな状態が回復します。(末尾の追記部分に続く。)[/追記]

内容:

一般的な定義

後で使いそうなことを幾つか定義。

Graphを(任意の)有向グラフとグラフ準同型写像からなる圏とします。グラフ A∈|Graph| に対して、圏と同様な記法を使いましょう。

  • |A| := (Aの頂点の集合)
  • A(a, b) := (頂点aから頂点bに至るAの辺の集合)

単純グラフ〈simple graph〉は次の意味だとします。

  • Aが単純グラフ :⇔ ∀a, b∈|A|.(A(a, b) は空集合か単元集合)

単純グラフの圏をSGとします。SGGraphの充満部分圏です。

反射的単純グラフ〈reflexive simple graph〉は次の意味だとします。

  • Aが反射的単純グラフ :⇔ Aは単純グラフ ∧ ∀a∈|A|.(A(a, a) は単元集合)

単純グラフの圏をRSGとします。RSGSGの充満部分圏です。

使うかどうか分からないけど、アンチ反射的単純グラフ〈anti-reflexive simple graph〉は次の意味だとします。

  • Aがアンチ反射的単純グラフ :⇔ Aは単純グラフ ∧ ∀a∈|A|.(A(a, a) は空集合)

アンチ反射的単純グラフは、「反射的ではない単純グラフ」ではありません。

単純グラフに対して、自己ループ辺を(なければ)付け加える操作を A \mapsto Aとします。(-) は、SGSG または SGRSG の関手になります。

単純グラフに対して、自己ループ辺を(あれば)全て取り除く操作を A \mapsto Aとします。(-) は関手にはなりません。次の“悪い性質”を持ちます。

  • [BADNESS] f:A→B in SG に対して、次の図を可換にする g:A→B が存在するとは限らない。(下図で、iは包含写像。)

\require{AMScd}
\begin{CD}
A   @>g>>   B^{\times} \\
@|          @VV{i}V \\
A   @>f>>   B
\end{CD}

これは、だいぶたちが悪く、(-) を使用すると、モノイド閉圏の法則はたいてい壊れます。

推論の書き方

記述を簡単にするために、推論のワンステップを次のように書くことにします。

          命題1
          命題2
 通し番号 ----------------------根拠
          命題3

意味は、「上段の命題(複数でもよい)から、下段の命題が推論される」。

A, B∈|SG| に対して、命題として次の形式を用います。

  • A ∃→ B

意味は、「AからBへのグラフ準同型が存在する」。ただし、超越的に存在するのではなくて、標準的・構成的に存在することを意味します。つまり、A ∃→ B とは、次のどちらか。

  1. A, B に対してあらかじめ標準的に決められた写像が存在する。
  2. 既に存在が保証されている写像から、A→B の写像を標準的手順により構成できる。

基本的な性質

  • 以下、A, A を後置演算子により A○, A☓ と書く。
  • hom(-, -) は、GSにおける、ボックス積 □ に関する内部ホム。

推論に使ってよい性質(ほぼ自明な命題)。

  1. [⊆○] A ⊆ A○
  2. [☓○=○] A☓○ = A○
  3. [⊆hom] B ⊆ C のとき、hom(A, B)→hom(A, C) を標準的に作れる
  4. [☓⊆] A☓ ⊆ A
  5. [⊆→] A ⊆ B で B→C があるとき、A→C を標準的に作れる
  6. [結合] f:A→B, g:B→C があるとき、A→C を標準的に作れる
  7. [内部カリー化] hom(A□B, C)→hom(A, hom(B, C)) が標準的に存在する
  8. [G定義] G(A, B) := hom(A, B○)☓
  9. [G'定義] G'(A, B) := hom(A, B○)

定理と注意

  • G(A□B, C) ∃→ G'(A, G(B, C))

すべてGなのではなく、G'が入っている点に注意。

   推論開始
 1 ---------------------------------------[⊆○]
   新規導入 hom(B, C○) ⊆ hom(B, C○)○
 2 ------------------------------------------------[⊆hom]
   hom(A, hom(B, C○)) ∃→ hom(A, hom(B, C○)○)
 3 --------------------------------------------------------[内部カリー化]
   新規導入 hom(A□B, C○) ∃→ hom(A, hom(B, C○))
   上段ママ hom(A, hom(B, C○)) ∃→ hom(A, hom(B, C○)○)
 4 --------------------------------------------------------[結合]
   hom(A□B, C○) ∃→ hom(A, hom(B, C○)○)
 5 ------------------------------------------------[☓○=○]
   hom(A□B, C○) ∃→ hom(A, hom(B, C○)☓○)
 6 -----------------------------------------------[G定義]
   hom(A□B, C○) ∃→ hom(A, G(B, C)○)
 7 -----------------------------------------------[☓⊆]
   新規導入 hom(A□B, C○)☓ ⊆ hom(A□B, C○)
   上段ママ hom(A□B, C○) ∃→ hom(A, G(B, C)○)
 8 -----------------------------------------------[⊆→]
    hom(A□B, C○)☓ ∃→ hom(A, G(B, C)○)
 9 -------------------------------------------[G定義]
    G(A□B, C) ∃→ hom(A, G(B, C)○)
10 -------------------------------------------[G'定義]
    G(A□B, C) ∃→ G'(A, G(B, C))

出現する写像がすべて単射なことから、構成される G(A□B, C)→G'(A, G(B, C)) は単射になります。

G(A□B, C) ∃→ G(A, G(B, C)) とはいかないのは、ステップ10において、[BADNESS]により、G'をGに置き換えられないから。

同様な理由([BADNESS])から、G(-, B) の極限保存は保証できません。G'(-, B) ならば極限保存するので、余極限構成を極限構成に写す反変連続関手*1です。

そもそも (-) は関手ではないので、関手のなかに (-) を混ぜてしまえば、それ以降、圏論的議論は使えなくなります。(-) は、圏論的議論とは極めて相性が悪い操作です。


[追記 date="2019-12-07"] ここから追記開始。

追加の記法と基本的な性質

「A ∃→ B」は、AからBへの標準的な写像の存在を主張する命題でした。互いに逆な双方向の写像の存在ならば「A ∃←→ B」とか書けばよさそうですが、普通に「A \cong B」でもだいたい同じ意味なので、「\cong」で書きます。

次の基本的な性質を追加します。

  1. [内部カリー同型] hom(A□B, C) \cong hom(A, hom(B, C))
  2. [○ref] A○ は反射的
  3. [ref○] Aが反射的ならば、A○ = A
  4. [ref-hom] Bが反射的ならば、hom(A, B) も反射的

[内部カリー同型]は、モノイド閉圏で一般に成立する命題で、https://ncatlab.org/nlab/show/internal+hom#BasicProperties の "Proposition 3.2. (internal tensor/hom-adjunction)" を見てください。呼び名と記号は違って:

ここ nLab
内部カリー同型 internal tensor/hom-adjunction
\otimes
hom(-, -) [-, -]
 \cong  \simeq

[ref-hom] については; f∈|hom(A, B)| として、任意の a∈|A| に対して、辺 f(a)→f(a) in B があるので、hom(A, B) 内でのfのループが作れます。

追加の定理と注意

  • [補題1] hom(B, C○)☓○ = hom(B, C○)
   推論開始
 1 -------------[○ref]
   C○ は反射的
 2 ------------------------------[ref-hom]
   hom(B, C○) は反射的
 3 ------------------------------[ref○]
   hom(B, C○)○ =  hom(B, C○)
 4 ------------------------------[☓○=○]
   hom(B, C○)☓○ =  hom(B, C○)
  • [補題2] G'(A□B, C) \cong G'(A, G(B, C))
   推論開始
 1 ------------------------------------------[内部カリー同型]
   hom(A□B, C○) \cong hom(A, hom(B, C○))
 2 ------------------------------------------[補題1]
   hom(A□B, C○) \cong hom(A, hom(B, C○)☓○)
 3 ------------------------------------------[G定義]
   hom(A□B, C○) \cong hom(A, G(B, C)○)
 4 ------------------------------------------[G'定義]
   G'(A□B, C) \cong G'(A, G(B, C))
  • G(A□B, C) \cong G(A, G(B, C))

補題2の両辺に☓を作用させればよい。たちの悪い☓であっても、さすがに次は成立するので:

  • A \cong B ならば、A☓ \cong B☓

[/追記]

*1:最近は、「連続関手」という呼び名はあまり使われないようです。「極限保存関手」が優勢。「連続関手」は、https://en.wikipedia.org/wiki/Grothendieck_topology#Continuous_and_cocontinuous_functors の意味で使われるからでしょう。

モノイド閉圏の事例: 前置き

「モノイド閉圏の事例」はシリーズ記事になる予定です(何回になるかは不明)。定義と命題は書きますが、記述はかなりラフなものとなり、解説は最小限、または省略される(解説なし)かも知れません。([追記]最終回の記事: モノイド閉圏の事例: オシマイ - (2nd) 檜山正幸のキマイラ飼育記[/追記]

ドラフト状態で公開するので、後からの変更が激しくなるでしょう。単一の記事内での変更に留まらず、記事の構成が大幅に変化するかも知れません -- それは、記述・投稿の時間順序が論理的順序にはならないと思うからです。

内容:

この事例について

モノイド閉圏〈monoidal closed category | 閉モノイド圏 | closed monoidal category〉の事例を提供します。この事例の名前(固有名)をSGMC(Simple Graphs with Monoidal Closed structure)とします。名前から想像できるように、SGMCのベースとなる圏(台圏)は単純グラフの圏SGです。

単純グラフの圏SGは、比較的簡単で扱いやすい圏ですが、その上にモノイド閉構造を載せたSGMCはあまり簡単ではありません。構造の具体的な定義や具体的な計算に手間がかかるのです。導入までの時間がかかり過ぎる点では、モノイド閉圏の学習用の事例には向いていません。

一方で、計算をガッツリ練習したい人には有意義な事例だと思います。具体的な計算をするための計算デバイス*1が必要なので、計算デバイスの構成も一連の記事内で扱います。紹介する計算デバイス(ラムダ計算の変種)が最良の計算手法かどうか分かりませんが、必要な計算は実行できます。

具体的な計算は計算用紙を消費するだけで面白くはありません。ひたすらドブ板計算です。圏論ではドブ板計算に頼る場面は思いの外多く、2008年の記事で「圏論は、ほぼ計算だけ」と言ってます(ちょっと言い過ぎたけど)。


[追記]これより下はもはやあまり意味がない。引き続く記事内に定義と記述がある。[/追記]

用語と記法

二項演算子記号とコンビネータの記号

名称 図式順記法 反図式順記法 備考
適用 . (ドット) -(-)
結合 ; \circ
モノイド積 同じ
ヒゲ結合 ; \circ オーバーロード
右カリー化 いつもは rΛ
左カリー化 ℓΦ いつもは ℓΛ
右反カリー化 いつもは rΓ
左反カリー化 ℓΨ いつもは ℓΓ

内部二項演算子記号と内部コンビネータの記号

図式順外部演算 図式順内部演算 反図式順外部演算 反図式順内部演算
. ->- (into と読む) -(-) -<->
; \hat{;} \circ \hat{\circ}
ℓΦ ℓφ
ℓΨ ℓψ

二項演算子記号の使用目的

記号 使用目的
., -(-) 写像〈射〉の値, 関手の値, 自然変換の値〈成分〉
;, \circ 射の結合, 自然変換の縦結合
*, ・ 関手の結合, 自然変換の横結合
(-)^ bump-upオペレーター

露骨な表示

随伴系の単位と余単位の露骨な〈陽な | explicit〉表示をメモしておきます。

対象 A∈|SG| が定義する随伴系 AΣ の単位 Aη、ただし、左肩のAは省略。

  • η := Aη (略記)
η::SG^⇒[A, -□A]:SGSG

X.η:X→[A, X□A]
:= (
     λ0x∈X.(
        λ0∈A. (x, a) ∈X□A
        ALSO
        λ1(a→a')∈A. (x, a→a') ∈X□A
      )
     ALSO
     λ1(x→x')∈X.(
       λ01a∈A. (x, a)→(x', a) ∈X□A
     )
   )

対象 A∈|SG| が定義する随伴系 AΣ の余単位 Aε、ただし、左肩のAは省略。

  • ε := Aε (略記)
ε::[A, -]□A⇒SG^:SGSG

X.ε:[A, X]□A→X
:= (
    λ0(f, a)∈[A, X]□A. f(a) ∈X
    ALSO
    λ1(f⇒f', a)∈[A, X]□A. (f⇒f')a ∈X
    OR
    λ1(f, a→a')∈[A, X]□A. f(a→a') ∈X
   )

*1:デバイスは、もちろんハードウェアのことではありません。仕掛け、からくり、道具立て、といった意味です。メカニズム、マシーナリー、とかも言います。

解答: 基本スキルの確認と練習 (G2 A7R3, C A8R3)

※ まだ解答作成は未完で、現時点では問題1だけ。

基本スキルの確認と練習 (G2 A6P3, C A7P3)」の練習問題への解答です。

内容:

問題 1

この練習問題には6問あるが、(もとの書き方含めて)6×72 = 432 種の書き方を列挙するという“バカバカしくも手間がかかる練習”。実際「バカバカしい」と感じる人もいるだろうが、記法の変化に対する適応力がイマイチと感じる人はやってみて(全部じゃなくてもいいから)。どんな書き方が出現しても動じずに対応できる耐性と適応能力を養ってくださいな。

実際の解答を作成するのも手間がかかる作業なので、(a1, a2, a3) に対するバリエーション72種を下の表で完全に列挙する(表の後に続きの説明あり)。

[追記]はてなダイアリーの仕様変更、またはエンバグにより、表のレンダリングが乱れるようになってしまいました。次のURLに同じ表があります。

[/追記]

番号 方向 囲み括弧 区切り記号 インデックスの記法
1 丸括弧 カンマ 下付き添字  (a_1, a_2, a_3)
2 丸括弧 カンマ 角括弧  (a[1], a[2], a[3])
3 丸括弧 カンマ 丸括弧  (a(1), a(2), a(3))
4 丸括弧 縦棒 下付き添字  (a_1\mid a_2\mid a_3)
5 丸括弧 縦棒 角括弧  (a[1]\mid a[2]\mid a[3])
5 丸括弧 縦棒 丸括弧  (a(1)\mid a(2)\mid a(3))
7 丸括弧 なし 下付き添字  (a_1\; a_2\; a_3)
8 丸括弧 なし 角括弧  (a[1]\; a[2]\; a[3])
9 丸括弧 なし 丸括弧  (a(1)\; a(2)\; a(3))
10 角括弧 カンマ 下付き添字  [a_1, a_2, a_3]
11 角括弧 カンマ 角括弧  [a[1], a[2], a[3]]
12 角括弧 カンマ 丸括弧  [a(1), a(2), a(3)]
13 角括弧 縦棒 下付き添字 [a_1\mid a_2\mid a_3)]
14 角括弧 縦棒 角括弧  [a[1]\mid a[2]\mid a[3]]
15 角括弧 縦棒 丸括弧  [a(1)\mid a(2)\mid a(3))\
16 角括弧 なし 下付き添字  [a_1\; a_2\; a_3]
17 角括弧 なし 角括弧  [a[1]\; a[2]\; a[3]]
18 角括弧 なし 丸括弧  [a(1)\; a(2)\; a(3)]
19 波括弧 カンマ 下付き添字  \{a_1, a_2, a_3\}
20 波括弧 カンマ 角括弧  \{a[1], a[2], a[3]\}
21 波括弧 カンマ 丸括弧  \{a(1), a(2), a(3)\}
22 波括弧 縦棒 下付き添字  \{a_1\mid a_2\mid a_3\}
23 波括弧 縦棒 角括弧  \{a[1]\mid a[2]\mid a[3]\}
24 波括弧 縦棒 丸括弧  \{a(1)\mid a(2)\mid a(3)\}
25 波括弧 なし 下付き添字  \{a_1\; a_2\; a_3\}
26 波括弧 なし 角括弧  \{a[1]\; a[2]\; a[3]\}
27 波括弧 なし 丸括弧  \{a(1)\; a(2)\; a(3)\}
28 括弧なし カンマ 下付き添字   a_1, a_2, a_3
29 括弧なし カンマ 角括弧   a[1], a[2], a[3]
30 括弧なし カンマ 丸括弧   a(1), a(2), a(3)
31 括弧なし 縦棒 下付き添字   a_1\mid a_2\mid a_3
32 括弧なし 縦棒 角括弧   a[1]\mid a[2]\mid a[3]
33 括弧なし 縦棒 丸括弧   a(1)\mid a(2)\mid a(3)
34 括弧なし なし 下付き添字   a_1\; a_2\; a_3
35 括弧なし なし 角括弧   a[1]\; a[2]\; a[3]
36 括弧なし なし 丸括弧   a(1)\; a(2)\; a(3)
37 丸括弧 なし 下付き添字 \begin{pmatrix}a_1 \\ a_2 \\ a_3 \end{pmatrix}
38 丸括弧 なし 角括弧 \begin{pmatrix}a[1] \\ a[2] \\ a[3] \end{pmatrix}
39 丸括弧 なし 丸括弧 \begin{pmatrix}a(1) \\ a(2) \\ a(3) \end{pmatrix}
40 角括弧 なし 下付き添字 \begin{bmatrix}a_1 \\ a_2 \\ a_3 \end{bmatrix}
41 角括弧 なし 角括弧 \begin{bmatrix}a[1] \\ a[2] \\ a[3] \end{bmatrix}
42 角括弧 なし 丸括弧 \begin{bmatrix}a(1) \\ a(2) \\ a(3) \end{bmatrix}
43 括弧なし なし 下付き添字 \begin{matrix}a_1 \\ a_2 \\ a_3 \end{matrix}
44 括弧なし なし 角括弧 \begin{matrix}a[1] \\ a[2] \\ a[3] \end{matrix}
45 括弧なし なし 丸括弧 \begin{matrix}a(1) \\ a(2) \\ a(3) \end{matrix}
46 無関係 丸括弧 下付き添字 縦棒左に添字集合  (a_i \mid i\in \{1, 2, 3\})
47 無関係 丸括弧 下付き添字 縦棒右に添字集合  (i\in \{1, 2, 3\} \mid a_i)
48 無関係 丸括弧 下付き添字 右下に添字集合  (a_i)_{i\in \{1, 2, 3\}}
49 無関係 丸括弧 角括弧 縦棒左に添字集合  (a[i] \mid i\in \{1, 2, 3\})
50 無関係 丸括弧 角括弧 縦棒右に添字集合  (i\in \{1, 2, 3\} \mid a[i])
51 無関係 丸括弧 角括弧 右下に添字集合  (a[i])_{i\in \{1, 2, 3\}}
52 無関係 丸括弧 丸括弧 縦棒左に添字集合  (a(i) \mid i\in \{1, 2, 3\})
53 無関係 丸括弧 丸括弧 縦棒右に添字集合  (i\in \{1, 2, 3\} \mid a(i))
54 無関係 丸括弧 丸括弧 右下に添字集合  (a(i))_{i\in \{1, 2, 3\}}
55 無関係 角括弧 下付き添字 縦棒左に添字集合  [a_i \mid i\in \{1, 2, 3\}]
56 無関係 角括弧 下付き添字 縦棒右に添字集合  [i\in \{1, 2, 3\} \mid a_i]
57 無関係 角括弧 下付き添字 右下に添字集合  [a_i]_{i\in \{1, 2, 3\}}
58 無関係 角括弧 角括弧 縦棒左に添字集合  [a[i] \mid i\in \{1, 2, 3\}]
59 無関係 角括弧 角括弧 縦棒右に添字集合  [i\in \{1, 2, 3\} \mid a[i]]
60 無関係 角括弧 角括弧 右下に添字集合  [a[i]]_{i\in \{1, 2, 3\}}
61 無関係 角括弧 丸括弧 縦棒左に添字集合  [a(i) \mid i\in \{1, 2, 3\}]
62 無関係 角括弧 丸括弧 縦棒右に添字集合  [i\in \{1, 2, 3\} \mid a(i)]
63 無関係 角括弧 丸括弧 右下に添字集合  [a(i)]_{i\in \{1, 2, 3\}}
64 無関係 波括弧 下付き添字 縦棒左に添字集合  \{a_i \mid i\in \{1, 2, 3\}\}
65 無関係 波括弧 下付き添字 縦棒右に添字集合  \{i\in \{1, 2, 3\} \mid a_i\}
66 無関係 波括弧 下付き添字 右下に添字集合  \{a_i\}_{i\in \{1, 2, 3\}}
67 無関係 波括弧 角括弧 縦棒左に添字集合  \{a[i] \mid i\in \{1, 2, 3\}\}
68 無関係 波括弧 角括弧 縦棒右に添字集合  \{i\in \{1, 2, 3\} \mid a[i]\}
69 無関係 波括弧 角括弧 右下に添字集合  \{a[i]\}_{i\in \{1, 2, 3\}}
70 無関係 波括弧 丸括弧 縦棒左に添字集合  \{a(i) \mid i\in \{1, 2, 3\}\}
71 無関係 波括弧 丸括弧 縦棒右に添字集合  \{i\in \{1, 2, 3\} \mid a(i)\}
72 無関係 波括弧 丸括弧 右下に添字集合  \{a(i)\}_{i\in \{1, 2, 3\}}

これでバリエーションが尽きてるわけでもなく、括弧として山形括弧(〈 と 〉)もあるし、(指数でなくても)上付き添字も使う。集合 {1, 2, 3} を 1..3 とか 1, .., 3 とか書くかも知れない。例えば、次は上の表に出てきてない。

  •  \langle a_1, a_2, a_3 \rangle (山形括弧)
  •  (a^1, a^2, a^3) (上付き添字)
  •  (a_i)_{i\in 1..3} (1..3 を使う)

書き方がどうであれ、例えば実数のタプルならば、

  • 要するに3つの実数(Rの要素)を並べたものでしょ
  • 所詮、{1, 2, 3} から実数の集合Rへの写像に過ぎないでしょ

といった反応・対応をする。

もちろん、実数のタプルのように見えるが、違う意味の場合もある。それは文脈によるので、常に文脈を意識しながら解釈する。