Yan Chen 0001

dblp:88/2827-1 · DBLP profile ↗
← Back
9ranked-venue papers
6as 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 · 5 first-authorSystems, architecture and hardware · 1 · 1 first-authorTheory 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
3 papers
Programming languages and type systems · 41% Compilers and program optimization · 30% Program analysis · 25%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Electronic design automation · 100%
Theoretical computer science
2 papers
Algorithms and data structures · 78% Automated reasoning and model checking · 22%

Topics — the 10 heaviest of 12, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis › static analysis
incremental analysis
0.222011
Self-adjusting stack machines · OOPSLA 2011
CEAL: a C-based language for self-adjusting computation · PLDI 2009
Programming languages and type systems › programming paradigms
self-adjusting computation
0.222011
Self-adjusting stack machines · OOPSLA 2011
CEAL: a C-based language for self-adjusting computation · PLDI 2009
Compilers and program optimization
program transformation
0.112012
Type-directed automatic incrementalization · PLDI 2012
Compilers and program optimization › intermediate representation
intermediate language
0.112011
Self-adjusting stack machines · OOPSLA 2011
Electronic design automation › hardware verification and test › formal verification
abstraction refinement
0.112008
Optimizing automatic abstraction refinement for generalized symbolic trajectory evaluation · DAC 2008
Electronic design automation
hardware verification and test
0.112008
Optimizing automatic abstraction refinement for generalized symbolic trajectory evaluation · DAC 2008
Electronic design automation › hardware verification and test › formal verification
symbolic trajectory evaluation
0.112008
Optimizing automatic abstraction refinement for generalized symbolic trajectory evaluation · DAC 2008
Algorithms and data structures
dynamic algorithms
0.012012
Type-directed automatic incrementalization · PLDI 2012
Algorithms and data structures › dynamic algorithms
incremental algorithms
0.012012
Type-directed automatic incrementalization · PLDI 2012
Automated reasoning and model checking › abstraction refinement
counterexample-guided abstraction refinement
0.012008
Optimizing automatic abstraction refinement for generalized symbolic trajectory evaluation · DAC 2008

Methods — techniques the papers use, named apart from their topics

type-directed compilation · 0.4counterexample-guided refinement · 0.2GSTE · 0.2soundness proof · 0.1operational semantics · 0.1change propagation · 0.1
YearPublicationVenuePosition
2014 Functional programming for dynamic and large data with self-adjusting computation
abstract
Combining type theory, language design, and empirical work, we present techniques for computing with large and dynamically changing datasets. Based on lambda calculus, our techniques are suitable for expressing a diverse set of algorithms on large datasets and, via self-adjusting computation, enable computations to respond automatically to changes in their data. To improve the scalability of self-adjusting computation, we present a type system for precise dependency tracking that minimizes the time and space for storing dependency metadata. The type system eliminates an important assumption of prior work that can lead to recording spurious dependencies. We present a type-directed translation algorithm that generates correct self-adjusting programs without relying on this assumption. We then show a probabilistic-chunking technique to further decrease space usage by controlling the fundamental space-time tradeoff in self-adjusting computation. We implement and evaluate these techniques, showing promising results on challenging benchmarks involving large graphs.
Yan Chen 0001, Umut A. Acar, Kanat Tangwongsan
ICFP1
2014 Implicit self-adjusting computation for purely functional programs
abstract
Abstract Computational problems that involve dynamic data, such as physics simulations and program development environments, have been an important subject of study in programming languages. Building on this work, recent advances in self-adjusting computation have developed techniques that enable programs to respond automatically and efficiently to dynamic changes in their inputs. Self-adjusting programs have been shown to be efficient for a reasonably broad range of problems, but the approach still requires an explicit programming style, where the programmer must use specific monadic types and primitives to identify, create, and operate on data that can change over time. We describe techniques for automatically translating purely functional programs into self-adjusting programs. In this implicit approach, the programmer need only annotate the (top-level) input types of the programs to be translated. Type inference finds all other types, and a type-directed translation rewrites the source program into an explicitly self-adjusting target program. The type system is related to information-flow type systems and enjoys decidable type inference via constraint solving. We prove that the translation outputs well- typed self-adjusting programs and preserves the source program's input–output behavior, guaranteeing that translated programs respond correctly to all changes to their data. Using a cost semantics, we also prove that the translation preserves the asymptotic complexity of the source program.
Yan Chen 0001, Jana Dunfield, Matthew A. Hammer, Umut A. Acar
J. Funct. Program.1
2012 Type-directed automatic incrementalization
abstract
Application data often changes slowly or incrementally over time. Since incremental changes to input often result in only small changes in output, it is often feasible to respond to such changes asymptotically more efficiently than by re-running the whole computation. Traditionally, realizing such asymptotic efficiency improvements requires designing problem-specific algorithms known as dynamic or incremental algorithms, which are often significantly more complicated than conventional algorithms to design, analyze, implement, and use. A long-standing open problem is to develop techniques that automatically transform conventional programs so that they correctly and efficiently respond to incremental changes.
Yan Chen 0001, Jana Dunfield, Umut A. Acar
PLDI1
2011 Implicit self-adjusting computation for purely functional programs
abstract
Computational problems that involve dynamic data, such as physics simulations and program development environments, have been an important subject of study in programming languages. Building on this work, recent advances in self-adjusting computation have developed techniques that enable programs to respond automatically and efficiently to dynamic changes in their inputs. Self-adjusting programs have been shown to be efficient for a reasonably broad range of problems but the approach still requires an explicit programming style, where the programmer must use specific monadic types and primitives to identify, create and operate on data that can change over time.
Yan Chen 0001, Jana Dunfield, Matthew A. Hammer, Umut A. Acar
ICFP1
2011 Self-adjusting stack machines
abstract
Self-adjusting computation offers a language-based approach to writing programs that automatically respond to dynamically changing data. Recent work made significant progress in developing sound semantics and associated implementations of self-adjusting computation for high-level, functional languages. These techniques, however, do not address issues that arise for low-level languages, i.e., stack-based imperative languages that lack strong type systems and automatic memory management. In this paper, we describe techniques for self-adjusting computation which are suitable for low-level languages. Necessarily, we take a different approach than previous work: instead of starting with a high-level language with additional primitives to support self-adjusting computation, we start with a low-level intermediate language, whose semantics is given by a stack-based abstract machine. We prove that this semantics is sound: it always updates computations in a way that is consistent with full reevaluation. We give a compiler and runtime system for the intermediate language used by our abstract machine. We present an empirical evaluation that shows that our approach is efficient in practice, and performs favorably compared to prior proposals.
Matthew A. Hammer, Georg Neis, Yan Chen 0001, Umut A. Acar
OOPSLA3
2009 Formal Verification for High-Assurance Behavioral Synthesis
Sandip Ray, Kecheng Hao, Yan Chen 0001, Fei Xie 0004, Jin Yang 0006
ATVA3
2009 CEAL: a C-based language for self-adjusting computation
abstract
Self-adjusting computation offers a language-centric approach to writing programs that can automatically respond to modifications to their data (e.g., inputs). Except for several domain-specific implementations, however, all previous implementations of self-adjusting computation assume mostly functional, higher-order languages such as Standard ML. Prior to this work, it was not known if self-adjusting computation can be made to work with low-level, imperative languages such as C without placing undue burden on the programmer.
Matthew A. Hammer, Umut A. Acar, Yan Chen 0001
PLDI3
2008 Optimizing automatic abstraction refinement for generalized symbolic trajectory evaluation
abstract
In this paper, we present a suite of optimizations targeting automatic abstraction refinement for Generalized Symbolic Trajectory Evaluation (GSTE). We optimize both model refinement and spec refinement supported by AutoGSTE: a counterexample-guided refinement loop for GSTE. Experiments on a family of benchmark circuits have shown that our optimizations lead to major efficiency improvements in verification involving abstraction refinement.
Yan Chen 0001, Fei Xie 0004, Jin Yang 0006
DAC1
2007 Automatic Abstraction Refinement for Generalized Symbolic Trajectory Evaluation
abstract
In this paper, we present AutoGSTE, a comprehensive approach to automatic abstraction refinement for generalized symbolic trajectory evaluation (GSTE). This approach addresses imprecision of GSTE's quaternary abstraction caused by underconstrained input circuit nodes, quaternary state set unions, and existentially quantified-out symbolic variables. It follows the counterexample-guided abstraction refinement framework and features an algorithm that analyzes counterexamples (symbolic error traces) generated by GSTE to identify causes of imprecision and two complementary algorithms that automate model refinement and specification refinement according to the causes identified. AutoGSTE completely eliminates false negatives due to imprecision of quaternary abstraction. Application of AutoGSTE to benchmark circuits from small to large size has demonstrated that it can quickly converge to an abstraction upon which GSTE can either verify or falsify an assertion graph efficiently.
Yan Chen 0001, Fei Xie 0004, Jin Yang 0006
FMCAD1