順序組
数学における順序組(じゅんじょぐみ、ordered tuplet, ordered list etc.)あるいは単に組 (tuple, tuplet etc.) とは、通常は有限な長さの列を言う。特に非負整数 n に対して、n 個の対象を順番に並べた(あるいは番号付けた)ものは n-組 (n-tuple) と呼ぶ(このとき、並べられた対象のことは、この n-組の「要素」や「成分」などと呼ぶ)。
0-組はただ一つ存在して「何も並べないこと」を意味するが、文脈によりそれは空集合や、空列や、空リストなどと呼ばれる。
1-組(あるいは一つ組)は定義により、ただ一つの元からなる集合、ただ一つの項からなる列、ただ一つの点からなる空間などであって、それはそのそれぞれのただ一つの要素であるところの元、項、点などとは厳密には異なるが、にも拘らず多くの場合においてその唯一の要素と同一視して、あるいはそれら要素自身を指す意味で用いられる。
小さい n に対する n-組はしばしば、3-組を「三つ組」(triple)、4-組を「四つ組」(quadruple) などのように呼ぶこともある。
任意の長さ n に対する n-組は、順序対の構成を帰納的に用いて定義できる。順序組はふつう、要素をコンマで区切って書き並べたものを丸括弧 "()" で括る。例えば (2, 7, 4, 1, 7) は五つ組である。要素を括る約物は、ときどき角括弧 "[]" や山括弧 "" や場合によっては 波括弧 "" を使うこともある。特に波括弧は(歴史的な経緯で、数列や点列を扱う文脈などではしばしば用いられるが)標準的な集合を表す記法と紛らわしいため注意すべきである。
順序組はベクトルなどほかの数学的対象を記述するのにも用いられる。計算機科学や言語学、哲学などにおいても順序組は用いられる。
もっとも重要な一般規則(順序組の定義性質)として、二つの n-組が相等しい:
(a_1, a_2, \ldots, a_n) = (b_1, b_2, \ldots, b_n)
とは、a1 = b1 かつ a2 = b2 かつ … かつ an = bn を満たすことが必要十分である。
したがって順序組は、以下の如く集合とは異なる性質を持つことに注意すべきである:
順序組は同じ要素を複数持ち得る: 組として (1, 2, 2, 3) ≠ (1, 2, 3) だが、集合では 1, 2, 2, 3 = 1, 2, 3 である。
順序組は要素の順番を変えてはならない: 組として (1, 2, 3) ≠ (3, 2, 1) だが、集合では 1, 2, 3 = 3, 2, 1 である。
順序組は前節の「性質」を持つものとして定義される。そのような定義の仕方はいくつか存在する。
集合を扱える文脈において、n-組は、以下のような写像 F: X → Y と見なすことができる。すなわち、その定義域 X は組の各要素を指し示す陰伏的な添字の集合(添字集合)で、終域 Y は要素の順序組すべての成す集合である。集合論の言葉では
(a_1, a_2, \dots, a_n) \stackrel{\text{def}}\iff{ (X,Y,F)
where:
\begin{align}
X & = \{1, 2, \dots, n\}                       \\
Y & = \{a_1, a_2, \ldots, a_n\}                \\
F & = \{(1, a_1), (2, a_2), \ldots, (n, a_n)\}. \\
\end{align}
より直観的な書き方をすれば、
(a_1, a_2, \dots, a_n) \stackrel{\text{def}{ (F(1), F(2), \dots, F(n))
と定義されるということである。
集合論における順序対のモデル化は順序対を用いても定義できる。ただし、順序対は既に定義されているものとする(そして、順序対は二つ組である)。
0-組(空組)は空集合 ∅ とする。
n > 0 に対する n-組は、初項と (n − 1)-組との順序対 (a_1, a_2, a_3, \ldots, a_n) := (a_1, (a_2, a_3, \ldots, a_n)) と定める。
この構成を (n − 1)-組に対しても帰納的に適用して、最終的に
(a_1, a_2, a_3, \ldots, a_n) \stackrel{\text{def}{ (a_1, (a_2, (a_3, (\ldots, (a_n, \emptyset)\ldots)))).
同様の仕方で、要素を後ろに追記していく形に定義することもできる:
0-組 ∅;
n > 0 に対して (a_1, a_2, a_3, \ldots, a_n) := ((a_1, a_2, a_3, \ldots, a_{n-1}), a_n).
(a_1, a_2, a_3, \ldots, a_n) \stackrel{\text{def}{ ((\ldots(((\emptyset, a_1), a_2), a_3), \ldots), a_n).
さて集合論において、順序対は集合として定義される(例えばクラトフスキーの定義)から、順序対による順序組の定義も集合によって定式化できる:
0-組 ∅;
n-組 x = (a1, a2, …, an) と右に追加される要素 b に対し、(a_1, a_2, \ldots, a_n, b) := \{\{x\}, \{x, b\}\}
離散数学、特に初等組合せ論および有限確率論において、n-組は様々な数え上げ問題において、長さ n の(あまり形式ばらない意味での)要素の並びを表すために用いられる。m-元集合から要素をとって作られる n-組は重複順列 (arrangement with repetition) と呼び、その総数は mn 個である。これは組合せ論における積の法則からわかる。この数は位数 m の有限集合 S の n-重デカルト積 S × S × ⋯ × S(この直積集合の元は考えている重複順列 (n-組) のことに他ならない)の位数に等しい。
プログラミング言語に広く用いられる型理論において、順序組は直積型を持つ(これは組の長さも各成分のもつ型も固定しない意味で言う)。形式的には
(x_1, x_2, \ldots, x_n) : \mathsf{T}_1 \times \mathsf{T}_2 \times \ldots \times \mathsf{T}_n
であり、射影は項構成子:
\pi_1(x) : \mathsf{T}_1,~\pi_2(x) : \mathsf{T}_2,~\ldots,~\pi_n(x) : \mathsf{T}_n
である。関係モデルで用いられるラベル付き要素の順序組はレコード型を持つ。これらの型は単純型付きラムダ計算の単純拡大として定義できる。
型理論における順序組の概念と集合論における順序組の概念には以下のような関係がある: 型理論の自然なモデルを考えれ、意味論的解釈にスコット括弧を用いれば、適当な集合 S_1, S_2, \ldots, S_n(ここでイタリックは集合をあらわし、その型特別するために用いることに注意)からなるモデルとして
[\![\mathsf{T}_1]\!] = S_1,~[\![\mathsf{T}_2]\!] = S_2,~\ldots,~[\![\mathsf{T}_n]\!] = S_n
[\![x_1]\!] \in [\![\mathsf{T}_1]\!],~[\![x_2]\!] \in [\![\mathsf{T}_2]\!],~\ldots,~[\![x_n]\!] \in [\![\mathsf{T}_n]\!]
とすれば、この型理論における n-組は集合論における n-組として自然な解釈
[\![(x_1, x_2, \ldots, x_n)]\!] = (\,[\![x_1]\!], [\![x_2]\!], \ldots, [\![x_n]\!]\,)
を持つ。ユニット型は 0-組を意味論的解釈に持つ。