Pushing the Limits of Compiler Verification

Pushing the Limits of Compiler Verification PDF Author: Eric Mullen
Publisher:
ISBN:
Category :
Languages : en
Pages : 86

Get Book Here

Book Description
Modern computer systems rely on the correctness of at least one compiler for correct operation. Formal verification is a powerful technique for constructing correct systems. While there have been many efforts to develop formally verified compilers, those compilers are still not widely used. In this thesis, I present two major systems developments and one case study which push the limits of compiler verification, towards more and better verified compilers. Œuf: Verifying systems by implementing them in the programming language of a proof assistant (e.g., Gallina for Coq) lets us directly leverage the full power of the proof assistant for verifying the system. But, to execute such an implementation requires extraction, a large complicated process that is in the trusted computing base (TCB). Here I present Œuf, a verified compiler from a subset of Gallina to assembly. Œuf's correctness theorem ensures that compilation preserves the semantics of the source Gallina program. I describe how Œuf's specification can be used as a foreign function interface to reason about the interaction between compiled Gallina programs and surrounding shim code. Additionally, Œuf maintains a small TCB for its front-end by reflecting Gallina programs to Œuf source and automatically ensuring equivalence using computational denotation. This design enabled my collaborators and me to implement some early compiler passes (e.g., lambda lifting) in the untrusted reflection and ensure their correctness via translation validation. To evaluate Œuf, we compile Appel’s SHA256 specification from Gallina to x86 and write a shim for the generated code, yielding a verified sha256sum implementation with a small TCB. Using Œuf: Œufwas developed in order to allow verified systems to be developed and verified in Coq, compiled to executable code using Œuf, with all guarantees proven at the Gallina level preserved through compilation to the assembly level. In order to evaluate this goal, I built the WordFreq verified system in Coq, compiled it with Œuf, and preserve the correctness guarantee through to the generated assembly code. Here I present the WordFreq verified system, its correctness guarantee, and the major parts of its correctness proof. I discuss the development of the system and its proof, as well as the axiomatic primitives necessary to tie it together. Peek: Transformations over assembly code are common in many compilers. These transformations are also some of the most bug-dense compiler components. Such bugs could be eliminated by formally verifying the compiler, but state-of-the-art formally verified compilers like CompCert do not support assembly-level program transformations. Here I present Peek, a framework for expressing, verifying, and running meaning-preserving assembly-level program transformations in CompCert. Peek contributes four new components: a lower level semantics for CompCert x86 syntax, a liveness analysis, a library for expressing and verifying peephole optimizations, and a verified peephole optimization pass built into CompCert. Each of these is accompanied by a correctness proof in Coq against realistic assumptions about the calling convention and the system memory allocator. Verifying peephole optimizations in Peek requires proving only a set of local properties, which my collaborators and I have proved are sufficient to ensure global transformation correctness. We have proven these local properties for 28 peephole transformations from the literature. Here I discuss the development of our new assembly semantics, liveness analysis, representation of program transformations, and execution engine; describe the verification challenges of each component; and detail techniques we applied to mitigate the proof burden.

Pushing the Limits of Compiler Verification

Pushing the Limits of Compiler Verification PDF Author: Eric Mullen
Publisher:
ISBN:
Category :
Languages : en
Pages : 86

Get Book Here

