Zippy -- Generic White-Box Proof Search with Zippers
Kevin Kappelmann
TL;DR
Zippy tackles the challenge of rigid and hard-to-extend proof automation by offering a generic, white-box framework for tree-based proof search that is largely independent of concrete representations. It builds on alternating zippers, arrows, monads, and lenses to separate navigation, effects, and data manipulation, enabling extensibility and analysability in Isabelle/ML. The paper presents an abstract navigation specification, automatic generation of alternating zippers, and an extensible data-slot framework, along with an Isabelle/ML implementation and example instantiations. This approach aims to enable flexible, inspectable automation in interactive theorem proving, with potential to port or inspire AESOP-like strategies within Isabelle and beyond.
Abstract
We present a framework for tree-based proof search, called Zippy. Unlike existing proof search tools, Zippy is largely independent of concrete search tree representations, search-algorithms, states and effects. It is designed to create analysable and navigable proof searches that are open to customisation and extensions by users. Zippy is founded on concepts from functional programming theory, particularly zippers, arrows, monads, and lenses. We implemented the framework in Isabelle's metaprogramming language Isabelle/ML.
