fact: Definition tmGenEncode (n : ident) (A : Type) : TemplateMonad (encodable A) := e <- tmEncode A;; modpath <- tmCurrentModPath tt ;; p <- Core.tmLemma (n ++ "_proc") (forall x : A, proc (e x)) ;; n3 <- tmEval cbv ("encodable_" ++ n) ;; d <- tmInstanceRed n3 None (mk_encodable p);; m <- tmMatchCorrect A;; n4 <- tmEval cbv (n ++ "_correct") ;; Core.tmBind (tmMatchCorrect A) (fun m' => tmLemma n4 m';;ret d).
imports: Undecidability.L(L Tactics.Computable Tactics.ComputableTactics Tactics.Extract) MetaCoq(Template.All TemplateMonad.Core Template.Ast) List MetaCoq.Utils.bytestring