Unifying graded and parameterised monads
!3
Dominic Orchard Philip Wadler Harley Eades III
MSFP 2020
Unifying graded and parameterised monads Dominic Orchard - - PowerPoint PPT Presentation
Unifying graded and parameterised monads Dominic Orchard Philip Wadler Harley Eades III MSFP 2020 ! 3 The humble monad T : T T return :: a -> m a join :: m m a -> m a T T multiplication
!3
Dominic Orchard Philip Wadler Harley Eades III
MSFP 2020
T : ℂ → ℂ
T ∘ T
T
μ
햨햽
T
η
!4
+ associativity and unitality axioms multiplication unit
join :: m m a -> m a return :: a -> m a
!5
G : 피 → [ℂ, ℂ]
Functor
(피, ∙ ,I)
(Discrete) monoidal category
[Katsumata'14 - Parametric effect monads and semantics of effect systems]
+ associativity and unitality axioms
G (x ∙ y)
G x ∘ G y
μx,y
multiplication
햨햽
G I
η
unit
[Wadler&Thiemman’03 - Marriage of effects and monads]
Graded monads for type-based effect analysis
Γ ⊢ e : MA Γ, x : A ⊢ e′ : M B Γ ⊢ do x ← e; e′ : M B Γ ⊢ e : A Γ ⊢ return e : M A
monadic metalanguage
!6
Γ ⊢ e : G x A Γ, x : A ⊢ e′ : G y B Γ ⊢ do x ← e; e′ : G (x ∙ y) B Γ ⊢ e : A Γ ⊢ return e : G I A
Graded monads for type-based effect analysis
... for refining semantics
햲헍햺헍햾 x A = 햲헍허헋햾(헋햾햺햽헌(x)) → A × 햲헍허헋햾(헐헋헂헍햾헌(x))
헀햾헍 : (l : A ∈ ℒ) → 햲헍햺헍햾 A 헉헎헍 : (l : A ∈ ℒ) → A → 햲헍햺헍햾 1 헀햾헍 : (l : A ∈ ℒ) → 햲헍햺헍햾 {r(l)} A 헉헎헍 : (l : A ∈ ℒ) → A → 햲헍햺헍햾 {w(l)} 1
햲헍햺헍햾 A = 햲헍허헋햾(ℒ) → A × 햲헍허헋햾(ℒ)
Humble state
monadic metalanguage graded
!7
!8
G : 피 → [ℂ, ℂ]
Functor
(피, ∙ ,I)
(Discrete) monoidal category + associativity and unitality axioms
G (x ∙ y)
G x ∘ G y
μx,y
multiplication
햨햽
G I
η
unit
!9
G : 피 → [ℂ, ℂ]
Functor
(피, ∙ ,I)
(Discrete) monoidal category + associativity and unitality axioms
G (x ∙ y)
G x ∘ G y
μx,y
multiplication
햨햽
G I
η
unit
graded monads unordered
!10
(피, ∙ ,I, ≤ )
Strict monoidal category
G y
G(h : x ≤ y)
G x
approximation + monotonicity
G : 피 → [ℂ, ℂ]
Functor + associativity and unitality axioms
G (x ∙ y)
G x ∘ G y
μx,y
multiplication
햨햽
G I
η
unit
graded monads unordered
!11
P : 핀허헉 × 핀 → [ℂ, ℂ]
Functor
[Atkey'06/'09 - Parameterised notions of computation]
+ associativity and unitality axioms
P(i, j) ∘ P(j, k)
P (i, k)
μi,j,k
multiplication
햨햽
P (i, i)
ηi
unit
!12
P : 핀허헉 × 핀 → [ℂ, ℂ]
Functor
[Atkey'06/'09 - Parameterised notions of computation]
+ associativity and unitality axioms
P(i, j) ∘ P(j, k)
P (i, k)
μi,j,k
multiplication
햨햽
P (i, i)
ηi
unit
A
f P(i, j) B
B
g P(j, k) C
A P(i, k) C
cf Floyd-Hoare logic
{i} C {j} {j} C′{k} {i} C; C′{k}
μi,j,k,C ∘ Pg ∘ f
!13
P : 핀허헉 × 핀 → [ℂ, ℂ]
Functor
[Atkey'06/'09 - Parameterised notions of computation]
+ associativity and unitality axioms
P(i, j) ∘ P(j, k)
P (i, k)
μi,j,k
multiplication
햨햽
P (i, i)
ηi
unit + dinaturality axioms approximation
P (i, j)
P (i′, j′)
P(f : i′ → i, g : j → j′)
!14
햨햽
G I
η
G x ∘ G y
G (x ∙ y)
μx,y
햨햽
P (i, i)
ηi
P(i, j) ∘ P(j, k)
P (i, k)
μi,j,k
Can we unify their definitions?
!15
monads “oidify” category-graded monads graded monads parameterised monads discrete 2-category- graded monads category-graded monads + generalised unit 2-category-graded monads + generalised unit unordered
!16
https://ncatlab.org/nlab/show/horizontal+categorification
One object Morphisms are endofunctors 2-morphisms are nat. trans.
Recall: functor axioms
F : ℂ → 픻
(Benabou 1967)
!17
id : ⋆ → ⋆ ⋆
One object One morphism
Fg ∘ Ff = F(g ∘ f) id = F id
Fg ∘ Ff ⇒ F(g ∘ f) id ⇒ F id
Lax functor axioms
픻
μ : Tid ∘ Tid ⇒ Tid η : id ⇒ T id
Here natural transformations + associativity/unitality
“Category-graded monad”
/ horizontal categorification
μf,g : Tf ∘ Tg ⇒ T(g ∘ f)
ηx : 햨햽 ⇒ T idx
Lax functor
μ : T id ∘ T id ⇒ T id
(Benabou 1967)
!18
Monad
햤헇햽허(ℂ)
T
T
햤헇햽허(ℂ)
Monoid-graded monad G
G
“Category-graded monad”
μf,g : Tf ∘ Tg ⇒ T(g ∘ f)
ηx : 햨햽 ⇒ T idx
T
햤헇햽허(ℂ)
!19
!20
Monoids are one-object categories are discrete monoidal categories
Monoid-graded monad G
μx,y : G x ∘ G y ⇒ G (x ∙ y)
η⋆ : 햨햽 ⇒ G I
μf,g : Tf ∘ Tg ⇒ T(g ∘ f)
ηx : 햨햽 ⇒ T idx
T 햤헇햽허(ℂ)
G
Category-graded monad
!21
T(h : g ⇒ f) : T g ⇒ T f
+ 2-morphism mapping
μf,g : Tf ∘ Tg ⇒ T(g ∘ f)
ηx : 햨햽 ⇒ T idx
2-category-graded monad
Category-graded monad (i.e., is a 2-category)
ℱ
22
!23
Pomonoids are one object 2-categories are monoidal categories
x ≤ y
G(h : x ≤ y) : G x ⇒ G y
μx,y : G x ∘ G y ⇒ G (x ∙ y) η⋆ : 햨햽 ⇒ G I
G : 1(피op,∙,I,≤) → 햤헇햽허(ℂ)
μf,g : Tf ∘ Tg ⇒ T(g ∘ f)
ηx : 햨햽 ⇒ T idx
T(h : g ⇒ f) : T g ⇒ T f
2-category-graded monad
2-morphism mapping
(Ordered) Graded monad
24
!25
monads “oidify” category-graded monads graded monads parameterised monads discrete 2-category- graded monads category-graded monads + generalised unit unordered
P : 핁허헉 × 핁 → [ℂ, ℂ]
where ! has only identity morphisms
핁
Define the category of ! -“dominoes”
핁
Define a category graded monad
(e.g., composition ! )
(j, k) ∘ (i, j) = (i, k)
ηi : 햨햽 ⇒ T(i, i)
μ(i,j),(j,k) : T (i, j) ∘ T (j, k) ⇒ T (i, k)
T : ∇(핁) → 햤헇햽허(ℂ)
with !T(i, j) = P(i, j)
= ηP
i
i,j,k
!26
morphism mapping (approximation)
P (i, j)
P (i′, j′)
P(f : i′ → i, g : j → j′)
+ dinaturality axioms
!27
arises from lax natural transformations (Street, 1972)
Wide sub-category Family of morphisms
Paper shows details
28
!29
monads “oidify” category-graded monads graded monads parameterised monads discrete 2-category- graded monads category-graded monads + generalised unit 2-category-graded monads + generalised unit unordered
|ℱ| = {free, critical}
lock : free → critical
unlock : critical → free
get, put : critical → critical
get : 햢허헇햼햲헍 get S
put : S → 햢허헇햼햲헍 put 1
lock : 햢허헇햼햲헍 lock 1
unlock : 햢허헇햼햲헍 unlock 1
spawn : (∀f . 햢허헇햼햲헍 (f : 햿헋햾햾 → 햿헋햾햾) 1) → 햢허헇햼햲헍 f 1
햢허헇햼햲헍 : ℱ허헉 → 햤헇햽허(ℂ)
30
aspects: tracing + restriction
granule-project.github.io
Category-graded monad
μf,g : Tf ∘ Tg ⇒ T(g ∘ f)
ηx : 햨햽 ⇒ T idx
T
31