Results 1  10
of
27
A taxonomy of model transformation
 Proc. Dagstuhl Seminar on "Language Engineering for ModelDriven Software Development". Internationales Begegnungs und Forschungszentrum (IBFI), Schloss Dagstuhl
, 2005
"... This report summarises the results of the discussions of a working group on model transformation of the Dagstuhl Seminar on Language Engineering for ModelDriven Software Development. The main contribution is a taxonomy of model transformation. This taxonomy can be used to help developers in decidin ..."
Abstract

Cited by 98 (1 self)
 Add to MetaCart
This report summarises the results of the discussions of a working group on model transformation of the Dagstuhl Seminar on Language Engineering for ModelDriven Software Development. The main contribution is a taxonomy of model transformation. This taxonomy can be used to help developers in deciding which model transformation approach is best suited to deal with a particular problem.
Modular Data Structure Verification
 EECS DEPARTMENT, MASSACHUSETTS INSTITUTE OF TECHNOLOGY
, 2007
"... This dissertation describes an approach for automatically verifying data structures, focusing on techniques for automatically proving formulas that arise in such verification. I have implemented this approach with my colleagues in a verification system called Jahob. Jahob verifies properties of Java ..."
Abstract

Cited by 36 (21 self)
 Add to MetaCart
This dissertation describes an approach for automatically verifying data structures, focusing on techniques for automatically proving formulas that arise in such verification. I have implemented this approach with my colleagues in a verification system called Jahob. Jahob verifies properties of Java programs with dynamically allocated data structures. Developers write Jahob specifications in classical higherorder logic (HOL); Jahob reduces the verification problem to deciding the validity of HOL formulas. I present a new method for proving HOL formulas by combining automated reasoning techniques. My method consists of 1) splitting formulas into individual HOL conjuncts, 2) soundly approximating each HOL conjunct with a formula in a more tractable fragment and 3) proving the resulting approximation using a decision procedure or a theorem prover. I present three concrete logics; for each logic I show how to use it to approximate HOL formulas, and how to decide the validity of formulas in this logic. First, I present an approximation of HOL based on a translation to firstorder logic, which enables the use of existing resolutionbased theorem provers. Second, I present an approximation of HOL based on field constraint analysis, a new technique that enables
Field constraint analysis
 In Proc. Int. Conf. Verification, Model Checking, and Abstract Interpratation
, 2006
"... ..."
rCOS: A refinement calculus for object systems
 Theoretical Computer Science
, 2005
"... This article presents a mathematical characterization of objectoriented concepts by defining an observationoriented semantics for a relational objectoriented language with a rich variety of features including subtypes, visibility, inheritance, type casting, dynamic binding and polymorphism. The la ..."
Abstract

Cited by 33 (13 self)
 Add to MetaCart
This article presents a mathematical characterization of objectoriented concepts by defining an observationoriented semantics for a relational objectoriented language with a rich variety of features including subtypes, visibility, inheritance, type casting, dynamic binding and polymorphism. The language is expressive enough for the specification of objectoriented designs and programs. We also propose a calculus based on this model to support both structural and behavioral refinement of objectoriented designs. We take the approach of the development of the design calculus based on the standard predicate logic in Hoare and He’s Unifying Theories of Programming (UTP). We also consider object reference in terms of object identity as values and mutually dependent methods.
Exploring Summation and Product Operators in the Refinement Calculus
 Mathematics of Program Construction
, 1994
"... Product and summation operators for predicate transformers were introduced by Naumann [21] and by Martin [15] using category theoretic considerations. In this paper, we formalise these operators in the higher order logic approach to the refinement calculus of [4], and examine various algebraic prope ..."
Abstract

Cited by 19 (10 self)
 Add to MetaCart
Product and summation operators for predicate transformers were introduced by Naumann [21] and by Martin [15] using category theoretic considerations. In this paper, we formalise these operators in the higher order logic approach to the refinement calculus of [4], and examine various algebraic properties of these operators. There are several motivating factors for this analysis. The product operator provides a model of simultaneous execution of statements, while the summation operator provides a simple model of late binding. We also generalise the product operator slightly to form an operator that corresponds to conjunction of specifications. We examine several applications of the these operators showing, for example, how a combination of the product and summation operators could be used to model inheritance in an objectoriented programming language. 1 Introduction Dijkstra introduced weakestprecondition predicate transformers as a means of verifying total correctness properties of ...
An integrated proof language for imperative programs
 In PLDI’09
