  One of the challenges of task planning is to find out what causes the
planning failure and how to handle the failure intelligently. This paper shows
how to achieve this. The idea is inspired by the connected graph: each verticle
represents a set of compatible \textit{states}, and each edge represents an
\textit{action}. For any given initial states and goals, we construct virtual
actions to ensure that we always get a plan via task planning. This paper shows
how to introduce virtual action to extend action models to make the graph to be
connected: i) explicitly defines static predicate (type, permanent properties,
etc) or dynamic predicate (state); ii) constructs a full virtual action or a
semi-virtual action for each state; iii) finds the cause of the planning
failure through a progressive planning approach. The implementation was
evaluated in three typical scenarios.
