Issue220

Title Make translator stricter and improve error output
Priority meta Status chatting
Superseder Nosy List Claudia, augusto, clemens, gabi, haz, jendrik, malte
Assigned To Keywords translator
Optional summary
Issues reported by others that fall under this:

issue1029
issue1030

Created on 2011-03-02.18:34:33 by malte, last changed by Claudia.

Summary
Issues reported by others that fall under this:

issue1029
issue1030
Files
File name Uploaded Type Edit Remove
domain.pddl malte, 2011-12-11.19:18:44 application/octet-stream
probPR2TEST.pddl malte, 2011-12-11.19:18:56 application/octet-stream
Messages
msg11812 (view) Author: Claudia Date: 2025-02-21.17:15:30
During the last sprint we addressed the issues that Clemens summarized and those that were still open after merging Patrick's pull request (from issue1030) in
https://github.com/aibasel/downward/pull/247 and issue1177 and issue1178.

- Conditions are now allowed to be empty.
- We check more thoroughly if predicates and terms that are used are defined 
  somewhere.
- We print a warning if a predicate is defined in the predicates-section that 
  uses the same name as a type (even if the predicate is not unary). We do not
  raise an error here because the PDDL definition of McDermott et al. (TR
  1998) treats types just as unary predicates and, as far as I remember from
  our discussion about this, because some benchmarks rely on this.
- Checking if the arity is correct now also happens for problem files and not 
  only for domain files.
- "number" cannot be defined as a (new) type in the types section because it is 
  reserved as a special type.
- The keyword "either" is allowed only in the predicates section because the 
  storage domain uses it. It is not supported though.
- We check for duplicate action names.
- The end of a domain file is now better handled. Before, everything except 
  "metric" coming after the goal was ignored. Now nothing except the metric
  section is allowed after the goal.
- An empty list before a type declaration raises a warning (e. g. writing "- 
  sometype" instead of "someobject - sometype"). This should probably be
  considered malformed PDDL but the woodworking domain contains some problem
  files where this happens. Raising a warning instead of an error is a
  compromise such that this domain can still be parsed but the user also gets a
  notification.

Salomé ran some experiments after these changes and posted the following on Discord:

https://ai.dmi.unibas.ch/_experiments/ai/downward/issue220/data/experiments-v5-eval/experiments-v5-issue220-base-issue220-v5-compare.html#summary

The sum of all parsing now goes up 11 seconds from 170s to 181s. Note that this is only a small part of the overall translator; the overall translator time sum is roughly 16500s.

A relative scatterplot shows that on bigger problems, parsing is up to 10% slower now:

https://ai.dmi.unibas.ch/_visualizer/?c=eJyNUDtuwzAMvYqhuZacFF1yju4GHbMOAVsSKMqfBLl7qAaB204d9b58uhn0woSpHSmJOVWmopQyHo9N3UHCWhh8GkGwDn7cqp2dP_5w5q0yA4ccu63k9GEC8gVkVA3NqKhwRkVWEC3tshTMvGICt0ITthE4kR-KdU10LZpD0zT63P7r2377IoeILGXmF43f5otITCfngGw_kc2edK49X1yLq2o1z0tS1vVh8Qtw717LXQ8C7oeqfAXOMLq9xgqwXa_P9TGwfG6x1L4rMKOeGXw54mCbIjnnJGFqJ_LtQj4pc7vvMAwD41BmPpn7A5NWlxA%3D



Looking at the issues mentioned in this one, issue813 and maybe also issue215 seem to be handled now. Should we resolve them?
msg11530 (view) Author: clemens Date: 2024-01-18.18:01:24
At some point in the process of issue1030 I went through the issue tracker to find more issues related to the translator error reporting. We decided it makes sense to collect them all in one place and discussed that this might be a good place for that. By doing so, I'm also changing this issue to have priority meta, so this now serves to have an overview about all the related issues in one place from now on. So here's a summary of what I've found:

Issues that are already dealt with after merging issue1030:
- too many parentheses (issue215)
- use undefined predicate name (issue215)
- first token in domain is not "define" (issue1029)
- empty conditions (issue1030)
- undeclared predicates (issue215 and issue220)
- "either" disallowed (issue220 and issue297)
- predicates with wrong arity (issu294)

Next, here is a list of things mentioned in other issues that are not yet addressed:
- disallow predicates with the same name as object types (issue171 and issue293)
- disallow duplicate action names (issue215 and issue430)
- use of object name instead of variable (issue220)
- "numeric" should be a reserved term and in particular not allowed for object types (issue220)
- complain about undefined objects (issue813)
- complain about using variables undeclared in parameters (no issue)

There's also issue472 that is related to this one, but I think it is sufficiently independent to not be considered part of this meta issue.
msg11528 (view) Author: malte Date: 2024-01-18.15:25:37
When we merged issue1030, we left many open pull request comments on the table. It would be nice to address them eventually. See

    https://github.com/aibasel/downward/pull/155

for more details. Make sure to display the changes for the file where the diff is too large to be shown by default to see everything. The whole list includes comments by Victor, Salomé, Florian, Clemens and me (and possibly others).
msg10421 (view) Author: malte Date: 2021-08-30.19:52:48
Added reference to issue1029 to summary.
msg8868 (view) Author: malte Date: 2019-06-10.15:40:54
Error reporting should also mention more about the context in which the error
occurs, such as a line number and perhaps a few lines of context in the PDDL
file. See message by David Epstein on Fast Downward list 09.06.2019 10:08 (CEST).
msg1986 (view) Author: malte Date: 2011-12-11.19:18:44
I'm attaching another example where our error reporting should be improved:


...
Completing instantiation...
Traceback (most recent call last):
  File "./translate/translate.py", line 578, in <module>
    sas_task = pddl_to_sas(task)
  File "./translate/translate.py", line 441, in pddl_to_sas
    reachable_action_params) = instantiate.explore(task)
  File "/home/abdon/downward/src/translate/instantiate.py", line 77, in explore
    return instantiate(task, model)
  File "/home/abdon/downward/src/translate/instantiate.py", line 57, in instantiate
    fluent_facts, type_to_objects)
  File "/home/abdon/downward/src/translate/pddl/actions.py", line 137, in
