Issue1184

Title Adding the option to keep noop operators
Priority feature Status chatting
Superseder Nosy List haz, jendrik, malte
Assigned To malte Keywords
Optional summary
This is akin to --keep-unimportant-variables, but for the operaters/actions.

We'd like the command line to have a translator option to --keep-noop-operators 
so that they 
aren't discarded. This touches on several places where an operator or action 
(depending on where 
in the process you are) is removed if the effects are empty. Default should be 
false, but this 
would help those of us using the FD translator for other paradigms (FOND, PPOS, 
PPDDL, etc).

Created on 2025-05-12.15:52:37 by haz, last changed by haz.

Summary
This is akin to --keep-unimportant-variables, but for the operaters/actions.

We'd like the command line to have a translator option to --keep-noop-operators 
so that they 
aren't discarded. This touches on several places where an operator or action 
(depending on where 
in the process you are) is removed if the effects are empty. Default should be 
false, but this 
would help those of us using the FD translator for other paradigms (FOND, PPOS, 
PPDDL, etc).
Files
File name Uploaded Type Edit Remove
domain.pddl haz, 2025-06-24.18:04:46 application/octet-stream
Messages
msg11850 (view) Author: haz Date: 2025-06-25.15:21:46
Thanks for having a look into it! I'd feel more comfortable having the full test 
to check for regressions with the code & corner cases, so no worries.
msg11849 (view) Author: malte Date: 2025-06-25.12:02:42
Thanks, looks good! I left one last polishing comment.

For me it looks ready to merge, but I would still like to run an experiment first, which is taking me a bit of time to set up because I haven't done it in a while and there have been some significant changes in our infrastructure. I hope I can finish the setup and queue the experiment later today.
msg11848 (view) Author: haz Date: 2025-06-24.18:04:46
Thanks! Changes make sense -- revisions are now all set. I'm attaching a slightly 
changed gripper domain (you can pair it with 
misc/tests/benchmarks/gripper/prob01.pddl) that has a noop operator for testing.
msg11847 (view) Author: malte Date: 2025-06-24.14:59:42
Hi Christian, thanks for the pull request and sorry for the slow reaction.
I'm now off the busy stretch and expect my next reaction should come much more quickly.

I'd like to request a change in the style of the code -- rather than passing the new option around a lot, access it from the options module where needed. That, plus one or two smaller things. See my review of the pull request for more details and some rationale. This should also make the pull request much smaller and touch fewer files.

Let me know if you are OK to make these changes. Otherwise I can also try to make them myself.

Can you attach or link one or two benchmarks that trigger the new changes, so that we can test this?

I don't think it's very important for this specific change, but as a matter of best practice I'd also like to run a larger before-after translator experiment before we merge. I'll see if I can set something up.
msg11846 (view) Author: malte Date: 2025-06-24.14:27:51
pull request: https://github.com/aibasel/downward/pull/263
History
Date User Action Args
2025-06-25 15:21:46hazsetmessages: + msg11850
2025-06-25 12:02:42maltesetmessages: + msg11849
2025-06-24 18:04:46hazsetfiles: + domain.pddl
messages: + msg11848
summary: This is akin to --keep-unimportant-variables, but for the operaters/actions. We'd like the command line to have a translator option to --keep-noop-operators so that they aren't discarded. This touches on several places where an operator or action (depending on where in the process you are) is removed if the effects are empty. Default should be false, but this would help those of us using the FD translator for other paradigms (FOND, PPOS, PPDDL, etc). -> This is akin to --keep-unimportant-variables, but for the operaters/actions. We'd like the command line to have a translator option to --keep-noop-operators so that they aren't discarded. This touches on several places where an operator or action (depending on where in the process you are) is removed if the effects are empty. Default should be false, but this would help those of us using the FD translator for other paradigms (FOND, PPOS, PPDDL, etc).
2025-06-24 14:59:42maltesetmessages: + msg11847
2025-06-24 14:27:51maltesetstatus: unread -> chatting
assignedto: malte
messages: + msg11846
2025-05-12 18:39:14maltesetnosy: + malte, haz, jendrik
2025-05-12 15:52:37hazcreate