Kwangkeun Yi

dblp:y/KwangkeunYi · DBLP profile ↗
← Back
57ranked-venue papers
9as first author
4since 2021 · last 2026
0009-0007-5027-2177ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 51 · 6 first-author · 4 since 2021Theory of computation · 6 · 2 first-authorDatabases, data management, data science and information retrieval · 2 · 1 first-authorSystems, architecture and hardware · 1 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1 · 1 first-author
YearPublicationVenuePosition
2026 Inductive Program Synthesis by Meta-Analysis-Guided Hole Filling
abstract
A popular approach to inductive program synthesis is to construct a target program via top-down search, starting from an incomplete program with holes and gradually filling these holes until a solution is found. During the search, abstraction-based pruning is used to eliminate infeasible candidate programs, significantly reducing the search space. Because of this pruning, the order in which holes are filled can drastically affect search efficiency: a wise choice can prune large swaths of the search space early, while a poor choice might explore many dead-ends. However, the choice of hole-filling order is largely unattended in program synthesis literature. In this paper, we propose a novel hole-filling strategy that leverages abstract interpretation to guide the order of hole-filling in program synthesis. Our approach overapproximates the behavior of the underlying abstract interpreter for pruning, enabling it to predict the most promising hole to fill next. We instantiate our approach to the domains of bitvectors and strings, which are commonly used in program synthesis tasks. We evaluate our approach on a set of benchmarks from the prior work, including SyGuS benchmarks, and show that it significantly outperforms the state-of-the-art approaches in terms of efficiency thanks to the abstract abstract interpretation techniques.
Doyoon Lee, Woosuk Lee, Kwangkeun Yi
Proc. ACM Program. Lang.3
2025 React-tRace: A Semantics for Understanding React Hooks: An Operational Semantics and a Visualizer for Clarifying React Hooks
abstract
React has become the most widely used web front-end framework, enabling the creation of user interfaces in a declarative and compositional manner. Hooks are a set of APIs that manage side effects in function components in React. However, their semantics are often seen as opaque to developers, leading to UI bugs. We introduce React-tRace , a formalization of the semantics of the essence of React Hooks, providing a semantics that clarifies their behavior. We demonstrate that our model captures the behavior of React, by theoretically showing that it embodies essential properties of Hooks and empirically comparing our React-tRace -definitional interpreter against a test suite. Furthermore, we showcase a practical visualization tool based on the formalization to demonstrate how developers can better understand the semantics of Hooks.
Joongwon Ahn, Kwangkeun Yi
Proc. ACM Program. Lang.3
2023 Inductive Program Synthesis via Iterative Forward-Backward Abstract Interpretation
abstract
A key challenge in example-based program synthesis is the gigantic search space of programs. To address this challenge, various work proposed to use abstract interpretation to prune the search space. However, most of existing approaches have focused only on forward abstract interpretation, and thus cannot fully exploit the power of abstract interpretation. In this paper, we propose a novel approach to inductive program synthesis via iterative forward-backward abstract interpretation. The forward abstract interpretation computes possible outputs of a program given inputs, while the backward abstract interpretation computes possible inputs of a program given outputs. By iteratively performing the two abstract interpretations in an alternating fashion, we can effectively determine if any completion of each partial program as a candidate can satisfy the input-output examples. We apply our approach to a standard formulation, syntax-guided synthesis (SyGuS), thereby supporting a wide range of inductive synthesis tasks. We have implemented our approach and evaluated it on a set of benchmarks from the prior work. The experimental results show that our approach significantly outperforms the state-of-the-art approaches thanks to the sophisticated abstract interpretation techniques.
Yongho Yoon, Woosuk Lee, Kwangkeun Yi
Proc. ACM Program. Lang.3
2023 Optimizing Homomorphic Evaluation Circuits by Program Synthesis and Time-bounded Exhaustive Search
abstract
We present a new and general method for optimizing homomorphic evaluation circuits. Although fully homomorphic encryption (FHE) holds the promise of enabling safe and secure third party computation, building FHE applications has been challenging due to their high computational costs. Domain-specific optimizations require a great deal of expertise on the underlying FHE schemes and FHE compilers that aim to lower the hurdle, generate outcomes that are typically sub-optimal, as they rely on manually-developed optimization rules. In this article, based on the prior work of FHE compilers, we propose a method for automatically learning and using optimization rules for FHE circuits. Our method focuses on reducing the maximum multiplicative depth, the decisive performance bottleneck, of FHE circuits by combining program synthesis, term rewriting, and equality saturation. It first uses program synthesis to learn equivalences of small circuits as rewrite rules from a set of training circuits. Then, we perform term rewriting on the input circuit to obtain a new circuit that has lower multiplicative depth. Our rewriting method uses the equational matching with generalized version of the learned rules, and its soundness property is formally proven. Our optimizations also try to explore every possible alternative order of applying rewrite rules by time-bounded exhaustive search technique called equality saturation. Experimental results show that our method generates circuits that can be homomorphically evaluated 1.08×–3.17× faster (with the geometric mean of 1.56×) than the state-of-the-art method. Our method is also orthogonal to existing domain-specific optimizations.
DongKwon Lee, Woosuk Lee, Hakjoo Oh, Kwangkeun Yi
ACM Trans. Program. Lang. Syst.4
2020 Optimizing homomorphic evaluation circuits by program synthesis and term rewriting
abstract
We present a new and general method for optimizing homomorphic evaluation circuits. Although fully homomorphic encryption (FHE) holds the promise of enabling safe and secure third party computation, building FHE applications has been challenging due to their high computational costs. Domain-specific optimizations require a great deal of expertise on the underlying FHE schemes, and FHE compilers that aims to lower the hurdle, generate outcomes that are typically sub-optimal as they rely on manually-developed optimization rules. In this paper, based on the prior work of FHE compilers, we propose a method for automatically learning and using optimization rules for FHE circuits. Our method focuses on reducing the maximum multiplicative depth, the decisive performance bottleneck, of FHE circuits by combining program synthesis and term rewriting. It first uses program synthesis to learn equivalences of small circuits as rewrite rules from a set of training circuits. Then, we perform term rewriting on the input circuit to obtain a new circuit that has lower multiplicative depth. Our rewriting method maximally generalizes the learned rules based on the equational matching and its soundness and termination properties are formally proven. Experimental results show that our method generates circuits that can be homomorphically evaluated 1.18x – 3.71x faster (with the geometric mean of 2.05x) than the state-of-the-art method. Our method is also orthogonal to existing domain-specific optimizations.
DongKwon Lee, Woosuk Lee, Hakjoo Oh, Kwangkeun Yi
PLDI4
2018 Crellvm: verified credible compilation for LLVM
abstract
Production compilers such as GCC and LLVM are large complex software systems, for which achieving a high level of reliability is hard. Although testing is an effective method for finding bugs, it alone cannot guarantee a high level of reliability. To provide a higher level of reliability, many approaches that examine compilers' internal logics have been proposed. However, none of them have been successfully applied to major optimizations of production compilers.
Jeehoon Kang, Yoonseung Kim, Youngju Song, Juneyoung Lee, Mark Dongyeon Shin, Sungkeun Cho, Joonwon Choi, Chung-Kil Hur, Kwangkeun Yi
PLDI11
2018 Adaptive Static Analysis via Learning with Bayesian Optimization
abstract
Building a cost-effective static analyzer for real-world programs is still regarded an art. One key contributor to this grim reputation is the difficulty in balancing the cost and the precision of an analyzer. An ideal analyzer should be adaptive to a given analysis task and avoid using techniques that unnecessarily improve precision and increase analysis cost. However, achieving this ideal is highly nontrivial, and it requires a large amount of engineering efforts. In this article, we present a new learning-based approach for adaptive static analysis. In our approach, the analysis includes a sophisticated parameterized strategy that decides, for each part of a given program, whether to apply a precision-improving technique to that part or not. We present a method for learning a good parameter for such a strategy from an existing codebase via Bayesian optimization. The learnt strategy is then used for new, unseen programs. Using our approach, we developed partially flow- and context-sensitive variants of a realistic C static analyzer. The experimental results demonstrate that using Bayesian optimization is crucial for learning from an existing codebase. Also, they show that among all program queries that require flow- or context-sensitivity, our partially flow- and context-sensitive analysis answers 75% of them, while increasing the analysis cost only by 3.3× of the baseline flow- and context-insensitive analysis, rather than 40× or more of the fully sensitive version.
Kihong Heo, Hakjoo Oh, Hongseok Yang, Kwangkeun Yi
ACM Trans. Program. Lang. Syst.4
2017 Machine-learning-guided selectively unsound static analysis
abstract
We present a machine-learning-based technique for selectively applying unsoundness in static analysis. Existing bug-finding static analyzers are unsound in order to be precise and scalable in practice. However, they are uniformly unsound and hence at the risk of missing a large amount of real bugs. By being sound, we can improve the detectability of the analyzer but it often suffers from a large number of false alarms. Our approach aims to strike a balance between these two approaches by selectively allowing unsoundness only when it is likely to reduce false alarms, while retaining true alarms. We use an anomaly-detection technique to learn such harmless unsoundness. We implemented our technique in two static analyzers for full C. One is for a taint analysis for detecting format-string vulnerabilities, and the other is for an interval analysis for buffer-overflow detection. The experimental results show that our approach significantly improves the recall of the original unsound analysis without sacrificing the precision.
Kihong Heo, Hakjoo Oh, Kwangkeun Yi
ICSE3
2017 Selective conjunction of context-sensitivity and octagon domain toward scalable and precise global static analysis
abstract
Summary We present a practical technique for achieving a scalable and precise global static analysis by selectively applying context‐sensitivity and the octagon relational domain. For precise analysis, context‐sensitivity and relational analysis are key properties, but it has been hard to practically combine both of them. Our approach turns on those precision improvement features only when the analysis is likely to improve the precision to resolve given queries. The guidance comes from an impact pre‐analysis that estimates the impact of a fully context‐sensitive and relational octagon analysis. We designed a cost‐effective pre‐analysis and implemented this method in a realistic octagon analysis for full C. The experimental results show that our approach proves eight times more queries, while saving the time cost by 73.1% compared with a partially relational octagon analysis enabled by a syntactic heuristic. Copyright © 2017 John Wiley & Sons, Ltd.
Kihong Heo, Hakjoo Oh, Kwangkeun Yi
Softw. Pract. Exp.3
2017 Sound Non-Statistical Clustering of Static Analysis Alarms
abstract
We present a sound method for clustering alarms from static analyzers. Our method clusters alarms by discovering sound dependencies between them such that if the dominant alarms of a cluster turns out to be false, all the other alarms in the same cluster are guaranteed to be false. We have implemented our clustering algorithm on top of a realistic buffer-overflow analyzer and proved that our method reduces 45% of alarm reports. Our framework is applicable to any abstract interpretation-based static analysis and orthogonal to abstraction refinements and statistical ranking schemes.
Woosuk Lee, Wonchan Lee, Dongok Kang, Kihong Heo, Hakjoo Oh, Kwangkeun Yi
ACM Trans. Program. Lang. Syst.6
2016 Widening with thresholds via binary search
abstract
Summary In this paper, we present a useful technique for implementing practical static program analyzers that use widening. Our technique aims to improve the efficiency of the conventional widening‐with‐thresholds technique at a small precision compromise. In static analysis, widening is used to accelerate (or converge) fixed point iterations. Unfortunately, this acceleration often comes with a significant loss in analysis precision. A standard method to improve the precision is to apply the widening with a set of thresholds. However, this technique may significantly slow down the analysis, because in practice it is commonplace to use a large set of thresholds. In worst case, the technique increases the analysis cost by the sizeNof the threshold set. In this paper, we propose a technique to reduce the worst case by , by employing a binary search in the process of applying threshold values. We formalize the technique in the abstract interpretation framework and show that, by experiments with a realistic static analyzer for C, our technique considerably improves the efficiency (by 81.5%) of the existing method with a small compromise (20.9%) on the analysis precision. Copyright © 2015 John Wiley & Sons, Ltd.
Sol Kim, Kihong Heo, Hakjoo Oh, Kwangkeun Yi
Softw. Pract. Exp.4
2016 Selective X-Sensitive Analysis Guided by Impact Pre-Analysis
abstract
We present a method for selectively applying context-sensitivity during interprocedural program analysis. Our method applies context-sensitivity only when and where doing so is likely to improve the precision that matters for resolving given queries. The idea is to use a pre-analysis to estimate the impact of context-sensitivity on the main analysis’s precision, and to use this information to find out when and where the main analysis should turn on or off its context-sensitivity. We formalize this approach and prove that the analysis always benefits from the pre-analysis--guided context-sensitivity. We implemented this selective method for an existing industrial-strength interval analyzer for full C. The method reduced the number of (false) alarms by 24.4% while increasing the analysis cost by 27.8% on average. The use of the selective method is not limited to context-sensitivity. We demonstrate this generality by following the same principle and developing a selective relational analysis and a selective flow-sensitive analysis. Our experiments show that the method cost-effectively improves the precision in the these analyses as well.
Hakjoo Oh, Wonchan Lee, Kihong Heo, Hongseok Yang, Kwangkeun Yi
ACM Trans. Program. Lang. Syst.5
2015 Learning a strategy for adapting a program analysis via bayesian optimisation
abstract
Building a cost-effective static analyser for real-world programs is still regarded an art. One key contributor to this grim reputation is the difficulty in balancing the cost and the precision of an analyser. An ideal analyser should be adaptive to a given analysis task, and avoid using techniques that unnecessarily improve precision and increase analysis cost. However, achieving this ideal is highly nontrivial, and it requires a large amount of engineering efforts. In this paper we present a new approach for building an adaptive static analyser. In our approach, the analyser includes a sophisticated parameterised strategy that decides, for each part of a given program, whether to apply a precision-improving technique to that part or not. We present a method for learning a good parameter for such a strategy from an existing codebase via Bayesian optimisation. The learnt strategy is then used for new, unseen programs. Using our approach, we developed partially flow- and context-sensitive variants of a realistic C static analyser. The experimental results demonstrate that using Bayesian optimisation is crucial for learning from an existing codebase. Also, they show that among all program queries that require flow- or context-sensitivity, our partially flow- and context-sensitive analysis answers the 75% of them, while increasing the analysis cost only by 3.3x of the baseline flow- and context-insensitive analysis, rather than 40x or more of the fully sensitive version.
Hakjoo Oh, Hongseok Yang, Kwangkeun Yi
OOPSLA3
2015 Static Analysis with Set-Closure in Secrecy
Woosuk Lee, Hyunsook Hong, Kwangkeun Yi, Jung Hee Cheon
SAS3
2015 Automatically inferring loop invariants via algorithmic learning
abstract
By combining algorithmic learning, decision procedures, predicate abstraction and simple templates for quantified formulae, we present an automated technique for finding loop invariants. Theoretically, this technique can find arbitrary first-order invariants (modulo a fixed set of atomic propositions and an underlying satisfiability modulo theories solver) in the form of the given template and exploit the flexibility in invariants by a simple randomized mechanism. In our study, the proposed technique was able to find quantified invariants for loops from the Linux source and other realistic programs. Our contribution is a simpler technique than the previous works yet with a reasonable derivation power.
Yungbum Jung, Soonho Kong, Cristina David, Bow-Yaw Wang, Kwangkeun Yi
Math. Struct. Comput. Sci.5
2014 Selective context-sensitivity guided by impact pre-analysis
abstract
We present a method for selectively applying context-sensitivity during interprocedural program analysis. Our method applies context-sensitivity only when and where doing so is likely to improve the precision that matters for resolving given queries. The idea is to use a pre-analysis to estimate the impact of context-sensitivity on the main analysis's precision, and to use this information to find out when and where the main analysis should turn on or off its context-sensitivity. We formalize this approach and prove that the analysis always benefits from the pre-analysis-guided context-sensitivity. We implemented this selective method for an existing industrial-strength interval analyzer for full C. The method reduced the number of (false) alarms by 24.4%, while increasing the analysis cost by 27.8% on average.
Hakjoo Oh, Wonchan Lee, Kihong Heo, Hongseok Yang, Kwangkeun Yi
PLDI5
2014 A Progress Bar for Static Analyzers
Woosuk Lee, Hakjoo Oh, Kwangkeun Yi
SAS3
2014 Global Sparse Analysis Framework
abstract
In this article, we present a general method for achieving global static analyzers that are precise and sound, yet also scalable. Our method, on top of the abstract interpretation framework, is a general sparse analysis technique that supports relational as well as nonrelational semantics properties for various programming languages. Analysis designers first use the abstract interpretation framework to have a global and correct static analyzer whose scalability is unattended. Upon this underlying sound static analyzer, analysis designers add our generalized sparse analysis techniques to improve its scalability while preserving the precision of the underlying analysis. Our method prescribes what to prove to guarantee that the resulting sparse version should preserve the precision of the underlying analyzer. We formally present our framework and show that existing sparse analyses are all restricted instances of our framework. In addition, we show more semantically elaborate design examples of sparse nonrelational and relational static analyses. We then present their implementation results that scale to globally analyze up to one million lines of C programs. We also show a set of implementation techniques that turn out to be critical to economically support the sparse analysis process.
Hakjoo Oh, Kihong Heo, Wonchan Lee, Woosuk Lee, Daejun Park 0001, Jeehoon Kang, Kwangkeun Yi
ACM Trans. Program. Lang. Syst.7
2013 Access-based abstract memory localization in static analysis
Hakjoo Oh, Kwangkeun Yi
Sci. Comput. Program.2
2012 Termination Analysis with Algorithmic Learning
Wonchan Lee, Bow-Yaw Wang, Kwangkeun Yi
CAV3
2012 GMeta: A Generic Formal Metatheory Framework for First-Order Representations
Gyesik Lee, Bruno C. d. S. Oliveira, Sungkeun Cho, Kwangkeun Yi
ESOP4
2012 Design and implementation of sparse global analyses for C-like languages
abstract
In this article we present a general method for achieving global static analyzers that are precise, sound, yet also scalable. Our method generalizes the sparse analysis techniques on top of the abstract interpretation framework to support relational as well as non-relational semantics properties for C-like languages. We first use the abstract interpretation framework to have a global static analyzer whose scalability is unattended. Upon this underlying sound static analyzer, we add our generalized sparse analysis techniques to improve its scalability while preserving the precision of the underlying analysis. Our framework determines what to prove to guarantee that the resulting sparse version should preserve the precision of the underlying analyzer.
Hakjoo Oh, Kihong Heo, Wonchan Lee, Woosuk Lee, Kwangkeun Yi
PLDI5
2012 The implicit calculus: a new foundation for generic programming
abstract
Generic programming (GP) is an increasingly important trend in programming languages. Well-known GP mechanisms, such as type classes and the C++0x concepts proposal, usually combine two features: 1) a special type of interfaces; and 2) implicit instantiation of implementations of those interfaces.
Bruno C. d. S. Oliveira, Tom Schrijvers, Wontae Choi, Wonchan Lee, Kwangkeun Yi
PLDI5
2012 Sound Non-statistical Clustering of Static Analysis Alarms
Woosuk Lee, Wonchan Lee, Kwangkeun Yi
VMCAI3
2011 Access-Based Localization with Bypassing
Hakjoo Oh, Kwangkeun Yi
APLAS2
2011 MeCC: memory comparison-based clone detector
abstract
In this paper, we propose a new semantic clone detection technique by comparing programs' abstract memory states, which are computed by a semantic-based static analyzer.
Heejung Kim, Yungbum Jung, Sunghun Kim 0001, Kwangkeun Yi
ICSE4
2011 Static analysis of multi-staged programs via unstaging translation
abstract
Static analysis of multi-staged programs is challenging because the basic assumption of conventional static analysis no longer holds: the program text itself is no longer a fixed static entity, but rather a dynamically constructed value. This article presents a semantic-preserving translation of multi-staged call-by-value programs into unstaged programs and a static analysis framework based on this translation. The translation is semantic-preserving in that every small-step reduction of a multi-staged program is simulated by the evaluation of its unstaged version. Thanks to this translation we can analyze multi-staged programs with existing static analysis techniques that have been developed for conventional unstaged programs: we first apply the unstaging translation, then we apply conventional static analysis to the unstaged version, and finally we cast the analysis results back in terms of the original staged program. Our translation handles staging constructs that have been evolved to be useful in practice (typified in Lisp's quasi-quotation): open code as values, unrestricted operations on references and intentional variable-capturing substitutions. This article omits references for which we refer the reader to our companion technical report.
Wontae Choi, Baris Aktemur, Kwangkeun Yi, Makoto Tatsuta
POPL3
2011 Predicate Generation for Learning-Based Quantifier-Free Loop Invariant Inference
Yungbum Jung, Wonchan Lee, Bow-Yaw Wang, Kwangkeun Yi
TACAS4
2011 Access Analysis-Based Tight Localization of Abstract Memories
Hakjoo Oh, Lucas Brutschy, Kwangkeun Yi
VMCAI3
2010 Automatically Inferring Quantified Loop Invariants by Algorithmic Learning from Simple Templates
Soonho Kong, Yungbum Jung, Cristina David, Bow-Yaw Wang, Kwangkeun Yi
APLAS5
2010 Deriving Invariants by Algorithmic Learning, Decision Procedures, and Predicate Abstraction
Yungbum Jung, Soonho Kong, Bow-Yaw Wang, Kwangkeun Yi
VMCAI4
2010 LR error repair using the A* algorithm
Ik-Soon Kim, Kwangkeun Yi
Acta Informatica2
2010 An algorithmic mitigation of large spurious interprocedural cycles in static analysis
abstract
Abstract We present a simple algorithmic extension of the approximate call‐strings approach to mitigate substantial performance degradation caused by spurious interprocedural cycles. Spurious interprocedural cycles are, in a realistic setting, the key reasons for why approximate call‐return semantics in both context‐sensitive and ‐insensitive static analysis can make the analysis much slower than expected. In the approximate call‐strings‐based context‐sensitive static analysis, because the number of distinguished contexts is finite, multiple call‐contexts are inevitably joined at the entry of a procedure and the output at the exit is propagated to multiple return‐sites. We found that these multiple returns frequently create a single large cycle (we call it ‘butterfly cycle’) covering almost all parts of the program and such a spurious cycle makes analyses very slow and inaccurate. Our simple algorithmic technique (within the fixpoint iteration algorithm) identifies and prunes these spurious interprocedural flows. The technique's effectiveness is proven by experiments with a realistic C analyzer to reduce the analysis time by 7–96%. As the technique is algorithmic, it can be easily applicable to existing analyses without changing the underlying abstract semantics, it is orthogonal to the underlying abstract semantics' context‐sensitivity, and its correctness is obvious. Copyright © 2010 John Wiley & Sons, Ltd.
Hakjoo Oh, Kwangkeun Yi
Softw. Pract. Exp.2
2009 Test Coverage Metric for Two-Staged Language with Abstract Interpretation
abstract
As a program written in multi-staged language can generate and execute code fragments in execution time, it is hard to predict how many code fragments will be generated in execution time. Therefore, current test coverages are not likely to give right answers when they are apply to a program written in multi-staged language because the program size could not be estimated easily. In this paper, we present static analysis which detects code fragments generated in execution time using abstract interpretation and prove the correctness of analyzer. Moreover we propose new test coverage for multi-staged language using the result of analysis.
Taeksu Kim, Chunwoo Lee, Kiljoo Lee, Soohyun Baik, Chisu Wu, Kwangkeun Yi
APSEC6
2009 Abstract parsing for two-staged languages with concatenation
abstract
This article, based on Doh, Kim, and Schmidt’s “abstract parsing” technique, presents an abstract interpretation for statically check-ing the syntax of generated code in two-staged programs. Ab-stract parsing is a static analysis technique for checking the syntax of generated strings. We adopt this technique for two-staged pro-gramming languages and formulate it in the abstract interpretation framework. We parameterize our analysis with the abstract domain so that one can choose the abstract domain as long as it satisfies the domain, namely an abstract parse stack and its widening with k-cutting.
Soonho Kong, Wontae Choi, Kwangkeun Yi
GPCE3
2008 Practical memory leak detector based on parameterized procedural summaries
abstract
We present a static analyzer that detects memory leaks in C pro-grams. It achieves relatively high accuracy at a relatively low cost on SPEC2000 benchmarks and several open-source software pack-ages, demonstrating its practicality and competitive edge against other reported analyzers: for a set of benchmarks totaling 1,777 KLOCs, it found 332 bugs with 47 additional false positives (a 12.4 % false-positive ratio), and the average analysis speed was 720 LOC/sec. We separately analyze each procedure’s memory behavior into a summary that is used in analyzing its call sites. Each procedural summary is parameterized by the procedure’s call context so that it can be instantiated at different call sites. What information to cap-ture in each procedural summary has been carefully tuned so that the summary should not lose any common memory-leak-related be-haviors in real-world C programs. Because each procedure is summarized by conventional fixpoint iteration over the abstract semantics (à la abstract interpretation), the analyzer naturally handles arbitrary call cycles from direct or indirect recursive calls.
Yungbum Jung, Kwangkeun Yi
ISMM2
2007 An empirical study on classification methods for alarms from a bug-finding static C analyzer
Kwangkeun Yi, Hosik Choi, Jaehwang Kim, Yongdai Kim
Inf. Process. Lett.1
2007 Goal-directed weakening of abstract interpretation results
abstract
One proposal for automatic construction of proofs about programs is to combine Hoare logic and abstract interpretation. Constructing proofs is in Hoare logic. Discovering programs' invariants is done by abstract interpreters. One problem of this approach is that abstract interpreters often compute invariants that are not needed for the proof goal. The reason is that the abstract interpreter does not know what the proof goal is, so it simply tries to find as strong invariants as possible. These unnecessary invariants increase the size of the constructed proofs. Unless the proof-construction phase is notified which invariants are not needed, it blindly proves all the computed invariants. In this article, we present a framework for designing algorithms, called abstract-value slicers , that slice out unnecessary invariants from the results of forward abstract interpretation. The framework provides a generic abstract-value slicer that can be instantiated into a slicer for a particular abstract interpretation. Such an instantiated abstract-value slicer works as a post-processor to an abstract interpretation in the whole proof-construction process, and notifies to the next proof-construction phase which invariants it does not have to prove. Using the framework, we designed an abstract-value slicer for an existing relational analysis and applied it on programs. In this experiment, the slicer identified 62%--81% of the computed invariants as unnecessary, and resulted in 52%--84% reduction in the size of constructed proofs.
Sunae Seo, Hongseok Yang, Kwangkeun Yi, Taisook Han
ACM Trans. Program. Lang. Syst.3
2006 Type and Effect System for Multi-staged Exceptions
Hyunjun Eo, Ik-Soon Kim, Kwangkeun Yi
APLAS3
2006 A polymorphic modal type system for lisp-like multi-staged languages
abstract
This article presents a polymorphic modal type system and its principal type inference algorithm that conservatively extend ML by all of Lisp's staging constructs (the quasi-quotation system). The combination is meaningful because ML is a practical higher-order, impure, and typed language, while Lisp's quasi-quotation system has long evolved complying with the demands from multi-staged programming practices. Our type system supports open code, unrestricted operations on references, intentional variable-capturing substitution as well as capture-avoiding substitution, and lifting values into code, whose combination escaped all the previous systems.
Ik-Soon Kim, Kwangkeun Yi, Cristiano Calcagno
POPL2
2006 Educational Pearl: 'Proof-directed debugging' revisited for a first-order version
abstract
Some 10 years ago, Harper illustrated the powerful method of proof-directed debugging for developing programs with an article in this journal. Unfortunately, his example uses both higher-order functions and continuation-passing style, which is too difficult for students in an introductory programming course. In this pearl, we present a first-order version of Harper's example and demonstrate that it is easy to transform the final version into an efficient state machine. Our new version convinces students that the approach is useful, even essential, in developing both correct and efficient programs.
Kwangkeun Yi
J. Funct. Program.1
2005 Automatic Verification of Pointer Programs Using Grammar-Based Shape Analysis
Oukseh Lee, Hongseok Yang, Kwangkeun Yi
ESOP3
2005 Taming False Alarms from a Domain-Unaware C Analyzer by a Bayesian Statistical Post Analysis
Yungbum Jung, Jaehwang Kim, Jaeho Shin 0001, Kwangkeun Yi
SAS4
2005 Static insertion of safe and effective memory reuse commands into ML-like programs
Oukseh Lee, Hongseok Yang, Kwangkeun Yi
Sci. Comput. Program.3
2004 Experiments on the effectiveness of an automatic insertion of memory reuses into ML-like programs
abstract
We present extensive experimental results on our static analysis and source-level transformation [12, 11] that adds explicit memory-reuse commands into ML program text.
Oukseh Lee, Kwangkeun Yi
ISMM2
2004 An uncaught exception analysis for Java
Jang-Wu Jo, Byeong-Mo Chang, Kwangkeun Yi, Kwang-Moo Choe
J. Syst. Softw.3
2003 Automatic Construction of Hoare Proofs from Abstract Interpretation Results
Sunae Seo, Hongseok Yang, Kwangkeun Yi
APLAS3
2003 Inserting Safe Memory Reuse Commands into ML-Like Programs
Oukseh Lee, Hongseok Yang, Kwangkeun Yi
SAS3
2002 A proof method for the correctness of modularized 0CFA
Oukseh Lee, Kwangkeun Yi, Yunheung Paek
Inf. Process. Lett.2
2002 A cost-effective estimation of uncaught exceptions in Standard ML programs
Kwangkeun Yi, Sukyoung Ryu
Theor. Comput. Sci.1
1998 An Abstract Interpretation for Estimating Uncaught Exceptions in Standard ML Programs
Kwangkeun Yi
Sci. Comput. Program.1
1998 Proofs about a Folklore Let-Polymorphic Type Inference Algorithm
abstract
The Hindley/Milner let-polymorphic type inference system has two different algorithms: one is the de facto standard Algorithm 𝒲 that is bottom-up (or context-insensitive), and the other is a “folklore” algorithm that is top-down (or context-sensitive). Because the latter algorithm has not been formally presented with its soundness and completeness proofs, and its relation with the 𝒲 algorithm has not been rigorously investigated, its use in place of (or in combination with) 𝒲 is not well founded. In this article, we formally define the context-sensitive, top-down type inference algorithm (named “M”), prove its soundness and completeness, and show a distinguishing property that M always stops earlier than 𝒲 if the input program is ill typed. Our proofs can be seen as theoretical justifications for various type-checking strategies being used in practice.
Oukseh Lee, Kwangkeun Yi
ACM Trans. Program. Lang. Syst.2
1997 Towards a Cost-Effective Estimation of Uncaught Exceptions in SML Programs
Kwangkeun Yi, Sukyoung Ryu
SAS1
1996 Estimating Uncaught Exceptions in Standard ML Programs from Type-Based Equations
abstract
We present a static analysis that detects potential runtime exceptions that are raised and never handled inside Standard ML (SML) programs. Contrary to our earlier method (Yi, 1994) based on abstract interpretation, where the input program's control flow is simultaneously computed while our exception analysis progresses, we separate the two phases in a manner similar to conventional data flow analysis. Before the exception analysis begins, we first estimate the input program's control flow from the type information from SML/NJ compiler. Based on this call-graph structure, exception flow is specified as a set of equations, whose solution is computed using an iterative least fixpoint method. A prototype of this analysis is applied to two realistic SML programs (ML-LEX and OR-SML core) and is 3 or 40 times faster than the earlier method and saves memory by 35 or 65 percent.
Kwangkeun Yi, Sukyoung Ryu, Kihyun Pyun
COMPSAC1
1994 Compile-time Detection of Uncaught Exceptions in Standard ML Programs
Kwangkeun Yi
SAS1
1993 Automatic Generation and Management of Interprocedural Program Analyses
abstract
We have designed and implemented an interprocedural program analyzer generator, called system Z. Our goal is to automate the generation and management of semantics-based interprocedural program analysis for a wide range of target languages.
Kwangkeun Yi, Williams Ludwell Harrison III
POPL1
1990 On-the-fly circuit to measure the average working set size
abstract
Two economic methods (Markov chain method and filtering method) which estimate the average working set size of a program on the fly are presented. Both methods are simple enough to be implemented inside a VLSI processor chip with small space requirements, or outside the chip to probe the memory reference traffic. The on-the-fly circuit tools that can estimate the average working set size of a program without much loss of accuracy make unnecessary the problematic and expensive procedures (hardware monitoring or simulation) of collecting the reference traces. Such tools can be used in all studies that require program locality measurements, including the study of a program locality, the effectiveness study of locality improvement techniques, and the study of optimizing compiler's effect on program locality. Since both methods require only one comparison and an increment of one or two counters per memory reference, they can be easily implemented as circuits to probe the reference traffic between the processor and the main memory.>
Kwangkeun Yi, Luddy Harrison
ICCD1