339 research outputs found
Proof obligations for monomorphicity
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
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
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
Valid extensions of introspective systems: a foundation for reflective theorem provers
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
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
- …