aig-upf / fs-private

This is the private version of the FS planner repository
GNU General Public License v3.0
5 stars 1 forks source link

Full Support for Derived Predicates #51

Open gfrances opened 7 years ago

gfrances commented 7 years ago

The name says it all. We have support for externally-defined functions and predicates, the latter of which can be viewed as "block-box" derived predicates, but we should give full support to standard derived predicates as well.

miquelramirez commented 7 years ago

What else do we need here @gfrances? Derived functions? That would be nice.

Also, can we have an existentially quantified formula on the body of the derived predicates?

gfrances commented 7 years ago

Let's say that the support for axioms is pretty hackish now... maybe it'd be worth interfacing with clingo at some point to have on-the-fly computation of their truth value?

miquelramirez commented 7 years ago

Well, what I definitely see as a "hack" is Problem::ConsolidateAxioms and how we call it. As we have seen, we need to make sure that no data structures referring to formulas that will be rewritten (e.g. derived predicates in the goal) are built before we call it.

Other than that... what would we like exactly clingo for? As long as axiom bodies do not depend on other axioms heads, there's no need to stratify. Then, if there are dependencies between axioms, I see two types of LP turning up: the acyclic case, where basically we can pretty much reduce it to the "one shot" axioms case we support now, after computing a topological ordering over the axioms, and the cyclic case, which I see directly follows when one wants to determine complex properties like "reachability", or certain types of belief tracking.

Arguably, giving support to either of those cases would be a research project on its own.

More problematic - to my own selfish concerns I must admit :) - I see to be the (somewhat related) notion of events/reactions, where the effects (the head analogue) are state variables (or stuff than can be evaluated as a state variable). In that case, one does need necessarily to have a notion of "propagation until fixed point is reached" (or a "safety" count of propagations is met). This doesn't seem to me extremely complicated to implement, or warranting the integration with an off-the-shelf ASP solver (which seemingly have very poor support for numerics and other multi-valued kind of representations).