diff --git a/_images/20.png b/_images/20.png new file mode 100644 index 0000000..c3ed73e Binary files /dev/null and b/_images/20.png differ diff --git a/_images/211.png b/_images/211.png new file mode 100644 index 0000000..d6bee54 Binary files /dev/null and b/_images/211.png differ diff --git a/_images/22.png b/_images/22.png new file mode 100644 index 0000000..37d2948 Binary files /dev/null and b/_images/22.png differ diff --git a/_images/231.png b/_images/231.png new file mode 100644 index 0000000..0839738 Binary files /dev/null and b/_images/231.png differ diff --git a/_images/24.png b/_images/24.png new file mode 100644 index 0000000..09edd8b Binary files /dev/null and b/_images/24.png differ diff --git a/_images/25.png b/_images/25.png new file mode 100644 index 0000000..e6a3459 Binary files /dev/null and b/_images/25.png differ diff --git a/_images/26.png b/_images/26.png new file mode 100644 index 0000000..44b5f76 Binary files /dev/null and b/_images/26.png differ diff --git a/_images/Ex1-sol.png b/_images/Ex1-sol.png deleted file mode 100644 index d556c4d..0000000 Binary files a/_images/Ex1-sol.png and /dev/null differ diff --git a/_images/Ex2-sol.png b/_images/Ex2-sol.png deleted file mode 100644 index ff7746e..0000000 Binary files a/_images/Ex2-sol.png and /dev/null differ diff --git a/_images/example-1.png b/_images/example-1.png deleted file mode 100644 index eff5fde..0000000 Binary files a/_images/example-1.png and /dev/null differ diff --git a/_images/remove-1.png b/_images/remove-1.png deleted file mode 100644 index 3d9cef4..0000000 Binary files a/_images/remove-1.png and /dev/null differ diff --git a/_images/remove-2.png b/_images/remove-2.png deleted file mode 100644 index 07d8d0f..0000000 Binary files a/_images/remove-2.png and /dev/null differ diff --git a/_sources/afterword.ipynb b/_sources/afterword.ipynb index eeb62db..6166adc 100644 --- a/_sources/afterword.ipynb +++ b/_sources/afterword.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "2b1b77e0", + "id": "40fe7568", "metadata": {}, "source": [ "# Afterword" diff --git a/_sources/authors.ipynb b/_sources/authors.ipynb index 767fa52..81b1854 100644 --- a/_sources/authors.ipynb +++ b/_sources/authors.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "6f30fa64", + "id": "6c9c9eec", "metadata": {}, "source": [ "# Authors\n", diff --git a/_sources/chp0.ipynb b/_sources/chp0.ipynb index 309d97d..9d7bac6 100644 --- a/_sources/chp0.ipynb +++ b/_sources/chp0.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "eb1e2d68", + "id": "ada527fb", "metadata": {}, "source": [ "# Chapter 0: Directed Graphs\n", diff --git a/_sources/chp1-directed-graphs.ipynb b/_sources/chp1-directed-graphs.ipynb index 38e5e2e..c38e7f0 100644 --- a/_sources/chp1-directed-graphs.ipynb +++ b/_sources/chp1-directed-graphs.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "10ff09f3", + "id": "b74616b4", "metadata": {}, "source": [ "# Chapter 1: Data\n", @@ -87,7 +87,7 @@ { "cell_type": "code", "execution_count": null, - "id": "54c03a8e", + "id": "f8937c9f", "metadata": {}, "outputs": [], "source": [ @@ -102,7 +102,7 @@ { "cell_type": "code", "execution_count": null, - "id": "80987dc9", + "id": "efe3ada8", "metadata": {}, "outputs": [], "source": [ @@ -114,7 +114,7 @@ }, { "cell_type": "markdown", - "id": "09f77217", + "id": "62ef6439", "metadata": {}, "source": [ "## 1.3 On the importance of finding the right abstractions \n", diff --git a/_sources/chp2-dwd.ipynb b/_sources/chp2-dwd.ipynb index b91743a..d6e139c 100644 --- a/_sources/chp2-dwd.ipynb +++ b/_sources/chp2-dwd.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "baef1907", + "id": "3b8278d5", "metadata": {}, "source": [ "# Chapter 2: Dynamical Systems with Kiki and Bouba\n", @@ -133,7 +133,7 @@ }, { "cell_type": "markdown", - "id": "ccb25f01", + "id": "6c28be6c", "metadata": {}, "source": [ "```{code}\n", @@ -157,7 +157,7 @@ }, { "cell_type": "markdown", - "id": "53346c4b", + "id": "f01eed25", "metadata": {}, "source": [ "To simulate the code, we need to provide an **initial state (starting state)** for the bulb which will then get updated at every time instant as per the above update rule!" @@ -165,7 +165,7 @@ }, { "cell_type": "markdown", - "id": "6676bb57", + "id": "737f24f2", "metadata": {}, "source": [ "```{code}\n", @@ -177,7 +177,7 @@ }, { "cell_type": "markdown", - "id": "15854b70", + "id": "7a1f1b6f", "metadata": {}, "source": [ "The simulation reuslts are exported as an animation showing that our simulation works (using Javis library) as shown below!\n", @@ -235,7 +235,7 @@ }, { "cell_type": "markdown", - "id": "a620045b", + "id": "874bb1f8", "metadata": {}, "source": [ "```{code}\n", @@ -259,7 +259,7 @@ }, { "cell_type": "markdown", - "id": "1c53c012", + "id": "ea593cbc", "metadata": {}, "source": [ "```{code}\n", @@ -274,7 +274,7 @@ }, { "cell_type": "markdown", - "id": "fa6c654c", + "id": "ff202d17", "metadata": {}, "source": [ "Animating the simulation results produces a result like that:\n", @@ -430,7 +430,7 @@ }, { "cell_type": "markdown", - "id": "14da4e8c", + "id": "3ebee773", "metadata": {}, "source": [ "```{code}\n", @@ -460,7 +460,7 @@ }, { "cell_type": "markdown", - "id": "fdfa8816", + "id": "6aaa983e", "metadata": {}, "source": [ "We need to set the inital states carefully (in a meaningful way)! We set the controller to begin in `ON` for the RED light state and `OFF` for the other two lights (3 states for the controller). For the three light bulbs, we set RED to be `OFF`, GREEN to be `OFF`, and YELLOW to be `ON`. So in the next instant in time, controller will send it current state (RED) to the respective light bulbs and move to the next state of GREEN." @@ -468,7 +468,7 @@ }, { "cell_type": "markdown", - "id": "191f0dff", + "id": "d128a462", "metadata": {}, "source": [ "```{code}\n", @@ -481,7 +481,7 @@ }, { "cell_type": "markdown", - "id": "6face9dd", + "id": "056cbba7", "metadata": {}, "source": [ "Simulation of the results creates the following animation of traffic light! We got our initial states right!!\n", @@ -599,7 +599,7 @@ }, { "cell_type": "markdown", - "id": "ad09a4c3", + "id": "a67c27fa", "metadata": {}, "source": [ "```{code}\n", @@ -618,7 +618,7 @@ }, { "cell_type": "markdown", - "id": "34124351", + "id": "e7cfea3f", "metadata": {}, "source": [ "We set the initial mood of Kiki to 4.5 and Bouba to be -4.5. We set their calmdown rates to be 5% (0.05) for Kiki and 3% (0.03) for Bouba." @@ -626,7 +626,7 @@ }, { "cell_type": "markdown", - "id": "8436de45", + "id": "f1151140", "metadata": {}, "source": [ "```{code}\n", @@ -639,7 +639,7 @@ }, { "cell_type": "markdown", - "id": "700cf5c1", + "id": "ea784563", "metadata": {}, "source": [ "Are you ready to visualize their mood change when they are by themselves?\n", @@ -713,7 +713,7 @@ }, { "cell_type": "markdown", - "id": "690fabb1", + "id": "f7c5c7e0", "metadata": {}, "source": [ "```{code}\n", @@ -736,7 +736,7 @@ }, { "cell_type": "markdown", - "id": "059f828d", + "id": "0eb975db", "metadata": {}, "source": [ "It's time for visualization of change in mood! :) Let us set the initial mood of Kiki and Bouba, their susceptability factors, and their tolerance levels." @@ -744,7 +744,7 @@ }, { "cell_type": "markdown", - "id": "4a967056", + "id": "20f83471", "metadata": {}, "source": [ "```{code}\n", @@ -765,7 +765,7 @@ }, { "cell_type": "markdown", - "id": "eacd03aa", + "id": "4c2450af", "metadata": {}, "source": [ "Here is the plot showing how Kiki and Bouba's moods oscillate during their 100 minutes conversation! They seem to struggle for the first 30 minutes with Kiki losing her excitment steadily. However, their moods meet somewhere above zero and they happily seem to resonate at their maximum excitement levels from there on!\n", @@ -850,7 +850,7 @@ }, { "cell_type": "markdown", - "id": "76f39c84", + "id": "dedd6fa5", "metadata": {}, "source": [ "```{code}\n", @@ -869,7 +869,7 @@ }, { "cell_type": "markdown", - "id": "f726f8cd", + "id": "c4e5d1df", "metadata": {}, "source": [ "The change in mood level of Kiki, Bouba, and Bouba's crew over 100 minutes!\n", diff --git a/_sources/chp3-graph-relationships.ipynb b/_sources/chp3-graph-relationships.ipynb index 12fbc80..e743332 100644 --- a/_sources/chp3-graph-relationships.ipynb +++ b/_sources/chp3-graph-relationships.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "c4156d5b", + "id": "4bd9f028", "metadata": {}, "source": [ "# Chapter 3: Graph Morphisms\n", diff --git a/_sources/chp3-schemas.ipynb b/_sources/chp3-schemas.ipynb index 5bb20e2..a30a774 100644 --- a/_sources/chp3-schemas.ipynb +++ b/_sources/chp3-schemas.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "83ecb147", + "id": "96caf803", "metadata": {}, "source": [ "# Chapter 3: Blueprints\n", @@ -118,7 +118,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b9638922", + "id": "b6c90746", "metadata": {}, "outputs": [], "source": [ @@ -135,7 +135,7 @@ }, { "cell_type": "markdown", - "id": "460ef954", + "id": "c011736f", "metadata": {}, "source": [ "And that's how AlgebraicJulia understands what we mean by a directed graph! Having given this general characterization of a directed graph blueprint we will next see how we can _modify_ this blueprint to define other kinds of graphs.\n", @@ -290,7 +290,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ba85d02b", + "id": "0f117851", "metadata": {}, "outputs": [], "source": [ @@ -306,7 +306,7 @@ }, { "cell_type": "markdown", - "id": "5aa6019a", + "id": "7c996e52", "metadata": {}, "source": [ "And that's how reflexive graphs can be defined in AlgebraicJulia! In the next chapter we'll see how to put this definition to use.\n", @@ -395,7 +395,7 @@ { "cell_type": "code", "execution_count": null, - "id": "886f1512", + "id": "5d59ef81", "metadata": {}, "outputs": [], "source": [ @@ -413,7 +413,7 @@ }, { "cell_type": "markdown", - "id": "52a2aecb", + "id": "2929f422", "metadata": {}, "source": [ ":::{admonition} Pause and Ponder! \n", diff --git a/_sources/chp4-graph-relationships.ipynb b/_sources/chp4-graph-relationships.ipynb index 47b48ca..f656c6b 100644 --- a/_sources/chp4-graph-relationships.ipynb +++ b/_sources/chp4-graph-relationships.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "8be6db8f", + "id": "71dc8f09", "metadata": {}, "source": [ "# Chapter 4: Categories\n", @@ -358,7 +358,7 @@ { "cell_type": "code", "execution_count": null, - "id": "07cfaa7f", + "id": "083395ef", "metadata": {}, "outputs": [], "source": [ @@ -378,7 +378,7 @@ }, { "cell_type": "markdown", - "id": "9a2a4ae0", + "id": "91b08c03", "metadata": {}, "source": [ ":::{admonition} Puzzle 3 Solution:\n", @@ -413,7 +413,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3c6a5884", + "id": "46c607d3", "metadata": {}, "outputs": [], "source": [ @@ -430,7 +430,7 @@ }, { "cell_type": "markdown", - "id": "d7d06bf1", + "id": "654fa138", "metadata": {}, "source": [ ":::{admonition} Puzzle 4 Solution:\n", @@ -456,7 +456,7 @@ { "cell_type": "code", "execution_count": null, - "id": "03e9904c", + "id": "4b768c82", "metadata": {}, "outputs": [], "source": [ @@ -465,7 +465,7 @@ }, { "cell_type": "markdown", - "id": "d8ae5b97", + "id": "8679d397", "metadata": {}, "source": [ ":::{admonition} Puzzle 5 Solution:\n", @@ -503,7 +503,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4bd9aa71", + "id": "c7a762ba", "metadata": {}, "outputs": [], "source": [ @@ -521,7 +521,7 @@ }, { "cell_type": "markdown", - "id": "3d14b8f7", + "id": "3f2e8912", "metadata": {}, "source": [ ":::{admonition} Puzzle 6 Solution:\n", @@ -539,7 +539,7 @@ { "cell_type": "code", "execution_count": null, - "id": "91c8976f", + "id": "334841c1", "metadata": {}, "outputs": [], "source": [ @@ -557,7 +557,7 @@ }, { "cell_type": "markdown", - "id": "c2177af3", + "id": "0ec751f3", "metadata": {}, "source": [ ":::{admonition} Puzzle 7 Solution:\n", diff --git a/_sources/chp5-graph-gluing.ipynb b/_sources/chp5-graph-gluing.ipynb index 5178e6e..549f6f8 100644 --- a/_sources/chp5-graph-gluing.ipynb +++ b/_sources/chp5-graph-gluing.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "96174e0e", + "id": "0ca85461", "metadata": {}, "source": [ "# Chapter 5: Combining Graphs\n", @@ -693,7 +693,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f55ef166", + "id": "67847684", "metadata": {}, "outputs": [], "source": [ @@ -737,7 +737,7 @@ }, { "cell_type": "markdown", - "id": "63d7e5f2", + "id": "4a05640f", "metadata": {}, "source": [ "Use the code cell at the end of the section to visualize `graph A` and `graph B`.\n", @@ -749,7 +749,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ec51c9fe", + "id": "2f504e8e", "metadata": {}, "outputs": [], "source": [ @@ -790,7 +790,7 @@ }, { "cell_type": "markdown", - "id": "34f00144", + "id": "3a14b871", "metadata": {}, "source": [ "Use the code cell at the end of the section to visualize `graph A` and `graph B`.\n", @@ -801,7 +801,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d4ee36e4", + "id": "49ed46c5", "metadata": {}, "outputs": [], "source": [ @@ -825,7 +825,7 @@ }, { "cell_type": "markdown", - "id": "b8186af9", + "id": "f5c36bba", "metadata": {}, "source": [ "Use the code cell below to visualize `graph A` and `graph B`." @@ -834,7 +834,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c888d7ba", + "id": "4ba145f1", "metadata": {}, "outputs": [], "source": [ @@ -849,7 +849,7 @@ }, { "cell_type": "markdown", - "id": "30f4c59e", + "id": "9f1c4530", "metadata": {}, "source": [ "## 5.6 Summary \n", diff --git a/_sources/chp6-dpo.ipynb b/_sources/chp6-dpo.ipynb index 2108d2b..7ba3ef1 100644 --- a/_sources/chp6-dpo.ipynb +++ b/_sources/chp6-dpo.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "3e04a333", + "id": "5f60a436", "metadata": {}, "source": [ "# Chapter 6: Evolving Graphs\n", @@ -395,7 +395,7 @@ "\n", "The following example illustrates this situation. \n", "\n", - "Suppose, we have the following rule for deletion: vertex 2 and edge '2-3' will be deleted (from the host at a match) since they do not overlap! \n", + "Suppose, we have the following rule for deletion: vertex 2 and edge 'a' will be deleted (from the host at a match) since they do not overlap! \n", "```{image} assets/Ch6/16.png\n", ":alt: Whoopsy!\n", ":width: 650px\n", @@ -429,7 +429,7 @@ "```\n", "\n", "\n", - "For the above match, removing vertex '2' and edge '2-3' leaves the graph intact!\n", + "For the above match, removing vertex '2' and edge 'a' leaves the graph intact!\n", "\n", "Another situation that needs care is that a match must not identify a vertex to be deleted and a vertex that needs to be retained (a vertex which overlaps) of `Find` to the same vertex in the host graph. In the deletion rule, vertex 1 must be retained and vertex 2 needs to be deleted. However, the following match identifies vertices 1 and 2 of the search pattern to the same vertex (\"1,2\") in the host graph, which is bad!\n", "\n", @@ -458,7 +458,7 @@ "\n", "We now have a deletion rule, a host graph and a match for `Find` in the host graph. As before, let us draw a diagram of all the information we have:\n", "\n", - "```{image} assets/Ch6/remove-1.png\n", + "```{image} assets/Ch6/20.png\n", ":alt: Whoopsy!\n", ":width: 650px\n", ":align: center\n", @@ -474,7 +474,7 @@ "\n", "\n", "\n", - "```{image} assets/Ch6/remove-2.png\n", + "```{image} assets/Ch6/21.png\n", ":alt: Whoopsy!\n", ":width: 750px\n", ":align: center\n", @@ -499,7 +499,7 @@ "\n", ":::{admonition} Example 1\n", "\n", - "```{image} assets/Ch6/example-1.png\n", + "```{image} assets/Ch6/22.png\n", ":alt: Whoopsy!\n", ":width: 750px\n", ":align: center\n", @@ -520,7 +520,7 @@ "\n", "This problem has a coarse-grain match. Vertices \"1\" and \"2\" of `Find what` are sent to the same vertex in the host graph. Simiarly vertices \"3\" and \"4\" are sent to the same vertex in the host graph.\n", "\n", - "```{image} assets/Ch6/Ex-1.png\n", + "```{image} assets/Ch6/23.png\n", ":alt: Whoopsy!\n", ":width: 750px\n", ":align: center\n", @@ -532,7 +532,7 @@ ":class: dropdown\n", "\n", "````{div} wrapper \n", - "```{image} assets/Ch6/Ex1-sol.png\n", + "```{image} assets/Ch6/24.png\n", ":alt: Whoopsy!\n", ":width: 650px\n", ":align: center\n", @@ -546,7 +546,7 @@ "What is the pushout complement?\n", "\n", "\n", - "```{image} assets/Ch6/Ex-2.png\n", + "```{image} assets/Ch6/25.png\n", ":alt: Whoopsy!\n", ":width: 750px\n", ":align: center\n", @@ -559,7 +559,7 @@ "The pushout complement includes all the edges and vertices in the host graph that is not under the match (all unlabelled vertices and edges),and includes those vertices and edges in the match which are in Graph-2.\n", "\n", "````{div} wrapper \n", - "```{image} assets/Ch6/Ex2-sol.png\n", + "```{image} assets/Ch6/26.png\n", ":alt: Whoopsy!\n", ":width: 650px\n", ":align: center\n", @@ -894,7 +894,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b16e1d65", + "id": "1f424a91", "metadata": {}, "outputs": [], "source": [ @@ -918,7 +918,7 @@ { "cell_type": "code", "execution_count": null, - "id": "dca975c4", + "id": "02fce24b", "metadata": {}, "outputs": [], "source": [ @@ -931,7 +931,7 @@ }, { "cell_type": "markdown", - "id": "3899bb2c", + "id": "d417c139", "metadata": {}, "source": [ "### Is this a pushout complement?\n", @@ -955,7 +955,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e3cac88c", + "id": "ffa3d320", "metadata": {}, "outputs": [], "source": [ @@ -980,7 +980,7 @@ { "cell_type": "code", "execution_count": null, - "id": "bc315fb6", + "id": "9deeed66", "metadata": {}, "outputs": [], "source": [ @@ -990,7 +990,7 @@ }, { "cell_type": "markdown", - "id": "77d5a731", + "id": "174351f3", "metadata": {}, "source": [ ":::{admonition} Example 3\n", @@ -1012,7 +1012,7 @@ { "cell_type": "code", "execution_count": null, - "id": "dc0c6d56", + "id": "193a668e", "metadata": {}, "outputs": [], "source": [ @@ -1038,7 +1038,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5e45186c", + "id": "7c5faf38", "metadata": {}, "outputs": [], "source": [ @@ -1048,7 +1048,7 @@ }, { "cell_type": "markdown", - "id": "5790dcc1", + "id": "3f09dc16", "metadata": {}, "source": [ "### Computing double-pushouts\n", @@ -1069,7 +1069,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4805d31c", + "id": "1288d24f", "metadata": {}, "outputs": [], "source": [ @@ -1089,7 +1089,7 @@ }, { "cell_type": "markdown", - "id": "e82fe5cc", + "id": "31c6c797", "metadata": {}, "source": [ ":::{admonition} Puzzle 7 (continued from Puzzle 5 )\n", @@ -1106,7 +1106,7 @@ { "cell_type": "code", "execution_count": null, - "id": "dbff719b", + "id": "ce80ce5c", "metadata": {}, "outputs": [], "source": [ @@ -1123,7 +1123,7 @@ }, { "cell_type": "markdown", - "id": "828d3f10", + "id": "dac37f42", "metadata": {}, "source": [ ":::{admonition} Puzzle 6\n", @@ -1140,7 +1140,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8a669861", + "id": "d1001415", "metadata": {}, "outputs": [], "source": [ @@ -1170,7 +1170,7 @@ }, { "cell_type": "markdown", - "id": "c52c7af9", + "id": "7a9ec605", "metadata": {}, "source": [ ":::{admonition} Puzzle 8 (continued from Puzzle 6 )\n", @@ -1188,7 +1188,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7b174364", + "id": "63214e6e", "metadata": {}, "outputs": [], "source": [ @@ -1206,7 +1206,7 @@ }, { "cell_type": "markdown", - "id": "b8d4528b", + "id": "3e95e721", "metadata": {}, "source": [ " \n", diff --git a/_sources/chp6-dpo.md b/_sources/chp6-dpo.md index 53a71f0..2029917 100644 --- a/_sources/chp6-dpo.md +++ b/_sources/chp6-dpo.md @@ -400,7 +400,7 @@ Removing edges and vertices require care. Suppose, a vertex in a match is specif The following example illustrates this situation. -Suppose, we have the following rule for deletion: vertex 2 and edge '2-3' will be deleted (from the host at a match) since they do not overlap! +Suppose, we have the following rule for deletion: vertex 2 and edge 'a' will be deleted (from the host at a match) since they do not overlap! ```{image} assets/Ch6/16.png :alt: Whoopsy! :width: 650px @@ -434,7 +434,7 @@ An appropriate match that produces no dangling edge will be: ``` -For the above match, removing vertex '2' and edge '2-3' leaves the graph intact! +For the above match, removing vertex '2' and edge 'a' leaves the graph intact! Another situation that needs care is that a match must not identify a vertex to be deleted and a vertex that needs to be retained (a vertex which overlaps) of `Find` to the same vertex in the host graph. In the deletion rule, vertex 1 must be retained and vertex 2 needs to be deleted. However, the following match identifies vertices 1 and 2 of the search pattern to the same vertex ("1,2") in the host graph, which is bad! @@ -463,7 +463,7 @@ We will talk more about "finding a good match" once the algorithm to perform the We now have a deletion rule, a host graph and a match for `Find` in the host graph. As before, let us draw a diagram of all the information we have: -```{image} assets/Ch6/remove-1.png +```{image} assets/Ch6/20.png :alt: Whoopsy! :width: 650px :align: center @@ -479,7 +479,7 @@ This means that the `overlap` will have a match in the new graph **determined by -```{image} assets/Ch6/remove-2.png +```{image} assets/Ch6/21.png :alt: Whoopsy! :width: 750px :align: center @@ -504,7 +504,7 @@ Let us look at an example of computing "pushout **complement**" :::{admonition} Example 1 -```{image} assets/Ch6/example-1.png +```{image} assets/Ch6/22.png :alt: Whoopsy! :width: 750px :align: center @@ -525,7 +525,7 @@ What is the pushout complement? This problem has a coarse-grain match. Vertices "1" and "2" of `Find what` are sent to the same vertex in the host graph. Simiarly vertices "3" and "4" are sent to the same vertex in the host graph. -```{image} assets/Ch6/Ex-1.png +```{image} assets/Ch6/23.png :alt: Whoopsy! :width: 750px :align: center @@ -537,7 +537,7 @@ This problem has a coarse-grain match. Vertices "1" and "2" of `Find what` are s :class: dropdown ````{div} wrapper -```{image} assets/Ch6/Ex1-sol.png +```{image} assets/Ch6/24.png :alt: Whoopsy! :width: 650px :align: center @@ -551,7 +551,7 @@ This problem has a coarse-grain match. Vertices "1" and "2" of `Find what` are s What is the pushout complement? -```{image} assets/Ch6/Ex-2.png +```{image} assets/Ch6/25.png :alt: Whoopsy! :width: 750px :align: center @@ -564,7 +564,7 @@ What is the pushout complement? The pushout complement includes all the edges and vertices in the host graph that is not under the match (all unlabelled vertices and edges),and includes those vertices and edges in the match which are in Graph-2. ````{div} wrapper -```{image} assets/Ch6/Ex2-sol.png +```{image} assets/Ch6/26.png :alt: Whoopsy! :width: 650px :align: center diff --git a/_sources/chp7-dpo-application.ipynb b/_sources/chp7-dpo-application.ipynb index 01822d0..e483f21 100644 --- a/_sources/chp7-dpo-application.ipynb +++ b/_sources/chp7-dpo-application.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "9af12b68", + "id": "06a1acd8", "metadata": {}, "source": [ "# Chapter 7: A Look Beyond-- Evolving World Models\n", @@ -44,7 +44,7 @@ { "cell_type": "code", "execution_count": null, - "id": "48b84e5b", + "id": "56a16c1f", "metadata": {}, "outputs": [], "source": [ @@ -67,7 +67,7 @@ }, { "cell_type": "markdown", - "id": "8082bdec", + "id": "19e07276", "metadata": {}, "source": [ "```{image} assets/Ch7/Sch3DShape.svg\n", @@ -143,7 +143,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2105b1ca", + "id": "efdb579e", "metadata": {}, "outputs": [], "source": [ @@ -192,7 +192,7 @@ }, { "cell_type": "markdown", - "id": "a5e23dcf", + "id": "97e21169", "metadata": {}, "source": [ "This instance defines a box that looks like _Fig. 1_. \n", @@ -361,7 +361,7 @@ { "cell_type": "code", "execution_count": null, - "id": "15756c8e", + "id": "9c2efc4d", "metadata": {}, "outputs": [], "source": [ @@ -402,7 +402,7 @@ }, { "cell_type": "markdown", - "id": "23cd5e6a", + "id": "a5df0dd6", "metadata": {}, "source": [ "```{image} assets/Ch7/SchKitchen.svg\n", @@ -418,7 +418,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e6c962b6", + "id": "ac52a223", "metadata": {}, "outputs": [], "source": [ @@ -442,7 +442,7 @@ }, { "cell_type": "markdown", - "id": "a03c7c1a", + "id": "656c43a3", "metadata": {}, "source": [ ":::{note}\n", @@ -465,7 +465,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f7c9b51d", + "id": "3aa7dbeb", "metadata": {}, "outputs": [], "source": [ @@ -489,7 +489,7 @@ }, { "cell_type": "markdown", - "id": "f7f78228", + "id": "d0afa6dc", "metadata": {}, "source": [ "In this case, the bread slice and plate are mapped to the same entity. In the case of the bread slice, the function that does this mapping is tied to the `food_is_on` morphism and, in the case of plate, the function that maps it to entity is tied to the `ware_is_entity` morphism. This is effectively saying that the entity that the food is on is the same entity as the plate. \n", diff --git a/_sources/credits.ipynb b/_sources/credits.ipynb index 89f2960..9958cb0 100644 --- a/_sources/credits.ipynb +++ b/_sources/credits.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "72706528", + "id": "edca7f5f", "metadata": {}, "source": [ "# Credits\n", diff --git a/_sources/intro.ipynb b/_sources/intro.ipynb index 620bc7d..4b3d9e9 100644 --- a/_sources/intro.ipynb +++ b/_sources/intro.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "dcd6ae75", + "id": "f5b6b312", "metadata": {}, "source": [ "# Introduction\n", @@ -111,7 +111,7 @@ { "cell_type": "code", "execution_count": null, - "id": "abceecef", + "id": "b680fc46", "metadata": {}, "outputs": [], "source": [ @@ -120,7 +120,7 @@ }, { "cell_type": "markdown", - "id": "525625c4", + "id": "51d2c4e8", "metadata": {}, "source": [ "To run the code, click the \"rocket icon\" at the top right corner of this page, and select \"Live code\". Enabling live code will cause a button labelled \"run\" to appear in each executable code block. Clicking \"run\" will run the code in the block.\n", diff --git a/_sources/julia-notebook.ipynb b/_sources/julia-notebook.ipynb index 556c408..25dc9fa 100644 --- a/_sources/julia-notebook.ipynb +++ b/_sources/julia-notebook.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "ccd74edb", + "id": "8660c98f", "metadata": {}, "source": [ "# Sample Markdown with Code\n", @@ -26,7 +26,7 @@ }, { "cell_type": "markdown", - "id": "444bda78", + "id": "9afafe40", "metadata": {}, "source": [ "## How to run the code in this page?\n", @@ -42,7 +42,7 @@ }, { "cell_type": "markdown", - "id": "fb731df8", + "id": "fc6030ad", "metadata": {}, "source": [ "## Julia code" @@ -51,7 +51,7 @@ { "cell_type": "code", "execution_count": null, - "id": "37a862da", + "id": "fb7f4416", "metadata": {}, "outputs": [], "source": [ @@ -61,7 +61,7 @@ }, { "cell_type": "markdown", - "id": "bc172109", + "id": "69b87a1b", "metadata": {}, "source": [ "## Drawing directed wiring diagrams\n", @@ -72,7 +72,7 @@ { "cell_type": "code", "execution_count": null, - "id": "57f46bba", + "id": "ed4f0218", "metadata": {}, "outputs": [], "source": [ @@ -103,7 +103,7 @@ }, { "cell_type": "markdown", - "id": "d3b37c05", + "id": "04c687b3", "metadata": {}, "source": [ "## Drawing undirected wiring diagrams\n", @@ -113,7 +113,7 @@ }, { "cell_type": "markdown", - "id": "26b20cf1", + "id": "83bd902a", "metadata": {}, "source": [ "The following code draws UWD using Graphviz library" @@ -122,7 +122,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d926e779", + "id": "14775b95", "metadata": {}, "outputs": [], "source": [ @@ -142,7 +142,7 @@ }, { "cell_type": "markdown", - "id": "5f2e94d2", + "id": "2acf1792", "metadata": {}, "source": [ "Try your own code in the block below:" @@ -151,7 +151,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7c01557e", + "id": "7864a9de", "metadata": {}, "outputs": [], "source": [ diff --git a/chp6-dpo.html b/chp6-dpo.html index c4f9500..4f7fd6e 100644 --- a/chp6-dpo.html +++ b/chp6-dpo.html @@ -656,7 +656,7 @@
Removing edges and vertices require care. Suppose, a vertex in a match is specifed to be removed. There may be edges which are connected to to this vertex in the host graph. In that case, deleting the vertex will lead to zombie graphs which has dangling edges (edges whose end(s) is not connected to any vertex).
The following example illustrates this situation.
-Suppose, we have the following rule for deletion: vertex 2 and edge ‘2-3’ will be deleted (from the host at a match) since they do not overlap!
+Suppose, we have the following rule for deletion: vertex 2 and edge ‘a’ will be deleted (from the host at a match) since they do not overlap!
Suppose we are given the following match of Find
in a host graph. Can you see why this match is bad?
For the above match, removing vertex ‘2’ and edge ‘2-3’ leaves the graph intact!
+For the above match, removing vertex ‘2’ and edge ‘a’ leaves the graph intact!
Another situation that needs care is that a match must not identify a vertex to be deleted and a vertex that needs to be retained (a vertex which overlaps) of Find
to the same vertex in the host graph. In the deletion rule, vertex 1 must be retained and vertex 2 needs to be deleted. However, the following match identifies vertices 1 and 2 of the search pattern to the same vertex (“1,2”) in the host graph, which is bad!
We now have a deletion rule, a host graph and a match for Find
in the host graph. As before, let us draw a diagram of all the information we have:
The new graph which results after performing the replacement (deletion) will have:
The above square commutes! Does this shape remind you of pushouts from chapter 5? It turns out that, the host graph is the pushout of Find
and the new graph!!
This indeed makes sense, because, Find
includes vertices and edges which has been removed. Glueing together Find
and the new graph along the overlap must give the original host graph!
Example 1
- +The nodes exclusive to Find
must be removed from the host graph. Thus, the pushout out complement must include:
all the parts of the host graph not under the match, and
What is the pushout complement?
This problem has a coarse-grain match. Vertices “1” and “2” of Find what
are sent to the same vertex in the host graph. Simiarly vertices “3” and “4” are sent to the same vertex in the host graph.