タプル

数学において、タプルとは、有限のまたは順序付きリスト、あるいはより一般的には数学的オブジェクトであり、これらはタプルの要素と呼ばれます。nタプルn個の要素を持つタプルで、nは負でない整数です。0 タプルは 1 つだけ存在し、空タプルと呼ばれます。1 タプルと 2 タプルは、それぞれシングルトン順序付きペアと呼ばれます。 「無限タプル」という用語は、 「無限列」を指すために使用されることもあります。

タプルは通常、要素を括弧「()」で囲み、カンマで区切って記述されます。例えば、(2, 7, 4, 1, 7) は5つ​​の要素を持つタプルを表します。他の種類の括弧が使用される場合もありますが、意味が異なる場合があります。[ a ]

nタプルはn個の最初の自然数の集合を定義とする関数として正式に定義できます。タプルは、順序付きペアから始まる再帰によって、順序付きペアから定義することもできます。実際、nタプルは、その( n − 1)番目の要素とn番目の要素の順序付きペアと同一視できます。たとえば、 です。 12341234{\displaystyle \left(\left(\left(1,2\right),3\right),4\right)=\left(1,2,3,4\right)}

コンピュータサイエンスにおいて、タプルは様々な形式で存在します。ほとんどの型付き関数型プログラミング言語は、タプルを積型として直接実装しており、[ 1 ]代数データ型パターンマッチング構造化代入と密接に関連しています。[ 2 ]多くのプログラミング言語は、ラベルでアクセスできる順序なし要素を備えたレコード型と呼ばれるタプルの代替手段を提供しています。 [ 3 ]いくつかのプログラミング言語では、 Cの構造体やHaskellのレコードのように、順序付きタプル積型と順序なしレコード型を1つの構造に組み合わせています。リレーショナルデータベースでは、(レコード)を正式にタプルとして識別する場合があります。

タプルは、リレーショナル代数、リソース記述フレームワーク(RDF)を使ったセマンティックウェブのプログラミング、言語学[ 4 ] 哲学[ 5 ]などでも使用されます。

語源

この用語は、シングル、カップル/ダブル、トリプル、クアドラプル、クインタプル、セクスタプル、セプタプル、オクタプル、...、nタプル、... というシーケンスを抽象化して作成されました。接頭辞は数字のラテン語名から取られています。一意の 0 タプルは、ヌル タプルまたは空のタプルと呼ばれます。1 タプルはシングル(またはシングルトン)、2 タプルは順序付きペアまたはカップル、3 タプルはトリプル(またはトリプレット) と呼ばれます。数値nは任意の非負の整数です。たとえば、複素数は2 タプルの実数として、四元数は 4 タプルとして、八元数は 8 タプルとして、十元数は16 タプルとして表すことができます。

これらの用法では「-tuple」を接尾辞として扱っていますが、元々の接尾辞は「triple」(三重)や「decuple」(十重)のように 「-ple」でした。これは中世ラテン語の「plus」(「より多く」の意)に由来し、ギリシャ語の「-πλοῦς」と関連しています。この語は、古典期および後期古代の「-plex」(「折り畳まれた」の意)(「duplex」など)に取って代わりました。[ 6 ] [ b ]

プロパティ

2つのn組の同一性に関する一般的な規則は

1つの11つの21つのnb1b2bn{\displaystyle (a_{1},a_{2},\ldots ,a_{n})=(b_{1},b_{2},\ldots ,b_{n})}の場合に限ります1つの1b1 1つの2b2  1つのnbn{\displaystyle a_{1}=b_{1},{\text{ }}a_{2}=b_{2},{\text{ }}\ldots ,{\text{ }}a_{n}=b_{n}}

したがって、タプルにはセットと区別するプロパティがあります。

  1. タプルには同じ要素の複数のインスタンスが含まれることがあるため、tuple ; ではなく set です。1223123{\displaystyle (1,2,2,3)\neq (1,2,3)}{1223}{123}{\displaystyle \{1,2,2,3\}=\{1,2,3\}}
  2. タプルの要素は順序付けられます: タプル、ただし セット。123321{\displaystyle (1,2,3)\neq (3,2,1)}{123}{321}{\displaystyle \{1,2,3\}=\{3,2,1\}}
  3. タプルには有限数の要素がありますが、セットまたはマルチセットには無限の数の要素がある場合があります。

