KeY

KeY

KeY is a formal software development tool that aims to integrate design, implementation,
formal specification, and formal verification of object-oriented software. It supports programs written in Java (more precisely: in a superset of Java Card) and specifications written in JML or OCL. At the core of the system is a deductive theorem prover. It employs a free variable sequent calculus for first-order dynamic logic for Java Card.

The development of KeY has been started in autumn 1998 and is an ongoing effort. KeY is jointly developed by the University of Karlsruhe, Chalmers University of Technology in Gothenburg, and the University of Koblenz. It is licensed under the GPL.

Java Card DL

The theoretical foundation of KeY is a formal logic called Java Card DL. It is a version of dynamic logic tailored to Java Card programs. As such, it for example allows statements (formulas) like p → [j] q, which intuitively says that q must hold in all program states reachable by executing the Java Card program j in any state that satisfies p. Proofs of the validity of such formulas can then be performed by means of a sequent calculus and symbolic execution.

Other Supported Logics

Besides the core tool based on Java Card DL, there are several variants of KeY which support reasoning for other kinds of logics:
* Dynamic Logic for MISRA C [http://www.cs.ru.nl/~tews/cv07/ifm07.pdf] (KeY-C) (*)
* Differential dynamic logic (dL) [http://www.functologic.com/logic/dL.html] (KeYmaera [http://www.functologic.com/info/KeYmaera.html] , external) (*)
* Logic for Abstract state machines [http://www.inf.ethz.ch/research/disstechreps/theses/show?serial=436&lang=en] (ASMKeY, external)
* A logic for JCSP programs [http://www.cs.chalmers.se/~philipp/publications/jcsp2005.pdf]

(*) under active development/maintained

Variants of the KeY System

KeY for C

"KeY for C" is an adaption of the KeY System to MISRA C, a subset of the C programming language.

Symbolic Execution Debugger

The "Symbolic Execution Debugger" visualizes the control flow of a program as a symbolic execution tree that contains all feasible execution paths through the program up to a certain point.

The Symbolic Execution Debugger is provided as a plugin to the Eclipse development platform.

KeY-Hoare

"KeY-Hoare" is built on top of KeY and features a Hoare calculus with state updates. State updates are a means of describing state transitions in a Kripke structure.

KeYmaera

"KeYmaera" [http://www.functologic.com/info/KeYmaera.html] (previously called HyKeY) is a deductive verification tool for hybrid systems based on a calculus for the differential dynamic logic dL [http://www.functologic.com/logic/dL.html] .It extends the KeY tool with Mathematica and corresponding algorithms and proof strategies such that it can be used for practical verification of hybrid systems.

KeYmaera has been developed at the University of Oldenburg.

KeY Test Case Generator

KeY is usable as a model-based testing tool that can generate unit tests for Java programs. The model from which test data and the test case are derived consists of a formal specification (provided in JML or OCL) and a symbolic execution tree of the implementation under test which is computed by the KeY system.

Sources

* [http://www.springer.com/east/home/generic/search/results?SGWID=5-40109-22-173712406-0 Verification of Object-Oriented Software: The KeY Approach] . Bernhard Beckert, Reiner Hähnle, Peter H. Schmitt (Eds.). Springer, 2007. ISBN 978-3-540-68977-5.
* [http://i12www.ira.uka.de/%7Ekey/doc/2005/sosym.pdf The KeY Tool] . Wolfgang Ahrendt, Thomas Baar, Bernhard Beckert, Richard Bubel, Martin Giese, Reiner Hähnle, Wolfram Menzel, Wojciech Mostowski, Andreas Roth, Steffen Schlager, and Peter H. Schmitt. Software and Systems Modeling, Springer, 2005.
* [http://cl.cse.wustl.edu/papers/vstte05.pdf Programming With Proofs: Language Based Approaches To Totally Correct Software] . Aaron Stump. Verified Software: Theories, Tools, and Experiments, 2005.
* [http://www.software-kompetenz.de/en/?target=25365 Beispielanwendung KeY] VESK. German only.

See also

* Abstract state machines
* B-Method
* BLAST
* ESC/Java2
* [http://www.informatik.uni-augsburg.de/lehrstuehle/swt/se/kiv/ KIV]
* Spec#

External links

* [http://www.key-project.org Home page of the KeY project]


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР
Synonyms:

Look at other dictionaries:

  • Key — (k[=e]), n. [OE. keye, key, kay, AS. c[ae]g.] 1. An instrument by means of which the bolt of a lock is shot or drawn; usually, a removable metal instrument fitted to the mechanism of a particular lock and operated by turning in its place. [1913… …   The Collaborative International Dictionary of English

  • KEY — ist das englische Wort für Schlüssel, und damit Bestandteil von Anglizismen: Key Account Key Account Manager etc. Key steht im Sinne von Cay für eine kleine flache Insel: insbesondere die Florida Keys, Inselkette im US Bundesstaat Florida, USA:… …   Deutsch Wikipedia

  • Key — may refer to: Building* Key, Carpentry: timber or metal wedges used across or between two or more members to act as a tightening agent. * Key, Painting: to rough the surface of previous coats of paint to allow a secure bond for the next or top… …   Wikipedia

  • Key — ist das englische Wort für Schlüssel, und damit Bestandteil von Anglizismen: Key Account Key Account Manager etc. Key steht im Sinne von Cay für eine kleine flache Insel: insbesondere die Florida Keys, Inselkette im US Bundesstaat Florida, USA:… …   Deutsch Wikipedia

  • key — key1 [kē] n. pl. keys [ME keye < OE cæge, akin to OFris kei, kēia, to secure, guard] 1. an instrument, usually of metal, for moving the bolt of a lock and thus locking or unlocking something 2. any of several instruments or mechanical devices… …   English World dictionary

  • key to — ˈkey to [transitive] usually passive [present tense I/you/we/they key to he/she/it keys to present participle keying to past tense keyed to …   Useful english dictionary

  • Key — Key, v. t. [imp. & p. p. {Keved}; p. pr. & vb. n. {Keying}.] 1. To fasten or secure firmly; to fasten or tighten with keys or wedges. Francis. [1913 Webster] 2. (Computers) To enter (text, data) using keys, especially those on a keyboard; to… …   The Collaborative International Dictionary of English

  • key — adj: of vital importance (as in a business organization) esp. so as to be specially insured to the benefit of an employer key man key employee insurance Merriam Webster’s Dictionary of Law. Merriam Webster. 1996 …   Law dictionary

  • key — Ⅰ. key [1] ► NOUN (pl. keys) 1) a small piece of shaped metal which is inserted into a lock and rotated to open or close it. 2) an instrument for grasping and turning a screw, peg, or nut. 3) a lever depressed by the finger in playing an… …   English terms dictionary

  • key — key, a. Essential; most important; as, the key fact in the inquiry; the president was the key player inthe negotiations. [PJC] …   The Collaborative International Dictionary of English

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”