Expand description
Built-in plan validator — check a plan against ferroplan’s OWN semantics.
The external VAL validator enforces strict textbook PDDL2.1 (e.g. it forbids
two durative actions touching the same numeric fluent at once, and demands
ε-separation at shared timestamps). ferroplan’s temporal engine deliberately
uses a sequential decision-epoch model, so VAL rejects perfectly good
ferroplan plans. This module replays a plan the SAME way the planner applies
actions — reusing verify::verify (classical) and temporal::validate
(temporal) — so “valid here” means “valid under the semantics that produced it”.
It also supplies the one missing piece: a parser for the two plan text formats
ff emits — classical step N: NAME ARGS and temporal IPC t: (name args) [d].
Enums§
- Validity
- Outcome of validating a plan.
Functions§
- parse_
classical - Parse a classical
fftext plan into(NAME, [ARGS])pairs (uppercased to match grounded-operator display names). Accepts thestep N:first line and the bareN:continuation lines, with or without parens around the action, and ignores banner / timing /REACH-GOALlines. - parse_
timed - Parse a temporal IPC plan (
t: (name args) [dur]) into aTimedPlan. Action strings are uppercased to match grounded-operator names; banner andplan makespan:lines are ignored. - validate_
plan - Validate
plan_srcagainst the domain/problem under ferroplan’s own semantics. Auto-detects classical vs temporal from the domain (durative actions => temporal).