Source: https://www.di.ens.fr/~vergnaud/teaching1112/2012-StehleVillard.pdf