EDBT 2026 Demo / reviewers in the wild / expert
Peng Wang 0048
dblp:95/4442-48
· DBLP profile ↗
3ranked-venue papers
2as first author
0since 2021 · last 2017
—ORCID · conflict
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 3 · 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
2 papers |
Programming languages and type systems · 51% Program analysis · 15% Compilers and program optimization · 13% | |
| Theoretical computer science
1 paper |
Automated reasoning and model checking · 100% |
Topics — the 10 heaviest of 10, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program analysis › cost analysis
complexity analysis |
0.3 | 1 | 2017 | TiML: a functional language for practical complexity analysis with invariants · Proc. ACM Program. Lang. 2017 |
Programming languages and type systems › type theory › dependent types
indexed types |
0.3 | 1 | 2017 | TiML: a functional language for practical complexity analysis with invariants · Proc. ACM Program. Lang. 2017 |
Programming languages and type systems
type systems |
0.3 | 1 | 2017 | TiML: a functional language for practical complexity analysis with invariants · Proc. ACM Program. Lang. 2017 |
Programming languages and type systems
abstract data types |
0.2 | 1 | 2014 | Compiler verification meets cross-language linking via data abstraction · OOPSLA 2014 |
Programming languages and type systems › language semantics
formal semantics |
0.2 | 1 | 2014 | Compiler verification meets cross-language linking via data abstraction · OOPSLA 2014 |
Program verification › program logic
hoare logic |
0.2 | 1 | 2014 | Compiler verification meets cross-language linking via data abstraction · OOPSLA 2014 |
Concurrent programming › concurrency semantics
operational and axiomatic semantics |
0.2 | 1 | 2014 | Compiler verification meets cross-language linking via data abstraction · OOPSLA 2014 |
Compilers and program optimization
verified compilation |
0.2 | 1 | 2014 | Compiler verification meets cross-language linking via data abstraction · OOPSLA 2014 |
Automated reasoning and model checking
satisfiability modulo theories |
0.1 | 1 | 2017 | TiML: a functional language for practical complexity analysis with invariants · Proc. ACM Program. Lang. 2017 |
Compilers and program optimization
compiler correctness |
0.1 | 1 | 2014 | Compiler verification meets cross-language linking via data abstraction · OOPSLA 2014 |
Methods — techniques the papers use, named apart from their topics
coq · 0.8refinement kinds · 0.6recurrence solver · 0.6featherweight java · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2017 | Verified low-level programming embedded in FabstractWe present Low*, a language for low-level programming and verification, and its application to high-assurance optimized cryptographic libraries. Low* is a shallow embedding of a small, sequential, well-behaved subset of C in F*, a dependently- typed variant of ML aimed at program verification. Departing from ML, Low* does not involve any garbage collection or implicit heap allocation; instead, it has a structured memory model à la CompCert, and it provides the control required for writing efficient low-level security-critical code. By virtue of typing, any Low* program is memory safe. In addition, the programmer can make full use of the verification power of F* to write high-level specifications and verify the functional correctness of Low* code using a combination of SMT automation and sophisticated manual proofs. At extraction time, specifications and proofs are erased, and the remaining code enjoys a predictable translation to C. We prove that this translation preserves semantics and side-channel resistance. We provide a new compiler back-end from Low* to C and, to evaluate our approach, we implement and verify various cryptographic algorithms, constructions, and tools for a total of about 28,000 lines of code. We show that our Low* code delivers performance competitive with existing (unverified) C cryptographic libraries, suggesting our approach may be applicable to larger-scale low-level software. Jonathan Protzenko, Jean Karim Zinzindohoue, Aseem Rastogi, Tahina Ramananandro, Peng Wang 0048, Santiago Zanella-Béguelin, Antoine Delignat-Lavaud, Catalin Hritcu, Karthikeyan Bhargavan, Cédric Fournet, Nikhil Swamy |
Proc. ACM Program. Lang. | 5 |
| 2017 | TiML: a functional language for practical complexity analysis with invariantsabstractWe present TiML (Timed ML), an ML-like functional language with time-complexity annotations in types. It uses indexed types to express sizes of data structures and upper bounds on running time of functions; and refinement kinds to constrain these indices, expressing data-structure invariants and pre/post-conditions. Indexed types are flexible enough that TiML avoids a built-in notion of ≴size,≵ and the programmer can choose to index user-defined datatypes in any way that helps her analysis. TiML's distinguishing characteristic is supporting highly automated time-bound verification applicable to data structures with nontrivial invariants. The programmer provides type annotations, and the typechecker generates verification conditions that are discharged by an SMT solver. Type and index inference are supported to lower annotation burden, and, furthermore, big-O complexity can be inferred from recurrences generated during typechecking by a recurrence solver based on heuristic pattern matching (e.g. using the Master Theorem to handle divide-and-conquer-like recurrences). We have evaluated TiML's usability by implementing a broad suite of case-study modules, demonstrating that TiML, though lacking full automation and theoretical completeness, is versatile enough to verify worst-case and/or amortized complexities for algorithms and data structures like classic list operations, merge sort, Dijkstra's shortest-path algorithm, red-black trees, Braun trees, functional queues, and dynamic tables with bounds like m n log n . The learning curve and annotation burden are reasonable, as we argue with empirical results on our case studies. We formalized TiML's type-soundness proof in Coq. Peng Wang 0048, Di Wang 0017, Adam Chlipala |
Proc. ACM Program. Lang. | 1 |
| 2014 | Compiler verification meets cross-language linking via data abstractionabstractMany real programs are written in multiple different programming languages, and supporting this pattern creates challenges for formal compiler verification. We describe our Coq verification of a compiler for a high-level language, such that the compiler correctness theorem allows us to derive partial-correctness Hoare-logic theorems for programs built by linking the assembly code output by our compiler and assembly code produced by other means. Our compiler supports such tricky features as storable cross-language function pointers, without giving up the usual benefits of being able to verify different compiler phases (including, in our case, two classic optimizations) independently. The key technical innovation is a mixed operational and axiomatic semantics for the source language, with a built-in notion of abstract data types, such that compiled code interfaces with other languages only through axiomatically specified methods that mutate encapsulated private data, represented in whatever formats are most natural for those languages. Peng Wang 0048, Santiago Cuéllar, Adam Chlipala |
OOPSLA | 1 |