Book Description
Modern computer systems rely on the correctness of at least one compiler for correct operation. Formal verification is a powerful technique for constructing correct systems. While there have been many efforts to develop formally verified compilers, those compilers are still not widely used. In this thesis, I present two major systems developments and one case study which push the limits of compiler verification, towards more and better verified compilers. Œuf: Verifying systems by implementing them in the programming language of a proof assistant (e.g., Gallina for Coq) lets us directly leverage the full power of the proof assistant for verifying the system. But, to execute such an implementation requires extraction, a large complicated process that is in the trusted computing base (TCB). Here I present Œuf, a verified compiler from a subset of Gallina to assembly. Œuf's correctness theorem ensures that compilation preserves the semantics of the source Gallina program. I describe how Œuf's specification can be used as a foreign function interface to reason about the interaction between compiled Gallina programs and surrounding shim code. Additionally, Œuf maintains a small TCB for its front-end by reflecting Gallina programs to Œuf source and automatically ensuring equivalence using computational denotation. This design enabled my collaborators and me to implement some early compiler passes (e.g., lambda lifting) in the untrusted reflection and ensure their correctness via translation validation. To evaluate Œuf, we compile Appel’s SHA256 specification from Gallina to x86 and write a shim for the generated code, yielding a verified sha256sum implementation with a small TCB. Using Œuf: Œufwas developed in order to allow verified systems to be developed and verified in Coq, compiled to executable code using Œuf, with all guarantees proven at the Gallina level preserved through compilation to the assembly level. In order to evaluate this goal, I built the WordFreq verified system in Coq, compiled it with Œuf, and preserve the correctness guarantee through to the generated assembly code. Here I present the WordFreq verified system, its correctness guarantee, and the major parts of its correctness proof. I discuss the development of the system and its proof, as well as the axiomatic primitives necessary to tie it together. Peek: Transformations over assembly code are common in many compilers. These transformations are also some of the most bug-dense compiler components. Such bugs could be eliminated by formally verifying the compiler, but state-of-the-art formally verified compilers like CompCert do not support assembly-level program transformations. Here I present Peek, a framework for expressing, verifying, and running meaning-preserving assembly-level program transformations in CompCert. Peek contributes four new components: a lower level semantics for CompCert x86 syntax, a liveness analysis, a library for expressing and verifying peephole optimizations, and a verified peephole optimization pass built into CompCert. Each of these is accompanied by a correctness proof in Coq against realistic assumptions about the calling convention and the system memory allocator. Verifying peephole optimizations in Peek requires proving only a set of local properties, which my collaborators and I have proved are sufficient to ensure global transformation correctness. We have proven these local properties for 28 peephole transformations from the literature. Here I discuss the development of our new assembly semantics, liveness analysis, representation of program transformations, and execution engine; describe the verification challenges of each component; and detail techniques we applied to mitigate the proof burden.

IOS 5 Programming Pushing the Limits

IOS 5 Programming Pushing the Limits PDF Author: Rob Napier
Publisher: John Wiley & Sons
ISBN: 1119961327
Category : Computers
Languages : en
Pages : 433

Get Book Here

Book Description
Provides information on using iOS 5 to create applications for the iPhone, iPad, and iPod Touch.

iOS 6 Programming Pushing the Limits

iOS 6 Programming Pushing the Limits PDF Author: Rob Napier
Publisher: John Wiley & Sons
ISBN: 1118449975
Category : Technology & Engineering
Languages : en
Pages : 784

Get Book Here

Book Description
Learn to build extraordinary apps for iPhone, iPad, and iPod touch iOS is the hottest development platform around, and iOS 6 adds a new and deeper dimension to explore. This guide offers serious information for serious programmers who know the basics and are ready to dive into the advanced features of iOS. You'll learn to create killer apps for the iPad, iPhone, and iPod touch, including how to maximize performance and make more money from your apps with in-app purchases. Topics covered include security, multitasking, running on multiple platforms, blocks and functional programming, advanced text layout, and much more. App development for iPhones and iPads is a lucrative and exciting venture; books on this topic are steady bestsellers This advanced guide helps experienced developers take full advantage of the latest platform upgrade, iOS 6 Provides in-depth background on maximizing your apps with Apple's iPhone SDK 6.0, including the major new APIs and building applications for the new iPad Covers keeping control of multitasking, increasing income with in-app purchases, key value observing with Cocoa, running on multiple platforms, advanced text layout, building a Core foundation, and more iOS 6 Programming: Pushing the Limits gives experienced mobile developers a wealth of knowledge for creating outstanding iPhone and iPad apps on the latest platform.

ESL Design and Verification

ESL Design and Verification PDF Author: Grant Martin
Publisher: Elsevier
ISBN: 0080488838
Category : Technology & Engineering
Languages : en
Pages : 489

