Semantic Hierarchy Refactoring by Abstract Interpretation