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

Stephen F. Siegel

dblp:50/540 · DBLP profile ↗
← Back
26ranked-venue papers
15as first author
4since 2021 · last 2025
0000-0001-9359-3332ORCID · corroborated

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

Software engineering, systems software and programming languages · 22 · 11 first-author · 4 since 2021Theory of computation · 6 · 3 first-author · 3 since 2021Systems, architecture and hardware · 3 · 3 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
11 papers
Program verification · 79% Concurrent programming · 15% Program analysis · 6%
Theoretical computer science
4 papers
Automated reasoning and model checking · 80% Automata and formal languages · 13% Logic in computer science · 8%
Computer architecture, parallel and distributed computing, and storage systems
6 papers
Parallel and multicore computing · 73% High-performance computing · 23% Electronic design automation · 4%

Topics — the 26 heaviest of 28, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Automated reasoning and model checking
model checking
1.532023
Model Checking Race-Freedom When "Sequential Consistency for Data-Race-Free Programs" is Guaranteed · CAV (2) 2023
Action-Based Model Checking: Logic, Automata, and Reduction · CAV (2) 2020
What's Wrong with On-the-Fly Partial Order Reduction · CAV (2) 2019
Program verification
model checking
1.042025
Verifying PETSc Vector Components Using CIVL · CAV (1) 2025
Using model checking with symbolic execution to verify parallel numerical programs · ISSTA 2006
Modeling wildcard-free MPI programs for verification · PPoPP 2005
Program verification
modular verification
0.912025
Verifying PETSc Vector Components Using CIVL · CAV (1) 2025
Automated reasoning and model checking › model checking › state space reduction
partial order reduction
0.822020
Action-Based Model Checking: Logic, Automata, and Reduction · CAV (2) 2020
What's Wrong with On-the-Fly Partial Order Reduction · CAV (2) 2019
Program verification
contract verification
0.812024
Collective Contracts for Message-Passing Parallel Programs · CAV (2) 2024
Parallel and multicore computing › parallel programming models › message passing
message-passing parallel programs
0.812024
Collective Contracts for Message-Passing Parallel Programs · CAV (2) 2024
Automata and formal languages › omega-automata
büchi automata
0.412020
Action-Based Model Checking: Logic, Automata, and Reduction · CAV (2) 2020
Automated reasoning and model checking › model checking › explicit-state model checking
on-the-fly model checking
0.412019
What's Wrong with On-the-Fly Partial Order Reduction · CAV (2) 2019
Concurrent programming
concurrency models
0.212015
CIVL: the concurrency intermediate verification language · SC 2015
Concurrent programming
concurrency verification
0.212015
CIVL: the concurrency intermediate verification language · SC 2015
Program verification
concurrent program verification
0.212015
CIVL: Formal Verification of Parallel Programs · ASE 2015
Program verification › deductive verification
intermediate verification language
0.212015
CIVL: the concurrency intermediate verification language · SC 2015
Concurrent programming
memory models
0.212023
Model Checking Race-Freedom When "Sequential Consistency for Data-Race-Free Programs" is Guaranteed · CAV (2) 2023
Program analysis
symbolic execution
0.222011
Automatic formal verification of MPI-based parallel programs · PPoPP 2011
Using model checking with symbolic execution to verify parallel numerical programs · ISSTA 2006
Program verification › concurrent program verification
MPI program verification
0.222011
Automatic formal verification of MPI-based parallel programs · PPoPP 2011
Modeling wildcard-free MPI programs for verification · PPoPP 2005
Logic in computer science › temporal logic
linear temporal logic
0.112020
Action-Based Model Checking: Logic, Automata, and Reduction · CAV (2) 2020
Logic in computer science
temporal logic
0.112020
Action-Based Model Checking: Logic, Automata, and Reduction · CAV (2) 2020
Program verification › model checking
state space exploration
0.112011
Automatic formal verification of MPI-based parallel programs · PPoPP 2011
Program verification › model checking
state space reduction
0.112019
What's Wrong with On-the-Fly Partial Order Reduction · CAV (2) 2019
Parallel and multicore computing
parallel programming models
0.122015
CIVL: the concurrency intermediate verification language · SC 2015
Combining symbolic execution with model checking to verify parallel numerical programs · ACM Trans. Softw. Eng. Methodol. 2008
Concurrent programming
concurrency analysis
0.112015
CIVL: Formal Verification of Parallel Programs · ASE 2015
Program analysis
static analysis
0.112015
CIVL: Formal Verification of Parallel Programs · ASE 2015
Program verification › model checking
finite-state verification
0.122002
Improving the Precision of INCA by Eliminating Solutions with Spurious Cycles · IEEE Trans. Software Eng. 2002
Improving the precision of INCA by preventing spurious cycles · ISSTA 2000
Program verification
equivalence checking
0.112006
Using model checking with symbolic execution to verify parallel numerical programs · ISSTA 2006
Parallel and multicore computing › parallel programming models › message passing
MPI programming
0.112005
Modeling wildcard-free MPI programs for verification · PPoPP 2005
Electronic design automation › logic synthesis › logic optimization
state minimization
0.112005
Modeling wildcard-free MPI programs for verification · PPoPP 2005

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

