Leveraging Uniqueness For Modular Verification Of Heap-Manipulating Programs