VLDB 2026 Research / reviewers in the wild / expert
Yanhong A. Liu
dblp:01/3982 · also Y. Annie Liu, Yanhong Annie Liu
· DBLP profile ↗
64ranked-venue papers
35as first author
9since 2021 · last 2025
0000-0002-5742-6489ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 53 · 27 first-author · 5 since 2021Theory of computation · 14 · 7 first-author · 2 since 2021Systems, architecture and hardware · 3 · 2 first-author · 1 since 2021Security and privacy · 2 · 1 first-authorArtificial intelligence and machine learning · 1Databases, data management, data science and information retrieval · 1Human-computer interaction and ubiquitous computing · 1 · 1 first-author · 1 since 2021
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2025 | Resilience Through Automated Adaptive Configuration for Distribution and Replication
Scott D. Stoller, Balaji Jayasankar, Yanhong A. Liu |
SPIN | 3 |
| 2024 | Incremental Computation: What Is the Essence? (Invited Contribution)abstractIncremental computation aims to compute more efficiently on changed input by reusing previously computed results. We give a high-level overview of works on incremental computation, and highlight the essence underlying all of them, which we call incrementalization---the discrete counterpart of differentiation in calculus. We review the gist of a systematic method for incrementalization, and a systematic method centered around it, called Iterate-Incrementalize-Implement, for program design and optimization, as well as algorithm design and optimization. At a meta-level, with historical contexts and for future directions, we stress the power of high-level data, control, and module abstractions in developing new and better algorithms and programs as well as their precise complexities. Yanhong A. Liu |
PEPM | 1 |
| 2023 | Integrating Logic Rules with Everything Else, SeamlesslyabstractAbstract This paper presents a language, Alda, that supports all of logic rules, sets, functions, updates, and objects as seamlessly integrated built-ins. The key idea is to support predicates in rules as set-valued variables that can be used and updated in any scope, and support queries using rules as either explicit or implicit automatic calls to an inference function. We have defined a formal semantics of the language, implemented a prototype compiler that builds on an object-oriented language that supports concurrent and distributed programming and on an efficient logic rule system, and successfully used the language and implementation on benchmarks and problems from a wide variety of application domains. We describe the compilation method and results of experimental evaluation. Yanhong A. Liu, Scott D. Stoller, Yi Tong |
Theory Pract. Log. Program. | 1 |
| 2022 | Recursive rules with aggregation: a simple unified semanticsabstractAbstract Complex reasoning problems are most clearly and easily specified using logical rules, but require recursive rules with aggregation such as count and sum for practical applications. Unfortunately, the meaning of such rules has been a significant challenge, leading to many disagreeing semantics. This paper describes a unified semantics for recursive rules with aggregation, extending the unified founded semantics and constraint semantics for recursive rules with negation. The key idea is to support simple expression of the different assumptions underlying different semantics, and orthogonally interpret aggregation operations using their simple usual meaning. We present a formal definition of the semantics, prove important properties of the semantics and compare with prior semantics. In particular, we present an efficient inference over aggregation that gives precise answers to all examples we have studied from the literature. We also apply our semantics to a wide range of challenging examples, and show that our semantics is simple and matches the desired results in all cases. Finally, we describe experiments on the most challenging examples, exhibiting unexpectedly superior performance over well-known systems when they can compute correct answers. Yanhong A. Liu, Scott D. Stoller |
J. Log. Comput. | 1 |
| 2021 | Brief Announcement: What's Live? Understanding Distributed ConsensusabstractDistributed consensus algorithms such as Paxos have been studied extensively. Many different liveness properties and assumptions have been stated for them, but there are no systematic comparisons for better understanding of these properties. Saksham Chand, Yanhong A. Liu |
PODC | 2 |
| 2021 | Discrete Math with Programming: A Principled ApproachabstractDiscrete mathematics is the foundation of computer science. It focuses on concepts and reasoning methods that are studied using math notations. It has long been argued that discrete math is better taught with programming, which takes concepts and computing methods and turns them into executable programs. What has been lacking is a principled approach that supports all central concepts of discrete math---especially predicate logic---and that directly and precisely connects math notations with executable programs. This paper introduces such an approach. It is based on the use of a powerful language that extends the Python programming language with proper logic quantification ("for all'' and "exists some''), as well as declarative set comprehension (also known as set builder) and aggregation (e.g., sum and product). Math and logical statements can be expressed precisely at a high level and be executed directly on a computer, encouraging declarative programming together with algorithmic programming. We describe the approach, detailed examples, experience in using it, and the lessons learned. Yanhong A. Liu, Matthew S. Castellana |
SIGCSE | 1 |
| 2021 | Knowledge of uncertain worlds: programming with logical constraintsabstractAbstract Programming with logic for sophisticated applications must deal with recursion and negation, which together have created significant challenges in logic, leading to many different, conflicting semantics of rules. This paper describes a unified language, DA logic, for design and analysis logic, based on the unifying founded semantics and constraint semantics, that supports the power and ease of programming with different intended semantics. The key idea is to provide meta-constraints, support the use of uncertain information in the form of either undefined values or possible combinations of values and promote the use of knowledge units that can be instantiated by any new predicates, including predicates with additional arguments. Yanhong A. Liu, Scott D. Stoller |
J. Log. Comput. | 1 |
| 2021 | Introduction to the 37th International Conference on Logic Programming Special Issue I
Alex Brik, Andrea Formisano 0001, Yanhong A. Liu, Joost Vennekens |
Theory Pract. Log. Program. | 3 |
| 2021 | Introduction to the 37th International Conference on Logic Programming Special Issue II
Alex Brik, Andrea Formisano 0001, Yanhong A. Liu, Joost Vennekens |
Theory Pract. Log. Program. | 3 |
| 2020 | Assurance of Distributed Algorithms and Systems: Runtime Checking of Safety and Liveness
Yanhong A. Liu, Scott D. Stoller |
RV | 1 |
| 2020 | Founded semantics and constraint semantics of logic rulesabstractAbstract Logic rules and inference are fundamental in computer science and have been studied extensively. However, prior semantics of logic languages can have subtle implications and can disagree significantly, on even very simple programs, including in attempting to solve the well-known Russell’s paradox. These semantics are often non-intuitive and hard-to-understand when unrestricted negation is used in recursion. This paper describes a simple new semantics for logic rules, founded semantics, and its straightforward extension to another simple new semantics, constraint semantics, that unify the core of different prior semantics. The new semantics support unrestricted negation, as well as unrestricted existential and universal quantifications. They are uniquely expressive and intuitive by allowing assumptions about the predicates, rules and reasoning to be specified explicitly, as simple and precise binary choices. They are completely declarative and relate cleanly to prior semantics. In addition, founded semantics can be computed in linear time in the size of the ground program. Yanhong A. Liu, Scott D. Stoller |
J. Log. Comput. | 1 |
| 2019 | Algorithm Diversity for Resilient Systems
Scott D. Stoller, Yanhong A. Liu |
DBSec | 2 |
| 2019 | From Classical to Blockchain Consensus: What Are the Exact Algorithms?abstractThis tutorial describes well-known algorithms for distributed consensus problems, from classical consensus to blockchain consensus, and discusses exact algorithms that are high-level as in pseudocode and directly executable at the same time. The tutorial consists of five parts: Yanhong A. Liu, Scott D. Stoller |
PODC | 1 |
| 2019 | Moderately Complex Paxos Made Simple: High-Level Executable Specification of Distributed AlgorithmsabstractThis paper describes the application of a high-level language and method in developing simpler specifications of more complex variants of the Paxos algorithm for distributed consensus. The specifications are for Multi-Paxos with preemption, replicated state machine, and reconfiguration and optimized with state reduction and failure detection. The language is DistAlgo. The key is to express complex control flows and synchronization conditions precisely at a high level, using nondeterministic waits and message-history queries. We obtain complete executable specifications that are almost completely declarative--updating only a number for the protocol round besides the sets of messages sent and received. Yanhong A. Liu, Saksham Chand, Scott D. Stoller |
PPDP | 1 |
| 2017 | From Clarity to Efficiency for Distributed AlgorithmsabstractThis article describes a very high-level language for clear description of distributed algorithms and optimizations necessary for generating efficient implementations. The language supports high-level control flows in which complex synchronization conditions can be expressed using high-level queries, especially logic quantifications, over message history sequences. Unfortunately, the programs would be extremely inefficient, including consuming unbounded memory, if executed straightforwardly. We present new optimizations that automatically transform complex synchronization conditions into incremental updates of necessary auxiliary values as messages are sent and received. The core of the optimizations is the first general method for efficient implementation of logic quantifications. We have developed an operational semantics of the language, implemented a prototype of the compiler and the optimizations, and successfully used the language and implementation on a variety of important distributed algorithms. Yanhong A. Liu, Scott D. Stoller |
ACM Trans. Program. Lang. Syst. | 1 |
| 2016 | Formal Verification of Multi-Paxos for Distributed Consensus
Saksham Chand, Yanhong A. Liu, Scott D. Stoller |
FM | 2 |
| 2016 | Removing runtime overhead for optimized object queriesabstractPowerful optimizations of object queries can lead to reduced asymptotic running times. However, such queries are often used in dynamic languages, and the required generality of the optimizations in handling a dynamic language can lead to significant runtime overhead as well as significantly increased code size. This paper studies combinations of optimizations for reducing this runtime overhead and code size. We describe two new optimizations --- counting elimination and result set elimination, their effectiveness when combined with inlining and when using specialized data structures, and additional optimizations enabled by type analysis and alias analysis. The two new optimizations are enabled by the high-level nature of queries, even though they are difficult and not supported by general compiler optimizations. We have run a variety of benchmarks, including distributed algorithms and benchmarks from prior best systems, obtaining a speedup of up to 56% and code size reduction of up to 37%. Jon Brandvein, Yanhong A. Liu |
PEPM | 2 |
| 2016 | Demand-driven incremental object queriesabstractObject queries are essential in information seeking and decision making in vast areas of applications. However, a query may involve complex conditions on objects and sets, which can be arbitrarily nested and aliased. The objects and sets involved as well as the demand---the given parameter values of interest---can change arbitrarily. How to implement object queries efficiently under all possible updates, and furthermore to provide complexity guarantees? Yanhong A. Liu, Jon Brandvein, Scott D. Stoller |
PPDP | 1 |
| 2016 | Precise complexity guarantees for pointer analysis via Datalog with extensionsabstractAbstract Pointer analysis is a fundamental static program analysis for computing the set of objects that an expression can refer to. Decades of research has gone into developing methods of varying precision and efficiency for pointer analysis for programs that use different language features, but determining precisely how efficient a particular method is has been a challenge in itself. For programs that use different language features, we consider methods for pointer analysis using Datalog and extensions to Datalog. When the rules are in Datalog, we present the calculation of precise time complexities from the rules using a new algorithm for decomposing rules for obtaining the best complexities. When extensions such as function symbols and universal quantification are used, we describe algorithms for efficiently implementing the extensions and the complexities of the algorithms. K. Tuncay Tekle, Yanhong A. Liu |
Theory Pract. Log. Program. | 2 |
| 2013 | Verifying Linearizability via Optimized Refinement CheckingabstractLinearizability is an important correctness criterion for implementations of concurrent objects. Automatic checking of linearizability is challenging because it requires checking that: (1) All executions of concurrent operations are serializable, and (2) the serialized executions are correct with respect to the sequential semantics. In this work, we describe a method to automatically check linearizability based on refinement relations from abstract specifications to concrete implementations. The method does not require that linearization points in the implementations be given, which is often difficult or impossible. However, the method takes advantage of linearization points if they are given. The method is based on refinement checking of finite-state systems specified as concurrent processes with shared variables. To tackle state space explosion, we develop and apply symmetry reduction, dynamic partial order reduction, and a combination of both for refinement checking. We have built the method into the PAT model checker, and used PAT to automatically check a variety of implementations of concurrent objects, including the first algorithm for scalable nonzero indicators. Our system is able to find all known and injected bugs in these implementations. Yang Liu 0003, Wei Chen 0013, Yanhong A. Liu, Jun Sun 0001, Shao Jie Zhang, Jin Song Dong 0001 |
IEEE Trans. Software Eng. | 3 |
| 2012 | From clarity to efficiency for distributed algorithmsabstractThis paper describes a very high-level language for clear description of distributed algorithms and optimizations necessary for generating efficient implementations. The language supports high-level control flows where complex synchronization conditions can be expressed using high-level queries, especially logic quantifications, over message history sequences. Unfortunately, the programs would be extremely inefficient, including consuming unbounded memory, if executed straightforwardly. Yanhong A. Liu, Scott D. Stoller, Michael Gorbovitski |
OOPSLA | 1 |
| 2012 | Composing transformations for instrumentation and optimizationabstractWhen transforming programs for complex instrumentation and optimization, it is essential to understand the effect of the transformations, to best optimize the transformed programs, and to speedup the transformation process. This paper describes a powerful method for composing transformation rules to achieve these goals. Michael Gorbovitski, Yanhong A. Liu, Scott D. Stoller, Tom Rothamel |
PEPM | 2 |
| 2012 | High-Level Executable Specifications of Distributed Algorithms
Yanhong A. Liu, Scott D. Stoller |
SSS | 1 |
| 2011 | More efficient datalog queries: subsumptive tabling beats magic setsabstractGiven a set of Datalog rules, facts, and a query, answers to the query can be inferred bottom-up starting with the facts or top-down starting with the query. The dominant strategies to improve the performance of answering queries are reusing answers to subqueries for top-down methods, and transforming rules based on demand from the query, such as the well-known magic sets transformation, for bottom-up methods. However, the performance of these strategies vary drastically, and the most effective method has remained unknown. K. Tuncay Tekle, Yanhong A. Liu |
SIGMOD Conference | 2 |
| 2010 | Alias analysis for optimization of dynamic languagesabstractDynamic languages such as Python allow programs to be written more easily using high-level constructs such as comprehensions for queries and using generic code. Efficient execution of programs then requires powerful optimizations - incrementalization of expensive queries and specialization of generic code. Effective incrementalization and specialization of dynamic languages require precise and scalable alias analysis. Michael Gorbovitski, Yanhong A. Liu, Scott D. Stoller, Tom Rothamel, K. Tuncay Tekle |
DLS | 2 |
| 2010 | Graph queries through datalog optimizationsabstractThis paper describes the use of a powerful graph query language for querying programs, and a novel combination of transformations for generating efficient implementations of the queries. The language supports graph path expressions that allow convenient use of both vertices and edges of arbitrary kinds as well as additional global and local parameters in graph paths. Our implementation method combines transformation to Datalog, recursion conversion, demand transformation, and specialization, and finally generates efficient analysis programs with precise complexity guarantees. This combination improves an O(VE) time complexity factor using previous methods to O(E), where V and E are the numbers of graph vertices and edges, respectively. We also describe implementations and experiments that confirm the analyzed complexities. K. Tuncay Tekle, Michael Gorbovitski, Yanhong A. Liu |
PPDP | 3 |
| 2010 | Precise complexity analysis for efficient datalog queriesabstractGiven a set of Datalog rules, facts, and a query, answers to the query can be inferred bottom-up starting with the facts or top-down starting with the query. For efficiently answering the query, top-down evaluation is extended with tabling that stores the results of the subqueries encountered, and bottom-up evaluation is done on rules transformed based on demand from the query. K. Tuncay Tekle, Yanhong A. Liu |
PPDP | 2 |
| 2009 | Model Checking Linearizability via Refinement
Yang Liu 0003, Wei Chen 0013, Yanhong A. Liu, Jun Sun 0001 |
FM | 3 |
| 2009 | A language and framework for invariant-driven transformationsabstractThis paper describes a language and framework that allow coordinated transformations driven by invariants to be specified declaratively, as invariant rules, and applied automatically. The framework supports incremental maintenance of invariants for program design and optimization, as well as general transformations for instrumentation, refactoring, and other purposes. This paper also describes our implementations for transforming Python and C programs and experiments with successful applications of the systems in generating efficient implementations from clear and modular specifications, in instrumenting programs for runtime verification, profiling, and debugging, and in code refactoring. Yanhong A. Liu, Michael Gorbovitski, Scott D. Stoller |
GPCE | 1 |
| 2009 | Formal Verification of Scalable NonZero Indicators
Shao Jie Zhang, Yang Liu 0003, Jun Sun 0001, Jin Song Dong 0001, Wei Chen 0013, Yanhong A. Liu |
SEKE | 6 |
| 2009 | From datalog rules to efficient programs with time and space guaranteesabstractThis article describes a method for transforming any given set of Datalog rules into an efficient specialized implementation with guaranteed worst-case time and space complexities, and for computing the complexities from the rules. The running time is optimal in the sense that only useful combinations of facts that lead to all hypotheses of a rule being simultaneously true are considered, and each such combination is considered exactly once in constant time. The associated space usage may sometimes be reduced using scheduling optimizations to eliminate some summands in the space usage formula. The transformation is based on a general method for algorithm design that exploits fixed-point computation, incremental maintenance of invariants, and combinations of indexed and linked data structures. We apply the method to a number of analysis problems, some with improved algorithm complexities and all with greatly improved algorithm understanding and greatly simplified complexity analysis. Yanhong A. Liu, Scott D. Stoller |
ACM Trans. Program. Lang. Syst. | 1 |
| 2008 | Generating incremental implementations of object-set queriesabstractHigh-level query constructs help greatly improve the clarity of programs and the productivity of programmers, and are being introduced to increasingly more languages. However, the use of high-level queries in programming languages can come at a cost to program efficiency, because these queries are expensive and may be computed repeatedly on slightly changed inputs. For efficient computation in practical applications, a powerful method is needed to incrementally maintain query results with respect to updates to query parameters. Tom Rothamel, Yanhong A. Liu |
GPCE | 2 |
| 2008 | Analysis and Transformations for Efficient Query-Based DebuggingabstractThis paper describes a framework that supports powerful queries in debugging tools, and describes in particular the transformations, alias analysis, and type analysis used to make the queries efficient. The framework allows queries over the states of all objects at any point in the execution as well as over the history of states. The transformations are based on incrementally maintaining the results of expensive queries studied in previous work. The alias analysis extends the flow-sensitive intraprocedural analysis to an efficient flow-sensitive interprocedural analysis for an object-oriented language with also a form of context sensitivity. We also show the power of the framework and the effectiveness of the analyses through case studies and experiments with XML DOM tree transformations, an FTP client, and others. We were able to easily determine the sources of all injected bugs, and we also found an actual bug in the case study on the FTP client. Michael Gorbovitski, K. Tuncay Tekle, Tom Rothamel, Scott D. Stoller, Yanhong A. Liu |
SCAM | 5 |
| 2007 | Efficient implementation of tuple pattern based retrievalabstractTuple pattern based retrieval is a language construct that matches a tuple pattern against a set of tuples to retrieve components of those tuples. This high-level abstraction allows programs to be written more easily and clearly than otherwise. This paper describes a clean and automatic method for transforming tuple pattern based retrievals into efficient implementations. The paper also presents two systems that implement the method, and describes successful experience and experiments in generating efficient implementations for graph algorithms, program analysis, security, and other applications. Tom Rothamel, Yanhong A. Liu |
PEPM | 2 |
| 2007 | Efficient trust management policy analysis from rulesabstractThis paper describes a systematic method for deriving efficient algorithms and precise time complexities from extended Datalog rules as it is applied to the analysis of trust management policies specified in SPKI/SDSI, a well-known trust management framework designed to facilitate the development of secure and scalable distributed computing systems. The approach of expressing policy analysis problems as extended Datalog rules is much simpler than previous techniques for analysis of SPKI/SDSI policies. Our method also derives better, more precise time complexities than before in addition to generating complete algorithms and data structures. The method is general, with many applications beyond policy analysis. It extends our previous method for Datalog to handle list constructors, external functions, and queries. Katia Hristova, K. Tuncay Tekle, Yanhong A. Liu |
PPDP | 3 |
| 2006 | Generating optimized code from SCR specificationsabstractA promising trend in software development is the increasing adoption of model-driven design. In this approach, a developer first constructs an abstract model of the required program behavior in a language, such as Statecharts or Stateflow, and then uses a code generator to automatically transform the model into an executable program. This approach has many advantages---typically, a model is not only more concise than code and hence more understandable, it is also more amenable to mechanized analysis. Moreover, automatic generation of code from a model usually produces code with fewer errors than hand-crafted code.One serious problem, however, is that a code generator may produce inefficient code. To address this problem, this paper describes a method for generating efficient code from SCR (Software Cost Reduction) specifications. While the SCR tabular notation and tools have been used successfully to specify, simulate, and verify numerous embedded systems, until now SCR has lacked an automated method for generating optimized code. This paper describes an efficient method for automatic code generation from SCR specifications, together with an implementation and an experimental evaluation. The method first synthesizes an execution-flow graph from the specification, then applies three optimizations to the graph, namely, input slicing, simplification, and output slicing, and then automatically generates code from the optimized graph. Experiments on seven benchmarks demonstrate that the method produces significant performance improvements in code generated from large specifications. Moreover, code generation is relatively fast, and the code produced is relatively compact. Tom Rothamel, Yanhong A. Liu, Constance L. Heitmeyer, Elizabeth I. Leonard |
LCTES | 2 |
| 2006 | Querying Complex Graphs
Yanhong A. Liu, Scott D. Stoller |
PADL | 1 |
| 2006 | Core role-based access control: efficient implementations by transformationsabstractThis paper describes a transformational method applied to the core component of role-based access control (RBAC), to derive efficient implementations from a specification based on the ANSI standard for RBAC. The method is based on the idea of incrementally maintaining the result of expensive set operations, where a new method is described and used for systematically deriving incrementalization rules. We calculate precise complexities for three variants of efficient implementations as well as for a straightforward implementation based on the specification. We describe successful prototypes and experiments for the efficient implementations and for automatically generating efficient implementations from straightforward implementations. Yanhong A. Liu, Michael Gorbovitski, Tom Rothamel, Yongxi Cheng, Yingchao Zhao 0001 |
PEPM | 1 |
| 2006 | Improved Algorithm Complexities for Linear Temporal Logic Model Checking of Pushdown Systems
Katia Hristova, Yanhong A. Liu |
VMCAI | 2 |
| 2005 | Incrementalization across object abstractionabstractObject abstraction supports the separation of what operations are provided by systems and components from how the operations are implemented, and is essential in enabling the construction of complex systems from components. Unfortunately, clear and modular implementations have poor performance when expensive query operations are repeated, while efficient implementations that incrementally maintain these query results are much more difficult to develop and to understand, because the code blows up significantly, and is no longer clear or modular.This paper describes a powerful and systematic method that first allows the "what" of each component to be specified in a clear and modular fashion and implemented straightforwardly in an object-oriented language; then analyzes the queries and updates, across object abstraction, in the straightforward implementation; and finally derives the sophisticated and efficient "how" of each component by incrementally maintaining the results of repeated expensive queries with respect to updates to their parameters. Our implementation and experimental results for example applications in query optimization, role-based access control, etc. demonstrate the effectiveness and benefit of the method. Yanhong A. Liu, Scott D. Stoller, Michael Gorbovitski, Tom Rothamel, Yanni Ellen Liu |
OOPSLA | 1 |
| 2005 | Optimizing aggregate array computations in loopsabstractAn aggregate array computation is a loop that computes accumulated quantities over array elements. Such computations are common in programs that use arrays, and the array elements involved in such computations often overlap, especially across iterations of loops, resulting in significant redundancy in the overall computations. This article presents a method and algorithms that eliminate such overlapping aggregate array redundancies and shows analytical and experimental performance improvements. The method is based on incrementalization, that is, updating the values of aggregate array computations from iteration to iteration rather than computing them from scratch in each iteration. This involves maintaining additional values not maintained in the original program. We reduce various analysis problems to solving inequality constraints on loop variables and array subscripts, and we apply results from work on array data dependence analysis. For aggregate array computations that have significant redundancy, incrementalization produces drastic speedup compared to previous optimizations; when there is little redundancy, the benefit might be offset by cache effects and other factors. Previous methods for loop optimizations of arrays do not perform incrementalization, and previous techniques for loop incrementalization do not handle arrays. Yanhong A. Liu, Scott D. Stoller, Tom Rothamel |
ACM Trans. Program. Lang. Syst. | 1 |
| 2004 | Parametric regular path queriesabstractRegular path queries are a way of declaratively expressing queries on graphs as regular-expression-like patterns that are matched against paths in the graph. There are two kinds of queries: existential queries, which specify properties about individual paths, and universal queries, which specify properties about all paths. They provide a simple and convenient framework for expressing program analyses as queries on graph representations of programs, for expressing verification (model-checking) problems as queries on transition systems, for querying semi-structured data, etc. Parametric regular path queries extend the patterns with variables, called parameters, which significantly increase the expressiveness by allowing additional information along single or multiple paths to be captured and relate.This paper shows how a variety of program analysis and model-checking problems can be expressed easily and succinctly using parametric regular path queries. The paper describes the specification, design, analysis, and implementation of algorithms and data structures for efficiently solving existential and universal parametric regular path queries. Major contributions include the first complete algorithms and data structures for directly and efficiently solving existential and universal parametric regular path queries, detailed complexity analysis of the algorithms, detailed analytical and experimental performance comparison of variations of the algorithms and data structures, and investigation of efficiency tradeoffs between different formulations of queries. Yanhong A. Liu, Tom Rothamel, Fuxiang Yu, Scott D. Stoller, Nanjun Hu |
PLDI | 1 |
| 2003 | Optimizing Ackermann's function by incrementalizationabstractThis paper describes a formal derivation of an optimized Ackermann's function following a general and systematic method based on incrementalization. The method identifies an appropriate input increment operation and computes the function by repeatedly performing an incremental computation at the step of the increment. This eliminates repeated subcomputations in executions that follow the straightforward recursive definition of Ackermann's function, yielding an optimized program that is drastically faster and takes extremely little space. This case study uniquely shows the power and limitation of the incrementalization method, as well as both the iterative and recursive nature of computation underlying the optimized Ackermann's function. Yanhong A. Liu, Scott D. Stoller |
PEPM | 1 |
| 2003 | From datalog rules to efficient programs with time and space guaranteesabstractThis paper describes a method for transforming any given set of Datalog rules into an efficient specialized implementation with guaranteed worst-case time and space complexities, and for computing the complexities from the rules. The running time is optimal in the sense that only useful combinations of facts that lead to all hypotheses of a rule being simultaneously true are considered, and each such combination is considered exactly once. The associated space usage is optimal in that it is the minimum space needed for such consideration modulo scheduling optimizations that may eliminate some summands in the space usage formula. The transformation is based on a general method for algorithm design that exploits fixed-point computation, incremental maintenance of invariants, and combinations of indexed and linked data structures. We apply the method to a number of analysis problems, some with improved algorithm complexities and all with greatly improved algorithm understanding and greatly simplified complexity analysis. Yanhong A. Liu, Scott D. Stoller |
PPDP | 1 |
| 2003 | Optimized Live Heap Bound Analysis
Leena Unnikrishnan, Scott D. Stoller, Yanhong A. Liu |
VMCAI | 3 |
| 2003 | Eliminating dead code on recursive data
Yanhong A. Liu, Scott D. Stoller |
Sci. Comput. Program. | 1 |
| 2003 | A systematic incrementalization technique and its application to hardware design
Steven D. Johnson, Yanhong A. Liu |
Int. J. Softw. Tools Technol. Transf. | 2 |
| 2002 | Solving Regular Path Queries
Yanhong A. Liu, Fuxiang Yu |
MPC | 1 |
| 2002 | Automatic time-bound analysis for a higher-order languageabstractAnalysis of program running time is important for several applications, including reactive systems, interactive environments, compiler optimizations and performance evaluation. Automatic and efficient prediction of accurate time bounds is particularly important, and being able to do so for high-level languages is particularly desirable. This paper presents a general approach for automatic and accurate time-bound analysis for a functional high-level language, that combines methods and techniques studied in theory, languages, and systems. The approach consists of transformations for building time-bound functions in the presence of partially known input structures, symbolic evaluation of the time-bound function based on input parameters, optimizations to make the analysis efficient as well as accurate, and measurements of primitive parameters, all at the source-language level. To handle higher-order functions, special transformations are needed to build lambda expressions for computing running times, to optimize the construction of the time lambda expressions, and to optimize the symbolic evaluation. It took us several tries to obtain the simple and concise transformations for handling lambda expressions. We describe analysis and transformation algorithms and explain how they work. We have implemented this approach and performed a large number of experiments analyzing Scheme programs. The measured worst-case times are closely bounded by the calculated bounds. We describe our prototype system, ALPA, as well as the analysis and measurement results. Gustavo Gomez, Yanhong A. Liu |
PEPM | 2 |
| 2002 | Program optimization using indexed and recursive data structuresabstractThis paper describes a systematic method for optimizing recursive functions using both indexed and recursive data structures. The method is based on two critical ideas: first, determining a minimal input increment operation so as to compute a function on repeatedly incremented input; second, determining appropriate additional values to maintain in appropriate data structures, based on what values are needed in computation on an incremented input and how these values can be established and accessed. Once these two are determined, the method extends the original program to return the additional values, derives an incremental version of the extended program, and forms an optimized program that repeatedly calls the incremental program. The method can derive all dynamic programming algorithms found in standard algorithm textbooks. There are many previous methods for deriving efficient algorithms, but none is as simple, general, and systematic as ours. Yanhong A. Liu, Scott D. Stoller |
PEPM | 1 |
| 2001 | Automated Software Engineering Using Concurrent Class MachinesabstractConcurrent Class Machines are a novel state-machine model that directly captures a variety of object-oriented concepts, including classes and inheritance, objects and object creation, methods, method invocation and exceptions, multithreading and abstract collection types. The model can be understood as a precise definition of UML activity diagrams which, at the same time, offers an executable, object-oriented alternative to event-based statecharts. It can also be understood as a visual, combined control and data flow model for multithreaded object-oriented programs. We first introduce a visual notation and tool for Concurrent Class Machines and discuss their benefits in enhancing system design. We then equip this notation with a precise semantics that allows us to define refinement and modular refinement rules. Finally, we summarize our work on generation of optimized code, implementation and experiments, and compare with related work. Radu Grosu, Yanhong A. Liu, Scott A. Smolka, Scott D. Stoller |
ASE | 2 |
| 2001 | Solving Regular Tree Grammar Based Constraints
Yanhong A. Liu, Scott D. Stoller |
SAS | 1 |
| 2001 | Strengthening invariants for efficient computation
Yanhong A. Liu, Scott D. Stoller, Tim Teitelbaum |
Sci. Comput. Program. | 1 |
| 2001 | Automatic Accurate Cost-Bound Analysis for High-Level LanguagesabstractThis paper describes a language-based approach for automatic and accurate cost-bound analysis. The approach consists of transformations for building cost-bound functions in the presence of partially known input structures, symbolic evaluation of the cost-bound function based on input size parameters, and optimizations to make the overall analysis efficient as well as accurate, all at the source-language level. The calculated cost bounds are expressed in terms of primitive cost parameters. These parameters can be obtained based on the language implementation or can be measured conservatively or approximately, yielding accurate, conservative, or approximate time or space bounds. We have implemented this approach and performed a number of experiments for analyzing Scheme programs. The results helped confirm the accuracy of the analysis. Yanhong A. Liu, Gustavo Gomez |
IEEE Trans. Computers | 1 |
| 2000 | Efficient Detection of Global Properties in Distributed Systems Using Partial-Order Methods
Scott D. Stoller, Leena Unnikrishnan, Yanhong A. Liu |
CAV | 3 |
| 2000 | From Recursion to Iteration: What are the Optimizations?abstractTransforming recursion into iteration eliminates the use of stack frames during program execution. It has been studied extensively. This paper describes a powerful and systematic method, based on incrementalization, for transforming general recursion into iteration: identify an input increment, derive an incremental version under the input increment, and form an iterative computation using the incremental version. Exploiting incrementalization yields iterative computation in a uniform way and also allows additional optimizations to be explored cleanly and applied systematically, in most cases yielding iterative programs that use constant additional space, reducing additional space usage asymptotically, and run much faster. We summarize major optimizations, complexity improvements, and performance measurements. Yanhong A. Liu, Scott D. Stoller |
PEPM | 1 |
| 1999 | Dynamic Programming via Static Incrementalization
Yanhong A. Liu, Scott D. Stoller |
ESOP | 1 |
| 1999 | Eliminating Dead Code on Recursive Data
Yanhong A. Liu, Scott D. Stoller |
SAS | 1 |
| 1998 | Efficient Symbolic Detection of Global Properties in Distributed Systems
Scott D. Stoller, Yanhong A. Liu |
CAV | 2 |
| 1998 | Automating Derivation of Incremental ProgramsabstractNo abstract available. Yanhong A. Liu |
ICFP | 2 |
| 1998 | Static Caching for Incremental ComputationabstractA systematic approach is given for deriving incremental programs that exploit caching. The cache-and-prune method presented in the article consists of three stages: (I) the original program is extended to cache the results of all its intermediate subcomputations as well as the final result, (II)) the extended program is incrementalized so that computation on a new input can use all intermediate results on an old input, and (III) unused results cached by the extended program and maintained by the incremental program are pruned away, leaving a pruned extended program that caches only useful intermediate results and a pruned incremental program that uses and maintains only useful results. All three stages utilize static analyses and semantics-preserving transformations. Stages I and III are simple, clean, and fully automatable. The overall method has a kind of optimality with respect to the techniques used in Stage II. The method can be applied straightfowardly to provide a systematic approach to program improvement via caching. Yanhong A. Liu, Scott D. Stoller, Tim Teitelbaum |
ACM Trans. Program. Lang. Syst. | 1 |
| 1996 | Discovering Auxiliary Information for Incremental ComputationabstractThis paper presents program analyses and transformations that discover a general class of auxiliary information for any incremental computation problem. Combining these techniques with previous techniques for caching intermediate results, we obtain a systematic approach that transforms nonincremental programs into efficient incremental programs that use and maintain useful auxiliary information as well as useful intermediate results. The use of auxiliary information allows us to achieve a greater degree of incrementality than otherwise possible. Applications of the approach include strength reduction in optimizing compilers and finite differencing in transformational programming. Yanhong A. Liu, Scott D. Stoller, Tim Teitelbaum |
POPL | 1 |
| 1995 | Caching Intermediate Results for Program ImprovementabstractA systematic approach is given for symbolically caching intermediate results useful for deriving incremental programs from non-incremental programs. Our method can be applied straightforwardly to provide a systematic approach to program improvement via caching. 1 Introduction Incremental programs take advantage of repeated computations on inputs that differ only slightly from one another, making use of the old output in computing a new output rather than computing from scratch. Methods of incremental computation have widespread application, e.g., optimizing compilers [2, 9, 11], transformational programming [30, 33, 43], interactive editing systems [4, 39], etc. Deriving incremental programs. Given a program f and an input change \\Phi, a program f 0 that computes the result of f(x \\Phi y) efficiently by making use of the value of f(x) is called an incremental version of f under \\Phi. Liu and Teitelbaum [27] give a systematic transformational approach for deriving an incremental p... Yanhong A. Liu, Tim Teitelbaum |
PEPM | 1 |
| 1995 | Systematic Derivation of Incremental ProgramsabstractA systematic approach is given for deriving incremental programs from non-incremental programs written in a standard functional programming language. We exploit a number of program analysis and transformation techniques and domain-specific knowledge, centered around effective utilization of caching, in order to provide a degree of incrementality not otherwise achievable by a generic incremental evaluator. Yanhong A. Liu, Tim Teitelbaum |
Sci. Comput. Program. | 1 |