2,489 research outputs found

    ProofPeer - A Cloud-based Interactive Theorem Proving System

    Get PDF
    ProofPeer strives to be a system for cloud-based interactive theorem proving. After illustrating why such a system is needed, the paper presents some of the design challenges that ProofPeer needs to meet to succeed. Contexts are presented as a solution to the problem of sharing proof state among the users of ProofPeer. Chronicles are introduced as a way to organize and version contexts

    Interactive Theorem Proving with Indexed Formulas

    Get PDF
    Since more than two decades research in interactive theorem proving (ITP) has attracted growing interest. The primary application domains for ITPs range from hard- and software verification tools to mathematical tutor systems. To support communication with the user in an adequate way these systems depend on calculi that allow for the construction of human understandable and readable proofs. However, most calculi that are used in current ITPs fall still short of supporting the user in an optimal way. The reason is that they enforce the user to construct proofs at a level that is far more detailed than the one that can be found in human constructed proofs. Autexier [Aut03] has recently proposed a new theorem proving framework that allows to model different logics and calculi in an uniform way. In CORE, a proof-state is always represented as a single formula that can be manipulated by the application of replacement rules that are generated from the logical context of the subformula under transformation. This approach also facilitates proof construction at the assertion level which is considered as more closely matching the level at which humans construct proofs (see for instance [Hua94]). Together with COREs window inference technique this makes CORE a potentially well suited basis for interactive theorem proving. This thesis tries to excerpt COREs potential for interactive theorem proving by mapping important concepts of the established proof system ΩMEGA to CORE. A task structure is developed to present the context of a subformula in an intuitive way to the user and to assist him in structuring proofs. The development of a method interpreter makes it possible to specify abstract inference steps declaratively and to encode proof strategies for the use in CORE. The adaptation of ΩMEGAS agent-based suggestion mechanism ΩANTS to CORE helps the user with the identification of applicable methods and replacement rules.Interaktives Theorembeweisen hat in den letzten zwei Jahrzehnten zunehmend an Bedeutung gewonnen. Die Anwendungsbereiche von Systemen mit denen sich Beweise interaktiv führen lassen reichen von der Hard- und Software Verifikation bis zu mathematischen Tutor-Systemen. Die genannten Anwendungsgebiete machen es erforderlich das der Anwender bei der Beweisführung adequat untersützt wird. Um eine entsprechende Kommunikation mit dem Benutzer zu ermöglichen verwenden interaktive Beweissysteme Kalküle, in denen Beweise in einer für den Benutzer nachvollziehbaren Art und Weise, geführt werden können. Trotzdem kann man noch nicht davon sprechen, dass interaktive Beweiser den Benutzer optimal unterstützen. Der Hauptrgund hierfür ist, dass die eingesetzten Kalküle automatisch dazu führen, dass Beweise auf einer viel detailliertern Ebene geführt werden müssen, als man typischerweise in einem mathematischen Beweis finden würde. Autexier [Aut03]hat kürzlich eine neue logische Umgebung für die Beweissuche entwickelt, welche es ermöglicht verschiedene Logiken und Kalküle einheitlich zu modellieren. In CORE ist ein Beweiszustand immer als eine einzige Formel repräsentiert, welche durch das Anwenden von Ersetzungsregeln, die aus dem Kontext einer Teilformel abgeleitet werden, transformiert werden kann. Diese Herangehensweise erleichtert es auch, Beweise auf der sogenannten Assertion-Ebene (vgl. [Hua94]) zu führen, welche allgemein als eine natürlichere Ebene für die Beweisführung angesehen wird. Zusammen mit der Window-Inferenz Technik, die von CORE unterstützt, wird stellt CORE ein System dar das potentiell als eine verbesserte Grundlage für die interaktive Beweissuche angesehen werden kann. In dieser Arbeit geht es darum, das Potential von CORE im Hinblick auf die interaktive Beweiskonstruktion auszunutzen. Dieses geschieht zum einen dadurch, dass etablierte Konzepte im Bereich des interaktiven Beweisens, wie sie auch im Beweis-System ΩMEGA verwendet werden, auf das CORE-System abgebildet werden. Desweiteren wird eine Task-Srukture entwickelt, die es zum einen ermöglicht, den logischen Kontext einer Teilformel für den Benutzer verständlich aufzubereiten und darzustellen; zum anderen untersützt sie den Anwender auch darin, Beweise strukturiert zu führen. Der Entwurf eines Methoden-Interpreters ermöglicht es, abstrakte Beweisschritte zu kodieren und im System anzuwenden. Die Anpassung des Vorschlags-Mechanismus ΩANTS an CORE stellt eine weitere Unterstützung für den Benutzer bereit, indem sie automatisch Vorschläge über mögliche Fortsetzungen eines Beweises generiert

    Integrating Testing and Interactive Theorem Proving

    Full text link
    Using an interactive theorem prover to reason about programs involves a sequence of interactions where the user challenges the theorem prover with conjectures. Invariably, many of the conjectures posed are in fact false, and users often spend considerable effort examining the theorem prover's output before realizing this. We present a synergistic integration of testing with theorem proving, implemented in the ACL2 Sedan (ACL2s), for automatically generating concrete counterexamples. Our method uses the full power of the theorem prover and associated libraries to simplify conjectures; this simplification can transform conjectures for which finding counterexamples is hard into conjectures where finding counterexamples is trivial. In fact, our approach even leads to better theorem proving, e.g. if testing shows that a generalization step leads to a false conjecture, we force the theorem prover to backtrack, allowing it to pursue more fruitful options that may yield a proof. The focus of the paper is on the engineering of a synergistic integration of testing with interactive theorem proving; this includes extending ACL2 with new functionality that we expect to be of general interest. We also discuss our experience in using ACL2s to teach freshman students how to reason about their programs.Comment: In Proceedings ACL2 2011, arXiv:1110.447

    Balancing lists: a proof pearl

    Get PDF
    Starting with an algorithm to turn lists into full trees which uses non-obvious invariants and partial functions, we progressively encode the invariants in the types of the data, removing most of the burden of a correctness proof. The invariants are encoded using non-uniform inductive types which parallel numerical representations in a style advertised by Okasaki, and a small amount of dependent types.Comment: To appear in proceedings of Interactive Theorem Proving (2014

    SEPIA: Search for Proofs Using Inferred Automata

    Full text link
    This paper describes SEPIA, a tool for automated proof generation in Coq. SEPIA combines model inference with interactive theorem proving. Existing proof corpora are modelled using state-based models inferred from tactic sequences. These can then be traversed automatically to identify proofs. The SEPIA system is described and its performance evaluated on three Coq datasets. Our results show that SEPIA provides a useful complement to existing automated tactics in Coq.Comment: To appear at 25th International Conference on Automated Deductio

    Mathematics and language

    Full text link
    This essay considers the special character of mathematical reasoning, and draws on observations from interactive theorem proving and the history of mathematics to clarify the nature of formal and informal mathematical language. It proposes that we view mathematics as a system of conventions and norms that is designed to help us make sense of the world and reason efficiently. Like any designed system, it can perform well or poorly, and the philosophy of mathematics has a role to play in helping us understand the general principles by which it serves its purposes well

    Interactive theorem proving and program extraction.

    Get PDF
    corecore