Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Jaco Geldenhuys

dblp:g/JacoGeldenhuys · DBLP profile ↗
← Back
16ranked-venue papers
5as first author
1since 2021 · last 2025
0000-0002-5636-6656ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 11 · 3 first-author · 1 since 2021Theory of computation · 5 · 2 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
6 papers
Program analysis · 84% Empirical software engineering · 6% Program verification · 6%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Distributed systems · 100%

Topics — the 8 heaviest of 10, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis
symbolic execution
0.742015
BLISS: Improved Symbolic Execution by Bounded Lazy Initialization with SAT Support · IEEE Trans. Software Eng. 2015
Statistical symbolic execution with informed sampling · SIGSOFT FSE 2014
Green: reducing, reusing and recycling constraints in program analysis · SIGSOFT FSE 2012
Program analysis › constraint solving
satisfiability checking
0.212015
BLISS: Improved Symbolic Execution by Bounded Lazy Initialization with SAT Support · IEEE Trans. Software Eng. 2015
Program analysis › static analysis
probabilistic program analysis
0.212014
Statistical symbolic execution with informed sampling · SIGSOFT FSE 2014
Program analysis
constraint solving
0.112012
Green: reducing, reusing and recycling constraints in program analysis · SIGSOFT FSE 2012
Program analysis › symbolic execution
probabilistic symbolic execution
0.112012
Probabilistic symbolic execution · ISSTA 2012
Empirical software engineering › developer studies
developer behavior
0.112010
Impendulo: debugging the programmer · ASE 2010
Software testing › test generation
test suite generation
0.012012
Probabilistic symbolic execution · ISSTA 2012
Program analysis › static analysis
static analysis tool evaluation
0.012010
Impendulo: debugging the programmer · ASE 2010

Methods — techniques the papers use, named apart from their topics

