Jump to content

Tuple

From Niidae Wiki
Revision as of 06:56, 3 May 2025 by imported>Jochen Burghardt (top: sentence is flawed, and not really necessary)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Template:Short description Template:Hatnote group

In mathematics, a tuple is a finite sequence or ordered list of numbers or, more generally, mathematical objects, which are called the elements of the tuple. An Template:Mvar-tuple is a tuple of Template:Mvar elements, where Template:Mvar is a non-negative integer. There is only one 0-tuple, called the empty tuple. A 1-tuple and a 2-tuple are commonly called a singleton and an ordered pair, respectively. The term "infinite tuple" is occasionally used for "infinite sequences".

Tuples are usually written by listing the elements within parentheses "Template:Math" and separated by commas; for example, Template:Math denotes a 5-tuple. Other types of brackets are sometimes used, although they may have a different meaning.Template:Efn

An Template:Mvar-tuple can be formally defined as the image of a function that has the set of the Template:Mvar first natural numbers as its domain. Tuples may be also defined from ordered pairs by a recurrence starting from an ordered pair; indeed, an Template:Mvar-tuple can be identified with the ordered pair of its Template:Math first elements and its Template:Mvarth element, for example, <math> \left( \left( \left( 1,2 \right),3 \right),4 \right)=\left( 1,2,3,4 \right)</math>.

In computer science, tuples come in many forms. Most typed functional programming languages implement tuples directly as product types,<ref>Template:Cite web</ref> tightly associated with algebraic data types, pattern matching, and destructuring assignment.<ref>Template:Cite web</ref> Many programming languages offer an alternative to tuples, known as record types, featuring unordered elements accessed by label.<ref>Template:Cite web</ref> A few programming languages combine ordered tuple product types and unordered record types into a single construct, as in C structs and Haskell records. Relational databases may formally identify their rows (records) as tuples.

Tuples also occur in relational algebra; when programming the semantic web with the Resource Description Framework (RDF); in linguistics;<ref>Template:Cite encyclopedia</ref> and in philosophy.<ref> Template:Cite book </ref>

Etymology

[edit]

The term originated as an abstraction of the sequence: single, couple/double, triple, quadruple, quintuple, sextuple, septuple, octuple, ..., Template:Math‑tuple, ..., where the prefixes are taken from the Latin names of the numerals. The unique 0-tuple is called the null tuple or empty tuple. A 1‑tuple is called a single (or singleton), a 2‑tuple is called an ordered pair or couple, and a 3‑tuple is called a triple (or triplet). The number Template:Math can be any nonnegative integer. For example, a complex number can be represented as a 2‑tuple of reals, a quaternion can be represented as a 4‑tuple, an octonion can be represented as an 8‑tuple, and a sedenion can be represented as a 16‑tuple.

Although these uses treat ‑tuple as the suffix, the original suffix was ‑ple as in "triple" (three-fold) or "decuple" (ten‑fold). This originates from medieval Latin plus (meaning "more") related to Greek ‑πλοῦς, which replaced the classical and late antique ‑plex (meaning "folded"), as in "duplex".<ref>OED, s.v. "triple", "quadruple", "quintuple", "decuple"</ref>Template:Efn

Properties

[edit]

The general rule for the identity of two Template:Math-tuples is

<math>(a_1, a_2, \ldots, a_n) = (b_1, b_2, \ldots, b_n)</math> if and only if <math>a_1=b_1,\text{ }a_2=b_2,\text{ }\ldots,\text{ }a_n=b_n</math>.

Thus a tuple has properties that distinguish it from a set:

  1. A tuple may contain multiple instances of the same element, so
    tuple <math>(1,2,2,3) \neq (1,2,3)</math>; but set <math>\{1,2,2,3\} = \{1,2,3\}</math>.
  2. Tuple elements are ordered: tuple <math>(1,2,3) \neq (3,2,1)</math>, but set <math>\{1,2,3\} = \{3,2,1\}</math>.
  3. A tuple has a finite number of elements, while a set or a multiset may have an infinite number of elements.

Definitions

[edit]

There are several definitions of tuples that give them the properties described in the previous section.

Tuples as functions

[edit]

The <math>0</math>-tuple may be identified as the empty function. For <math>n \geq 1,</math> the <math>n</math>-tuple <math>\left(a_1, \ldots, a_n\right)</math> may be identified with the (surjective) function

<math>F ~:~ \left\{ 1, \ldots, n \right\} ~\to~ \left\{ a_1, \ldots, a_n \right\}</math>

with domain

<math>\operatorname{domain} F = \left\{ 1, \ldots, n \right\} = \left\{ i \in \N : 1 \leq i \leq n\right\}</math>

and with codomain

<math>\operatorname{codomain} F = \left\{ a_1, \ldots, a_n \right\},</math>

that is defined at <math>i \in \operatorname{domain} F = \left\{ 1, \ldots, n \right\}</math> by

<math>F(i) := a_i.</math>

That is, <math>F</math> is the function defined by

<math>\begin{alignat}{3}

1 \;&\mapsto&&\; a_1 \\

  \;&\;\;\vdots&&\;      \\

n \;&\mapsto&&\; a_n \\ \end{alignat}</math>

in which case the equality

<math>\left(a_1, a_2, \dots, a_n\right) = \left(F(1), F(2), \dots, F(n)\right)</math>

necessarily holds.

Tuples as sets of ordered pairs

Functions are commonly identified with their graphs, which is a certain set of ordered pairs. Indeed, many authors use graphs as the definition of a function. Using this definition of "function", the above function <math>F</math> can be defined as:

