Dynamic separation logic