Source: http://math.univ-lyon1.fr/~chalenda/new-cours-complet.pdf