The Effect of Tabling

What has been said so far about Flora’s operational semantics actually only strictly applies to so-called procedural goals. In general, Flora goals are not procedural, and we must consider an additional feature of the reasoning system – tabling.

In short, tabling means caching of previously computed inference results. When Flora tries to prove a goal, before it looks for unifying facts and rule heads, it also checks its “table” to see if the goal has already been proved before. If so, it does not need to do anything further. This can introduce some surprises when debugging rules. For example, console printouts in a rule body (using fmt_write or writeln) may not occur, because Flora did not need to execute the rule body! See also Section Non-tabled Predicates, and consult the Flora manual for more on tabling.