Results 11  20
of
25
Some Algorithmic and ProofTheoretical Aspects of Coercive Subtyping
 In Proceedings of TYPES'96, Lecture Notes in Computer Science
, 1996
"... . Coercive subtyping offers a conceptually simple but powerful framework to understand subtyping and subset relationships in type theory. In this paper we study some of its prooftheoretic and computational properties. 1 Introduction Coercive subtyping, as first introduced in [Luo96], offers a conc ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
. Coercive subtyping offers a conceptually simple but powerful framework to understand subtyping and subset relationships in type theory. In this paper we study some of its prooftheoretic and computational properties. 1 Introduction Coercive subtyping, as first introduced in [Luo96], offers a conceptually simple but powerful framework to understand subtyping and subset relationships in type theories with sophisticated type structures such as dependent types, inductive types, and type universes. A basic idea behind coercive subtyping is that subtyping provides a powerful mechanism for notational abbreviation in type theory. If A is a subtype of B given by a specified coercion function, an object of type A can be regarded as an object of type B, that is, its image via the coercion function, and hence objects of a subtype can be used as abbreviations for objects of a supertype. With coercive subtyping, this abbreviational mechanism is formally treated at the level of the logical framewo...
A Theory of Program Refinement
, 1998
"... We give a canonical program refinement calculus based on the lambda calculus and classical firstorder predicate logic, and study its proof theory and semantics. The intention is to construct a metalanguage for refinement in which basic principles of program development can be studied. The idea is t ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
We give a canonical program refinement calculus based on the lambda calculus and classical firstorder predicate logic, and study its proof theory and semantics. The intention is to construct a metalanguage for refinement in which basic principles of program development can be studied. The idea is that it should be possible to induce a refinement calculus in a generic manner from a programming language and a program logic. For concreteness, we adopt the simplytyped lambda calculus augmented with primitive recursion as a paradigmatic typed functional programming language, and use classical firstorder logic as a simple program logic. A key feature is the construction of the refinement calculus in a modular fashion, as the combination of two orthogonal extensions to the underlying programming language (in this case, the simplytyped lambda calculus). The crucial observation is that a refinement calculus is given by extending a programming language to allow indeterminate expressions (or ‘stubs’) involving the construction ‘some program x such that P ’. Factoring this into ‘some x...’
The metaobject facility typed
 In SAC
, 2006
"... The Object Managment Group’s MetaObject Facility (MOF) [9] is a semiformal approach to writing models and metamodels (models of models). The MOF was developed to enable systematic model/metamodel interchange and integration. The approach is problematic, unless metamodels are correctly specified: an ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
The Object Managment Group’s MetaObject Facility (MOF) [9] is a semiformal approach to writing models and metamodels (models of models). The MOF was developed to enable systematic model/metamodel interchange and integration. The approach is problematic, unless metamodels are correctly specified: an error in a metamodel specification will propagate throughout instantiating models and final model implementations. An important open question is how to develop provably correct metamodels. This paper outlines a solution to the question, in which the MOF metamodelling approach is formalized within constructive type theory.
Developing Reuse Technology in Proof Engineering
 Proceedings of AISB95, Workshop on Automated Reasoning
, 1995
"... Introduction In the last several years type theory has emerged as an important technology for computerassisted formal reasoning. The intensive international effort to develop type theory and the associated technology for proof development has resulted in a number of impressive systems based on typ ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
Introduction In the last several years type theory has emerged as an important technology for computerassisted formal reasoning. The intensive international effort to develop type theory and the associated technology for proof development has resulted in a number of impressive systems based on type theory for program verification and formalisation of mathematics, including ALF [ACN90], Coq [D + 91], NuPRL [C + 86], and Lego [LP92]. The experience of proof development shows that, to apply our technology of proof development such as systems based on type theory to large realworld application problems (e.g., in formalisation of a large body of mathematics (cf. [Pol94]) and in verification of safetycritical software components), it is very useful and indeed necessary to develop methods and supporting tools for reuse of proofs, programs, and the formalisation or development processes. Many proofs and many proof development processes have striking si
A Theory of Structured ModelBased Specifications in Isabelle/HOL
 Theorem Proving in HigherOrder Logics (TPHOLs 97), volume 1275 of Lecture Notes in Computer Science
, 1997
"... . We represent the concept of a class as it is proposed by objectoriented dialects of the specification language Z in Isabelle/HOL. Representing classes involves introducing different types for schemas describing states and operations, which are distinguished only by conventions in plain Z. Clas ..."
Abstract

Cited by 3 (2 self)
 Add to MetaCart
