Abstract Computing Machines


Book Description

The book emphasizes the design of full-fledged, fully normalizing lambda calculus machinery, as opposed to the just weakly normalizing machines.




Principles of Abstract Interpretation


Book Description

Introduction to abstract interpretation, with examples of applications to the semantics, specification, verification, and static analysis of computer programs. Formal methods are mathematically rigorous techniques for the specification, development, manipulation, and verification of safe, robust, and secure software and hardware systems. Abstract interpretation is a unifying theory of formal methods that proposes a general methodology for proving the correctness of computing systems, based on their semantics. The concepts of abstract interpretation underlie such software tools as compilers, type systems, and security protocol analyzers. This book provides an introduction to the theory and practice of abstract interpretation, offering examples of applications to semantics, specification, verification, and static analysis of programming languages with emphasis on calculational design. The book covers all necessary computer science and mathematical concepts--including most of the logic, order, linear, fixpoint, and discrete mathematics frequently used in computer science--in separate chapters before they are used in the text. Each chapter offers exercises and selected solutions. Chapter topics include syntax, parsing, trace semantics, properties and their abstraction, fixpoints and their abstractions, reachability semantics, abstract domain and abstract interpreter, specification and verification, effective fixpoint approximation, relational static analysis, and symbolic static analysis. The main applications covered include program semantics, program specification and verification, program dynamic and static analysis of numerical properties and of such symbolic properties as dataflow analysis, software model checking, pointer analysis, dependency, and typing (both for forward and backward analysis), and their combinations. Principles of Abstract Interpretation is suitable for classroom use at the graduate level and as a reference for researchers and practitioners.




Introduction to Static Analysis


Book Description

A self-contained introduction to abstract interpretation–based static analysis, an essential resource for students, developers, and users. Static program analysis, or static analysis, aims to discover semantic properties of programs without running them. It plays an important role in all phases of development, including verification of specifications and programs, the synthesis of optimized code, and the refactoring and maintenance of software applications. This book offers a self-contained introduction to static analysis, covering the basics of both theoretical foundations and practical considerations in the use of static analysis tools. By offering a quick and comprehensive introduction for nonspecialists, the book fills a notable gap in the literature, which until now has consisted largely of scientific articles on advanced topics. The text covers the mathematical foundations of static analysis, including semantics, semantic abstraction, and computation of program invariants; more advanced notions and techniques, including techniques for enhancing the cost-accuracy balance of analysis and abstractions for advanced programming features and answering a wide range of semantic questions; and techniques for implementing and using static analysis tools. It begins with background information and an intuitive and informal introduction to the main static analysis principles and techniques. It then formalizes the scientific foundations of program analysis techniques, considers practical aspects of implementation, and presents more advanced applications. The book can be used as a textbook in advanced undergraduate and graduate courses in static analysis and program verification, and as a reference for users, developers, and experts.




Abstract City


Book Description

This anthology of the illustrator’s New York Times blog features a chapter of all-new material: “a masterpiece of sophisticated humor” (Library Journal, starred review). In July 2008, illustrator and designer Christoph Niemann began Abstract City, a visual blog for the New York Times. His posts were inspired by the desire to re-create simple and everyday observations and stories from his own life that everyone could relate to. In Niemann’s hands, mundane experiences such as riding the subway or trying to get a good night’s sleep were transformed into delightful flights of visual fancy. In Abstract City, the struggle to keep up with housework becomes a battle against adorable but crafty goblins, and nostalgia about New York manifests in simple but strikingly spot-on LEGO creations. This brilliantly illustrated collection of reflections on modern life includes all sixteen of the original blog posts as well as a new chapter created exclusively for the book.







A Book of Abstract Algebra


Book Description

Accessible but rigorous, this outstanding text encompasses all of the topics covered by a typical course in elementary abstract algebra. Its easy-to-read treatment offers an intuitive approach, featuring informal discussions followed by thematically arranged exercises. This second edition features additional exercises to improve student familiarity with applications. 1990 edition.




Abstract Domains in Constraint Programming


Book Description

Constraint Programming aims at solving hard combinatorial problems, with a computation time increasing in practice exponentially. The methods are today efficient enough to solve large industrial problems, in a generic framework. However, solvers are dedicated to a single variable type: integer or real. Solving mixed problems relies on ad hoc transformations. In another field, Abstract Interpretation offers tools to prove program properties, by studying an abstraction of their concrete semantics, that is, the set of possible values of the variables during an execution. Various representations for these abstractions have been proposed. They are called abstract domains. Abstract domains can mix any type of variables, and even represent relations between the variables. In this work, we define abstract domains for Constraint Programming, so as to build a generic solving method, dealing with both integer and real variables. We also study the octagons abstract domain, already defined in Abstract Interpretation. Guiding the search by the octagonal relations, we obtain good results on a continuous benchmark. We also define our solving method using Abstract Interpretation techniques, in order to include existing abstract domains. Our solver, AbSolute, is able to solve mixed problems and use relational domains. - Exploits the over-approximation methods to integrate AI tools in the methods of CP - Exploits the relationships captured to solve continuous problems more effectively - Learn from the developers of a solver capable of handling practically all abstract domains







Warren's Abstract Machine


Book Description

This tutorial demystifies one of the most important yet poorly understood aspects of logic programming, the Warren Abstract Machine or WAM. The author's step-by-step construction of the WAM adds features in a gradual manner, clarifying the complex aspects of the design and providing the first detailed study of WAM since it was designed in 1983.Developed by David H. D. Warren, the WAM is an abstract (nonphysical) computer that aids in the compilation and implementation of the Prolog programming language and offers techniques for compiling and optimizing symbolic computing that can be generalized beyond Prolog. Although the benefits of the WAM design have been widely accepted, few have been able to penetrate the WAM. This lucid introduction defines separate abstract machines for each conceptually separate part of the design and refines them, finally stitching them together to make a WAM. An index presents all of the critical concepts used in the WAM. It is assumed that readers have a clear understanding of the operational semantics of Prolog, in particular, of unification and backtracking, but a brief summary of the necessary Prolog notions is provided.Contents: Introduction. Unification -- Pure and Simple. Flat Resolution. Prolog. Optimizing the Design. Conclusion. Appendixes.




Abstract State Machines


Book Description