Source: http://www-lor.int-evry.fr/~epsi/TQG/2010/OPM3001-DocDeCours.pdf