HDDL -- A Language to Describe Hierarchical Planning Problems
Abstract: The research in hierarchical planning has made considerable progress in the last few years. Many recent systems do not rely on hand-tailored advice anymore to find solutions, but are supposed to be domain-independent systems that come with sophisticated solving techniques. In principle, this development would make the comparison between systems easier (because the domains are not tailored to a single system anymore) and -- much more important -- also the integration into other systems, because the modeling process is less tedious (due to the lack of advice) and there is no (or less) commitment to a certain planning system the model is created for. However, these advantages are destroyed by the lack of a common input language and feature set supported by the different systems. In this paper, we propose an extension to PDDL, the description language used in non-hierarchical planning, to the needs of hierarchical planning systems. We restrict our language to a basic feature set shared by many recent systems, give an extension of PDDL's EBNF syntax definition, and discuss our extensions with respect to several planner-specific input languages from related work.
Paper Prompts
Sign up for free to create and run prompts on this paper using GPT-5.
Top Community Prompts
Explain it Like I'm 14
Overview
This paper introduces HDDL, a simple, shared language for describing “hierarchical” planning problems in artificial intelligence. Think of planning like writing a recipe: you want a machine to figure out the steps to reach a goal. In hierarchical planning, big tasks are broken down into smaller tasks (like “make dinner” becomes “cook pasta,” which becomes “boil water,” “add pasta,” and so on). HDDL aims to be the common way to write these plans so different AI systems can understand and compare them easily.
What are the main questions?
The paper asks:
- Can we extend the popular planning language PDDL (used for non-hierarchical plans) to cleanly support hierarchical plans?
- What basic features should this new language include so it works across many modern planners?
- How should we write this language so it’s clear, consistent, and easy to use?
How did the authors approach it?
The authors did three main things:
- Explained hierarchical task network (HTN) planning in clear, formal terms. In HTN:
- A “task” can be either a simple action (like
drive) or a compound task (likedeliver) that gets broken into subtasks. - A “method” tells you how to break a compound task into subtasks.
- Some tasks must happen before others; sometimes you can partially order them (not strictly step 1, step 2, step 3) if the order doesn’t always matter.
- A “task” can be either a simple action (like
- Designed HDDL as an extension of the STRIPS part of PDDL 2.1. In everyday terms, they added the extra pieces needed for hierarchical plans while keeping everything else familiar to PDDL users.
- Gave a full, precise grammar for HDDL (the exact rules for writing HDDL), plus examples, and compared HDDL’s choices with other existing languages (like SHOP, HPDDL, ANML, and older PDDLs). This is like making sure everyone agrees on the same “recipe format.”
What did they create and find?
HDDL adds a small set of clear pieces to PDDL so you can define hierarchical plans. Here are the key parts:
- Explicit abstract tasks: You define compound tasks up front, like
(:task deliver ...). This avoids confusion between simple actions and tasks that need decomposition. - Methods: You define how to break a compound task into subtasks:
:tasksays which abstract task the method decomposes, e.g.,(deliver ?p ?ld).:parameterslist all variables used inside the method and their types.- Subtasks can be:
- Totally ordered with
:ordered-subtaskswhen the exact sequence is required. - Partially ordered with
:subtasksplus an:orderingsection when only some “must come before” rules are needed.
- Optional method preconditions:
:preconditionlets you specify conditions that must be true before a method can be used (e.g., “already at the destination”). These are common in practice, but optional in HDDL to keep the core language simple. - Constraints:
:constraintslets you add simple variable checks (like saying two locations must be different). This makes models safer and clearer. - Actions stay PDDL-style: Primitive actions (like
drive) keep standard PDDL preconditions and effects. - Initial task network: In the problem file, the
(:htn ...)section defines the starting set of tasks, their order, and any constraints. Goals are optional because HTN problems often don’t need a separate state-based goal—the task hierarchy itself defines what to achieve. - Requirement flags: HDDL uses
:htnto signal the planner must support HTN, and:htn-method-precif method preconditions are used. This makes capabilities explicit.
Why this matters:
- It standardizes the basics across different planners, making it much easier to compare systems and share models.
- It’s close to PDDL, so people who already know PDDL can learn HDDL quickly.
- It avoids tricky or planner-specific features that can cause confusion (for example, they do not include “method effects” in the core, which are rarely used and can be hard to define correctly).
Implications and potential impact
HDDL is a practical step toward getting the HTN planning community on the same page. With a common, simple language:
- Researchers can compare different planning systems fairly using the same models.
- Developers can model a problem once and try multiple planners without rewrites.
- The field can build shared benchmarks and test suites, speeding up progress.
- Future extensions (like time, numbers, richer constraints, or decomposing goals) can be added in a structured way, similar to how PDDL grew over time.
In short, HDDL makes hierarchical planning clearer and more consistent, helping both research and real-world applications move faster.
Collections
Sign up for free to add this paper to one or more collections.