fact: Definition inferHead (s:Ast.term) (R:list Ast.term) : TemplateMonad ((L.term + Ast.term) * list Ast.term) := match s with Ast.tConst _ _ | Ast.tConstruct _ _ _ => res <- inferHead' s [] R;; let '(s',R):= res in ret (inl s',R) | _ => ret (inr s,R) end.
imports: Ascii String Undecidability.L(Util.L_facts) MetaCoq(Template.All Template.Checker) Undecidability.Shared.Libs.PSL.Base MetaCoq.Utils.bytestring