Source: https://www.math.sciences.univ-nantes.fr/~guilleme/enseignement/mi5/resume.pdf