The translator seems to fail on this precondition subexpression:
(exists (?E - (either c_human c_exploit))
(controls_proc ?E ?P))
The same either expression works elsewhere, but fails in pddl_types.py; can't
compute a hash function for (either c_human c_exploit).
I will attach domain and problem file.
Note that it's not impossible to rewrite the either to two separate
existentials, so a bug, but not critical.
Backtrace:
Traceback (most recent call last):
File "/Users/rpg/src/fast-downward/src//translate/translate.py", line 570, in
<module>
task = pddl.open()
File "/Users/rpg/src/fast-downward/src/translate/pddl/pddl_file.py", line 47,
in open
return tasks.Task.parse(domain_pddl, task_pddl)
File "/Users/rpg/src/fast-downward/src/translate/pddl/tasks.py", line 40, in
parse
= parse_domain(domain_pddl)
File "/Users/rpg/src/fast-downward/src/translate/pddl/tasks.py", line 160, in
parse_domain
action = actions.Action.parse(entry)
File "/Users/rpg/src/fast-downward/src/translate/pddl/actions.py", line 38, in
parse
precondition = conditions.parse_condition(iterator.next())
File "/Users/rpg/src/fast-downward/src/translate/pddl/conditions.py", line 5,
in parse_condition
condition = parse_condition_aux(alist, False)
File "/Users/rpg/src/fast-downward/src/translate/pddl/conditions.py", line 37,
in parse_condition_aux
parts = [parse_condition_aux(part, negated) for part in args]
File "/Users/rpg/src/fast-downward/src/translate/pddl/conditions.py", line 46,
in parse_condition_aux
return ExistentialCondition(parameters, parts)
File "/Users/rpg/src/fast-downward/src/translate/pddl/conditions.py", line
209, in __init__
self.hash = hash((self.__class__, self.parameters, self.parts))
File "/Users/rpg/src/fast-downward/src/translate/pddl/pddl_types.py", line 38,
in __hash__
hashval = hash((self.name, self.type))
TypeError: unhashable type: 'list'
|