Source: https://irma-web1.math.unistra.fr/~geffray/cours/cours-nantes/coursIUT4.pdf