Results 1 - 10
of
21
Metalogical Frameworks
, 1992
"... In computer science we speak of implementing a logic; this is done in a programming language, such as Lisp, called here the implementation language. We also reason about the logic, as in understanding how to search for proofs; these arguments are expressed in the metalanguage and conducted in the me ..."
Abstract
-
Cited by 54 (14 self)
- Add to MetaCart
In computer science we speak of implementing a logic; this is done in a programming language, such as Lisp, called here the implementation language. We also reason about the logic, as in understanding how to search for proofs; these arguments are expressed in the metalanguage and conducted in the metalogic of the object language being implemented. We also reason about the implementation itself, say to know it is correct; this is done in a programming logic. How do all these logics relate? This paper considers that question and more. We show that by taking the view that the metalogic is primary, these other parts are related in standard ways. The metalogic should be suitably rich so that the object logic can be presented as an abstract data type, and it must be suitably computational (or constructive) so that an instance of that type is an implementation. The data type abstractly encodes all that is relevant for metareasoning, i.e., not only the term constructing functions but also the...
Program Specification and Data Refinement in Type Theory
- Mathematical Structures in Computer Science
, 1991
"... We develop a type-theoretic approach to program specification and data refinement and show that a type theory with a strong logical power and nice structural mechanisms provides an adequate formalism for modular development of programs and specifications. Specification of abstract data types is c ..."
Abstract
-
Cited by 26 (9 self)
- Add to MetaCart
We develop a type-theoretic approach to program specification and data refinement and show that a type theory with a strong logical power and nice structural mechanisms provides an adequate formalism for modular development of programs and specifications. Specification of abstract data types is considered and a notion of abstract implementation between specifications is defined in the type theory and studied as a basis for correct and modular development of programs by stepwise refinement. The higher-order structural mechanisms in the type theory provide useful and flexible tools (specification operations and parameterized specifications) for modular design and structured specification. Refinement maps (programs and design decisions) and proofs of implementation correctness can be developed by means of the existing proof development systems based on type theories. 1 Introduction Program specification and modular program development by stepwise refinement has been an interes...
Constructions, Inductive Types and Strong Normalization
, 1993
"... This thesis contains an investigation of Coquand's Calculus of Constructions, a basic impredicative Type Theory. We review syntactic properties of the calculus, in particular decidability of equality and type-checking, based on the equality-as-judgement presentation. We present a set-theoretic notio ..."
Abstract
-
Cited by 26 (2 self)
- Add to MetaCart
This thesis contains an investigation of Coquand's Calculus of Constructions, a basic impredicative Type Theory. We review syntactic properties of the calculus, in particular decidability of equality and type-checking, based on the equality-as-judgement presentation. We present a set-theoretic notion of model, CC-structures, and use this to give a new strong normalization proof based on a modification of the realizability interpretation. An extension of the core calculus by inductive types is investigated and we show, using the example of infinite trees, how the realizability semantics and the strong normalization argument can be extended to non-algebraic inductive types. We emphasize that our interpretation is sound for large eliminations, e.g. allows the definition of sets by recursion. Finally we apply the extended calculus to a non-trivial problem: the formalization of the strong normalization argument for Girard's System F. This formal proof has been developed and checked using the...
Proof Principles for Datatypes with Iterated Recursion
, 1997
"... . Data types like trees which are finitely branching and of (possibly) infinite depth are described by iterating initial algebras and terminal coalgebras. We study proof principles for such data types in the context of categorical logic, following and extending the approach of [14, 15]. The technica ..."
Abstract
-
Cited by 15 (3 self)
- Add to MetaCart
. Data types like trees which are finitely branching and of (possibly) infinite depth are described by iterating initial algebras and terminal coalgebras. We study proof principles for such data types in the context of categorical logic, following and extending the approach of [14, 15]. The technical contribution of this paper involves a description of initial algebras and terminal coalgebras in total categories of fibrations for lifted "datafunctors". These lifted functors are used to formulate our proof principles. We test these principles by proving some elementary results for four kinds of trees (with finite or infinite breadth or depth) using the proof tool pvs. 1 Introduction Algebras and coalgebras are of well-established importance in computer science, notably in the theory of datatypes, where especially initial algebras and terminal coalgebras play a distinguished role. Over the past decade there is more and more interest in the logic associated with initial algebras and ter...
Making Formality Work For Us
- EATCS Bulletin
, 1989
"... Formal reasoning is notoriously long and arduous; in order to use it to reason effectively in the construction of programs it is, therefore, paramount that we design our notations to be both clear and economical. Taking examples from AI, from imperative programming, from the use of the Bird-Meer ..."
Abstract
-
Cited by 7 (2 self)
- Add to MetaCart
Formal reasoning is notoriously long and arduous; in order to use it to reason effectively in the construction of programs it is, therefore, paramount that we design our notations to be both clear and economical. Taking examples from AI, from imperative programming, from the use of the Bird-Meertens formalism and from category theory we demonstrate how the right choice of what to denote and how it is denoted can make significant improvements to formal calculations. Brief mention is also made of the connection between economical notation and properties of type. 1 2 Foreword Earlier this year I was an invited speaker at the 5th British Computer Society Theoretical Computer Science Colloquium held at Royal Holloway and Bedford New College, London. Before you is the text of my lecture, almost but not quite as given at the conference. (Perhaps the best way to describe the present paper is as the lecture that I should have given.) The publication of the text of the lecture will, ...
Markov’s principle for propositional type theory
- Computer Science Logic, Proceedings of the 10 th Annual Conference of the EACSL
, 2001
"... Abstract. In this paper we show how to extend a constructive type theory with a principle that captures the spirit of Markov’s principle from constructive recursive mathematics. Markov’s principle is especially useful for proving termination of specific computations. Allowing a limited form of class ..."
Abstract
-
Cited by 7 (5 self)
- Add to MetaCart
Abstract. In this paper we show how to extend a constructive type theory with a principle that captures the spirit of Markov’s principle from constructive recursive mathematics. Markov’s principle is especially useful for proving termination of specific computations. Allowing a limited form of classical reasoning we get more powerful resulting system which remains constructive and valid in the standard constructive semantics of a type theory. We also show that this principle can be formulated and used in a propositional fragment of a type theory.
Behavioral Interface Specification Languages
, 2009
"... Behavioral interface specification languages allow programmers to express the intended behavior of programs such as functional behavior and resource consumption. Formal specifications of program behavior is useful for precise documentation, for the generation of test cases and test oracles, for debu ..."
Abstract
-
Cited by 7 (2 self)
- Add to MetaCart
Behavioral interface specification languages allow programmers to express the intended behavior of programs such as functional behavior and resource consumption. Formal specifications of program behavior is useful for precise documentation, for the generation of test cases and test oracles, for debugging, and for formal program verifiation. In this paper, we survey behavioral interface specifi cation languages with a focus toward automatic program verification and, in particular, the Verified Software Initiative.
Quotient Types: A Modular Approach
- ITU-T Recommendation H.324
, 2002
"... In this paper we introduce a new approach to axiomatizing quotient types in type theory. We suggest replacing the existing monolithic rule set by a modular set of rules for a specially chosen set of primitive operations. This modular formalization of quotient types turns out to be much easier to use ..."
Abstract
-
Cited by 6 (3 self)
- Add to MetaCart
In this paper we introduce a new approach to axiomatizing quotient types in type theory. We suggest replacing the existing monolithic rule set by a modular set of rules for a specially chosen set of primitive operations. This modular formalization of quotient types turns out to be much easier to use and free of many limitations of the traditional monolithic formalization. To illustrate the advantages of the new approach, we show how the type of collections (that is known to be very hard to formalize using traditional quotient types) can be naturally formalized using the new primitives. We also show how modularity allows us to reuse one of the new primitives to simplify and enhance the rules for the set types.
Integrated Verification in Type Theory (Lecture Notes)
, 1996
"... Contents 1 Introduction 2 2 Type Theory as a Programming Language 3 2.1 Hello World in Type Theory . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Hiding and argument synthesis . . . . . . . . . . . . . . . . . . . . . 4 2.3 Using dependent types in programming . . . . . . . . . . . . . . . . 4 ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
Contents 1 Introduction 2 2 Type Theory as a Programming Language 3 2.1 Hello World in Type Theory . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Hiding and argument synthesis . . . . . . . . . . . . . . . . . . . . . 4 2.3 Using dependent types in programming . . . . . . . . . . . . . . . . 4 2.4 Higher-order sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3 Logic for free 8 3.1 Propositional logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Predicate logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.3 Equality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4 Induction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.5 Inductively defined relations . . . . . . . . . . . . . . . . . . . . . . . 13 4 ALF's Type Theory 14 4.1 Judgements of Type Theory . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Conventions

