def execute(self, agent, x, y, env): newEnv = Environment() prereqs = [("holding", agent, x)] deletions = prereqs additions = [("empty", agent), ("on", x, y), ("clear", x)] if not y == "ground": prereqs.append(("clear", y)) for prereq in prereqs: if not prereq in env.relations: return None newRelations = env.relations[:] for deletion in deletions: newRelations.remove(deletion) for addition in additions: newRelations.append(addition) newEnv.relations = newRelations; newEnv.steps = env.steps[:] newEnv.steps.append(("putDown", agent, x, y)) return newEnv
def findNextEnv(prereqs, additions, deletions, relations): for prereq in prereqs: if not prereq in relations: return None newRelations = relations[:] for deletion in deletions: newRelations.remove(deletion) for addition in additions: newRelations.append(addition) newEnv = Environment() newEnv.relations = newRelations return newEnv