https://jsiek.github.io/deduce/index.html
A proof checker meant for education
Teaching correctness proofs of functional programs to students.
Get Started Live Code
Deduce hippo logo
What is Deduce?
Deduce is an automated proof checker meant for use in education to
help students:
* Ease their way into proving the correctness of programs.
* Deepening their understanding of logic.
* Improve their ability to write mathematical proofs.
Who can use Deduce?
The intended audience is students with (roughly) the following
background knowledge and skills:
* Basic programming skills in a mainstream language such as Java,
Python, or C++
* Some exposure to logic, as one would learn in a course on
Discrete Mathematics
Get Started
Get started by installing the necessary prerequisites and downloading
the Deduce source code.
You can also find handy information on setting up your Deduce
workspace.
Get Started
Write Deduce Code
Go through a series of examples to familiarize yourself with Deduce
functional programming.
Check your understanding with exercises to test your knowledge of the
language.
Start Programming
Prove Your Programs
Follow a detailed tutorial to learn how to write logical proofs using
Deduce effectively.
Explore all of the features of the Deduce proof language in this
comprehensive guide.
Start Proving
Need Help?
The Deduce Reference manual provides an alphabetical list of all the
features in Deduce.
The Cheat Sheet gives some advice regarding proof strategy and which
Deduce keyword to use next in a proof.
Reference Manual Cheat Sheet
Example Proof
As a taster for what it looks like to write programs and proofs in
Deduce, the following is an implementation of the Linear Search
algorithm and a proof that item y does not occur in the list xs at a
position before the index returned by search(xs, y)
Credits
This open-source software is brought to you by the volunteer work of
the following people.
* Matei Cloteaux
* Shulin Gonsalves
* Calvin Josenhans
* Jeremy Siek