VLDB 2026 Research / reviewers in the wild / expert
Alexander Bakst
dblp:13/11515
· DBLP profile ↗
7ranked-venue papers
2as first author
1since 2021 · last 2024
0000-0002-9696-7157ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 7 · 2 first-author · 1 since 2021Theory of computation · 1
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
5 papers |
Program verification · 60% Compilers and program optimization · 19% Programming languages and type systems · 11% | |
| Computer architecture, parallel and distributed computing, and storage systems
2 papers |
Distributed systems · 76% Parallel and multicore computing · 24% |
Topics — the 16 heaviest of 17, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Compilers and program optimization › compiler optimization
memory partitioning |
0.8 | 1 | 2024 | Practical Verification of Smart Contracts using Memory Splitting · Proc. ACM Program. Lang. 2024 |
Program verification › code-level verification
smart contract verification |
0.8 | 1 | 2024 | Practical Verification of Smart Contracts using Memory Splitting · Proc. ACM Program. Lang. 2024 |
Program verification
SMT-based verification |
0.8 | 1 | 2024 | Practical Verification of Smart Contracts using Memory Splitting · Proc. ACM Program. Lang. 2024 |
Program verification › program logic › separation logic
distributed separation logic |
0.4 | 1 | 2019 | Pretend synchrony: synchronous verification of asynchronous distributed programs · Proc. ACM Program. Lang. 2019 |
Program verification
distributed system verification |
0.3 | 1 | 2017 | Verifying distributed programs via canonical sequentialization · Proc. ACM Program. Lang. 2017 |
Distributed systems
distributed coordination |
0.3 | 1 | 2017 | Verifying distributed programs via canonical sequentialization · Proc. ACM Program. Lang. 2017 |
Parallel and multicore computing
message-passing programs |
0.3 | 1 | 2017 | Verifying distributed programs via canonical sequentialization · Proc. ACM Program. Lang. 2017 |
Program analysis › static analysis
pointer analysis |
0.2 | 1 | 2024 | Practical Verification of Smart Contracts using Memory Splitting · Proc. ACM Program. Lang. 2024 |
Concurrent programming › deterministic execution
deterministic parallelism |
0.1 | 1 | 2012 | Deterministic parallelism via liquid effects · PLDI 2012 |
Programming languages and type systems › type systems › refinement types
liquid types |
0.1 | 1 | 2012 | CSolve: Verifying C with Liquid Types · CAV 2012 |
Programming languages and type systems › type systems
refinement types |
0.1 | 1 | 2012 | Deterministic parallelism via liquid effects · PLDI 2012 |
Programming languages and type systems › computational effects
type and effect systems |
0.1 | 1 | 2012 | Deterministic parallelism via liquid effects · PLDI 2012 |
Program verification
type-based verification |
0.1 | 1 | 2012 | CSolve: Verifying C with Liquid Types · CAV 2012 |
Distributed systems
consensus |
0.1 | 1 | 2019 | Pretend synchrony: synchronous verification of asynchronous distributed programs · Proc. ACM Program. Lang. 2019 |
Distributed systems › distributed database › commit protocol
two-phase commit |
0.1 | 1 | 2019 | Pretend synchrony: synchronous verification of asynchronous distributed programs · Proc. ACM Program. Lang. 2019 |
Program verification › type-based verification
refinement type inference |
0.0 | 1 | 2012 | Deterministic parallelism via liquid effects · PLDI 2012 |
Methods — techniques the papers use, named apart from their topics
SMT solving · 0.9synchronization computation · 0.8pointer analysis · 0.8memory allocation recovery · 0.8floyd-hoare logic · 0.8SMT · 0.8sequentialization · 0.6model checking · 0.6refinement type inference · 0.1liquid types · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2024 | Practical Verification of Smart Contracts using Memory SplittingabstractSMT-based verification of low-level code requires modeling and reasoning about memory operations. Prior work has shown that optimizing memory representations is beneficial for scaling verification—pointer analysis, for example can be used to split memory into disjoint regions leading to faster SMT solving. However, these techniques are mostly designed for C and C++ programs with explicit operations for memory allocation which are not present in all languages. For instance, on the Ethereum virtual machine, memory is simply a monolithic array of bytes which can be freely accessed by Ethereum bytecode, and there is no allocation primitive. In this paper, we present a memory splitting transformation guided by a conservative memory analysis for Ethereum bytecode generated by the Solidity compiler. The analysis consists of two phases: recovering memory allocation and memory regions, followed by a pointer analysis. The goal of the analysis is to enable memory splitting which in turn speeds up verification. We have implemented both the analysis and the memory splitting transformation as part of a verification tool, CertoraProver, and show that the transformation speeds up SMT solving by up to 120× and additionally mitigates 16 timeouts when used on 229 real-world smart contract verification tasks. Shelly Grossman, John Toman, Alexander Bakst, Sameer Arora, Shmuel Sagiv, Chandrakana Nandi |
Proc. ACM Program. Lang. | 3 |
| 2019 | Pretend synchrony: synchronous verification of asynchronous distributed programsabstractWe present pretend synchrony , a new approach to verifying distributed systems, based on the observation that while distributed programs must execute asynchronously, we can often soundly treat them as if they were synchronous when verifying their correctness. To do so, we compute a synchronization , a semantically equivalent program where all sends, receives, and message buffers, have been replaced by simple assignments, yielding a program that can be verified using Floyd-Hoare style Verification Conditions and SMT. We implement our approach as a framework for writing verified distributed programs in Go and evaluate it with four challenging case studies— the classic two-phase commit protocol, the Raft leader election protocol, single-decree Paxos protocol, and a Multi-Paxos based distributed key-value store. We find that pretend synchrony allows us to develop performant systems while making verification of functional correctness simpler by reducing manually specified invariants by a factor of 6, and faster , by reducing checking time by three orders of magnitude. Klaus von Gleissenthall, Rami Gökhan Kici, Alexander Bakst, Deian Stefan, Ranjit Jhala |
Proc. ACM Program. Lang. | 3 |
| 2017 | Verifying distributed programs via canonical sequentializationabstractWe introduce canonical sequentialization, a new approach to verifying unbounded, asynchronous, message-passing programs at compile-time. Our approach builds upon the following observation: due the combinatorial explosion in complexity, programmers do not reason about their systems by case-splitting over all the possible execution orders. Instead, correct programs tend to be well-structured so that the programmer can reason about a small number of representative executions, which we call the program’s canonical sequentialization. We have implemented our approach in a tool called Brisk that synthesizes canonical sequentializations for programs written in Haskell, and evaluated it on a wide variety of distributed systems including benchmarks from the literature and implementations of MapReduce, two-phase commit, and a version of the Disco distributed file-system. We show that unlike model checking, which gets prohibitively slow with just 10 processes Brisk verifies the unbounded versions of the benchmarks in tens of milliseconds, yielding the first concurrency verification tool that is fast enough to be integrated into a design-implement-check cycle. Alexander Bakst, Klaus von Gleissenthall, Rami Gökhan Kici, Ranjit Jhala |
Proc. ACM Program. Lang. | 1 |
| 2016 | Predicate Abstraction for Linked Data Structures
Alexander Bakst, Ranjit Jhala |
VMCAI | 1 |
| 2015 | Bounded refinement typesabstractWe present a notion of bounded quantification for refinement types and show how it expands the expressiveness of refinement typing by using it to develop typed combinators for: (1) relational algebra and safe database access, (2) Floyd-Hoare logic within a state transformer monad equipped with combinators for branching and looping, and (3) using the above to implement a refined IO monad that tracks capabilities and resource usage. This leap in expressiveness comes via a translation to ``ghost" functions, which lets us retain the automated and decidable SMT based checking and inference that makes refinement typing effective in practice. Niki Vazou, Alexander Bakst, Ranjit Jhala |
ICFP | 2 |
| 2012 | CSolve: Verifying C with Liquid Types
Patrick Maxim Rondon, Alexander Bakst, Ming Kawaguchi, Ranjit Jhala |
CAV | 2 |
| 2012 | Deterministic parallelism via liquid effectsabstractShared memory multithreading is a popular approach to parallel programming, but also fiendishly hard to get right. We present Liquid Effects, a type-and-effect system based on refinement types which allows for fine-grained, low-level, shared memory multi-threading while statically guaranteeing that a program is deterministic. Liquid Effects records the effect of an expression as a for- mula in first-order logic, making our type-and-effect system highly expressive. Further, effects like Read and Write are recorded in Liquid Effects as ordinary uninterpreted predicates, leaving the effect system open to extension by the user. By building our system as an extension to an existing dependent refinement type system, our system gains precise value- and branch-sensitive reasoning about effects. Finally, our system exploits the Liquid Types refinement type inference technique to automatically infer refinement types and effects. We have implemented our type-and-effect checking techniques in CSOLVE, a refinement type inference system for C programs. We demonstrate how CSOLVE uses Liquid Effects to prove the determinism of a variety of benchmarks. Ming Kawaguchi, Patrick Maxim Rondon, Alexander Bakst, Ranjit Jhala |
PLDI | 3 |