Modular Verification of OO Programs with Interfaces