Wybe 0.0.5
dotnet add package Wybe --version 0.0.5
NuGet\Install-Package Wybe -Version 0.0.5
<PackageReference Include="Wybe" Version="0.0.5" />
<PackageVersion Include="Wybe" Version="0.0.5" />
<PackageReference Include="Wybe" />
paket add Wybe --version 0.0.5
#r "nuget: Wybe, 0.0.5"
#:package Wybe@0.0.5
#addin nuget:?package=Wybe&version=0.0.5
#tool nuget:?package=Wybe&version=0.0.5
Wybe
A theorem prover embedded in F#'s computation expressions, using Z3 under the hood
Features and progress
Check proofs written in a syntax inspired by Dijkstra's predicate calculus
- A Logical Approach to Discrete Math
- Basic predicate calculus proofs
- Integers
- Sequences
- Relational calculus
- Functions
- A Logical Approach to Discrete Math
Extract proof obligations from
- Rust
- F#
- Golang
Installation instructions
- Install the dotnet 9 CLI
- Clone this repository locally
Example workflow
create a Rust file with functions and declare their properties as assertions in the source code. We will be using the example functions in
example_functions.rs
extract proof obligations to an F# script, in this case
example_functions.fsx
cd wybe/experiments dotnet run --project ../Tool/Tool.fsproj -- -e example_functions.rs
complete the necessary steps to prove all the theorems in
example_functions.fsx
, i.e. if checking a proof fails then more detailed calculations and hints must be provided.check the proofs in
example_functions.fsx
dotnet fsi example_functions.fsx
if the output indicates success, you have formally verified all declared properties of the Rust functions in
example_functions.rs
.add more functions to
example_functions.rs
or modify existing onescontinue extracting proof obligations, completing and checking the proofs
Note: once the Wybe CLI is published as a NuGet package and installed, you can simply run wybe -e example_functions.rs
to extract proof obligations and wybe -c example_functions.fsx
to check proofs.
Example proof
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- FsToolkit.ErrorHandling (>= 4.18.0)
- Microsoft.Z3 (>= 4.8.11)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.