Python package for deal with logical formulas and formal systems
Project description
Pythogic
Python package for deal with logical formulas and formal systems.
Free software: MIT license
Documentation: https://pythogic.readthedocs.io.
Usage
First of all, create symbols and an alphabet
from pythogic.base.Alphabet import Alphabet
from pythogic.base.Symbol import Symbol
a_sym = Symbol("a")
b_sym = Symbol("b")
c_sym = Symbol("c")
alphabet = Alphabet({a_sym, b_sym, c_sym})
# you can also write:
alphabet = Alphabet.fromStrings({"a", "b", "c"})
Create some formulas:
from pythogic.base.Formula import AtomicFormula, TrueFormula, FalseFormula, Not, And, Or
# Propositions
a = AtomicFormula(a_sym)
b = AtomicFormula(b_sym)
c = AtomicFormula(c_sym)
# Elementary formulas
not_a = Not(a)
not_a_and_b = And(Not(a), b)
not_a_or_c = Or(not_a, c)
true = TrueFormula()
false = FalseFormula()
Using Propositional Calculus:
from pythogic.pl.PL import PL
from pythogic.pl.semantics.PLInterpretation import PLInterpretation
# A dictionary which assign each symbol to a truth value
symbol2truth = {
a_sym: True,
b_sym: False,
c_sym: True
}
# The propositional interpretation
I = PLInterpretation(alphabet, symbol2truth)
# main class which contains useful methods
PL = PL(alphabet)
PL.truth(a, I) # returns true
PL.truth(b, I) # returns false
PL.truth(c, I) # returns true
PL.truth(not_a, I) # returns false
PL.truth(not_a_and_b, I) # returns false
PL.truth(not_a_or_c, I) # returns true
PL.truth(true, I) # returns true
PL.truth(false, I) # returns false
Features
Compose logical formula by common syntax rules;
Implementation of several semantics (FOL Interpretation, finite trace, etc.);
Support for several logical formal systems: Propositional Logic, First-order Logic, REf, LTLf, LDLf;
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.1.0 (2018-02-20)
First release on PyPI.
0.2.0 (2018-02-23)
First-Order logic support (Formulas, Interpretations, Assignment, Truth of the formulas).
0.2.1 (2018-02-23)
Fix on the repo.
0.2.2 (2018-02-25)
Refactoring of the formulas and formal systems functionalities.
Implemented LDLf.
0.2.3 (2018-02-25)
“To negative normal form” procedure for LDLf formulas.
0.2.4 (2018-02-06)
Support for LDLf for Empty Traces.
0.2.6 (2018-02-06)
Non-deterministic state automata conversion procedure for LDLf_EmptyTraces formulas.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pythogic-0.2.6-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 693758657bd03f60e64ec0a77d9556bd452276d55c269b7c81522501d5843ab7 |
|
MD5 | 3116e97eb08b280102958cd025db225a |
|
BLAKE2b-256 | d9f76b6ef4f374a8fe42d8fee805d182f4afb87e433eb2a88bca5417e416c43f |