On 20.04.21 23:01, Nishanth Kumar wrote:
> I'm confused about this because after reading the FD JAIR paper as well
> as this paper about FD's translator,
> <
https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.16.5522&rep=rep1&type=pdf>
> my understanding was that the translation + grounding process detects
> constant and one-way predicates, and also merges or deletes some
> predicates by inferring invariants/mutex-constraints. However, the
> 'ball-color' predicate is not constant or one-way, nor are different
> ball-color values unreachable in either the forward or backward
> direction (i.e: the 'paint-ball' action can be used to modify the ball
> color from the initial state, and doing so does not result in a
> dead-end). If my understanding here is correct (please do point out if
> it's wrong), what mechanism does FD's translator use to delete these
> state-variables and actions? In particular, if there is an existing
> paper/line of papers explaining how such variables and actions can be
> pruned during grounding, I'd very much appreciate some pointers and
> links to these!
Dear Nishanth,
Gabi already explained what Fast Downward does there (and how to disable
it). Let me add why it is not described in the translator paper and give
you some literature pointers.
At the time the two papers you mention were published, Fast Downward
consisted of three separate parts:
1. translation
2. preprocessing (called "knowledge compilation" in the Fast Downward
JAIR paper)
3. search
The state variable pruning technique that you see here was originally
part of the preprocessing component and is described in Section 5.2.2 of
the Fast Downward paper, specifically this sentence: "Any state
variables which are not found to be goal ancestors are eliminated from
the planning task and causal graph, and associated operators and axioms
are removed".
In the years since these papers were written, all functionalities of the
preprocessor have been moved into the other two components, and today
Fast Downward only has the translation and search components. This
pruning technique ended up in the translation component.
I should also point out that better (= more powerful and fine-grained,
though also more time-consuming) pruning techniques of this kind exist.
A commonly used one is described in this paper:
Vidal Alcázar, Álvaro Torralba.
A Reminder about the Importance of Computing and Exploiting
Invariants in Planning.
Proc. ICAPS 2015, pp. 2-6.
Álvaro Torralba's home page has a link to an implementation. See
"h2-based preprocessor" on
https://people.cs.aau.dk/~alto/software.html.
Best regards,
Malte