Source: https://www.math.polytechnique.fr/xups/xups01.01.pdf