post, pre and invariant done