Get Book Here

Book Description
Visit the authors' companion site! http://www.electronicsystemlevel.com/ - Includes interactive forum with the authors!Electronic System Level (ESL) design has mainstreamed – it is now an established approach at most of the world’s leading system-on-chip (SoC) design companies and is being used increasingly in system design. From its genesis as an algorithm modeling methodology with ‘no links to implementation’, ESL is evolving into a set of complementary methodologies that enable embedded system design, verification and debug through to the hardware and software implementation of custom SoC, system-on-FPGA, system-on-board, and entire multi-board systems. This book arises from experience the authors have gained from years of work as industry practitioners in the Electronic System Level design area; they have seen "SLD" or "ESL" go through many stages and false starts, and have observed that the shift in design methodologies to ESL is finally occurring. This is partly because of ESL technologies themselves are stabilizing on a useful set of languages being standardized (SystemC is the most notable), and use models are being identified that are beginning to get real adoption. ESL DESIGN & VERIFICATION offers a true prescriptive guide to ESL that reviews its past and outlines the best practices of today.Table of ContentsCHAPTER 1: WHAT IS ESL? CHAPTER 2: TAXONOMY AND DEFINITIONS FOR THE ELECTRONIC SYSTEM LEVEL CHAPTER 3: EVOLUTION OF ESL DEVELOPMENT CHAPTER 4: WHAT ARE THE ENABLERS OF ESL? CHAPTER 5: ESL FLOW CHAPTER 6: SPECIFICATIONS AND MODELING CHAPTER 7: PRE-PARTITIONING ANALYSIS CHAPTER 8: PARTITIONING CHAPTER 9: POST-PARTITIONING ANALYSIS AND DEBUG CHAPTER 10: POST-PARTITIONING VERIFICATION CHAPTER 11: HARDWARE IMPLEMENTATION CHAPTER 12: SOFTWARE IMPLEMENTATION CHAPTER 13: USE OF ESL FOR IMPLEMENTATION VERIFICATION CHAPTER 14: RESEARCH, EMERGING AND FUTURE PROSPECTS APPENDIX: LIST OF ACRONYMS * Provides broad, comprehensive coverage not available in any other such book * Massive global appeal with an internationally recognised author team * Crammed full of state of the art content from notable industry experts

Verified Software: Theories, Tools, Experiments

Verified Software: Theories, Tools, Experiments PDF Author: Bertrand Meyer
Publisher: Springer Science & Business Media
ISBN: 3540691472
Category : Computers
Languages : en
Pages : 566

Get Book Here

Book Description
A Step Towards Verified Software Worries about the reliability of software are as old as software itself; techniques for allaying these worries predate even James King’s 1969 thesis on “A program verifier. ” What gives the whole topic a new urgency is the conjunction of three phenomena: the blitz-like spread of software-rich systems to control ever more facets of our world and our lives; our growing impatience with deficiencies; and the development—proceeding more slowly, alas, than the other two trends—of techniques to ensure and verify software quality. In 2002 Tony Hoare, one of the most distinguished contributors to these advances over the past four decades, came to the conclusion that piecemeal efforts are no longer sufficient and proposed a “Grand Challenge” intended to achieve, over 15 years, the production of a verifying compiler: a tool that while processing programs would also guarantee their adherence to specified properties of correctness, robustness, safety, security and other desirable properties. As Hoare sees it, this endeavor is not a mere research project, as might normally be carried out by one team or a small consortium of teams, but a momentous endeavor, comparable in its scope to the successful mission to send a man to the moon or to the sequencing of the human genome.

A Machine-Checked, Type-Safe Model of Java Concurrency

A Machine-Checked, Type-Safe Model of Java Concurrency PDF Author: Andreas Lochbihler
Publisher: KIT Scientific Publishing
ISBN: 3866448856
Category : Computers
Languages : en
Pages : 440

Get Book Here

