Reasoning about Interior Mutability in Rust using Library-Defined Capabilities | Synapse