bool theory_special_relations::relation::new_eq_eh(literal l, theory_var v1, theory_var v2) { ensure_var(v1); ensure_var(v2); literal_vector ls; ls.push_back(l); return m_graph.enable_edge(m_graph.add_edge(v1, v2, s_integer(0), ls)) && m_graph.enable_edge(m_graph.add_edge(v2, v1, s_integer(0), ls)); }
s_integer power(const s_integer & r, unsigned p) { unsigned mask = 1; s_integer result = s_integer(1); s_integer power = r; while (mask <= p) { if (mask & p) { result *= power; } power *= power; mask = mask << 1; } return result; }