OptTyper: Probabilistic Type Inference by Optimising Logical and Natural Constraints
We present a new approach to the type inference problem for dynamic languages. Our goal is to combine \emph{logical} constraints, that is, deterministic information from a type system, with \emph{natural} constraints, that is, uncertain statistical information about types learnt from sources like identifier names. To this end, we introduce a framework for probabilistic type inference that combines logic and learning: logical constraints on the types are extracted from the program, and deep learning is applied to predict types from surface-level code properties that are statistically associated. The foremost insight of our method is to constrain the predictions from the learning procedure to respect the logical constraints, which we achieve by relaxing the logical inference problem of type prediction into a continuous optimisation problem. We build a tool called OptTyper to predict missing types for TypeScript files. OptTyper combines a continuous interpretation of logical constraints derived by classical static analysis of TypeScript code, with natural constraints obtained from a deep learning model, which learns naming conventions for types from a large codebase. By evaluating OptTyper, we show that the combination of logical and natural constraints yields a large improvement in performance over either kind of information individually and achieves a 4% improvement over the state-of-the-art.
Code (1)
Tasks
Type predictionVocal Bursts Type PredictionSimilar Papers 제목 키워드 기반
Neural Probabilistic Logic Programming in Discrete-Continuous Domains
Neural-symbolic AI (NeSy) allows neural networks to exploit symbolic background knowledge in the form of logic. It has been shown to aid learning in the limited data regime and to facilitate inference on out-of-distribut…
Probabilistic ProgrammingProbabilistic Programming with Densities in SlicStan: Efficient, Flexible and Deterministic
Stan is a probabilistic programming language that has been increasingly used for real-world scalable projects. However, to make practical inference possible, the language sacrifices some of its usability by adopting a bl…
Probabilistic ProgrammingNodeSLAM: Neural Object Descriptors for Multi-View Shape Reconstruction
The choice of scene representation is crucial in both the shape inference algorithms it requires and the smart applications it enables. We present efficient and optimisable multi-class learned object descriptors together…
3D Object ReconstructionObjectObject ReconstructionSPPL: Probabilistic Programming with Fast Exact Symbolic Inference
We present the Sum-Product Probabilistic Language (SPPL), a new probabilistic programming language that automatically delivers exact solutions to a broad range of probabilistic inference queries. SPPL translates probabil…
FairnessProbabilistic ProgrammingTranslationA Survey on Latent Tree Models and Applications
In data analysis, latent variables play a central role because they help provide powerful insights into a wide variety of phenomena, ranging from biological to human sciences. The latent tree model, a particular type of …
ClusteringSurvey