def test_scalar_models(self): scalar_t = Types.new_scalar_type(10) sc1 = define_const('sc1', scalar_t) sc2 = define_const('sc2', scalar_t) sc3 = define_const('sc3', scalar_t) assert_formula('(/= sc1 sc2)', self.ctx) assert_formula('(/= sc1 sc3)', self.ctx) self.assertEqual(self.ctx.check_context(self.param), Status.SAT) mdl = Model.from_context(self.ctx, 1) val1 = mdl.get_scalar_value(sc1) val2 = mdl.get_scalar_value(sc2) val3 = mdl.get_scalar_value(sc3) self.assertEqual(val1, 9) self.assertEqual(val2, 8) self.assertEqual(val3, 8) self.assertEqual(Terms.is_scalar(sc1), True) sc1val = mdl.get_value_as_term(sc1) self.assertEqual(Terms.is_scalar(sc1val), True) self.assertEqual(mdl.get_value(sc1), sc1val)
def test_types(self): bool_t = Types.bool_type() int_t = Types.int_type() self.assertNotEqual(bool_t, int_t) real_t = Types.real_type() self.assertNotEqual(real_t, bool_t) self.assertNotEqual(real_t, int_t) bv_t = Types.bv_type(8) scal_t = Types.new_scalar_type(12) unint_t = Types.new_uninterpreted_type() tup1_t = Types.new_tuple_type([bool_t]) tup2_t = Types.new_tuple_type([int_t, real_t]) tup3_t = Types.new_tuple_type([bv_t, scal_t, unint_t]) tup4_t = Types.new_tuple_type([bool_t, tup1_t, tup2_t, tup3_t]) fun1_t = Types.new_function_type([int_t], bool_t) fun2_t = Types.new_function_type([real_t, bv_t], scal_t) fun3_t = Types.new_function_type([tup1_t, tup2_t, tup3_t], fun1_t) fun4_t = Types.new_function_type([bool_t, tup1_t, tup2_t, tup3_t], fun3_t) self.assertTrue(Types.is_bool(bool_t)) self.assertFalse(Types.is_bool(int_t)) self.assertTrue(Types.is_int(int_t)) self.assertTrue(Types.is_real(real_t)) self.assertTrue(Types.is_arithmetic(real_t)) self.assertTrue(Types.is_bitvector(bv_t)) self.assertTrue(Types.is_tuple(tup1_t)) self.assertTrue(Types.is_function(fun4_t)) self.assertTrue(Types.is_scalar(scal_t)) self.assertTrue(Types.is_uninterpreted(unint_t)) self.assertTrue(Types.is_subtype(int_t, real_t)) self.assertFalse(Types.is_subtype(real_t, int_t)) self.assertEqual(Types.bvtype_size(bv_t), 8) self.assertEqual(Types.scalar_type_card(scal_t), 12) self.assertEqual(Types.num_children(tup3_t), 3) self.assertEqual(Types.child(tup3_t, 1), scal_t) type_v = Types.children(tup4_t) self.assertEqual(len(type_v), 4) self.assertEqual(type_v[0], bool_t) self.assertEqual(type_v[1], tup1_t) self.assertEqual(type_v[2], tup2_t) self.assertEqual(type_v[3], tup3_t)