Results 1  10
of
13
Types for Modules
, 1998
"... The programming language Standard ML is an amalgam of two, largely orthogonal, languages. The Core language expresses details of algorithms and data structures. The Modules language expresses the modular architecture of a software system. Both languages are statically typed, with their static and dy ..."
Abstract

Cited by 69 (9 self)
 Add to MetaCart
The programming language Standard ML is an amalgam of two, largely orthogonal, languages. The Core language expresses details of algorithms and data structures. The Modules language expresses the modular architecture of a software system. Both languages are statically typed, with their static and dynamic semantics specified by a formal definition.
The Theory of LEGO  A Proof Checker for the Extended Calculus of Constructions
, 1994
"... LEGO is a computer program for interactive typechecking in the Extended Calculus of Constructions and two of its subsystems. LEGO also supports the extension of these three systems with inductive types. These type systems can be viewed as logics, and as meta languages for expressing logics, and LEGO ..."
Abstract

Cited by 68 (10 self)
 Add to MetaCart
LEGO is a computer program for interactive typechecking in the Extended Calculus of Constructions and two of its subsystems. LEGO also supports the extension of these three systems with inductive types. These type systems can be viewed as logics, and as meta languages for expressing logics, and LEGO is intended to be used for interactively constructing proofs in mathematical theories presented in these logics. I have developed LEGO over six years, starting from an implementation of the Calculus of Constructions by G erard Huet. LEGO has been used for problems at the limits of our abilities to do formal mathematics. In this thesis I explain some aspects of the metatheory of LEGO's type systems leading to a machinechecked proof that typechecking is decidable for all three type theories supported by LEGO, and to a verified algorithm for deciding their typing judgements, assuming only that they are normalizing. In order to do this, the theory of Pure Type Systems (PTS) is extended and f...
Closure Under AlphaConversion
 In The Informal Proceeding of the 1993 Workshop on Types for Proofs and Programs
, 1993
"... this paper appears in Types for Proofs and Programs: International Workshop TYPES'93, Nijmegen, May 1993, Selected Papers, LNCS 806. abstraction, compute a type for its body in an extended context; to compute a type for an application, compute types for its left and right components, and check that ..."
Abstract

Cited by 23 (3 self)
 Add to MetaCart
this paper appears in Types for Proofs and Programs: International Workshop TYPES'93, Nijmegen, May 1993, Selected Papers, LNCS 806. abstraction, compute a type for its body in an extended context; to compute a type for an application, compute types for its left and right components, and check that they match appropriately. Lets use the algorithm to compute a type for a = [x:ø ][x:oe]x. FAILURE: no rule applies because x 2 Dom (x:ø )
NonDependent Types for Standard ML Modules
, 1999
"... Two of the distinguishing features of Standard ML Modules are its term dependent type syntax and the use of type generativity in its static semantics. From a typetheoretic perspective, the former suggests that the language involves firstorder dependent types, while the latter has been regarded as ..."
Abstract

Cited by 17 (4 self)
 Add to MetaCart
Two of the distinguishing features of Standard ML Modules are its term dependent type syntax and the use of type generativity in its static semantics. From a typetheoretic perspective, the former suggests that the language involves firstorder dependent types, while the latter has been regarded as an extralogical device that bears no direct relation to typetheoretic constructs. We reformulate the existing semantics of Modules to reveal a purely secondorder type theory. In particular, we show that generativity corresponds precisely to existential quantification over types and that the remainder of the Modules type structure is based exclusively on the secondorder notions of type parameterisation, universal type quantification and subtyping. Our account is more direct than others and has been shown to scale naturally to both higherorder and firstclass modules.
A Verified Typechecker
 PROCEEDINGS OF THE SECOND INTERNATIONAL CONFERENCE ON TYPED LAMBDA CALCULI AND APPLICATIONS, VOLUME 902 OF LECTURE NOTES IN COMPUTER SCIENCE
