Simplified PEL optimization and split-SF computation.
We treat SF of actions in the query as normal split literals except that they are only split when k = 0 (and thus only when needed). That's why they are added to the PEL. The computation of these SF's is now different: before this commit, all SF atoms for action sequences in the clause but not in context_z were added. That won't work well with nested queries because then context_z will also contain actions from the outer query, not just physically executed actions. So the new idea is to base the computation on context_sf, because this only contains SF results from physically executed actions. However, we don't want to add trivial SF literals to PEL, because splitting them won't help but increase complexity. So we just check if the setup already contains a singleton clause with the SF atom or its negation. This check also is a more elegant way to compute the initial PEL set, so we could drop the pel_optimize() function and just do the check in add_pel_of_clause(). That's shorter and should be even more efficient.
Loading
Please sign in to comment