planning with certainty partial order planner maintains partial order of action instances an action instance consists of name and an index we need action instances because the same action could be carried out at different times stripspop py -partial-order planner using strips representation from searchproblem import arcsearch_problem import random class action_instance(object)next_index def __init__(self,action,index=none)if index is noneindex action_instance next_index action_instance next_index + self action action self index index def __str__(self)return str(self action)+"#"+str(self index __repr__ __str__ __repr__ function is the same as the __str__ function node (as in the abstraction of search spacein partial-order planner consists ofactionsa set of action instances constraintsa set of ( pairswhere and are action instanceswhich represents that must come before in the partial order there are number of ways that this could be represented here we represent the set of pairs that are in transitive closure of the before relation this lets us quickly determine whether some before relation is consistent with the current constraints agendaa list of (sapairswhere is (varvalpair and is an action instance this means that variable var must have value val before can occur causal linksa set of ( ga tripleswhere and are action instances and is (varvalpair this holds when action makes true for action stripspop py -(continued class pop_node(object)""" (partialpartial-order plan this is node in the search space ""def __init__(selfactionsconstraintsagendacausal_links)""version june