translate.py in the svn versions 2819 and a the recent one (tested by malte)
produce redundant effects for the airport-adl domain.
Example: airport-adl:p01-airport1-p1.pddl
Translator output:
...
takeoff airplane_cfbeg seg_rwe_0_50 south
PRE: var1 = at-segment(airplane_cfbeg, seg_rwe_0_50)
PRE: var3 = facing(airplane_cfbeg, south)
EFF: -> var1 := airborne(airplane_cfbeg, seg_rwe_0_50)
EFF: occupied(seg_rwe_0_50) -> var2 := <none of those>
EFF: blocked(seg_rw_0_400, airplane_cfbeg) -> var4 := not-blocked(seg_rw_0_400,
airplane_cfbeg)
EFF: blocked(seg_pp_0_60, airplane_cfbeg) -> var5 := not-blocked(seg_pp_0_60,
airplane_cfbeg)
EFF: blocked(seg_rww_0_50, airplane_cfbeg) -> var7 := not-blocked(seg_rww_0_50,
airplane_cfbeg)
EFF: blocked(seg_rwtw1_0_10, airplane_cfbeg) -> var8 :=
not-blocked(seg_rwtw1_0_10, airplane_cfbeg)
EFF: blocked(seg_tww4_0_50, airplane_cfbeg) -> var9 :=
not-blocked(seg_tww4_0_50, airplane_cfbeg)
EFF: blocked(seg_twe2_0_50, airplane_cfbeg) -> var10 :=
not-blocked(seg_twe2_0_50, airplane_cfbeg)
EFF: blocked(seg_ppdoor_0_40, airplane_cfbeg) -> var11 :=
not-blocked(seg_ppdoor_0_40, airplane_cfbeg)
EFF: blocked(seg_tww3_0_50, airplane_cfbeg) -> var12 :=
not-blocked(seg_tww3_0_50, airplane_cfbeg)
EFF: blocked(seg_tww1_0_200, airplane_cfbeg) -> var14 :=
not-blocked(seg_tww1_0_200, airplane_cfbeg)
EFF: blocked(seg_twe1_0_200, airplane_cfbeg) -> var15 :=
not-blocked(seg_twe1_0_200, airplane_cfbeg)
EFF: blocked(seg_twe4_0_50, airplane_cfbeg) -> var16 :=
not-blocked(seg_twe4_0_50, airplane_cfbeg)
EFF: blocked(seg_tww2_0_50, airplane_cfbeg) -> var17 :=
not-blocked(seg_tww2_0_50, airplane_cfbeg)
EFF: blocked(seg_twe3_0_50, airplane_cfbeg) -> var19 :=
not-blocked(seg_twe3_0_50, airplane_cfbeg)
EFF: blocked(seg_rwe_0_50, airplane_cfbeg) -> var20 :=
not-blocked(seg_rwe_0_50, airplane_cfbeg)
EFF: blocked(seg_rwe_0_50, airplane_cfbeg) -> var20 :=
not-blocked(seg_rwe_0_50, airplane_cfbeg)
...
The last effect is unneeded. It is produced because of the form of the operator
in the airport-adl domain.pddl file:
(:action takeoff
:parameters (?a - airplane ?s - segment ?d - direction)
:precondition (and
(at-segment ?a ?s)
(facing ?a ?d)
(is-start-runway ?s ?d)
)
:effect (and (not (blocked ?s ?a))
(not (occupied ?s))
(not (at-segment ?a ?s))
(airborne ?a ?s)
(forall (?s1 - segment) (when (blocked ?s1 ?a)
(not (blocked ?s1 ?a))
)
)
)
)
One segment is unblocked by an unconditional effect AND a conditional quantified
effect.
The output is semantically correct, but the redundant effect should nonetheless
be omitted.
|