Merging Procedural and Declarative Proof [chapter]

Cezary Kaliszyk, Freek Wiedijk
2009 Lecture Notes in Computer Science  
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
more » ... stems), 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.
doi:10.1007/978-3-642-02444-3_13 fatcat:hhsb5djxi5cbjmzwrmyxbvkcuy