pattern und copattern matching
play

Pattern und Copattern Matching Anton Setzer Swansea, UK (Sect 1 - - PowerPoint PPT Presentation

Pattern und Copattern Matching Anton Setzer Swansea, UK (Sect 1 - 3 joint work with Andreas Abel, Brigitte Pientka, and David Thibodeau) Advances in Proof Theory Bern, 13 14 December 2013 To celebrate Gerhard J agers 60th birthday


  1. Pattern und Copattern Matching Anton Setzer Swansea, UK (Sect 1 - 3 joint work with Andreas Abel, Brigitte Pientka, and David Thibodeau) Advances in Proof Theory Bern, 13 – 14 December 2013 To celebrate Gerhard J¨ ager’s 60th birthday Anton Setzer Pattern und Copattern Matching 1/ 38

  2. Happy Birthday Happy Birthday Anton Setzer Pattern und Copattern Matching 2/ 38

  3. �� �� �� �� �� �� �� �� �� �� �� �� One Key Achievement of G. J¨ ager ◮ Shift in Proof Theory from Subsystems of Analysis to Kripke-Platek set theory. Anton Setzer Pattern und Copattern Matching 3/ 38

  4. One Key Achievement of G. J¨ ager ◮ Shift in Proof Theory from Subsystems of Analysis to Kripke-Platek set theory. ◮ Reason for its success: ◮ Allows to principles from recursion theory very well Therefore provide an excellent layering of theories of different proof theoretic strength. ◮ Sets have a natural tree like structure, which corresponds well to proofs which are trees as well. �� �� �� �� �� �� a i = { b j | j ∈ J } a i 1 �� �� �� �� �� �� a = { b i | i ∈ I } Anton Setzer Pattern und Copattern Matching 3/ 38

  5. Second Key Shift by Gerhard J¨ ager ◮ Use of Feferman’s Theory of Explicit Mathematics as a laboratory for the formalisation and proof theoretic analysis of recursion principles. ◮ Feferman are very flexible for this purpose. ◮ One example by R. Kahle and A.S.: Mahlo universe can be completely predicatively described in Feferman systems (extended predicative Mahlo). ◮ It would be nice to try out the use of EM as a programming language. Anton Setzer Pattern und Copattern Matching 4/ 38

  6. PX ◮ One implementation of Feferman Systems is the PX system. ◮ Hayashi, Susumu and Nakano, Hiroshi: PX: a computational logic. MIT Press, 1988. Anton Setzer Pattern und Copattern Matching 5/ 38

  7. PX ◮ One implementation of Feferman Systems is the PX system. ◮ Hayashi, Susumu and Nakano, Hiroshi: PX: a computational logic. MIT Press, 1988. ◮ My third year student Nathan Smith contacted the creator Susumu Hayashi: Anton Setzer Pattern und Copattern Matching 5/ 38

  8. PX ◮ One implementation of Feferman Systems is the PX system. ◮ Hayashi, Susumu and Nakano, Hiroshi: PX: a computational logic. MIT Press, 1988. ◮ My third year student Nathan Smith contacted the creator Susumu Hayashi: Anton Setzer Pattern und Copattern Matching 5/ 38

  9. PX ◮ One implementation of Feferman Systems is the PX system. ◮ Hayashi, Susumu and Nakano, Hiroshi: PX: a computational logic. MIT Press, 1988. ◮ My third year student Nathan Smith contacted the creator Susumu Hayashi: Dear Nathan, Thank you for your mail. I stopped to maintain PX system about a quarter century ago. I do not even keep the codes of the system. Sorry, but I have left computer science and software engineering long time ago. Best regards, Susumu Hayashi Anton Setzer Pattern und Copattern Matching 5/ 38

  10. One more Achievement by J¨ ager ◮ Metaprediacativity ◮ Exploration of the limit of predicative methods in proof theory. Anton Setzer Pattern und Copattern Matching 6/ 38

  11. From Codata to Coalgebras Algebras and Coalgebras Patterns and Copatterns Codata types and Decidable Equality Conclusion Appendix: Example of Objects as Coalgebras Appendix: Reduction of Mixed Pattern/Copattern Matching to Operators Anton Setzer Pattern und Copattern Matching 7/ 38

  12. From Codata to Coalgebras From Codata to Coalgebras Algebras and Coalgebras Patterns and Copatterns Codata types and Decidable Equality Conclusion Appendix: Example of Objects as Coalgebras Appendix: Reduction of Mixed Pattern/Copattern Matching to Operators Anton Setzer Pattern und Copattern Matching 8/ 38

  13. From Codata to Coalgebras Dependent Type Theory with Decidable Type Checking ◮ We explore the use of coalgebras in the context of dependent type theory with decidable type checking . ◮ This allows to program in dependent type theory in a similar way as when programming in other typed languages. ◮ No need to derive that something is a correct program. ◮ Type checking in dependent type theory requires checking of (definitional) equality. ◮ Such an equality cannot be extensional. ◮ Instead, two functions f , g : A → B are equal if they (or their program codes) reduce to the same normal form. Anton Setzer Pattern und Copattern Matching 9/ 38

  14. From Codata to Coalgebras Codata Type ◮ Idea of Codata Types non-well-founded versions of inductive data types: codata Stream : Set where : N → Stream → Stream cons ◮ Same definition as inductive data type but we are allowed to have infinite chains of constructors cons n 0 ( cons n 1 ( cons n 2 · · · )) ◮ Problem 1: Non-normalisation. ◮ Problem 2: Equality between streams is equality between all n i , and therefore undecidable. ◮ Problem 3: Underlying assumption is ∀ s : Stream . ∃ n , s ′ . s = cons n s ′ which results in undecidable equality. Anton Setzer Pattern und Copattern Matching 10/ 38

  15. From Codata to Coalgebras Subject Reduction Problem ◮ In order to repair problem of normalisation restrictions on reductions were introduced. ◮ Resulted in Coq in a long known problem of subject reduction . ◮ In order to avoid this, in Agda dependent elimination for coalgebras disallowed. ◮ Makes it difficult to use. Anton Setzer Pattern und Copattern Matching 11/ 38

  16. From Codata to Coalgebras Coalgebraic Formulation of Coalgebras ◮ Solution is to follow the long established categorical formulation of coalgebras. ◮ Final coalgebras will be replaced by weakly final coalgebras. ◮ Two streams will be equal if the programs producing them reduce to the same normal form. Anton Setzer Pattern und Copattern Matching 12/ 38

  17. Algebras and Coalgebras From Codata to Coalgebras Algebras and Coalgebras Patterns and Copatterns Codata types and Decidable Equality Conclusion Appendix: Example of Objects as Coalgebras Appendix: Reduction of Mixed Pattern/Copattern Matching to Operators Anton Setzer Pattern und Copattern Matching 13/ 38

  18. Algebras and Coalgebras Algebras and Coalgebras Elaboration of notions of (co)iteration, (co)recursion, induction is result of discussions with Peter Hancock. ◮ Algebraic data types correspond to initial algebras. ◮ N as an algebra can be represented as introduction rules for N : 0 : N S : N → N ◮ Coalgebra obtained by “reversing the arrows”. ◮ Stream as a coalgebra can be expressed as as elimination rules for it: head : Stream → N tail : Stream → Stream Anton Setzer Pattern und Copattern Matching 14/ 38

  19. Algebras and Coalgebras Weakly Initial Algebras and Final Coalgebras ◮ N as a weakly initial algebra corresponds to iteration (elimination rule): For A : Set , a : A , f : A → A there exists g : N → A g 0 = a g ( S n ) = f ( g n ) (or g n = f n a ). ◮ Stream as a weakly final coalgebra corresponds to coiteration or guarded iteration (introduction rule): For A : Set , f 0 : A → N , f 1 : A → A there exists g s.t. g : A → Stream head ( g a ) = f 0 a tail ( g a ) = g ( f 1 a ) Anton Setzer Pattern und Copattern Matching 15/ 38

  20. Algebras and Coalgebras Example ◮ Using coiteration we can define inc : N → Stream head ( inc n ) = n ( inc n ) = inc ( n + 1) tail Anton Setzer Pattern und Copattern Matching 16/ 38

  21. Algebras and Coalgebras Recursion and Corecursion ◮ N as an initial algebra corresponds to uniqueness of g above. ◮ Allows to derive primitive recursion: For A : Set , a : A , f : ( N × A ) → A there exists g : N → A g 0 = a g ( S n ) = f � n , ( g n ) � ◮ Stream as a final coalgebra corresponds to uniqueness of h . ◮ Allows to derive primitive corecursion: For A : Set , f 0 : A → N , f 1 : A → ( Stream + A ) there exists g : A → Stream head ( g a ) = f 0 a tail ( g a ) = if f 1 a = inl s s tail ( g a ) = g a ′ if f 1 a = inr a ′ Anton Setzer Pattern und Copattern Matching 17/ 38

  22. Algebras and Coalgebras Recursion vs Iteration ◮ Using recursion we can define inverse case of the constructors of N as follows: case : N → (1 + N ) case 0 = inl case ( S n ) = inr n ◮ Using iteration, we cannot make use of n and therefore case is defined inefficiently: case : N → (1 + N ) case 0 = inl case ( S n ) = caseaux ( case n ) caseaux : (1 + N ) → (1 + N ) = inr 0 caseaux inl caseaux ( inr n ) = inr ( S n ) Anton Setzer Pattern und Copattern Matching 18/ 38

  23. Algebras and Coalgebras Defininition of pred ◮ In the talk given we defined pred in a wrong way (using iteration). One way of defining pred by iteration is by defining first case and then to define predaux : (1 + N ) → N predaux inl = 0 predaux ( inr n ) = n pred : N → N pred n = predaux ( case n ) Anton Setzer Pattern und Copattern Matching 19/ 38

  24. Algebras and Coalgebras Corecursion vs Coiteration ◮ Definition of cons (inverse of the destructors) using coiteration inefficient: cons : N → Stream → Stream head ( cons n s ) = n tail ( cons n s ) = cons ( head s ) ( tail s ) ◮ Using primitive corecursion we can define more easily cons : N → Stream → Stream head ( cons n s ) = n tail ( cons n s ) = s Anton Setzer Pattern und Copattern Matching 20/ 38

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