Whereas proof assistants based on Higher-Order Logic benefit from external solvers' automation, those based on Type Theory resist automation and thus require more expertise. Indeed, the latter use a more expressive logic which is further away from first-order logic, the logic of most automatic theorem provers. In this article, we develop a methodology to transform a subset of Coq goals into first-order statements that can be automatically discharged by automatic provers. The general idea is to write modular, pairwise independent transformations and combine them. Each of these eliminates a specific aspect of Coq logic towards first-order logic. As a proof of concept, we apply this methodology to a set of simple but crucial transformations which extend the local context with proven first-order assertions that make Coq definitions and algebraic types explicit. They allow users of Coq to solve non-trivial goals automatically. This methodology paves the way towards the definition and combination of more complex transformations, making Coq more accessible.
翻译:依据高端逻辑的证明助理从外部解答器自动化中受益,而那些基于Type Theory的证明助理则从外部解答器自动化中受益,而那些基于Type Theory的证明助理则需要更多专业知识。事实上,后者使用的是一种更清晰的逻辑,离最自动理论验证器的逻辑(大多数自动理论验证器的逻辑)更远一些。在本条中,我们开发了一种方法,将科克目标的一组转换成一阶报表,由自动验证器自动解脱。一般的想法是写模块化、双向独立转换并结合这些转换器。其中每一种方法都消除了科克逻辑对一阶逻辑的一个特定方面。作为概念的证明,我们将这种方法应用到一系列简单而关键的转变中,以经证明的初阶参数使科克定义和代数型明确的方式扩展了当地环境。它们使科克用户能够自动解析非三角目标。这种方法为更复杂的变换定义和组合铺平了道路,使科克更易理解。