ADPfusion: Efficient, high-level dynamic programming