# What is the best practice for typesetting set-builder notation with a large number of membership criteria?

That is, I have something akin to the following right now:

\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}

\begin{document}
We must have $(a^i,b^i,c^i) \in X^i(d) = \bigg\{(a,b,c) \in \mathbb R^A \times \mathbb R^B \times \mathbb R^C :$
\begin{displaymath}
\begin{array}{l}
1.\ d_0 \cdot (a_0 - b_0) + d_1 \cdot (b_0 - c_0) \leq 0  \\
2.\ \sum_j c_j b^j \leq d_j \\
3.\ \forall k \geq 1,
d_k \cdot \left(a_k - b^h_k - F_k(x_{k^*})\right) \leq
\sum_k (b_k-c_k) \cdot \min \left(d_k \cdot G^j_k, m_k \right)
\bigg\}
\end{array}
\end{displaymath}
\end{document}


Which produces this monstrosity:

Any suggestions for slaying this beast would be much appreciated.

Goals:

• make it look clean,
• and comport with TeX best practices,
• in particular removing manual serialization
• and manual, highly-contingent layout tweaks

Restrictions:

• There is limited horizontal space with which to work, which may end up requiring that the set be opened on a different line from that on which it is closed.
• Obviously, I do not want to define membership criteria outside of the set braces and then reference them, unless I can be convinced that this is the most simple / elegant way to express the set.
-
I wonder if you really want to call the set X^i(d) with the superscript i - there's no i in the definition of the set. – Hendrik Vogt Aug 16 '12 at 5:52
@HendrikVogt "akin to" the following, not literally. I changed the symbols somewhat at random, to reduce the likelihood that somebody would want to (or be able to) interpret the set's meaning instead of just focusing on its display. – Philip Aug 16 '12 at 13:45
OK, I understand - thanks! – Hendrik Vogt Aug 16 '12 at 13:57

If you replace some of the symbolism with words from natural language, I think you get a much clearer and cleaner result; the most natural choice for the list is an enumerate environment; here's one possibility:

\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}

\begin{document}
We must have $(a^i,b^i,c^i) \in X^i(d)$, where $X^i(d)$ is the set of all triples $(a,b,c) \in \mathbb R^A \times \mathbb R^B \times \mathbb R^C$ such that
\begin{enumerate}
\item $d_0 \cdot (a_0 - b_0) + d_1 \cdot (b_0 - c_0) \leq 0$,
\item $\smash[b]{\sum_j c_j b^j} \leq d_j$, and
\item $\forall k \geq 1, d_k \cdot \left(a_k - b^h_k - F_k(x_{k^*})\right) \leq \sum_k (b_k-c_k) \cdot \min\bigl(d_k \cdot G^j_k, m_k \bigr)$.
\end{enumerate}

\end{document}


-
This is certainly a tempting alternative and one I should have considered / will consider. Though I still wonder whether there is an alternate, i.e. an accepted way to notate "big" sets. – Philip Aug 15 '12 at 23:12
@Philip I forgot to mention in my answer that now you can easily croos-reference the conditions using the standard \label, \ref mechanism. – Gonzalo Medina Aug 15 '12 at 23:23
With sets it's whatever is the cleanest and least cumbersome method of specifying exactly what elements are in the set. Builder notation is definitely not the best way here and you're unlikely to find something that is cleaner than what Gonzalo has suggested imh, unsolicited, o. – Scott H. Aug 15 '12 at 23:27
I fully agree with Scott. Personally, I'd use a \smash[t] around the \Big parentheses in the third condition to get nicer line spacing. – Hendrik Vogt Aug 16 '12 at 5:54
There isn't really any reason to scale those parentheses any way. It is quite clear what they fence in... – daleif Aug 16 '12 at 11:39