Using Declarative Languages for Fast and Easy Program Analysis

Subscribers:
344,000
Published on ● Video Link: https://www.youtube.com/watch?v=S3Ph6giOgyk



Duration: 1:25:56
543 views
8


The talk will discuss the benefits of using logic-based declarative languages, especially for program analysis. The main focus will be on the Doop framework for points-to analysis of Java programs. Doop builds on the idea of specifying pointer analysis algorithms declaratively, using Datalog: a logic-based language for defining (recursive) relations. We carry the declarative approach further than past work by describing the full end-to-end analysis in Datalog and optimizing aggressively using a novel technique that takes into account Datalog incremental evaluation. As a result, Doop decisively redefines the state-of-the-art in pointer analysis, and challenges our understanding of how to build scalable precise program analyses. Doop's precise analyses are the first to achieve scalability without the use of binary decision diagrams (BDDs) and outperform BDD-based analyses by substantial amounts. We compare Doop with Lhot┬┤ak and HendrenΓÇÖs Paddle. For the exact same logical points-to definitions (and, consequently, identical precision) Doop is more than 15x faster than Paddle for common precise (context-sensitive) analyses of the DaCapo benchmarks. Additionally, Doop scales to very precise analyses that are impossible with Paddle and Whaley et al.ΓÇÖs bddbddb, directly addressing open problems in past literature. Finally, our implementation is modular and can be easily configured to analyses with a wide range of characteristics, largely due to its declarativeness. Generalizing from Doop and Datalog, we will discuss a broader plan for using declarative languages with a logical flavor for various domains in future work.




Other Videos By Microsoft Research


2016-09-07Finding Loop Invariants Using a Theorem Prover
2016-09-07Bandwidth Allocation in TCP Friendliness and P2P Streaming
2016-09-07Improving the Development of Interactive Software Through New Language Features and Patterns
2016-09-07Better Multiple Intents Re-ranking
2016-09-07Verifying the Interplay of Authorization Policies and Workflow in Service-Oriented Architectures
2016-09-07Twig: A Simple, AI-friendly, Character World for Believable Agents
2016-09-07Speech signals separation with microphone array
2016-09-07NxOpinion: A Novel Integrated and Predictive Solution for Global Healthcare Delivery
2016-09-07Improving Software Production Environments with Non-Invasive, Quantitative Experience Collection
2016-09-07Pairing-based Non-interactive Zero-Knowledge Proofs
2016-09-07Using Declarative Languages for Fast and Easy Program Analysis
2016-09-07The JSON Saga
2016-09-07First Steps to NetViz Nirvana: Evaluating Social Network Analysis with NodeXL
2016-09-07Public Key Cryptosystems: Stronger Security from General Assumptions
2016-09-07A Framework for Combined Bayesian Analysis and Optimization for
2016-09-07Towards Provably Secure and Correct Systems
2016-09-07A Dive into the Panorama Business
2016-09-07Random Kitchen Sinks: Replacing Optimization with Randomization in Learning
2016-09-07Regression Verification: Proving the Equivalence of Similar Programs
2016-09-07Inferring Social Networks Automatically from Sensor Data
2016-09-07Metaprogramming AJAX Apps with Static Types [1/3]



Tags:
microsoft research