TLDR
- Plan extraction is a dynamic CSP. Proposition goals are variables, supporting actions are values, mutexes constrain value pairs, and chosen actions activate predecessor goals.
- Ordinary memos overstate failure. Graphplan stores an entire failing goal set, even when only a small subset caused the contradiction.
- Explanations make learning reusable. EBL regresses a minimal conflict through selected actions and stores the responsible predecessor subgoals as a smaller no-good.
- Dependencies control retreat. DDB jumps to the latest assignment named by the conflict set, skipping decisions that cannot affect the failure.
- Search plumbing matters by domain. EBL/DDB produced the largest reported gains; sticky values, ordering, checking and restarts helped unevenly and carried overhead.
Build an optimistic graph, then prove that one compatible support set exists
A planning graph makes reachability cheap enough to see, but its unioned layers do not themselves constitute a plan. Backward extraction must select non-mutex actions whose preconditions can be supported recursively.
Starting from the initial state, Graphplan alternates proposition layers and action layers. An action enters when its preconditions appear without pairwise mutex; persistence actions carry unchanged propositions forward. The following proposition layer unions all effects. Mutex propagation records selected action and proposition pairs that cannot coexist.
Expansion continues until every goal appears at a proposition layer and no goal pair is mutex. That is necessary, not sufficient. The graph is a disjunctive compression of many forward states: individually reachable propositions can still lack a jointly consistent supporting assignment.
Backward search chooses an action supporting each goal at level k, rejecting action pairs marked mutex. The union of chosen preconditions becomes the goal set at k−1. Recursion succeeds on reaching the initial layer; otherwise it explores alternative supports. If no assignment works at the current depth, Graphplan expands another level.
The original algorithm memoises a failed subgoal set at its level. A later search containing that complete set fails immediately. Because layers can level off while search no-goods continue to change, Graphplan can prove absence of a finite plan in the classical setting when graph and memo conditions stabilise.
Kambhampati’s study does not replace the graph. It reinterprets extraction using constraint-satisfaction concepts, exposing what standard chronological backtracking and whole-set memoisation throw away. The transformation is analytical and operational: once failure has an explanation, the search can both learn and retreat more precisely.
Worked example 1 · goals present but not jointly achievable
Suppose g₁ and g₂ both appear at level k and are not proposition-mutex. Every action supporting g₁ may nevertheless conflict with every action supporting g₂. The reachability test passes, but backward assignment proves the level has no plan.
Causal probe 1 · remove mutex propagation
More actions and propositions appear sooner, yet backward search must rediscover obvious incompatibilities repeatedly. Graph construction becomes cheaper while extraction becomes far less informed; total planning time can increase.
Supporting an active proposition activates the action’s preconditions
A standard CSP fixes its variables in advance. Graphplan’s extraction problem is dynamic because choosing a support at one layer creates the variables that must be assigned at the preceding layer.
Each proposition at each graph level is a DCSP variable. Its domain contains the actions at the previous action layer that support it. Top-level goals begin active. Assigning action a as the value of goal g activates every precondition of a as a variable at level k−1.
Action mutexes become constraints between value assignments. If actions a and b are mutex, then any propositions supported by them cannot simultaneously take those values. Proposition mutexes prohibit simultaneous activation: both variables cannot take non-null values in the same solution.
A DCSP can be compiled to an ordinary CSP by adding a null value ⊥ to every domain. Inactive means assigned ⊥; active means constrained not to ⊥. Activity implications become higher-arity constraints connecting a selected support to non-null predecessor variables. This allows standard CSP solvers but can create large extensional constraints.
The direct DCSP view mirrors Graphplan’s epoch-by-epoch backward search and avoids materialising every constraint. It also clarifies why generic CSP heuristics need not transfer unchanged. A present goal variable with a small domain may activate many difficult predecessors, while a larger domain may contain a support with easy preconditions.
The mapping separates graph-level pruning from search-level consistency. Planning-graph construction enforces partial directed one-consistency by admitting supported actions and partial directed two-consistency through mutex propagation. It does not establish full one- or two-consistency over actual values, much less higher-arity consistency.
Worked example 2 · one choice creates three new goals
If action Load supports goal InTruck but requires AtPackage, AtTruck and ClearDock, assigning Load to InTruck activates all three propositions at the previous level. Search cost depends on this induced subproblem, not merely on InTruck’s current domain size.
Causal probe 2 · replace an action with an equivalent lower-precondition action
The top-level domain size stays unchanged, yet the DCSP below becomes smaller. A variable-ordering rule looking only at current live values misses the change; an activation-aware rule can detect it.
Pairwise reachability is a conservative preview, not complete consistency
The CSP lens reveals exactly what Graphplan’s expansion has enforced: and the higher-order conflicts it leaves for backward search.
Partial directed one-consistency excludes an action when its preconditions are absent or pairwise mutex. Yet the appearance of a proposition does not guarantee that any complete support assignment reaches it in conjunction with the rest of the goal set. A surviving value can still be impossible under other assignments.
Partial directed two-consistency marks proposition pairs mutex when all their supporting action pairs are mutex. This speaks about simultaneous activity: whether both can take some non-null value: not whether every particular value pair is feasible. Fine-grained action mutex constraints remain for extraction.
Higher-arity contradictions can evade all pairwise tests. Three goals may be pairwise supportable while no triple of actions is jointly consistent. Whole-goal memoisation then supplies failure-driven higher-order consistency, but only after search encounters the combination.
Deriving every value-level no-good during graph expansion could strengthen pruning dramatically and also explode storage. With l levels, m goals per level and d supporting actions per goal, Graphplan-style pairwise proposition mutexes scale roughly with l·m², whereas pairwise value no-goods can scale with l·[m(d+1)]².
The paper repeatedly treats learning as a utility problem. A fact may be logically derivable yet not worth storing or checking. Conservative graph mutexes and level-indexed memos keep management cost low; EBL seeks a better reuse-to-overhead ratio by making each learned set smaller and more relevant.
Worked example 3 · every pair works, the triple fails
Actions for g₁, g₂ and g₃ can be chosen so each pair has at least one compatible combination, while every complete triple violates some mutex. No proposition pair is marked mutex, so backward search must discover the three-way no-good.
Causal probe 3 · precompute all triple conflicts
Extraction shrinks, but graph construction and memory can grow combinatorially. The intervention trades online failure analysis for broad up-front consistency enforcement; its value depends on how often learned triples recur.
Remembering the whole failing set hides the real dependency
Standard Graphplan stores every goal in a failed search node as a memo, even when some goals played no role in the contradiction.
Suppose goals {P₁,P₂,P₃,P₄,P₅,P₆} fail because every support for P₄ conflicts with choices already made for P₁ and P₂. P₃, P₅ and P₆ are spectators. Whole-set memoisation records all six. It will prune only a future goal set containing all six, missing many contexts where {P₁,P₂,P₄} reappears.
Chronological backtracking likewise retreats first to P₃, the immediately preceding assignment, although changing P₃ cannot repair P₄. The search can revisit every value of irrelevant intervening goals before it changes P₂ or P₁. Learning and backtracking suffer from the same missing explanation.
Normal memos are nevertheless conservative and cheap. They contain only proposition variables from one planning-graph level, are stored separately by level and are checked only against same-level goal sets. They ignore value assignments, drastically limiting the no-good universe and lookup burden.
Subset matching already makes a memo applicable when it is contained in the current goal set. But shrinking the learned set is what makes subset matching powerful. The experiments found that subset memoisation alone improved memo use without dramatic overall performance; EBL/DDB created the general no-goods that could be reused frequently.
Memo length becomes a measurable explanation-quality proxy. In Rocket-ext-a, average learned length fell from about 24 goals to 8.5 with EBL. A hidden eight-goal failure can be embedded in choose(24,8) larger contexts. Whole-set learning repeatedly rediscovers it under different irrelevant companions.
Worked example 4 · one conflict inside many contexts
If {P₁,P₂,P₄} is impossible, then adding P₃ or P₆ cannot make it possible. The three-goal memo correctly prunes every superset. A six-goal memo waits for one exact entourage and loses most reuse.
Causal probe 4 · store value-level no-goods instead
Learning can become more precise: for example P₁=A₅ with P₄=A₉: yet the candidate store expands with domain size. Proposition-only memos trade precision for bounded retrieval cost.
Regress the contradiction through the supports that created it
EBL equips each search variable with a conflict set: an incrementally maintained partial explanation naming the active goals whose current assignments make a value impossible.
When the solver is about to assign condition c, its conflict set begins with {c}. If a candidate support action conflicts with an action already selected for c′, add c′. When all values of c fail, the accumulated set explains why c cannot be supported under the current partial assignment.
The explanation omits permanent domain facts and mutex relations because the planning graph already represents them. It retains the variable names whose current assignments participate. This compressed conflict set is sufficient for backjumping and for regressing failure to the preceding level.
If an epoch at level k−1 fails, its conflict set names predecessor goals. Those goals arose as preconditions of actions selected to support level-k goals. Regression maps each conflicting predecessor back to the higher-level goal whose chosen action activated it, forming a learned memo at level k.
Two regression heuristics control generality. One prefers a higher-level goal whose action contributed the failing precondition and is already in the current conflict. Another can choose a goal that supports deeper DDB. These choices affect efficiency, not soundness or completeness, because the regressed set still entails failure.
EBL is therefore not learning a domain rule in unrestricted language. It is projecting a proof of local extraction failure into Graphplan’s level-indexed proposition vocabulary. The learned object is small enough to match quickly and general enough to prune sibling and later epochs.
Worked example 5 · two rejected values, three named causes
P₄ has supports A₈ and A₉. A₈ conflicts with A₆ selected for P₂; A₉ conflicts with A₅ selected for P₁. Exhausting both supports yields {P₁,P₂,P₄}. P₃’s assignment is absent because neither rejection depended on it.
Causal probe 5 · initialise conflict(c) as the empty set
If every value of c fails without conflict against an earlier assignment, the explanation could become empty and falsely declare universal failure. Including c records that the active requirement itself participates.
Retreat to the newest decision that appears in the explanation
DDB uses the same conflict set procedurally. When a variable exhausts its domain, search jumps over assignments absent from the explanation.
In the P₄ example, chronological search backtracks to P₃ because P₃ was assigned last. DDB examines {P₁,P₂,P₄} and returns to P₂, the most recent earlier member. Changing P₃ cannot make A₈ compatible with A₆ or A₉ compatible with A₅, so reconsidering it is provably wasted under the explanation.
At the jump target, the downstream conflict is merged into its own conflict set, with the target variable removed before propagation. If P₂ also exhausts its supports, the combined explanation travels farther back. This is conflict-directed backjumping generalised from static binary CSPs to variables activated dynamically across planning levels.
DDB does not leap to an arbitrary promising point. It follows logical dependency among current assignments. The most recent implicated variable preserves depth-first progress while ensuring the next changed choice can affect at least one clause of the failure explanation.
EBL and DDB are separable in principle. DDB can use an explanation once and discard it; EBL can store generalised memos but retreat chronologically. The experiments show both contribute, with DDB sometimes supplying much of the immediate saving and stored EBL gaining from reuse across branches and epochs.
Soundness is maintained because skipped assignments are outside the explanation: holding them fixed or changing them cannot rescue the known contradiction as long as responsible assignments remain. Completeness remains because the algorithm eventually explores alternatives of every implicated decision.
Worked example 6 · skip the innocent middle goal
After P₄ fails because of P₁ and P₂, changing P₃ generates the same failure. DDB preserves P₃’s chosen value and revises P₂. The skipped work can be enormous when P₃ represents a large independent subproblem.
Causal probe 6 · jump to the earliest implicated goal
The jump remains sound but discards more useful assignments than necessary. Choosing the latest implicated variable combines logical relevance with maximal preservation of current progress.
Generality raises reuse, but retrieval must stay cheap
The paper studies no-good learning as an economic system: generation cost, match cost, storage, average length and reuse frequency jointly determine value.
EBL memos are proposition sets, not complete value-level explanations. A memo M fails any current goal set G at the same level when M⊆G. Reducing M increases the number of supersets it can prune. It can also make subset tests cheaper, though more frequent matches and more generated memos affect total overhead.
Graphplan’s conservative representation controls three classic no-good problems. It learns comparatively few sets, keeps only goal variables from one level and queries only that level’s store. This structural indexing avoids scanning an unrestricted global database. Full EBL retains these advantages while improving memo content.
The empirical relationship is domain-sensitive. Rocket and logistics problems show large drops in average memo length and dramatic speedups. Blocks-world goals are more interdependent, so explanations remain close to the full set and gains are modest. A learning mechanism cannot generalise away genuinely coupled causes.
In Rocket-ext-b, the paper reports that an EBL memo is used to detect failure about 101 times on average, versus 3.2 for a normal memo. This statistic, failures found divided by memos generated, measures utility but can be inflated by longer searches; it should be interpreted beside runtime and backtracks.
DDB-only ablations remove memo checking while retaining intelligent retreat. On several problems, full EBL/DDB still substantially outperforms DDB alone, showing that generalised reuse is not merely overhead. Yet memo time can be a large fraction of runtime, so the balance can reverse on domains with little repetition.
Worked example 7 · 8 goals hidden among 24
A normal 24-goal memo recognises one full set. An eight-goal explanation may appear inside combinatorially many 24-goal sets. The same failure is then paid for once and reused, rather than rediscovered under each spectator combination.
Causal probe 7 · share memos across graph levels
Identical proposition names can have different reachability and support domains at different depths. Removing level indexing risks unsound reuse and raises lookup cost; a cross-level scheme would need a valid temporal generalisation.
Preserve useful assignments, but charge every extra inference
After EBL/DDB, the paper tests several familiar CSP enhancements. Each changes the search tree, but reductions in backtracks do not reliably become reductions in CPU time.
Sticky values remember the last support action assigned to a proposition and try it first when that proposition is revisited. Standard Graphplan’s whole-set memo often prevents revisiting within similar contexts; more general EBL memos and DDB alter that pattern, leaving opportunities to reuse a previously successful value. Sticky values add roughly two- to four-fold improvements on some benchmarks.
“Folding” attempts to preserve value information in memos by recording sticky values associated with goals, seeking some precision without a full value-level no-good database. Its gains are mixed. The technique demonstrates a recurring tension: variable-only learning is broadly reusable, while value detail can guide reconstruction after backtracking.
Dynamic variable ordering selects the next active goal using live domain information, often preferring fewest remaining supports. Forward checking removes support values from unassigned goals when they conflict with a selected action. Emptying a domain gives early failure and an explanation containing the assignments responsible for each removal.
On plain Graphplan, DVO and forward checking reduce backtracks but are not competitive with EBL/DDB. Added on top of EBL/DDB, they provide additional backtrack reductions and occasional two- to four-fold time gains, yet several CPU times worsen because filtering and ordering cost more than the avoided search.
The DCSP interpretation explains why generic minimum-domain ordering can mislead. Difficulty lies not only in assigning present variables but in which predecessor variables a value activates. A two-value goal can create enormous subproblems, while a five-value goal may contain a persistence action with trivial support.
Worked example 8 · fewer backtracks, slower run
If forward checking cuts five million recursive failures but scans many large domains after every assignment, CPU time can rise. Backtrack count measures tree size; it does not price propagation.
Causal probe 8 · order by activated-subproblem estimate
Two goals with equal live domain sizes may induce very different predecessor sets. Ranking values by the number and difficulty of newly active variables directly targets the dynamic CSP structure the paper identifies.
Randomness does not make causal failure analysis obsolete
Bounded random restarts diversify support order and depth, while EBL/DDB spends each limited backtrack budget on distinct causes instead of repeated symptoms.
A randomised Graphplan shuffles goal or action choices, stops after a backtrack limit and restarts. It may solve instances that systematic extraction cannot reach within a day. But failure within a cap no longer proves that the current graph depth is barren; it reports only censored search.
One might expect luck to replace learning. The paper argues the opposite: accurate conflict sets keep a short run from spending its hundred backtracks revisiting the same dependency. Stored memos also transfer information across restarts, so diversification retains accumulated structural failure.
On Att-log-a with five restarts, fifty backtracks and a twenty-level limit, EBL/DDB solves 99 per cent of trials with average fourteen-step, eighty-two-action plans. Normal Graphplan solves two per cent, averaging nineteen steps and 103 actions. Increasing normal Graphplan’s limits raises solvability but also runtime and plan length.
The reported random experiments use one hundred trials for most configurations and report solvability, average plan length and runtime. These quantities are conditional in different ways: averages over successful runs should not obscure failures, and longer level limits can make discovery easier while yielding more suboptimal plans.
EBL/DDB thus improves both efficiency and use of bounded incompleteness. Under identical caps, it achieves more solutions and better plans. The result does not mean every learned randomised search is complete; completeness returns only when limits expand so all relevant depths and assignments are eventually explored.
Worked example 9 · identical cap, different use
Two solvers receive fifty backtracks. Chronological search may expend ten on variants of one irrelevant P₃ branch. DDB spends one explanation to skip P₃ and uses the remaining budget on genuinely different supports.
Causal probe 9 · erase memos at every restart
Random paths still diversify, but recurring dead ends must be relearned. Comparing retained and cleared stores isolates cross-restart EBL from within-run DDB.
The largest gains are real, conditional and sharply domain-dependent
Kambhampati’s tables support a strong result without supporting a universal one: explanations can transform Graphplan search, but benchmark structure and bookkeeping costs determine how much of the theoretical saving survives as elapsed computation.
The implementation ran in Franz Allegro Common Lisp 5 on a 500 MHz Pentium III under Linux, and the main tables report CPU minutes and backtracks over logistics, rocket, blocks-world, grid and mystery-style instances. Those conditions matter. Absolute timings are historical machine measurements; the durable evidence is the controlled comparison between configurations in the same implementation.
Full EBL/DDB reaches improvements of up to roughly three orders of magnitude on some extended rocket and logistics problems. The mechanism is visible in the supporting statistics: learned memos become much shorter than full goal sets, are matched repeatedly, and direct the search past assignments absent from the conflict. The result is not merely a constant-factor implementation trick.
Blocks-world supplies the limiting case. Its subgoals interact densely, so the responsible conflict can be nearly as large as the complete goal set. Learning cannot manufacture independence that the domain lacks. Ordinary memoisation already captures much of the true coupling, leaving smaller differences between baseline and explanatory search.
Ablations are essential. DDB without stored memo checking sometimes provides large immediate savings, but full EBL/DDB wins substantially on several tasks because the generalised failures recur. Conversely, dynamic ordering and forward checking can reduce backtracks while taking more CPU time. Their extra scans and conflict bookkeeping have to be paid on every node.
Censored cells must be read carefully. A timeout establishes that one configuration exceeded the stated bound; it does not reveal its eventual runtime. Speedup claims against such cells are lower bounds only when the faster run completed under the same task and measurement rules. Randomised tables add sampling variation and condition plan averages on solved trials.
| Claim | Best evidence | Necessary qualification |
|---|---|---|
| EBL/DDB can be transformative | Up to about 1,000× reported on selected benchmarks | Not uniform; blocks-world gains are modest |
| Generality predicts reuse | Rocket-ext-b memo reuse about 101 versus 3.2 | Reuse ratio must be read beside runtime |
| Short explanations matter | Rocket-ext-a average memo length 8.5 versus 24 | Length is diagnostic, not a sufficient cause alone |
| Extra consistency helps search | DVO and checking often reduce backtracks | CPU time can worsen because inference is not free |
Worked example 10 · a thousand-fold result without a universal promise
If a rocket instance repeatedly embeds the same eight-goal contradiction inside many twenty-four-goal contexts, EBL pays for that cause once. A tightly coupled blocks-world problem may offer no comparable small core. Both outcomes follow the same algorithm.
Causal probe 10 · report only backtracks
Forward checking then looks unambiguously better even when its scans dominate runtime. Adding CPU time, memo length and match frequency separates smaller search trees from faster planners and connects performance to a plausible mechanism.
Find a support assignment: or the smallest goal set that forbids one
This miniature solver makes the paper’s central logic inspectable. It enumerates support actions, rejects mutex pairs, extracts a subset-minimal unsatisfiable goal set, and identifies the latest earlier member to which dependency-directed backtracking would return.
The laboratory deliberately computes a subset-minimal memo by exhaustive enumeration, rather than reproducing every procedural detail of Graphplan’s conflict-set construction. This gives an exact oracle for three tiny cases. In a large planner, EBL derives an explanation incrementally because enumerating all goal subsets would defeat the purpose.
Solvable fork. Two action pairs are mutex, but cross-pair supports remain compatible. A valid assignment is shown and there is no failure memo. This guards against treating any mutex edge as global impossibility.
Irrelevant middle goal. P₄’s first value conflicts with P₂’s only support and its second conflicts with P₁’s. P₃ participates in neither rejection. The learned memo is {P₁,P₂,P₄}; under forward order DDB jumps from P₄ to P₂ and skips P₃.
Three-way contradiction. X must equal Y, Y must equal Z and X must differ from Z. Every pair of goals has a compatible assignment, while the triple has none. The smallest memo therefore contains all three goals, demonstrating a conflict invisible to proposition-level pairwise consistency.
The “rotate” control changes assignment order without changing constraints. The logical memo stays fixed, while the DDB target changes with recency. This distinguishes declarative learning: what combination is impossible: from procedural control: which implicated choice should be reconsidered next.
Worked example 11 · P₃ is present but causally silent
Select “Irrelevant middle goal” and forward order. Both P₄ supports fail, yet neither failure refers to P₃. The exact memo test proves {P₁,P₂,P₄} is unsatisfiable and that deleting any member makes it satisfiable; the jump test identifies P₂ as the latest earlier cause.
Causal probe 11 · reverse the goal order
The same set remains impossible because constraints have not changed. What changes is the second-latest member of that set, hence the dependency-directed jump target. Explanation and scheduling are related but not identical.
Preserve level semantics, ablations and the boundary of the claim
A faithful reproduction needs more than a modern planner bearing the same feature names. It must align the graph, the memo language, the search epoch and the measurement contract closely enough that a difference has an interpretable cause.
First fix the classical planning semantics: grounded actions, no uncertainty, alternating proposition and action layers, persistence actions, and the same definitions of inconsistent effects, interference, competing needs and inconsistent support. A change in preprocessing or grounding can alter the graph before EBL is ever invoked.
Index every memo by proposition level. Test a memo by subset containment against the active goal set at that level. For explanatory search, record a goal-variable conflict set, accumulate the prior assignments responsible for eliminating each candidate support, and regress predecessor failure through the actions that activated it. Static domain absence and static mutex facts are reasons for rejection, not higher-level decisions to blame.
Compare at least four configurations: chronological whole-set memoisation, DDB without persistent memo checking, full EBL/DDB, and EBL/DDB plus the candidate enhancement. Keep value order, graph construction and stopping rules fixed within an ablation. Report wall or CPU time, backtracks, memos generated, failures detected by memos and average memo length.
For restart studies, publish seeds, number of trials, backtrack and depth caps, solved fraction, and whether learned memos persist across restarts. Report plan length and action count conditional on success, explicitly naming the denominator. A configuration that solves two trials is not directly comparable on mean plan quality with one solving ninety-nine.
Modern hardware will not reproduce 2000-era minutes, and a modern language can move the overhead boundary. The stronger target is qualitative and relational: small recurrent explanations should raise memo reuse; DDB should skip irrelevant goals; extra propagation should reduce nodes but help elapsed time only when its marginal saving exceeds its cost.
| Review question | Primary-source reconstruction | Residual boundary |
|---|---|---|
| Is the formal object identified? | Levelled propositions are variables; support actions are values; mutex and activity supply constraints. | The HTML omits a full planner and grounding front end. |
| Is the causal mechanism exposed? | Conflict accumulation, regression, memo subset matching and DDB are traced separately. | The laboratory uses an exhaustive oracle, not the paper’s full incremental implementation. |
| Are empirical claims calibrated? | Hardware, language, metrics, ablations, timeouts and random-trial denominators are named. | Historical benchmark files and executable source were not rerun here. |
| Are later techniques kept distinct? | Sticky values, folding, DVO, forward checking and restarts are treated as separate add-ons. | Names shared with modern solvers need not imply identical implementations. |
Worked example 12 · an ablation that answers one question
Run baseline and EBL/DDB with identical graphs and support order, then disable memo lookup while retaining DDB. Baseline versus DDB-only estimates smarter retreat; DDB-only versus full EBL/DDB estimates persistent reuse. Changing the heuristic simultaneously would confound both comparisons.
Causal probe 12 · move to a modern SAT planner
Performance may improve dramatically, but the result no longer isolates Kambhampati’s Graphplan mechanism. The scientifically useful extension holds the benchmark semantics constant and asks whether explanation size and reuse predict improvement across both encodings.
What survived adversarial reading
Review one: formal and causal integrity. Every operational claim was traced to the dynamic-CSP mapping or to the primary search procedure. The review separated proposition mutex from value-level action mutex, whole-set memoisation from explanation-based learning, and a learned no-good from the jump decision it informs. The laboratory was checked against exhaustive assignment and subset enumeration, so a displayed solution, memo or jump can be independently falsified.
The main formal danger was calling the returned set “minimum” when the paper’s procedural conflict analysis establishes a relevant no-good but need not solve a globally minimum-cardinality explanation problem. The companion therefore calls the laboratory output subset-minimal and explicitly marks it as an oracle abstraction. It does not attribute exhaustive subset search to the original planner.
Review two: historical and empirical fidelity. Dates, venue, pagination, machine, implementation language, reported magnitudes and named enhancements were checked against the 34-page JAIR paper. Numerical examples are labelled as reported observations, not fresh measurements. Timeouts and randomised success rates retain their denominators and do not become invented exact speedups.
The principal evidential danger was allowing a dramatic “up to 1,000×” result to stand for all domains. The review retained the blocks-world counter-pattern, distinguished backtrack reductions from CPU improvements, and described memo reuse as a mechanism indicator rather than proof by itself. No later Graphplan, SAT-planning or CSP result is silently credited to the 2000 article.
Review verdict
Pass 1: formal reconstruction: passed after narrowing “minimal explanation” to “subset-minimal laboratory oracle” and clarifying that Graphplan’s expansion provides partial directed consistency. Pass 2: evidence and interpretation: passed after restoring hardware context, ablation logic, timeout caution, random-trial denominators and domain dependence.
Twelve cards for durable recall
From flat failure records to search that understands dependency
Paper 0086 turns the planning graph from a specialised algorithmic object into a meeting point for planning, constraint satisfaction and explanation-based learning.
Blum and Furst’s Graphplan supplied a compact reachability structure and backwards extraction with memoised goal-set failures. Kambhampati shows that extraction is naturally a dynamic CSP: decisions do not merely narrow existing domains; they activate new variables in predecessor layers. This makes classical CSP advances available, but only after their assumptions are translated carefully.
The companion’s central contribution is epistemic as much as algorithmic. A failure record can name the whole situation in which failure was observed, or it can name the decisions that caused it. Only the second kind explains what must change. That distinction unifies smaller memos and non-chronological retreat.
Later planning systems increasingly encode search into SAT, use learned clauses, exploit heuristic estimates or organise hierarchical and temporal constraints. The representations differ, but the recurring question is recognisable: how much of a failed branch can be generalised, and how cheaply can that information redirect future search?
Canon 0087 moves into HTN temporal planning and asks how non-temporal heuristics can guide search in a richer temporal formalism. The transition is instructive. Here the challenge is learning from constraint failure inside a planning graph; next it is importing useful guidance across a representational mismatch.
A search failure is most valuable when it identifies an intervention
Whole-set memoisation says, “do not return to this scene.” Explanation-based learning says, “these are the relations that made the scene impossible.” Dependency-directed backtracking adds, “this is the newest decision that can alter those relations.”
This three-part progression: record, explain, intervene: is broader than Graphplan. A record can prevent exact repetition. An explanation travels across irrelevant context. An intervention turns the explanation into control. The quality of the system depends not on maximal detail, but on an abstraction precise enough to be sound and small enough to recur.
The dynamic-CSP view prevents a common simplification. Planning is not just static assignment with another vocabulary. Choosing an action changes which predecessor propositions require support. Search therefore manages an evolving boundary of obligation, and a useful explanation must cross that boundary by regression.
The experiments also discipline enthusiasm for stronger inference. Every additional consistency check competes with the search it hopes to remove. The right question is never merely whether a technique prunes. It is whether the distribution of future conflicts lets the technique recover its own cost.
Kambhampati’s lasting lesson is thus methodological: inspect the anatomy of failure, preserve the smallest defensible cause, and let the cause: not the accident of traversal order: decide where computation should resume.
Primary source, companion scope and verification contract
This companion reconstructs Subbarao Kambhampati’s “Planning Graph as a (Dynamic) CSP: Exploiting EBL, DDB and other CSP Search Techniques in Graphplan,” published in Journal of Artificial Intelligence Research 12 (2000), pages 1–34. It focuses on the formal mapping, conflict analysis, memo regression, dependency-directed backtracking and the empirical logic of the reported enhancements. The diagrams are original explanatory figures, not reproductions. The executable laboratory uses synthetic micro-instances to test the logic exactly; it does not claim to reproduce the historical implementation’s runtime.
Verification contract. The page contains five orientation claims, ten accessible animated SVG figures, twelve worked examples, twelve causal probes, twelve memory cards, two distinct reviews and three executable exact tests. Motion respects reduced-motion preferences; text and controls remain usable at desktop, tablet and mobile widths.
Primary and contextual sources
- Kambhampati, S. (2000). “Planning Graph as a (Dynamic) CSP: Exploiting EBL, DDB and other CSP Search Techniques in Graphplan.” Journal of Artificial Intelligence Research, 12, 1–34. doi:10.1613/jair.655.
- Blum, A. L., & Furst, M. L. (1997). “Fast Planning Through Planning Graph Analysis.” Artificial Intelligence, 90, 281–300.
- Ginsberg, M. L. (1993). “Dynamic Backtracking.” Journal of Artificial Intelligence Research, 1, 25–46.
- Prosser, P. (1993). “Hybrid Algorithms for the Constraint Satisfaction Problem.” Computational Intelligence, 9(3), 268–299.
- Bayardo, R. J., Jr., & Schrag, R. C. (1997). “Using CSP Look-Back Techniques to Solve Real-World SAT Instances.” Proceedings of AAAI-97.
- Kautz, H., & Selman, B. (1999). “Unifying SAT-based and Graph-based Planning.” Proceedings of IJCAI-99.
- Long, D., & Fox, M. (1999). “Efficient Implementation of the Plan Graph in STAN.” Journal of Artificial Intelligence Research, 10, 87–115.