A Graphical Language for Proof Strategies

Gudmund Grov, Aleks Kissinger, Yuhui Lin

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

Complex automated proof strategies are often difficult to extract, visualise, modify, and debug. Traditional tactic languages, often based on stack-based goal propagation, make it easy to write proofs that obscure the flow of goals between tactics and are fragile to minor changes in input, proof structure or changes to tactics themselves. Here, we address this by introducing a graphical language called PSGraph for writing proof strategies. Strategies are constructed visually by ``wiring together'' collections of tactics and evaluated by propagating goal nodes through the diagram via graph rewriting. Tactic nodes can have many output wires, and use a filtering procedure based on goal-types (predicates describing the features of a goal) to decide where best to send newly-generated sub-goals. In addition to making the flow of goal information explicit, the graphical language can fulfil the role of many tacticals using visual idioms like branching, merging, and feedback loops. We argue that this language enables development of more robust proof strategies and provide several examples, along with a prototype implementation in Isabelle.
Original languageEnglish
Title of host publicationLogic for Programming, Artificial Intelligence, and Reasoning: 19th International Conference, LPAR-19, Stellenbosch, South Africa, December 14-19, 2013. Proceedings
EditorsKen McMillan, Aart Middeldorp, Andrei Voronkov
Place of PublicationBerlin, Heidelberg
PublisherSpringer
Pages324-339
Number of pages16
ISBN (Electronic)978-3-642-45221-5
ISBN (Print)978-3-642-45220-8
DOIs
Publication statusPublished - 2013

Publication series

NameLecture Notes in Computer Science
PublisherSpringer Berlin Heidelberg
Volume8312
ISSN (Print)0302-9743

Fingerprint

Dive into the research topics of 'A Graphical Language for Proof Strategies'. Together they form a unique fingerprint.

Cite this