Skip to content

classical-logic - Tools for Classical Logic

classical-logic is a Python package that allows you to work with logical propositions as Python objects.

It's extremely simple to use:

1
2
3
4
5
from classical_logic import prop

p = prop('P & Q')
assert p(P=True, Q=True) is True
assert p(P=True, Q=False) is False

Features

Parse proposition objects:

1
2
3
4
5
6
from classical_logic import prop

# Can parse simple propositions:
p = prop('P | Q')
# As well as complex ones!
p = prop('P & (Q | (Q -> R)) <-> S')

Compose proposition objects:

1
2
3
4
5
6
7
8
9
p = prop('P')
q = prop('Q')

# Create conjunctions and disjunctions with & and |:
u = p & (q | p)   # P & (Q | P)

# Create conditionals and biconditionals as well:
u = p.implies(q)  # P -> Q
u = p.iff(q)      # P <-> Q

Decompose propositions:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
u = prop('P & Q')

# Use indexing to 
assert u[0] == prop('P')
assert u[1] == prop('Q')

# You can also use Python's unpacking feature!
p, q = u
assert p == prop('P')
assert q == prop('Q')

Interpret propositions (assign truth values):

1
2
3
4
5
6
u = prop('P <-> Q')

# Call the proposition like a function to interpret it
assert u(P=True, Q=True) is True
assert u(P=True, Q=False) is False
assert u(P=False, Q=False) is True

No dependencies. This package doesn't use any dependencies.

Want to learn more? See the User Guide

Documentation @ ReadTheDocs

Github Repository

PyPI Page

Installation

This package can be installed using Pip:

1
pip install classical-logic

Please make sure you use a dash (-) instead of an underscore (_).

Bug Reports and Feature Requests.

You can report a bug or suggest a feature on the Github repo.

See the Issues page on Github.

Contributions

Contributions to this project are welcome. :)

See the pull requests page on Github.