Source: https://www.math.polytechnique.fr/xups/xups09-05.pdf