Skip to main content

Module plan

Module plan 

Source
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 ff text plan into (NAME, [ARGS]) pairs (uppercased to match grounded-operator display names). Accepts the step N: first line and the bare N: continuation lines, with or without parens around the action, and ignores banner / timing / REACH-GOAL lines.
parse_timed
Parse a temporal IPC plan (t: (name args) [dur]) into a TimedPlan. Action strings are uppercased to match grounded-operator names; banner and plan makespan: lines are ignored.
validate_plan
Validate plan_src against the domain/problem under ferroplan’s own semantics. Auto-detects classical vs temporal from the domain (durative actions => temporal).