+ex relational::map(map_function & f) const
+{
+ const ex &mapped_lh = f(lh);
+ const ex &mapped_rh = f(rh);
+
+ if (!are_ex_trivially_equal(lh, mapped_lh)
+ || !are_ex_trivially_equal(rh, mapped_rh))
+ return dynallocate<relational>(mapped_lh, mapped_rh, o);
+ else
+ return *this;
+}
+
+ex relational::subs(const exmap & m, unsigned options) const