The general method for getting ultraproducts uses an index set I, a
structure M_i (assumed to be non-empty in this article) for each element i \in I (all of the same
signature), and an
ultrafilter \mathcal{U} on I. For any two elements a_\bull = \left(a_i\right)_{i \in I} and b_\bull = \left(b_i\right)_{i \in I} of the
Cartesian product {\textstyle\prod\limits_{i \in I}} M_i, declare them to be {{em|\mathcal{U}-equivalent}}, written a_\bull \sim b_\bull or a_\bull =_{\mathcal{U}} b_\bull, if and only if the set of indices \left\{i \in I : a_i = b_i\right\} on which they agree is an element of \mathcal{U}; in symbols, a_\bull \sim b_\bull \; \iff \; \left\{i \in I : a_i = b_i\right\} \in \mathcal{U}, which compares components only relative to the ultrafilter \mathcal{U}. This
binary relation \, \sim \, is an
equivalence relation on the Cartesian product {\textstyle\prod\limits_{i \in I}} M_i. The {{em|
ultraproduct of M_{\bull} = \left(M_i\right)_{i \in I} modulo \mathcal{U}}} is the
quotient set of {\textstyle\prod\limits_{i \in I}} M_i with respect to \sim and is therefore sometimes denoted by {\textstyle\prod\limits_{i \in I}} M_i \, / \, \mathcal{U} or {\textstyle\prod}_{\mathcal{U}} \, M_\bull. Explicitly, if the \mathcal{U}-
equivalence class of an element a \in {\textstyle\prod\limits_{i \in I}} M_i is denoted by a_{\mathcal{U}} := \big\{x \in {\textstyle\prod\limits_{i \in I}} M_i \; : \; x \sim a\big\} then the ultraproduct is the set of all \mathcal{U}-equivalence classes {\prod}_{\mathcal{U}} \, M_\bull \; = \; \prod_{i \in I} M_i \, / \, \mathcal{U} \; := \; \left\{a_{\mathcal{U}} \; : \; a \in {\textstyle\prod\limits_{i \in I}} M_i\right\}. Although \mathcal{U} was assumed to be an ultrafilter, the construction above can be carried out more generally whenever \mathcal{U} is merely a
filter on I, in which case the resulting quotient set {\textstyle\prod\limits_{i \in I}} M_i / \, \mathcal{U} is called a ''''. When \mathcal{U} is a
principal ultrafilter (which happens if and only if \mathcal{U} contains its
kernel \cap \, \mathcal{U}) then the ultraproduct is isomorphic to one of the factors. And so usually, \mathcal{U} is not a
principal ultrafilter, which happens if and only if \mathcal{U} is free (meaning \cap \, \mathcal{U} = \varnothing), or equivalently, if every
cofinite subset of I is an element of \mathcal{U}. Since every ultrafilter on a finite set is principal, the index set I is consequently also usually infinite. The ultraproduct acts as a filter product space where elements are equal if they are equal only at the filtered components (non-filtered components are ignored under the equivalence). One may define a finitely additive
measure m on the index set I by saying m(A) = 1 if A \in \mathcal{U} and m(A) = 0 otherwise. Then two members of the Cartesian product are equivalent precisely if they are equal
almost everywhere on the index set. The ultraproduct is the set of equivalence classes thus generated.
Finitary operations on the Cartesian product {\textstyle\prod\limits_{i \in I}} M_i are defined pointwise (for example, if + is a binary function then a_i + b_i = (a + b)_i). Other
relations can be extended the same way: R\left(a^1_{\mathcal{U}}, \dots, a^n_{\mathcal{U}}\right) ~\iff~ \left\{i \in I : R^{M_i}\left(a^1_i, \dots, a^n_i\right)\right\} \in \mathcal{U}, where a_{\mathcal{U}} denotes the \mathcal{U}-equivalence class of a with respect to \sim. In particular, if every M_i is an
ordered field then so is the ultraproduct.
Ultrapower An
ultrapower is an ultraproduct for which all the factors M_i are equal. Explicitly, the {{em|'''''' of a set M modulo \mathcal{U}}} is the ultraproduct {\textstyle\prod\limits_{i \in I}} M_i \, / \, \mathcal{U} = {\textstyle\prod}_{\mathcal{U}} \, M_\bull of the indexed family M_{\bull} := \left(M_i\right)_{i \in I} defined by M_i := M for every index i \in I. The ultrapower may be denoted by {\textstyle\prod}_{\mathcal{U}} \, M or (since {\textstyle\prod\limits_{i \in I}} M is often denoted by M^I) by M^I / \mathcal{U} ~:=~ \prod_{i \in I} M \, / \,\mathcal{U}\, For every m \in M, let (m)_{i \in I} denote the constant map I \to M that is identically equal to m. This constant map/tuple is an element of the Cartesian product M^I = {\textstyle\prod\limits_{i \in I}} M and so the assignment m \mapsto (m)_{i \in I} defines a map M \to {\textstyle\prod\limits_{i \in I}} M. The {{em|'''''' of M into {\textstyle\prod}_{\mathcal{U}} \, M}} is the map M \to {\textstyle\prod}_{\mathcal{U}} \, M that sends an element m \in M to the \mathcal{U}-equivalence class of the constant tuple (m)_{i \in I}. ==Examples==