A* separated from predicate