Source: http://hal.inria.fr/docs/00/31/95/19/PDF/PropositionArticleVersionHAL1.pdf