predicate abstraction for Java programs