Skip to main content

Tools to aid the development of explanation systems using clingo

Project description

from clingexplaid.transformers.transformer_assumption import FilterSignature

clingexplaid

API to aid the development of explanation systems using clingo

Installation

Clingo-Explaid easily be installed with pip:

pip install clingexplaid

Requirements

  • python >= 3.9
  • clingo >= 5.7.1

Building from Source

Please refer to DEVELOPEMENT

API

Here are two example for using clingexplaid's API.

Minimal Unsatisfiable Subsets (MUS)

Getting a single MUS:

import clingo
from clingexplaid.transformers import AssumptionTransformer
from clingexplaid.transformers.transformer_assumption import FilterSignature
from clingexplaid.mus import CoreComputer

PROGRAM = """
a(1..3).
{b(4..6)}.

a(X) :- b(X).

:- a(X), X>=3.
"""

control = clingo.Control()
at = AssumptionTransformer(filters={FilterSignature("a", 1)})

transformed_program = at.parse_string(PROGRAM)

control.add("base", [], transformed_program)
control.ground([("base", [])])

assumptions = at.get_assumption_literals(control)

cc = CoreComputer(control, assumptions)


def shrink_on_core(core) -> None:
    mus_literals = cc.shrink(core)
    print("MUS:", cc.mus_to_string(mus_literals))


control.solve(assumptions=list(assumptions), on_core=shrink_on_core)

Getting multiple MUS:

import clingo
from clingexplaid.transformers import AssumptionTransformer
from clingexplaid.mus import CoreComputer

PROGRAM = """
a(1..3).
b(1..3).

:- a(X), b(X).
"""

at = AssumptionTransformer()
transformed_program = at.parse_string(PROGRAM)
control = clingo.Control()
control.add("base", [], transformed_program)
control.ground([("base", [])])
assumptions = at.get_assumption_literals(control)
cc = CoreComputer(control, assumptions)

mus_generator = cc.get_multiple_minimal()
for i, mus in enumerate(mus_generator):
    print(f"MUS {i}:", cc.mus_to_string(mus))

Unsatisfiable Constraints

from clingexplaid.unsat_constraints import UnsatConstraintComputer

PROGRAM = """
a(1..3).
{b(4..6)}.

a(X) :- b(X).

:- a(X), X>=3.
"""

ucc = UnsatConstraintComputer()
ucc.parse_string(PROGRAM)
unsat_constraints = ucc.get_unsat_constraints()

for uc_id, unsat_constraint in unsat_constraints.items():
    print(f"Unsat Constraint {uc_id}:", unsat_constraint)

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

clingexplaid-1.2.2.tar.gz (77.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

clingexplaid-1.2.2-py3-none-any.whl (29.9 kB view details)

Uploaded Python 3

File details

Details for the file clingexplaid-1.2.2.tar.gz.

File metadata

  • Download URL: clingexplaid-1.2.2.tar.gz
  • Upload date:
  • Size: 77.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for clingexplaid-1.2.2.tar.gz
Algorithm Hash digest
SHA256 f2bfaad571d2e24d2583f10cded544ea823d8210c92f22756a987f1ce247ebc3
MD5 be167b3d6975bd04e15002825807de7d
BLAKE2b-256 3e8bb4e5d8ad1840952629ba08ca62b6e8f4df04785a71e670b6c77d3603567b

See more details on using hashes here.

Provenance

The following attestation bundles were made for clingexplaid-1.2.2.tar.gz:

Publisher: deploy.yml on potassco/clingo-explaid

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clingexplaid-1.2.2-py3-none-any.whl.

File metadata

  • Download URL: clingexplaid-1.2.2-py3-none-any.whl
  • Upload date:
  • Size: 29.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for clingexplaid-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7a2df8d79b9cfd5ef75ab1a762ea3e17ea1eb05a6459fd4867cd667f633a0c3c
MD5 c49de1f55cba9a36f4ff42a77740bcc6
BLAKE2b-256 dd7ac139d2686137bd5635fa3b866472dd66a3f7302defb616f01d36ca3ce7c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for clingexplaid-1.2.2-py3-none-any.whl:

Publisher: deploy.yml on potassco/clingo-explaid

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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