Formal Metatheory of Programming Languages in the Matita Interactive Theorem Prover

  title={Formal Metatheory of Programming Languages in the Matita Interactive Theorem Prover},
  author={Andrea Asperti and Wilmer Ricciotti and Claudio Sacerdoti Coen and Enrico Tassi},
  journal={Journal of Automated Reasoning},
This paper is a report about the use of Matita, an interactive theorem prover under development at the University of Bologna, for the solution of the POPLmark Challenge, part 1a. We provide three different formalizations, including two direct solutions using pure de Bruijn and locally nameless encodings of bound variables, and a formalization using named variables, obtained by means of a sound translation to the locally nameless encoding. According to this experience, we also discuss some of… 

Formalizing Turing Machines

We discuss the formalization, in the Matita Theorem Prover, of a few, basic results on Turing Machines, up to the existence of a (certified) Universal Machine. The work is meant to be a preliminary

Binding Structures as an Abstract Data Type

This work proposes to represent binding structures by means of an abstract data type, equipped with high level operations allowing to manipulate terms with binding with a degree of abstraction comparable to that of informal proofs, and proves that the abstract representation is sound by providing a de Bruijn model.

A Bi-Directional Refinement Algorithm for the Calculus of (Co)Inductive Constructions

Bi-directional rules for CIC are proposed that have better error message reporting and better inference of dependent types, and the coercion system for sub-typing is more eective and type inference generates simpler unication problems that are more likely to be solved by the inherently incomplete higher order unication algorithms implemented.

The Speedup Theorem in a Primitive Recursive Framework

This article discusses an alternative, formal proof of the speedup theorem that allows us to spare the invocation of the fix point theorem and sheds more light on the actual complexity of the function fr.


This work applies the Curry-Howard correspondence approach to Henkin’s proof to phrase it as a program which transforms any proof of validity with respect to Tarski semantics into a proof of derivability.

Computational Complexity Via Finite Types

  • A. Asperti
  • Computer Science
    ACM Trans. Comput. Log.
  • 2015
This work addresses computational complexity writing polymorphic functions between finite types by expressing costs in terms of the cardinality of these types, finding the known result that the different levels in the hierarchy of higher-order primitive recursive functions precisely capture basic complexity classes.



Mechanized Metatheory for the Masses: The PoplMark Challenge

An initial set of benchmarks for measuring progress in this area of programming languages are proposed, based on the metatheory of System F<:, a typed lambda-calculus with second-order polymorphism, subtyping, and records.

Crafting a Proof Assistant

This work analyzes Matita: a new interactive theorem prover based--as Coq--on the Calculus of Inductive Constructions (CIC), focusing on the dependencies of its components, how they implement the main functionalities, and their degree of reusability.

A compact kernel for the calculus of inductive constructions

The paper describes the new kernel for the Calculus of Inductive Constructions (CIC) implemented inside the Matita Interactive Theorem Prover, resulting in a remarkably compact implementation of about 2300 lines of OCaml code.

A new approach to abstract syntax involving binders

  • M. GabbayA. Pitts
  • Computer Science
    Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. PR00158)
  • 1999
It is shown that in FM-set theory one can express statements quantifying over 'fresh' names and this is used to give a novel set-theoretic interpretation of name abstraction.

Strong Induction Principles in the Locally Nameless Representation of Binders ( Preliminary Notes )

These notes demonstrate with two examples that it is often difficult to derive a strong induction principle for just the weak version and then use the infrastructure provided by the nominal Isabelle package to derive automatically and in a uniform way a stronguction principle for this weak version.

Elimination with a Motive

This paper describes a generic tactic, Elim, which supports this ubiquitous idiom in interactive proof and subsumes the functionality of the more specific 'induction' and 'inversion' tactics found in systems like Coq and Lego.

User Interaction with the Matita Proof Assistant

This paper focuses on some of the distinctive features of the user interaction with Matita, characterized mostly by the organization of the library as a searchable knowledge base, the emphasis on a high-quality notational rendering, and the complex interplay between syntax, presentation, and semantics.

Tinycals: Step by Step Tacticals

The Coq proof assistant : reference manual, version 6.1

Coq is a proof assistant based on a higher-order logic allowing powerful definitions of functions. Coq V6.1 is available by anonymous ftp at and

Nominal Logic: A First Order Theory of Names and Binding

Nominal Logic is introduced, a version of first-order many-sorted logic with equality containing primitives for renaming via name-swapping and for freshness of names, from which a notion of binding can be derived.