## 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.