reduced abstraction