Skip to content

Latest commit

 

History

History
37 lines (31 loc) · 961 Bytes

README.md

File metadata and controls

37 lines (31 loc) · 961 Bytes

pysmtlib

A python layer to interface with several SMTlIBv2 enabled SMT solvers

Features

  • Serializable.
  • You can to save, replicate and send the solver state over the network
  • Python native integer operations. Operation on native python types are translates to smtlib transparently
  • Multiple solvers supported (Z3, YICES, CVC4)

#Example

        import pickle
        s = Solver()
        #make array of 32->8 bits
        array = s.mkArray(32)
        #make free 32bit bitvector 
        key = s.mkBitVec(32)

        #assert that the array is 'A' at key position
        array[key] = 'A'
        #lets restrict key to be greater than 1000
        s.add(key.ugt(1000))
        s = pickle.loads(pickle.dumps(s))
        self.assertEqual(s.check(), 'sat')
        self.checkLeak(s)

Tests

pysmtlib $ python -m unittest discover
........
----------------------------------------------------------------------
Ran 8 tests in 0.619s

OK