a simple supercompiler formally verified in coq
play

A Simple Supercompiler Formally Verified in Coq Dimitur Krustev - PowerPoint PPT Presentation

Introduction Supercompiler Organization and Correctness Proof Possible Extensions and Applications Summary A Simple Supercompiler Formally Verified in Coq Dimitur Krustev IGE+XAO Balkan 4 July 2010 / META 2010 Dimitur Krustev A Simple


  1. Introduction Supercompiler Organization and Correctness Proof Possible Extensions and Applications Summary A Simple Supercompiler Formally Verified in Coq Dimitur Krustev IGE+XAO Balkan 4 July 2010 / META 2010 Dimitur Krustev A Simple Supercompiler Formally Verified in Coq

  2. Introduction Supercompiler Organization and Correctness Proof Possible Extensions and Applications Summary Outline Introduction 1 Questions on the Title Decomposition of Supercompilation Coq Features Used Supercompiler Organization and Correctness Proof 2 Expression Language and Simple Normalization Propagation of Test Outcomes in Branches Full Language, Loop Unrolling Possible Extensions and Applications 3 Test Generation, Extensional Equivalence More Realistic Language Use Information Propagation in Isolation Dimitur Krustev A Simple Supercompiler Formally Verified in Coq

  3. Introduction Questions on the Title Supercompiler Organization and Correctness Proof Decomposition of Supercompilation Possible Extensions and Applications Coq Features Used Summary Outline Introduction 1 Questions on the Title Decomposition of Supercompilation Coq Features Used Supercompiler Organization and Correctness Proof 2 Expression Language and Simple Normalization Propagation of Test Outcomes in Branches Full Language, Loop Unrolling Possible Extensions and Applications 3 Test Generation, Extensional Equivalence More Realistic Language Use Information Propagation in Isolation Dimitur Krustev A Simple Supercompiler Formally Verified in Coq

  4. Introduction Questions on the Title Supercompiler Organization and Correctness Proof Decomposition of Supercompilation Possible Extensions and Applications Coq Features Used Summary Questions on the Title. Supercompiler? Formal verification? Important for non-experimental supercompilers Fresh look over supercompilation process In Coq? A matter of taste Non-critical (very few Coq-specific features used) Simple? Toy language ... ... over a toy data domain (simple binary trees). Cut supercompilation into smaller pieces ... ... with modular proofs of correctness. But: less powerful supercompiler Dimitur Krustev A Simple Supercompiler Formally Verified in Coq

  5. Introduction Questions on the Title Supercompiler Organization and Correctness Proof Decomposition of Supercompilation Possible Extensions and Applications Coq Features Used Summary Questions on the Title. Supercompiler? Formal verification? Important for non-experimental supercompilers Fresh look over supercompilation process In Coq? A matter of taste Non-critical (very few Coq-specific features used) Simple? Toy language ... ... over a toy data domain (simple binary trees). Cut supercompilation into smaller pieces ... ... with modular proofs of correctness. But: less powerful supercompiler Dimitur Krustev A Simple Supercompiler Formally Verified in Coq

  6. Introduction Questions on the Title Supercompiler Organization and Correctness Proof Decomposition of Supercompilation Possible Extensions and Applications Coq Features Used Summary Questions on the Title. Supercompiler? Formal verification? Important for non-experimental supercompilers Fresh look over supercompilation process In Coq? A matter of taste Non-critical (very few Coq-specific features used) Simple? Toy language ... ... over a toy data domain (simple binary trees). Cut supercompilation into smaller pieces ... ... with modular proofs of correctness. But: less powerful supercompiler Dimitur Krustev A Simple Supercompiler Formally Verified in Coq

  7. Introduction Questions on the Title Supercompiler Organization and Correctness Proof Decomposition of Supercompilation Possible Extensions and Applications Coq Features Used Summary Questions on the Title. Supercompiler? Formal verification? Important for non-experimental supercompilers Fresh look over supercompilation process In Coq? A matter of taste Non-critical (very few Coq-specific features used) Simple? Toy language ... ... over a toy data domain (simple binary trees). Cut supercompilation into smaller pieces ... ... with modular proofs of correctness. But: less powerful supercompiler Dimitur Krustev A Simple Supercompiler Formally Verified in Coq

  8. Introduction Questions on the Title Supercompiler Organization and Correctness Proof Decomposition of Supercompilation Possible Extensions and Applications Coq Features Used Summary Questions on the Title. Supercompiler? Formal verification? Important for non-experimental supercompilers Fresh look over supercompilation process In Coq? A matter of taste Non-critical (very few Coq-specific features used) Simple? Toy language ... ... over a toy data domain (simple binary trees). Cut supercompilation into smaller pieces ... ... with modular proofs of correctness. But: less powerful supercompiler Dimitur Krustev A Simple Supercompiler Formally Verified in Coq

  9. Introduction Questions on the Title Supercompiler Organization and Correctness Proof Decomposition of Supercompilation Possible Extensions and Applications Coq Features Used Summary Outline Introduction 1 Questions on the Title Decomposition of Supercompilation Coq Features Used Supercompiler Organization and Correctness Proof 2 Expression Language and Simple Normalization Propagation of Test Outcomes in Branches Full Language, Loop Unrolling Possible Extensions and Applications 3 Test Generation, Extensional Equivalence More Realistic Language Use Information Propagation in Isolation Dimitur Krustev A Simple Supercompiler Formally Verified in Coq

  10. Introduction Questions on the Title Supercompiler Organization and Correctness Proof Decomposition of Supercompilation Possible Extensions and Applications Coq Features Used Summary Decomposition of Supercompilation (classical). Classical Organization of Supercompilation ���� ��� ��� ������������������� �������� ����� �� ����������������� ������������������������ �� �������!� �������������������� ����������� ������ ��� Dimitur Krustev A Simple Supercompiler Formally Verified in Coq

  11. Introduction Questions on the Title Supercompiler Organization and Correctness Proof Decomposition of Supercompilation Possible Extensions and Applications Coq Features Used Summary Decomposition of Supercompilation (this work). Simple normalization ( ≈ deforestation − unfolding) - normConv Example term := IfNil Id Id (Tl # Hd). Eval compute in (ntrm2trm (normConv (term $ term))). = IfNil Id (IfNil Id Id (Tl # Hd)) (Hd # Tl) : Trm Theorem normConvPreservesEval: forall (t: Trm) (v: Val), evalNT (normConv t) v = evalT t v. Propagation of test outcomes inside if-branches - norm Eval compute in (ntrm2trm (norm (term $ term))). = IfNil Id Nil (Hd # Tl) : Trm Theorem normPreservesEval: forall t v, evalNT (norm t) v = evalT t v. Single-step loop unrolling - unrollToInit Ensuring termination - firstEmbedded Multi-step loop unrolling - sscp Dimitur Krustev A Simple Supercompiler Formally Verified in Coq

  12. Introduction Questions on the Title Supercompiler Organization and Correctness Proof Decomposition of Supercompilation Possible Extensions and Applications Coq Features Used Summary Decomposition of Supercompilation (this work). Simple normalization ( ≈ deforestation − unfolding) - normConv Example term := IfNil Id Id (Tl # Hd). Eval compute in (ntrm2trm (normConv (term $ term))). = IfNil Id (IfNil Id Id (Tl # Hd)) (Hd # Tl) : Trm Theorem normConvPreservesEval: forall (t: Trm) (v: Val), evalNT (normConv t) v = evalT t v. Propagation of test outcomes inside if-branches - norm Eval compute in (ntrm2trm (norm (term $ term))). = IfNil Id Nil (Hd # Tl) : Trm Theorem normPreservesEval: forall t v, evalNT (norm t) v = evalT t v. Single-step loop unrolling - unrollToInit Ensuring termination - firstEmbedded Multi-step loop unrolling - sscp Dimitur Krustev A Simple Supercompiler Formally Verified in Coq

  13. Introduction Questions on the Title Supercompiler Organization and Correctness Proof Decomposition of Supercompilation Possible Extensions and Applications Coq Features Used Summary Decomposition of Supercompilation (this work). Simple normalization ( ≈ deforestation − unfolding) - normConv Example term := IfNil Id Id (Tl # Hd). Eval compute in (ntrm2trm (normConv (term $ term))). = IfNil Id (IfNil Id Id (Tl # Hd)) (Hd # Tl) : Trm Theorem normConvPreservesEval: forall (t: Trm) (v: Val), evalNT (normConv t) v = evalT t v. Propagation of test outcomes inside if-branches - norm Eval compute in (ntrm2trm (norm (term $ term))). = IfNil Id Nil (Hd # Tl) : Trm Theorem normPreservesEval: forall t v, evalNT (norm t) v = evalT t v. Single-step loop unrolling - unrollToInit Ensuring termination - firstEmbedded Multi-step loop unrolling - sscp Dimitur Krustev A Simple Supercompiler Formally Verified in Coq

Recommend


More recommend