a tactic language for declarative proofs
play

A Tactic Language for Declarative Proofs Serge Autexier Dominik - PowerPoint PPT Presentation

A Tactic Language for Declarative Proofs Serge Autexier Dominik Dietrich German Research Center for Artificial Intelligence (DFKI), Bremen, Germany autexier@dfki.de dominik.dietrich@dfki.de ITP 2010 - International Conference on Interactive


  1. A Tactic Language for Declarative Proofs Serge Autexier Dominik Dietrich German Research Center for Artificial Intelligence (DFKI), Bremen, Germany autexier@dfki.de dominik.dietrich@dfki.de ITP 2010 - International Conference on Interactive Theorem Proving Edinburgh, UK, July 11-14, 2010 A Tactic Language for Declarative Proofs German Research Center for Artificial Intelligence Serge Autexier, Dominik Dietrich

  2. Procedural vs. Declarative Proof Procedural vs. Declarative Proof ◮ recent trend towards declarative proof languages, inspired by Mizar procedural style declarative style theorem natcomp: theorem natcomplus: "(a::nat) + b = b+a" "(a::nat) + b = b+a" apply (induct a) proof (induct a) apply (subst add_0) show "0 + b = b + 0" apply (subst add_0_right) proof (-) apply (rule refl) have "0+b=b" by (simp) apply (subst add_Suc_right) also have "...=b+0" by (simp) apply (subst add_Suc) finally show ?thesis . apply (simp) qed done next ... + easier to read ( explicit context ) + more efficient processing + faster proof development + easier to maintain, error recovery ◮ portable (at least to some degree) + usually shorter A Tactic Language for Declarative Proofs German Research Center for Artificial Intelligence Serge Autexier, Dominik Dietrich

  3. Procedural vs. Declarative Proof Procedural vs. Declarative Proof ◮ recent trend towards declarative proof languages, inspired by Mizar procedural style declarative style theorem natcomp: theorem natcomplus: "(a::nat) + b = b+a" "(a::nat) + b = b+a" apply (induct a) proof (induct a) apply (subst add_0) show "0 + b = b + 0" apply (subst add_0_right) proof (-) apply (rule refl) have "0+b=b" by (simp) apply (subst add_Suc_right) also have "...=b+0" by (simp) apply (subst add_Suc) finally show ?thesis . apply (simp) qed done next ... + easier to read ( explicit context ) + more efficient processing + easier to maintain, error recovery + faster proof development ◮ portable (at least to some degree) + usually shorter A Tactic Language for Declarative Proofs German Research Center for Artificial Intelligence Serge Autexier, Dominik Dietrich

  4. Constructing Declarative Proofs Constructing Declarative Proofs ◮ common practice: ◮ do not use declarative style ◮ explore and find proof using procedural style , rewrite it in declarative style theorem natcomp: proof (induct a) "a + b = show "0 + b = b + 0" b+a" apply (induct a) proof (-) apply (subst add_0) have "0+b=b" by (subst add_0) apply (subst add_0_right) also have "...=b+0" by (subst apply (rule refl) finally show ?thesis . qed goal (1 subgoal): next 1. a + b = b + a fix a assume IH: "a+b=b+a" show "Suc a + b = b + Suc a" A Tactic Language for Declarative Proofs German Research Center for Artificial Intelligence Serge Autexier, Dominik Dietrich

  5. Constructing Declarative Proofs Constructing Declarative Proofs ◮ common practice: ◮ do not use declarative style ◮ explore and find proof using procedural style , rewrite it in declarative style theorem natcomp: proof (induct a) "a + b = show "0 + b = b + 0" b+a" apply (induct a) proof (-) apply (subst add_0) have "0+b=b" by (subst add_0) apply (subst add_0_right) also have "...=b+0" by (subst apply (rule refl) finally show ?thesis . qed goal (2 subgoals): next 1. 0 + b = b + 0 fix a 2. !!a. a + b = b + a assume IH: "a+b=b+a" ==> Suc a + b = b + Suc a show "Suc a + b = b + Suc a" A Tactic Language for Declarative Proofs German Research Center for Artificial Intelligence Serge Autexier, Dominik Dietrich

  6. Constructing Declarative Proofs Constructing Declarative Proofs ◮ common practice: ◮ do not use declarative style ◮ explore and find proof using procedural style , rewrite it in declarative style theorem natcomp: proof (induct a) "a + b = show "0 + b = b + 0" b+a" apply (induct a) proof (-) apply (subst add_0) have "0+b=b" by (subst add_0) apply (subst add_0_right) also have "...=b+0" by (subst apply (rule refl) finally show ?thesis . qed goal (2 subgoals): next 1. b = b + 0 fix a 2. !!a. a + b = b + a assume IH: "a+b=b+a" ==> Suc a + b = b + Suc a show "Suc a + b = b + Suc a" A Tactic Language for Declarative Proofs German Research Center for Artificial Intelligence Serge Autexier, Dominik Dietrich

  7. Constructing Declarative Proofs Constructing Declarative Proofs ◮ common practice: ◮ do not use declarative style ◮ explore and find proof using procedural style , rewrite it in declarative style theorem natcomp: proof (induct a) "a + b = show "0 + b = b + 0" b+a" apply (induct a) proof (-) apply (subst add_0) have "0+b=b" by (subst add_0) apply (subst add_0_right) also have "...=b+0" by (subst apply (rule refl) finally show ?thesis . qed goal (2 subgoals): next 1. b = b fix a 2. !!a. a + b = b + a ==> assume IH: "a+b=b+a" Suc a + b = b + Suc a show "Suc a + b = b + Suc a" A Tactic Language for Declarative Proofs German Research Center for Artificial Intelligence Serge Autexier, Dominik Dietrich

  8. Constructing Declarative Proofs Constructing Declarative Proofs ◮ common practice: ◮ do not use declarative style ◮ explore and find proof using procedural style , rewrite it in declarative style theorem natcomp: proof (induct a) "a + b = show "0 + b = b + 0" b+a" apply (induct a) proof (-) apply (subst add_0) have "0+b=b" by (subst add_0) apply (subst add_0_right) also have "...=b+0" by (subst apply (rule refl) finally show ?thesis . qed goal (1 subgoal): next 1. !!a. a + b = b + a fix a ==> Suc a + b = b + Suc a assume IH: "a+b=b+a" show "Suc a + b = b + Suc a" A Tactic Language for Declarative Proofs German Research Center for Artificial Intelligence Serge Autexier, Dominik Dietrich

  9. Goal Goal theorem natcomplus: "a + b = b+a" Goals/Contributions ◮ first class support of Tactic execution declarative proofs at the tactic level ◮ declarative proof scripts theorem natcomplus: "a + b = b+a" without loosing advantages proof (induct a) of apply style show "0 + b = b + 0" ◮ capture high level structure proof of the proof in the tradition . . . of proof planning [Bun88] qed next fix a or proof sketches [Wie04] assume IH: "a+b=b+a" ◮ specification of tactics show "Suc a + b = b + Suc a" within proof document proof . . . A Tactic Language for Declarative Proofs German Research Center for Artificial Intelligence Serge Autexier, Dominik Dietrich

  10. Generation of Declarative Proofs Generation of Declarative Proofs 1 generate declarative proof script from proof term [Coe10] ◮ procedural proof script → proof term → declarative proof script 2 generate declarative proof script from assertion level proof [DSW08] ◮ procedural proof script → proof tree → declarative proof script Proof Script Generation ◮ Stylistic choices in expressing proofs, leading to granularity problem ◮ include intermediate results or express them as separate lemmas ◮ skip trivial steps completely 3 Observation: proof plans can be expressed as declarative proof scripts ( Isaplanner [Dix05]) ◮ similarities and differences are discussed at the end of the talk A Tactic Language for Declarative Proofs German Research Center for Artificial Intelligence Serge Autexier, Dominik Dietrich

  11. Overview Overview 1 Development of Declarative Tactics 2 Dynamic Patterns and Iteration A Tactic Language for Declarative Proofs German Research Center for Artificial Intelligence Serge Autexier, Dominik Dietrich

  12. Basic Declarative Tactics (1) Basic Declarative Tactics (1) ◮ procedural tactics, simplest case : sequence of inference applications ◮ involve parameters (such as induction variable) ◮ declarative tactic: sequence of (declarative) proof commands ◮ abstract over common structure of proof scripts to obtain schematic proof script theorem natcomplus: a+b = b+a theorem natcomplus: a+b = b+a proof proof subgoals by (induct a ) subgoals by (induct b ) subgoal 0+b = b+0 subgoal a+0 = 0+a subgoal Suc a+b = b+Suc a subgoal a+Suc b = Suc b+a using IH: a+b=b+a using IH: a+b=b+a end end qed qed A Tactic Language for Declarative Proofs German Research Center for Artificial Intelligence Serge Autexier, Dominik Dietrich

  13. Basic Declarative Tactics (2) Basic Declarative Tactics (2) precondition ◮ make context available strategy natinduct cases * ⊢ P x via precondition with x in (analyzeinductvars ”P”) ◮ allow for internal -> computations proof ◮ schematic proof script subgoals by (induct x) action as body subgoal P 0 subgoal P (suc x) using IH: P x end Realization ◮ define tactic language on top of proof language ◮ declarative specification of the tactic within proof document ◮ justification is a declarative proof script ◮ natural integration into existing frameworks A Tactic Language for Declarative Proofs German Research Center for Artificial Intelligence Serge Autexier, Dominik Dietrich

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend