Warning: This tutorial is very outdated. Many things would not probably work exactly as described. Additionally, we have implemented several mechanisms (such as resource annotations) that are much easier to use than the mechanisms used in this tutorial.
In this tutorial we develop an account of classical first-order logic, and we relate it to the Nuprl type theory Itt_theory. The theory we develop is fully modular. It contains modules for each of the logical operators, and the constructive logic is a subtheory of the classical logic. We also investigate proof automation. Each module defines proof procedures for its operator, and the final logic defines an automated proof procedure for the logic.
The first step in creating a logic is creating a module for each of the logical operators. Initially, the framework has no notion of truth or falsehood in the logic; these concepts are defined by declaring syntax and logical rules. Our logic will include the logical operators in first-order logic (FOL), and it will include terms to represent true and false. We will use a single-conclusion sequent calculus (a multi-conclusion sequent calculus is also possible, but this choice will make it easier to relate the logic to the type theory).
These are the parts to the tutorial: