Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Applied category theory: the emerging science of compositionality

752 views

Published on

What do programming, quantum physics, chemistry, neuroscience, systems biology, natural language parsing, causality, network theory, game theory, dynamical systems and database theory have in common?

As functional programmers, we know how useful category theory can be for our work - or perhaps how abstruse and distant it can seem. What is less well known is that applying category theory to the real world is an exciting field of study that has really taken off in just the last few years. It turns out that we share something big with other fields and industries - we want to make big things out of little things without everything going to hell! The key is compositionality, the central idea of category theory.

This talk will introduce the emerging field of applied category theory, with the aims of:
- Giving attendees a broad overview of cutting-edge applications of category theory
- Building an understanding of a small number of the most important core concepts
- Getting attendees excited, inspired to learn more, and equipped to apply some basic concepts to their work

Published in: Software
  • Be the first to comment

Applied category theory: the emerging science of compositionality

  1. 1. Applied category theory The emerging science of compositionality @KenScambler
  2. 2. Category theory
  3. 3. From “Seven Sketches of Compositionality” Fong & Spivak (2018) Applied category theory prepare lemon meringue pie make lemon filling fill crust make meringue separate egg prepared crust lemon butter sugar yolk egg white sugar meringue lemon filling unbaked lemon pie unbaked pieadd meringue
  4. 4. Applied category theory • Emerging field! • Explosion of papers, research, development in last 5 years • Builds a common vocabulary of composition across disciplines • Enables intuitive, precise visual representations
  5. 5. Brand new ACT Journal
  6. 6. Brand new ACT Book
  7. 7. ACT Topics & papers
  8. 8. Q: Is functional programming applied category theory?
  9. 9. Q: Is functional programming applied category theory? A: Yes! (…arguably)
  10. 10. Plan • I want to put applied category theory on your roadmap • The big idea: compositionality • Case study: Complex adaptive system design: military search & rescue • Four concepts of composition: • Monoids • Categories • Operads • Monoidal categories • Two graphical languages: • String diagrams • Wiring diagrams
  11. 11. Compositionality
  12. 12. The meaning of a complex expression is determined by: 1. The meaning of the constituent parts 2. The rules for how those parts are combined Frege’s Principle of Compositionality
  13. 13. Making big things Compositionality lets us
  14. 14. Making big things out of little things Compositionality lets us
  15. 15. Compositionality lets us Making big things out of little things preserving guarantees
  16. 16. Compositionality applied • Little programs that work BIG programs that work? • Little electric circuits that work BIG electric circuits that work? • Little Feynman diagrams that describe real physics BIG Feynman diagrams that describe real physics? • Little resource plans that are feasible BIG resource plans that are feasible? • Little networks of agents that can solve problems BIG networks of agents that can solve problems?
  17. 17. Compositionality distilled - monoids c d e f h j a b i g
  18. 18. a b
  19. 19. a b Compose any two
  20. 20. ab
  21. 21. Associativity – no need for brackets a b c
  22. 22. Associativity – no need for brackets a b c
  23. 23. Associativity – no need for brackets a b c
  24. 24. Associativity – no need for brackets a b c
  25. 25. Associativity – no need for brackets abc
  26. 26. With associativity abc = a b c Just the sum of its parts with
  27. 27. Without associativity + orabc = a b c Uh-oh! We need external data
  28. 28. Identity – doesn’t do anything when you compose a
  29. 29. Identity – doesn’t do anything when you compose a
  30. 30. Identity – doesn’t do anything when you compose a
  31. 31. Compositionality distilled - categories c d e f h j a b i g
  32. 32. a b The building blocks are called morphisms The colours are called objects
  33. 33. a b Can only compose when the colours match
  34. 34. ab The middle bit disappears
  35. 35. a b Associativity – no need for brackets c
  36. 36. a b Associativity – no need for brackets c
  37. 37. a b Associativity – no need for brackets c
  38. 38. a b Associativity – no need for brackets c
  39. 39. abc Associativity – no need for brackets
  40. 40. a Identities – don’t do anything when you compose
  41. 41. a Identities – don’t do anything when you compose
  42. 42. a Identities – don’t do anything when you compose
  43. 43. Case study: Complex Adaptive System Design from “Complex Adaptive System Design” blog posts by John C. Baez (2016-2019) “Network Models” by Baez, Foley, Moeller, Pollard (2017)
  44. 44. Military research: search & rescue • Systems of systems • Many different kinds of networks • Complex realtime behaviour • How to connect them all?
  45. 45. Helo 1 Target 1Port 1 Helicopter knows the target and home base In comms range In comms range My port Intent to rescue
  46. 46. Helo 1 UAV 1 Target 1 UAV knows the target, and the helicopter as a home base In comms range Intent to rescue My port
  47. 47. Overlay the networks We now have a bigger network working together Helo 1 Target 1Port 1 My port Intent to rescue UAV 1 My port In comms range In comms range In comms range Intent to rescue
  48. 48. Helo network UAV network Overlaying is monoidal; you can always overlay
  49. 49. Helo network UAV network Overlaying is monoidal; you can always overlay over lay
  50. 50. Combined network Overlaying is monoidal; you can always overlay
  51. 51. How to sew together unrelated networks? Helo 1 UAV 1 Target 1 UAV 2 UAV 3 UAV 5 Rescue-Scene UAV 4 In comms range In comms range UAV-Search-Net Helo 2 Homebase Intent to rescue My port Havana
  52. 52. 1 2 3 4 5 6 7 8 9 How to sew together unrelated networks? “Take 3 networks of 3, 4 and 2 vertices; return a network of 9 vertices” Intent to rescue
  53. 53. Helo 1 UAV 1 Target 1 UAV 2 UAV 3 UAV 5 UAV 4 In comms range In comms rangeHelo 2 In comms range Intent to rescue My port Intent to rescue Havana
  54. 54. Is that a category? Network-1 Network-2 Network-3
  55. 55. Nope! You can’t compose the networks themselves. Network-1 Network-2 Network-3
  56. 56. Morphisms with lots of inputs? The ”type” is the number of vertices expected in subnetworks “Take 3 networks of 3, 4 and 2 vertices; return a network of 9 vertices” 3 4 2 9
  57. 57. Compositionality distilled – operads a c b d
  58. 58. a cb
  59. 59. a cb
  60. 60. a cb
  61. 61. a cb
  62. 62. abc
  63. 63. a
  64. 64. a
  65. 65. a
  66. 66. a
  67. 67. Obvious example: types & functions receiveInvoice User Invoice Signature Receipt storeReceipt Receipt Shoebox Shoebox login Username Password User
  68. 68. receiveInvoiceInvoice Signature storeReceipt Shoebox Shoebox login Username Password
  69. 69. Invoice Signature fullInvoiceFlow Shoebox Shoebox Username Password def fullInvoiceFlow(username, password, invoice, signature, shoebox) { user = login(username, password) receipt = receiveInvoice(user, invoice, signature) return storeReceipt(receipt, shoebox) }
  70. 70. Mapping it to reality Helicopter Port UAV Target my port Intent to rescue Comms channel Havana Rescue-Scene UAV-Search-Net Homebase
  71. 71. Mapping it to reality Helicopter Port UAV Target my port Intent to rescue Comms channel Havana Rescue-Scene := ... UAV-Search-Net := ... Homebase := ... joinNetworks(Rescue-Scene, UAV-Search-Net, Homebase) To actually use an operad, translate it to the operad of sets & functions, preserving composition & identity
  72. 72. From “Seven Sketches of Compositionality” Fong & Spivak (2018) String diagrams prepare lemon meringue pie make lemon filling fill crust make meringue separate egg prepared crust lemon butter sugar yolk egg white sugar meringue lemon filling unbaked lemon pie unbaked pieadd meringue
  73. 73. prepare lemon meringue pie make lemon filling fill crust make meringue separate egg prepared crust lemon butter sugar yolk egg white sugar meringue lemon filling unbaked lemon pie unbaked pieadd meringue morphisms
  74. 74. prepare lemon meringue pie make lemon filling fill crust make meringue separate egg prepared crust lemon butter sugar yolk egg white sugar meringue lemon filling unbaked lemon pie unbaked pieadd meringue objects
  75. 75. prepare lemon meringue pie make lemon filling fill crust make meringue separate egg prepared crust lemon butter sugar egg sugar unbaked pieadd meringue composition
  76. 76. prepare lemon meringue pie make lemon filling fill crust make meringue separate egg prepared crust lemon butter sugar yolk egg white sugar meringue lemon filling unbaked lemon pie unbaked pieadd meringue tensoring
  77. 77. Tensoring forms a monoid (up to isomorphism) lemon butter sugar make lemon filling … on the objects of the category lemon ⨂ butter ⨂ sugar lemon filling
  78. 78. Monoidal categories Category C Tensor operation ⨂ : (object, object) -> object such that (a ⨂ b) ⨂ c ≃ a ⨂ (b ⨂ c) Unit object I : object such that a ⨂ I ≃ I ⨂ a ≃ a
  79. 79. Monoidal categories f g x y y z f g x y z f g x y y z x y y z f ⨂ g= Horizontal composition Vertical composition x ⨂ y f ⨂ g= y ⨂ z
  80. 80. Diagrams inside diagrams prepare lemon meringue pie make lemon filling fill crust make meringue separate egg prepared crust lemon butter sugar yolk egg white sugar meringue lemon filling unbaked lemon pie unbaked pieadd meringue Make lemon filling lemon butter sugar Blend yolk Beat Combine lemon filling
  81. 81. Diagrams inside diagrams prepare lemon meringue pie fill crust make meringue separate egg prepared crust lemon butter sugar yolk egg white sugar meringue lemon filling unbaked lemon pie unbaked pieadd meringue Blend Beat Combine
  82. 82. oven unbaked pie baked pie oven prepare lemon meringue pie bake pie prepare lemon meringue pie
  83. 83. oven unbaked pie baked pie oven bake pie Surprise! It’s another operad
  84. 84. Lemon Meringue Pie operad prepare lemon meringue pie sugar ⨂ white  meringue prepared crust ⨂ lemon ⨂ butter ⨂ sugar ⨂ egg ⨂ sugar  unbaked pie egg  yolk ⨂ white lemon ⨂ butter ⨂ sugar ⨂ yolk  lemon filling prepared crust ⨂ lemon filling  unbaked lemon pie unbaked lemon pie ⨂ meringue  unbaked pie
  85. 85. From “Seven Sketches of Compositionality” Fong & Spivak (2018)
  86. 86. String diagrams in software architecture • Fantastic for software design • I’ve used them for years to train junior & senior developers • Modularity, boundaries
  87. 87. Simon Brown
  88. 88. Level 1
  89. 89. Level 1 Level 2
  90. 90. Level 1 Level 2 Level 3
  91. 91. Level 1 Level 2 Level 3 Level 4 Operad! (maybe)
  92. 92. Operad of wiring diagrams from “The operad of wiring diagrams: formalizing a graphical language for databases, recursion and plug-and-play circuits” by David I. Spivak (2013)
  93. 93. Inputs x1, x2, x3
  94. 94. Input types {s,r,t} {w, x, y, z} {u, v} Output type {a,b,c,d,e}
  95. 95. Compositional SQL queries SELECT L.student, L.address FROM attends a1, gender g1, attends a2, gender g2, lives L WHERE a1.student=g1.student AND a2.student=g2.student AND L.student=g1.student AND a1.course=a2.course AND g1.gender=‘male’ AND g2.gender=‘female’
  96. 96. SELECT L.student, L.address FROM attends a1, gender g1, attends a2, gender g2, lives L WHERE a1.student=g1.student AND a2.student=g2.student AND L.student=g1.student AND a1.course=a2.course AND g1.gender=‘male’ AND g2.gender=‘female’
  97. 97. SELECT L.student, L.address FROM attends a1, gender g1, attends a2, gender g2, lives L WHERE a1.student=g1.student AND a2.student=g2.student AND L.student=g1.student AND a1.course=a2.course AND g1.gender=‘male’ AND g2.gender=‘female’ TablesConstants
  98. 98. SELECT L.student, L.address FROM attends a1, gender g1, attends a2, gender g2, lives L WHERE a1.student=g1.student AND a2.student=g2.student AND L.student=g1.student AND a1.course=a2.course AND g1.gender=‘male’ AND g2.gender=‘female’ SELECT
  99. 99. SELECT L.student, L.address FROM attends a1, gender g1, attends a2, gender g2, lives L WHERE a1.student=g1.student AND a2.student=g2.student AND L.student=g1.student AND a1.course=a2.course AND g1.gender=‘male’ AND g2.gender=‘female’ WHERE (wiring)
  100. 100. In conclusion • Applied category theory is an exciting new field that seeks to mine the benefits of compositionality wherever they may be found • Supports marvelous graphical languages • Early days! • Watch this space
  101. 101. The future • Anything where “making big things out of little things” is an important part • So far: category theorists discovering applications and promoting • Industry might eventually begin to lead the charge • Computer science & programming will be at the forefront: software has eaten the world • Functional programming will be at the forefront: we are early adopters
  102. 102. People to follow on Twitter John C. Baez @johncarlosbaez Jules Hedges @_julesh_ Dr. Eugenia Cheng @DrEugeniaCheng Jade Master @JadeMasterMath Tai-Danae Bradley @math3ma Joe Moeller @CreeepyJoe Statebox @statebox Jelle Herold @wires_wires Fabrizio Remano Genovese @fabgenovese
  103. 103. Further reading • “Seven Sketches of Compositionality” by Brendan Fong, David I. Spivak (2018) • “Applied category theory course” by John C. Baez (2018) • “What is applied category theory?” by Tai-Danae Bradley (2018) • “Network models” by Baez, Foley, Moeller, Pollard (2017) • “The operad of wiring diagrams: formalizing a graphical language for databases, recursion and plug-and-play circuits” by David I. Spivak (2013)

×