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.

Peng Wang 0048

dblp:95/4442-48 · DBLP profile ↗
← Back
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

TopicWeightPapersLastEvidence papers
Program analysis › cost analysis
complexity analysis
0.312017
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.312017
TiML: a functional language for practical complexity analysis with invariants · Proc. ACM Program. Lang. 2017
Programming languages and type systems
type systems
0.312017
TiML: a functional language for practical complexity analysis with invariants · Proc. ACM Program. Lang. 2017
Programming languages and type systems
abstract data types
0.212014
Compiler verification meets cross-language linking via data abstraction · OOPSLA 2014
Programming languages and type systems › language semantics
formal semantics
0.212014
Compiler verification meets cross-language linking via data abstraction · OOPSLA 2014
Program verification › program logic
hoare logic
0.212014
Compiler verification meets cross-language linking via data abstraction · OOPSLA 2014
Concurrent programming › concurrency semantics
operational and axiomatic semantics
0.212014
Compiler verification meets cross-language linking via data abstraction · OOPSLA 2014
Compilers and program optimization
verified compilation
0.212014
Compiler verification meets cross-language linking via data abstraction · OOPSLA 2014
Automated reasoning and model checking
satisfiability modulo theories
0.112017
TiML: a functional language for practical complexity analysis with invariants · Proc. ACM Program. Lang. 2017
Compilers and program optimization
compiler correctness
0.112014
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
YearPublicationVenuePosition
2017 Verified low-level programming embedded in F
abstract
We 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 invariants
abstract
We 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 abstraction
abstract
Many 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
OOPSLA1