https://medium.com/@apostolislaibahpeerenboom/read-%EF%B8%8F-pdf-certified-programming-with-dependent-types-a-pragmatic-introduction-to-the-coq-proof-b04f80b5149c