Source: https://hal.inria.fr/file/index/docid/942655/filename/2009PA030105.pdf