Skip to content

Conversation

@grucla
Copy link
Contributor

@grucla grucla commented May 6, 2025

We addressed multiple points related to invalid PDDL input files (issue220) in
an earlier change. This change updates the Fast Downward website to reflect
those changes. (No code changes.)

- **empty conditions:** Like Fox and Long ("PDDL2.1: An Extension to PDDL for
Expressing Temporal Planning Domains" by Maria Fox and Derek Long, JAIR
20:61-124, 2003), Fast Downward allows empty conditions (i. e., preconditions
and goals).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would clarify here what you mean by "empty conditions". There are at least three ways to say "no preconditions" that I've seen:

  • no :precondition block at all
  • empty conjunction: :precondition (and)
  • list with no arguments: :precondition ()

I think we're talking about #3 here.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also "i.e." doesn't work here. Conditions are not just used in preconditions and goals. Other places where conditions occur are axiom bodies and effect conditions in conditional effects. The phrase "i.e." requires that you define what a condition is here rather than just give examples. Perhaps use "e.g.,". (BTW, for "i.e." and "e.g.", it's customary not to have a space in the middle.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Like you guessed, we indeed mean the third point. (Though the first one is also allowed and I think the second one as well.) Also, I agree that it should be "e.g." instead of "i.e.". I'll change this and give an example for an empty precondition for clarification.

is used in the `:predicates` section. For example, defining `(somepredicate ?x -
(either type1 type2))` is allowed (but ignored). Furthermore, type validity
is not checked for the `:predicates` section.
- **empty list before type specification:** While most (if not all) PDDL
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you mean by "if not all" here?
"If not all" means "most of them do, and maybe all of them do, but we don't know this for sure". Do you mean "but not all" instead? Perhaps there parenthetical part can be dropped here entirely.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We mean "most of them do, and maybe all of them do, but we don't know this for sure". I think without the part in parentheses people would wonder for which PDDL specifications this does not hold. How about changing "if not all" to "or maybe all"?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps write "While all PDDL specifications we know"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good to me, I just pushed the change.

is not checked for the `:predicates` section.
- **empty list before type specification:** While most (if not all) PDDL
specifications require at least one token before a type specification (e. g.
`(someobject1 someobject2 - sometype)`), Fast Downward only prints a warning,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should have no comma at the end of the line.

Malik Ghallab, Adele Howe, Craig Knoblock, Ashwin Ram, Manuela Veloso, Daniel
Weld, and David Wilkins, Yale Center for Computational Vision and Control,
Technical Report CVC TR-98-003/DCS TR-1165, 1998) a type is essentially just
a unary predicate. Thus, defining a new predicate with the same name as a
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of saying "is essentially just", I would say "can be used as".

## Notes on syntax checks

There exist multiple PDDL definitions and they differ in some aspects, this
section describes how Fast Downward handles such cases.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a run-on sentence. Should have a period instead of a comma.

These limitations are somewhat likely to be lifted in the future, but progress
is slow.

## Notes on syntax checks
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Syntax checks is very technical about implementation, I would rather use "syntax". But also I don't think all of these are about syntax. For example, using types as predicates is not really about syntax because types and predicates have the same syntax. From the section intro, this seems to be about ambiguities in PDDL, so perhaps something like "## PDDL ambiguities" or "## PDDL corner cases" or something like that.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree and will change it to "PDDL ambiguities".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants