339 research outputs found

    Proof obligations for monomorphicity

    Get PDF
    In certain applications of formal methods to development of correct software one wants the requirement specification to be monomorphic, i.e. that every two term-generated models of it are isomorphic. Consequently, the question arises how to guarantee monomorphicity (which is not decidable in general). In this paper we show that the task of proving monomorphicity of a specification can be reduced to a task of proving certain properties of procedures (with indeterministic constructs). So this task can be directly dealt with in the KIV system (Karlsruhe Interactive Verifier) which was originally designed for software verification. We prove correctness and completeness of our method

    Translating E/R-diagrams into consistent database specifications

    Get PDF
    Semi formal methods, for example those which are used in the database community, are useful for communication between developers and clients. But they are not useful for formal verification.To overcome this problem it is possible to translate E/R-diagrams into first order algebraic specifications. The aim of our task was to prove the consistency of such translate specifications. To realize the proof we use the KIV (Karlsruhe Interactive Verifier) approach for the development of correct large software systems, i.e. we prove the consistency indirect by proving the correctness of an implementation. For this purpose we automatically translate E/R-diagrams not only in an algebraic specification, but in a modular system containing structured specifications and implementations. For a concrete E/R-diagram we can prove the correctness with the KIV system. Because the translation is uniform a generalized handmade proof for arbitrary but fixed E/R-diagrams is possible, and presented in this paper. This paper also includes an exemplary translation of an E/R-diagram with 5 entities and 6 relations. The generated modular system contains 33 specifications with more than 300 specified operations and more than 500 axioms. Furthermore the implementation contains more than 2200 lines of code

    Quiescent consistency: Defining and verifying relaxed linearizability

    Get PDF
    Concurrent data structures like stacks, sets or queues need to be highly optimized to provide large degrees of parallelism with reduced contention. Linearizability, a key consistency condition for concurrent objects, sometimes limits the potential for optimization. Hence algorithm designers have started to build concurrent data structures that are not linearizable but only satisfy relaxed consistency requirements. In this paper, we study quiescent consistency as proposed by Shavit and Herlihy, which is one such relaxed condition. More precisely, we give the first formal definition of quiescent consistency, investigate its relationship with linearizability, and provide a proof technique for it based on (coupled) simulations. We demonstrate our proof technique by verifying quiescent consistency of a (non-linearizable) FIFO queue built using a diffraction tree. © 2014 Springer International Publishing Switzerland

    Software & system verification with KIV

    Get PDF

    Valid extensions of introspective systems: a foundation for reflective theorem provers

    Get PDF
    Introspective systems have been proved ueful in several applications, especially in the area of automated reasoning. In this paper we propose to use structured algebraic specifications to describe the embedded account of introspective systems. Our main result is that extending such an introspective system in a valid manner can be reduced to development of correct software. Since sound extension of automated reasoning systems again can be reduced to valid extension of introspective systems, our work can be seen as a foundation for extensible introspective reasoning systems, and in particular for reflective provers. We prove correctness of our mechanism and report on first experiences we have made with its realization in the KIV system (Karlsruhe Interactive Verifier)

    Verification of a Prolog compiler - first steps with KIV

    Get PDF
    This paper describes the first steps of the formal verification of a Prolog compiler with the KIV system. We build upon the mathematical definitions given by Boerger and Rosenzweig in [BR95]. There an operational semantics of Prolog is defined using the formalism of Evolving Algebras, and then transformed in several systematic steps to the Warren Abstract Machine (WAM). To verify these transformation steps formally in KIV, a translation of deterministic Evolving Algebras to Dynamic Logic is defined, which may also be of general interest. With this translation, correctness of transformation steps becomes a problem of program equivalence in Dynamic Logic. We define a proof technique for verifying such problems, which corresponds to the use of proof maps in Evolving Algebras. Although the transfor- mation steps are small enough for a mathematical analysis, this is not sufficient for a successful formal correctness proof. Such a proof requires to explicitly state a lot of facts, which were only impli- citly assumed in the analysis. We will argue that these assumptions cannot be guessed in a first proof attempt, but have to be filled in incrementally. We report on our experience with this `evolutionary\u27 verification process for the first transformation step, and the support KIV offers to do such incremental correctness proofs
    • …
    corecore