Coverage Semantics for Dependent Pattern Matching

Coverage Semantics for
Dependent Pattern
Matching
 
Joseph Eremondi, Ohad Kammar
University of Edinburgh
Overview
 
WIP, leaving Scotland
Denotational Semantics for Pattern Matching
Top Level
Non-overlapping
Experiment - abstract over:
What’s a pattern
What matches are total
Language of sheaves / topologies / coverages
New viewpoint, not new result
Has this all been done? Tell us!
2
Dependent Pattern Matching
repeat : (n : Nat) -> A -> Vec A n
repeat zero x = nil
repeat (suc n) x = cons x (repeat n x)
(x : A)
---------------
Vec A zero
(n : Nat)
(x : A)
---------------
Vec A (suc n)
Return type
depends on value
given for 
n
The Usual Way
natElim : (P : Nat -> Type)
  -> P zero
  -> ((n : Nat) -> P n -> P (suc n))
  -> (n : Nat) -> P n
 
Primitive eliminator
Semantics by e.g. initial algebra of polynomial
functor
Patterns -> Eliminators
Something A Little Crazier
repeat’ : (n : Nat) -> A -> Vec A n
repeat’ 0
  = nil
repeat’ (2 + n + n) x
  = let t = repeat’ n x
    in [x,x] ++ t ++ t
repeat’ (1 + n + n) x
  = cons x (repeat’ (n + n) x)
 
Every Nat is 0, even>0, or odd
Does It Make Sense?
 
Could we internalize views?
More generally:
Criteria for when “new” pattern matching makes sense?
What Goes On The Left?
 
General Idea:
 
Abstract notion of 
coverage
Which sets of patterns can form the LHS of a pattern
match
Model pattern matching without eliminators?
 
Research question:
 Which coverages lead to a
language that:
We can give denotational semantics
is logically consistent
7
Main Idea
8
What’s a Sheaf Anyways?
9
Assuming non-
overlapping
Representable Sheaf
10
 
🤔
Simple Pattern Matching
11
Canonical Coverage
12
Central Claim
13
Dependent Matching
14
Saturation Conditions
 
Operations on coverages
Sheaves invariant under op
Canonical coverage
Must contain results of
saturation
15
 
Examples:
Adding all isomorphisms
Composing coverages
Pulling back by any arrow
Recreating Pattern Matching
16
case x of
  y => f y
case x of
  (inl y) => f y
  (inr z) => g z
If sums stable under
pullback (e.g. LCCC)
No need to be
constructors
case x y (eq : x = y) of
  x x refl => …
case x of
 (inl y) => f y
 (inr (inl z)) => g z
 (inr (inr w)) => h w
Equality And Pullbacks
17
case (p q r : Nat)(pf : p + q = r) of
  p q (p+q) refl => …
Semantic
unification/
dot patterns
Singleton
cover
Limitations
18
What’s Next?
 
Recursion/termination
With-patterns, open contexts
Relation to pullbacks?
Modelling overlap
e.g. wildcards _
Framework for making patterns disjoint
Differentiable Programming
smoothness, agree on overlap
Deeper connections with Topos Theory
19
Thank You!
20
Basic Coverages: Identity
 
 
 
In canonical coverage:
All objects covered by identity
i.e. variable as LHS of pattern
Also covers wildcards
*if no overlap
21
case x of
  y => f y
Basic Coverages: Sums
22
case x of
  (inl y) => f y
  (inr z) => g z
New Coverages: Isomorphism
23
case x of
  i y => f y
Combining Coverages: Nesting
24
case x of
  (inl y) => f y
  (inr (inl z)) => g z
  (inr (inr w)) => h w
Base Change
25
Equality and Pullbacks
26
Slide Note
Embed
Share

Delve into the world of dependent pattern matching with a focus on coverage semantics. Dive deep into the concepts of denotational semantics, topologies, and coverages. Explore the interplay between patterns, values, and types in a novel way, shedding light on the essence of pattern matching.

  • Dependent Pattern Matching
  • Coverage Semantics
  • Denotational Semantics
  • Topologies
  • Pattern Matching

