Source: http://cedric.cnam.fr/~pons/NFA016/nfa016.2017_sujet1Cor.pdf