|dc.description.abstract||Theorem provers are faced with the challenges of size and complexity, fueled by the increasing range
of applications. The use of concurrent/ distributed programming paradigms to engineer better theorem
provers merits serious investigation, as it provides: more processing power and opportunities for
implementing novel approaches to address theorem proving tasks hitherto infeasible in a sequential setting.
Investigation of these opportunities for two diverse theorem prover settings with an emphasis on
desirable implementation criteria is the core focus of this thesis.
Concurrent programming is notoriously error prone, hard to debug and evaluate. Thus, implementation
approaches which promote easy prototyping, portability, incremental development and effective isolation
of design and implementation can greatly aid the enterprise of experimentation with the application
of concurrent techniques to address specific theorem proving tasks. In this thesis, we have explored one
such approach by using Alice ML, a functional programming language with support for concurrency
and distribution, to implement the prototypes and have used programming abstractions to encapsulate
the implementations of the concurrent techniques used. The utility of this approach is illustrated via
proof-of-concept prototypes of concurrent systems for two diverse case studies of theorem proving: the
propositional satisfiability problem (SAT) and LCF style (first-order) theorem proving, addressing some
previously unexplored parallelisation opportunities for each, as follows:.
SAT: We have developed a novel hybrid approach for SAT and implemented a prototype for the same:
DPLL-Stalmarck. It uses two complementary algorithms for SAT, DPLL and Stalmarck’s. The two
solvers run asynchronously and dynamic information exchange is used for co-operative solving. Interaction
of the solvers has been encapsulated as a programming abstraction. Compared to the standalone
DPLL solver, DPLL-Stalmarck shows significant performance gains for two of the three problem classes
considered and comparable behaviour otherwise. As an exploratory research effort, we have developed a
novel algorithm, Concurrent Stalmarck, by applying concurrent techniques to the Stalmarck algorithm.
A proof-of-concept prototype for the same has been implemented. Implementation of the saturation
technique of the Stalmarck algorithm in a parallel setting, as implemented in Concurrent Stalmarck, has
been encapsulated as a programming abstraction.
LCF: Provision of programmable concurrent primitives enables customisation of concurrent techniques
to specific theorem proving scenarios. In this case study, we have developed a multilayered approach to
support programmable, sound extensions for an LCF prover: use programming abstractions to implement
the concurrent techniques; use these to develop novel tacticals (control structures to apply tactics),
incorporating concurrent techniques; and use these to develop novel proof search procedures. This
approach has been implemented in a prototypical LCF style first-order prover, using Alice ML. New
tacticals developed are: fastest-first; distributed composition; crossTalk: a novel tactic which uses dynamic,
collaborative information exchange to handle unification across multiple sub-goals, with shared
meta-variables; a new tactic, performing simultaneous proof-refutation attempts on propositional (sub-
)goals, by invoking an external SAT solver (SAT case study), as a counter-example finder. Examples of
concrete theorem proving scenarios are provided, demonstrating the utility of these extensions. Synthesis
of a variety of automatic proof search procedures has been demonstrated, illustrating the scope of
programmability and customisation, enabled by our multilayered approach.||en_US