The task to compute quasiconvex hulls first arose in the theory of mathematical material science, in particular in the work of Ball and James [30, 31]. However, the explicit definitions and study of the rank-one convex hull and polyconvex hull as lower and upper bounds, respectively, only seem to have appeared later (even though the methods to compute them are older). Dacorogna contributed many results investigating the properties of the various hulls, see [76] for an overview and pointers to the literature. One can also define notions of quasiconvex, polyconvex, and rank-one convex sets, not just envelopes as we have done, and develop a corresponding theory, see Chapter 7 in [76].

For most of the material on the application to the two-well problems we follow [203, 205]. The proof of Proposition 9.4 is based on ideas from [251]. Theorem 9.5 is from [254].

The basic idea of convex integration dates back to the famous Nash–Kuiper Theorem in differential geometry [173, 212]. These arguments were developed further until they culminated in Gromov’s “*h*-principle”, which is detailed in his treatise [145] (also see [144]). There, the Lipschitz case, which is the one relevant to us, is also briefly mentioned; in particular, the term “in-approximation” is due to Gromov. This work was transferred by Müller and Šverák [205, 207] to the multi-well inclusions that are of interest in material sciences. Simultaneously, Dacorogna and Marcellini [79, 80] adapted Cellina’s Baire method [20, 58, 59] for ordinary differential inclusions to partial differential inclusions. Sychev [257, 260, 262] developed the method further to prove an existence theorem that only assumed the existence of what we call a “piecewise affine reduction”. He also showed that the situation with an in-approximation (or RC-in-approximation) can be reduced to this abstract result. We remark that Sychev’s original result, Theorem 1.1 in [260], is in fact a bit more general than our version. Finally, Kirchheim’s approach based on Baire-one functionals unified the different strands of development, see [160], and further relates convex integration to the Banach–Mazur game. Our presentation mostly follows [160], but we also took some inspiration from [263]. We also remark that the term “convex integration” sometimes only designates the approach via an (RI-)in-approximation. Kirchheim speaks of “affine synthesis” in [160].

The technical Lemma 9.10 is from [207], which itself is a variant of Theorem 2.4 in [120], but the result is already mentioned in Gromov’s book [145]. While Theorem 9.12 as stated is due to Müller and Šverák [205], at the same time the Baire approach by Dacorogna and Marcellini [79] also resulted in similar results.

For convex integration in the inhomogeneous case, that is, where \(K = K(x)\), we refer to [208]. We also mention [206], where additionally a uniform determinant constraint is respected in the convex integration procedure. Convex integration has also been applied to the Euler equation to show the existence of very irregular solutions [91, 152, 239, 243]. One important and recurring theme in convex integration theory is that the *regularity* we require of solutions determines whether we can find solutions at all. The task is then to precisely identify the *threshold* between rigidity and non-rigidity.

Ornstein’s non-inequality is in fact a much more general result that shows that many singular integral operators are not \((\mathrm {L}^1 \mapsto \mathrm {L}^1)\)-bounded. An abstract approach to these questions is in [162].

Another aspect of microstructure which was not touched upon in this chapter is that of *uniqueness* and *stability* . Here, a microstructure \(\nu \in \mathscr {M}^\mathrm {qc}(K)\) is called **unique** (in *K*) if \(\hat{\nu } \in \mathscr {M}^\mathrm {qc}(K)\) with \([\hat{\nu }] = [\nu ]\) implies \(\hat{\nu } = \nu \). Many ideas in this area go back to Luskin; a nice modern exposition, which also incorporates some new ideas with a view toward numerics is in Chapter 4 of [100].