code: func (s *set) Intersect(other Set) Set {
  	o := other.(*set)
  	n, m := s.Len(), o.Len()
  	ss := s
  	so := o
  	if m < n {
  		ss = o
  		so = s
  		n = m
  	}
  
  	r := newset(n)
  	ss.Foreach(func(x *Term) {
  		if so.Contains(x) {
  			r.Add(x)
  		}
  	})
  	return r
  }
docs: // Intersect returns the set containing elements in both s and other.