Book Description
The Java programming language provides safety and security guarantees such as type safety and its security architecture. They distinguish it from other mainstream programming languages like C and C++. In this work, we develop a machine-checked model of concurrent Java and the Java memory model and investigate the impact of concurrency on these guarantees. From the formal model, we automatically obtain an executable verified compiler to bytecode and a validated virtual machine.

iOS 7 Programming Pushing the Limits

iOS 7 Programming Pushing the Limits PDF Author: Rob Napier
Publisher: John Wiley & Sons
ISBN: 1118818334
Category : Technology & Engineering
Languages : en
Pages : 504

Get Book Here

Book Description
Get ready to create killer apps for iPad and iPhone on the new iOS 7! With Apple's introduction of iOS 7, demand for developers who know the new iOS will be high. You need in-depth information about the new characteristics and capabilities of iOS 7, and that's what you'll find in this book. If you have experience with C or C++, this guide will show you how to create amazing apps for iPhone, iPad, and iPod touch. You'll also learn to maximize your programs for mobile devices using iPhone SDK 7.0. Advanced topics such as security services, running on multiple iPlatforms, and local networking with Core Bluetooth are also covered. Prepares experienced developers to create great apps for the newest version of Apple's iOS Thoroughly covers the serious capabilities of iOS 7; information you need in order to make your apps stand out Delves into advanced topics including how to control multitasking, security services, running apps on multiple iPlatforms and iDevices, enabling in-app purchases, advanced text layout, and building a core foundation Also covers REST, advanced GCD, internationalization and localization, and local networking with Core Bluetooth iOS 7 Programming: Pushing the Limits will help you develop applications that take full advantage of everything iOS 7 has to offer.

Modular Compiler Verification

Modular Compiler Verification PDF Author: Markus Müller-Olm
Publisher: Lecture Notes in Computer Science
ISBN:
Category : Computers
Languages : en
Pages : 286

Get Book Here

Book Description
This is the first comprehensive book on hypermedia and the World Wide Web that includes features of the second generation systems. Definitions, history, current technology and problems, leading-edge initiatives, future applications, all these are seen as an unfolding of a millenial communication medium that is not only serving but also involving even the non-technical person in a very technical world. Much of the promise of hypermedia lies in its applications to education, and this receives prominence in the book. The new hypermedia system HyperWave is described in detail. The book's vision, organization, and easy-to-read style make it suitable as a source of information for the practitioner and the general reader. It may also serve both as a reference book for researchers and as a textbook.

Computer Aided Verification

Computer Aided Verification PDF Author: Hana Chockler
Publisher: Springer
ISBN: 331996142X
Category : Computers
Languages : en
Pages : 553

Get Book Here

Book Description
This open access two-volume set LNCS 10980 and 10981 constitutes the refereed proceedings of the 30th International Conference on Computer Aided Verification, CAV 2018, held in Oxford, UK, in July 2018. The 52 full and 13 tool papers presented together with 3 invited papers and 2 tutorials were carefully reviewed and selected from 215 submissions. The papers cover a wide range of topics and techniques, from algorithmic and logical foundations of verification to practical applications in distributed, networked, cyber-physical, and autonomous systems. They are organized in topical sections on model checking, program analysis using polyhedra, synthesis, learning, runtime verification, hybrid and timed systems, tools, probabilistic systems, static analysis, theory and security, SAT, SMT and decisions procedures, concurrency, and CPS, hardware, industrial applications.

Construction and Analysis of Safe, Secure, and Interoperable Smart Devices

Construction and Analysis of Safe, Secure, and Interoperable Smart Devices PDF Author: Gilles Barthe
Publisher: Springer Science & Business Media
ISBN: 3540242872
Category : Computers
Languages : en
Pages : 265

Get Book Here

Book Description
This book constitutes the thoroughly refereed post-proceedings of the International Workshop on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices, CASSIS 2004, held in Marseille, France in March 2004. The 13 revised full papers presented were carefully selected during two rounds of reviewing and improvement. The papers are devoted to trends in smart card research, operating systems and virtual machine technologies, secure platforms, security, application validation, verification, and formal modeling and formal methods.