20 research outputs found

    Operationelle und funktionale Semantik von Σ-Graphen mit Anwendungen auf LISP

    Get PDF
    Dieser Bericht ist im Wortlaut identisch mit: Peter Padawitz, Church-Rosser-Eigenschaften von Graph-Grammatiken und Anwendungen auf die Semantik von LISP, Diplomarbeit 1978.Previous studies of operational versus functional semantics of symbolic expressions mostly have been confined to treelike expressions and evaluation by "simplification" and substitution of recursive definitions for function symbols. In order to drop these restrictions we introduce Σ-graphs and Σ-grammars to represent expressions and evaluation rules, respectively. Functional semantics of Σ-graphs is defined as an extension of Scott's fixed point semantics of flow diagrams. We prove that derivations via a Σ-grammar P preserve the functional semantics of Σ-graphs if the underlying "semantic algebra" satisfies the equations given by P. To get an operational semantics of a Σ-graph G relative to a Σ-grammar P derivations of G via P must yield a unique normal form. Therefore sufficient conditions for a weak Church-Rosser property of Σ-grammars are formulated and proved for some classes of such grammars. Applying these results to the programming language LISP we show that the evaluation rules of a LISP interpreter are compatible with the semantics of LISP and weak Church-Rosser where garbage collection is included

    Implicit complexity for coinductive data: a characterization of corecurrence

    Full text link
    We propose a framework for reasoning about programs that manipulate coinductive data as well as inductive data. Our approach is based on using equational programs, which support a seamless combination of computation and reasoning, and using productivity (fairness) as the fundamental assertion, rather than bi-simulation. The latter is expressible in terms of the former. As an application to this framework, we give an implicit characterization of corecurrence: a function is definable using corecurrence iff its productivity is provable using coinduction for formulas in which data-predicates do not occur negatively. This is an analog, albeit in weaker form, of a characterization of recurrence (i.e. primitive recursion) in [Leivant, Unipolar induction, TCS 318, 2004].Comment: In Proceedings DICE 2011, arXiv:1201.034

    Algebraic Model Checking

    Get PDF
    Abstract. Several more or less algebraic approaches to model checking are presented and compared with each other with respect to their range of applications and their degree of automation. All of them have been implemented and tested in our Haskell-based formal-reasoning system Expander2. Besides realizing and integrating state-of-the art proof and computation rules the system admits rarely restricted specifications of the models to be checked in terms of rewrite rules and functional-logic programs. It also offers flexible features for visualizing and even animating models and computations. Indeed, this paper does not present purely theoretical work. Due to the increasing abstraction potential of programming languages like Haskell the boundaries between developing a formal system and implementing it or making it ‘user-friendly ’ as well as between systems developed in different communities become more and more obsolete. The individual topics discussed in the paper reflect this observation.

    Inductive Theorem Proving for Design Specifications

    Get PDF
    We present a number of new results on inductive theorem proving for design specifications based on Horn logic with equality. Induction is explicit here because induction orderings are supposed to be part of the specification. We show how the automatic support for program verification is enhanced if the specification satisfies a bunch of rewrite properties, summarized under the notion of canonicity. The enhancement is due to inference rules and corresponding strategies whose soundness is implied by the specification's canonicity. The second main result of the paper provides a method for proving canonicity by using the same rules, which are applied in proofs of conjectures about the specification and the functional-logic programs it contains. Contents 1 Introduction 2 1.1 Expander . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Proof by term rewriting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..

    Proof in Flat Specifications

    No full text
    Introduction This chapter deals with the verification of data types. We put particular emphasis on ffl a uniform syntax for constructor-based specifications of both visible and hidden data types, ffl Gentzen clauses, rules and proofs as a uniform schema for presenting (proofs of) conjectures in a natural, flexible, structured and implementable way that keeps the gap between informal reasoning and formal deduction as small as possible, ffl a simple model- and proof-theoretical basis to which all more or less advanced rules and methods can be reduced for showing their correctness, ffl providing the reader with syntactical criteria for the main conditions on a specification that shall be amenable to efficient proof and prototyping methods. Deductive aspects of specifications are also treated in other chapters of this book. Sections 2.6 through 2.9 provide basic notions and results for equational reasoning, i.e.
    corecore