pub open spec fn set_op<K, V, P: Protocol<K, V>>( s: ISet<(P, IMap<K, V>)>, t: P, ) -> ISet<(P, IMap<K, V>)>
{ s.map(|q: (P, IMap<K, V>)| (P::op(q.0, t), q.1)) }