定義

前のセクションで説明したプロパティを与えるタプルの定義はいくつかあります。

関数としてのタプル

-組は空関数と同一視される。-組は射影関数と同一視される。0{\displaystyle 0}n1{\displaystyle n\geq 1,}n{\displaystyle n}1つの11つのn{\displaystyle \left(a_{1},\ldots ,a_{n}\right)}

F : {1n}  {1つの11つのn}{\displaystyle F~:~\left\{1,\ldots ,n\right\}~\to ~\left\{a_{1},\ldots ,a_{n}\right\}}

ドメイン付き

ドメインF{1n}{:1n}{\displaystyle \operatorname {domain} F=\left\{1,\ldots ,n\right\}=\left\{i\in \mathbb {N} :1\leq i\leq n\right\}}

そしてコドメイン

コドメインF{1つの11つのn}{\displaystyle \operatorname {codomain} F=\left\{a_{1},\ldots ,a_{n}\right\},}

それは次のよう に定義されるドメインF{1n}{\displaystyle i\in \operatorname {domain} F=\left\{1,\ldots ,n\right\}}

F:=1つの{\displaystyle F(i):=a_{i}.}

つまり、関数は次のように定義されます F{\displaystyle F}

11つの1n1つのn{\displaystyle {\begin{alignedat}{3}1\;&\mapsto &&\;a_{1}\\\;&\;\;\vdots &&\;\\n\;&\mapsto &&\;a_{n}\\\end{alignedat}}}

その場合、平等

1つの11つの21つのnF1F2Fn{\displaystyle \left(a_{1},a_{2},\dots ,a_{n}\right)=\left(F(1),F(2),\dots ,F(n)\right)}

必ずしも成立する。

順序付きペアの集合としてのタプル

関数は一般的にグラフ、つまり順序​​付き対の集合によって識別されます。実際、多くの著者はグラフを関数の定義として用いています。この「関数」の定義を用いると、上記の関数は次のように定義できます。 F{\displaystyle F}

F := {11つの1n1つのn}{\displaystyle F~:=~\left\{\left(1,a_{1}\right),\ldots ,\left(n,a_{n}\right)\right\}.}

入れ子になった順序付きペアとしてのタプル

集合論においてタプルをモデル化するもう一つの方法は、入れ子になった順序付きペアとしてモデル化することです。このアプローチでは、順序付きペアの概念が既に定義されていることを前提としています。

  1. 0 タプル (つまり空のタプル) は空セットによって表されます。{\displaystyle \emptyset }
  2. n > 0のnタプルは、その最初エントリと( n − 1)タプル ( n > 1のときの残りのエントリを含む)の順序付きペアとして定義できます。
    1つの11つの21つの31つのn1つの11つの21つの31つのn{\displaystyle (a_{1},a_{2},a_{3},\ldots ,a_{n})=(a_{1},(a_{2},a_{3},\ldots ,a_{n}))}

この定義は( n −1)タプルに再帰的に適用できる。

1つの11つの21つの31つのn1つの11つの21つの31つのn{\displaystyle (a_{1},a_{2},a_{3},\ldots ,a_{n})=(a_{1},(a_{2},(a_{3},(\ldots ,(a_{n},\emptyset )\ldots ))))}

たとえば次のようになります。

12312312341234{\displaystyle {\begin{aligned}(1,2,3)&=(1,(2,(3,\emptyset )))\\(1,2,3,4)&=(1,(2,(3,(4,\emptyset ))))\\\end{aligned}}}

