diff --git a/mercurial/revset.py b/mercurial/revset.py
index a979078bd7887ecea94e3c2c0c678bbfa4c585ec_bWVyY3VyaWFsL3JldnNldC5weQ==..ed57358398af44184835e133e9530e6952f51be0_bWVyY3VyaWFsL3JldnNldC5weQ== 100644
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -2149,5 +2149,15 @@
         return (x <= self._start and x > self._end) or (x >= self._start and x<
                 self._end)
 
+    def __and__(self, x):
+        return lazyset(self, lambda r: r in x)
+
+    def __sub__(self, x):
+        return lazyset(self, lambda r: r not in x)
+
+    def __add__(self, x):
+        l = baseset(self)
+        return l + baseset(x)
+
 # tell hggettext to extract docstrings from these functions:
 i18nfunctions = symbols.values()