479 research outputs found
Goal Translation for a Hammer for Coq (Extended Abstract)
Hammers are tools that provide general purpose automation for formal proof
assistants. Despite the gaining popularity of the more advanced versions of
type theory, there are no hammers for such systems. We present an extension of
the various hammer components to type theory: (i) a translation of a
significant part of the Coq logic into the format of automated proof systems;
(ii) a proof reconstruction mechanism based on a Ben-Yelles-type algorithm
combined with limited rewriting, congruence closure and a first-order
generalization of the left rules of Dyckhoff's system LJT.Comment: In Proceedings HaTT 2016, arXiv:1606.0542
Concrete Semantics with Coq and CoqHammer
The "Concrete Semantics" book gives an introduction to imperative programming
languages accompanied by an Isabelle/HOL formalization. In this paper we
discuss a re-formalization of the book using the Coq proof assistant. In order
to achieve a similar brevity of the formal text we extensively use CoqHammer,
as well as Coq Ltac-level automation. We compare the formalization efficiency,
compactness, and the readability of the proof scripts originating from a Coq
re-formalization of two chapters from the book
Modular pre-processing for automated reasoning in dependent type theory
The power of modern automated theorem provers can be put at the service of
interactive theorem proving. But this requires in particular bridging the
expressivity gap between the logics these provers are respectively based on.
This paper presents the implementation of a modular suite of pre-processing
transformations, which incrementally bring certain formulas expressed in the
Calculus of Inductive Constructions closer to the first-order logic of
Satifiability Modulo Theory solvers. These transformations address issues
related to the axiomatization of inductive types, to polymorphic definitions or
to the different implementations of a same theory signature. This suite is
implemented as a plugin for the Coq proof assistant, and integrated to the
SMTCoq toolchain
Towards the Integration of an Intuitionistic First-Order Prover into Coq
An efficient intuitionistic first-order prover integrated into Coq is useful
to replay proofs found by external automated theorem provers. We propose a
two-phase approach: An intuitionistic prover generates a certificate based on
the matrix characterization of intuitionistic first-order logic; the
certificate is then translated into a sequent-style proof.Comment: In Proceedings HaTT 2016, arXiv:1606.0542
Learning to Prove Theorems via Interacting with Proof Assistants
Humans prove theorems by relying on substantial high-level reasoning and
problem-specific insights. Proof assistants offer a formalism that resembles
human mathematical reasoning, representing theorems in higher-order logic and
proofs as high-level tactics. However, human experts have to construct proofs
manually by entering tactics into the proof assistant. In this paper, we study
the problem of using machine learning to automate the interaction with proof
assistants. We construct CoqGym, a large-scale dataset and learning environment
containing 71K human-written proofs from 123 projects developed with the Coq
proof assistant. We develop ASTactic, a deep learning-based model that
generates tactics as programs in the form of abstract syntax trees (ASTs).
Experiments show that ASTactic trained on CoqGym can generate effective tactics
and can be used to prove new theorems not previously provable by automated
methods. Code is available at https://github.com/princeton-vl/CoqGym.Comment: Accepted to ICML 201
Meta-F*: Proof Automation with SMT, Tactics, and Metaprograms
We introduce Meta-F*, a tactics and metaprogramming framework for the F*
program verifier. The main novelty of Meta-F* is allowing the use of tactics
and metaprogramming to discharge assertions not solvable by SMT, or to just
simplify them into well-behaved SMT fragments. Plus, Meta-F* can be used to
generate verified code automatically.
Meta-F* is implemented as an F* effect, which, given the powerful effect
system of F*, heavily increases code reuse and even enables the lightweight
verification of metaprograms. Metaprograms can be either interpreted, or
compiled to efficient native code that can be dynamically loaded into the F*
type-checker and can interoperate with interpreted code. Evaluation on
realistic case studies shows that Meta-F* provides substantial gains in proof
development, efficiency, and robustness.Comment: Full version of ESOP'19 pape
- âŠ