a sound unification algorithm based on telescope
play

A sound unification algorithm based on telescope equivalences - PowerPoint PPT Presentation

A sound unification algorithm based on telescope equivalences Jesper Cockx DistriNet KU Leuven 20 April 2016 Pattern matching is awesome Agda uses unification to: check which constructors are possible specialize the result type data Vec


  1. A sound unification algorithm based on telescope equivalences Jesper Cockx DistriNet – KU Leuven 20 April 2016

  2. Pattern matching is awesome Agda uses unification to: check which constructors are possible specialize the result type data Vec ( A : Set ) : N → Set where [] : Vec A 0 cons : ( n : N ) → A → Vec A n → Vec A (1 + n ) f : Vec A 1 → T f ( cons . 0 x xs ) = . . . 1 / 29

  3. Pattern matching is awesome Agda uses unification to: check which constructors are possible specialize the result type data Vec ( A : Set ) : N → Set where [] : Vec A 0 cons : ( n : N ) → A → Vec A n → Vec A (1 + n ) f : Vec A 1 → T f ( cons . 0 x xs ) = . . . 1 / 29

  4. Pattern matching is awesome Agda uses unification to: check which constructors are possible specialize the result type data Vec ( A : Set ) : N → Set where [] : Vec A 0 cons : ( n : N ) → A → Vec A n → Vec A (1 + n ) f : Vec A 1 → T f ( cons . 0 x xs ) = . . . 1 / 29

  5. Details of unification are important Agda has pattern matching as a primitive, so results of unification determine Agda’s notion of equality Example: deleting reflexive equations implies K 2 / 29

  6. Details of unification are important Agda has pattern matching as a primitive, so results of unification determine Agda’s notion of equality Example: deleting reflexive equations implies K 2 / 29

  7. Time for a quiz Should the following code be accepted? { -# OPTIONS --without-K #- } . . . -- imports f : ( Bool , true ) ≡ ( Bool , false ) → ⊥ f () 3 / 29

  8. Time for a quiz Should the following code be accepted? { -# OPTIONS --without-K #- } . . . -- imports f : ( Bool , true ) ≡ ( Bool , false ) → ⊥ f () Answer: depends on the type of the equation! 4 / 29

  9. Postponing equations causes problems If we postpone an equation, following equations can be heterogeneous Naively continuing unification is bad Equality of second projections Injectivity of type constructors . . . It’s hard to distinguish good and bad situations! 5 / 29

  10. Postponing equations causes problems If we postpone an equation, following equations can be heterogeneous Naively continuing unification is bad Equality of second projections Injectivity of type constructors . . . It’s hard to distinguish good and bad situations! 5 / 29

  11. Postponing equations causes problems If we postpone an equation, following equations can be heterogeneous Naively continuing unification is bad Equality of second projections Injectivity of type constructors . . . It’s hard to distinguish good and bad situations! 5 / 29

  12. We need a general way to think about unification It’s not sufficient to “make things equal” Core idea: Unification rules are equivalences between telescopes of equations This is the basis of the new unification algorithm in Agda 2.5.1 6 / 29

  13. We need a general way to think about unification It’s not sufficient to “make things equal” Core idea: Unification rules are equivalences between telescopes of equations This is the basis of the new unification algorithm in Agda 2.5.1 6 / 29

  14. We need a general way to think about unification It’s not sufficient to “make things equal” Core idea: Unification rules are equivalences between telescopes of equations This is the basis of the new unification algorithm in Agda 2.5.1 6 / 29

  15. A sound unification algorithm based on telescope equivalences 1 Unifiers as equivalences 2 Unification rules 3 Higher-dimensional unification

  16. A sound unification algorithm based on telescope equivalences 1 Unifiers as equivalences 2 Unification rules 3 Higher-dimensional unification

  17. What do we want from unification? It has to be possible to translate pattern matching to eliminators The core tool we need is specialization by unification Build a function m : Γ → ¯ u ≡ ∆ ¯ v → T from a function m ′ : Γ ′ → T σ where σ : Γ ′ → Γ is computed by unification 7 / 29

  18. What do we want from unification? It has to be possible to translate pattern matching to eliminators The core tool we need is specialization by unification Build a function m : Γ → ¯ u ≡ ∆ ¯ v → T from a function m ′ : Γ ′ → T σ where σ : Γ ′ → Γ is computed by unification 7 / 29

  19. Intermezzo: telescopic equality Type of an equation may depend on solution of previous equations Heterogeneous equality doesn’t keep enough information: Safe to consider equation homogeneous? Does equation depend on other equation? How do equations depend on each other? 8 / 29

  20. Intermezzo: telescopic equality Type of an equation may depend on solution of previous equations Heterogeneous equality doesn’t keep enough information: Safe to consider equation homogeneous? Does equation depend on other equation? How do equations depend on each other? 8 / 29

  21. Intermezzo: telescopic equality Solution: use “path over” construction to keep track of dependencies For example: ( e 1 : m ≡ N n )( e 2 : u ≡ e 1 Vec A v ) Cubical (abuse of) notation: ( e 1 : m ≡ N n )( e 2 : u ≡ Vec A e 1 v ) 9 / 29

  22. Intermezzo: telescopic equality Solution: use “path over” construction to keep track of dependencies For example: ( e 1 : m ≡ N n )( e 2 : u ≡ e 1 Vec A v ) Cubical (abuse of) notation: ( e 1 : m ≡ N n )( e 2 : u ≡ Vec A e 1 v ) 9 / 29

  23. Specialization by unification The goal is to construct m : Γ → ¯ u ≡ ∆ ¯ v → T Input: Telescope Γ of flexible variables Telescope ¯ u ≡ ∆ ¯ v of equations Output: New telescope Γ ′ Substitution σ : Γ ′ → Γ Evidence of unification e : Γ ′ → ¯ ¯ u σ ≡ ∆ σ ¯ v σ 10 / 29

  24. Specialization by unification The goal is to construct m : Γ → ¯ u ≡ ∆ ¯ v → T Input: Telescope Γ of flexible variables Telescope ¯ u ≡ ∆ ¯ v of equations Output: New telescope Γ ′ Substitution σ : Γ ′ → Γ Evidence of unification e : Γ ′ → ¯ ¯ u σ ≡ ∆ σ ¯ v σ 10 / 29

  25. Specialization by unification The goal is to construct m : Γ → ¯ u ≡ ∆ ¯ v → T Input: Telescope Γ of flexible variables Telescope ¯ u ≡ ∆ ¯ v of equations Output: New telescope Γ ′ Substitution σ : Γ ′ → Γ Evidence of unification e : Γ ′ → ¯ ¯ u σ ≡ ∆ σ ¯ v σ 10 / 29

  26. Specialization by unification The goal is to construct m : Γ → ¯ u ≡ ∆ ¯ v → T Input: Telescope Γ of flexible variables Telescope ¯ u ≡ ∆ ¯ v of equations Output: New telescope Γ ′ Telescope mapping f : Γ ′ → Γ(¯ u ≡ ∆ ¯ v ) 11 / 29

  27. Two more requirements Let f : Γ ′ → Γ(¯ u ≡ ∆ ¯ v ) be a unifier f should be most general ⇒ f needs a right inverse g 1 Γ ′ should be minimal ⇒ f needs a left inverse g 2 12 / 29

  28. Two more requirements Let f : Γ ′ → Γ(¯ u ≡ ∆ ¯ v ) be a unifier f should be most general ⇒ f needs a right inverse g 1 Γ ′ should be minimal ⇒ f needs a left inverse g 2 12 / 29

  29. Two more requirements Let f : Γ ′ → Γ(¯ u ≡ ∆ ¯ v ) be a unifier f should be most general ⇒ f needs a right inverse g 1 Γ ′ should be minimal ⇒ f needs a left inverse g 2 12 / 29

  30. Most general unifiers as equivalences A most general unifier of ¯ u and ¯ v is an v ) ≃ Γ ′ for some Γ ′ equivalence f : Γ(¯ u ≡ ∆ ¯ Specialization by unification: m : Γ → ¯ u ≡ ∆ ¯ v → T m ¯ x ¯ e = subst ( λ ¯ x ¯ e . T ) ( isLinv f ¯ x ¯ e ) ( m ′ ( f ¯ x ¯ e )) 13 / 29

  31. Most general unifiers as equivalences A most general unifier of ¯ u and ¯ v is an v ) ≃ Γ ′ for some Γ ′ equivalence f : Γ(¯ u ≡ ∆ ¯ Specialization by unification: m : Γ → ¯ u ≡ ∆ ¯ v → T m ¯ x ¯ e = subst ( λ ¯ x ¯ e . T ) ( isLinv f ¯ x ¯ e ) ( m ′ ( f ¯ x ¯ e )) 13 / 29

  32. Disunifiers A disunifier of ¯ u and ¯ v is an equivalence f : Γ(¯ u ≡ ∆ ¯ v ) ≃ ⊥ Specialization by unification: m : Γ → ¯ u ≡ ∆ ¯ v → T m ¯ x ¯ e = elim ⊥ T ( f ¯ x ¯ e ) 14 / 29

  33. Disunifiers A disunifier of ¯ u and ¯ v is an equivalence f : Γ(¯ u ≡ ∆ ¯ v ) ≃ ⊥ Specialization by unification: m : Γ → ¯ u ≡ ∆ ¯ v → T m ¯ x ¯ e = elim ⊥ T ( f ¯ x ¯ e ) 14 / 29

  34. A sound unification algorithm based on telescope equivalences 1 Unifiers as equivalences 2 Unification rules 3 Higher-dimensional unification

  35. Basic unification rules MGU is constructed by chaining together equivalences given by unification rules ( k l : N )( e : suc k ≡ N suc l ) ≃ ( k l : N )( e : k ≡ N l ) ≃ ( k : N ) f − 1 : ( k : N ) → ( k l : N )( e : suc k ≡ N suc l ) f − 1 k = k ; k ; refl 15 / 29

  36. Basic unification rules MGU is constructed by chaining together equivalences given by unification rules ( k l : N )( e : suc k ≡ N suc l ) ≃ ( k l : N )( e : k ≡ N l ) ≃ ( k : N ) f − 1 : ( k : N ) → ( k l : N )( e : suc k ≡ N suc l ) f − 1 k = k ; k ; refl 15 / 29

  37. Basic unification rules MGU is constructed by chaining together equivalences given by unification rules ( k l : N )( e : suc k ≡ N suc l ) ≃ ( k l : N )( e : k ≡ N l ) ≃ ( k : N ) f − 1 : ( k : N ) → ( k l : N )( e : suc k ≡ N suc l ) f − 1 k = k ; k ; refl 15 / 29

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