"... We present an integrated proof language for guiding the actions of multiple reasoning systems as they work together to prove complex correctness properties of imperative programs. The language operates in the context of a program verification system that uses multiple reasoning systems to discharge ..."
Abstract

Cited by 18 (3 self)
 Add to MetaCart
We present an integrated proof language for guiding the actions of multiple reasoning systems as they work together to prove complex correctness properties of imperative programs. The language operates in the context of a program verification system that uses multiple reasoning systems to discharge generated proof obligations. It is designed to 1) enable developers to resolve key choice points in complex program correctness proofs, thereby enabling automated reasoning systems to successfully prove the desired correctness properties; 2) allow developers to identify key lemmas for the reasoning systems to prove, thereby guiding the reasoning systems to find an effective proof decomposition; 3) enable multiple reasoning systems to work together productively to prove a single correctness property by providing a mechanism that developers can use to divide the property into lemmas, each of which is suitable for
Roots of Refactoring
 In: Tenth OOPSLA Workshop on Behavioral Semantics
, 2001
"... Refactoring is a new name for a transformational approach to iterative software development. Originally focused on class diagrams, it is now commonly associated with objectoriented programming languages like Java. In this article, we trace some of the conceptual roots and the ideas behind refactori ..."
Abstract

Cited by 8 (1 self)
 Add to MetaCart
Refactoring is a new name for a transformational approach to iterative software development. Originally focused on class diagrams, it is now commonly associated with objectoriented programming languages like Java. In this article, we trace some of the conceptual roots and the ideas behind refactoring, and sketch its relation to other techniques, such as behavioral and structural refinement or compiler optimization. Based on these observations, we firmly believe that improved and adapted refactoring techniques will belong to the methodical tool set of tomorrow's software engineers.
Foundations Of The B Method
 Computing and Informatics
, 2003
"... B is a method for specifying, designing and coding software systems. It is based on ZermeloFraenkel set theory with the axiom of choice, the concept of generalized substitution and on structuring mechanisms (machine,refinement, implementation). The concept of refinement is the key notion for devel ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
B is a method for specifying, designing and coding software systems. It is based on ZermeloFraenkel set theory with the axiom of choice, the concept of generalized substitution and on structuring mechanisms (machine,refinement, implementation). The concept of refinement is the key notion for developing B models of (software) systems in an incremental way. B models are accompanied by mathematical proofs that justify them. Proofs of B models convince the user (designer or specifier) that the (software) system is effectively correct. We provide a survey of the underlying logic of the B method and the semantic concepts related to the B method; we detail the B development process partially supported by the mechanical engine of the prover.
Programming interfaces and basic topology
 Annals of Pure and Applied Logic
, 2005
"... A pattern of interaction that arises again and again in programming, is a “handshake”, in which two agents exchange data. The exchange is thought of as provision of a service. Each interaction is initiated by a specific agent —the client or Angel, and concluded by the other —the server or Demon. We ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
A pattern of interaction that arises again and again in programming, is a “handshake”, in which two agents exchange data. The exchange is thought of as provision of a service. Each interaction is initiated by a specific agent —the client or Angel, and concluded by the other —the server or Demon. We present a category in which the objects —called interaction structures in the paper — serve as descriptions of services provided across such handshaken interfaces. The morphisms —called (general) simulations— model components that provide one such service, relying on another. The morphisms are relations between the underlying sets of the interaction structures. The proof that a relation is a simulation can serve (in principle) as an executable program, whose specification is that it provides the service described by its domain, given an implementation of the service described by its codomain.
Predicate transformers and Linear Logic  yet another Denotational Model
 In http://jumpstart.anr.mcnc.org
, 2004
"... In the refinement calculus, monotonic predicate transformers are used to model specifications for (imperative) programs. Together with a natural notion of simulation, they form a category enjoying many algebraic properties. We build on this structure to make predicate transformers into a denotationa ..."
Abstract

Cited by 6 (5 self)
 Add to MetaCart
In the refinement calculus, monotonic predicate transformers are used to model specifications for (imperative) programs. Together with a natural notion of simulation, they form a category enjoying many algebraic properties. We build on this structure to make predicate transformers into a denotational model of full linear logic: all the logical constructions have a natural interpretation in terms of predicate transformers (i.e. in terms of specifications). We then interpret proofs of a formula by a safety property for the corresponding specification.