Eric Koskinen
YOU?
Author Swipe
View article: Abstract Interpretation of Temporal Safety Effects of Higher Order Programs
Abstract Interpretation of Temporal Safety Effects of Higher Order Programs Open
This paper describes a new abstract interpretation-based approach to verify temporal safety properties of recursive, higher-order programs. While prior works have provided theoretical impact and some automation, they have had limited scala…
View article: An Abstract Domain for Heap Commutativity (Extended Version)
An Abstract Domain for Heap Commutativity (Extended Version) Open
Commutativity of program code (i.e. the equivalence of two code fragments composed in alternate orders) is of ongoing interest in many settings such as program verification, scalable concurrency, and security analysis. While some have expl…
View article: Abstract Interpretation of Temporal Safety Effects of Higher Order Programs
Abstract Interpretation of Temporal Safety Effects of Higher Order Programs Open
This paper describes a new abstract interpretation-based approach to verify temporal safety properties of recursive, higher-order programs. While prior works have provided theoretical impact and some automation, they have had limited scala…
View article: Scenario-Based Proofs for Concurrent Objects
Scenario-Based Proofs for Concurrent Objects Open
Concurrent objects form the foundation of many applications that exploit multicore architectures and their importance has lead to informal correctness arguments, as well as formal proof systems. Correctness arguments (as found in the distr…
View article: DrNLA: Extending Verification to Non-linear Programs through Dual Re-writing
DrNLA: Extending Verification to Non-linear Programs through Dual Re-writing Open
For many decades, advances in static verification have focused on linear integer arithmetic (LIA) programs. Many real-world programs are, however, written with non-linear integer arithmetic (NLA) expressions, such as programs that model ph…
View article: Better Predicates and Heuristics for Improved Commutativity Synthesis
Better Predicates and Heuristics for Improved Commutativity Synthesis Open
Artifact for ATVA '23 submission; includes all in-project code for replicating experimental results.
View article: Scenario-Based Proofs for Concurrent Objects [Extended Version]
Scenario-Based Proofs for Concurrent Objects [Extended Version] Open
Concurrent objects form the foundation of many applications that exploit multicore architectures and their importance has lead to informal correctness arguments, as well as formal proof systems. Correctness arguments (as found in the distr…
View article: An Algebra of Alignment for Relational Verification
An Algebra of Alignment for Relational Verification Open
Relational verification encompasses information flow security, regression verification, translation validation for compilers, and more. Effective alignment of the programs and computations to be related facilitates use of simpler relationa…
View article: Modular Primal-Dual Fixpoint Logic Solving for Temporal Verification
Modular Primal-Dual Fixpoint Logic Solving for Temporal Verification Open
We present a novel approach to deciding the validity of formulas in first-order fixpoint logic with background theories and arbitrarily nested inductive and co-inductive predicates defining least and greatest fixpoints. Our approach is con…
View article: Veracity: declarative multicore programming with commutativity
Veracity: declarative multicore programming with commutativity Open
There is an ongoing effort to provide programming abstractions that ease the burden of exploiting multicore hardware. Many programming abstractions ( e.g. , concurrent objects, transactional memory, etc.) simplify matters, but still involv…
View article: Veracity: Declarative Multicore Programming with Commutativity
Veracity: Declarative Multicore Programming with Commutativity Open
Veracity is a c-like language that features the commute statement, which can describe conditional commutativity of sequential code. When such code's commutativity condition is satisfied, and proper (scoped) serializability constraints are …
View article: Veracity: Declarative Multicore Programming with Commutativity
Veracity: Declarative Multicore Programming with Commutativity Open
There is an ongoing effort to provide programming abstractions that ease the burden of exploiting multicore hardware. Many programming abstractions (e.g., concurrent objects, transactional memory, etc.) simplify matters, but still involve …
View article: An algebra of alignment for relational verification
An algebra of alignment for relational verification Open
Relational verification encompasses information flow security, regression verification, translation validation for compilers, and more. Effective alignment of the programs and computations to be related facilitates use of simpler relationa…
View article: Source-Level Bitwise Branching for Temporal Verification
Source-Level Bitwise Branching for Temporal Verification Open
There is increasing interest in applying verification tools to programs that have bitvector operations. SMT solvers, which serve as a foundation for these tools, have thus increased support for bitvector reasoning through bit-blasting and …
View article: Source-Level Bitwise Branching for Temporal Verification of Lifted Binaries.
Source-Level Bitwise Branching for Temporal Verification of Lifted Binaries. Open
There is increasing interest in applying verification tools to programs that have bitvector operations (eg., binaries). SMT solvers, which serve as a foundation for these tools, have thus increased support for bitvector reasoning through b…
View article: Proving LTL Properties of Bitvector Programs and Decompiled Binaries (Extended)
Proving LTL Properties of Bitvector Programs and Decompiled Binaries (Extended) Open
There is increasing interest in applying verification tools to programs that have bitvector operations (eg., binaries). SMT solvers, which serve as a foundation for these tools, have thus increased support for bitvector reasoning through b…
View article: SoK: All You Ever Wanted to Know About x86/x64 Binary Disassembly But Were Afraid to Ask
SoK: All You Ever Wanted to Know About x86/x64 Binary Disassembly But Were Afraid to Ask Open
Disassembly of binary code is hard, but necessary for improving the security of binary software. Over the past few decades, research in binary disassembly has produced many tools and frameworks, which have been made available to researcher…
View article: Coarse-grained transactions
(extended version)
Coarse-grained transactions
(extended version) Open
Traditional transactional memory systems suffer from overly conservative conflict detection, yielding so-called false conflicts, because they are based on fine-grained, low-level read/write conflicts. In response, the recent trend has been…
View article: Branching-time reasoning for programs
(extended version)
Branching-time reasoning for programs
(extended version) Open
We describe a reduction from temporal property verification to a program analysis problem. Our reduction is an encoding which, with the use of procedures and nondeterminism, enables existing interprocedural program analysis tools to natura…
View article: Towards Optimal Use of Exception Handling Information for Function Detection
Towards Optimal Use of Exception Handling Information for Function Detection Open
Function entry detection is critical for security of binary code. Conventional methods heavily rely on patterns, inevitably missing true functions and introducing errors. Recently, call frames have been used in exception-handling for funct…
View article: DynamiTe: dynamic termination and non-termination proofs
DynamiTe: dynamic termination and non-termination proofs Open
There is growing interest in termination reasoning for nonlinear programs and, meanwhile, recent dynamic strategies have shown they are able to infer invariants for such challenging programs. These advances led us to hypothesize that perha…
View article: SoK: All You Ever Wanted to Know About x86/x64 Binary Disassembly But\n Were Afraid to Ask
SoK: All You Ever Wanted to Know About x86/x64 Binary Disassembly But\n Were Afraid to Ask Open
Disassembly of binary code is hard, but necessary for improving the security\nof binary software. Over the past few decades, research in binary disassembly\nhas produced many tools and frameworks, which have been made available to\nresearc…
View article: Program Verification via Predicate Constraint Satisfiability Modulo Theories
Program Verification via Predicate Constraint Satisfiability Modulo Theories Open
This paper presents a verification framework based on a new class of predicate Constraint Satisfaction Problems called pCSP where constraints are represented as clauses modulo first-order theories over function variables and predicate vari…
View article: Reducing Commutativity Verification to Reachability with Differencing\n Abstractions
Reducing Commutativity Verification to Reachability with Differencing\n Abstractions Open
Commutativity of data structure methods is of ongoing interest, with roots in\nthe database community. In recent years commutativity has been shown to be a\nkey ingredient to enabling multicore concurrency in contexts such as\nparallelizin…
View article: Reducing Commutativity Verification to Reachability with Differencing Abstractions
Reducing Commutativity Verification to Reachability with Differencing Abstractions Open
Commutativity of data structure methods is of ongoing interest, with roots in the database community. In recent years commutativity has been shown to be a key ingredient to enabling multicore concurrency in contexts such as parallelizing c…
View article: Specification and inference of trace refinement relations
Specification and inference of trace refinement relations Open
The modern software engineering process is evolutionary, with commits/patches begetting new versions of code, progressing steadily toward improved systems. In recent years, program analysis and verification tools have exploited version-bas…
View article: Specification and Inference of Trace Refinement Relations
Specification and Inference of Trace Refinement Relations Open
Modern software is constantly changing. Researchers and practitioners are increasingly aware that verification tools can be impactful if they embrace change through analyses that are compositional and span program versions. Reasoning about…
View article: Automatic Generation of Precise and Useful Commutativity Conditions (Extended Version)
Automatic Generation of Precise and Useful Commutativity Conditions (Extended Version) Open
Reasoning about commutativity between data-structure operations is an important problem with applications including parallelizing compilers, optimistic parallelization and, more recently, Ethereum smart contracts. There have been research …