Results 1  10
of
26
The Coalgebraic Class Specification Language CCSL  Syntax and Semantics
, 2002
"... ..."
(Show Context)
Practical RefinementType Checking
, 1997
"... Refinement types allow many more properties of programs to be expressed and statically checked than conventional type systems. We present a practical algorithm for refinementtype checking in a calculus enriched with refinementtype annotations. We prove that our basic algorithm is sound and comple ..."
Abstract

Cited by 37 (1 self)
 Add to MetaCart
Refinement types allow many more properties of programs to be expressed and statically checked than conventional type systems. We present a practical algorithm for refinementtype checking in a calculus enriched with refinementtype annotations. We prove that our basic algorithm is sound and complete, and show that every term which has a refinement type can be annotated as required by our algorithm. Our positive experience with an implementation of an extension of this algorithm to the full core language of Standard ML demonstrates that refinement types can be a practical program development tool in a realistic programming language. The required refinement type definitions and annotations are not much of a burden and serve as formal, machinechecked explanations of code invariants which otherwise would remain implicit. 1 Introduction The advantages of staticallytyped programming languages are well known, and have been described many times (e.g. see [Car97]). However, conventional ty...
Hidden Coinduction: Behavioral Correctness Proofs for Objects
 Mathematical Structures in Computer Science
, 1999
"... This paper unveils and motivates an ambitious programme of hidden algebraic research in software engineering, beginning with our general goals, continuing with an overview of results, and including some future plans. The main contribution is powerful hidden coinduction techniques for proving behavio ..."
Abstract

Cited by 22 (8 self)
 Add to MetaCart
This paper unveils and motivates an ambitious programme of hidden algebraic research in software engineering, beginning with our general goals, continuing with an overview of results, and including some future plans. The main contribution is powerful hidden coinduction techniques for proving behavioral correctness of concurrent systems; several mechanical proofs are given using OBJ3. We also show how modularization, bisimulation, transition systems, concurrency and combinations of the functional, constraint, logic and object paradigms fit into hidden algebra. 1. Introduction
Categorybased Constraint Logic
, 1999
"... This paper presents an (abstract) model theoretic semantics for ECLP, without directly addressing the computational aspect. This is a rather novel approach on the area of constraints where almost all efforts have been devoted to computational and operational issues; it is important the reader unders ..."
Abstract

Cited by 7 (3 self)
 Add to MetaCart
This paper presents an (abstract) model theoretic semantics for ECLP, without directly addressing the computational aspect. This is a rather novel approach on the area of constraints where almost all efforts have been devoted to computational and operational issues; it is important the reader understands the modeltheoretic and foundational orientation of this paper. However, we plan to gradually develop the computational side based on these foundations as further research (Section 7.2 sketches some of the directions of such further research). Some computational aspects of this theory can already be found in (Diaconescu, 1996c). This semantics is
Practical refinementtype checking. Thesis Proposal
, 1997
"... Software development is a complex and error prone task. Programming languages with strong static type systems assist programmers by capturing and checking the fundamental structure of programs in a very intuitive way. Given this success, it is natural to ask: can we capture and check more of the str ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
(Show Context)
Software development is a complex and error prone task. Programming languages with strong static type systems assist programmers by capturing and checking the fundamental structure of programs in a very intuitive way. Given this success, it is natural to ask: can we capture and check more of the structure of programs? In this work I consider a new approach called refinementtype checking that allows many common program properties to be captured and checked. This approach builds on the strength of the type system of a language by adding the ability to specify refinements of each type. Such refinement types have been considered previously, and following previous work I focus on refinements that include subtyping and a form of intersection types. Central to my approach is the use of a bidirectional checking algorithm. This does not attempt to infer refinements for some expressions, such as functions, but only checks them against refinements. This avoids some difficulties encountered in previous work, and requires that the programmer annotate their program with some of the intended refinements, but the required annotations appear to be very reasonable. Further, they document properties in a way that is natural, precise, easy to read, and reliable. I demonstrate the practicality of my approach by showing that it can be used to design a refinementtype checker for a widelyused language with a strong type system: Standard ML. This requires two main technical developments. Firstly, I present a new variant of intersection types that achieve soundness in the presence of callbyvalue effects by incorporating a value restriction. Secondly, I present a practical approach to incorporating recursive refinements of ML datatypes, including a pragmatic method for checking the sequential pattern matching construct of ML. I also report the results of experiments with my implementation of refinementtype checking for SML. These indicate that refinementtype checking is a practical method for capturing and checking properties of real code.
Dialgebraic Specification and Modeling
"... corecursive functions COALGEBRA state model constructors destructors data model recursive functions reachable hidden abstraction observable hidden restriction congruences invariants visible abstraction ALGEBRA visible restriction!e Swinging Cube ..."
Abstract

Cited by 4 (4 self)
 Add to MetaCart
(Show Context)
corecursive functions COALGEBRA state model constructors destructors data model recursive functions reachable hidden abstraction observable hidden restriction congruences invariants visible abstraction ALGEBRA visible restriction!e Swinging Cube
OrderSorted Inductive Types
, 1999
"... System F ! is an extension of system F ! with subtyping and bounded quantification. Ordersorted algebra is an extension of manysorted algebra with overloading and subtyping. We combine both formalisms to obtain IF ! , a higherorder typed calculus with subtyping, bounded quantification a ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
System F ! is an extension of system F ! with subtyping and bounded quantification. Ordersorted algebra is an extension of manysorted algebra with overloading and subtyping. We combine both formalisms to obtain IF ! , a higherorder typed calculus with subtyping, bounded quantification and ordersorted inductive types, i.e. data types with builtin subtyping and overloading. Moreover we show that IF ! enjoys important metatheoretic properties, including confluence, strong normalization, subject reduction and decidability of typechecking. 1 Introduction Typed functional programming languages such as Haskell and ML and typetheory based proofdevelopment systems such as Coq and Lego support the introduction of inductively defined types such as natural numbers or booleans, parameterized inductively defined types such as lists and even parameterized mutual inductively defined types such as trees and forests. In addition, those languages support the definition of functions ...
Integration Problems in Telephone Feature Requirements
, 1999
"... The feature interaction problem is prominent in telephone service development. Through a number of case studies, we have discovered that no single semantic framework is suitable for the synthesis and analysis of formal feature requirements models, and the choice of modelling language has certain ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
The feature interaction problem is prominent in telephone service development. Through a number of case studies, we have discovered that no single semantic framework is suitable for the synthesis and analysis of formal feature requirements models, and the choice of modelling language has certain knockon effects on the transformational design steps which lead to implementation.
Programming within VR
, 1995
"... As different kinds of behaviour are added to VRMLbased webspaces, a variety of styles, tools, interfaces, and languages are likely to be developed, enabling people to program objects io perform actions of considerable complexity. The WYSIWYG principle will lead to an increase of programming by examp ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
(Show Context)
As different kinds of behaviour are added to VRMLbased webspaces, a variety of styles, tools, interfaces, and languages are likely to be developed, enabling people to program objects io perform actions of considerable complexity. The WYSIWYG principle will lead to an increase of programming by example; and it will be noted that the requirements for describing and controlling such behaviours are very similar to those needed for realtime concurrent programming in general; this is one of the areas the visual language community is trying to address. One approach to dealing with the TowerofBabel effect is to offer a unifying framework within which the various efforts can be situated, enabling them to interface together; this paper offers some suggestions as to what such a framework might consist of. 1