Mtac: A monad for typed tactic programming in Coq. (2015)