Type-based Data Structure Verification