<math>F ~:=~ \left\{ \left(1, a_1\right), \ldots, \left(n, a_n\right) \right\}.</math>

Tuples as nested ordered pairs

[edit]

Another way of modeling tuples in set theory is as nested ordered pairs. This approach assumes that the notion of ordered pair has already been defined.

  1. The 0-tuple (i.e. the empty tuple) is represented by the empty set <math>\emptyset</math>.
  2. An Template:Math-tuple, with Template:Math, can be defined as an ordered pair of its first entry and an Template:Math-tuple (which contains the remaining entries when Template:Math:
    <math>(a_1, a_2, a_3, \ldots, a_n) = (a_1, (a_2, a_3, \ldots, a_n))</math>

This definition can be applied recursively to the Template:Math-tuple:

<math>(a_1, a_2, a_3, \ldots, a_n) = (a_1, (a_2, (a_3, (\ldots, (a_n, \emptyset)\ldots))))</math>

Thus, for example:

<math>
   \begin{align}
        (1, 2, 3) & = (1, (2, (3, \emptyset)))      \\
     (1, 2, 3, 4) & = (1, (2, (3, (4, \emptyset)))) \\
   \end{align}
 </math>

A variant of this definition starts "peeling off" elements from the other end:

  1. The 0-tuple is the empty set <math>\emptyset</math>.
  2. For Template:Math:
    <math>(a_1, a_2, a_3, \ldots, a_n) = ((a_1, a_2, a_3, \ldots, a_{n-1}), a_n)</math>

This definition can be applied recursively:

<math>(a_1, a_2, a_3, \ldots, a_n) = ((\ldots(((\emptyset, a_1), a_2), a_3), \ldots), a_n)</math>

Thus, for example:

<math>
   \begin{align}
        (1, 2, 3) & = (((\emptyset, 1), 2), 3)      \\
     (1, 2, 3, 4) & = ((((\emptyset, 1), 2), 3), 4) \\
   \end{align}
 </math>

Tuples as nested sets

[edit]

Using Kuratowski's representation for an ordered pair, the second definition above can be reformulated in terms of pure set theory:

  1. The 0-tuple (i.e. the empty tuple) is represented by the empty set <math>\emptyset</math>;
  2. Let <math>x</math> be an Template:Math-tuple <math>(a_1, a_2, \ldots, a_n)</math>, and let <math>x \rightarrow b \equiv (a_1, a_2, \ldots, a_n, b)</math>. Then, <math>x \rightarrow b \equiv \{\{x\}, \{x, b\}\}</math>. (The right arrow, <math>\rightarrow</math>, could be read as "adjoined with".)

In this formulation:

<math>
  \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}
 </math>

In discrete mathematics, especially combinatorics and finite probability theory, Template:Math-tuples arise in the context of various counting problems and are treated more informally as ordered lists of length Template:Math.<ref>Template:Harvnb</ref> Template:Math-tuples whose entries come from a set of Template:Math elements are also called arrangements with repetition, permutations of a multiset and, in some non-English literature, variations with repetition. The number of Template:Math-tuples of an Template:Math-set is Template:Math. This follows from the combinatorial rule of product.<ref>Template:Harvnb</ref> If Template:Math is a finite set of cardinality Template:Math, this number is the cardinality of the Template:Math-fold Cartesian power Template:Math. Tuples are elements of this product set.

Type theory

[edit]

Template:Main

In type theory, commonly used in programming languages, a tuple has a product type; this fixes not only the length, but also the underlying types of each component. Formally:

<math>(x_1, x_2, \ldots, x_n) : \mathsf{T}_1 \times \mathsf{T}_2 \times \ldots \times \mathsf{T}_n</math>

and the projections are term constructors:

<math>\pi_1(x) : \mathsf{T}_1,~\pi_2(x) : \mathsf{T}_2,~\ldots,~\pi_n(x) : \mathsf{T}_n</math>

The tuple with labeled elements used in the relational model has a record type. Both of these types can be defined as simple extensions of the simply typed lambda calculus.<ref name="pierce2002">Template:Cite book</ref>

The notion of a tuple in type theory and that in set theory are related in the following way: If we consider the natural model of a type theory, and use the Scott brackets to indicate the semantic interpretation, then the model consists of some sets <math>S_1, S_2, \ldots, S_n</math> (note: the use of italics here that distinguishes sets from types) such that:

<math>[\![\mathsf{T}_1]\!] = S_1,~[\![\mathsf{T}_2]\!] = S_2,~\ldots,~[\![\mathsf{T}_n]\!] = S_n</math>

and the interpretation of the basic terms is:

<math>[\![x_1]\!] \in [\![\mathsf{T}_1]\!],~[\![x_2]\!] \in [\![\mathsf{T}_2]\!],~\ldots,~[\![x_n]\!] \in [\![\mathsf{T}_n]\!]</math>.

The Template:Math-tuple of type theory has the natural interpretation as an Template:Math-tuple of set theory:<ref>Steve Awodey, From sets, to types, to categories, to sets, 2009, preprint</ref>

<math>[\![(x_1, x_2, \ldots, x_n)]\!] = (\,[\![x_1]\!], [\![x_2]\!], \ldots, [\![x_n]\!]\,)</math>

The unit type has as semantic interpretation the 0-tuple.

See also

[edit]

Notes

[edit]

Template:Notelist

References

[edit]

Template:Reflist

Sources

[edit]
[edit]

Template:Set theory Template:Authority control