A framework for defining logics

Robert Harper, Furio Honsell, Gordon Plotkin
1993 Journal of the ACM  
The Edinburgh Logical Framework (LF) provides a means to define (or present) logics. It is based on a general treatment of syntax, rules, and proofs by means of a typed λ-calculus with dependent types. Syntax is treated in a style similar to, but more general than, Martin-Löf's system of arities. The treatment of rules and proofs focuses on his notion of a judgement. Logics are represented in LF via a new principle, the judgements as types principle, whereby each judgement is identified with
more » ... type of its proofs. This allows for a smooth treatment of discharge and variable occurrence conditions and leads to a uniform treatment of rules and proofs whereby rules are viewed as proofs of higher-order judgements and proof checking is reduced to type checking. The practical benefit of our treatment of formal systems is that logic-independent tools such as proof editors and proof checkers can be constructed. Much work has been devoted to building systems for checking and building formal proofs in various logical systems. Research in this area was initiated by de Bruijn in the AUTOMATH project whose purpose was to formalize mathematical arguments in a language suitable for machine checking [15] . Interactive proof construction was first considered by Milner, et. al. in the LCF system [19]. The fundamental idea was to exploit the abstract type mechanism of ML to provide a safe means of interactively building proofs in PPλ. These ideas were subsequently taken up by Paulson [37] (for LCF) and Petersson [40] (for Martin-Löf's type theory). Coquand and Huet, inspired by the work of Girard, extended the language of AUTOMATH with impredicative features, and developed an interactive proof checker for it [10, 12, 13] . Building on the experience of AUTOMATH and LCF, the NuPRL system [9] is a full-scale interactive proof development environment for type theory that provides support not only for interactive proof construction, but also notational extension, abbreviations, library management, and automated proof search. There are a great many logics of interest for computer science (for example, equational, first-order, higherorder, modal, temporal, relevant, and linear logics, type-theories and set theories, type assignment systems and operational semantics for programming languages). Implementing an interactive proof development environment for any style of presentation of any of these logics is a daunting task. At the level of abstract syntax, support must be provided for the management of binding operators, substitution, and formula-, term-, and rule schemes. At the level of formal proofs, a representation of formal proofs must be defined, and the mechanisms associated with proof checking and proof construction must be provided. This includes the means of instantiating rule schemes, and constructing proofs from rules, checking the associated contextsensitive applicability conditions. Further effort is needed to support automated search: tactics and tacticals as in LCF [19], unification and matching [47, 25] , and so forth. It is therefore highly desirable to develop a general theory of logical systems that isolates the uniformities of a wide class of logics so that much of this
doi:10.1145/138027.138060 fatcat:xht7p7hyyjh4hpzuvfuycskwje