. We represent the concept of a class as it is proposed by objectoriented dialects of the specification language Z in Isabelle/HOL. Representing classes involves introducing different types for schemas describing states and operations, which are distinguished only by conventions in plain Z. Classes can be used in predicates to describe sets of objects. This leads us to define a trace semantics of classes, which is a basis to formally define behavioral relations between classes. The semantics of recursive classes is captured by a fixpoint construction. The representation of classes is a shallow encoding that orthogonally extends the encoding HOLZ of plain Z in Isabelle/HOL. The extended encoding provides a wellintegrated environment that is suitable to abstractly define properties of classes and to reason about concrete specifications as well. 1 Introduction A frequent criticism of most modelbased formal specification languages, such as VDMSL [7] and Z [15,20], is the l...
A TypeTheoretic Analysis of Modular Specifications
, 1996
"... We study the problem of representing a modular specification language in a typetheory based theorem prover. Our goals are: to provide mechanical support for reasoning about specifications and about the specification language itself; to clarify the semantics of the specification language by formalis ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
We study the problem of representing a modular specification language in a typetheory based theorem prover. Our goals are: to provide mechanical support for reasoning about specifications and about the specification language itself; to clarify the semantics of the specification language by formalising them fully; to augment the specification language with a programming language in a setting where they are both part of the same formal environment, allowing us to define a formal implementation relationship between the two. Previous work on similar issues has given rise to a dichotomy between “shallow ” and “deep ” embedding styles when representing one language within another. We show that the expressiveness of type theory, and the high degree of reflection that it permits, allow us to develop embedding techniques which lie between the “shallow ” and “deep ” extremes. We consider various possible embedding strategies and then choose one of them to explore more fully. As our object of study we choose a fragment of the Z specification language, which we encode in the type theory UTT, as implemented in the LEGO proofchecker. We use the encoding to study some of the operations on schemas provided by Z. One of our main concerns is whether it is possible to reason about Z specifications at the level of these operations. We prove some theorems about Z showing that, within certain constraints, this kind of reasoning is indeed possible. We then show how these metatheorems can be used to carry out formal reasoning about Z specifications. For this we make use of an example taken from the Z Reference Manual (ZRM). Finally, we exploit the fact that type theory provides a programming language as well as a logic to define a notion of implementation for Z specifications. We illustrate this by encoding some example programs taken from the ZRM. ii Declaration I declare that this thesis was composed by myself, and that the work contained in it is my own except where otherwise stated. Some of this work has been published previously [Mah94]. iii
Refining Refinement Types
 University of Durham
, 1997
"... We develop a theory of program specification using the notion of refinement type. This provides a notion of structured specification, useful for verification and program development. We axiomatise the satisfaction of specifications by programs as a generalised typing relation and give rules for refi ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
We develop a theory of program specification using the notion of refinement type. This provides a notion of structured specification, useful for verification and program development. We axiomatise the satisfaction of specifications by programs as a generalised typing relation and give rules for refining specifications. A per semantics based on Henkin models is given, for which the system is proven to be sound and complete.
Dependent Record Types Revisited
"... Dependentlytyped records have been studied in type theory in several previous research attempts, with applications to the study of module mechanisms for both programming and proof languages. Recently, the author has proposed an improved formulation of dependent record types in the context of studyi ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
Dependentlytyped records have been studied in type theory in several previous research attempts, with applications to the study of module mechanisms for both programming and proof languages. Recently, the author has proposed an improved formulation of dependent record types in the context of studying manifest fields of module types. In this paper, we study this formulation in more details by considering universes of record types and some application examples. In particular, we show that record types provide a more powerful mechanism (than record kinds) in expressing module types and additional useful means (as compared with Σtypes) in applications. 1.
Construction and Deduction Methods for the Formal Development of Software
 In Broy and Jahnichen [2
, 1995
"... . In this paper we present an approach towards a framework based on the type theory ECC (Extended Calculus of Constructions) in which specifications, programs and operators for modular development by stepwise refinement can be formally described and reasoned about. We demonstrate how generic sof ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
. In this paper we present an approach towards a framework based on the type theory ECC (Extended Calculus of Constructions) in which specifications, programs and operators for modular development by stepwise refinement can be formally described and reasoned about. We demonstrate how generic software development steps can be expressed as higherorder functions and how proofs about their asserted effects can be carried out in the underlying logical calculus. For formalizing transformations that require syntactic manipulation of objects, we introduce a twolevel system combining a metalevel and an object level and show how to express and reason about transformations that faithfully represent objectlevel operators. 1 Introduction Modern software engineering regards software development as an evolutionary process [Wir95, BP81]. One view of this process is that, starting from abstract, highlevel requirement specifications, a series of refinement or implementation steps is app...