Syntax-Directed Semantics


Book Description

This is a motivated presentation of recent results on tree transducers, applied to studying the general properties of formal models and for providing semantics to context-free languages. The authors consider top-down tree transducers, macro tree transducers, attributed tree transducers, and macro attributed tree transducers. A unified terminology is used to define them, and their transformational capacities are compared. This handbook on tree transducers will serve as a base for further research.




Principles of Compiler Design


Book Description




The Formal Semantics of Programming Languages


Book Description

The Formal Semantics of Programming Languages provides the basic mathematical techniques necessary for those who are beginning a study of the semantics and logics of programming languages. These techniques will allow students to invent, formalize, and justify rules with which to reason about a variety of programming languages. Although the treatment is elementary, several of the topics covered are drawn from recent research, including the vital area of concurency. The book contains many exercises ranging from simple to miniprojects.Starting with basic set theory, structural operational semantics is introduced as a way to define the meaning of programming languages along with associated proof techniques. Denotational and axiomatic semantics are illustrated on a simple language of while-programs, and fall proofs are given of the equivalence of the operational and denotational semantics and soundness and relative completeness of the axiomatic semantics. A proof of Godel's incompleteness theorem, which emphasizes the impossibility of achieving a fully complete axiomatic semantics, is included. It is supported by an appendix providing an introduction to the theory of computability based on while-programs. Following a presentation of domain theory, the semantics and methods of proof for several functional languages are treated. The simplest language is that of recursion equations with both call-by-value and call-by-name evaluation. This work is extended to lan guages with higher and recursive types, including a treatment of the eager and lazy lambda-calculi. Throughout, the relationship between denotational and operational semantics is stressed, and the proofs of the correspondence between the operation and denotational semantics are provided. The treatment of recursive types - one of the more advanced parts of the book - relies on the use of information systems to represent domains. The book concludes with a chapter on parallel programming languages, accompanied by a discussion of methods for specifying and verifying nondeterministic and parallel programs.




Theories of Programming


Book Description

Sir Tony Hoare has had an enormous influence on computer science, from the Quicksort algorithm to the science of software development, concurrency and program verification. His contributions have been widely recognised: He was awarded the ACM’s Turing Award in 1980, the Kyoto Prize from the Inamori Foundation in 2000, and was knighted for “services to education and computer science” by Queen Elizabeth II of England in 2000. This book presents the essence of his various works—the quest for effective abstractions—both in his own words as well as chapters written by leading experts in the field, including many of his research collaborators. In addition, this volume contains biographical material, his Turing award lecture, the transcript of an interview and some of his seminal papers. Hoare’s foundational paper “An Axiomatic Basis for Computer Programming”, presented his approach, commonly known as Hoare Logic, for proving the correctness of programs by using logical assertions. Hoare Logic and subsequent developments have formed the basis of a wide variety of software verification efforts. Hoare was instrumental in proposing the Verified Software Initiative, a cooperative international project directed at the scientific challenges of large-scale software verification, encompassing theories, tools and experiments. Tony Hoare’s contributions to the theory and practice of concurrent software systems are equally impressive. The process algebra called Communicating Sequential Processes (CSP) has been one of the fundamental paradigms, both as a mathematical theory to reason about concurrent computation as well as the basis for the programming language occam. CSP served as a framework for exploring several ideas in denotational semantics such as powerdomains, as well as notions of abstraction and refinement. It is the basis for a series of industrial-strength tools which have been employed in a wide range of applications. This book also presents Hoare’s work in the last few decades. These works include a rigorous approach to specifications in software engineering practice, including procedural and data abstractions, data refinement, and a modular theory of designs. More recently, he has worked with collaborators to develop Unifying Theories of Programming (UTP). Their goal is to identify the common algebraic theories that lie at the core of sequential, concurrent, reactive and cyber-physical computations.




Applied Semantics


Book Description

This book is based on material presented at the international summer school on Applied Semantics that took place in Caminha, Portugal, in September 2000. We aim to present some recent developments in programming language research, both in semantic theory and in implementation, in a series of graduate-level lectures. The school was sponsored by the ESPRIT Working Group 26142 on Applied Semantics(APPSEM),whichoperatedbetweenApril1998andMarch2002.The purpose of this working group was to bring together leading reseachers, both in semantic theory and in implementation, with the speci?c aim of improving the communication between theoreticians and practitioners. TheactivitiesofAPPSEMwerestructuredintonineinterdisciplinarythemes: A: Semantics for object-oriented programming B: Program structuring C: Integration of functional languages and proof assistants D: Veri?cation methods E: Automatic program transformation F: Games, sequentiality, and abstract machines G: Types and type inference in programming H: Semantics-based optimization I: Domain theory and real number computation These themes were identi?ed as promising for pro?table interaction between semantic theory and practice, and were chosen to contribute to the following general topics: – description of existing programming language features; – design of new programming language features; – implementation and analysis of programming languages; – transformation and generation of programs; – veri?cation of programs. The chapters in this volume give examples of recent developments covering a broad range of topics of interest to APPSEM.




