Search(s) { priority_queue p p.push(s) while not p.empty { n=p.pop if n is goal { return n } succ=expand(n) for each s' in succ { p.push(s) } } return failure }