instantiate
    objects_by_type, effects)
  File "/home/abdon/downward/src/translate/pddl/effects.py", line 129, in
instantiate
    self._instantiate(var_mapping, init_facts, fluent_facts, result)
  File "/home/abdon/downward/src/translate/pddl/effects.py", line 137, in
_instantiate
    self.literal.instantiate(var_mapping, init_facts, fluent_facts, effects)
  File "/home/abdon/downward/src/translate/pddl/conditions.py", line 300, in
instantiate
    raise Impossible()
pddl.conditions.Impossible


The cause of this is apparently that some condition is written as "(open ?door)"
instead of the correct "(open ?d)".
msg1953 (view) Author: malte Date: 2011-11-15.21:17:15
> As another example where better error reporting would be useful, see issue297. I
> think the underlying problem there is that the input uses the "either"
> construct, which we do not support.

Actually no, there is another problem. Still, we should complain about "either"
if we don't support it.
msg1952 (view) Author: malte Date: 2011-11-15.21:12:04
As another example where better error reporting would be useful, see issue297. I
think the underlying problem there is that the input uses the "either"
construct, which we do not support.
msg1882 (view) Author: malte Date: 2011-11-07.18:58:16
> Will open a separate issue for this.

issue293
msg1880 (view) Author: malte Date: 2011-11-07.18:51:32
> It also allows using types as predicates (which is correct according to the
> PDDL 1 specification), but does not check if this clashes with actual
> predicates, as is e.g. the case in the Schedule-ADL domain (not in our
> repository -- we renamed the type "temperature" to "temperature-type" to
> avoid the name clash). In case of such clashes, we typically get a very
> uninformative error message about a tuple index being out of range.

I just got another error report about this behaviour. Will open a separate issue
for this.
msg1249 (view) Author: malte Date: 2011-03-02.18:34:33
The translator accepts quite a few things that are invalid PDDL. Test cases
include the domains mentioned in issue218 before the issue was fixed.

In particular, the translator accepts:

 * predicates that are not declared
 * an object type named "number", which should be reserved for actual
   numeric quantities

It also allows using types as predicates (which is correct according to the PDDL
1 specification), but does not check if this clashes with actual predicates, as
is e.g. the case in the Schedule-ADL domain (not in our repository -- we renamed
the type "temperature" to "temperature-type" to avoid the name clash). In case
of such clashes, we typically get a very uninformative error message about a
tuple index being out of range.
History
Date User Action Args
2025-02-21 17:15:30Claudiasetnosy: + Claudia
messages: + msg11812
2024-01-18 18:01:24clemenssetpriority: wish -> meta
nosy: + clemens
messages: + msg11530
2024-01-18 15:25:37maltesetmessages: + msg11528
2024-01-18 15:19:13maltesetsummary: Issues reported by others that fall under this: issue1029 -> Issues reported by others that fall under this: issue1029 issue1030
2021-08-30 19:52:48maltesetmessages: + msg10421
summary: Issues reported by others that fall under this: issue1029
2021-07-08 14:55:16hazsetnosy: + haz
2020-07-03 10:43:03augustosetnosy: + augusto
2019-06-10 15:40:54maltesetmessages: + msg8868
2014-10-04 19:58:34maltesetkeyword: + translator
2011-12-11 19:18:56maltesetfiles: + probPR2TEST.pddl
2011-12-11 19:18:44maltesetfiles: + domain.pddl
messages: + msg1986
2011-11-15 21:17:15maltesetmessages: + msg1953
2011-11-15 21:12:04maltesetmessages: + msg1952
2011-11-07 18:58:16maltesetmessages: + msg1882
2011-11-07 18:51:32maltesetmessages: + msg1880
2011-03-02 18:34:33maltecreate