All hope abandon ye who enter here
SMT solvers provide decision procedures for first-order logical formulas of from different theories (integer numbers, bit vectors, arrays..) Given a set of constraints, the solver will generate a satisfying assignment
Note on exploration: In order to hit interesting paths quicker when analysing large systems, JDart needs to be able to limit exploration to certain paths. JDart provides configuration options for specifying multiple pre-determined vectors of input values from which the exploration starts It also allows the user to specify assumptions on input parameters as symbolic constarints After those are specified the exploration will be bound by the provided constarints. Finally, JDart can be configured to simply skip exploration of certain parts of a program.
For execution the JPF engine is used that suppotrts native peers, symbolic objects and Concolic Bytecode Semantics. Using it has several benefits such as ease of JDart extension by integration of existing JPF plugins/extenstions. JPF provides easy access to all objects on the heap and stack ans well as to other elements of the JVM (stack frames and classloaders) However, using a full-blown custon JVM (which JPF is) has significant impact on performance.. Thats why the JPF integration in JDart is very loose (possibly swapped to a more light-weight implementation in the future)
The devil is not as black as he is painted
Date the paper