Uploaded on Apr 20, 2024 | 4 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. Coverage Semantics for Dependent Pattern Matching Joseph Eremondi, Ohad Kammar University of Edinburgh

  2. Overview WIP, leaving Scotland Denotational Semantics for Pattern Matching Top Level Non-overlapping Experiment - abstract over: What s a pattern What matches are total Language of sheaves / topologies / coverages New viewpoint, not new result Has this all been done? Tell us! 2

  3. Dependent Pattern Matching Return type depends on value given for n repeat : (n : Nat) -> A -> Vec A n repeat zero x = nil repeat (suc n) x = cons x (repeat n x) (x : A) --------------- Vec A zero (n : Nat) (x : A) --------------- Vec A (suc n)

  4. The Usual Way natElim : (P : Nat -> Type) -> P zero -> ((n : Nat) -> P n -> P (suc n)) -> (n : Nat) -> P n Primitive eliminator Semantics by e.g. initial algebra of polynomial functor Patterns -> Eliminators

  5. Something A Little Crazier repeat : (n : Nat) -> A -> Vec A n repeat 0 = nil repeat (2 + n + n) x = let t = repeat n x in [x,x] ++ t ++ t repeat (1 + n + n) x = cons x (repeat (n + n) x) Every Nat is 0, even>0, or odd

  6. Does It Make Sense? Could we internalize views? More generally: Criteria for when new pattern matching makes sense?

  7. What Goes On The Left? General Idea: Abstract notion of coverage Which sets of patterns can form the LHS of a pattern match Model pattern matching without eliminators? Research question: Which coverages lead to a language that: We can give denotational semantics is logically consistent 7

  8. Main Idea Categorical semantics in terms of coverages & Grothendieck (pre)topologies Covering set of patterns Covering family for the topology Sheaf theory helps build coverages Matching on a pattern set sheaf amalgamation along a covering family 8

  9. Whats a Sheaf Anyways? ?1 ?2 ?(?1) ?(?2) ?(??) ?(?2) ?(??) ?? ?2 presheaf ? ?1 ?? ?(?1) ?1 ?? ? ?(?) ?! ? ?1 ? ?2 ?(??) Assuming non- overlapping 9

  10. Representable Sheaf ?1 ?2 ?1 ? ?? ?2 ? ?? ? ?2 ?1 ?? ?(?) ?1 ?? ? ? ? ?! (?1 ?) ?2 ? (?? ?) 10

  11. Simple Pattern Matching Given: Get match ?:? ? Such that ? ??= ?? i.e. ? (?? ?) = ??(?) Motive (target type) ? Branches ?1:?1 ? ??:?? ? ?1 ?2 ?? ?2 ?1 ?? ? 11

  12. Canonical Coverage Coverage Collection of covers {?1 ?, ?? ?} *plus closure conds Subcanonical Coverage Each Hom-functor is a sheaf for each cover Canonical Coverage Largest subcanonical coverage 12

  13. Central Claim Given category ?, can model pattern matching in ? if legal LHS-patterns covers in ? s canonical coverage 13

  14. Dependent Matching Slice ?/? Subcanonical coverage on ? subcanonical on ?/? ??:?? ? {??: ??,?? ?,?? } Fundamental theorem of topos theory Amalgamate branches index-respecting way i.e. ?-indexed ?-objects 14

  15. Saturation Conditions Operations on coverages Sheaves invariant under op Canonical coverage Must contain results of saturation ???:??? ?? {??:?? ?} {?? ???:???} ?:? ? {? ?? ? ?? ?} ? ? ? ??:?? ? Examples: Adding all isomorphisms Composing coverages Pulling back by any arrow 15

  16. Recreating Pattern Matching case x of y => f y ?:? ? ?? is isomorphism case x y (eq : x = y) of x x refl => If ? ? ? ? .? = ? in the model No need inductive eq. ?:? ? If sums stable under pullback (e.g. LCCC) No need to be constructors case x of (inl y) => f y (inr z) => g z ??? ? ? + ?, ??? ? ? + ? case x of (inl y) => f y (inr (inl z)) => g z (inr (inr w)) => h w ???:??? ?? {??:?? ?} {?? ???:???} 16

  17. Equality And Pullbacks case (p q r : Nat)(pf : p + q = r) of p q (p+q) refl => (? + ?) ?:??? ?,? : ??? ??? Singleton cover (?,?,? + ?,????) (?,?,????) ? ? ? ??? . (??: ? + ? = ?) ? ? ??? .? = ? Semantic unification/ dot patterns (? + ?,?,??) 17

  18. Limitations Decidability Canonical coverage only gives semantics e.g. repeat example Typechecker: decide if patterns are covering Sheaves imply K Pullback -> Deletion rule Incompatible with HoTT Need 2-sheaves? -sheaves? Needs extensional model But not necessarily extensional source lang. 18

  19. Whats Next? Recursion/termination With-patterns, open contexts Relation to pullbacks? Modelling overlap e.g. wildcards _ Framework for making patterns disjoint Differentiable Programming smoothness, agree on overlap Deeper connections with Topos Theory 19

  20. Thank You! 20

  21. Basic Coverages: Identity case x of y => f y ??:? ? In canonical coverage: All objects covered by identity i.e. variable as LHS of pattern Also covers wildcards *if no overlap 21

  22. Basic Coverages: Sums case x of (inl y) => f y (inr z) => g z ??? ? ? + ?, ??? ? ? + ? Canonical cover of ? + ? if ? is LCCC sums commute with pullbacks Generalize to n-ary sums e.g. constructors ?1 ?? for datatype cover that datatype 22

  23. New Coverages: Isomorphism case x of i y => f y ?:? ? Theorem: Adding isomorphisms to coverage doesn t change sheaves Canonical coverage contains all isomorphisms E.g. { ?,?,???? } covers ? ? ?:? .(? = ?) *in extensional model 23

  24. Combining Coverages: Nesting case x of (inl y) => f y (inr (inl z)) => g z (inr (inr w)) => h w Theorem: Closing coverages under composition doesn t change sheaves {??:?? ?} canonical cover ? ???:??? ?? canonical cover each ?? Then {?? ???:???} also canonical covers ? i.e. split on variable in a pattern 24

  25. Base Change Theorem: If {??:?? ?}covers ? any ? ? ? Pullback by ?doesn t change sheaves e.g. {? ??:? ?? ?} can cover ? 25

  26. Equality and Pullbacks Suppose { ?,?,???? } covers ? ? ?:? .(? = ?) Have g ? ? ? ?:? .(? = ?) Then pullback {? ?,?,???? : ? ? ?} canonical cover of ? Semantic version of unification Does NOT require equality to be inductive e.g. OTT 26

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#