是否可以在 PDDL 中进行类型比较?

Is it possible to have type comparison in PDDL?

例如,如果我这样声明类型:

:types
   bag
   light heavy - bag

也就是说有两种包,。是否可以在一个动作中检查 bag 类型的变量是否属于 light 类型,而无需 light 的实例 比较?

我知道可以进行这样的相等比较:

(when ( = ?light ?bag))

但这会检查两个变量是否具有相同的值,而不是相同的类型。

我尝试了 (when ( = light ?bag)),即使规划器没有抛出错误,它似乎也不起作用。

为了回应 Chaos 教授的评论,他们指出这是不可能的,我得出了一个解决方法,我们创建谓词 (is_light ?x - light) 并在操作中使用 (when (is_light ?lightobj) (dosomething))。初始化 light 对象时,问题文件中使用了谓词。