Finding Loop Invariants Using a Theorem Prover

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



Duration: 51:25
1,392 views
14


This talk presents how quantified loop invariants of programs over arrays can be automatically inferred using a first order theorem prover, reducing the burden of annotating loops with complete invariants. Our approach allows one to generate first-order invariants containing alternations of quantifiers. For doing so, we deploy symbolic computation methods to generate numeric invariants of the scalar loop variables, based on the software package Aligator, and then use update predicates of the loop. An update predicate for an array A expresses updates made to A. We observe that many properties of update predicates can be extracted automatically from the loop description and loop properties obtained by other methods such as a simple analysis of counters occurring in the loop, recurrence solving and quantifier elimination over loop variables. The first-order information extracted from the loop description can use auxiliary symbols, such as symbols denoting update predicates or loop counters. After having collected the first-order information, we run the saturation theorem prover Vampire to eliminate the auxiliary symbols and obtain loop invariants expressed as first-order formulas. When the invariants obtained in this way contain skolem functions, we de-skolemise them into formulas with quantifier alternations. Our method does not require the user to give a post-condition, a predefined collection of predicates or any other form of human guidance and avoids inductive reasoning. This is a joint work with Andrei Voronkov (University of Manchester, UK).




Other Videos By Microsoft Research


2016-09-07Parallel Programming with Chorus
2016-09-07Seeing Software
2016-09-07Efficient and Effective File Replication and Consistency Maintenance in P2P Systems
2016-09-07Where to Go: Interpreting Natural Directions Using Global Inference
2016-09-07Algorithms Meet Art, Puzzles, and Magic
2016-09-07Free: The Future of a Radical Price
2016-09-07Provably-Efficient Adaptive Scheduling with Parallelism Feedback
2016-09-07Personal Health Information among Competing Public Goods
2016-09-07Model-Checking Modulo Theories: Declarative Framework and Pragmatic Issues
2016-09-07Theory Tea Meeting Talk: On Local Dynamics for Two Equilibrium Concepts
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



Tags:
microsoft research