Parallel Proof Checking in Isabelle/Isar

We address the “multicore problem” for mathematical assistants with full proof checking, with special focus on Isabelle/Isar and its main SML platform Poly/ML. On the one hand, working with explicit definitions, statements, and proofs requires significant runtime resources, so the question of parallel checking is really relevant. On the other hand, the inherent structure of formal theories provides various possibilities for parallelism (both implicit and explicit), which is in fact an almost ideal situation. Exploiting this potential in practice requires to reconsider various aspects of the ML platform, the inference engine, and some higher prover specific layers. We report on an implementation of all that for Isabelle/Isar, and point out some general considerations for parallelism in functional programming, and other provers like Coq and HOL.

[1]  Markus Wenzel,et al.  Isabelle/Isar , 2006, The Seventeen Provers of the World.

[2]  Burkhart Wolff,et al.  Building Formal Method Tools in the Isabelle/Isar Framework , 2007, TPHOLs.

[3]  Susumu Horiguchi,et al.  A parallel SML compiler based on algorithmic skeletons , 2005, Journal of Functional Programming.

[4]  Hasan Amjad Shallow Lazy Proofs , 2005, TPHOLs.

[5]  Simon L. Peyton Jones,et al.  Parallel generational-copying garbage collection with a block-structured heap , 2008, ISMM '08.

[6]  Martin Odersky,et al.  An Overview of the Scala Programming Language , 2004 .

[7]  Per Brinch Hansen,et al.  Monitors and concurrent Pascal: a personal history , 1993, HOPL-II.

[8]  Simon L. Peyton Jones,et al.  Haskell on a shared-memory multiprocessor , 2005, Haskell '05.

[9]  Freek Wiedijk,et al.  The Seventeen Provers of the World , 2006 .

[10]  Claudio V. Russo,et al.  Parallel concurrent ML , 2009, ICFP.

[11]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[12]  Robin Milner,et al.  A Metalanguage for interactive proof in LCF , 1978, POPL.

[13]  Rita Loogen,et al.  Comparing Parallel Functional Languages: Programming and Performance , 2003, High. Order Symb. Comput..

[14]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[15]  Martin Odersky,et al.  Scala Actors: Unifying thread-based and event-based programming , 2009, Theor. Comput. Sci..

[16]  Simon L. Peyton Jones,et al.  Composable memory transactions , 2005, CACM.

[17]  Gert Smolka,et al.  Alice through the looking glass , 2021, Trends in Functional Programming.