Structuring the synthesis of heap-manipulating programs | doi.page