I thought this might be of interest, because it's a case where a 440 line domain file and
a 131-line problem file combine to yield a parsed output file that is over 14 million lines and 285 megabytes.
What's interesting is that this domain does not have conditional effects and that I ran the parser with the -k option.
The problem is in the following method for (achieve-goals) which checks that all goal facts (which are in the problem's initial state) have been achieved, and which involves both disjunction and quantification:
I thought this might be of interest, because it's a case where a 440 line domain file and a 131-line problem file combine to yield a parsed output file that is over 14 million lines and 285 megabytes. What's interesting is that this domain does not have conditional effects and that I ran the parser with the
-k
option.The problem is in the following method for
(achieve-goals)
which checks that all goal facts (which are in the problem's initial state) have been achieved, and which involves both disjunction and quantification:This method terminates a chain of recursive invocations of
(achieve-goals)
.If I delete this method (which makes the problem unsolvable), the parser output file is reduced to approximately 2700 lines.
There are only 10 facts of the
goal_
predicates in the initial state, and they are static, so this explosion is not necessary.Anyway, I thought this might be useful to you.