この定義のバリエーションでは、反対側から要素を「剥がし」始めます。

  1. 0 タプルは空集合です。{\displaystyle \emptyset }
  2. n > 0 の場合:
    1つの11つの21つの31つのn1つの11つの21つの31つのn11つのn{\displaystyle (a_{1},a_{2},a_{3},\ldots ,a_{n})=((a_{1},a_{2},a_{3},\ldots ,a_{n-1}),a_{n})}

この定義は再帰的に適用できます。

1つの11つの21つの31つのn1つの11つの21つの31つのn{\displaystyle (a_{1},a_{2},a_{3},\ldots ,a_{n})=((\ldots (((\emptyset ,a_{1}),a_{2}),a_{3}),\ldots ),a_{n})}

たとえば次のようになります。

12312312341234{\displaystyle {\begin{aligned}(1,2,3)&=(((\emptyset ,1),2),3)\\(1,2,3,4)&=((((\emptyset ,1),2),3),4)\\\end{aligned}}}

入れ子になったセットとしてのタプル

クラトフスキーの順序付きペアの表現を使用すると、上記の2番目の定義は純粋集合論の観点から再定式化できます。

  1. 0 タプル (つまり空のタプル) は空セットによって表されます。{\displaystyle \emptyset }
  2. n組とし、 とします。このとき、となります。(右矢印 は、「 と結合する」と読むことができます。)×{\displaystyle x}1つの11つの21つのn{\displaystyle (a_{1},a_{2},\ldots ,a_{n})}×b1つの11つの21つのnb{\displaystyle x\rightarrow b\equiv (a_{1},a_{2},\ldots ,a_{n},b)}×b{{×}{×b}}{\displaystyle x\rightarrow b\equiv \{\{x\},\{x,b\}\}}{\displaystyle \rightarrow}

この定式化では、

11{{}{1}}{{}{1}}1212{{1}{12}}{{{{}{1}}}{{{}{1}}2}}123123{{12}{123}}{{{{{{}{1}}}{{{}{1}}2}}}{{{{{}{1}}}{{{}{1}}2}}3}}{\displaystyle {\begin{array}{lclcl}()&&&=&\emptyset \\&&&&\\(1)&=&()\rightarrow 1&=&\{\{()\},\{(),1\}\}\\&&&=&\{\{\emptyset \},\{\emptyset ,1\}\}\\&&&&\\(1,2)&=&(1)\rightarrow 2&=&\{\{(1)\},\{(1),2\}\}\\&&&=&\{\{\{\{\emptyset \},\{\emptyset ,1\}\}\},\\&&&&\{\{\{\emptyset \},\{\emptyset ,1\}\},2\}\}\\&&&&\\(1,2,3)&=&(1,2)\rightarrow 3&=&\{\{(1,2)\},\{(1,2),3\}\}\\&&&=&\{\{\{\{\{\{\emptyset \},\{\emptyset ,1\}\}\},\\&&&&\{\{\{\emptyset \},\{\emptyset ,1\}\},2\}\}\},\\&&&&\{\{\{\{\{\emptyset \},\{\emptyset ,1\}\}\},\\&&&&\{\{\{\emptyset \},\{\emptyset ,1\}\},2\}\},3\}\}\\\end{array}}}

mセットのn組

離散数学、特に組合せ論と有限確率論では、n組はさまざまな計数問題の文脈で現れ、長さnの順序付きリストとしてより非公式に扱われます。[ 7 ] m個の要素からなる集合からエントリが生成されるn組は、繰り返しのある配置多重集合の順列、および英語以外の文献では繰り返しのある変形とも呼ばれます。 m集合のn組の数はm nです。これは、積の組合せ規則に従います。[ 8 ] Sが濃度mの有限集合である場合、この数はn倍のデカルト冪S × S × ⋯ × Sの濃度です。組はこの積集合の要素です。

型理論

プログラミング言語でよく使われる型理論では、タプルは積型を持ちます。積型は長さだけでなく、各要素の基になる型も決定します。正式には、

(x1,x2,,xn):T1×T2××Tn{\displaystyle (x_{1},x_{2},\ldots ,x_{n}):{\mathsf {T}}_{1}\times {\mathsf {T}}_{2}\times \ldots \times {\mathsf {T}}_{n}}

