classical-logic is a Python package that allows you to work with logical
propositions as Python objects.
It's extremely simple to use:
from classical_logic import prop
p = prop('P & Q')
assert p(P=True, Q=True) is True
assert p(P=True, Q=False) is FalseParse proposition objects:
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:
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 <-> QDecompose propositions:
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):
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 TrueNo dependencies. This package doesn't use any dependencies.
Want to use this package? See the documentation!
This package can be installed using Pip:
pip install classical-logicPlease make sure you use a dash (-) instead of an underscore (_).
You can report a bug or suggest a feature on the Github repo.
See the Issues page on Github.
Contributions to this project are welcome. :)
See the pull requests page on Github.