PDF e-Pub

## Section: New Results

### New applications of Foundational Proof Certificates

Participants : Kaustuv Chaudhuri, Matteo Manighetti, Dale Miller.

The formal framework of Foundational Proof Certificates (FPC) was developed in previous years within the Parsifal team. We continue to push on their applications in a number of settings in computational logic. In 2019, we developed two such new applications.

In order to apply FPCs to the conventional setting of classical logic theorem provers, the FPC setting needed to treat proof evidence containing Skolem functions. Using FPC directly meant that we needed to do such certification without using the mathematical concepts of model-theoretic semantics (i.e., preservation of satisfiability) and choice principles (i.e., epsilon terms). Instead, our proof checking kernel is an implementation of Gentzen’s sequent calculus, which directly supports quantifier alternation by using eigenvariables. In [19], we described deskolemization as a mapping from client-side terms, used in proofs generated by theorem provers, into kernel-side terms, used within our proof checking kernel. This mapping which associates skolemized terms to eigenvariables relies on using outer skolemization.

Property-based testing (PBT) is a technique for validating code against an executable specification by automatically generating test-data. In the paper [18], we presented a proof-theoretical reconstruction of this style of testing for relational specifications and employ FPCs to describe test generators. We did this by presenting certain kinds of “proof outlines” that can be used to describe various common generation strategies in the PBT literature, ranging from random to exhaustive, including their combination. We also address the shrinking of counterexamples as a first step towards their explanation. Once generation is accomplished, the testing phase boils down to a standard logic programming search. We could also we lift our techniques to treat data structures containing bindings using $\lambda$-tree syntax. The $\lambda$Prolog programming language is capable of performing both the generation and checking of tests. We validated this approach by tackling benchmarks in the metatheory of programming languages coming from related tools such as PLT-Redex Property-Based Testing via Proof Reconstruction. This work was done in collaboration with Roberto Blanco, a postdoc from Inria Paris, and Alberto Momigliano, a professor from the University of Milan.