Demo Data from EDBT 2026 / reviewers in the wild / expert
Chung-chieh Shan
dblp:s/ChungchiehShan
· DBLP profile ↗
31ranked-venue papers
2as first author
1since 2021 · last 2023
0000-0002-0339-6405ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 25 · 2 first-author · 1 since 2021Artificial intelligence and machine learning · 3Theory of computation · 3 · 1 first-authorDatabases, data management, data science and information retrieval · 2
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.
| Artificial intelligence
3 papers |
Probabilistic and Bayesian machine learning · 100% | |
| Software engineering, system software, and programming languages
2 papers |
Programming languages and type systems · 100% |
Topics — the 8 heaviest of 9, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Machine learning › Probabilistic and Bayesian machine learning
probabilistic programming |
1.1 | 2 | 2023 | Exact Recursive Probabilistic Programming · Proc. ACM Program. Lang. 2023 Symbolic Disintegration with a Variety of Base Measures · ACM Trans. Program. Lang. Syst. 2020 |
Machine learning › Probabilistic and Bayesian machine learning › probabilistic inference
exact inference |
0.7 | 1 | 2023 | Exact Recursive Probabilistic Programming · Proc. ACM Program. Lang. 2023 |
Programming languages and type systems › probabilistic programming
probabilistic programming language |
0.7 | 1 | 2023 | Exact Recursive Probabilistic Programming · Proc. ACM Program. Lang. 2023 |
Machine learning › Probabilistic and Bayesian machine learning › statistical inference
bayesian inference |
0.3 | 1 | 2017 | Exact Bayesian inference by symbolic disintegration · POPL 2017 |
Machine learning › Probabilistic and Bayesian machine learning › statistical inference › bayesian inference › posterior inference
exact bayesian inference |
0.3 | 1 | 2017 | Exact Bayesian inference by symbolic disintegration · POPL 2017 |
Programming languages and type systems › probabilistic programming
probabilistic program semantics |
0.3 | 1 | 2017 | Exact Bayesian inference by symbolic disintegration · POPL 2017 |
Programming languages and type systems › type systems › substructural type systems
linear types |
0.2 | 1 | 2023 | Exact Recursive Probabilistic Programming · Proc. ACM Program. Lang. 2023 |
Programming languages and type systems
type systems |
0.2 | 1 | 2023 | Exact Recursive Probabilistic Programming · Proc. ACM Program. Lang. 2023 |
Methods — techniques the papers use, named apart from their topics
refunctionalization · 1.3greedy algorithm · 1.3defunctionalization · 1.3symbolic computation · 0.6disintegration · 0.6type inference · 0.4equational reasoning · 0.4
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2023 | Exact Recursive Probabilistic ProgrammingabstractRecursive calls over recursive data are useful for generating probability distributions, and probabilistic programming allows computations over these distributions to be expressed in a modular and intuitive way. Exact inference is also useful, but unfortunately, existing probabilistic programming languages do not perform exact inference on recursive calls over recursive data, forcing programmers to code many applications manually. We introduce a probabilistic language in which a wide variety of recursion can be expressed naturally, and inference carried out exactly. For instance, probabilistic pushdown automata and their generalizations are easy to express, and polynomial-time parsing algorithms for them are derived automatically. We eliminate recursive data types using program transformations related to defunctionalization and refunctionalization. These transformations are assured correct by a linear type system, and a successful choice of transformations, if there is one, is guaranteed to be found by a greedy algorithm. David Chiang 0001, Colin McDonald, Chung-chieh Shan |
Proc. ACM Program. Lang. | 3 |
| 2020 | Symbolic Disintegration with a Variety of Base MeasuresabstractDisintegration is a relation on measures and a transformation on probabilistic programs that generalizes density calculation and conditioning, two operations widely used for exact and approximate inference. Existing program transformations that find a disintegration or density automatically are limited to a fixed base measure that is an independent product of Lebesgue and counting measures, so they are of no help in practical cases that require tricky reasoning about other base measures. We present the first disintegrator that handles variable base measures, including discrete-continuous mixtures , dependent products , and disjoint sums . By analogy with type inference, our disintegrator can check a given base measure as well as infer an unknown one that is principal. We derive the disintegrator and prove it sound by equational reasoning from semantic specifications. It succeeds in a variety of applications where disintegration and density calculation had not been previously mechanized. Praveen Narayanan, Chung-chieh Shan |
ACM Trans. Program. Lang. Syst. | 2 |
| 2019 | From high-level inference algorithms to efficient codeabstractProbabilistic programming languages are valuable because they allow domain experts to express probabilistic models and inference algorithms without worrying about irrelevant details. However, for decades there remained an important and popular class of probabilistic inference algorithms whose efficient implementation required manual low-level coding that is tedious and error-prone. They are algorithms whose idiomatic expression requires random array variables that are latent or whose likelihood is conjugate . Although that is how practitioners communicate and compose these algorithms on paper, executing such expressions requires eliminating the latent variables and recognizing the conjugacy by symbolic mathematics. Moreover, matching the performance of handwritten code requires speeding up loops by more than a constant factor. We show how probabilistic programs that directly and concisely express these desired inference algorithms can be compiled while maintaining efficiency. We introduce new transformations that turn high-level probabilistic programs with arrays into pure loop code. We then make great use of domain-specific invariants and norms to optimize the code, and to specialize and JIT-compile the code per execution. The resulting performance is competitive with manual implementations. Rajan Walia, Praveen Narayanan, Jacques Carette, Sam Tobin-Hochstadt, Chung-chieh Shan |
Proc. ACM Program. Lang. | 5 |
| 2018 | Calculating DistributionsabstractThe ways we reason about probability distributions and explore their applications have been naturally shifting: away from thoughtful proving with definitions using first principles, and towards mechanical calculation with expressions using derived principles. This talk reviews three useful operations on distributions that we have started to express using equational derivations and even to automate as program transformations. These operations are (1) to recognize a density function as belonging to a known distribution family, (2) to eliminate an unused random variable by summation or integration, and (3) to disintegrate a joint measure into a marginal and a conditional measure. It is thus promising to support probabilistic reasoning by drawing techniques from both programming languages and computer algebra. Ongoing challenges include how to handle a wide variety of container data types and generating programs, and how human guidance should interact with machine assistance. Chung-chieh Shan |
PPDP | 1 |
| 2017 | Exact Bayesian inference by symbolic disintegrationabstractBayesian inference, of posterior knowledge from prior knowledge and observed evidence, is typically defined by Bayes's rule, which says the posterior multiplied by the probability of an observation equals a joint probability. But the observation of a continuous quantity usually has probability zero, in which case Bayes's rule says only that the unknown times zero is zero. To infer a posterior distribution from a zero-probability observation, the statistical notion of disintegration tells us to specify the observation as an expression rather than a predicate, but does not tell us how to compute the posterior. We present the first method of computing a disintegration from a probabilistic program and an expression of a quantity to be observed, even when the observation has probability zero. Because the method produces an exact posterior term and preserves a semantics in which monadic terms denote measures, it composes with other inference methods in a modular way-without sacrificing accuracy or performance. Chung-chieh Shan, Norman Ramsey |
POPL | 1 |
| 2017 | Composing Inference Algorithms as Program Transformations
Robert Zinkov, Chung-chieh Shan |
UAI | 2 |
| 2017 | Symbolic conditioning of arrays in probabilistic programsabstractProbabilistic programming systems make machine learning more modular by automatinginference. Recent work by Shan and Ramsey makes inference more modular by automatingconditioning. Their technique uses a symbolic program transformation that treats conditioning generally via the measure-theoretic notion ofdisintegration. This technique, however, is limited to conditioning a single scalar variable. As a step towards modular inference for realistic machine learning applications, we have extended the disintegration algorithm to symbolically condition arrays in probabilistic programs. The extended algorithm implementslifted disintegration, where repetition is treated symbolically and without unrolling loops. The technique uses a language ofindex variablesfor tracking expressions at various array levels. We find that the method works well for arbitrarily-sized arrays of independent random choices, with the conditioning step taking time linear in the number of indices needed to select an element. Praveen Narayanan, Chung-chieh Shan |
Proc. ACM Program. Lang. | 2 |
| 2016 | Deriving a probability density calculator (functional pearl)abstractGiven an expression that denotes a probability distribution, often we want a corresponding density function, to use in probabilistic inference. Fortunately, the task of finding a density has been automated. It turns out that we can derive a compositional procedure for finding a density, by equational reasoning about integrals, starting with the mathematical specification of what a density is. Moreover, the density found can be run as an estimation algorithm, as well as simplified as an exact formula to improve the estimate. Wazim Mohammed Ismail, Chung-chieh Shan |
ICFP | 2 |
| 2016 | Simplifying Probabilistic Programs Using Computer Algebra
Jacques Carette, Chung-chieh Shan |
PADL | 2 |
| 2015 | Combinators for impure yet hygienic code generation
Yukiyoshi Kameyama, Oleg Kiselyov, Chung-chieh Shan |
Sci. Comput. Program. | 3 |
| 2014 | Combinators for impure yet hygienic code generationabstractCode generation is the leading approach to making high-performance software reusable. Effects are indispensable in code generators, whether to report failures or to insert let-statements and if-guards. Extensive painful experience shows that unrestricted effects interact with generated binders in undesirable ways to produce unexpectedly unbound variables, or worse, unexpectedly bound ones. These subtleties hinder domain experts in using and extending the generator. A pressing problem is thus to express the desired effects while regulating them so that the generated code is correct, or at least correctly scoped, by construction. Yukiyoshi Kameyama, Oleg Kiselyov, Chung-chieh Shan |
PEPM | 3 |
| 2013 | Shonan challenge for generative programming: short position paperabstractThe appeal of generative programming is "abstraction without guilt": eliminating the vexing trade-off between writing high-level code and highly-performant code. Generative programming also promises to formally capture the domain-specific knowledge and heuristics used by high-performance computing (HPC)experts. How far along are we in fulfilling these promises? To gauge our progress, a recent Shonan Meeting on "bridging the theory of staged programming languages and the practice of high-performance computing" proposed to use a set of benchmarks, dubbed "Shonan Challenge". Baris Aktemur, Yukiyoshi Kameyama, Oleg Kiselyov, Chung-chieh Shan |
PEPM | 4 |
| 2012 | Entailment above the word level in distributional semantics
Marco Baroni, Raffaella Bernardi, Ngoc-Quynh Do, Chung-chieh Shan |
EACL | 4 |
| 2012 | Enhancing JavaScript with Transactions
Mohan Dhawan, Chung-chieh Shan, Vinod Ganapathy |
ECOOP | 2 |
| 2012 | An Analysis of the Mozilla Jetpack Extension Framework
Rezwana Karim, Mohan Dhawan, Vinod Ganapathy, Chung-chieh Shan |
ECOOP | 4 |
| 2011 | Purely functional lazy nondeterministic programmingabstractAbstract Functional logic programming and probabilistic programming have demonstrated the broad benefits of combining laziness (nonstrict evaluation with sharing of the results) with nondeterminism. Yet these benefits are seldom enjoyed in functional programming because the existing features for nonstrictness, sharing, and nondeterminism in functional languages are tricky to combine. We present a practical way to write purely functional lazy nondeterministic programs that are efficient and perspicuous. We achieve this goal by embedding the programs into existing languages (such as Haskell, SML, and OCaml) with high-quality implementations, by making choices lazily and representing data with nondeterministic components, by working with custom monadic data types and search strategies, and by providing equational laws for the programmer to reason about their code. Sebastian Fischer 0001, Oleg Kiselyov, Chung-chieh Shan |
J. Funct. Program. | 3 |
| 2011 | Shifting the stage - Staging with delimited controlabstractAbstract It is often hard to write programs that are efficient yet reusable. For example, an efficient implementation of Gaussian elimination should be specialized to the structure and known static properties of the input matrix. The most profitable optimizations, such as choosing the best pivoting or memoization, cannot be expected of even an advanced compiler because they are specific to the domain, but expressing these optimizations directly makes for ungainly source code. Instead, a promising and popular way to reconcile efficiency with reusability is for a domain expert to write code generators. Two pillars of this approach are types and effects. Typed multilevel languages such as MetaOCaml ensure safety and early error reporting: a well-typed code generator neither goes wrong nor generates code that goes wrong. Side effects such as state and control ease correctness and expressivity : An effectful generator can resemble the textbook presentation of an algorithm, as is familiar to domain experts, yet insert let for memoization and if for bounds checking, as is necessary for efficiency. Together, types and effects enable structuring code generators as compositions of modules with well-defined interfaces, and hence scaling to large programs. However, blindly adding effects renders multilevel types unsound. We introduce the first multilevel calculus with control effects and a sound type system. We give small-step operational semantics as well as a one-pass continuation-passing-style translation. For soundness, our calculus restricts the code generator's effects to the scope of generated binders. Even with this restriction, we can finally write efficient code generators for dynamic programming and numerical methods in direct style, like in algorithm textbooks, rather than in continuation-passing or monadic style. Yukiyoshi Kameyama, Oleg Kiselyov, Chung-chieh Shan |
J. Funct. Program. | 3 |
| 2009 | Purely functional lazy non-deterministic programmingabstractFunctional logic programming and probabilistic programming have demonstrated the broad benefits of combining laziness (non-strict evaluation with sharing of the results) with non-determinism. Yet these benefits are seldom enjoyed in functional programming, because the existing features for non-strictness, sharing, and non-determinism in functional languages are tricky to combine. Sebastian Fischer 0001, Oleg Kiselyov, Chung-chieh Shan |
ICFP | 3 |
| 2009 | Shifting the stage: staging with delimited controlabstractIt is often hard to write programs that are efficient yet reusable. For example, an efficient implementation of Gaussian elimination should be specialized to the structure and known static properties of the input matrix. The most profitable optimizations, such as choosing the best pivoting or memoization, cannot be expected of even an advanced compiler because they are specific to the domain, but expressing these optimizations directly makes for ungainly source code. Instead, a promising and popular way to reconcile efficiency with reusability is for a domain expert to write code generators. Yukiyoshi Kameyama, Oleg Kiselyov, Chung-chieh Shan |
PEPM | 3 |
| 2009 | Monolingual Probabilistic Programming Using Generalized Coroutines
Oleg Kiselyov, Chung-chieh Shan |
UAI | 2 |
| 2009 | Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languagesabstractAbstract We have built the first family of tagless interpretations for a higher-order typed object language in a typed metalanguage (Haskell or ML) that require no dependent types, generalized algebraic data types, or postprocessing to eliminate tags. The statically type-preserving interpretations include an evaluator, a compiler (or staged evaluator), a partial evaluator, and call-by-name and call-by-value continuation-passing style (CPS) transformers. Our principal technique is to encode de Bruijn or higher-order abstract syntax using combinator functions rather than data constructors. In other words, we represent object terms not in an initial algebra but using the coalgebraic structure of the λ-calculus. Our representation also simulates inductive maps from types to types, which are required for typed partial evaluation and CPS transformations. Our encoding of an object term abstracts uniformly over the family of ways to interpret it, yet statically assures that the interpreters never get stuck. This family of interpreters thus demonstrates again that it is useful to abstract over higher-kinded types. Jacques Carette, Oleg Kiselyov, Chung-chieh Shan |
J. Funct. Program. | 3 |
| 2008 | Lightweight monadic regionsabstractWe present Haskell libraries that statically ensure the safe use of resources such as file handles. We statically prevent accessing an already closed handle or forgetting to close it. The libraries can be trivially extended to other resources such as database connections and graphic contexts.Because file handles and similar resources are scarce, we want to not just assure their safe use but further deallocate them soon after they are no longer needed. Relying on Fluet and Morrisett's [4] calculus of nested regions, we contribute a novel, improved, and extended implementation of the calculus in Haskell, with file handles as resources.Our library supports region polymorphism and implicit region subtyping, along with higher-order functions, mutable state, recursion, and run-time exceptions. A program may allocate arbitrarily many resources and dispose of them in any order, not necessarily LIFO. Region annotations are part of an expression's inferred type.Our new Haskell encoding of monadic regions as monad transformers needs no witness terms. It assures timely deallocation even when resources have markedly different lifetimes and the identity of the longest-living resource is determined only dynamically.For contrast, we also implement a Haskell library for manual resource management, where deallocation is explicit and safety is assured by a form of linear types. We implement the linear typing in Haskell with the help of phantom types and a parameterized monad to statically track the type-state of resources. Oleg Kiselyov, Chung-chieh Shan |
Haskell | 2 |
| 2008 | Closing the stage: from staged code to typed closuresabstractCode generation lets us write well-abstracted programs without performance penalty. Writing a correct code generator is easier than building a full-scale compiler but still hard. Typed multistage languages such as MetaOCaml help in two ways: they provide simple annotations to express code generation, and they assure that the generated code is well-typed and well-scoped. Unfortunately, the assurance only holds without side effects such as state and control. Without effects, generators often have to be written in a continuation-passing or monadic style that has proved inconvenient. It is thus a pressing open problem to combine effects with staging in a sound type system. Yukiyoshi Kameyama, Oleg Kiselyov, Chung-chieh Shan |
PEPM | 3 |
| 2007 | Finally Tagless, Partially Evaluated
Jacques Carette, Oleg Kiselyov, Chung-chieh Shan |
APLAS | 3 |
| 2007 | Boosting Optimal Logical Patterns Using Noisy DataabstractWe consider the supervised learning of a binary classifier from noisy observations. We use smooth boosting to linearly combine abstaining hypotheses, each of which maps a subcube of the attribute space to one of the two classes. We introduce a new branch-and-bound weak learner to maximize the agreement rate of each hypothesis. Dobkin et al. give an algorithm for maximizing agreement with real-valued attributes [9]. Our algorithm improves on the time complexity of Dobkin et al.'s as long as the data can be binarized so that the number of binary attributes is o(log of the number of observations × number of real-valued attributes). Furthermore, we have fine-tuned our branch-and-bound algorithm with a queuing discipline and optimality gap to make it fast in practice. Finally, since logical patterns in Hammer et al.'s Logical Analysis of Data (LAD) framework [8, 6] are equivalent to abstaining monomial hypotheses, any boosting algorithm can be combined with our proposed weak learner to construct LAD models. On various data sets, our method outperforms state-of-the-art methods that use suboptimal or heuristic weak learners, such as SLIPPER. It is competitive with other optimizing classifiers that combine monomials, such as LAD. Compared to LAD, our method eliminates many free parameters that restrict the hypothesis space and require extensive fine-tuning by cross-validation. Noam Goldberg, Chung-chieh Shan |
SDM | 2 |
| 2006 | Delimited dynamic bindingabstractDynamic binding and delimited control are useful together in many settings, including Web applications, database cursors, and mobile code. We examine this pair of language features to show that the semantics of their interaction is ill-defined yet not expressive enough for these uses.We solve this open and subtle problem. We formalise a typed language DB+DC that combines a calculus DB of dynamic binding and a calculus DC of delimited control. We argue from theoretical and practical points of view that its semantics should be based on delimited dynamic binding: capturing a delimited continuation closes over part of the dynamic environment, rather than all or none of it; reinstating the captured continuation supplements the dynamic environment, rather than replacing or inheriting it. We introduce a type- and reduction-preserving translation from DB + DC to DC, which proves that delimited control macro-expresses dynamic binding. We use this translation to implement DB+DC in Scheme, OCaml, and Haskell.We extend DB + DC with mutable dynamic variables and a facility to obtain not only the latest binding of a dynamic variable but also older bindings. This facility provides for stack inspection and (more generally) folding over the execution context as an inductive data structure. Oleg Kiselyov, Chung-chieh Shan, Amr Sabry |
ICFP | 2 |
| 2006 | On the static and dynamic extents of delimited continuations
Dariusz Biernacki, Olivier Danvy, Chung-chieh Shan |
Sci. Comput. Program. | 3 |
| 2005 | Backtracking, interleaving, and terminating monad transformers: (functional pearl)abstractWe design and implement a library for adding backtracking computations to any Haskell monad. Inspired by logic programming, our library provides, in addition to the operations required by the MonadPlus interface, constructs for fair disjunctions, fair conjunctions, conditionals, pruning, and an expressive top-level interface. Implementing these additional constructs is easy in models of backtracking based on streams, but not known to be possible in continuation-based models. We show that all these additional constructs can be generically and monadically realized using a single primitive msplit. We present two implementations of the library: one using success and failure continuations; and the other using control operators for manipulating delimited continuations. Oleg Kiselyov, Chung-chieh Shan, Daniel P. Friedman, Amr Sabry |
ICFP | 2 |
| 2005 | On the dynamic extent of delimited continuations
Dariusz Biernacki, Olivier Danvy, Chung-chieh Shan |
Inf. Process. Lett. | 3 |
| 2004 | Functional pearl: implicit configurations-or, type classes reflect the values of typesabstractThe configurations problem is to propagate run-time preferences throughout a program, allowing multiple concurrent configuration sets to coexist safely under statically guaranteed separation. This problem is common in all software systems, but particularly acute in Haskell, where currently the most popular solution relies on unsafe operations and compiler pragmas.We solve the configurations problem in Haskell using only stable and widely implemented language features like the type-class system. In our approach, a term expression can refer to run-time configuration parameters as if they were compile-time constants in global scope. Besides supporting such intuitive term notation and statically guaranteeing separation, our solution also helps improve the program's performance by transparently dispatching to specialized code at run-time. We can propagate any type of configuration data-numbers, strings, IO actions, polymorphic functions, closures, and abstract data types. No previous approach to propagating configurations implicitly in any language provides the same static separation guarantees.The enabling technique behind our solution is to propagate values via types, with the help of polymorphic recursion and higher-rank polymorphism. The technique essentially emulates local type-class instance declarations while preserving coherence. Configuration parameters are propagated throughout the code implicitly as part of type inference rather than explicitly by the programmer. Our technique can be regarded as a portable, coherent, and intuitive alternative to implicit parameters. It motivates adding local instances to Haskell, with a restriction that salvages principal types. Oleg Kiselyov, Chung-chieh Shan |
Haskell | 2 |
| 2002 | Question Answering: From Partitions to Prolog
Balder ten Cate, Chung-chieh Shan |
TABLEAUX | 2 |