Replies: 1 comment 1 reply
-
While I like to be mystical every chance I get, the solution to this one is no such thing. It's actually your first choice (the one you don't like). In PDDL, we assume that objects are distinct. You can't have two objects of the same name. If they need to be separate types, then you create a new type that inherits from both. So, in this case, just toss the type and compare based on object name. Sorry it isn't so mystical! |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Upon examining the changes you suggested, I realized I left out a couple test cases - one of which is the 'equality' predicate provided by tarski. For example, when you supply a precondition/effect in the form of
(= ?genre1 ?genre2)
in tarski, you could get the grounded=(jazz,rock)
.Now the issue is that (as far as I know) it is impossible to tell the types of the objects being compared during parsing, because equality is a 'default' predicate and can be used by any object. (For other user-provided predicates, I could determine the types of the objects easily because the predicate would always act on the same 'types' of objects - i.e.
on ?x ?y
checks if song y comes after song x and is obviously only applied to two objects of typesong
.) With equality though, I don't have that luxury.I figured it would be fine to just use a default
object
type for those objects, but the issue arises when those objects then need to be compared. When two CustomObjects are compared, the type of the objects as well as the name are checked for equality (block
andA
for example). The equality parsing issue results in the situation whereblock A
andobject A
do not register as equal, even thoughobject A
really is a block, there was just no way to tell.As far as I can tell, there's a few ways to tackle this:
Beta Was this translation helpful? Give feedback.
All reactions