toward updating predicate trees every time a function exits