Tuple: Difference between revisions
imported>Jochen Burghardt →top: sentence is flawed, and not really necessary |
(No difference)
|
Latest revision as of 06:56, 3 May 2025
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:
- 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>. - Tuple elements are ordered: tuple <math>(1,2,3) \neq (3,2,1)</math>, but set <math>\{1,2,3\} = \{3,2,1\}</math>.
- 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.
- The 0-tuple (i.e. the empty tuple) is represented by the empty set <math>\emptyset</math>.
- 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:
- The 0-tuple is the empty set <math>\emptyset</math>.
- 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:
- The 0-tuple (i.e. the empty tuple) is represented by the empty set <math>\emptyset</math>;
- 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>
Template:AnchorTemplate:Math-tuples of Template:Math-sets
[edit]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]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]- Arity
- Coordinate vector
- Exponential object
- Formal language
- Multidimensional Expressions (OLAP)
- Prime k-tuple
- Relation (mathematics)
- Sequence
- Tuplespace
- Tuple Names
Notes
[edit]References
[edit]Sources
[edit]- Template:Citation
- Keith Devlin, The Joy of Sets. Springer Verlag, 2nd ed., 1993, Template:Isbn, pp. 7–8
- Abraham Adolf Fraenkel, Yehoshua Bar-Hillel, Azriel Lévy, Foundations of school Set Theory, Elsevier Studies in Logic Vol. 67, 2nd Edition, revised, 1973, Template:Isbn, p. 33
- Gaisi Takeuti, W. M. Zaring, Introduction to Axiomatic Set Theory, Springer GTM 1, 1971, Template:Isbn, p. 14
- George J. Tourlakis, Lecture Notes in Logic and Set Theory. Volume 2: Set Theory, Cambridge University Press, 2003, Template:Isbn, pp. 182–193