Skip to main content

Python package for deal with logical formulas and formal systems

Project description

========
Pythogic
========

.. image:: https://img.shields.io/pypi/v/pythogic.svg
:target: https://pypi.python.org/pypi/pythogic

.. image:: https://img.shields.io/pypi/pyversions/pythogic.svg
:target: https://pypi.python.org/pypi/pythogic

.. image:: https://img.shields.io/travis/MarcoFavorito/pythogic.svg
:target: https://travis-ci.org/MarcoFavorito/pythogic

.. image:: https://readthedocs.org/projects/pythogic/badge/?version=latest
:target: https://pythogic.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status

.. image:: https://coveralls.io/repos/github/MarcoFavorito/pythogic/badge.svg?branch=master&service=github
:target: https://coveralls.io/github/MarcoFavorito/pythogic?branch=master

.. image:: https://img.shields.io/badge/License-MIT-yellow.svg
:alt: MIT License
:target: https://opensource.org/licenses/MIT

.. image:: https://codecov.io/gh/MarcoFavorito/pythogic/branch/master/graph/badge.svg
:alt: Codecov coverage
:target: https://codecov.io/gh/MarcoFavorito/pythogic/branch/master/graph/badge.svg

.. image:: https://img.shields.io/badge/status-development-orange.svg
:alt: Status: Development
:target: https://codecov.io/gh/MarcoFavorito/pythogic/branch/master/graph/badge.svg



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

.. code:: python

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:

.. code:: python

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:

.. code:: python

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.

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage

Many thanks to PySimpleAutomata_ for the automata support.
.. _PySimpleAutomata: https://github.com/Oneiroe/PySimpleAutomata


=======
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-03-09)
------------------

* Non-deterministic state automata conversion procedure for LDLf_EmptyTraces formulas.

0.2.7 (2018-03-10)
------------------

* Fix bug in delta function for NFA computation from LDLf_EmptyTraces formulas
* Fix bug in rewriting automata for PySimpleAutomata package

0.2.8 (2018-03-10)
------------------

* Implemented DFA conversion for NFAs from LDLf_EmptyTraces formulas

0.2.9 (2018-03-16)
------------------

* Migrating from PySimpleAutomata to `Pythomata <https://github.com/MarcoFavorito/pythomata>`_

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pythogic-0.2.9.tar.gz (40.7 kB view details)

Uploaded Source

Built Distribution

pythogic-0.2.9-py3.5.egg (80.4 kB view details)

Uploaded Source

File details

Details for the file pythogic-0.2.9.tar.gz.

File metadata

  • Download URL: pythogic-0.2.9.tar.gz
  • Upload date:
  • Size: 40.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pythogic-0.2.9.tar.gz
Algorithm Hash digest
SHA256 08cb1ff6146df354965c8eba38aa7dc6e934bacf3765b30b27bc57bc97a7bb9e
MD5 273ec8d0946d12746db11432635a6222
BLAKE2b-256 dc6d7ff0fc1176ef333534b8664d9ecd980483762124b615aaac9957481891bc

See more details on using hashes here.

File details

Details for the file pythogic-0.2.9-py3.5.egg.

File metadata

  • Download URL: pythogic-0.2.9-py3.5.egg
  • Upload date:
  • Size: 80.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pythogic-0.2.9-py3.5.egg
Algorithm Hash digest
SHA256 c29915b5f213ff200d31ba1fdd2c6923632b0abb9e388a2a3763588bfeee8f68
MD5 290776e99f87bec02581a6a90521e4a6
BLAKE2b-256 6bc414e9470e1eeaa2450e6316de19cbee608a7435be84b79710361e3d87cb86

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page