EDBT 2026 Demo / reviewers in the wild / expert
Daejun Park 0001
dblp:152/3639-1
· DBLP profile ↗
12ranked-venue papers
3as first author
1since 2021 · last 2021
0000-0003-1551-2597ORCID · conflict
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 9 · 3 first-author · 1 since 2021Artificial intelligence and machine learning · 2Systems, architecture and hardware · 1 · 1 since 2021Security and privacy · 1Graphics, computer vision, multimedia, augmented reality and games · 1Theory of computation · 1 · 1 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
7 papers |
Programming languages and type systems · 41% Compilers and program optimization · 20% Program verification · 19% | |
| Network and information security
3 papers |
Blockchain and cryptocurrency security · 40% Privacy and data protection · 40% Cryptographic primitives and cryptanalysis · 20% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Processor architecture and microarchitecture · 100% |
Topics — the 26 heaviest of 28, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Blockchain and cryptocurrency security › smart contract analysis
smart contract verification |
0.8 | 2 | 2020 | End-to-End Formal Verification of Ethereum 2.0 Deposit Smart Contract · CAV (1) 2020 A formal verification tool for Ethereum VM bytecode · ESEC/SIGSOFT FSE 2018 |
Programming languages and type systems › program equivalence
bisimulation |
0.5 | 1 | 2021 | Language-parametric compiler validation with application to LLVM · ASPLOS 2021 |
Compilers and program optimization
compiler validation |
0.5 | 1 | 2021 | Language-parametric compiler validation with application to LLVM · ASPLOS 2021 |
Program verification › equivalence checking
program equivalence checking |
0.5 | 1 | 2021 | Language-parametric compiler validation with application to LLVM · ASPLOS 2021 |
Compilers and program optimization › verified compilation
translation validation |
0.5 | 1 | 2021 | Language-parametric compiler validation with application to LLVM · ASPLOS 2021 |
Programming languages and type systems
language semantics |
0.4 | 3 | 2018 | KJS: a complete formal semantics of JavaScript · PLDI 2015 A formal verification tool for Ethereum VM bytecode · ESEC/SIGSOFT FSE 2018 Semantics-based program verifiers for all languages · OOPSLA 2016 |
Cryptographic primitives and cryptanalysis
homomorphic encryption |
0.4 | 1 | 2019 | Logistic Regression on Homomorphic Encrypted Data at Scale · AAAI 2019 |
Privacy and data protection
privacy-preserving data analysis |
0.4 | 1 | 2019 | Logistic Regression on Homomorphic Encrypted Data at Scale · AAAI 2019 |
Privacy and data protection
privacy-preserving machine learning |
0.4 | 1 | 2019 | Logistic Regression on Homomorphic Encrypted Data at Scale · AAAI 2019 |
Programming languages and type systems › language semantics
formal semantics |
0.4 | 1 | 2019 | A complete formal semantics of x86-64 user-level instruction set architecture · PLDI 2019 |
Programming languages and type systems › language semantics › formal semantics
instruction set semantics |
0.4 | 1 | 2019 | A complete formal semantics of x86-64 user-level instruction set architecture · PLDI 2019 |
Processor architecture and microarchitecture
instruction set architecture |
0.4 | 1 | 2019 | A complete formal semantics of x86-64 user-level instruction set architecture · PLDI 2019 |
Processor architecture and microarchitecture › instruction set architecture › CISC
x86-64 |
0.4 | 1 | 2019 | A complete formal semantics of x86-64 user-level instruction set architecture · PLDI 2019 |
Program verification
deductive verification |
0.3 | 1 | 2018 | A formal verification tool for Ethereum VM bytecode · ESEC/SIGSOFT FSE 2018 |
Programming languages and type systems › language semantics › formal semantics
executable semantics |
0.2 | 1 | 2015 | KJS: a complete formal semantics of JavaScript · PLDI 2015 |
Programming languages and type systems › language semantics › formal semantics
javascript semantics |
0.2 | 1 | 2015 | KJS: a complete formal semantics of JavaScript · PLDI 2015 |
Program analysis
symbolic execution |
0.2 | 1 | 2015 | KJS: a complete formal semantics of JavaScript · PLDI 2015 |
Program analysis › static analysis
abstract interpretation |
0.2 | 1 | 2014 | Global Sparse Analysis Framework · ACM Trans. Program. Lang. Syst. 2014 |
Program analysis › static analysis
scalable static analysis |
0.2 | 1 | 2014 | Global Sparse Analysis Framework · ACM Trans. Program. Lang. Syst. 2014 |
Program analysis › data flow analysis
sparse analysis |
0.2 | 1 | 2014 | Global Sparse Analysis Framework · ACM Trans. Program. Lang. Syst. 2014 |
Program analysis
static analysis |
0.2 | 1 | 2014 | Global Sparse Analysis Framework · ACM Trans. Program. Lang. Syst. 2014 |
Compilers and program optimization › code generation
instruction selection |
0.1 | 1 | 2021 | Language-parametric compiler validation with application to LLVM · ASPLOS 2021 |
Programming languages and type systems
bytecode verification |
0.1 | 1 | 2020 | End-to-End Formal Verification of Ethereum 2.0 Deposit Smart Contract · CAV (1) 2020 |
Programming languages and type systems › language semantics › formal semantics
operational semantics |
0.1 | 1 | 2016 | Semantics-based program verifiers for all languages · OOPSLA 2016 |
Software testing › specification-based testing
conformance testing |
0.1 | 1 | 2015 | KJS: a complete formal semantics of JavaScript · PLDI 2015 |
Program analysis › static analysis › abstract interpretation
relational analysis |
0.1 | 1 | 2014 | Global Sparse Analysis Framework · ACM Trans. Program. Lang. Syst. 2014 |
Methods — techniques the papers use, named apart from their topics
reachability logic · 0.9formal verification · 0.9instruction-level testing · 0.8executable semantics · 0.8theorem proving · 0.7abstraction and lemmas · 0.7language-parametric equivalence checking · 0.5cut-bisimulation · 0.5logistic regression · 0.4homomorphic encryption · 0.4matching logic · 0.2abstract interpretation · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2021 | Language-parametric compiler validation with application to LLVMabstractWe propose a new design for a Translation Validation (TV) system geared towards practical use with modern optimizing compilers, such as LLVM. Unlike existing TV systems, which are custom-tailored for a particular sequence of transformations and a specific, common language for input and output programs, our design clearly separates the transformation-specific components from the rest of the system, and generalizes the transformation-independent components. Specifically, we present Keq, the first program equivalence checker that is parametric to the input and output language semantics and has no dependence on the transformation between the input and output programs. The Keq algorithm is based on a rigorous formalization, namely cut-bisimulation, and is proven correct. We have prototyped a TV system for the Instruction Selection pass of LLVM, being able to automatically prove equivalence for translations from LLVM IR to the MachineIR used in compiling to x86-64. This transformation uses different input and output languages, and as such has not been previously addressed by the state of the art. An experimental evaluation shows that Keq successfully proves correct the translation of over 90% of 4732 supported functions in GCC from SPEC 2006. Theodoros Kasampalis, Daejun Park 0001, Zhengyao Lin, Vikram S. Adve, Grigore Rosu |
ASPLOS | 2 |
| 2020 | End-to-End Formal Verification of Ethereum 2.0 Deposit Smart ContractabstractWe report our experience in the formal verification of the deposit smart contract, whose correctness is critical for the security of Ethereum 2.0, a new Proof-of-Stake protocol for the Ethereum blockchain. The deposit contract implements an incremental Merkle tree algorithm whose correctness is highly nontrivial, and had not been proved before. We have verified the correctness of the compiled bytecode of the deposit contract to avoid the need to trust the underlying compiler. We found several critical issues of the deposit contract during the verification process, some of which were due to subtle hidden bugs of the compiler. Daejun Park 0001, Grigore Rosu |
CAV (1) | 1 |
| 2020 | A Learning-Based Approach to Synthesizing Invariants for Incomplete Verification EnginesabstractAbstract We propose a framework for synthesizing inductive invariants for incomplete verification engines, which soundly reduce logical problems in undecidable theories to decidable theories. Our framework is based on the counterexample guided inductive synthesis principle and allows verification engines to communicate non-provability information to guide invariant synthesis. We show precisely how the verification engine can compute such non-provability information and how to build effective learning algorithms when invariants are expressed as Boolean combinations of a fixed set of predicates. Moreover, we evaluate our framework in two verification settings, one in which verification engines need to handle quantified formulas and one in which verification engines have to reason about heap properties expressed in an expressive but undecidable separation logic. Our experiments show that our invariant synthesis framework based on non-provability information can both effectively synthesize inductive invariants and adequately strengthen contracts across a large suite of programs. This work is an extended version of a conference paper titled “Invariant Synthesis for Incomplete Verification Engines”. Daniel Neider, P. Madhusudan, Shambwaditya Saha, Pranav Garg 0001, Daejun Park 0001 |
J. Autom. Reason. | 5 |
| 2019 | Logistic Regression on Homomorphic Encrypted Data at ScaleabstractMachine learning on (homomorphic) encrypted data is a cryptographic method for analyzing private and/or sensitive data while keeping privacy. In the training phase, it takes as input an encrypted training data and outputs an encrypted model without ever decrypting. In the prediction phase, it uses the encrypted model to predict results on new encrypted data. In each phase, no decryption key is needed, and thus the data privacy is ultimately guaranteed. It has many applications in various areas such as finance, education, genomics, and medical field that have sensitive private data. While several studies have been reported on the prediction phase, few studies have been conducted on the training phase.In this paper, we present an efficient algorithm for logistic regression on homomorphic encrypted data, and evaluate our algorithm on real financial data consisting of 422,108 samples over 200 features. Our experiment shows that an encrypted model with a sufficient Kolmogorov Smirnow statistic value can be obtained in ∼17 hours in a single machine. We also evaluate our algorithm on the public MNIST dataset, and it takes ∼2 hours to learn an encrypted model with 96.4% accuracy. Considering the inefficiency of homomorphic encryption, our result is encouraging and demonstrates the practical feasibility of the logistic regression training on large encrypted data, for the first time to the best of our knowledge. Kyoohyung Han, Seungwan Hong 0001, Jung Hee Cheon, Daejun Park 0001 |
AAAI | 4 |
| 2019 | A complete formal semantics of x86-64 user-level instruction set architectureabstractWe present the most complete and thoroughly tested formal semantics of x86-64 to date. Our semantics faithfully formalizes all the non-deprecated, sequential user-level instructions of the x86-64 Haswell instruction set architecture. This totals 3155 instruction variants, corresponding to 774 mnemonics. The semantics is fully executable and has been tested against more than 7,000 instruction-level test cases and the GCC torture test suite. This extensive testing paid off, revealing bugs in both the x86-64 reference manual and other existing semantics. We also illustrate potential applications of our semantics in different formal analyses, and discuss how it can be useful for processor verification. Sandeep Dasgupta, Daejun Park 0001, Theodoros Kasampalis, Vikram S. Adve, Grigore Rosu |
PLDI | 2 |
| 2018 | KEVM: A Complete Formal Semantics of the Ethereum Virtual MachineabstractA developing field of interest for the distributed systems and applied cryptography communities is that of smart contracts: self-executing financial instruments that synchronize their state, often through a blockchain. One such smart contract system that has seen widespread practical adoption is Ethereum, which has grown to a market capacity of 100 billion USD and clears an excess of 500,000 daily transactions. Unfortunately, the rise of these technologies has been marred by a series of costly bugs and exploits. Increasingly, the Ethereum community has turned to formal methods and rigorous program analysis tools. This trend holds great promise due to the relative simplicity of smart contracts and bounded-time deterministic execution inherent to the Ethereum Virtual Machine (EVM). Here we present KEVM, an executable formal specification of the EVM's bytecode stack-based language built with the K Framework, designed to serve as a solid foundation for further formal analyses. We empirically evaluate the correctness and performance of KEVM using the official Ethereum test suite. To demonstrate the usability, several extensions of the semantics are presented. and two different-language implementations of the ERC20 Standard Token are verified against the ERC20 specification. These results are encouraging for the executable semantics approach to language prototyping and specification. Everett Hildenbrandt, Manasvi Saxena, Nishant Rodrigues, Xiaoran Zhu, Philip Daian, Dwight Guth, Brandon M. Moore, Daejun Park 0001, Andrei Stefanescu, Grigore Rosu |
CSF | 8 |
| 2018 | A Language-Independent Approach to Smart Contract Verification
Xiaohong Chen 0002, Daejun Park 0001, Grigore Rosu |
ISoLA (4) | 2 |
| 2018 | A formal verification tool for Ethereum VM bytecodeabstractIn this paper, we present a formal verification tool for the Ethereum Virtual Machine (EVM) bytecode. To precisely reason about all possible behaviors of the EVM bytecode, we adopted KEVM, a complete formal semantics of the EVM, and instantiated the K-framework's reachability logic theorem prover to generate a correct-by-construction deductive verifier for the EVM. We further optimized the verifier by introducing EVM-specific abstractions and lemmas to improve its scalability. Our EVM verifier has been used to verify various high-profile smart contracts including the ERC20 token, Ethereum Casper, and DappHub MakerDAO contracts. Daejun Park 0001, Manasvi Saxena, Philip Daian, Grigore Rosu |
ESEC/SIGSOFT FSE | 1 |
| 2018 | Invariant Synthesis for Incomplete Verification Engines
Daniel Neider, Pranav Garg 0001, P. Madhusudan, Shambwaditya Saha, Daejun Park 0001 |
TACAS (1) | 5 |
| 2016 | Semantics-based program verifiers for all languagesabstractWe present a language-independent verification framework that can be instantiated with an operational semantics to automatically generate a program verifier. The framework treats both the operational semantics and the program correctness specifications as reachability rules between matching logic patterns, and uses the sound and relatively complete reachability logic proof system to prove the specifications using the semantics. We instantiate the framework with the semantics of one academic language, KernelC, as well as with three recent semantics of real-world languages, C, Java, and JavaScript, developed independently of our verification infrastructure. We evaluate our approach empirically and show that the generated program verifiers can check automatically the full functional correctness of challenging heap-manipulating programs implementing operations on list and tree data structures, like AVL trees. This is the first approach that can turn the operational semantics of real-world languages into correct-by-construction automatic verifiers. Andrei Stefanescu, Daejun Park 0001, Shijiao Yuwen, Grigore Rosu |
OOPSLA | 2 |
| 2015 | KJS: a complete formal semantics of JavaScriptabstractThis paper presents KJS, the most complete and throughly tested formal semantics of JavaScript to date. Being executable, KJS has been tested against the ECMAScript 5.1 conformance test suite, and passes all 2,782 core language tests. Among the existing implementations of JavaScript, only Chrome V8's passes all the tests, and no other semantics passes more than 90%. In addition to a reference implementation for JavaScript, KJS also yields a simple coverage metric for a test suite: the set of semantic rules it exercises. Our semantics revealed that the ECMAScript 5.1 conformance test suite fails to cover several semantic rules. Guided by the semantics, we wrote tests to exercise those rules. The new tests revealed bugs both in production JavaScript engines (Chrome V8, Safari WebKit, Firefox SpiderMonkey) and in other semantics. KJS is symbolically executable, thus it can be used for formal analysis and verification of JavaScript programs. We verified non-trivial programs and found a known security vulnerability. Daejun Park 0001, Andrei Stefanescu, Grigore Rosu |
PLDI | 1 |
| 2014 | Global Sparse Analysis FrameworkabstractIn this article, we present a general method for achieving global static analyzers that are precise and sound, yet also scalable. Our method, on top of the abstract interpretation framework, is a general sparse analysis technique that supports relational as well as nonrelational semantics properties for various programming languages. Analysis designers first use the abstract interpretation framework to have a global and correct static analyzer whose scalability is unattended. Upon this underlying sound static analyzer, analysis designers add our generalized sparse analysis techniques to improve its scalability while preserving the precision of the underlying analysis. Our method prescribes what to prove to guarantee that the resulting sparse version should preserve the precision of the underlying analyzer. We formally present our framework and show that existing sparse analyses are all restricted instances of our framework. In addition, we show more semantically elaborate design examples of sparse nonrelational and relational static analyses. We then present their implementation results that scale to globally analyze up to one million lines of C programs. We also show a set of implementation techniques that turn out to be critical to economically support the sparse analysis process. Hakjoo Oh, Kihong Heo, Wonchan Lee, Woosuk Lee, Daejun Park 0001, Jeehoon Kang, Kwangkeun Yi |
ACM Trans. Program. Lang. Syst. | 5 |