https://github.com/daniyal1249/nd-prover
Natural deduction proof generator & checker
https://github.com/daniyal1249/nd-prover
fitch fitch-proofs logic math modal-logic natural-deduction proof-checker prover python theorem-prover theorem-proving
Last synced: 3 months ago
JSON representation
Natural deduction proof generator & checker
- Host: GitHub
- URL: https://github.com/daniyal1249/nd-prover
- Owner: daniyal1249
- License: apache-2.0
- Created: 2025-07-27T23:31:10.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2026-02-27T06:59:46.000Z (4 months ago)
- Last Synced: 2026-02-27T12:56:39.185Z (4 months ago)
- Topics: fitch, fitch-proofs, logic, math, modal-logic, natural-deduction, proof-checker, prover, python, theorem-prover, theorem-proving
- Language: JavaScript
- Homepage: https://ndprover.org
- Size: 3.02 MB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ND-Prover
A Fitch-style natural deduction proof generator and checker, implemented in Python.
Supports propositional, first-order, and modal logics (K, T, S4, S5).

Try ND-Prover online at [ndprover.org](https://ndprover.org).
## Installation
ND-Prover can be installed using pip:
pip install nd-prover
or by directly cloning the git repository:
git clone https://github.com/daniyal1249/nd-prover.git
and running the following in the cloned repo:
pip install .
## Example Usage
```
$ nd-prover
Select logic (TFL, FOL, MLK, MLT, MLS4, MLS5, FOMLK, FOMLT, FOMLS4, FOMLS5): TFL
Enter premises (separated by "," or ";"), or "NA" if none: P -> Q, P
Enter conclusion: Q
1 │ P → Q PR
│
2 │ P PR
├───
1 - Add a new line
2 - Begin a new subproof
3 - End the current subproof
4 - End the current subproof and begin a new one
5 - Delete the last line
Select edit: 1
Enter line: Q ; ->E, 1,2
1 │ P → Q PR
│
2 │ P PR
├───
3 │ Q →E, 1,2
Proof complete! 🎉
```
A proof of the law of excluded middle (LEM) using ND-Prover:
```
Proof of ∴ P ∨ ¬P
──────────────────
1 │ │ ¬(P ∨ ¬P) AS
│ ├───────────
2 │ │ │ P AS
│ │ ├───
3 │ │ │ P ∨ ¬P ∨I, 2
│ │ │
4 │ │ │ ⊥ ¬E, 1,3
│ │
5 │ │ ¬P ¬I, 2-4
│ │
6 │ │ P ∨ ¬P ∨I, 5
│ │
7 │ │ ⊥ ¬E, 1,6
│
8 │ P ∨ ¬P IP, 1-7
Proof complete! 🎉
```
A proof that identity is symmetric:
```
Proof of ∴ ∀x∀y(x = y → y = x)
───────────────────────────────
1 │ │ a = b AS
│ ├───────
2 │ │ a = a =I
│ │
3 │ │ b = a =E, 1,2
│
4 │ a = b → b = a →I, 1-3
│
5 │ ∀y(a = y → y = a) ∀I, 4
│
6 │ ∀x∀y(x = y → y = x) ∀I, 5
Proof complete! 🎉
```
A proof in modal logic S5:
```
Proof of ◇☐A ∴ ☐A
─────────────────
1 │ ◇☐A PR
├─────
2 │ ¬☐¬☐A Def◇, 1
│
3 │ │ ¬☐A AS
│ ├─────
4 │ │ │ ☐ AS
│ │ ├───
5 │ │ │ ¬☐A R5, 3
│ │
6 │ │ ☐¬☐A ☐I, 4-5
│ │
7 │ │ ⊥ ¬E, 2,6
│
8 │ ☐A IP, 3-7
Proof complete! 🎉
```