そして、射影は項コンストラクタです。

π1(x):T1, π2(x):T2, , πn(x):Tn{\displaystyle \pi _{1}(x):{\mathsf {T}}_{1},~\pi _{2}(x):{\mathsf {T}}_{2},~\ldots ,~\pi _{n}(x):{\mathsf {T}}_{n}}

リレーショナルモデルで使用されるラベル付き要素を持つタプルはレコード型を持ちます。これらの型はどちらも、単純型ラムダ計算の単純な拡張として定義できます。[ 9 ]

型理論におけるタプルの概念と集合論におけるタプルの概念は、次のように関連しています。型理論の自然なモデルを考え、スコット括弧を使用して意味的解釈を示すと、モデルは次のようないくつかのセット(ここではイタリック体を使用してセットと型を区別しています)で構成されます。 S1,S2,,Sn{\displaystyle S_{1},S_{2},\ldots ,S_{n}}

[[T1]]=S1, [[T2]]=S2, , [[Tn]]=Sn{\displaystyle [\![{\mathsf {T}}_{1}]\!]=S_{1},~[\![{\mathsf {T}}_{2}]\!]=S_{2},~\ldots ,~[\![{\mathsf {T}}_{n}]\!]=S_{n}}

基本的な用語の解釈は次のとおりです。

[[x1]][[T1]], [[x2]][[T2]], , [[xn]][[Tn]]{\displaystyle [\![x_{1}]\!]\in [\![{\mathsf {T}}_{1}]\!],~[\![x_{2}]\!]\in [\![{\mathsf {T}}_{2}]\!],~\ldots ,~[\![x_{n}]\!]\in [\![{\mathsf {T}}_{n}]\!]}

型理論のn組は集合論のn組として自然に解釈できる。 [ 10 ]

[[(x1,x2,,xn)]]=([[x1]],[[x2]],,[[xn]]){\displaystyle [\![(x_{1},x_{2},\ldots ,x_{n})]\!]=(\,[\![x_{1}]\!],[\![x_{2}]\!],\ldots ,[\![x_{n}]\!]\,)}

ユニットタイプには、意味解釈として 0 タプルがあります。

プログラミング言語におけるタプル型の一覧については、「製品型#プログラミング言語における製品型」を参照してください。

参照

注記

  1. ^角括弧は行ベクトルを含む行列に用いられます。中括弧は集合に用いられます。プログラミング言語ごとに、括弧の表記規則が異なります。
  2. ^倍数性の語源はギリシャ語の「-fold」に由来します。

参考文献

  1. ^ 「代数データ型 - HaskellWiki」 . wiki.haskell.org .
  2. ^ 「構造化代入」 MDN Web Docs 2023年4月18日。
  3. ^ 「JavaScriptはオブジェクト プロパティの順序を保証しますか?」Stack Overflow
  4. ^マシューズPH編(2007年1月)「N-tuple」コンサイス・オックスフォード言語学辞典』オックスフォード大学出版局。ISBN 9780199202720. 2015年5月1日閲覧
  5. ^ブラックバーン、サイモン(1994). 「順序付きnタプル」.オックスフォード哲学辞典. オックスフォードガイドラインクイックリファレンス(第3版). オックスフォード: オックスフォード大学出版局 (2016年出版). p. 342. ISBN 9780198735304. 2017年6月30日閲覧順序付きnタプル[:] [...] 順序付きペアの概念をn個のオブジェクトのシーケンスに一般化したもの。
  6. ^ OED sv "トリプル"、"クワッド"、"クインタプル"、"デカップル"
  7. ^ D'Angelo & West 2000、9ページ
  8. ^ D'Angelo & West 2000、101ページ
  9. ^ピアス、ベンジャミン (2002).型とプログラミング言語. MITプレス. pp.  126–132 . ISBN 0-262-16209-1
  10. ^ Steve Awodey,集合から型へ、カテゴリーへ、集合へ、2009年、プレプリント

出典

  • ウィクショナリーにおけるタプルの辞書定義