Sunbeom So
Korea University · 情報科学
研究室紹介
Professor Sunbeom So's research lab specializes in program synthesis, verification, and automated feedback generation for educational and security-critical software systems. The lab focuses on developing intelligent tools that automatically synthesize correct programs—such as regular expressions, pattern generators, and smart contract patches—based on input examples or specifications. A key emphasis is on ensuring correctness, efficiency, and usability in real-world applications, particularly in functional programming education and Ethereum smart contract security. The lab combines techniques from symbolic execution, type-directed synthesis, and search-space pruning to build precise, scalable, and practical verification and synthesis systems.
Research Overview
Research Output Trend
Figures are computed from collected data and may differ slightly.
Selected Papers
15We present VERISMART, a highly precise verifier for ensuring arithmetic safety of Ethereum smart contracts. Writing safe smart contracts without unintended behavior is critically important because smart contracts are immutable and even a single flaw can cause huge financial damage. In particular, ensuring that arithmetic operations are safe is one of the most important and common security concerns of Ethereum smart contracts nowadays. In response, several safety analyzers have been proposed over
We present a method for synthesizing regular expressions for introductory automata assignments. Given a set of positive and negative examples, the method automatically synthesizes the simplest possible regular expression that accepts all the positive examples while rejecting all the negative examples. The key novelty is the search-based synthesis algorithm that leverages ideas from over- and under-approximations to effectively prune out a large search space. We have implemented our technique in
We present FixML, a system for automatically generating feedback on logical errors in functional programming assignments. As functional languages have been gaining popularity, the number of students enrolling functional programming courses has increased significantly. However, the quality of feedback, in particular for logical errors, is hardly satisfying. To provide personalized feedback on logical errors, we present a new error-correction algorithm for functional languages, which combines stat
We present a method for synthesizing regular expressions for introductory automata assignments. Given a set of positive and negative examples, the method automatically synthesizes the simplest possible regular expression that accepts all the positive examples while rejecting all the negative examples. The key novelty is the search-based synthesis algorithm that leverages ideas from over- and under-approximations to effectively prune out a large search space. We have implemented our technique in
We present SmartFix, a new technique for repairing vulnerable smart contracts. There is an urgent need to develop automatic bug-repair techniques for smart contracts, as smart contracts are safety-critical software and manual debugging is burdensome and error-prone. While several repair approaches have been proposed recently, they are unsatisfactory since no existing techniques can achieve high repairability, full automation, and safety guarantee at the same time, posing significant problems for
We describe a programming-by-example system that automatically generates pattern programs from examples. Writing pattern programs, which produce various patterns of characters, is one of the most popular programming exercises for entry-level students. However, students often find it difficult to write correct solutions by themselves. In this paper, we present a method for synthesizing pattern programs from examples, allowing students to improve their programming skills efficiently. To that end,
We present Diver, a novel technique for effectively finding critical bugs in SMT solvers. Ensuring the correctness of SMT solvers is becoming increasingly important as many applications use solvers as a foundational basis. In response, several approaches for testing SMT solvers, which are classified into differential testing and oracle-guided approaches, have been proposed until recently. However, they are still unsatisfactory in that (1) differential testing approaches cannot validate unique ye
We present a novel algorithm that synthesizes imperative programs for introductory programming courses. Given a set of input-output examples and a partial program, our algorithm generates a complete program that is consistent with every example. Our key idea is to combine enumerative program synthesis and static analysis, which aggressively prunes out a large search space while guaranteeing to find, if any, a correct solution. We have implemented our algorithm in a tool, called SIMPL, and evalua
We present VeriSmart, a highly precise verifier for ensuring arithmetic safety of Ethereum smart contracts. Writing safe smart contracts without unintended behavior is critically important because smart contracts are immutable and even a single flaw can cause huge financial damage. In particular, ensuring that arithmetic operations are safe is one of the most important and common security concerns of Ethereum smart contracts nowadays. In response, several safety analyzers have been proposed over
Diver is <strong>a black-box fuzzer for testing SMT Solvers</strong>. We provide the technical details of Diver in our paper "Diver: Oracle-Guided SMT Solver Testing with Unrestricted Random Mutations" accepted in ICSE 2023. The detailed instructions of the tool is available on the Github repository: https://github.com/kupl/Diver-Artifact
본 논문에서는 주어진 입 · 출력 예제로부터 명령형 프로그램을 합성하는 방법을 제시한다. 프로그램 합성기의 입력으로 (1) 입 · 출력 예제, (2) 불완전한 프로그램, (3) 사용될 변수 및 정수가 주어지면, 합성기는 주어진 입 · 출력 예제를 모두 만족하는 완성된 프로그램을 출력한다. 기본 알고리즘은 정답 프로그램을 찾을 때까지, 가능한 모든 프로그램을 나열하는 것이다(enumerative search). 이 경우 탐색 공간이 매우 크므로 오랜 시간이 걸린다는 문제점이 있다. 시간을 효과적으로 단축하기 위한 우리의 방법은, 코드 최적화 기법을 이용해 문법은 다르지만 같은 의미의 프로그램들을 확인함으로써, 불필요한 중복탐색을 피하는 것이다. 20개의 입문자 교육용 프로그래밍 문제들을 대상으로 합성 알고리즘 성능을 평가한 결과, 우리의 방법이 기본 탐색 알고리즘의 성능을 약 10배 향상시킴을 확인하였다.
본 논문에서는 주어진 입・출력 예제로부터 명령형 프로그램을 합성하는 방법을 제시한다. 프로그램 합성기의 입력으로 (1) 입・출력 예제, (2) 불완전한 프로그램, (3) 사용될 변수 및 정수가 주어지면, 합성기는 주어진 입・출력 예제를 모두 만족하는 완성된 프로그램을 출력한다. 기본 알고리즘은 정답 프로그램을 찾을 때까지, 가능한 모든 프로그램을 나열하는 것이다(enumerative search). 이 경우 탐색 공간이매우 크므로 오랜 시간이 걸린다는 문제점이 있다. 시간을 효과적으로 단축하기 위한 우리의 방법은, 코드최적화 기법을 이용해 문법은 다르지만 같은 의미의 프로그램들을 확인함으로써, 불필요한 중복탐색을 피하는 것이다. 20개의 입문자 교육용 프로그래밍 문제들을 대상으로 합성 알고리즘 성능을 평가한 결과, 우리의 방법이 기본 탐색 알고리즘의 성능을 약 10배 향상시킴을 확인하였다.