An alignment issue with \begin{matrix}
It is much simpler to do that with the dedicated cases
environment, or its dcases*
variant defined by mathtools
):
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{equation}
d(T,b)=\begin{dcases*}
0 & if branch has been covered, \\
v(d_{\min}(t\in T, b)) & \parbox[t]{15em}{if the predicate has been executed at least twice,}\\
1 & otherwise. \\
\end{dcases*}
\end{equation}
\end{document}
This is only a combination of array
and matrix
...but the enviroment cases
it is the just and correct solution.
\documentclass[a4paper,12pt]{article}
\usepackage{mathtools,amssymb}
\begin{document}
\begin{equation*}
d(T,b)=\left\{\begin{array}{lll}
0 \\
v(d_{\min}(t\in T, b)) \\
1
\end{array}\right.
\begin{matrix*}[l]
\text{if branch has been covered,} & \\
\text{if the predicate has been executed at least twice,}& \\
\text{otherwise.}
\end{matrix*}
\end{equation*}
\end{document}
In order not to guess the width, you could use tabular
:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\btext}[1]{%
\begingroup\renewcommand{\arraystretch}{1}%
\begin{tabular}[t]{@{}l@{}}#1\end{tabular}
\endgroup
}
\begin{document}
\begin{equation}
d(T,b)=
\begin{cases}
0 & \text{if branch has been covered,}\\[0.5ex]
v(d_{\min}(t\in T, b)) & \btext{if the predicate has been \\
executed at least twice,}\\[3ex]
1 & \text{otherwise.}
\end{cases}
\end{equation}
\end{document}
The (local) resetting of \arraystretch
is necessary because cases
changes it. Some guessing is still needed, in order to separate the rows.