Inferensys

Glossary

PDDL (Planning Domain Definition Language)

PDDL is a standardized, first-order logic-based language used to formally define the actions, predicates, and objects within a planning domain and the specific initial and goal states of a planning problem.
Stylish WeWork-like workspace with hot desks and document wall, professional searching through enterprise knowledge base on a mounted ultrawide display, warm industrial pendants overhead.
AUTOMATED PLANNING SYSTEMS

What is PDDL (Planning Domain Definition Language)?

PDDL is the formal, standardized language for defining problems and domains in classical automated planning.

The Planning Domain Definition Language (PDDL) is a first-order logic-based, standardized language used to formally define the components of an automated planning problem. It separates the planning domain—which specifies the types of objects, predicates describing their properties, and the actions available—from the planning problem—which defines the specific initial state and goal conditions. This separation allows generic planning algorithms to operate across different application areas by parsing the same structured language.

PDDL enables the precise specification of preconditions that must hold for an action to be executable and the effects that action has on the world state. Originating from the STRIPS formalism, it provides the necessary syntactic structure for planners to perform state-space search or regression planning. Its standardization facilitates the development and benchmarking of planning algorithms, as seen in the International Planning Competition, making it a cornerstone for research and development in autonomous agent and cognitive architecture systems.

PLANNING DOMAIN DEFINITION LANGUAGE

Core Components of a PDDL Specification

A PDDL specification is formally divided into two files: a domain file, which defines the reusable rules of the world, and a problem file, which defines a specific instance to solve. Together, they provide a complete, logic-based model for an automated planner.

01

Domain File: The Rulebook

The domain file is a reusable template that defines the types of objects, predicates (properties and relationships), and actions available in a planning world. It uses first-order logic to specify the rules of change.

  • Types: Define hierarchies of object categories (e.g., robot, location - thing, package - thing).
  • Predicates: Define properties that can be true or false about the world state (e.g., (at ?r - robot ?l - location), (loaded ?r - robot ?p - package)).
  • Actions: Defined using :parameters, :precondition (logical formula that must be true to execute), and :effect (logical formula describing state changes).
02

Problem File: The Specific Instance

The problem file defines a concrete planning instance by specifying the initial state and the goal condition using the predicates declared in the domain.

  • Objects: Instantiates the domain's types with concrete instances (e.g., r1 - robot, locA locB - location, pkg1 - package).
  • Init: A complete list of all predicates that are true in the starting world state. All unlisted predicates are assumed false (Closed World Assumption).
  • Goal: A logical formula describing the set of world states that constitute a solution (e.g., (and (at pkg1 locB) (at r1 locA))).
03

Action Schema: The Engine of Change

An action schema is a parameterized operator that defines how the agent can transform the world. It is the core construct for modeling capabilities.

  • Structure: (:action drive :parameters (?r - robot ?from ?to - location) :precondition (and (at ?r ?from) (connected ?from ?to)) :effect (and (not (at ?r ?from)) (at ?r ?to)))
  • Precondition: A conjunction/disjunction of predicates that must hold for the action to be applicable.
  • Effect: Specifies which predicates become true (add list) and which become false (delete list) after execution, directly addressing the frame problem by defining what changes.
04

Requirements & Extensions

PDDL is modular. The :requirements stanza in the domain declares which language features are needed, enabling planners to support advanced capabilities.

Core requirements include:

  • :strips - The basic action representation (preconditions, add/delete effects).
  • :typing - Support for object types.
  • :equality - Support for the = predicate.
  • :negative-preconditions - Allow not in preconditions.
  • :disjunctive-preconditions - Allow or in preconditions.
  • :conditional-effects - Effects that depend on state (when).
  • :durative-actions - For temporal planning (PDDL 2.1).
  • :numeric-fluents - For continuous numeric state variables.
05

STRIPS: The Foundational Subset

STRIPS (Stanford Research Institute Problem Solver) is the historical and conceptual foundation for PDDL. A STRIPS-style domain in PDDL uses only the core :strips requirement.

Key STRIPS Assumptions:

  • States are represented as sets of ground (instantiated) logical atoms.
  • Actions have a precondition list (conjunction of positive literals).
  • Actions have an add list and a delete list for effects.
  • The world is static, fully observable, and deterministic. Most classical planners are designed to solve STRIPS problems efficiently, making it the most widely supported PDDL subset.
06

Example: A Simple Logistics Domain

Domain Snippet (logistics-domain.pddl):

lisp
(define (domain logistics)
  (:requirements :strips :typing)
  (:types location vehicle - object package - object)
  (:predicates (at ?obj - object ?loc - location)
               (in ?pkg - package ?v - vehicle))
  (:action load
    :parameters (?pkg - package ?v - vehicle ?loc - location)
    :precondition (and (at ?pkg ?loc) (at ?v ?loc))
    :effect (and (not (at ?pkg ?loc)) (in ?pkg ?v)))
)

Problem Snippet (deliver-p1.pddl):

lisp
(define (problem deliver-p1)
  (:domain logistics)
  (:objects pkg1 - package truck1 - vehicle locA locB - location)
  (:init (at pkg1 locA) (at truck1 locA))
  (:goal (at pkg1 locB))
)

A valid plan: (load pkg1 truck1 locA), (drive truck1 locA locB), (unload pkg1 truck1 locB).

AUTOMATED PLANNING SYSTEMS

How PDDL Works: From Specification to Plan

PDDL provides a formal, logic-based specification language that separates the general rules of a domain from a specific problem instance, enabling automated planners to algorithmically search for a valid sequence of actions.

A PDDL domain file formally defines the planning domain using first-order logic. It declares types of objects, predicates (properties and relations that can be true or false), and actions. Each action is defined by its parameters, preconditions (logical formulas that must hold for it to execute), and effects (how it changes the world state by adding or deleting predicates). This creates a reusable template for a class of problems.

A separate PDDL problem file instantiates the domain for a specific scenario. It lists the concrete objects present, defines the initial state as a set of true predicates, and specifies the goal condition as a logical formula. A planner, such as a heuristic forward search or SAT-based solver, takes these files, explores the state space of possible actions, and outputs a plan—a sequence of ground actions that, if executed from the initial state, is guaranteed to achieve the goal.

PLANNING DOMAIN DEFINITION LANGUAGE

Frequently Asked Questions

PDDL is the lingua franca for formalizing automated planning problems. These questions address its core syntax, practical applications, and role in modern agentic systems.

The Planning Domain Definition Language (PDDL) is a standardized, first-order logic-based language used to formally define the components of an automated planning problem. It works by separating the domain (the reusable rules of the world) from the problem (a specific initial state and goal). A domain file defines types, predicates (facts about the world), and actions (with preconditions and effects). A problem file instantiates objects, sets the initial state as a set of true predicates, and defines the goal condition. A planner algorithm reads these files to search for a sequence of actions (a plan) that transforms the initial state into a goal state.

lisp
;; Domain Example (excerpt)
(:action drive
  :parameters (?v - vehicle ?l1 ?l2 - location)
  :precondition (and (at ?v ?l1) (road ?l1 ?l2))
  :effect (and (not (at ?v ?l1)) (at ?v ?l2)))
Prasad Kumkar

About the author

Prasad Kumkar

CEO & MD, Inference Systems

Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.

His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.