TL;DR: These lectures were given in Padova and Munich later in the same year as part of the meeting on Konstruktive Mengenlehre und Typentheorie which was organized in Munich by Prof. Helmut Schwichtenberg.
Abstract: Preface These lectures were given in Padova at the Laboratorio per Ricerche di Di-namica dei Sistemi e di Elettronica Biomedica of the Consiglio Nazionale delle Ricerche during the month of June 1980. I am indebted to Dr. Enrico Pagello of that laboratory for the opportunity of so doing. The audience was made up by philosophers, mathematicians and computer scientists. Accordingly, I tried to say something which might be of interest to each of these three categories. Essentially the same lectures, albeit in a somewhat improved and more advanced form, were given later in the same year as part of the meeting on Konstruktive Mengenlehre und Typentheorie which was organized in Munich by Prof. Dr. Helmut Schwichtenberg, to whom I am indebted for the invitation, during the week 29 September – 3 October 1980. The main improvement of the Munich lectures, as compared with those given in Padova, was the adoption of a systematic higher level (Ger. Stufe) notation which allows me to write simply respectively. Moreover, the use of higher level variables and constants makes it possible to formulate the elimination and equality rules for the cartesian product in such a way that they follow the same pattern as the elimination and equality rules for all the other type forming operations. In their new formulation, these rules read Π-elimination c ∈ Π(A, B) (y(x) ∈ B(x) (x ∈ A)) d(y) ∈ C(λ(y)) F(c, d) ∈ C(c) and Π-equality (x ∈ A) b(x) ∈ B(x) (y(x) ∈ B(x) (x ∈ A)) d(y) ∈ C(λ(y)) F(λ(b), d) = d(b) ∈ C(λ(b)) respectively. Here y is a bound function variable, F is a new non-canonical (eliminatory) operator by means of which the binary application operation can be defined, putting Ap(c, a) ≡ F(c, (y) y(a)), and y(x) ∈ B(x) (x ∈ A) is an assumption, itself hypothetical, which has been put within parentheses to indicate that it is being discharged. A program of the new form F(c, d) has value e provided c has value λ(b) and d(b) has value e. This rule for evaluating F(c, d) reduces to the lazy evaluation rule for Ap(c, a) when the above definition is being made. Choosing C(z) to be B(a), thus independent of z, and d(y) to be y(a), the new elimination rule reduces to the old one and the new equality rule to the first of the two old equality rules. Moreover, the second …
TL;DR: The Edinburgh Logical Framework (LF) as discussed by the authors provides a means to define (or present) logics, based on a general treatment of syntax, rules, and proofs by means of a typed l-calculus with dependent types.
Abstract: 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 l-calculus with dependent types. Syntax is treated in a style similar to, but more general than, Martin-Lo¨f's system of arities. The treatment of rules and proofs focuses on his notion of a judgment. Logics are represented in LF via a new principle, the judgments as types principle, whereby each judgment is identified with the type of its proofs. This allows for a smooth treatment of discharge and variable occurence conditions and leads to a uniform treatment of rules and proofs whereby rules are viewed as proofs of higher-order judgments 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.
TL;DR: This thesis is concerned with bridging the gap between the theoretical presentations of type theory and the requirements on a practical programming language.
Abstract: Dependent type theories have a long history of being used for theorem proving One aspect of type theory which makes it very powerful as a proof language is that it mixes deduction with computation This also makes type theory a good candidate for programming---the strength of the type system allows properties of programs to be stated and established, and the computational properties provide semantics for the programs
This thesis is concerned with bridging the gap between the theoretical presentations of type theory and the requirements on a practical programming language Although there are many challenging research problems left to solve before we have an industrial scale programming language based on type theory, this thesis takes us a good step along the way