Optimal methods for reasoning about actions and plans in multi-agent systems