Jump to content

Tuple

From Wikipedia, the free encyclopedia
(Redirected from N-tuple)

In mathematics, a tuple is a finite sequence (or ordered list) of numbers. More generally, it is a sequence of mathematical objects, called the elements of the tuple. An n-tuple is a tuple of n elements, where n is a non-negative integer. There is only one 0-tuple, called the empty tuple. A 1-tuple, a 2-tuple, and a 3-tuple are commonly called respectively a singleton, an ordered pair, and a triple (or triplet). The term "infinite tuple" is occasionally used for infinite sequences.

Tuples are usually written by listing the elements within parentheses "( )" and separated by commas; for example, (2, 7, 4, 1, 7) denotes a 5-tuple. Other types of brackets are sometimes used, although they may have a different meaning.[a]

An n-tuple can be formally defined as the image of a function that has the set of the first n natural numbers as its domain (1, 2, ..., n). Tuples may be also defined from ordered pairs by a recurrence starting from an ordered pair; indeed, an n-tuple can be identified with the ordered pair of its (n − 1) first elements and its nth element, for example, (((1,2),3),4)=(1,2,3,4).

In computer science, tuples come in many forms. Most typed functional programming languages implement tuples directly as product types,[1] tightly associated with algebraic data types, pattern matching, and destructuring assignment.[2] Many programming languages offer an alternative to tuples, known as record types, featuring unordered elements accessed by label.[3] 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;[4] and in philosophy.[5]

Etymology

[edit]

The term originated as an abstraction of the sequence: single, couple/double, triple, quadruple, quintuple, sextuple, septuple, octuple, ..., n‑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 n 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".[6][b]

Properties

[edit]

The general rule for the identity of two n-tuples is

(a1,a2,…,an)=(b1,b2,…,bn) if and only if a1=b1, a2=b2, …, an=bn.

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

  1. A tuple may contain multiple instances of the same element, so
    tuple (1,2,2,3)≠(1,2,3); but set {1,2,2,3}={1,2,3}.
  2. Tuple elements are ordered: tuple (1,2,3)≠(3,2,1), but set {1,2,3}={3,2,1}.
  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 0-tuple may be identified as the empty function. For n≥1, the n-tuple (a1,…,an) may be identified with the surjective function

F : {1,…,n} → {a1,…,an}

with domain

domain⁡F={1,…,n}={i∈ℕ:1≤i≤n}

and with codomain

codomain⁡F={a1,…,an},

that is defined at i∈domain⁡F={1,…,n} by

F(i):=ai.

That is, F is the function defined by

1↦a1⋮n↦an

in which case the equality

(a1,a2,…,an)=(F(1),F(2),…,F(n))

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 F can be defined as:

F := {(1,a1),…,(n,an)}.

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 ∅︀.
  2. An n-tuple, with n > 0, can be defined as an ordered pair of its first entry and an (n − 1)-tuple (which contains the remaining entries when n > 1):
    (a1,a2,a3,…,an)=(a1,(a2,a3,…,an))

This definition can be applied recursively to the (n − 1)-tuple:

(a1,a2,a3,…,an)=(a1,(a2,(a3,(…,(an,∅︀)…))))

Thus, for example:

(1,2,3)=(1,(2,(3,∅︀)))(1,2,3,4)=(1,(2,(3,(4,∅︀))))

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

  1. The 0-tuple is the empty set ∅︀.
  2. For n > 0:
    (a1,a2,a3,…,an)=((a1,a2,a3,…,an−1),an)

This definition can be applied recursively:

(a1,a2,a3,…,an)=((…(((∅︀,a1),a2),a3),…),an)

Thus, for example:

(1,2,3)=(((∅︀,1),2),3)(1,2,3,4)=((((∅︀,1),2),3),4)

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 ∅︀;
  2. Let x be an n-tuple (a1,a2,…,an), and let x→b≡(a1,a2,…,an,b). Then, x→b≡{{x},{x,b}}. (The right arrow, →, could be read as "adjoined with".)

In this formulation:

()=∅︀(1)=()→1={{()},{(),1}}={{∅︀},{∅︀,1}}(1,2)=(1)→2={{(1)},{(1),2}}={{{{∅︀},{∅︀,1}}},{{{∅︀},{∅︀,1}},2}}(1,2,3)=(1,2)→3={{(1,2)},{(1,2),3}}={{{{{{∅︀},{∅︀,1}}},{{{∅︀},{∅︀,1}},2}}},{{{{{∅︀},{∅︀,1}}},{{{∅︀},{∅︀,1}},2}},3}}

n-tuples of m-sets

[edit]

In discrete mathematics, especially combinatorics and finite probability theory, n-tuples arise in the context of various counting problems and are treated more informally as ordered lists of length n.[7] n-tuples whose entries come from a set of m elements are also called arrangements with repetition, permutations of a multiset and, in some non-English literature, variations with repetition. The number of n-tuples of an m-set is mn. This follows from the combinatorial rule of product.[8] If S is a finite set of cardinality m, this number is the cardinality of the n-fold Cartesian power S × S × ⋯ × S. 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:

(x1,x2,…,xn):𝖳1×𝖳2×…×𝖳n

and the projections are term constructors:

π1(x):𝖳1, π2(x):𝖳2, …, πn(x):𝖳n

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.[9]

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 S1,S2,…,Sn (note: the use of italics here that distinguishes sets from types) such that:

[[𝖳1]]=S1, [[𝖳2]]=S2, …, [[𝖳n]]=Sn

and the interpretation of the basic terms is:

[[x1]]∈[[𝖳1]], [[x2]]∈[[𝖳2]], …, [[xn]]∈[[𝖳n]].

The n-tuple of type theory has the natural interpretation as an n-tuple of set theory:[10]

[[(x1,x2,…,xn)]]=([[x1]],[[x2]],…,[[xn]])

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

For a list of tuple types in programming languages, see Product type#Product types in programming languages.

See also

[edit]

Notes

[edit]
  1. ↑ Square brackets are used for matrices, including row vectors. Braces are used for sets. Each programming language has its own convention for the different brackets.
  2. ↑ Compare the etymology of ploidy, from the Greek for -fold.

References

[edit]
  1. ↑ "Algebraic data type - HaskellWiki". wiki.haskell.org.
  2. ↑ "Destructuring assignment". MDN Web Docs. 18 April 2023.
  3. ↑ "Does JavaScript Guarantee Object Property Order?". Stack Overflow.
  4. ↑ Matthews, P. H., ed. (January 2007). "N-tuple". The Concise Oxford Dictionary of Linguistics. Oxford University Press. ISBN 9780199202720. Retrieved 1 May 2015.
  5. ↑ Blackburn, Simon (1994). "ordered n-tuple". The Oxford Dictionary of Philosophy. Oxford guidelines quick reference (3 ed.). Oxford: Oxford University Press (published 2016). p. 342. ISBN 9780198735304. Retrieved 2017-06-30. ordered n-tuple[:] A generalization of the notion of an [...] ordered pair to sequences of n objects.
  6. ↑ OED, s.v. "triple", "quadruple", "quintuple", "decuple"
  7. ↑ D'Angelo & West 2000, p. 9
  8. ↑ D'Angelo & West 2000, p. 101
  9. ↑ Pierce, Benjamin (2002). Types and Programming Languages. MIT Press. pp. 126–132. ISBN 0-262-16209-1.
  10. ↑ Steve Awodey, From sets, to types, to categories, to sets, 2009, preprint

Sources

[edit]
[edit]
  • Wiktionary logo The dictionary definition of tuple at Wiktionary