Source: https://www.cmap.polytechnique.fr/~allaire/map567/cor5.pdf