12 research outputs found

    Implementing functional programs using mutable abstract data types

    Get PDF
    Journal ArticleWe study the following problem in this paper. Suppose we have a purely functional program that uses a set of abstract data types by invoking their operations. Is there an order of evaluation of the operations in the program that preserves the applicative order of evaluation semantics of the program even when the abstract data types behave as mutable modules. An abstract data type is mutable if one of its operations destructively updates the object rather than returning a new object as a result. This problem is important for several reasons. It can help eliminate unnecessary copying of data structure states. It supports a methodology in which one can program in a purely functional notation for purposes of verification and clarity, and then automatically transform the program into one in a n object oriented, imperative language, such as CLU, ADA, Smalltalk, etc., that supports abstract data types. It allows accruing both the benefits of using abstract data types in programming, and allows modularity and verifiability

    Function definitions in term rewriting and applicative programming

    Get PDF
    The frameworks of unconditional and conditional Term Rewriting and Applicative systems are explored with the objective of using them for defining functions. In particular, a new operational semantics, Tue-Reduction, is elaborated for conditional term rewriting systems. For each framework, the concept of evaluation of terms invoking defined functions is formalized. We then discuss how it may be ensured that a function definition in each of these frameworks is meaningful, by defining restrictions that may be imposed to guarantee termination, unambiguity, and completeness of definition. The three frameworks are then compared, studying when a definition may be translated from one formalism to another

    Automatic Synthesis of Implementations for Abstract Data Types from Algebraic Specifications

    No full text
    Algebraic specifications have been used extensively to prove properties of abstract data types and to establish the correctness of implementations of data types. This thesis explores an automatic method of synthesizing implementations for data types from their algebraic specifications

    Formal Verification of an Avionics Microprocessor

    Get PDF
    Formal specification combined with mechanical verification is a promising approach for achieving the extremely high levels of assurance required of safety-critical digital systems. However, many questions remain regarding their use in practice: Can these techniques scale up to industrial systems, where are they likely to be useful, and how should industry go about incorporating them into practice? This report discusses a project undertaken to answer some of these questions, the formal verification of the AAMP5 microprocessor. This project consisted of formally specifying in the PVS language a Rockwell proprietary microprocessor at both the instructionset and register-transfer levels and using the PVS theorem prover to show that the microcode correctly implemented the instruction-level specification for a representative subset of instructions. Notable aspects of this project include the use of a formal specification language by practicing hardware and software engineers, the integration..

    Formal hardware/software co-verification of embedded power controllers

    No full text
    This paper reports for the first time, the use of a hardware-software combined bounded model checking approach for hardware-software mixed implementations of power management logic. We report significant performance gains as compared to our earlier attempt of extracting a finite quotient transition system from the control software

    A Bitvectors Library For PVS

    Get PDF
    This paper describes a bitvectors library that has been developed for PVS. The library defines a bitvector as a function from a subrange of the integers into f0,1g. The library provides functions that interpret a bitvector as a natural number, as a 2's complement number, as a vector of logical values and as a 2's complement fraction. The library provides a concatenation operator and an extractor. Shift, extend and rotate operations are also defined. Fundamental properties of each of these operations have been proved in PVS. Contents 1 Introduction 3 2 Fundamental Definition of a Bitvector 3 3 Natural Number Interpretations of a Bitvector 4 4 Bitwise Logical Operations on Bitvectors 5 5 Bitvector Concatenation 6 6 Extraction Operator 7 7 Shift Operations on Bitvectors 8 8 Bitvector Rotation 8 9 Zero and Sign-Extend Operators 9 10 Theorems Involving Concatenation and Extraction 10 11 2's Complement Interpretations of a Bitvector 11 12 Bitvector Arithmetic 12 12.1 Definition of Arith..
    corecore