Veracity: declarative multicore programming with commutativity