自然演繹にだいたい対応する回路図
図そのものより、図示の基礎を書く。
デカルト閉圏Cを固定して、I := IdC、直積を∧、単位を1、始対象を0とする。Δ:C→C×C はコピー、Πi:C×C→C は射影、K:C→I は一点への潰し、S:C×C→C×Cはスワップ。
自然変換
自然変換の記号 | プロファイル | 名前 | 略称 |
---|---|---|---|
ι | I⇒I | 恒等 | ident |
δ | I⇒Δ*∧ | 複写 | dup |
π1 | ∧⇒Π1 | 第1射影 | proj1 |
π2 | ∧⇒Π2 | 第2射影 | proj2 |
ε | (Π1×▷)*∧⇒Π2 | 評価 | eval |
σ | ∧⇒S*∧ | 対称 | symm |
! | I⇒K*T | 終射 | term |
θ | K*⊥⇒I | 始射 | init |
κ1 | Π1⇒∨ | 第1入射 | inj1 |
κ2 | Π2⇒∨ | 第2入射 | inj2 |
自然変換の成分表示
- ιA:A→A
- δA:A→A∧A
- π1A,B:A∧B→A
- π2A,B:A∧B→B
- εA,B:A∧A▷B→B
- σA,B:A∧B→B∧A
- !A:A→1
- θA:0→A
関手
関手の記号 | プロファイル | 図 |
---|---|---|
I | C→C | ワイヤー |
Δ | C→C×C | 分岐 |
∧ | C×C→C | 合流 |
▷ | Cop×C→C | 左指数 |
◁ | C×Cop→C | 右指数 |
K | C→I | 潰し |
T | I→C | 真定数 |
⊥ | I→C | 偽定数 |
S | C×C→C×C | スワップ |
Π1 | C×C→C | 一本消去 |
Π2 | C×C→C | 一本消去 |
↑で反対圏の射を表す。▷, ◁は反対圏を必要とする。
外部オペレータ
- カリー化、反カリー化 Λ, Λ-1 ∀X,A,B. C(A∧X, B)C(X, A▷B)
- 圏、関手、自然変換の直積
- 関手、自然変換の横結合
- 自然変換の縦結合
Cの内部オペレータとして、
- 対象、射のモノイド積
- 射の結合
図示
- 横併置: 関手、自然変換の直積
- 縦スタッキング: 射の結合、自然変換の縦結合 / 一部は関手の(横)結合
混乱
- 単独の射(例:公理射)と自然変換の成分表示が区別されてない。
- 変数(パラメータ)と定数の区別が付いてない。
- クラスとインスタンスの区別が付いてない。
- その他、色々と無茶苦茶。
パラメータ(命題変数)、シェマ(テンプレート)、インスタンス(代入例)で少しは区別を付けよう。対象パラメータの使い方は、関手の対象部分の表現。自然変換を表現するときも、プロファイルとしてパラメータが使われる。
- 昔関数と関数値を区別しなかったように、関手と関手の対象値を区別できてない。
- 関手の射部分を意識してない。特に指数関手で問題が出る。
{primitive | basic | atomic | builit-in} と {composed | composite | compound | defined | constructed | macro | inferred | derived} の区別。同義語いっぱいだし。