Giter VIP home page Giter VIP logo

surajx / proof-assistant Goto Github PK

View Code? Open in Web Editor NEW
10.0 3.0 3.0 1.27 MB

Online platform to enable Logic students to write, verify, and store System L style Natural Deduction proofs with real-time proof-checking

Home Page: https://proofassist.com

License: GNU General Public License v3.0

ANTLR 0.17% JavaScript 95.65% CSS 0.58% HTML 3.60%
natural-deduction proof-assistant proof-checking antlr4 nodejs jade mongodb

proof-assistant's Introduction

Proof Assistant

An online platform to enable Logic students to write, verify, and store System L style Natural Deduction proofs. Proofs are checked for correctness in real-time, and provides informative error messages. The project was developed as part of the Logic4Fun initiative during Logic Summer School, 2015.

Features

  • Real-time and in-browser proof validation
  • Server-side proof validation during save using Isomorphic Javascript
  • Ability to continue writing verified proofs even when the Internet connection is lost
  • User account to save and retrieve proofs
  • Informative error messages
  • Fast and easy way of typing logic statements

Software Stack

  • Javascript
  • Node.js
  • MongoDB
  • ANTLR4
  • Bootstrap
  • Jade

Contributors

Getting Started

Setup an Account

Login/SignUp with any valid email. E-mail is just a placeholder for the username, essentially you can give a random valid email and password as long as you can remember it.

Dashboard

The dashboard is where you create new proofs, and also where your existing proofs are listed along with there current status.

Dashboard The NEW PROOF button brings up a pop-up dialogue where you can enter the sequent you want to prove. Typing the sequent is very easy, the following short-keys auto-convert to their equivalent logical connectives as you type.

  • \n:  ¬ (negation)
  • \a:  ∧ (and)
  • \o:  ∨ (or)
  • \i:  → (implication)
  • \e:  ⊢ (entails)
  • \t:  ⊤ (true)
  • \f:  ⊥ (false)

Example: The sequent "¬(p → q) ⊢ p ∧ ¬q" should be typed as "\n(p \i q) \e p \a \nq". It may look daunting at first, but as you type, it'll becomes natural.

New Proof

Proof Page

This is the page where you actually write the proof. All premises of the sequent is auto-populated for you as assumption lines.

Proof Page

The next proof line is entered using the fields provided at the bottom. The same short-keys mentioned earlier can be used to type in the connectives. Also, it is not necessary to press the + button every time, pressing the enter key on any of the input fields submits your new proof line for validation. If you dont know what these fields are please read the excellent introduction to Propositional Logic and System L style Natural Deduction proofs by Prof. John Slaney.

The platform also provides the ability to delete or edit rows, provided the change does not break the validity of the proof. When a proof line is deleted or edited the proof is not auto-saved on the server. You can see that the SAVE button would be now red in color, indicating an unsaved proof.

Error Messages

Submission of the new proof line triggers validation of the entire proof. Only if the entire proof is valid, the new proof line is added. In case of an invalid proof line, a corresponding error message is displayed.

Error Message

Features

The proof is validated in-browser, i.e. the proof is not sent to the server each time a line is added. This allows fast verification of large proofs and also the ability to use the tool offline. If an internet connection is available, any change made to the proof is auto-saved on the server. The colour of the SAVE button indicates whether the proof was successfully saved on the server or not. A green SAVE button indicates that the latest proof is saved, while a red SAVE button indicates that there are some changes in the proof that are not saved in the server. Note that on each save request the proof is validated on the server-side as well.

When the line that completes the proof is entered, and the proof is validated, the status of the proof changes to SUCCESS.

Success

Enjoy Natural Deductions!

proof-assistant's People

Contributors

surajx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

proof-assistant's Issues

Ability to submit proof for assessment.

In gitlab by @surajx on Jan 22, 2016, 19:16

Students should have a submit button in their proof page to submit the current state of the proof for assessment. In the DB setup a submission collection that references users._id and contains the proof Object and the timestamp of submission.

Discharge Handling

In gitlab by @surajx on Jan 22, 2016, 19:19

Currently the assumptions are discharged after taking the union of the dependent assumption. This approach is wrong, each rule premise has to discharge their corresponding assumption and then the union should be taken. This issue even though only affects OR-elimination needs to fixed and tested thoroughly.

Use Adjacency Matrix instead of Adjacency List.

The graph is directed, Since we are using an Adj List, we have to loop through all proofLine objects to find the inward dependencies. If we use an Adj Matrix to store the graph, with constant time look-up the inward dependent proofLines can be found, thus avoiding many unwanted validations.

User preference page.

In gitlab by @surajx on Jan 22, 2016, 19:52

On clicking the user-email at the top right corner should take you to a page where you can do the following:

  • Change password
  • Define connective shorthands.
  • change display pic

Introduce User roles

In gitlab by @surajx on Jan 22, 2016, 19:03

We need to introduce user roles to differentiate between a student, lecturer, and admin login.

Ability to add goals at the bottom

In gitlab by @surajx on Jan 22, 2016, 19:26

Currently the proofs are written from top to bottom having a goal in mind. John's original requirement was to have students work on proofs from both sides. To implement this in the current framework of the proof system would be challenging but really beneficial for students.

Admin page and default admin account

In gitlab by @surajx on Jan 22, 2016, 19:23

  • Create an admin page with the ability to elevate user roles. With the default role being student.

  • Maybe show statistical information about proofs and stuff on the admin page.

  • On deployment of application check for existence of an admin account, if none exists create one.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.