= Solution
Ground $b,x$ as distinct blocks. For $\operatorname{MoveToTable}(b,x)$, take
$$
\begin{aligned}
\operatorname{Pre}&=\{\operatorname{Block}(b),\operatorname{Block}(x),\operatorname{On}(b,x),\operatorname{Clear}(b)\},\\
\operatorname{Add}&=\{\operatorname{On}(b,\tau),\operatorname{Clear}(x)\},\\
\operatorname{Del}&=\{\operatorname{On}(b,x)\}.
\end{aligned}
$$
Thus a clear block leaves its block support, makes that support clear, and joins the unlimited table. \b[$\operatorname{Clear}(b)$ persists, and table availability is never deleted.] Requiring $x$ to be a block excludes a redundant table-to-table action. The static <predicates> need not be stored as time-varying <planning fluents>.
Back to article page