, 1995
"... ..."
Polishing Up the TaitMartinLöf Proof of the ChurchRosser Theorem
, 1995
"... Introduction The TaitMartinLof proof is the best known and simplest proof of confluence (the ChurchRosser theorem) for various lambda calculi. It is explained in detail, for example, in [Bar84, HS86, Rev88]. The desire to clarify this proof has inspired work on concrete representation of bindi ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
Introduction The TaitMartinLof proof is the best known and simplest proof of confluence (the ChurchRosser theorem) for various lambda calculi. It is explained in detail, for example, in [Bar84, HS86, Rev88]. The desire to clarify this proof has inspired work on concrete representation of binding [dB72, Coq91]. Perhaps the best modern version is given in [Tak95]. Formal proofs are reported in [Hue94, MP93, Pfe92, Sha88] 1 . In this note I outline the innovation given in [Tak95] (and formalized by McKinna [MP93]), and present a further improvement which I believe has not appeared in the literature before. 1.1 Preliminary Definitions Let Rel2 be the class of binary relations, and R; T 2 Rel2 ; we write aRb for (a; b) 2 R . For R 2 Rel2 the transitive reflexive closure of R , wri
On Extensibility of Proof Checkers
 in Dybjer, Nordstrom and Smith (eds), Types for Proofs and Programs: International Workshop TYPES'94, Bastad
, 1995
"... This paper is about mechanical checking of formal mathematics. Given some formal system, we want to construct derivations in that system, or check the correctness of putative derivations; our job is not to ascertain truth (that is the job of the designer of our formal system), but only proof. Howeve ..."
Abstract

Cited by 6 (2 self)
 Add to MetaCart
This paper is about mechanical checking of formal mathematics. Given some formal system, we want to construct derivations in that system, or check the correctness of putative derivations; our job is not to ascertain truth (that is the job of the designer of our formal system), but only proof. However, we are quite rigid about this: only a derivation in our given formal system will do; nothing else counts as evidence! Thus it is not a collection of judgements (provability), or a consequence relation [Avr91] (derivability) we are interested in, but the derivations themselves; the formal system used to present a logic is important. This viewpoint seems forced on us by our intention to actually do formal mathematics. There is still a question, however, revolving around whether we insist on objects that are immediately recognisable as proofs (direct proofs), or will accept some metanotations that only compute to proofs (indirect proofs). For example, we informally refer to previously proved results, lemmas and theorems, without actually inserting the texts of their proofs in our argument. Such an argument could be made into a direct proof by replacing all references to previous results by their direct proofs, so it might be accepted as a kind of indirect proof. In fact, even for very simple formal systems, such an indirect proof may compute to a very much bigger direct proof, and if we will only accept a fully expanded direct proof (in a mechanical proof checker for example), we will not be able to do much mathematics. It is well known that this notion of referring to previous results can be internalized in a logic as a cut rule, or Modus Ponens. In a logic containing a cut rule, proofs containing cuts are considered direct proofs, and can be directly accepted by a proof ch...
A Formalization of a Concurrent Object Calculus Up to AlphaConversion
, 1999
"... We experiment a method for representing a concurrent object calculus in the Calculus of Inductive Constructions. Terms are first defined in de Bruijn style, then names are reintroduced in binders. The terms of the calculus are formalized in the mechanized logic by suitable subsets of the de Bruijn ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
We experiment a method for representing a concurrent object calculus in the Calculus of Inductive Constructions. Terms are first defined in de Bruijn style, then names are reintroduced in binders. The terms of the calculus are formalized in the mechanized logic by suitable subsets of the de Bruijn terms; namely those whose de Bruijn indices are relayed beyond the scene. The ffequivalence relation is the Leibnitz equality and the substitution functions can de defined as sets of partial rewriting rules on these terms. We prove induction schemes for both the terms and some properties of the calculus which internalize the renaming of bound variables . We show that, despite that the terms which formalize the calculus are not generated by a last fixed point relation, we can prove the desire inversion lemmas. We formalize the computational part of the semantic and a simple type system of the calculus. At least, we prove a subject reduction theorem and see that the specications and proofs have the nice feature of not mixing de Bruijn technical manipulations with real proofs.