# Tuples and Cartesian Products

- [Introduction](introduction.md)

- [Cartesian Product Constructor and Functions](creation.md)

  - [`car< R₁, ..., Rₖ >: Str, ..., Str → SetCart`](creation.md#constructor-constructor-car-str-str-setcart)

  - [`CartesianProduct(R, S): Str, ..., Str → SetCart`](creation.md#function-cartesianproduct-str-str)

  - [`CartesianProduct(L): [Str] → SetCart`](creation.md#function-cartesianproduct-str)

  - [`CartesianProduct(L): <Str> → SetCart`](creation.md#function-cartesianproduct-str-2)

  - [`CartesianPower(R, k): Str, RngIntElt → SetCart`](creation.md#function-cartesianpower-str-rngintelt)

  - [`Flat(C): SetCart → SetCart`](creation.md#function-tuple-flat1)

  - [`NumberOfComponents(C): SetCart → RngIntElt`](creation.md#function-numberofcomponents-setcart)

  - [`Component(C, i): SetCart, RngIntElt → Str`](creation.md#function-component-setcart-rngintelt)

  - [`C[i]: SetCart, RngIntElt → Str`](creation.md#literal-literal-c-i-setcart-rngintelt-str)

  - [`Components(C): SetCart → List`](creation.md#function-components-setcart)

  - [`# C: SetCart → RngIntElt`](creation.md#operation-operation-setcart-rngintelt)

  - [`Rep(C): SetCart → Elt`](creation.md#function-rep-setcart)

  - [`Random(C): SetCart → Elt`](creation.md#function-random-setcart)

  - [`Example: Cartesian Product`](creation.md#example-ex-c2f16a)

- [Creating and Modifying Tuples](tuple.md)

  - [`elt< C | a₁, a₂, ..., aₖ >: SetCart, Elt, ..., Elt → Tup`](tuple.md#constructor-constructor-elt-setcart-elt-elt-tup)

  - [`C ! < a₁, a₂, ..., aₖ >: SetCart, Elt, ..., Elt → Tup`](tuple.md#operation-op-setcart-elt-elt)

  - [`< a₁, a₂, ..., aₖ >: Elt, ..., Elt → Tup`](tuple.md#literal-literal-a1-a2-ak-elt-elt-tup)

  - [`Append(T, x): Tup, Elt → Tup`](tuple.md#function-append-tup-elt)

  - [`Append(~T, x): Tup, Elt`](tuple.md#function-append-tup-elt-ref)

  - [`Prune(T): Tup → Tup`](tuple.md#function-prune-tup)

  - [`Prune(~T): Tup`](tuple.md#function-prune-tup-ref)

  - [`Flat(T): Tup → Tup`](tuple.md#function-tuple-flat2)

  - [`Example: Tuple`](tuple.md#example-ex-cc3d86)

- [Tuple Access Functions](tuple-access.md)

  - [`Parent(T): Tup → SetCart`](tuple-access.md#function-parent-tup)

  - [`# T: Tup → RngIntElt`](tuple-access.md#operation-operation-tup-rngintelt)

  - [`T[i]: Tup → Elt`](tuple-access.md#literal-literal-t-i-tup-elt)

  - [`Explode(T): Tup → t1, t2, ...`](tuple-access.md#function-explode-tup)

  - [`TupleToList(T): Tup → List`](tuple-access.md#function-tupletolist-tup)

  - [`Tuplist(T): Tup → List`](tuple-access.md#function-tuplist-tup)

  - [`Example: Tuple Access`](tuple-access.md#example-ex-58b218)

- [Equality](Boolean.md)

  - [`T eq U: Tup, Tup → BoolElt`](Boolean.md#operation-op-eq-tup-tup)

  - [`T ne U: Tup, Tup → BoolElt`](Boolean.md#operation-op-ne-tup-tup)

- [Iteration](Iteration.md)

  - [`x in T`](Iteration.md#literal-literal-in-x-in-t)

  - [`i -> x in T`](Iteration.md#literal-literal-in-i-x-in-t)

- [Other Operations](Other.md)

  - [`IsEmpty(T): Tup → BoolElt`](Other.md#function-isempty-tup)

  - [`&* T: Tup → Any`](Other.md#operation-operation-tup-any)
