All Projects → proof-tree-builder → proof-tree-builder.github.io

proof-tree-builder / proof-tree-builder.github.io

Licence: MIT license
A web-based graphical proof assistant for LK and Hoare logic.

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
PEG.js
56 projects

Projects that are alternatives of or similar to proof-tree-builder.github.io

MobyDroid
Android Device Manager with a Graphic User Interface (GUI) – Manage Android on Linux, Windows and MacOS.
Stars: ✭ 76 (+347.06%)
Mutual labels:  graphical-user-interface
refinery
⛏️ A refinement proof framework for haskell
Stars: ✭ 53 (+211.76%)
Mutual labels:  proof-automation
Sorting-Algorithms
All information about sorting algorithm you need and you can visualize the code tracer
Stars: ✭ 13 (-23.53%)
Mutual labels:  graphical-user-interface
suslik
Synthesis of Heap-Manipulating Programs from Separation Logic
Stars: ✭ 107 (+529.41%)
Mutual labels:  hoare-logic
Termux-GUI
Graphical User Interface for Termux (XFCE and MATE)
Stars: ✭ 46 (+170.59%)
Mutual labels:  graphical-user-interface
AutoInAgda
Proof automation – for Agda, in Agda.
Stars: ✭ 38 (+123.53%)
Mutual labels:  proof-automation
WangsAlgorithm
A classical propositional theorem prover in Haskell, using Wang's Algorithm.
Stars: ✭ 34 (+100%)
Mutual labels:  sequent-calculus
PUMPKIN-PATCH
Proof Updater Mechanically Passing Knowledge Into New Proofs, Assisting The Coq Hacker
Stars: ✭ 43 (+152.94%)
Mutual labels:  proof-automation
quantumVITAS
Quantum Visualization Interacting Toolkit for Ab-initio Simulations
Stars: ✭ 52 (+205.88%)
Mutual labels:  graphical-user-interface
PyGUI
Contains some essential tkinter python elements which you may find useful for GUI development using python
Stars: ✭ 27 (+58.82%)
Mutual labels:  graphical-user-interface
alg-releases
Release Engineering for ALG
Stars: ✭ 98 (+476.47%)
Mutual labels:  graphical-user-interface
tributech-catalog-api
Tributech Catalog - Create and manage your DTDL models using our graphical interface and store them using our APIs.
Stars: ✭ 15 (-11.76%)
Mutual labels:  graphical-user-interface
PSP
PSP-UFU (Power Systems Platform of Federal University of Uberlândia) is a cross-platform, multilingual, Free and Open-Source Software with advanced GUI features and CAD tools for electrical power system studies.
Stars: ✭ 30 (+76.47%)
Mutual labels:  graphical-user-interface
spinmob
Rapid and flexible acquisition, analysis, fitting, and plotting in Python. Designed for scientific laboratories.
Stars: ✭ 34 (+100%)
Mutual labels:  graphical-user-interface
Pix2code
pix2code: Generating Code from a Graphical User Interface Screenshot
Stars: ✭ 11,349 (+66658.82%)
Mutual labels:  graphical-user-interface
web check
Script for checking changes in webpages
Stars: ✭ 50 (+194.12%)
Mutual labels:  graphical-user-interface
costa
The Costa Graphical User Interface for MS-DOS and compatible systems
Stars: ✭ 27 (+58.82%)
Mutual labels:  graphical-user-interface
Apricot
Desktop Agent for Windows
Stars: ✭ 39 (+129.41%)
Mutual labels:  graphical-user-interface
AIDeveloper
GUI-based software for training, evaluating and applying deep neural nets for image classification
Stars: ✭ 51 (+200%)
Mutual labels:  graphical-user-interface

proof-tree-builder

A web-based graphical proof assistant for LK and Hoare logic.

Live here.

For the Z3 rule, we are using a version of Z3 compiled to WebAssembly, which we run in browser, thanks to Clément Pit-Claudel's z3.wasm project. For graphics, we use Fabric.js. To generate a parser from a grammar, we use PEG.js.

There might still be some bugs so please report them by creating issues.

Initially written as a class project for Fall 2018 COS516 with Prof. Zak Kincaid, later improved as a class project for Spring 2020 COS598B with Prof. Aarti Gupta.

Guide

You can click the "Add LK goal" button to add a new sequent calculus goal to prove, such as

  • |- p => q => r => p && q && r
  • exists x. g(x) |- exists y. g(y)
  • exists x. g(k,x) |- exists y. g(k,y)
  • |- ((p => q) => p) => p
  • x > 1 |- x > 0 (needs Z3)
  • x <= y, y <= z |- x <= z (needs Z3)
  • |- (P(0) && (forall x. (P(x) => P(x + 1)))) => P(3) (needs Z3)
  • |- (P(z) && (forall x. (P(x) => P(s(x))))) => P(s(s(s(z))))

Or you can click the "Add Hoare logic goal" button to add a new Hoare triple, such as

  • {true} if true then x := 3 else x := 5 {x = 3}
  • {true} if x < 0 then x := -1 * x else x := x {x >= 0}
  • |- {0 <= n} (r := 0 ; i := 0) ; while i < n do (r := r + 2 ; i := i + 1) {r = 2 * n}

Then you can click on the orange plus button to apply proof rules to incomplete proof trees.

Generating the parser

pegjs --format globals --export-var peg --allowed-start-rules "Sequent,Formula,Term,HoareTriple,Command,Name" parser.pegjs

Running the project locally

In order to run Z3 in browser, we use the web workers API. Hence if you want to run the project locally, you cannot simply open the HTML file, you need to run a local file server and connect to that instead. You can do that by running python -m SimpleHTTPServer 80 in the src directory. Then you can connect to localhost in your browser to run the app.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].