shadow testing · 1.7differential testing · 1.7dafny · 1.7field bound refinement · 0.2SAT solving · 0.2monte carlo sampling · 0.2hypothesis testing · 0.2bayesian estimation · 0.2symbolic execution · 0.1automated decision procedures · 0.1
YearPublicationVenuePosition
2025 Formally Verified Cloud-Scale Authorization
abstract
All critical systems must evolve to meet the needs of a growing and diversifying user base. But supporting that evolution is challenging at increasing scale: Maintainers must find a way to ensure that each change does only what is intended, and will not inadvertently change behavior for existing users. This paper presents how we addressed this challenge for the Amazon Web Services (AWS) authorization engine, invoked 1 billion times per second, by using formal verification. Over a period of four years, we built a new authorization engine, one that behaves functionally the same as its predecessor, using the verification-aware programming language Dafny. We can now confidently deploy enhancements and optimizations while maintaining the highest assurance of both correctness and backward compatibility. We deployed the new engine in 2024 without incident and customers immediately enjoyed a threefold performance improvement. The methodology we followed to build this new engine was not an off-the-shelf application of an existing verification tool, and this paper presents several key insights: 1) Rather than prove correct the existing engine, written in Java, we found it more effective to write a new engine in Dafny, a language built for verification from the ground up, and then compile the result to Java. 2) To ensure performance, debuggability, and to gain trust from stakeholders, we needed to generate readable, idiomatic Java code, essentially a transliteration of the source Dafny. 3) To ensure that the specification matches the system's actual behavior, we performed extensive differential and shadow testing throughout the development process, ultimately comparing against 1015production samples prior to deployment. Our approach demonstrates how formal verification can be effectively applied to evolve critical legacy software at scale.
Aleks Chakarov, Jaco Geldenhuys, Matthew Heck, Michael Hicks 0001, Sam Huang, Georges-Axel Jaloyan, Anjali Joshi, K. Rustan M. Leino, Mikael Mayer, Sean McLaughlin, Akhilesh Mritunjai, Clément Pit-Claudel, Sorawee Porncharoenwase, Florian Rabe 0001, Marianna Rapoport, Giles Reger, Cody Roux, Neha Rungta, Robin Salkeld, Matthias Schlaipfer, Daniel Schoepe, Johanna Schwartzentruber, Serdar Tasiran, Aaron Tomb, Emina Torlak, Jean-Baptiste Tristan, Lucas G. Wagner, Michael W. Whalen, Remy Willems, Tongtong Xiang, Taejoon Byun, Joshua M. Cohen, Ruijie Fang, Junyoung Jang 0001, Jakob Rath, Syeda Hira Taqdees, Dominik Wagner 0001, Yongwei Yuan
ICSE2
2020 COASTAL: Combining Concolic and Fuzzing for Java (Competition Contribution)
abstract
Abstract COASTAL is a program analysis tool for Java programs. It combines concolic execution and fuzz testing in a framework with built-in concurrency, allowing the two approaches to cooperate naturally.
Willem Visser, Jaco Geldenhuys
TACAS (2)2
2015 BLISS: Improved Symbolic Execution by Bounded Lazy Initialization with SAT Support
abstract
Lazy Initialization (LI) allows symbolic execution to effectively deal with heap-allocated data structures, thanks to a significant reduction in spurious and redundant symbolic structures. Bounded lazy initialization (BLI) improves on LI by taking advantage of precomputed relational bounds on the interpretation of class fields in order to reduce the number of spurious structures even further. In this paper we present bounded lazy initialization with SAT support (BLISS), a novel technique that refines the search for valid structures during the symbolic execution process. BLISS builds upon BLI, extending it with field bound refinement and satisfiability checks. Field bounds are refined while a symbolic structure is concretized, avoiding cases that, due to the concrete part of the heap and the field bounds, can be deemed redundant. Satisfiability checks on refined symbolic heaps allow us to prune these heaps as soon as they are identified as infeasible, i.e., as soon as it can be confirmed that they cannot be extended to any valid concrete heap. Compared to LI and BLI, BLISS reduces the time required by LI by up to four orders of magnitude for the most complex data structures. Moreover, the number of partially symbolic structures obtained by exploring program paths is reduced by BLISS by over 50 percent, with reductions of over 90 percent in some cases (compared to LI). BLISS uses less memory than LI and BLI, which enables the exploration of states unreachable by previous techniques.
Nicolás Rosner, Jaco Geldenhuys, Nazareno Aguirre, Willem Visser, Marcelo F. Frias
IEEE Trans. Software Eng.2
2014 Statistical symbolic execution with informed sampling
abstract
Symbolic execution techniques have been proposed recently for the probabilistic analysis of programs. These techniques seek to quantify the likelihood of reaching program events of interest, e.g., assert violations. They have many promising applications but have scalability issues due to high computational demand. To address this challenge, we propose a statistical symbolic execution technique that performs Monte Carlo sampling of the symbolic program paths and uses the obtained information for Bayesian estimation and hypothesis testing with respect to the probability of reaching the target events. To speed up the convergence of the statistical analysis, we propose Informed Sampling, an iterative symbolic execution that first explores the paths that have high statistical significance, prunes them from the state space and guides the execution towards less likely paths. The technique combines Bayesian estimation with a partial exact analysis for the pruned paths leading to provably improved convergence of the statistical analysis. We have implemented statistical symbolic execution with informed sampling in the Symbolic PathFinder tool. We show experimentally that the informed sampling obtains more precise results and converges faster than a purely statistical analysis and may also be more efficient than an exact symbolic analysis. When the latter does not terminate symbolic execution with informed sampling can give meaningful results under the same time and memory limits.
Antonio Filieri, Corina Pasareanu, Willem Visser, Jaco Geldenhuys
SIGSOFT FSE4
2014 Ambiguity and structural ambiguity of symmetric difference NFAs
Brink van der Merwe, Lynette van Zijl, Jaco Geldenhuys
Theor. Comput. Sci.3
2013 Counting Minimal Symmetric Difference NFAs
Brink van der Merwe, Mark Farag, Jaco Geldenhuys
LATA3
2013 Symbolic PathFinder: integrating symbolic execution with model checking for Java bytecode analysis
Corina Pasareanu, Willem Visser, David H. Bushnell, Jaco Geldenhuys, Peter C. Mehlitz, Neha Rungta
Autom. Softw. Eng.4
2012 Probabilistic symbolic execution
abstract
The continued development of efficient automated decision procedures has spurred the resurgence of research on symbolic execution over the past decade. Researchers have applied symbolic execution to a wide range of software analysis problems including: checking programs against contract specifications, inferring bounds on worst-case execution performance, and generating path-adequate test suites for widely used library code.
Jaco Geldenhuys, Matthew B. Dwyer, Willem Visser
ISSTA1
2012 Green: reducing, reusing and recycling constraints in program analysis
abstract
The analysis of constraints plays an important role in many aspects of software engineering, for example constraint satisfiability checking is central to symbolic execution. However, the norm is to recompute results in each analysis. We propose a different approach where every call to the solver is wrapped in a check to see if the result is not already available. While many tools use some form of results caching, the novelty of our approach is the persistence of results across runs, across programs being analyzed, across different analyses and even across physical location. Achieving such reuse requires that constraints be distilled into their essential parts and represented in a canonical form.
Willem Visser, Jaco Geldenhuys, Matthew B. Dwyer
SIGSOFT FSE2
2011 Ambiguity of Unary Symmetric Difference NFAs
Brink van der Merwe, Lynette van Zijl, Jaco Geldenhuys
ICTAC3
2010 Impendulo: debugging the programmer
abstract
We describe the Impendulo tool for fine-grained analyses of programmer behavior. The initial design goal was to create a system to answer the following simple question: "What kind of mistakes do programmers make and how often do they make these mistakes?" However it quickly became apparent that the tool can be used to also analyze other fundamental software engineering questions, such as, how good are static analysis tools at finding real errors?, what is the fault finding capability of automated test generation tools?, what is the influence of a bad specification?, etc. We briefly describe the tool and some of the insights gained from using it.
Willem Visser, Jaco Geldenhuys
ASE2
2009 Exploring the Scope for Partial Order Reduction
Jaco Geldenhuys, Henri Hansen, Antti Valmari
ATVA1
2008 Cheap and Small Counterexamples
abstract
Minimal counterexamples are desirable, but expensive to compute. We propose four algorithms for computing small counterexamples that approximate the shortest case. Three of these use a new algorithm for automata-theoretic linear-time model checking, based on an early algorithm by Dijkstra for detecting strongly connected components. All four of the approximation algorithms rely on transitions shuffling; we show that the default transition ordering can behave badly. The algorithms are compared to a standard shortest counterexample algorithm on a large public data set.
Henri Hansen, Jaco Geldenhuys
SEFM2
2005 More efficient on-the-fly LTL verification with Tarjan's algorithm
Jaco Geldenhuys, Antti Valmari
Theor. Comput. Sci.1
2004 Tarjan's Algorithm Makes On-the-Fly LTL Verification More Efficient
Jaco Geldenhuys, Antti Valmari
TACAS1
2001 Techniques for Smaller Intermediary BDDs
Jaco Geldenhuys, Antti Valmari
CONCUR1