You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
975 B

  1. from z3 import *
  2. solver = Solver()
  3. bvX = BitVec("bvX", 8)
  4. solver.add(bvX + 1 < bvX - 1)
  5. print(f"Current 'state' of the solver:\n {solver.sexpr()}")
  6. input("Hit Enter.")
  7. result = solver.check()
  8. print(result)
  9. if result == sat:
  10. print("=== Model ===")
  11. for var in solver.model().decls():
  12. print(f"M: {var}: int:{solver.model()[bvX].as_long()}, binary:{bin(solver.model()[bvX].as_long())} \t | type: {type(solver.model()[var])}")
  13. print("=============")
  14. solver.add(BVAddNoOverflow(bvX, 1, True))
  15. solver.add(BVSubNoUnderflow(bvX, 1, True))
  16. input("Hit Enter.")
  17. print(f"Current 'state' of the solver:\n {solver.sexpr()}")
  18. input("Hit Enter.")
  19. result = solver.check()
  20. print(result)
  21. if result == sat:
  22. print("=== Model ===")
  23. for var in solver.model().decls():
  24. print(f"M: {var}: int:{solver.model()[bvX].as_long()}, binary:{bin(solver.model()[bvX].as_long())} \t | type: {type(solver.model()[var])}")
  25. print("=============")