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

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

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

参照用 記事

指標の組織化と表現方法と呼び名は色々だ

以下の論文、タイトルを見て興味をそそられました。が、「んっ? 思ってたのと違う」となりました。コンピュータッドも指標も僕が知っているコンピュータッド/指標とは定義が異なるのです。が、冷静になって考えると「あっ、やっぱり同じか」となりました。

  • [Mar23-]
  • Title: Computads for generalised signatures
  • Author: Ioannis Markakis
  • Submitted: 21 Mar 2023 (v1), 9 Jun 2023 (v2)
  • Pages: 39p
  • URL: https://arxiv.org/abs/2303.11978

マルカキスの意味の指標〈signature〉が、なぜ(初見では)「僕が知っている指標とは異なる」ように見えたのか? を説明します。$`\newcommand{\mrm}[1]{ \mathrm{#1} }
\newcommand{\id}{ \mathrm{id} }
%\newcommand{\hyp}{\text{-} }
\newcommand{\NFProd}[3]{ \mathop{_{#1} \!\underset{#2}{ \times }\,\!_{#3} } }
\require{color} % Using
\newcommand{\NN}[1]{ \textcolor{orange}{\text{#1}} } % New Name
\newcommand{\NX}[1]{ \textcolor{orange}{#1} } % New EXpression
\newcommand{\T}[1]{\text{#1} }
`$

内容:

関連記事:

  1. 指標の組織化と表現方法と呼び名は色々だ (この記事)
  2. 指標の話: 形状の記述と形状付き集合
  3. 指標の話: ペースティング図とバタニン・ツリー

指標の具体例と書き方の変種

指標については、過去記事「構造記述のための指標と名前 1/n 基本」、「構造記述のための指標と名前 3/n 名前もっと」を参照してください。

毎度毎度のお決まりなのですが、モノイドの指標を例に挙げます。指標名〈分類子名〉と構成素役割り名の最初の出現だけオレンジ色にします。

$`\T{signature }\NN{Monoid}\:\{\\
\quad \T{sort }\NX{U}\\
\quad \T{operation } \NX{m}: U\times U \to U\\
\quad \T{operation } \NX{e}: {\bf 1} \to U\\
\quad \T{equation } \NX{\mrm{assoc}} :: (m \times \id_U); m = \alpha_{U,U,U};(\id_U \times m);m\\
\quad \T{equation } \NX{\mrm{lunit}} :: \lambda_U; (e \times \id_U); m = \id_U\\
\quad \T{equation } \NX{\mrm{runit}} :: \rho_U; (\id_U \times e); m = \id_U\\
\}`$

この指標の解釈は集合圏で行うとします。つまり、普通のモノイドがモデルになります。

宣言の先頭に、「何を宣言しているのか?」を明示するためのキーワードが付いています。sort〈種別〉、operation〈演算〉、equation〈等式〉です。このキーワードの選び方はまったく恣意的です。次のようなキーワードを使ってもいいでしょう。

$`\T{signature }\NN{Monoid}\:\{\\
\quad \T{type }\NX{U}\\
\quad \T{function } \NX{m}: U\times U \to U\\
\quad \T{function } \NX{e}: {\bf 1} \to U\\
\quad \T{law } \NX{\mrm{assoc}} : (m \times \id_U); m = \alpha_{U,U,U};(\id_U \times m);m\\
\quad \T{law } \NX{\mrm{lunit}} :: \lambda_U; (e \times \id_U); m = \id_U\\
\quad \T{law } \NX{\mrm{runit}} :: \rho_U; (\id_U \times e); m = \id_U\\
\}`$

上の指標のキーワード type, function, law は、指標を解釈する圏(今の場合は集合圏)の 0-射、1-射、2-射のことなので、次のようなキーワードを使ったこともあります。

$`\T{signature }\NN{Monoid}\:\{\\
\quad \T{0-mor }\NX{U}\\
\quad \T{1-mor } \NX{m}: U\times U \to U\\
\quad \T{1-mor } \NX{e}: {\bf 1} \to U\\
\quad \T{2-mor } \NX{\mrm{assoc}} :: (m \times \id_U); m = \alpha_{U,U,U};(\id_U \times m);m\\
\quad \T{2-mor } \NX{\mrm{lunit}} :: \lambda_U; (e \times \id_U); m = \id_U\\
\quad \T{2-mor } \NX{\mrm{runit}} :: \rho_U; (\id_U \times e); m = \id_U\\
\}`$

味気ないけど、キーワードが余計な連想・感情を引き起こさないことがメリットです。

今使っている書き方だと、コロンの個数で射の次元が判断できるので、射の次元を示すキーワードは削除してしまっても問題ありません。

$`\T{signature }\NN{Monoid}\:\{\\
\quad \NX{U}\\
\quad \NX{m}: U\times U \to U\\
\quad \NX{e}: {\bf 1} \to U\\
\quad \NX{\mrm{assoc}} :: (m \times \id_U); m = \alpha_{U,U,U};(\id_U \times m);m\\
\quad \NX{\mrm{lunit}} :: \lambda_U; (e \times \id_U); m = \id_U\\
\quad \NX{\mrm{runit}} :: \rho_U; (\id_U \times e); m = \id_U\\
\}`$

指標名〈分類子名〉の選択も、構成素役割り名の選択もまったく恣意的です。日本語の名前、中置演算子記号、数字一文字の名前、フラクトゥール体の名前を使っても別にかまいません。

$`\T{signature }\NN{モノイド}\:\{\\
\quad \NX{A}\\
\quad \NX{(*)}: A\times A \to A\\
\quad \NX{1}: {\bf 1} \to A\\
\quad \NX{\mathfrak{as}} :: ( (*) \times \id_A); (*) = \alpha_{A,A,A};(\id_A \times (*));(*)\\
\quad \NX{\mathfrak{lu}} :: \lambda_A; (1 \times \id_A); (*) = \id_A\\
\quad \NX{\mathfrak{ru}} :: \rho_A; (\id_A \times 1); (*) = \id_A\\
\}`$

指標の構造化・組織化

指標は宣言を並べたものですが、単にフラットに並べるのではなくてグルーピングすることがあります。グルーピングのまとまりを示すために入れ子の中括弧ブロックを使って書いてみまます(鬱陶しくなりますが)。

$`\T{signature }\NN{Monoid}\:\{\\
\: \T{sorts }\{\\
\quad \NX{U}\\
\:\}\\
\:\T{operations }\{\\
\quad \NX{m}: U\times U \to U\\
\quad \NX{e}: {\bf 1} \to U\\
\:\}\\
\:\T{equations }\{\\
\quad \NX{\mrm{assoc}} :: (m \times \id_U); m = \alpha_{U,U,U};(\id_U \times m);m\\
\quad \NX{\mrm{lunit}} :: \lambda_U; (e \times \id_U); m = \id_U\\
\quad \NX{\mrm{runit}} :: \rho_U; (\id_U \times e); m = \id_U\\
\:\}\\
\}`$

過去記事「指標と仕様」において、指標内のグループをパート〈part〉と呼び、パート分けされた指標を多パート指標〈multipart signature〉と呼びました。

パート分けをするかしないか、どのようにパート分けするか、各パート〈ブロック〉にどんな名前を付けるかもまったく恣意的です。恣意的なのですが、パート分けの選択は、その後の定義や定式化に影響します。

比較的によく使われるパート分けは、データパートと公理パートの2つのパートへの分割です。

$`\T{signature }\NN{Monoid}\:\{\\
\: \T{data }\{\\
\quad \NX{U}\\
\quad \NX{m}: U\times U \to U\\
\quad \NX{e}: {\bf 1} \to U\\
\:\}\\
\:\T{axioms }\{\\
\quad \NX{\mrm{assoc}} :: (m \times \id_U); m = \alpha_{U,U,U};(\id_U \times m);m\\
\quad \NX{\mrm{lunit}} :: \lambda_U; (e \times \id_U); m = \id_U\\
\quad \NX{\mrm{runit}} :: \rho_U; (\id_U \times e); m = \id_U\\
\:\}\\
\}`$

データパートを「指標」と呼び、公理パートを含めると「仕様」と呼ぶ場合もあります。この場合、「指標」の意味は狭くなります(公理パートを含まないという条件が付くので)。

モノイドの指標を複圏〈オペラッド〉において解釈する前提だと、指標の書き方も変わります。

$`\T{signature }\NN{Monoid}\:\{\\
\: \T{colors }\{\\
\quad \NX{A}\\
\:\}\\
\:\T{operations }\{\\
\quad \NX{m}: (A, A) \to A\\
\quad \NX{e}: () \to A\\
\:\}\\
\:\T{axioms }\{\\
\quad \NX{\mrm{assoc}} :: (m , \id_A); m = (\id_A , m);m\\
\quad \NX{\mrm{lunit}} :: (e , \id_A); m = \id_A\\
\quad \NX{\mrm{runit}} :: (\id_A , e); m = \id_A\\
\:\}\\
\}`$

複圏〈オペラッド〉の対象を〈color | カラー〉と呼ぶ習慣があるので、パートの名前〈キーワード〉は colors にしています。直積記号は使わずに、リストを使っています。直積 $`\times`$ と終対象兼単位対象 $`{\bf 1}`$ は、リストの連接と空リストにより表現されます。

