explain assume-unchanged trick