Semantics-based Abstraction