Merging Procedural and Declarative Proof

  • Authors:
  • Cezary Kaliszyk;Freek Wiedijk

  • Affiliations:
  • Institute for Computing and Information Sciences, Radboud University Nijmegen, The Netherlands;Institute for Computing and Information Sciences, Radboud University Nijmegen, The Netherlands

  • Venue:
  • Types for Proofs and Programs
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

There are two different styles for writing natural deduction proofs: the `Gentzen' style in which a proof is a tree with the conclusion at the root and the assumptions at the leaves, and the `Fitch' style (also called `flag' style) in which a proof consists of lines that are grouped together in nested boxes. In the world of proof assistants these two kinds of natural deduction correspond to procedural proofs (tactic scripts that work on one or more subgoals, like those of the Coq, HOL and PVS systems), and declarative proofs (like those of the Mizar and Isabelle/Isar languages). In this paper we give an algorithm for converting tree style proofs to flag style proofs. We then present a rewrite system that simplifies the results. This algorithm can be used to convert arbitrary procedural proofs to declarative proofs. It does not work on the level of the proof terms (the basic inferences of the system), but on the level of the statements that the user sees in the goals when constructing the proof. The algorithm from this paper has been implemented in the ProofWeb interface to Coq. In ProofWeb a proof that is given as a Coq proof script (even with arbitrary Coq tactics) can be displayed both as a tree style and as a flag style proof.