model checking · 3.2symbolic execution · 2.1CIVL · 1.5intermediate verification language · 0.7partial order reduction · 0.4automata transformation · 0.4translator · 0.2explicit state space enumeration · 0.1finite-state verification · 0.1integer linear programming · 0.1floating-point equivalence · 0.1
YearPublicationVenuePosition
2025 Verifying PETSc Vector Components Using CIVL
abstract
Abstract This paper presents a modular approach to verifying the vector module of PETSc, a widely used library in scientific computing, using the CIVL model checker. Our approach relies on the creation of stub functions, which serve a dual purpose of specifying the intended behavior of individual PETSc functions and providing an abstraction for called functions to allow efficient verification of callers. This facilitates the use of symbolic execution and model checking to establish the correctness of isolated functions. Our work contributes to the ongoing effort to enhance the reliability of high-performance computing libraries and proposes an effective verification strategy for complex scientific software.
Venkata Dhavala, Jan Hückelheim, Paul D. Hovland, Stephen F. Siegel
CAV (1)4
2024 Collective Contracts for Message-Passing Parallel Programs
abstract
Abstract Procedure contracts are a well-known approach for specifying programs in a modular way. We investigate a new contract theory for collective procedures in parallel message-passing programs. As in the sequential setting, one can verify that a procedure f conforms to its contract using only the contracts, and not the implementations, of the collective procedures called by f. We apply this approach to C programs that use the Message Passing Interface (MPI), introducing a new contract language that extends the ANSI/ISO C Specification Language. We present contracts for the standard MPI collective functions, as well as many user-defined collective functions. A prototype verification system has been implemented using the CIVL model checker for checking contract satisfaction within small bounds on the number of processes.
Ziqing Luo, Stephen F. Siegel
CAV (2)2
2023 Model Checking Race-Freedom When "Sequential Consistency for Data-Race-Free Programs" is Guaranteed
abstract
Abstract Many parallel programming models guarantee that if all sequentially consistent (SC) executions of a program are free of data races, then all executions of the program will appear to be sequentially consistent. This greatly simplifies reasoning about the program, but leaves open the question of how to verify that all SC executions are race-free. In this paper, we show that with a few simple modifications, model checking can be an effective tool for verifying race-freedom. We explore this technique on a suite of C programs parallelized with OpenMP.
Jan Hückelheim, Paul D. Hovland, Ziqing Luo, Stephen F. Siegel
CAV (2)5
2022 Verifying Fortran Programs with CIVL
abstract
Abstract Fortran is widely used in computational science, engineering, and high performance computing. This paper presents an extension to the CIVL verification framework to check correctness properties of Fortran programs. Unlike previous work that translates Fortran to C, LLVM IR, or other intermediate formats before verification, our work allows CIVL to directly consume Fortran source files. We extended the parsing, translation, and analysis phases to support Fortran-specific features such as array slicing and reshaping, and to find program violations that are specific to Fortran, such as argument aliasing rule violations, invalid use of variable and function attributes, or defects due to Fortran’s unspecified expression evaluation order. We demonstrate the usefulness of our tool on a verification benchmark suite and kernels extracted from a real world application.
Jan Hückelheim, Paul D. Hovland, Stephen F. Siegel
TACAS (1)4
2020 Action-Based Model Checking: Logic, Automata, and Reduction
abstract
Stutter invariant properties play a special role in state-based model checking: they are the properties that can be checked using partial order reduction (POR), an indispensable optimization. There are algorithms to decide whether an LTL formula or Büchi automaton (BA) specifies a stutter-invariant property, and to convert such a BA to a form that is appropriate for on-the-fly POR-based model checking. The interruptible properties play the same role in action-based model checking that stutter-invariant properties play in the state-based case. These are the properties that are invariant under the insertion or deletion of “invisible” actions. We present algorithms to decide whether an LTL formula or BA specifies an interruptible property, and show how a BA can be transformed to an interrupt normal form that can be used in an on-the-fly POR algorithm. We have implemented these algorithms in a new model checker named McRERS , and demonstrate their effectiveness using the RERS 2019 benchmark suite.
Stephen F. Siegel, Yihao Yan
CAV (2)1
2019 What's Wrong with On-the-Fly Partial Order Reduction
abstract
Partial order reduction and on-the-fly model checking are well-known approaches for improving model checking performance. The two optimizations interact in subtle ways, so care must be taken when using them in combination. A standard algorithm combining the two optimizations, published over twenty years ago, has been widely studied and deployed in popular model checking tools. Yet the algorithm is incorrect. Counterexamples were discovered using the Alloy analyzer. A fix for a restricted class of property automata is proposed.
Stephen F. Siegel
CAV (2)1
2018 Symbolic Execution and Deductive Verification Approaches to VerifyThis 2017 Challenges
Ziqing Luo, Stephen F. Siegel
ISoLA (2)2
2018 Evaluating Tools for Software Verification (Track Introduction)
Markus Schordan, Dirk Beyer 0001, Stephen F. Siegel
ISoLA (2)3
2018 Verifying Properties of Differentiable Programs
Jan Hückelheim, Ziqing Luo, Sri Hari Krishna Narayanan, Stephen F. Siegel, Paul D. Hovland
SAS4
2017 The RERS 2017 challenge and workshop (invited paper)
abstract
RERS is an annual verification challenge that focuses on LTL and reachability properties of reactive systems. In 2017, RERS was extended to a one day workshop that in addition to the original challenge program also featured an invited talk about possible future developments. As a satellite of ISSTA and SPIN, the 2017 RERS Challenge itself increased emphasis on the parallel benchmark problems which, like their sequential counterparts, were generated using property-preserving transformations in order to scale their level of difficulty. The first half of the RERS workshop focused on the 2017 benchmark profiles, the evaluation of the received contributions, and short presentations of each participating team. The second half comprised discussions about attractive problem scenarios for future benchmarks, like race detection, the topic of the invited talk, and about systematic ways to leverage a tool's performance based on competition benchmarks and machine learning.
Marc Jasper, Maximilian Fecke, Bernhard Steffen, Markus Schordan, Jeroen Meijer, Jaco van de Pol, Falk Howar, Stephen F. Siegel
SPIN8
2016 CIVL: Applying a General Concurrency Verification Framework to C/Pthreads Programs (Competition Contribution)
Manchun Zheng, John G. Edenhofner, Ziqing Luo, Mitchell J. Gerrard, Michael S. Rogers, Matthew B. Dwyer, Stephen F. Siegel
TACAS7
2016 Connecting and Serving the Software Engineering Community
abstract
Presents an editorial discusses the current status and activities supported by this publication.
Matthew B. Dwyer, Eric Bodden, Brian Fitzgerald 0001, Miryung Kim, Sunghun Kim 0001, Amy J. Ko, Emilia Mendes, Raffaela Mirandola, Ana Moreira 0001, Forrest Shull, Stephen F. Siegel, Tao Xie 0001
IEEE Trans. Software Eng.11
2015 CIVL: Formal Verification of Parallel Programs
abstract
CIVL is a framework for static analysis and verification of concurrent programs. One of the main challenges to practical application of these techniques is the large number of ways to express concurrency: MPI, OpenMP, CUDA, and Pthreads, for example, are just a few of many "concurrency dialects" in wide use today. These dialects are constantly evolving and it is increasingly common to use several of them in a single "hybrid" program. CIVL addresses these problems by providing a concurrency intermediate verification language, CIVL-C, as well as translators that consume C programs using these dialects and produce CIVL-C. Analysis and verification tools which operate on CIVL-C can then be applied easily to a wide variety of concurrent C programs. We demonstrate CIVL's error detection and verification capabilities on (1) an MPI+OpenMP program that estimates π and contains a subtle race condition, and (2) an MPI-based 1d-wave simulator that fails to conform to a simple sequential implementation.
Manchun Zheng, Michael S. Rogers, Ziqing Luo, Matthew B. Dwyer, Stephen F. Siegel
ASE5
2015 CIVL: the concurrency intermediate verification language
abstract
There are many ways to express parallel programs: message-passing libraries (MPI) and multithreading/GPU language extensions such as OpenMP, Pthreads, and CUDA, are but a few. This multitude creates a serious challenge for developers of software verification tools: it takes enormous effort to develop such tools, but each development effort typically targets one small part of the concurrency landscape, with little sharing of techniques and code among efforts.
Stephen F. Siegel, Manchun Zheng, Ziqing Luo, Timothy K. Zirkel, Andre V. Marianiello, John G. Edenhofner, Matthew B. Dwyer, Michael S. Rogers
SC1
2012 Loop Invariant Symbolic Execution for Parallel Programs
Stephen F. Siegel, Timothy K. Zirkel
VMCAI1
2012 Transparent partial order reduction
Stephen F. Siegel
Formal Methods Syst. Des.1
2011 Automatic formal verification of MPI-based parallel programs
abstract
The Toolkit for Accurate Scientific Software (TASS) is a suite of tools for the formal verification of MPI-based parallel programs used in computational science. TASS can verify various safety properties as well as compare two programs for functional equivalence. The TASS front end takes an integer n ≥ 1 and a C/MPI program, and constructs an abstract model of the program with n processes. Procedures, structs, (multi-dimensional) arrays, heap-allocated data, pointers, and pointer arithmetic are all representable in a TASS model. The model is then explored using symbolic execution and explicit state space enumeration. A number of techniques are used to reduce the time and memory consumed. A variety of realistic MPI programs have been verified with TASS, including Jacobi iteration and manager-worker type programs, and some subtle defects have been discovered. TASS is written in Java and is available from http://vsl.cis.udel.edu/tass under the Gnu Public License.
Stephen F. Siegel, Timothy K. Zirkel
PPoPP1
2011 Formal Analysis of Message Passing - (Invited Talk)
Stephen F. Siegel, Ganesh Gopalakrishnan
VMCAI1
2011 Collective Assertions
Stephen F. Siegel, Timothy K. Zirkel
VMCAI1
2008 Combining symbolic execution with model checking to verify parallel numerical programs
abstract
We present a method to verify the correctness of parallel programs that perform complex numerical computations, including computations involving floating-point arithmetic. This method requires that a sequential version of the program be provided, to serve as the specification for the parallel one. The key idea is to use model checking, together with symbolic execution, to establish the equivalence of the two programs. In this approach the path condition from symbolic execution of the sequential program is used to constrain the search through the parallel program. To handle floating-point operations, three different types of equivalence are supported. Several examples are presented, demonstrating the approach and actual errors that were found. Limitations and directions for future research are also described.
Stephen F. Siegel, Anastasia Mironova, George S. Avrunin, Lori A. Clarke
ACM Trans. Softw. Eng. Methodol.1
2007 Model Checking Nonblocking MPI Programs
Stephen F. Siegel
VMCAI1
2006 Using model checking with symbolic execution to verify parallel numerical programs
abstract
We present a method to verify the correctness of parallel programs that perform complex numerical computations, including computations involving floating-point arithmetic. The method requires that a sequential version of the program be provided, to serve as the specification for the parallel one. The key idea is to use model checking, together with symbolic execution, to establish the equivalence of the two programs.
Stephen F. Siegel, Anastasia Mironova, George S. Avrunin, Lori A. Clarke
ISSTA1
2005 Modeling wildcard-free MPI programs for verification
abstract
We give several theorems that can be used to substantially reduce the state space that must be considered in applying finite-state verification techniques, such as model checking, to parallel programs written using a subset of MPI. We illustrate the utility of these theorems by applying them to a small but realistic example.
Stephen F. Siegel, George S. Avrunin
PPoPP1
2005 Efficient Verification of Halting Properties for MPI Programs with Wildcard Receives
Stephen F. Siegel
VMCAI1
2002 Improving the Precision of INCA by Eliminating Solutions with Spurious Cycles
abstract
The Inequality Necessary Condition Analyzer (INCA) is a finite-state verification tool that has been able to check properties of some very large concurrent systems. INCA checks a property of a concurrent system by generating a system of inequalities that must have integer solutions if the property can be violated. There may, however, be integer solutions to the inequalities that do not correspond to an execution violating the property. INCA thus accepts the possibility of an inconclusive result in exchange for greater tractability. We describe here a method for eliminating one of the two main sources of these inconclusive results.
Stephen F. Siegel, George S. Avrunin
IEEE Trans. Software Eng.1
2000 Improving the precision of INCA by preventing spurious cycles
abstract
The Inequality Necessary Condition Analyzer (INCA) is a finite-state verification tool that has been able to check properties of some very large concurrent systems. INCA checks a property of a concurrent system by generating a system of inequalities that must have integer solutions if the property can be violated. There may, however, be integer solutions to the inequalities that do not correspond to an execution violating the property. INCA thus accepts the possibility of an inconclusive result in exchange for greater tractability. We describe here a method for eliminating one of the two main sources of these inconclusive results.
Stephen F. Siegel, George S. Avrunin
ISSTA1