Florian Zuleger

Learn More
Due to indirect branch instructions, analyses on executables commonly suffer from the problem that a complete control flow graph of the program is not available. Data flow analysis has been proposed before to statically determine branch targets in many cases, yet a generic strategy without assumptions on compiler idioms or debug information is lacking. We(More)
We define the <i>reachability-bound problem</i> to be the problem of finding a symbolic worst-case bound on the number of times a given control location inside a procedure is visited in terms of the inputs to that procedure. This has applications in bounding resources consumed by a program such as time, memory, network-traffic, power, as well as estimating(More)
Automatic methods for computing bounds on the resource consumption of programs are an active area of research. In [SZV14] we present the first scalable bound analysis for imperative programs that achieves amortized complexity analysis. Our techniques can be applied for deriving upper bounds on how often loops can be iterated as well as on how often a single(More)
The size-change abstraction (SCA) is an important program abstraction for termination analysis, which has been successfully imple-ion for termination analysis, which has been successfully implemented in many tools for functional and logic programs. In this paper, we demonstrate that SCA is also a highly effective abstract domain for the bound analysis of(More)
Providing feedback on programming assignments manually is a tedious, error prone, and time-consuming task. In this paper, we motivate and address the problem of generating feedback on performance aspects in introductory programming assignments. We studied a large number of functionally correct student solutions to introductory programming assignments and(More)
Difference constraints have been used for termination analysis in the literature, where they denote relational inequalities of the form $$x' \le y + c$$ x ′ ≤ y + c , and describe that the value of x in the current state is at most the value of y in the previous state plus some constant $$c \in \mathbb {Z}$$ c ∈ Z . We believe that difference constraints(More)
The verification community has studied dynamic data structures primarily in a bottom-up way by analyzing pointers and the shapes induced by them. Recent work in fields such as separation logic has made significant progress in extracting shapes from program source code. Many real world programs however manipulate complex data whose structure and content is(More)
Difference constraints have been used for termination analysis in the literature, where they denote relational inequalities of the form x′ ≤ y + c, and describe that the value of x in the current state is at most the value of y in the previous state plus some constant c ∈ Z. In this paper, we argue that the complexity of imperative programs typically arises(More)