PROCEEDINGS OF THE 22ND CONFERENCE ON FORMAL METHODS IN COMPUTER-AIDED DESIGN – FMCAD 2022


Book Description

The Conference on Formal Methods in Computer-Aided Design (FMCAD) is an annual conference on the theory and applications of formal methods in hardware and system in academia and industry for presenting and discussing groundbreaking methods, technologies, theoretical results, and tools for reasoning formally about computing systems. FMCAD covers formal aspects of computer-aided system testing.




Trustworthy Compilers


Book Description

This unique guide book explains and teaches the concept of trustworthy compilers based on 50+ years of worldwide experience in the area of compilers, and on the author’s own 30+ years of expertise in development and teaching compilers. It covers the key topics related to compiler development as well as compiling methods not thoroughly covered in other books. The book also reveals many state-of-the-art compiler development tools and personal experience of their use in research projects by the author and his team. Software engineers of commercial companies and undergraduate/graduate students will benefit from this guide.




Mathematical Foundations of Programming Language Semantics


Book Description

This volume is the proceedings of the 3rd Workshop on the Mathematical Foundations of Programming Language Semantics held at Tulane University, New Orleans, Louisiana, April 8-10, 1987. The 1st Workshop was at Kansas State University, Manhattan, Kansas in April, 1985 (see LNCS 239), and the 2nd Workshop with a limited number of participants was at Kansas State in April, 1986. It was the intention of the organizers that the 3rd Workshop survey as many areas of the Mathematical Foundations of Programming Language Semantics as reasonably possible. The Workshop attracted 49 submitted papers, from which 28 papers were chosen for presentation. The papers ranged in subject from category theory and Lambda-calculus to the structure theory of domains and power domains, to implementation issues surrounding semantics.




Semantics of Specification Languages (SoSL)


Book Description

SoSL was the first International Workshop on Semantics of Specification Languages, held from 25-27 October 1993 in Utrecht, the Netherlands. The workshop was organized by the Department of Philosophy of Utrecht University with financial support from the Nationale Faciliteit Informatica of the Nederlandse Organisatie voor Wetenschappelijk Onderzoek (NWO), and under the auspices of the British Computer Society'S specialist group in Formal Aspects of Computing Science (BCS FACS). The concern of the workshop was the semantics of specification languages, and the issues closely related to this area, such as type checking and the justification of proof rules and proof obligations. Its aim was the exchange of problems and ideas in this field of formal methods, and the identification of common programs of work for further investigation. The program of SoSL consisted of 3 invited lectures presenting the developments of the semantics of 3 major specification languages. Furthermore, there were 16 presentations of submitted papers. This volume provides a direct account of the workshop. It contains 3 papers that match the invited lectures and the 16 selected papers. The editors want to thank all those who have contributed to the workshop; the Program Committee and the referees for selecting the contributed papers, the invited speakers for their interesting talks, the Organizing Committee for all their efforts, and of course the participants. We have the feeling that the workshop was worthwhile and should be repeated.




Introduction to Programming Languages


Book Description

In programming courses, using the different syntax of multiple languages, such as C++, Java, PHP, and Python, for the same abstraction often confuses students new to computer science. Introduction to Programming Languages separates programming language concepts from the restraints of multiple language syntax by discussing the concepts at an abstract level. Designed for a one-semester undergraduate course, this classroom-tested book teaches the principles of programming language design and implementation. It presents: Common features of programming languages at an abstract level rather than a comparative level The implementation model and behavior of programming paradigms at abstract levels so that students understand the power and limitations of programming paradigms Language constructs at a paradigm level A holistic view of programming language design and behavior To make the book self-contained, the author introduces the necessary concepts of data structures and discrete structures from the perspective of programming language theory. The text covers classical topics, such as syntax and semantics, imperative programming, program structures, information exchange between subprograms, object-oriented programming, logic programming, and functional programming. It also explores newer topics, including dependency analysis, communicating sequential processes, concurrent programming constructs, web and multimedia programming, event-based programming, agent-based programming, synchronous languages, high-productivity programming on massive parallel computers, models for mobile computing, and much more. Along with problems and further reading in each chapter, the book includes in-depth examples and case studies using various languages that help students understand syntax in practical contexts.