pattern matching without k
play

Pattern matching without K Jesper Cockx Dominique Devriese Frank - PowerPoint PPT Presentation

Pattern matching without K Jesper Cockx Dominique Devriese Frank Piessens DistriNet KU Leuven 3 September 2014 How can we recognize definitions by pattern matching that do not depend on K? By taking identity proofs into account during


  1. Pattern matching without K Jesper Cockx Dominique Devriese Frank Piessens DistriNet – KU Leuven 3 September 2014

  2. How can we recognize definitions by pattern matching that do not depend on K? By taking identity proofs into account during unification of the indices! 1 / 1

  3. How can we recognize definitions by pattern matching that do not depend on K? By taking identity proofs into account during unification of the indices! 1 / 1

  4. Pattern matching without K

  5. Pattern matching without K

  6. Simple pattern matching data N : Set where z : N s : N → N min : N → N → N y = ? x min 2 / 1

  7. Simple pattern matching data N : Set where z : N s : N → N min : N → N → N y = z min z ( s x ) y = ? min 2 / 1

  8. Simple pattern matching data N : Set where z : N s : N → N min : N → N → N = z y min z ( s x ) z = z min ( s x ) ( s y ) = s ( min x y ) min 2 / 1

  9. Dependent pattern matching data ≤ : N → N → Set where lz : ( x : N ) → z ≤ x ls : ( x y : N ) → x ≤ y → s x ≤ s y antisym : ( x y : N ) → x ≤ y → y ≤ x → x ≡ y = ? x y p q antisym 3 / 1

  10. Dependent pattern matching data ≤ : N → N → Set where lz : ( x : N ) → z ≤ x ls : ( x y : N ) → x ≤ y → s x ≤ s y antisym : ( x y : N ) → x ≤ y → y ≤ x → x ≡ y ⌊ z ⌋ ⌊ y ⌋ ( lz y ) = ? q antisym ⌊ s x ⌋ ⌊ s y ⌋ ( ls x y p ) q = ? antisym 3 / 1

  11. Dependent pattern matching data ≤ : N → N → Set where lz : ( x : N ) → z ≤ x ls : ( x y : N ) → x ≤ y → s x ≤ s y antisym : ( x y : N ) → x ≤ y → y ≤ x → x ≡ y ⌊ z ⌋ ⌊ z ⌋ ( lz ⌊ z ⌋ ) ( lz ⌊ z ⌋ ) = refl antisym ⌊ s x ⌋ ⌊ s y ⌋ ( ls x y p ) q = ? antisym 3 / 1

  12. Dependent pattern matching data ≤ : N → N → Set where lz : ( x : N ) → z ≤ x ls : ( x y : N ) → x ≤ y → s x ≤ s y antisym : ( x y : N ) → x ≤ y → y ≤ x → x ≡ y ⌊ z ⌋ ⌊ z ⌋ ( lz ⌊ z ⌋ ) ( lz ⌊ z ⌋ ) = refl antisym ⌊ s x ⌋ ⌊ s y ⌋ ( ls x y p ) ( ls ⌊ y ⌋ ⌊ x ⌋ q ) antisym = cong s ( antisym x y p q ) 3 / 1

  13. antisym : ( m n : N ) → m ≤ n → n ≤ m → m ≡ n antisym = elim ≤ ( λ m ; n ; . n ≤ m → m ≡ n ) ( λ n ; e . elim ≤ ( λ n ; m ; . m ≡ z → m ≡ n ) ( λ n ; e . e ) ( λ k ; l ; ; ; e . elim ⊥ ( λ . s l ≡ s k ) ( noConf N ( s l ) z e )) n z e refl ) ( λ m ; n ; ; H ; q . cong s ( H ( elim ≤ ( λ k ; l ; . k ≡ s n → l ≡ s m → n ≤ m ) ( λ ; e ; . elim ⊥ ( λ . n ≤ m ) ( noConf N z ( s n ) e )) ( λ k ; l ; e ; ; p ; q . subst ( λ n . n ≤ m ) ( noConf N ( s k ) ( s n ) p ) ( subst ( λ m . k ≤ m ) ( noConf N ( s l ) ( s m ) q ) e )) ( s n ) ( s m ) q refl refl ))) 4 / 1

  14. The identity type as an inductive family ≡ ( x : A ) : A → Set where data refl : x ≡ x trans : ( x y z : A ) → x ≡ y → y ≡ z → x ≡ z trans x ⌊ x ⌋ ⌊ x ⌋ refl refl = refl 5 / 1

  15. The identity type as an inductive family ≡ ( x : A ) : A → Set where data refl : x ≡ x trans : ( x y z : A ) → x ≡ y → y ≡ z → x ≡ z trans x ⌊ x ⌋ ⌊ x ⌋ refl refl = refl 5 / 1

  16. K follows from pattern matching K : ( P : a ≡ a → Set ) → ( p : P refl ) → ( e : a ≡ a ) → P e P p refl = p K 6 / 1

  17. We don’t always want to assume K K is incompatible with univalence: K implies that subst e true = true for all e : Bool ≡ Bool Univalence gives swap : Bool ≡ Bool such that subst swap true = false hence true = false ! 7 / 1

  18. Pattern matching without K

  19. Unification of the indices x ≃ x , ∆ ⇒ ∆ (Deletion) t ≃ x , ∆ ⇒ ∆[ x �→ t ] (Solution) s ≃ c ¯ s ≃ ¯ c ¯ t , ∆ ⇒ ¯ t , ∆ (Injectivity) s ≃ c 2 ¯ c 1 ¯ t , ∆ ⇒ ⊥ (Conflict) x ≃ c ¯ p [ x ] , ∆ ⇒ ⊥ (Cycle) 8 / 1

  20. The criterium It is not allowed to delete reflexive equations. When applying injectivity on an equation s = c ¯ c ¯ t of type D ¯ u , the indices ¯ u should be self-unifiable . 9 / 1

  21. Why deletion has to be disabled UIP : ( e : a ≡ a ) → e ≡ refl refl = refl UIP Couldn’t solve reflexive equation a = a of type A because K has been disabled. 10 / 1

  22. Why injectivity has to be restricted UIP ′ : ( e : refl ≡ a ≡ a refl ) → e ≡ refl UIP ′ refl = refl Couldn’t solve reflexive equation a = a of type A because K has been disabled. 11 / 1

  23. Pattern matching without K

  24. Eliminating dependent pattern matching 1 Basic case analysis: Translate each case split to an eliminator. 2 Specialization by unification: Solve the equations on the indices. 3 Structural recursion: Fill in the recursive calls. 12 / 1

  25. Heterogeneous equality a : A a : A b : B refl : a ≃ a a ≃ b : Set eqElim : ( x y : A ) → ( e : x ≃ y ) → D x refl → D y e This elimination rule is equivalent with K . . . 13 / 1

  26. Homogeneous telescopic equality We can use the first equality proof to fix the types of the following equations. a 1 , a 2 ≡ b 1 , b 2 ⇓ ( e 1 : a 1 ≡ b 1 )( e 2 : subst e 1 a 2 ≡ b 2 ) 14 / 1

  27. Deletion x ≃ x , ∆ ⇒ ∆ ⇓ e : x ≡ x , ∆ ⇒ ∆[ e �→ refl ] This is exactly the K axiom! 15 / 1

  28. Solution t ≃ x , ∆ ⇒ ∆[ x �→ t ] ⇓ e : t ≡ x , ∆ ⇒ ∆[ x �→ t , e �→ refl ] 16 / 1

  29. Injectivity s ≃ c ¯ s ≃ ¯ t , ∆ ⇒ c ¯ ¯ t , ∆ ⇓ s ≡ c ¯ s ≡ ¯ e : c ¯ t , ∆ ⇒ ¯ e : ¯ t , ∆[ e �→ conf ¯ e ] s and c ¯ Indices of c ¯ t should be unifiable 17 / 1

  30. Conflict c 1 ¯ u ≃ c 2 ¯ v , ∆ ⇒ ⊥ ⇓ s ≡ c 2 ¯ e : c 1 ¯ t , ∆ ⇒ ⊥ 18 / 1

  31. Cycle x ≃ c ¯ p [ x ] , ∆ ⇒ ⊥ ⇓ e : x ≡ c ¯ p [ x ] , ∆ ⇒ ⊥ 19 / 1

  32. Possible extensions Detecting types that satisfy K (i.e. sets) Implementing the translation to eliminators Extending pattern matching to higher inductive types 20 / 1

  33. Possible extensions Detecting types that satisfy K (i.e. sets) Implementing the translation to eliminators Extending pattern matching to higher inductive types 20 / 1

  34. Possible extensions Detecting types that satisfy K (i.e. sets) Implementing the translation to eliminators Extending pattern matching to higher inductive types 20 / 1

  35. Conclusion By restricting the unification algorithm, we can make sure that K is never used. You no longer have to worry when using pattern matching for HoTT! 21 / 1

  36. http://people.cs.kuleuven.be/ ∼ jesper.cockx/Without-K/

  37. Standard library without K Fixable errors: 16 Module Functions ? ? Algebra.RingSolver =H, =N Data.Fin.Properties drop-suc ? Data.Vec.Equality trans, = Data.Vec.Properties ::-injective, . . . Relation.Binary.Vec.Pointwise head, tail Data.Fin.Subset.Properties drop-there, ̸∈⊥ , . . . Data.Fin.Dec ∈ ? Data.List.Countdown drop-suc

  38. Unfixable/unknown errors: 20 Module Functions Relation.Binary. ∼ HeterogeneousEquality =-to- ≡ , subst, cong, . . . PropositionalEquality proof-irrelevance Sigma.Pointwise Rel ↔≡ , inverse Data. Colist Any-cong, ⊑ -Poset Covec setoid Container.Indexed setoid, natural, ◦ -correct List.Any.BagAndSetEquality drop-cons Star.Decoration gmapAll, ◁ ◁ ◁ Star.Pointer lookup Vec.Properties proof-irrelevance-[]=

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