TL;DR
This paper introduces a novel approach to program understanding by transforming symbolic execution traces into embeddings, achieving high accuracy on API-usage analogy tasks and demonstrating the effectiveness of semantic abstractions.
Contribution
The paper presents a new method for representing programs using embeddings of symbolic execution traces, highlighting the importance of semantic abstractions for improved accuracy.
Findings
Achieved 93% top-1 accuracy on API-usage analogy benchmark.
Semantic abstractions significantly outperform syntactic ones in embedding quality.
Embeddings trained with various parameters show robustness across tasks.
Abstract
With the rise of machine learning, there is a great deal of interest in treating programs as data to be fed to learning algorithms. However, programs do not start off in a form that is immediately amenable to most off-the-shelf learning techniques. Instead, it is necessary to transform the program to a suitable representation before a learning technique can be applied. In this paper, we use abstractions of traces obtained from symbolic execution of a program as a representation for learning word embeddings. We trained a variety of word embeddings under hundreds of parameterizations, and evaluated each learned embedding on a suite of different tasks. In our evaluation, we obtain 93% top-1 accuracy on a benchmark consisting of over 19,000 API-usage analogies extracted from the Linux kernel. In addition, we show that embeddings learned from (mainly) semantic abstractions provide nearly…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
