Skip to main content

Pure Python PDDL plan validator

Project description

PyVAL — Pure Python PDDL Plan Validator

PyPI Python License: MIT

A pure-Python PDDL plan validator — a drop-in alternative to the compiled VAL binary. Built on unified-planning, zero compiled dependencies, pip install-able everywhere.

PyVAL produces rich, structured diagnostics designed for both humans and LLM consumption: per-step state changes, precondition deficit reporting, and repair-oriented messages.

Install

pip install pddl-pyvalidator

Quick Start

# Validate a plan against a domain and problem
pyval domain.pddl problem.pddl plan.txt

# JSON output for tool integration
pyval domain.pddl problem.pddl plan.txt --json

# Numeric fluent trajectory (one row per step)
pyval domain.pddl problem.pddl plan.txt --trajectory --track fuel --track cost

# Syntax check only (domain, or domain + problem)
pyval domain.pddl
pyval domain.pddl problem.pddl

Exit code is 0 on a valid plan, 1 otherwise.

Python API

from pyval import PDDLValidator

validator = PDDLValidator()
result = validator.validate(
    domain_path="domain.pddl",
    problem_path="problem.pddl",
    plan_path="plan.txt",
)

if result.is_valid:
    print("Plan is valid")
else:
    for err in result.errors:
        print(err)

What Gets Validated

PyVAL runs a three-phase pipeline and halts on the first fatal error:

  1. Syntax & semantic — PDDL parses, types/predicates/functions are well-formed, no duplicates or arity mismatches.
  2. Plan structure — every action name exists in the domain, parameters are declared objects with type-compatible (subtype-aware) bindings.
  3. Plan execution — each step's preconditions hold, effects apply, and goals are satisfied in the final state. Numeric fluents are tracked across steps; quality metrics (minimize / maximize) are evaluated on the final state.

Unsupported PDDL features (durative actions, PDDL+ processes/events) are reported as warnings rather than silent failures.

Output Modes

  • Plain text (default, VAL-like, optionally -v for per-step detail)
  • JSON (--json) — structured for programmatic consumption
  • Trajectory (--trajectory) — numeric fluent values per step, optionally filtered via --track

Development

python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest

See VALIDATOR_SPEC.md for the full specification and CLAUDE.md for architecture notes.

License

MIT — see LICENSE.

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

pddl_pyvalidator-0.1.4.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

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

pddl_pyvalidator-0.1.4-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file pddl_pyvalidator-0.1.4.tar.gz.

File metadata

  • Download URL: pddl_pyvalidator-0.1.4.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pddl_pyvalidator-0.1.4.tar.gz
Algorithm Hash digest
SHA256 f2a6fac8310f68fd49b1253b4bfcd08277591864af534a310f3305bf28d61ac7
MD5 65ce1e280e15d7a23609dd79d029c81f
BLAKE2b-256 9a9b7e1af7509cc6da4deb5b353b5761dd7b62cb481537ffb49b592bdaaf2c56

See more details on using hashes here.

Provenance

The following attestation bundles were made for pddl_pyvalidator-0.1.4.tar.gz:

Publisher: publish.yml on SPL-BGU/pyvalidator

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

File details

Details for the file pddl_pyvalidator-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for pddl_pyvalidator-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1201429705fc998b3093bedc22f63f869c76fb5f2d3922922b98abce0d71ccea
MD5 e57d1f9abff608c972f0b5f9043ef237
BLAKE2b-256 6cb0b64d9092e6f7e0b3362e11de8844c4171447001fab0489d04c389920f733

See more details on using hashes here.

Provenance

The following attestation bundles were made for pddl_pyvalidator-0.1.4-py3-none-any.whl:

Publisher: publish.yml on SPL-BGU/pyvalidator

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