Skip to content
forked from KeYProject/key

Isabelle Translation for KeY Theorem Prover for Deductive Java Verification

License

Notifications You must be signed in to change notification settings

BookWood7th/key

This branch is 261 commits ahead of, 89 commits behind KeYProject/key:main.

Folders and files

NameName
Last commit message
Last commit date
Jan 1, 2025
Jan 29, 2021
May 29, 2024
Aug 18, 2023
Nov 20, 2023
May 6, 2024
Aug 18, 2023
Dec 5, 2024
May 6, 2024
Feb 8, 2025
Aug 29, 2024
Aug 21, 2023
Feb 12, 2025
Aug 29, 2024
Nov 6, 2024
May 3, 2024
Feb 12, 2025
May 5, 2024
Nov 28, 2024
Dec 9, 2023
Jan 17, 2023
Dec 5, 2024
Dec 5, 2024
Mar 1, 2024
Feb 15, 2023
May 19, 2018
Dec 27, 2023
Oct 23, 2024
Jun 14, 2023
Nov 2, 2023
Jan 17, 2023
Aug 18, 2023
Mar 15, 2024
Jan 23, 2025
Nov 19, 2023
Nov 17, 2024
Oct 2, 2023
Mar 31, 2023
Oct 31, 2024
Jul 4, 2024

Repository files navigation

KeY -- Deductive Java Program Verifier

Tests CodeQL CodeQuality

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 current version of KeY is 2.12.2, licensed under GPL v2.

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

Requirements

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

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.

  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

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-2024 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.
See LICENSE.TXT for details.

About

Isabelle Translation for KeY Theorem Prover for Deductive Java Verification

Resources

License

Citation

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 98.1%
  • HTML 1.2%
  • ANTLR 0.3%
  • Perl 0.1%
  • SMT 0.1%
  • Shell 0.1%
  • Other 0.1%