AI Search · Exam notes
Newer papers ask GraphPlan mid-flight: two proposition layers are given and you populate what is between them. Four sub-questions: is layer k the start? which actions enter layer k+1? which action pairs are mutex? why is a proposition pair non-mutex? One chain answers all: mutexes rule out the start state, pres plus pairwise mutexes admit actions, effects plus pres decide action mutexes, producers decide proposition mutexes.
| Layer | Contents |
|---|---|
| P0, P1, ... | Proposition layers. P0 is the start state and never has mutexes. Each next layer keeps old props (via no-ops) and adds action effects. |
| A1, A2, ... | Action layers. An action enters A(n+1) only if its pres are present in Pn AND pairwise non-mutex there. No-ops (persist P) are always in. |
| No-op | Pre P, add P, no deletes. Never mutex with another no-op. Numbered nop-1, nop-2, ... in layer order. |
| Mutex rule | Test (any one kills) |
|---|---|
| Actions: interference | del(a) hits pre(b), either way round |
| Actions: inconsistent effects | add(a) hits del(b), either way round |
| Actions: competing needs | a pre and a pre of b are mutex in Pn (includes sharing the one arm) |
| Props: mutex | EVERY producer pair (action or no-op) is mutex. One clean pair kills the mutex. |
Memory hooks from the theory sub-questions: actions need any of the conditions (all four listed options hold at once); propositions need every producer pair mutex, so non-mutex needs only one clean pair. Ordering outcomes: pre+del across two actions makes one ordering infeasible; add+del makes both feasible with different results.
| Theory sub-question | Verified key |
|---|---|
| Orderings: only one of (a then b) / (b then a) feasible | P in pre(a) and P in del-effects(b) |
| Orderings: both feasible with different outcomes | P in add-effects(a) and P in del-effects(b) |
| Actions a,b mutex in layer n | ALL FOUR hold at once: competing needs, pre plus del both ways, interference, inconsistent effects |
| Props P,Q mutex | EVERY producer pair mutex |
| Props P,Q non-mutex | AT LEAST ONE producer pair non-mutex |
3a. The layers as tables (solve from this, then check the walkthrough)
| Layer k (7 props) | Mutex pairs in k (4) |
|---|---|
| clear(A), on(A,B), armEmpty, clear(B), holding(A), on(B,C), onTable(C) | (on(A,B),holding(A)), (on(A,B),clear(B)), (armEmpty,clear(B)), (armEmpty,holding(A)) |
| No-op | Persists | Layer k+1 (8 props) |
|---|---|---|
| nop-1 .. nop-7 | clear(A), on(A,B), armEmpty, clear(B), holding(A), on(B,C), onTable(C) | all 7 persist, plus new onTable(A) (added by Putdown(A)) |
| Candidate | Grounded pre / add / del |
|---|---|
| Putdown(A) | pre: holding(A). add: armEmpty, onTable(A). del: holding(A). |
| Stack(A,B) | pre: holding(A), clear(B). add: armEmpty, on(A,B). del: holding(A), clear(B). |
| Unstack(A,B) | pre: armEmpty, clear(A), on(A,B). add: holding(A), clear(B). del: armEmpty, on(A,B). |
| Unstack(B,C) | pre: armEmpty, clear(B), on(B,C). add: holding(B), clear(C). del: armEmpty, on(B,C). |
Cover the walkthrough. Test each candidate against layer k, pair the survivors, then settle the producers of armEmpty and clear(B).
3b. Walkthrough: one verdict per step
Why this step
Tracker
3c. The four questions
GraphPlan mid-flight on Blocks World. Layers k and k+1 as above, both fully populated; layer-k mutexes as above. Action layer holds nop-1..nop-7 plus applicable domain actions.
3d. Answers first, then the working
Layer k cannot be the start state. Applicable: Putdown(A), Stack(A,B), Unstack(A,B). Mutex: all three pairs. armEmpty + clear(B) non-mutex because Putdown(A) and nop-4 are clean.
| Candidate | Pres in k? | Pre pairs mutex in k? | In? |
|---|---|---|---|
| Putdown(A) | holding(A) present | single pre: no pair | Yes |
| Stack(A,B) | holding(A), clear(B) present | (holding(A),clear(B)) not in mutex list | Yes |
| Unstack(A,B) | armEmpty, clear(A), on(A,B) present | none of the 3 pairs in the list | Yes |
| Unstack(B,C) | armEmpty, clear(B), on(B,C) present | (armEmpty,clear(B)) IS in the list | No |
Solve each with a pen before opening the answer. Each drill is self contained.
Layer k props: holding(A), clear(B), armEmpty, no mutexes. Q1: which of Putdown(A), Stack(A,B), Pickup(A) are applicable in k+1? Q2: is (Putdown(A),Stack(A,B)) mutex?
Why this step
Tracker
Q1: Putdown(A), Stack(A,B). Pickup(A) needs onTable(A), absent. With no mutexes in k, presence alone decides. Q2: yes, interference: Putdown deletes holding(A), which Stack needs.
Layer k props: holding(A), clear(B), mutex: (holding(A),clear(B)). Q1: is Stack(A,B) applicable in k+1? Is Putdown(A)? Q2: in k+1, is (onTable(A),clear(B)) mutex? Producers: onTable(A) only from Putdown(A); clear(B) only from its no-op.
Why this step
Tracker
Q1: Stack(A,B) is OUT: both pres present but mutex in k. Putdown(A) is IN (single pre, no pair to check). Q2: mutex, via competing needs: Putdown(A) needs holding(A), the no-op needs clear(B), and that pair is mutex in k. Lesson: pres can clash even when the actions never touch the same literal.