Source: http://www.enib.fr/~tisseau/pdf/phd/gdPhD.pdf