This Festschrift volume, published in memory of Harald Ganzinger, contains 17 papers from colleagues all over the world and covers all the fields to which Harald Ganzinger dedicated his work during his academic career. The volume begins with a complete account of Harald Ganzinger's work and then turns its focus to the research of his former colleagues, students, and friends who pay tribute to him through their writing. Their individual papers span a broad range of topics, including programming language semantics, analysis and verification, first-order and higher-order theorem proving, unification theory, non-classical logics, reasoning modulo theories, and applications of automated reasoning in biology.
This book gives an account oC the mathematical Coundations oC logic programming. I have attempted to make the book selC-contained by including prooCs of almost all the results needed. The only prerequisites are some Camiliarity with a logic programming language, such as PROLOG, and a certain mathematical maturity. For example, the reader should be Camiliar with induction arguments and be comCortable manipulating logical expressions. Also the last chapter assumes some acquaintance with the elementary aspects of metric spaces, especially properties oC continuous mappings and compact spaces. Chapter 1 presents the declarative aspects of logic programming. This chapter contains the basic material Crom first order logic and fixpoint theory which will be required. The main concepts discussed here are those oC a logic program, model, correct answer substitution and fixpoint. Also the unification algorithm is discussed in some detail. Chapter 2 is concerned with the procedural semantics oC logic programs. The declarative concepts are implemented by means oC a specialized Corm oC resolution, called SLD-resolution. The main results of this chapter concern the soundness and completeness oC SLD-resolution and the independence oC the computation rule. We also discuss the implications of omitting the occur check from PROLOG implementations. Chapter 3 discusses negation. Current PROLOG systems implement a form of negation by means of the negation as failure rule. The main results of this chapter are the soundness and completeness oC the negation as failure rule.
This collection of original research papers assesses and summarizes the impact of types on logic programming. Type theory is a well-established branch of theoretical computer science that has played an important role in the development of imperative and functional programming languages. This collection of original research papers assesses and summarizes the impact of types on logic programming. It covers all of the major themes in this burgeoning field, including simple types, regular tree types, polymorphic types, subtypes, and dependent types. Language design issues as well as semantics, pragmatics, and applications of types are discussed.The benefits that type considerations have to offer logic programming are being increasingly realized: through type checking many errors can be caught before a program is run, resulting in more reliable programs; types form an expressive basis for module systems, since they prescribe a machine-verifiable interface for the code encapsulated within a module; and types may be used to improve performance of code generated by a compiler. The research in this collection describes these benefits as well as important differences in the impact of types in functional and logic programming.
Formal systems that describe computations over syntactic structures occur frequently in computer science. Logic programming provides a natural framework for encoding and animating such systems. However, these systems often embody variable binding, a notion that must be treated carefully at a computational level. This book aims to show that a programming language based on a simply typed version of higher-order logic provides an elegant, declarative means for providing such a treatment. Three broad topics are covered in pursuit of this goal. First, a proof-theoretic framework that supports a general view of logic programming is identified. Second, an actual language called λProlog is developed by applying this view to higher-order logic. Finally, a methodology for programming with specifications is exposed by showing how several computations over formal objects such as logical formulas, functional programs, and λ-terms and π-calculus expressions can be encoded in λProlog.
Written for those who wish to learn Prolog as a powerful software development tool, but do not necessarily have any background in logic or AI. Includes a full glossary of the technical terms and self-assessment exercises.
This book celebratesthe 25th anniversaryof GULP—the Italian Associationfor LogicProgramming.Authored by Italian researchersat the leading edge of their ?elds, it presents an up-to-date survey of a broad collection of topics in logic programming, making it a useful reference for both researchers and students. During its 25-year existence, GULP has organised a wide range of national and international activities, including both conferences and summer schools. It has been especially active in supporting and encouraging young researchers, by providing scholarships for GULP events and awarding distinguished disser- tions. WeintheinternationallogicprogrammingcommunitylookuponGULPwith a combination of envy, admiration and gratitude. We are pleased to attend its conferences and summer schools, where we can learn about scienti?c advances, catch up with old friends and meet young students. It is an honour for me to acknowledge our appreciation to GULP for its outstanding contributions to our ?eld and to express our best wishes for its continuing prosperity in the future. March 2010 Robert Kowalski Imperial College London Preface On June 18, 1985, a group of pioneering researchers, including representatives from industry, national research labs, and academia, attended the constituent assembly of the Group of researchers and Users of Logic Programming (GULP) association. That was the starting point of a long adventure in science, that 1 we are still experiencing 25 years later. This volume celebrates this important event.
Starting Out with Programming Logic and Design, Third Edition, is a language-independent introductory programming book that orients students to programming concepts and logic without assuming any previous programming experience. In the successful, accessible style of Tony Gaddis’ best-selling texts, useful examples and detail-oriented explanations allow students to become comfortable with fundamental concepts and logical thought processes used in programming without the complication of language syntax. Students gain confidence in their program design skills to transition into more comprehensive programming courses. The book is ideal for a programming logic course taught as a precursor to a language-specific introductory programming course, or for the first part of an introductory programming course.
The state of the art of the bioengineering aspects of the morphology of microorganisms and their relationship to process performance are described in this volume. Materials and methods of the digital image analysis and mathematical modeling of hyphal elongation, branching and pellet formation as well as their application to various fungi and actinomycetes during the production of antibiotics and enzymes are presented.
Logic programming has increasing significance in computer science beyond the current fashion for expert systems. This book takes a software engineering rather than an expert systems/AI approach and covers logical theory, practical programming and PROLOG im