Asynchronous User Interaction and Tool Integration in Isabelle/PIDE
Historically, the LCF tradition of interactive theorem proving was tied to the read-eval-print loop, with sequential and synchronous evaluation of prover commands given on the command-line. This user-interface technology was adequate when R. Milner introduced his LCF proof assistant in the 1970-ies, but it severely limits the potential of current multicore hardware and advanced IDE front-ends.
Isabelle/PIDE breaks this loop and retrofits the read-eval-print phases into an asynchronous model of document-oriented proof processing. Instead of feeding a sequence of individual commands into the prover process, the primary interface works via edits over a family of document versions. Execution is implicit and managed by the prover on its own account in a timeless and stateless manner. Various aspects of interactive proof checking are scheduled according to requirements determined by the front-end perspective on the proof document, while making adequate use of the CPU resources on multicore hardware on the back-end.
Recent refinements of Isabelle/PIDE provide an explicit concept of asynchronous print functions over existing proof states. This allows to integrate long-running or potentially non-terminating tools into the document-model. Applications range from traditional proof state output (which may consume substantial time in interactive development) to automated provers and dis-provers that report on existing proof document content (e.g. Sledgehammer, Nitpick, Quickcheck in Isabelle/HOL). Moreover, it is possible to integrate query operations via additional GUI panels with separate input and output (e.g. for Sledgehammer or find-theorems). Thus the Prover IDE provides continuous proof processing, augmented by add-on tools that help the user to continue writing proofs.
KeywordsDocument Version Tool Integration Proof Assistant Node Overlay Proof Processing
Unable to display preview. Download preview PDF.
- 2.Asperti, A., Sacerdoti Coen, C., Tassi, E., Zacchiroli, S.: User interaction with the Matita proof assistant. Journal of Automated Reasoning 39(2) (2007)Google Scholar
- 5.Kapur, D., Vandevoorde, M.T.: DLP: A paradigm for parallel interactive theorem proving (1996)Google Scholar
- 8.Ring, M., Lüth, C.: Collaborative interactive theorem proving with Clide. In: Klein, G., Gamboa, R. (eds.) ITP 2014. LNCS (LNAI), vol. 8558, pp. 467–482. Springer, Heidelberg (2014)Google Scholar
- 9.Odersky, M., et al.: An overview of the Scala programming language. Technical Report IC/2004/64, EPF Lausanne (2004)Google Scholar
- 10.Tankink, C.: Documentation and Formal Mathematics — Web Technology meets Theorem Proving. PhD thesis, Radboud University Nijmegen (2013)Google Scholar
- 12.Wenzel, M.: Asynchronous proof processing with Isabelle/Scala and Isabelle/jEdit. In: Coen, C.S., Aspinall, D. (eds.) User Interfaces for Theorem Provers (UITP 2010). ENTCS (July 2010)Google Scholar
- 14.Wenzel, M.: Isabelle/jEdit. Part of Isabelle distribution (December 2013), http://isabelle.in.tum.de/website-Isabelle2013-2/dist/Isabelle2013-2/doc/jedit.pdf
- 15.Wenzel, M.: PIDE as front-end technology for Coq (2013), http://arxiv.org/abs/1304.6626
- 16.Wenzel, M.: READ-EVAL-PRINT in parallel and asynchronous proof-checking. In: Kaliszyk, C., Lüth, C. (eds.) User Interfaces for Theorem Provers (UITP 2012). EPTCS, vol. 118 (2013)Google Scholar
- 18.Wiedijk, F. (ed.): The Seventeen Provers of the World. LNCS (LNAI), vol. 3600. Springer, Heidelberg (2006)Google Scholar