Generating Abstraction Hierarchies presents a completely automated approach to generating abstractions for problem solving. The abstractions are generated using a tractable, domain-independent algorithm whose only inputs are the definition of a problem space and the problem to be solved and whose output is an abstraction hierarchy that is tailored to the particular problem. The algorithm generates abstraction hierarchies that satisfy the `ordered monotonicity' property, which guarantees that the structure of an abstract solution is not changed in the process of refining it. An abstraction hierarchy with this property allows a problem to be decomposed such that the solution in an abstract space can be held invariant while the remaining parts of a problem are solved. The algorithm for generating abstractions is implemented in a system called ALPINE, which generates abstractions for a hierarchical version of the PRODIGY problem solver. Generating Abstraction Hierarchies formally defines this hierarchical problem solving method, shows that under certain assumptions this method can reduce the size of a search space from exponential to linear in the solution size, and describes the implementation of this method in PRODIGY. The abstractions generated by ALPINE are tested in multiple domains on large problem sets and are shown to produce shorter solutions with significantly less search than problem solving without using abstraction. Generating Abstraction Hierarchies will be of interest to researchers in machine learning, planning and problem reformation.