directed graph abstraction