satisfiability modulo theories