_neq3 = _dec != 0xaa _add0 = b.Add(_inc, _dec) _add1 = b.Add(128, _dec) _add2 = b.Add(_dec, 0xaa) _add3 = _dec + 0xaa _uaddo0 = b.Uaddo(_inc, _dec) _uaddo1 = b.Uaddo(128, _dec) _uaddo2 = b.Uaddo(_dec, 0xaa) _saddo0 = b.Saddo(_inc, _dec) _saddo1 = b.Saddo(128, _dec) _saddo2 = b.Saddo(_dec, 0xaa) _mul0 = b.Mul(_inc, _dec) _mul1 = b.Mul(128, _dec) _mul2 = b.Mul(_dec, 0xaa) _mul3 = _dec * 0xaa _umulo0 = b.Umulo(_inc, _dec) _umulo1 = b.Umulo(128, _dec) _umulo2 = b.Umulo(_dec, 0xaa) _smulo0 = b.Smulo(_inc, _dec) _smulo1 = b.Smulo(128, _dec) _smulo2 = b.Smulo(_dec, 0xaa) _ult0 = b.Ult(_inc, _dec) _ult1 = b.Ult(128, _dec) _ult2 = b.Ult(_dec, 0xaa)
zero = btor.Const(0, 8) hundred = btor.Const(100, 8) # 0 < x ult_x = btor.Ult(zero, x) btor.Assert(ult_x) # x <= 100 ulte_x = btor.Ulte(x, hundred) btor.Assert(ulte_x) # 0 < y ult_y = btor.Ult(zero, y) btor.Assert(ult_y) # y <= 100 ulte_y = btor.Ulte(y, hundred) btor.Assert(ulte_y) # x * y mul = btor.Mul(x, y) # x * y < 100 ult = btor.Ult(mul, hundred) btor.Assert(ult) umulo = btor.Umulo(x, y) numulo = btor.Not(umulo) # prevent overflow btor.Assert(numulo) res = btor.Sat() print("Expect: sat") print("Boolector: ", end='') if res == btor.SAT: print("sat") elif res == btor.UNSAT: print("unsat") else: