Programs that manipulate dynamic heap objects are difficult to analyze due to issues like aliasing. Lazy initialization algorithm enables the classical symbolic execution to handle such programs. Despite its successes, there are two unresolved issues: (1) inefficiency; (2) lack of formal study. For the inefficiency issue, we have proposed two improved algorithms that give significant analysis time reduction over the original lazy initialization algorithm. In this article, we formalize the lazy initialization algorithm and the improved algorithms as operational semantics of a core subset of the Java Virtual Machine (JVM) instructions, and prove that all algorithms are relatively sound and complete with respect to the JVM concrete semantics. ...
Java programs are deployed in a bytecode format that is executed by a Java virtual machine (JVM). J...
Program analysis has a long history in computer science. Even when only considering the important as...
Symbolic execution is a popular program analysis technique that allows seeking for bugs by reasoning...
Programs that manipulate dynamic heap objects are difficult to analyze due to issues like aliasing. ...
Lazy initialization enables symbolic execution for programs with heap-allocated inputs. In this arti...
Symbolic execution is a well established method for test input generation. Despite of having achieve...
Lazy Initialization (LI) allows symbolic execution to effectively deal with heap-allocated data stru...
Current techniques for validating and verifying program changes often consider the entire program, e...
Abstract. Symbolic execution is a flexible and powerful, but computa-tionally expensive technique to...
textThe last few years have seen a resurgence of interest in the use of symbolic execution--program ...
In this paper, we provide a formal explanation of symbolic execution in terms of a symbolic transiti...
In this paper, we provide a formal definition of symbolic execution in terms of a symbolic transitio...
Symbolic execution is a flexible and powerful, but computationally expensive technique to detect dyn...
Call-by-need evaluation, also known as lazy evaluation, provides two key benefits: compositional pro...
Compilation time analysis of programs is usually incomplete. One of the basic methods for static de...
Java programs are deployed in a bytecode format that is executed by a Java virtual machine (JVM). J...
Program analysis has a long history in computer science. Even when only considering the important as...
Symbolic execution is a popular program analysis technique that allows seeking for bugs by reasoning...
Programs that manipulate dynamic heap objects are difficult to analyze due to issues like aliasing. ...
Lazy initialization enables symbolic execution for programs with heap-allocated inputs. In this arti...
Symbolic execution is a well established method for test input generation. Despite of having achieve...
Lazy Initialization (LI) allows symbolic execution to effectively deal with heap-allocated data stru...
Current techniques for validating and verifying program changes often consider the entire program, e...
Abstract. Symbolic execution is a flexible and powerful, but computa-tionally expensive technique to...
textThe last few years have seen a resurgence of interest in the use of symbolic execution--program ...
In this paper, we provide a formal explanation of symbolic execution in terms of a symbolic transiti...
In this paper, we provide a formal definition of symbolic execution in terms of a symbolic transitio...
Symbolic execution is a flexible and powerful, but computationally expensive technique to detect dyn...
Call-by-need evaluation, also known as lazy evaluation, provides two key benefits: compositional pro...
Compilation time analysis of programs is usually incomplete. One of the basic methods for static de...
Java programs are deployed in a bytecode format that is executed by a Java virtual machine (JVM). J...
Program analysis has a long history in computer science. Even when only considering the important as...
Symbolic execution is a popular program analysis technique that allows seeking for bugs by reasoning...