Source: https://www.alloschool.com/assets/documents/course-281/preuve-d-un-algorithme.pdf