build method

  1. @override
Z3_ast build(
  1. Context c
)
override

Implementation

@override
Z3_ast build(Context c) {
  final a = c._createAST(arg0);
  final b = c._createAST(arg1);
  switch (kind) {
    case BinaryOpKind.eq:
      return c._z3.mk_eq(a, b);
    case BinaryOpKind.implies:
      return c._z3.mk_implies(a, b);
    case BinaryOpKind.xor:
      return c._z3.mk_xor(a, b);
    case BinaryOpKind.div:
      return c._z3.mk_div(a, b);
    case BinaryOpKind.mod:
      return c._z3.mk_mod(a, b);
    case BinaryOpKind.rem:
      return c._z3.mk_rem(a, b);
    case BinaryOpKind.pow:
      return c._z3.mk_power(a, b);
    case BinaryOpKind.lt:
      return c._z3.mk_lt(a, b);
    case BinaryOpKind.le:
      return c._z3.mk_le(a, b);
    case BinaryOpKind.gt:
      return c._z3.mk_gt(a, b);
    case BinaryOpKind.ge:
      return c._z3.mk_ge(a, b);
    case BinaryOpKind.bvAnd:
      return c._z3.mk_bvand(a, b);
    case BinaryOpKind.bvOr:
      return c._z3.mk_bvor(a, b);
    case BinaryOpKind.bvXor:
      return c._z3.mk_bvxor(a, b);
    case BinaryOpKind.bvNand:
      return c._z3.mk_bvnand(a, b);
    case BinaryOpKind.bvNor:
      return c._z3.mk_bvnor(a, b);
    case BinaryOpKind.bvXnor:
      return c._z3.mk_bvxnor(a, b);
    case BinaryOpKind.bvAdd:
      return c._z3.mk_bvadd(a, b);
    case BinaryOpKind.bvSub:
      return c._z3.mk_bvsub(a, b);
    case BinaryOpKind.bvMul:
      return c._z3.mk_bvmul(a, b);
    case BinaryOpKind.bvUdiv:
      return c._z3.mk_bvudiv(a, b);
    case BinaryOpKind.bvSdiv:
      return c._z3.mk_bvsdiv(a, b);
    case BinaryOpKind.bvUrem:
      return c._z3.mk_bvurem(a, b);
    case BinaryOpKind.bvSrem:
      return c._z3.mk_bvsrem(a, b);
    case BinaryOpKind.bvSmod:
      return c._z3.mk_bvsmod(a, b);
    case BinaryOpKind.bvUlt:
      return c._z3.mk_bvult(a, b);
    case BinaryOpKind.bvSlt:
      return c._z3.mk_bvslt(a, b);
    case BinaryOpKind.bvUle:
      return c._z3.mk_bvule(a, b);
    case BinaryOpKind.bvSle:
      return c._z3.mk_bvsle(a, b);
    case BinaryOpKind.bvUge:
      return c._z3.mk_bvuge(a, b);
    case BinaryOpKind.bvSge:
      return c._z3.mk_bvsge(a, b);
    case BinaryOpKind.bvUgt:
      return c._z3.mk_bvugt(a, b);
    case BinaryOpKind.bvSgt:
      return c._z3.mk_bvsgt(a, b);
    case BinaryOpKind.bvConcat:
      return c._z3.mk_concat(a, b);
    case BinaryOpKind.bvShl:
      return c._z3.mk_bvshl(a, b);
    case BinaryOpKind.bvLshr:
      return c._z3.mk_bvlshr(a, b);
    case BinaryOpKind.bvAshr:
      return c._z3.mk_bvashr(a, b);
    case BinaryOpKind.bvRotl:
      return c._z3.mk_ext_rotate_left(a, b);
    case BinaryOpKind.bvRotr:
      return c._z3.mk_ext_rotate_right(a, b);
    case BinaryOpKind.bvSMulNoUnderflow:
      return c._z3.mk_bvmul_no_underflow(a, b);
    case BinaryOpKind.bvUMulNoOverflow:
      return c._z3.mk_bvmul_no_overflow(a, b, false);
    case BinaryOpKind.bvSMulNoOverflow:
      return c._z3.mk_bvmul_no_overflow(a, b, true);
    case BinaryOpKind.setDifference:
      return c._z3.mk_set_difference(a, b);
    case BinaryOpKind.setSubset:
      return c._z3.mk_set_subset(a, b);
    case BinaryOpKind.seqPrefix:
      return c._z3.mk_seq_prefix(a, b);
    case BinaryOpKind.seqSuffix:
      return c._z3.mk_seq_suffix(a, b);
    case BinaryOpKind.seqContains:
      return c._z3.mk_seq_contains(a, b);
    case BinaryOpKind.strLt:
      return c._z3.mk_str_lt(a, b);
    case BinaryOpKind.strLe:
      return c._z3.mk_str_le(a, b);
    case BinaryOpKind.seqAt:
      return c._z3.mk_seq_at(a, b);
    case BinaryOpKind.seqNth:
      return c._z3.mk_seq_nth(a, b);
    case BinaryOpKind.seqLastIndex:
      return c._z3.mk_seq_last_index(a, b);
    case BinaryOpKind.seqInRe:
      return c._z3.mk_seq_in_re(a, b);
    case BinaryOpKind.reRange:
      return c._z3.mk_re_range(a, b);
    case BinaryOpKind.reDiff:
      return c._z3.mk_re_diff(a, b);
    case BinaryOpKind.charLe:
      return c._z3.mk_char_le(a, b);
    case BinaryOpKind.fpaSqrt:
      return c._z3.mk_fpa_sqrt(a, b);
    case BinaryOpKind.fpaRem:
      return c._z3.mk_fpa_rem(a, b);
    case BinaryOpKind.fpaMin:
      return c._z3.mk_fpa_min(a, b);
    case BinaryOpKind.fpaMax:
      return c._z3.mk_fpa_max(a, b);
    case BinaryOpKind.fpaLeq:
      return c._z3.mk_fpa_leq(a, b);
    case BinaryOpKind.fpaLt:
      return c._z3.mk_fpa_lt(a, b);
    case BinaryOpKind.fpaGeq:
      return c._z3.mk_fpa_geq(a, b);
    case BinaryOpKind.fpaGt:
      return c._z3.mk_fpa_gt(a, b);
    case BinaryOpKind.fpaEq:
      return c._z3.mk_fpa_eq(a, b);
  }
}