RBL's Plan-Execute-Update cycle perfectly fits our concept with its three stages that we can adopt also for our SFL-based reasoning concept. As we will show in the next Section, we will consider our reasoning concept in the planning phase to generate reliable action sequences and update the spectrum in the update phase.
- Planning: Search for a plan π with the highest chance of success (lowest costs related to a plan's actions' weights).
- Execution: Execute a plan's rule sequence and track the rules' successfulness. If executing a rule R's associated action failed, (1) π's execution is terminated and (2) the R's repair routine is invoked leading to a coherent state.
- Update: Update the rules' execution history and re-calculate the rules' weights.
While we chose RBL for our implementation, we opted to keep our concept general and did not want it to be restricted to using RBL's custom domain-specific language. Consequently, we decided to implement the Planning Domain Definition Language (PDDL) \cite{Ghallab98} for our front-end, to show that our approach is available and applicable to all domains compatible with PDDL (and that it likewise can be implemented also in other frameworks).
PDDL was introduced in 1998 as a domain independent planning language compatible with many algorithms. The main components of PDDL are the domain description and the problem description \cite{Ghallab98}. In the first, we define a set of actions with preconditions and effects. These actions usually have parameters that are populated with predicates during planning. In the problem description we describe the initial state and the goal state - also using predicates. The planning algorithm's job is then to derive a plan (as an ordered list of actions and their corresponding parameter assignments) that when executed leads from the initial state to the goal state.