Skip to main content

Python package for deal with logical formulas and formal systems

Project description

Pythogic

https://img.shields.io/badge/status-development-orange.svg https://img.shields.io/pypi/v/pythogic.svg https://img.shields.io/pypi/pyversions/pythogic.svg https://img.shields.io/travis/MarcoFavorito/pythogic.svg Documentation Status https://coveralls.io/repos/github/MarcoFavorito/pythogic/badge.svg?branch=master Codacy Badge https://api.codacy.com/project/badge/Coverage/51b6bb66aeff4e27ad9a9a19c421803c MIT License

Python package for deal with logical formulas and formal systems.

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})

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.

Project details


Download files

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

Files for pythogic, version 0.2.5
Filename, size File type Python version Upload date Hashes
Filename, size pythogic-0.2.5-py2.py3-none-any.whl (26.1 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size pythogic-0.2.5.tar.gz (30.8 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page