Advertisement

May. 12, 2019•0 likes## 5 likes

•3,502 views## views

Be the first to like this

Show More

Total views

0

On Slideshare

0

From embeds

0

Number of embeds

0

Download to read offline

Report

Software

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

kenbotFollow

Advertisement

Advertisement

Advertisement

Using Apache Calcite for Enabling SQL and JDBC Access to Apache Geode and Oth...Christian Tzolov

DBpedia Tutorial - Feb 2015, Dublinm_ackermann

Under The Hood Of A Shard-Per-Core Database ArchitectureScyllaDB

MongoDB FundamentalsMongoDB

The evolution of Apache Calcite and its CommunityJulian Hyde

Scaling into Billions of Nodes and Relationships with Neo4j Graph Data ScienceNeo4j

- Applied category theory The emerging science of compositionality @KenScambler
- Category theory
- 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
- 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
- Brand new ACT Journal
- Brand new ACT Book
- ACT Topics & papers
- Q: Is functional programming applied category theory?
- Q: Is functional programming applied category theory? A: Yes! (…arguably)
- 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
- Compositionality
- 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
- Making big things Compositionality lets us
- Making big things out of little things Compositionality lets us
- Compositionality lets us Making big things out of little things preserving guarantees
- 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?
- Compositionality distilled - monoids c d e f h j a b i g
- a b
- a b Compose any two
- ab
- Associativity – no need for brackets a b c
- Associativity – no need for brackets a b c
- Associativity – no need for brackets a b c
- Associativity – no need for brackets a b c
- Associativity – no need for brackets abc
- With associativity abc = a b c Just the sum of its parts with
- Without associativity + orabc = a b c Uh-oh! We need external data
- Identity – doesn’t do anything when you compose a
- Identity – doesn’t do anything when you compose a
- Identity – doesn’t do anything when you compose a
- Compositionality distilled - categories c d e f h j a b i g
- a b The building blocks are called morphisms The colours are called objects
- a b Can only compose when the colours match
- ab The middle bit disappears
- a b Associativity – no need for brackets c
- a b Associativity – no need for brackets c
- a b Associativity – no need for brackets c
- a b Associativity – no need for brackets c
- abc Associativity – no need for brackets
- a Identities – don’t do anything when you compose
- a Identities – don’t do anything when you compose
- a Identities – don’t do anything when you compose
- 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)
- Military research: search & rescue • Systems of systems • Many different kinds of networks • Complex realtime behaviour • How to connect them all?
- Helo 1 Target 1Port 1 Helicopter knows the target and home base In comms range In comms range My port Intent to rescue
- 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
- 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
- Helo network UAV network Overlaying is monoidal; you can always overlay
- Helo network UAV network Overlaying is monoidal; you can always overlay over lay
- Combined network Overlaying is monoidal; you can always overlay
- 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
- 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
- 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
- Is that a category? Network-1 Network-2 Network-3
- Nope! You can’t compose the networks themselves. Network-1 Network-2 Network-3
- 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
- Compositionality distilled – operads a c b d
- a cb
- a cb
- a cb
- a cb
- abc
- a
- a
- a
- a
- Obvious example: types & functions receiveInvoice User Invoice Signature Receipt storeReceipt Receipt Shoebox Shoebox login Username Password User
- receiveInvoiceInvoice Signature storeReceipt Shoebox Shoebox login Username Password
- 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) }
- Mapping it to reality Helicopter Port UAV Target my port Intent to rescue Comms channel Havana Rescue-Scene UAV-Search-Net Homebase
- 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
- 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
- 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
- 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
- prepare lemon meringue pie make lemon filling fill crust make meringue separate egg prepared crust lemon butter sugar egg sugar unbaked pieadd meringue composition
- 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
- Tensoring forms a monoid (up to isomorphism) lemon butter sugar make lemon filling … on the objects of the category lemon ⨂ butter ⨂ sugar lemon filling
- 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
- 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
- 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
- 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
- oven unbaked pie baked pie oven prepare lemon meringue pie bake pie prepare lemon meringue pie
- oven unbaked pie baked pie oven bake pie Surprise! It’s another operad
- 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
- From “Seven Sketches of Compositionality” Fong & Spivak (2018)
- String diagrams in software architecture • Fantastic for software design • I’ve used them for years to train junior & senior developers • Modularity, boundaries
- Simon Brown
- Level 1
- Level 1 Level 2
- Level 1 Level 2 Level 3
- Level 1 Level 2 Level 3 Level 4 Operad! (maybe)
- 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)
- Inputs x1, x2, x3
- Input types {s,r,t} {w, x, y, z} {u, v} Output type {a,b,c,d,e}
- 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’
- 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 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
- 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
- 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)
- 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
- 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
- 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
- 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)

Advertisement