start_state([location(chute),dusty(o1),dusty(o2),trashy(o1),vacuumable(o2)]). goalstate([location(o1)]). piece_eval(dusty(o1),6). piece_eval(dusty(o2),6). piece_eval(vacuumable(o1),10). piece_eval(vacuumable(o2),10). piece_eval(trashy(o1),8). piece_eval(trashy(o2),8). piece_eval(holding(o1),1). piece_eval(holding(o2),1). piece_cost(vacuum(o1),10). piece_cost(vacuum(o2),10). piece_cost(dust(o1),6). piece_cost(dust(o2),6). piece_cost(pickup(o1),3). piece_cost(pickup(o2),3). piece_cost(dispose(o1),5). piece_cost(dispose(o2),5). piece_cost(putdown(o1),1). piece_cost(putdown(o2),1). piece_cost(go(o1,o2),3). piece_cost(go(o2,o1),3). piece_cost(go(o1,chute),8). piece_cost(go(chute,o1),8). piece_cost(go(o2,chute),8). piece_cost(go(chute,o2),8). recommended([not(dusty(o1))],dust(o1)). recommended([not(dusty(o2))],dust(o2)). recommended([not(vacuumable(o1))],vacuum(o1)). recommended([not(vacuumable(o2))],vacuum(o2)). recommended([not(trashy(o1))],dispose(o1)). recommended([not(trashy(o2))],dispose(o2)). recommended([holding(o1)],pickup(o1)). recommended([holding(o2)],pickup(o2)). recommended([not(holding(o1))],putdown(o1)). recommended([not(holding(o2))],putdown(o2)). recommended([location(o1)],go(o2,o1)). recommended([location(o1)],go(chute,o1)). recommended([location(o2)],go(o1,o2)). recommended([location(o2)],go(chute,o2)). precondition(dust(o1),[location(o1),dusty(o1),not(holding(o1)),not(holding(o2))]). precondition(dust(o2),[location(o2),dusty(o2),not(holding(o1)),not(holding(o2))]). precondition(vacuum(o1),[location(o1),vacuumable(o1),not(dusty(o1)), not(holding(o1)),not(holding(o2))]). precondition(vacuum(o2),[location(o2),vacuumable(o2),not(dusty(o2)), not(holding(o1)),not(holding(o2))]). precondition(dispose(o1),[location(chute),trashy(o1),holding(o1), not(dusty(o1)),not(vacuumable(o1))]). precondition(dispose(o2),[location(chute),trashy(o2),holding(o2), not(dusty(o2)),not(vacuumable(o2))]). precondition(pickup(o1),[location(o1),trashy(o1),not(holding(o1))]). precondition(pickup(o2),[location(o2),trashy(o2),not(holding(o2))]). precondition(putdown(o1),[location(o1),holding(o1),not(trashy(o1))]). precondition(putdown(o2),[location(o2),holding(o2),not(trashy(o2))]). precondition(go(o1,o2),[location(o1)]). precondition(go(o2,o1),[location(o2)]). precondition(go(o1,chute),[location(o1)]). precondition(go(o2,chute),[location(o2)]). precondition(go(chute,o1),[location(chute)]). precondition(go(chute,o2),[location(chute)]). deletepostcondition(dust(o1),[dusty(o1)]). deletepostcondition(dust(o2),[dusty(o2)]). deletepostcondition(vacuum(o1),[vacuumable(o1)]). deletepostcondition(vacuum(o2),[vacuumable(o2)]). deletepostcondition(dispose(o1),[trashy(o1)]). deletepostcondition(dispose(o2),[trashy(o2)]). deletepostcondition(dispose(o1),[trashy(o1)]). deletepostcondition(dispose(o2),[trashy(o2)]). deletepostcondition(pickup(o1),[]). deletepostcondition(pickup(o2),[]). deletepostcondition(putdown(o1),[holding(o1)]). deletepostcondition(putdown(o2),[holding(o2)]). deletepostcondition(go(o1,o2),[location(o1)]). deletepostcondition(go(o1,chute),[location(o1)]). deletepostcondition(go(o2,o1),[location(o2)]). deletepostcondition(go(o2,chute),[location(o2)]). deletepostcondition(go(chute,o1),[location(chute)]). deletepostcondition(go(chute,o2),[location(chute)]). addpostcondition(dust(o1),[vacuumable(o1)]). addpostcondition(dust(o2),[vacuumable(o2)]). addpostcondition(vacuum(o1),[trashy(o1)]). addpostcondition(vacuum(o2),[trashy(o2)]). addpostcondition(dispose(o1),[]). addpostcondition(dispose(o2),[]). addpostcondition(pickup(o1),[holding(o1)]). addpostcondition(pickup(o2),[holding(o2)]). addpostcondition(putdown(o1),[]). addpostcondition(putdown(o2),[]). addpostcondition(go(o2,o1),[location(o1)]). addpostcondition(go(chute,o1),[location(o1)]). addpostcondition(go(o1,o2),[location(o2)]). addpostcondition(go(chute,o2),[location(o2)]). addpostcondition(go(o1,chute),[location(chute)]). addpostcondition(go(o2,chute),[location(chute)]).