Certified Programming with Dependent Types (A Pragmatic Introduction to the Coq Proof Assistant) - 9780262545747