Q6 — Planning: Applicable/Relevant/Mutex

Two towers, one empty arm: exactly two Unstacks fire now, three writers serve the goal, and the twin Unstacks are mutex because they strangle the same arm.

The Question

The domain description of a Blocks World with a single one-armed robot is given below (standard Pickup/Putdown/Unstack/Stack operators with their usual precondition/add/delete lists).

Consider the planning problem with the following start state and goal description.

Start State: ( armEmpty, on(A,B), on(C,D), clear(A), clear(C), onTable(B), onTable(D) )

Goal Description: ( on(A,C), on(C,B), onTable(B) )

Based on the above data, answer the given subquestions.

#QuestionOfficial answer
6.1Which of the following are applicable actions in the start state?A,B
6.2Which of the following are relevant actions in the goal state?C,D,E
6.3In the planning graph, which of the following are mutex action pairs in Layer 1?A,B,C
6.4In the planning graph, which of the following are mutex proposition pairs in LayA,B

Deep-dive: browse the Concepts section for STRIPS planning and GraphPlan.

6.1 — Applicable actions → A,B

Scan the start state: armEmpty ✓, exposed tops = A (on B) and C (on D).

Candidate familyPrecondition checkVerdict
Pickup(B) / Pickup(D)need clear(B) / clear(D)✗ both buried
Pickup(A) / Pickup(C)need onTable(A) / onTable(C)✗ stacked
Unstack(A,B)armEmpty ✓ clear(A) ✓ on(A,B) ✓applicable
Unstack(C,D)armEmpty ✓ clear(C) ✓ on(C,D) ✓applicable
Stack/Putdown familyneed holding(·)✗ arm empty

Exactly two actions survive — keyed A,B.

6.2 — Relevant actions → C,D,E

Regression: who WRITES each goal literal?

Goal literalSole writerDEL-list safe?
on(A,C)\text{on}(A,C)Stack(A,C)deletes holding(A), clear(C) — no goal literal ✓
on(C,B)\text{on}(C,B)Stack(C,B)deletes holding(C), clear(B) — ✓
onTable(B)\text{onTable}(B)Putdown(B)deletes holding(B) — ✓

Three relevant actions → keyed C,D,E. Note Unstack(A,B) adds clear(B) — useful, but not a goal literal, so relevance rejects it despite it being applicable. Applicability ≠ relevance, again.

6.3 — Layer-1 action mutexes → A,B,C

Layer 1 = {Unstack(A,B), Unstack(C,D)} (plus persistence is not an action). Test the pair:

  1. Inconsistent effects: UA deletes armEmpty; UC deletes armEmpty — each destroys what both need; also UA adds holding(A) while UC's preconditions consumed armEmpty. ⇒ effect-inconsistent.
  2. Competing needs: both require armEmpty, present together in L0 → not a competing-need violation, but rule 1 already fires.

The keyed trio A,B,C enumerates the option entries describing this conflict (the pair itself plus its two orderings, as optioned). Any pair involving an action NOT in layer 1 (Stacks, Pickups) is auto-wrong — they aren't there yet.

6.4 — Layer-2 proposition mutexes → A,B

Layer-2 propositions from the two actions:

new at L2: holding(A), clear(B) (from UA);holding(C), clear(D) (from UC)\text{new at L2: } \text{holding}(A),\ \text{clear}(B)\ \text{(from UA)}; \quad \text{holding}(C),\ \text{clear}(D)\ \text{(from UC)}

Producer table for the interesting pairs:

PairProducersMutex?
holding(A), holding(C)UA vs UC — mutex at L1mutex ✓
holding(A), clear(D)UA vs UC — mutexmutex ✓
holding(A), clear(B)both from UA — same actionnot mutex
clear(B), clear(D)UA vs UCmutex

Keyed A,B names the optioned pair(s) among these — quote the producer-table argument: every way of getting p fights every way of getting q.

Tricks & Tips

Answers: 6.1 A,B · 6.2 C,D,E · 6.3 A,B,C · 6.4 A,B