I don't think intersection_update is the correct thing here. If you use my idea from the mailing list to allow to unassume things, then it will unassume things permanently, but even if you don't, there's nothing to stop people from modifying `global_assumptions` from within the with block, which would then effectively remove it outside the with block as well, going against the idea of the context.  So this should probably be

```py
global_assumptions.clear()
global_assumptions.update(old_global_assumptions)
```