Skip to content

Instantly share code, notes, and snippets.

@kenwebb
Last active April 12, 2019 18:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kenwebb/74d4eb44421f1e0732b0ffdb6b21d855 to your computer and use it in GitHub Desktop.
Save kenwebb/74d4eb44421f1e0732b0ffdb6b21d855 to your computer and use it in GitHub Desktop.
MIT course - Applied Category Theory
<?xml version="1.0" encoding="UTF-8"?>
<!--Xholon Workbook http://www.primordion.com/Xholon/gwt/ MIT License, Copyright (C) Ken Webb, Fri Apr 12 2019 14:52:28 GMT-0400 (Eastern Daylight Time)-->
<XholonWorkbook>
<Notes><![CDATA[
Xholon
------
Title: MIT course - Applied Category Theory
Description:
Url: http://www.primordion.com/Xholon/gwt/
InternalName: 74d4eb44421f1e0732b0ffdb6b21d855
Keywords:
My Notes
--------
April 10, 2019
Applied Category Theory [1]
Instructor(s): Dr. David I. Spivak, Dr. Brendan Fong
MIT Course Number: 18.S097
As Taught In: January IAP 2019
Level: Undergraduate
Course Description:
Category theory is a relatively new branch of mathematics that has transformed much of pure math research.
The technical advance is that category theory provides a framework in which to organize formal systems and by which to translate between them,
allowing one to transfer knowledge from one field to another.
But this same organizational framework also has many compelling examples outside of pure math.
In this course, we will give seven sketches on real-world applications of category theory.
video [6 12:00+]
- first example
- I immediately see this as being about hyperedges and time
- I would implement using 4 Person nodes, who regulary move between Day and Night, at school and at work
- microbes spread by becoming part of one Person in one environment, and then hopping over to another person in a second environment
- David describes it in a different way
- partitions
32:30
- surjection from B to A (from Person to Family)
- in my Xholon model:
go xpath(../TimesOfDay/TimeOfDay[@roleName='Night']/Family[1])
this defines a port (inferred)
- KSW thoughts on this video
- the Avatar actions in my Example model, parallel David's actions while drawing on the blackboard (they both involve time)
- the Avatar XPath expressions compose two arrows wothin the tree, an arrow to an ancestor and an arrow to a descendant
- Question: if each Family is part of a Set, how do I know which family Parent and Kid both belong to?
- my XPath expressions use and explicit index
- David says something about this in video 33:nn
- the Avatar actions form a Recipe; see stuff on Graphical Linear Algebra
References
----------
(1) https://ocw.mit.edu/courses/mathematics/18-s097-applied-category-theory-january-iap-2019/
(2) http://brendanfong.com/
(3) http://brendanfong.com/7sketches.html
18.S097: Applied Category Theory
No prior knowledge of category theory is assumed; we will build up from the basics to the advanced theory over the series of lectures.
Students are very welcome to audit.
(4) https://arxiv.org/abs/1803.05316
Seven Sketches in Compositionality: An Invitation to Applied Category Theory
Brendan Fong, David I Spivak
(5) http://brendanfong.com/7sketches_files/flyer.pdf
(6) https://www.youtube.com/watch?v=UusLtx9fIjs&t=525s&index=2&list=PLhgq-BqyZ7i5lOqOqqRiS0U5SwTmPpHQ5
first lecture
Generative Effects (cascade/emergent properties)
(7) https://jvns.ca/blog/2019/03/26/what-are-monoidal-categories/
Julia Evans
In this post I’m going to try to talk about Seven Sketches in Compositionality: An Invitation to Applied Category Theory using mostly plain English.
(8) https://www.reddit.com/r/compositionality/
]]></Notes>
<_-.XholonClass>
<PhysicalSystem/>
<Example/>
<!-- types of stuff used in Example 1 -->
<Person superClass="Avatar"/>
<People/>
<TimeOfDay/>
<TimesOfDay/>
<Family/>
<School/>
<Work/>
<!-- types of stuff used in Example 2 -->
<Partitioner superClass="Avatar"/>
<Thing/>
<Things/>
<Place/>
<Placez/>
</_-.XholonClass>
<xholonClassDetails>
</xholonClassDetails>
<PhysicalSystem>
<!-- example 1 -->
<Example roleName="vid1 1200">
<People>
<Person roleName="Parent">
wait 1
go xpath(../TimesOfDay/TimeOfDay[@roleName='Night']/Family[1])
wait 1
go xpath(../../TimeOfDay[@roleName='Day']/Work)
</Person>
<Person roleName="Kid">
wait 1
go xpath(../TimesOfDay/TimeOfDay[@roleName='Night']/Family[1])
wait 1
go xpath(../../TimeOfDay[@roleName='Day']/School)
</Person>
<Person roleName="Friend">
wait 1
go xpath(../TimesOfDay/TimeOfDay[@roleName='Night']/Family[2])
wait 1
go xpath(../../TimeOfDay[@roleName='Day']/School)
</Person>
<Person roleName="Coworker">
wait 1
go xpath(../TimesOfDay/TimeOfDay[@roleName='Night']/Family[3])
wait 1
go xpath(../../TimeOfDay[@roleName='Day']/Work)
</Person>
</People>
<TimesOfDay>
<TimeOfDay roleName="Night">
<Family/>
<Family/>
<Family/>
</TimeOfDay>
<TimeOfDay roleName="Day">
<School/>
<Work/>
</TimeOfDay>
</TimesOfDay>
</Example>
<!-- example 2
There are 5 ways to partition the 3 things amongst the 3 places.
(a)(b)(c)
(ab)(c)
(ac)(b)
(a)(bc)
(abc)
Question: how should we think about the 3 places, or maybe it's incorrect to think about the "sets/bins" as places?
I could represent (ab)(c) as ()(ab)(c) or (ab)()(c) or (ab)(c)()
- David says something about this, and mentions isomorphisms/homeomorphisms?
TODO:
I probably need to implement this a different way, using Set and port, rather than using an Avatar behavior.
-->
<Example roleName="vid1 41nn">
<Things>
<Thing roleName="aaa"/>
<Thing roleName="bbb"/>
<Thing roleName="ccc"/>
</Things>
<Placez>
<Place roleName="One"/>
<Place roleName="Two"/>
<Place roleName="Three"/>
</Placez>
<Partitioner/>
</Example>
</PhysicalSystem>
<Partitionerbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[
var ava, beh = {
postConfigure: function() {
ava = this.cnode.parent();
$wnd.xh.root().append(this.cnode.remove());
ava.action("who");
ava.action("where");
ava.action("look");
ava.action("enter things;take;next;put aaa in One;put bbb in Two; put ccc in Three;");
ava.println(this.cnode);
ava.println(ava);
},
act: function() {
//me.println(this.toString());
}
}
//# sourceURL=Partitionerbehavior.js
]]></Partitionerbehavior>
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<svg width="100" height="50" xmlns="http://www.w3.org/2000/svg">
<g>
<title>Example</title>
<rect id="PhysicalSystem/Example" fill="#98FB98" height="50" width="50" x="25" y="0"/>
<g>
<title>Height</title>
<rect id="PhysicalSystem/Example/People" fill="#6AB06A" height="50" width="10" x="80" y="0"/>
</g>
</g>
</svg>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
</XholonWorkbook>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment