Currently the translator ensures that the effect conditions of all effects on
the same variable are mutually exclusive. However, this can significantly
increase the size of the operator, so a different way of treating conditional
effects could be helpful.
Gabi in issue146:
"My implementation "guards" negative conditional effects. Let for example V=v
be a SAS+ variable/value pair for a propositional atom A and let formula phi
denote the condition that any (original) add effect on V triggers. A
conditional delete effect on atom A with condition psi is then translated to an
effect "if psi and V=v and not phi then V=none-of-those". The potential problem
lies in the "not phi" part because it gets expanded in the "multiply out
conditions" code (cf. issue165)."
Malte in issue146:
"In the long term, it would be nice to have a closer look at various ways of
compiling these things, and maybe a simple way to do it would be to have a
convention similar to PDDL's "add effect wins over delete effects" to avoid
having to encode these "non-triggering" conditions. Or maybe we should simply go
with a semantics where effects are processed sequentially and make sure that the
ones that should "win" according to PDDL semantics are mentioned last." |