colorsパートは色集合〈set of colors〉として別に準備して、operationsパートとaxiomsパートだけを「指標」と呼んでいる例がありました。公理パート〈法則パート〉は指標に入れない、という流儀だと、operationsパートだけが指標です。どこを「指標」と呼ぶかもバラバラなんです。

形状と代数構造

冒頭で触れたマルカキス〈Ioannis Markakis〉の指標ですが、彼がどの部分を「指標」と呼んでいるかを説明するための例として圏の指標を取り上げます。ただし、圏の法則〈公理〉は除いたものです。現時点で、マルカキスが法則をどう扱っているかよく分からないので。

$`\T{signature }\NN{LawlessCategory}\:\{\\
\quad \T{sort } \NX{O}\\
\quad \T{sort } \NX{M}\\
\quad \T{operation } \NX{\mrm{dom}} : M \to O\\
\quad \T{operation } \NX{\mrm{cod}} : M \to O\\
\quad \T{operation } \NX{\mrm{id}} : O \to M\\
\quad \T{operation } \NX{\mrm{comp}} : M \NFProd{\mrm{cod}}{O}{\mrm{dom}} M \to M\\
\}`$

$`M \NFProd{\mrm{cod}}{O}{\mrm{dom}} M`$ は、コスパンに対するファイバー積を表します。

さて、マルカキスの流儀だと、法則無し圏の指標を次のようにパート分けします。

$`\T{signature }\NN{LawlessCategory}\:\{\\
\:\T{shape }\{\\
\quad \T{sort } \NX{O}\\
\quad \T{sort } \NX{M}\\
\quad \T{face } \NX{\mrm{dom}} : M \to O\\
\quad \T{face } \NX{\mrm{cod}} : M \to O\\
\:\}\\
\:\T{algebra }\{\\
\quad \T{operation } \NX{\mrm{comp}} : M \NFProd{\mrm{cod}}{O}{\mrm{dom}} M \to M\\
\quad \T{operation } \NX{\mrm{id}} : O \to M\\
\:\}\\
\}`$

圏は有向グラフを台〈underlying thing〉として、その上に結合演算と恒等〈単位〉が載っている代数系だと考えられます。shapeパートで台となるグラフ構造を記述して、algebraパートでモノイド類似の演算達を記述しています。

マルカキスは、shapeパートは切り離して別に定義して、algebraパート(何らかの方法で法則も含めるのかも)を「指標」と呼んでいるのです。前節の最後の例でも色集合を切り離していたので、同じような発想です。

ちょっと分かりにくいのは、マルカキスはshapeパートを「ソート」と呼んでいるのです。「(広義の)ソート」パートがさらに「(狭義の)ソート」の宣言と面写像〈face〉の宣言に分かれることになります。ここでは、「ソート=マルカキスの狭義のソート」「シェープ〈形状〉=マルカキスの広義のソート」とします。

法則無し圏の例だと、代数演算(の名前)が2つ($`\mrm{comp}`$ と $`\mrm{id}`$)しかないので、“分類する”と言ってもあまり意味がないのですが、代数演算は余域のソートによって分類されます。

ソート(マルカキスの狭義のソート)の集合を $`S`$ として、指標 $`\Sigma`$ に現れるすべての代数演算の名前〈記号〉の集合を $`\mrm{OpSym}(\Sigma)`$ とします。“分類する”とは、集合 $`\mrm{OpSym}(\Sigma)`$ を次のようなインデックス付き集合族〈indexed family of sets〉の形に書くことです。

$`\quad (\mrm{OpSym}(\Sigma)_s)_{s\in S}\\
\text{Where}\\
\quad \mrm{OpSym}(\Sigma)_s \subseteq \mrm{OpSym}(\Sigma) \text{ for }s\in S\\
\quad \mrm{OpSym}(\Sigma)_s \cap \mrm{OpSym}(\Sigma)_t = \emptyset \text{ if } s \ne t\\
\quad \bigcup_{s\in S}\mrm{OpSym}(\Sigma)_s = \mrm{OpSym}(\Sigma)
`$

このとき、$`\mrm{OpSym}(\Sigma)_s`$ は、余域(値をとる対象)のソートが $`s \in S`$ であるような演算記号の集合として定義されます。

おわりに

「指標」、「ソート」、「シェープ」、「仕様」などの言葉の使い方は、ほんとに色々なんですよね。これに関わる、「生成系」、「プレゼンテーション」、「コンテキスト」、「代数」、「モデル」、「表現〈representation〉」、「コンピュータッド」、「セオリー」、「図式」、「セル」、「パス」、「項」などの言葉も多義曖昧で、人により場合により何を指すかはバラバラです。

とりあえず、マルカキスは、シェープの記述は切り離して、代数演算(ひょっとして代数法則も)の記述だけを「指標」と呼んでいるのは分かりました。次は、マルカキスの「コンピュータッド」と「代数」が何を指しているか? だね。