Certified programming with dependent types a pragmatic introduction to the Coq proof assistant - Chlipala, Adam (The MIT Press, 2013)