Skip to main content

ND-Prover

A Fitch-style natural deduction proof generator and checker, implemented in Python.

It is based on the natural deduction system presented in forall x: Calgary.

ND-Prover demo

Try ND-Prover online at ndprover.org.

Supported Logics

  • Propositional logic
  • First-order logic
  • Modal logic (K, T, S4, S5)
  • First-order modal logic

Features

  • Support for both classical and intuitionistic logics
  • Argument validity checking
  • Automated proof generation for valid arguments
  • Countermodel generation for invalid arguments
  • Verification of user-provided proofs
  • Plain-text and LaTeX proof export

Package 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 .

Package 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! 🎉

Metadata

Release files for nd-prover 3.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nd-prover 3.1.0
File Size Uploaded
nd_prover-3.1.0.tar.gz 34.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nd-prover 3.1.0
File Interpreter ABI Platform
nd_prover-3.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 69.3 kB

Release files / nd_prover-3.1.0.tar.gz

Download URL nd_prover-3.1.0.tar.gz
Size 34.4 kB
Tags Source
SHA-256 checksum
How to use checksums
18b02cc7714ac02eacb574018397720b527075bcd8b05dc29af787062b185303
BLAKE2b-256 checksum
How to use checksums
25e64575e89195ff55d5f782431b423081365ddcd26d754f5597ec520049f141
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / nd_prover-3.1.0-py3-none-any.whl

Download URL nd_prover-3.1.0-py3-none-any.whl
Size 35.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f53b667464e00c03e2906061c6459587c71f36ea34ddcf4acec61a01909ea6d
BLAKE2b-256 checksum
How to use checksums
e6a98c2922e5b906a159cb5f6977b00a8dbaac0220ecae2dcae452b5fe0642e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release history Release notifications | RSS feed

This release

3.1.0 This release

2 release files

3.0.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page