GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - KeYProject/key: KeY Theorem Prover for Deductive Java Verification

BranchesTags
Open more actions menu

Latest commit

 

History

21,940 Commits
21,940 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
.gitlab
.gitlab
 
 
gradle
gradle
 
 
key.core.example
key.core.example
 
 
key.core.infflow
key.core.infflow
 
 
key.core.testgen
key.core.testgen
 
 
key.core.wd
key.core.wd
 
 
key.core
key.core
 
 
key.ncore.calculus
key.ncore.calculus
 
 
key.ncore.matcher
key.ncore.matcher
 
 
key.ncore
key.ncore
 
 
key.ui
key.ui
 
 
key.util
key.util
 
 
keyext.caching
keyext.caching
 
 
keyext.exploration
keyext.exploration
 
 
keyext.isabelletranslation
keyext.isabelletranslation
 
 
keyext.proofmanagement
keyext.proofmanagement
 
 
keyext.slicing
keyext.slicing
 
 
keyext.ui.testgen
keyext.ui.testgen
 
 
oldStuff
oldStuff
 
 
scripts
scripts
 
 
.git-blame-ignore-revs
.git-blame-ignore-revs
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.gitlab-ci.yml
.gitlab-ci.yml
 
 
AGENTS.md
AGENTS.md
 
 
CITATION.bib
CITATION.bib
 
 
CLAUDE.md
CLAUDE.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
LICENSE.TXT
LICENSE.TXT
 
 
README.md
README.md
 
 
build.gradle
build.gradle
 
 
gradle.properties
gradle.properties
 
 
gradlew
gradlew
 
 
gradlew.bat
gradlew.bat
 
 
settings.gradle
settings.gradle
 
 

Repository files navigation

KeY -- Deductive Java Program Verifier

Tests CodeQuality

Maven metadata URL Maven metadata URL

This repository is the home of the interactive theorem prover KeY for formal verification and analysis of Java programs. KeY comes as a standalone GUI application, which allows you to verify the functional correctness of Java programs with respect to formal specifications formulated in the Java Modeling Language JML. Moreover, KeY can also be used as a library e.g. for symbolic program execution, first order reasoning, or test case generation.

For more information, refer to

  • The KeY homepage
  • The KeY book
  • The KeY developer documentation
  • KeY's success stories:
    • Severe bug discovered in JDK sorting routine (TimSort),
    • Verification of java.util.IdentityHashMap,
    • Google Award for analysing a bug in LinkedList

The current version of KeY is 3.1.0-dev, licensed under GPL v2 or later.

Feel free to use the project templates to get started using KeY:

  • For Verification Projects
  • Using as a Library
  • Using as a Symbolic Execution Backend

Requirements

  • Hardware: >=2 GB RAM
  • Operating System: Linux/Unix, MacOSX, Windows
  • Java 17 or newer
  • Optionally, KeY can make use of the following binaries:
    • SMT Solvers:
      • Z3
      • cvc5
      • CVC4
      • Princess

Content of the KeY folder

This folder provides a gradle-managed project following Maven's standard folder layout. There are several subprojects in this folder. In general, every key.*/ subproject contains a core component of KeY. Additional and optional components are in keyext.*/ folders. The file build.gradle is the root build script describing the dependencies and common build tasks for all subprojects.

key.util, key.core and key.ui are the base for the product "KeY Prover". Special care is needed if you plan to make changes here.

Compile and Run KeY

Assuming you are in the directory of this README file, you can create a runnable and deployable version with one of these commands:

  1. With ./gradlew key.ui:run you can run the user interface of KeY directly from the repository. Use ./gradlew key.ui:run --args='--experimental' to enable experimental features.

  2. Use ./gradlew classes to compile KeY, which includes running JavaCC and Antlr. Likewise, use ./gradlew testClasses if you also want to compile the JUnit test classes.

  3. Test your installation with ./gradlew test. Be aware that this will usually take multiple hours to complete. With ./gradlew testFast, you can run a more lightweight test suite that should complete in a few minutes.

    You can select a specific test case with the --tests argument. Wildcards are allowed.

    ./gradlew :key.<subproject>:test --tests "<class>.<method>"

    You can debug KeY by adding the --debug-jvm option, then attaching a debugger at localhost:5005.

  4. You can create a single jar-version, aka fat jar, of KeY with

    ./gradlew :key.ui:shadowJar

    The file is generated in key.ui/build/libs/key-*-exe.jar. A slim variant without the optional keyext extensions and the bundled examples is created with

    ./gradlew :key.ui:slimJar

    The file is generated in key.ui/build/libs/key-*-slim-exe.jar. Both jars are also built as part of ./gradlew assemble.

  5. A distribution is build with

    ./gradlew :key.ui:installDist :key.ui:distZip

    The distribution can be tested by calling key.ui/install/key/bin/key.ui and is zipped in key.ui/build/distributions.

    The distribution gives you potential of using single jar files.

Developing KeY

  • Quality is automatically assessed using SonarQube on each pull request. The results of the assessments (pass/fail) can be inspected in the checks section of the PR.

    The rules and quality gate are maintained by Alexander Weigl [email protected] currently.

  • More guideline and documentation for the KeY development can be found under key-docs.

Issues and Bug Reports

  • For bug reports, please use the issue tracker or send a mail to [email protected].

  • For discussions, you may want to subscribe and use the mailing list [email protected] or use GitHub discussions.

Contributing to KeY

Feel free to submit pull requests via GitHub. Pull requests are assessed using automatic tests, formatting and static source checkers, as well as a manual review by one of the developers. More guidelines and documentation for the KeY development can be found under key-docs.

License Remark

This is the KeY project - Integrated Deductive Software Design
Copyright (C) 2001-2011 Universität Karlsruhe, Germany
						Universität Koblenz-Landau, Germany
						and Chalmers University of Technology, Sweden
Copyright (C) 2011-2026 Karlsruhe Institute of Technology, Germany
						Technical University Darmstadt, Germany
						Chalmers University of Technology, Sweden

The KeY system is protected by the GNU General Public License, Version 2 or (at your option) any later version.
See LICENSE.TXT for details.

About

KeY Theorem Prover for Deductive Java Verification

key-project.org

Topics

formal-verificationkeysmt-solverstatic-analysis

Resources

Readme
License

Contributing

Contributing
Activity
Custom properties

Stars

90 stars

Watchers

4 watching

Forks

47 forks
Report repository

Releases

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.