Refinement Types


Book Description

Refinement types can be the vector that brings formal verification into mainstream software development. This happy outcome hinges upon the design and implementation of refinement type systems that can be retrofitted to existing languages, or co-designed with new ones.In this book, the authors catalyze the development of such systems by distilling the ideas developed in the sprawling literature on the topic into a coherent and unified tutorial that explains the key ingredients of modern refinement type systems, by showing how to implement a refinement type checker.Inspired by the nanopass framework for teaching compilation the authors show how to implement refinement types via a progression of languages that incrementally add features to the language or type system.The readily accessible book provides the reader with an insightful introduction into Refinement Types using an innovative tutorial style that enables fast learning. Furthermore, the accompanying software implementation allows readers to work on practical real-world examples.




Refinement Monoids, Equidecomposability Types, and Boolean Inverse Semigroups


Book Description

Adopting a new universal algebraic approach, this book explores and consolidates the link between Tarski's classical theory of equidecomposability types monoids, abstract measure theory (in the spirit of Hans Dobbertin's work on monoid-valued measures on Boolean algebras) and the nonstable K-theory of rings. This is done via the study of a monoid invariant, defined on Boolean inverse semigroups, called the type monoid. The new techniques contrast with the currently available topological approaches. Many positive results, but also many counterexamples, are provided.




4th Refinement Workshop


Book Description

This volume contains the proceedings ofthe 4th Refinement Workshop which was organised by the British Computer Society specialist group in Formal Aspects of Computing Science and held in Wolfson College, Cambridge, on 9-11 January, 1991. The term refinement embraces the theory and practice of using formal methods for specifying and implementing hardware and software. Most of the achievements to date in the field have been in developing the theoretical framework for mathematical approaches to programming, and on the practical side in formally specifying software, while more recently we have seen the development of practical approaches to deriving programs from their speCifications. The workshop gives a fair picture of the state of the art: it presents new theories for reasoning about software and hardware and case studies in applying known theory to interesting small-and medium-scale problems. We hope the book will be Of interest both to researchers in formal methods, and to software engineers in industry who want to keep abreast of possible applications of formal methods in industry. The programme consisted both of invited talks and refereed papers. The invited speakers were Ib S0rensen, Jean-Raymond Abrial, Donald MacKenzie, Ralph Back, Robert Milne, Mike Read, Mike Gordon, and Robert Worden who gave the introductory talk. This is the first refinement workshop that solicited papers for refereeing, and despite a rather late call for papers the response was excellent.




Formal Refinement for Operating System Kernels


Book Description

The kernel of any operating system is its most critical component, as the rest of the system depends on it. This book shows how the formal specification of kernels can be followed by a completely formal refinement process that leads to the extraction of executable code. This formal refinement process ensures that the code precisely meets the specification. The author documents the complete process, including proofs.




Refinement


Book Description

Refinement is one of the cornerstones of a formal approach to software engineering. Refinement is all about turning an abstract description (of a soft or hardware system) into something closer to implementation. It provides that essential bridge between higher level requirements and an implementation of those requirements. This book provides a comprehensive introduction to refinement for the researcher or graduate student. It introduces refinement in different semantic models, and shows how refinement is defined and used within some of the major formal methods and languages in use today. It (1) introduces the reader to different ways of looking at refinement, relating refinement to observations(2) shows how these are realised in different semantic models (3) shows how different formal methods use different models of refinement, and (4) how these models of refinement are related.




Refinement Techniques in Software Engineering


Book Description

This tutorial book presents an augmented selection of the material presented at the First Pernambuco Summer School on Software Engineering, PSSE 2004, held in Receife, Brazil in November/December 2004, jointly with the Brazilian Symposium on Formal Methods (SBMF 2004). The seven tutorial lectures presented are the thoroughly revised versions of the contributions from the invited lecturers. The courses cover a wide spectrum of topics.




Refinement in Z and Object-Z


Book Description

Refinement is one of the cornerstones of the formal approach to software engineering, and its use in various domains has led to research on new applications and generalisation. This book brings together this important research in one volume, with the addition of examples drawn from different application areas. It covers four main themes: Data refinement and its application to Z Generalisations of refinement that change the interface and atomicity of operations Refinement in Object-Z Modelling state and behaviour by combining Object-Z with CSP Refinement in Z and Object-Z: Foundations and Advanced Applications provides an invaluable overview of recent research for academic and industrial researchers, lecturers teaching formal specification and development, industrial practitioners using formal methods in their work, and postgraduate and advanced undergraduate students. This second edition is a comprehensive update to the first and includes the following new material: Early chapters have been extended to also include trace refinement, based directly on partial relations rather than through totalisation Provides an updated discussion on divergence, non-atomic refinements and approximate refinement Includes a discussion of the differing semantics of operations and outputs and how they affect the abstraction of models written using Object-Z and CSP Presents a fuller account of the relationship between relational refinement and various models of refinement in CSP Bibliographic notes at the end of each chapter have been extended with the most up to date citations and research




Program Development by Refinement


Book Description

This volume contains a collection of case studies in program refinement with the B Method. They show typical program developments from problem analysis to implementation with non-trivial examples. They cover areas for which the B Method was originally conceived as well as the following novel areas: - data structures; - information management; - process control systems; - distributed systems. This volume will primarily be of interest to practitioners who either already use B and want to improve their program refinement techniques, or those who are considering using it and want to learn about its implementation. It will also provide useful background reading for students taking courses in the B Method, Formal Specification, or Refinement.




Programming Languages and Systems


Book Description

This book constitutes the refereed proceedings of the 22nd European Symposium on Programming, ESOP 2013, held as part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2013, which took place in Rome, Italy, in March 2013. The 31 papers, presented together with a full-length invited talk, were carefully reviewed and selected from 120 full submissions. The contributions have been organized according to ten topical sections on programming techniques; programming tools; separation logic; gradual typing; shared-memory concurrency and verification; process calculi; taming concurrency; model checking and verification; weak-memory concurrency and verification; and types, inference, and analysis.




Phraseology in Legal and Institutional Settings


Book Description

This volume presents a comprehensive and up-to-date overview of major developments in the study of how phraseology is used in a wide range of different legal and institutional contexts. This recent interest has been mainly sparked by the development of corpus linguistics research, which has both demonstrated the centrality of phraseological patterns in language and provided researchers with new and powerful analytical tools. However, there have been relatively few empirical studies of word combinations in the domain of law and in the many different contexts where legal discourse is used. This book seeks to address this gap by presenting some of the latest developments in the study of this linguistic phenomenon from corpus-based and interdisciplinary perspectives. The volume draws on current research in legal phraseology from a variety of perspectives: translation, comparative/contrastive studies, terminology, lexicography, discourse analysis and forensic linguistics. It contains contributions from leading experts in the field, focusing on a wide range of issues amply illustrated through in-depth corpus-informed analyses and case studies. Most contributions to this book are multilingual, featuring different legal systems and legal languages. The volume will be a valuable resource for linguists interested in phraseology as well as lawyers and legal scholars, translators, lexicographers, terminologists and students who wish to pursue research in the area.