Source: http://www.liafa.jussieu.fr/~sighirea/cours/if2ik3/sujetIF2IK3.pdf