Demo Data from EDBT 2026 / reviewers in the wild / expert
Juan Chen 0002
dblp:54/2717-2
· DBLP profile ↗
8ranked-venue papers
1as first author
0since 2021 · last 2014
—ORCID · conflict
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 8 · 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
5 papers |
Programming languages and type systems · 41% Program verification · 28% Compilers and program optimization · 26% | |
| Network and information security
3 papers |
Systems and software security · 41% Web and mobile security · 36% Authentication and access control · 24% |
Topics — the 14 heaviest of 16, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › type systems
gradual typing |
0.2 | 1 | 2014 | Gradual typing embedded securely in JavaScript · POPL 2014 |
Compilers and program optimization
compiler correctness |
0.2 | 1 | 2013 | Fully abstract compilation to JavaScript · POPL 2013 |
Programming languages and type systems › program equivalence
full abstraction |
0.2 | 1 | 2013 | Fully abstract compilation to JavaScript · POPL 2013 |
Compilers and program optimization › secure compilation
fully abstract compilation |
0.2 | 1 | 2013 | Fully abstract compilation to JavaScript · POPL 2013 |
Compilers and program optimization
secure compilation |
0.2 | 1 | 2013 | Fully abstract compilation to JavaScript · POPL 2013 |
Programming languages and type systems › type theory
dependent types |
0.1 | 1 | 2012 | Self-certification: bootstrapping certified typecheckers in F* with Coq · POPL 2012 |
Program verification
proof assistants |
0.1 | 1 | 2012 | Self-certification: bootstrapping certified typecheckers in F* with Coq · POPL 2012 |
Program verification › system verification
end-to-end verification |
0.1 | 1 | 2010 | Type-preserving compilation of end-to-end verification of security enforcement · PLDI 2010 |
Program verification
proof-carrying code |
0.1 | 1 | 2010 | Type-preserving compilation of end-to-end verification of security enforcement · PLDI 2010 |
Operating systems › system security › operating system security
security policy enforcement |
0.1 | 1 | 2010 | Type-preserving compilation of end-to-end verification of security enforcement · PLDI 2010 |
Programming languages and type systems › language implementation
type-preserving compilation |
0.1 | 1 | 2010 | Type-preserving compilation of end-to-end verification of security enforcement · PLDI 2010 |
Systems and software security
language-based security |
0.1 | 1 | 2014 | Gradual typing embedded securely in JavaScript · POPL 2014 |
Web and mobile security
javascript security |
0.0 | 1 | 2013 | Fully abstract compilation to JavaScript · POPL 2013 |
Authentication and access control › authorization
proof-carrying authorization |
0.0 | 1 | 2010 | Type-preserving compilation of end-to-end verification of security enforcement · PLDI 2010 |
Methods — techniques the papers use, named apart from their topics
type-based invariants · 0.3applicative bisimilarity · 0.3rich type systems · 0.2predicate transformers · 0.2dijkstra monad · 0.2mechanized metatheory · 0.1f* · 0.1coq · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2014 | Gradual typing embedded securely in JavaScriptabstractJavaScript's flexible semantics makes writing correct code hard and writing secure code extremely difficult. To address the former problem, various forms of gradual typing have been proposed, such as Closure and TypeScript. However, supporting all common programming idioms is not easy; for example, TypeScript deliberately gives up type soundness for programming convenience. In this paper, we propose a gradual type system and implementation techniques that provide important safety and security guarantees. Nikhil Swamy, Cédric Fournet, Aseem Rastogi, Karthikeyan Bhargavan, Juan Chen 0002, Pierre-Yves Strub, Gavin M. Bierman |
POPL | 5 |
| 2013 | Verifying higher-order programs with the dijkstra monadabstractModern programming languages, ranging from Haskell and ML, to JavaScript, C# and Java, all make extensive use of higher-order state. This paper advocates a new verification methodology for higher-order stateful programs, based on a new monad of predicate transformers called the Dijkstra monad. Nikhil Swamy, Joel Weinberger, Cole Schlesinger, Juan Chen 0002, Benjamin Livshits |
PLDI | 4 |
| 2013 | Fully abstract compilation to JavaScriptabstractMany tools allow programmers to develop applications in high-level languages and deploy them in web browsers via compilation to JavaScript. While practical and widely used, these compilers are ad hoc: no guarantee is provided on their correctness for whole programs, nor their security for programs executed within arbitrary JavaScript contexts. This paper presents a compiler with such guarantees. We compile an ML-like language with higher-order functions and references to JavaScript, while preserving all source program properties. Relying on type-based invariants and applicative bisimilarity, we show full abstraction: two programs are equivalent in all source contexts if and only if their wrapped translations are equivalent in all JavaScript contexts. We evaluate our compiler on sample programs, including a series of secure libraries. Cédric Fournet, Nikhil Swamy, Juan Chen 0002, Pierre-Évariste Dagand, Pierre-Yves Strub, Benjamin Livshits |
POPL | 3 |
| 2013 | Secure distributed programming with value-dependent typesabstractAbstract Distributed applications are difficult to program reliably and securely. Dependently typed functional languages promise to prevent broad classes of errors and vulnerabilities, and to enable program verification to proceed side-by-side with development. However, as recursion, effects, and rich libraries are added, using types to reason about programs, specifications, and proofs becomes challenging. We present F*, a full-fledged design and implementation of a new dependently typed language for secure distributed programming. Our language provides arbitrary recursion while maintaining a logically consistent core; it enables modular reasoning about state and other effects using affine types; and it supports proofs of refinement properties using a mixture of cryptographic evidence and logical proof terms. The key mechanism is a new kind system that tracks several sub-languages within F* and controls their interaction. F* subsumes two previous languages, F7 and Fine. We prove type soundness (with proofs mechanized in Coq) and logical consistency for F*. We have implemented a compiler that translates F* to .NET bytecode, based on a prototype for Fine. F* provides access to libraries for concurrency, networking, cryptography, and interoperability with C#, F#, and the other .NET languages. The compiler produces verifiable binaries with 60% code size overhead for proofs and types, as much as a 45x improvement over the Fine compiler, while still enabling efficient bytecode verification. We have programmed and verified nearly 50,000 lines of F* including new schemes for multi-party sessions; a zero-knowledge privacy-preserving payment protocol; a provenance-aware curated database; a suite of web-browser extensions verified for authorization properties; a cloud-hosted multi-tier web application with a verified reference monitor; the core F* typechecker itself; and programs translated to F* from other languages such as F7 and JavaScript. Nikhil Swamy, Juan Chen 0002, Cédric Fournet, Pierre-Yves Strub, Karthikeyan Bhargavan, Jean Yang 0001 |
J. Funct. Program. | 2 |
| 2012 | Self-certification: bootstrapping certified typecheckers in F* with CoqabstractWell-established dependently-typed languages like Agda and Coq provide reliable ways to build and check formal proofs. Several other dependently-typed languages such as Aura, ATS, Cayenne, Epigram, F*, F7, Fine, Guru, PCML5, and Ur also explore reliable ways to develop and verify programs. All these languages shine in their own regard, but their implementations do not themselves enjoy the degree of safety provided by machine-checked verification. We propose a general technique called self-certification that allows a typechecker for a suitably expressive language to be certified for correctness. We have implemented this technique for F*, a dependently typed language on the .NET platform. Self-certification involves implementing a typechecker for F* in F*, while using all the conveniences F* provides for the compiler-writer (e.g., partiality, effects, implicit conversions, proof automation, libraries). This typechecker is given a specification (in~F*) strong enough to ensure that it computes valid typing derivations. We obtain a typing derivation for the core typechecker by running it on itself, and we export it to Coq as a type-derivation certificate. By typechecking this derivation (in Coq) and applying the F* metatheory (also mechanized in Coq), we conclude that our type checker is correct. Once certified in this manner, the F* typechecker is emancipated from Coq. Pierre-Yves Strub, Nikhil Swamy, Cédric Fournet, Juan Chen 0002 |
POPL | 4 |
| 2011 | Secure distributed programming with value-dependent typesabstractDistributed applications are difficult to program reliably and securely. Dependently typed functional languages promise to prevent broad classes of errors and vulnerabilities, and to enable program verification to proceed side-by-side with development. However, as recursion, effects, and rich libraries are added, using types to reason about programs, specifications, and proofs becomes challenging. Nikhil Swamy, Juan Chen 0002, Cédric Fournet, Pierre-Yves Strub, Karthikeyan Bhargavan, Jean Yang 0001 |
ICFP | 2 |
| 2010 | Enforcing Stateful Authorization and Information Flow Policies in Fine
Nikhil Swamy, Juan Chen 0002, Ravi Chugh |
ESOP | 2 |
| 2010 | Type-preserving compilation of end-to-end verification of security enforcementabstractA number of programming languages use rich type systems to verify security properties of code. Some of these languages are meant for source programming, but programs written in these languages are compiled without explicit security proofs, limiting their utility in settings where proofs are necessary, e.g., proof-carrying authorization. Others languages do include explicit proofs, but these are generally lambda calculi not intended for source programming, that must be further compiled to an executable form. A language suitable for source programming backed by a compiler that enables end-to-end verification is missing. Juan Chen 0002, Ravi Chugh, Nikhil Swamy |
PLDI | 1 |