up_SMT_engine.ProblemBuilder.ForAllProblemBuilder

Classes

ForAllProblemBuilder(actions, fluents, ...)

Subclass of BaseProblemBuilder, overriding build and __generate_parallelism_mutexes to implement ForAll parallelism

class up_SMT_engine.ProblemBuilder.ForAllProblemBuilder.ForAllProblemBuilder(actions, fluents, is_incremental, initial_values)[source]

Bases: BaseProblemBuilder

Subclass of BaseProblemBuilder, overriding build and __generate_parallelism_mutexes to implement ForAll parallelism

__generate_parallelism_mutexes(plan_len)

Generate mutexes for ForAll parallelism For every pair of actions if interference is found then add a mutex over those two actions

Args:

plan_len (int): Plan length

Returns:

Array of constraint clauses: Array of constraint clauses. If using incremental solving this only covers the penultimate timestep. Otherwise the array covers the first to penultimate timesteps

build(problem_instance, plan_len, goal_clause)[source]

Using clauses generated by actions and fluents build the problem in the z3 Solver

Args:

problem_instance (z3.Solver): The current solver to which clauses are added plan_len (int): The plan length goal_clause (Clause): The clause representing all goal conditions