data abstraction and logic programming cse 452 5584950