def op_div(left, right): ''' :param left: :type left: :class:`~ExprArg` :param right: :type right: :class:`~ExprArg` :returns: :class:`~IntArg` Returns left / right. ''' assert isinstance(left, ExprArg) assert isinstance(right, ExprArg) lval = left.getInts() lval = [SMTLib.createIf(c, e, SMTLib.SMT_IntConst(0)) for (e, c) in lval] lval = SMTLib.createSum(lval) rval = right.getInts() rval = [SMTLib.createIf(c, e, SMTLib.SMT_IntConst(0)) for (e, c) in rval] rval = SMTLib.createSum(rval) return IntArg( SMTLib.SMT_Divide(lval, rval) if ( (not isinstance(lval, SMTLib.SMT_IntConst)) or ( not isinstance(rval, SMTLib.SMT_IntConst)) ) else SMTLib.SMT_IntDivide(lval, rval))