<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://julianaoconnor.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://julianaoconnor.com/" rel="alternate" type="text/html" /><updated>2025-12-27T02:24:20-08:00</updated><id>https://julianaoconnor.com/feed.xml</id><title type="html">Juli O’Connor</title><subtitle>3rd Year PhD Student | she/they &amp;description &quot;personal description&quot;</subtitle><author><name>Juli O&apos;Connor</name><email>sjoconno@andrew.cmu.edu</email></author><entry><title type="html">A Fun Unsolved Problem - Covered Grids</title><link href="https://julianaoconnor.com/posts/2023/01/covered-grids/" rel="alternate" type="text/html" title="A Fun Unsolved Problem - Covered Grids" /><published>2023-01-20T00:00:00-08:00</published><updated>2023-01-20T00:00:00-08:00</updated><id>https://julianaoconnor.com/posts/2023/01/covered-grids</id><content type="html" xml:base="https://julianaoconnor.com/posts/2023/01/covered-grids/"><![CDATA[<p>I want to share a fun problem I don’t know how to solve! I discovered it a few years ago, but I only got a few partial results. It also has some neat implications I’ll talk about later!</p>

<p>The way I like to frame this problem deals with “covered” “grids”. A grid in this case is an n-by-n grid of unit squares, each of which can be colored or uncolored. An n-by-n grid is covered if each rectangle in the grid of area at least n contains a colored square. These images illustrate some examples!</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (0,3) rectangle (1,4);
\fill[black] (1,1) rectangle (2,2);
\fill[black] (2,2) rectangle (3,3);
\fill[black] (3,0) rectangle (4,1);
  \end{tikzpicture} </script>

<p>This 4-by-4 grid is covered, as every rectangle in the grid of area at least 4 contains a colored square.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (0,3) rectangle (1,4);
\fill[black] (1,2) rectangle (2,3);
\fill[black] (2,1) rectangle (3,2);
\fill[black] (3,0) rectangle (4,1);
\draw[red, very thick] (2,2) rectangle (4,4);
  \end{tikzpicture} </script>

<p>This 4-by-4 grid is not covered, as the red rectangle has an area of 4 and does not contain a colored square.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (5,5);
\fill[black] (0,4) rectangle (1,5);
\fill[black] (1,3) rectangle (2,4);
\fill[black] (2,2) rectangle (3,3);
\fill[black] (3,1) rectangle (4,2);
\fill[black] (4,0) rectangle (5,1);
\draw[red, very thick] (2,3) rectangle (5,5);
  \end{tikzpicture} </script>

<p>This 5-by-5 grid is not covered, as the red rectangle has an area of 6 (and thus an area greater than 5) and does not contain a colored square.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (5,5);
\fill[black] (0,4) rectangle (1,5);
\fill[black] (2,3) rectangle (3,4);
\fill[black] (4,2) rectangle (5,3);
\fill[black] (1,1) rectangle (2,2);
\fill[black] (3,0) rectangle (4,1);
  \end{tikzpicture} </script>

<p>This 5-by-5 grid is covered, as every rectangle in the grid of area at least 5 contains a colored square.</p>

<p>Then, let T(n) be the minimum number of colored squares needed to cover an n-by-n grid.</p>

<p>We can see from the first and fourth examples that T(4) = 4 and T(5) = 5.</p>

<p>The main question I want to investigate is this: Does T(n) = O(n)? That is, is T(n) upper-bounded by some linear function in n?</p>

<p>We can easily see that T(n) is lower bounded by the function f(n) = n, since every row (and likewise column) must contain a colored square. But we can show that T(n) is strictly larger than this!</p>

<p>First, note that our example of a 4-by-4 grid that is covered by 4 colored squares is in fact the only example of a 4-by-4 that is covered by exactly 4 colored squares, up to the symmetries of a square.</p>

<p>To see this, first note that we require each row and column to have exactly one colored square, since otherwise the total number of colored squares would be greater than 4.</p>

<p>Then, using symmetry we can do a simple case bash, as described in the following images, to obtain this result.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (0,3) rectangle (1,4);
  \end{tikzpicture} </script>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (1,3) rectangle (2,4);
\fill[black] (2,2) rectangle (3,3);
  \end{tikzpicture} </script>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (1,3) rectangle (2,4);
\fill[black] (3,2) rectangle (4,3);
  \end{tikzpicture} </script>

<p>By symmetry, we can just consider these three cases, as we will see that if we require a 4-by-4 grid has exactly 4 colored squares, these three configurations determine the entire grid.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (0,3) rectangle (1,4);
\draw[red, very thick] (1,2) rectangle (3,4);
\draw[red, very thick] (2,2) rectangle (4,4);
\fill[pink] (2,2) rectangle (3,3);
  \end{tikzpicture} </script>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (0,3) rectangle (1,4);
\fill[black] (2,2) rectangle (3,3);
\draw[red, very thick] (0,1) rectangle (2,3);
\fill[pink] (1,1) rectangle (2,2);
  \end{tikzpicture} </script>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (0,3) rectangle (1,4);
\fill[black] (2,2) rectangle (3,3);
\fill[black] (1,1) rectangle (2,2);
\draw[red, very thick] (2,0) rectangle (4,2);
\fill[pink] (3,0) rectangle (4,1);
  \end{tikzpicture} </script>

<p>In the first case, we see that the colored square in the second row is fully determined, as otherwise one of the two 2-by-2 squares will not contain a colored square. Likewise, the rest of the grid is also fully determined.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (1,3) rectangle (2,4);
\fill[black] (2,2) rectangle (3,3);
\draw[red, very thick] (0,1) rectangle (2,3);
\fill[pink] (0,1) rectangle (1,2);
  \end{tikzpicture} </script>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (1,3) rectangle (2,4);
\fill[black] (2,2) rectangle (3,3);
\fill[black] (0,1) rectangle (1,2);
\draw[red, very thick] (3,0) rectangle (4,4);
\fill[pink] (3,0) rectangle (4,1);
  \end{tikzpicture} </script>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (1,3) rectangle (2,4);
\fill[black] (2,2) rectangle (3,3);
\fill[black] (0,1) rectangle (1,2);
\fill[black] (3,0) rectangle (4,1);
\draw[red, very thick] (1,0) rectangle (3,2);
  \end{tikzpicture} </script>

<p>In the second case, we once again see that each colored square is fully determined. However, this results in there being a 2-by-2 square that does not contain a colored square, so this case fails.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (1,3) rectangle (2,4);
\fill[black] (3,2) rectangle (4,3);
\draw[red, very thick] (0,1) rectangle (2,3);
\fill[pink] (0,1) rectangle (1,2);
  \end{tikzpicture} </script>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (1,3) rectangle (2,4);
\fill[black] (3,2) rectangle (4,3);
\fill[black] (0,1) rectangle (1,2);
\draw[red, very thick] (1,0) rectangle (3,2);
\fill[pink] (2,0) rectangle (3,1);
  \end{tikzpicture} </script>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (4,4);
\fill[black] (1,3) rectangle (2,4);
\fill[black] (3,2) rectangle (4,3);
\fill[black] (0,1) rectangle (1,2);
\fill[black] (2,0) rectangle (3,1);
\draw[red, very thick] (1,1) rectangle (3,3);
  \end{tikzpicture} </script>

<p>Likewise, in the third case each colored square is fully determined, and this also results in there being a 2-by-2 square that does not contain a colored square. So we can finally conclude that the first case is the only possible case up to symmetry.</p>

<p>Next, note that for any n that is a multiple of 4, we can actually consider the first 4 rows of an n-by-n grid as being a 4-by-4 grid!</p>

<p>For example, in an 8-by-8 grid, if we look at the first 4 rows and group together the squares in 2-by-1 pairs, this forms a 4-by-4 grid. We can then consider one of these 2-by-1 pairs as being colored if at least one of the squares making up the pair is colored.</p>

<p>From this we see that if this 8-by-8 grid is covered, so is this embedded 4-by-4 grid!</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (8,8);
\fill[black] (1,7) rectangle (2,8);
\fill[black] (5,6) rectangle (6,7);
\fill[black] (2,5) rectangle (3,6);
\fill[black] (7,4) rectangle (8,5);
\fill[black] (4,4) rectangle (5,5);
\fill[black] (3,3) rectangle (4,4);
\fill[black] (1,3) rectangle (0,4);
\fill[black] (5,2) rectangle (6,3);
\fill[black] (2,1) rectangle (3,2);
\fill[black] (6,0) rectangle (7,1);
  \end{tikzpicture} </script>

<p>Consider this 8-by-8 grid, which contains 10 colored squares and is in fact covered. We can then just focus on the first 4 rows.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[xstep=2cm, ystep=1cm,black] (0,0) grid (8,4);
\fill[black] (1,3) rectangle (2,4);
\fill[black] (5,2) rectangle (6,3);
\fill[black] (2,1) rectangle (3,2);
\fill[black] (7,0) rectangle (8,1);
\fill[black] (4,0) rectangle (5,1);
  \end{tikzpicture} </script>

<p>Next, we can group together these squares into 2-by-1 rectangles, which we can then interpret as making up a 4-by-4 grid.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[xstep=2cm, ystep=1cm,black] (0,0) grid (8,4);
\fill[black] (0,3) rectangle (2,4);
\fill[black] (4,2) rectangle (6,3);
\fill[black] (2,1) rectangle (4,2);
\fill[black] (6,0) rectangle (8,1);
\fill[black] (4,0) rectangle (6,1);
  \end{tikzpicture} </script>

<p>Then, we color each of these 2-by-1 rectangles if it contains a colored square, which results in this embedded 4-by-4 grid being covered, as expected.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (8,4);
\draw[red, very thick] (0,3) rectangle (2,4);
\draw[red, very thick] (4,2) rectangle (6,3);
\draw[red, very thick] (2,1) rectangle (4,2);
\draw[red, very thick] (6,0) rectangle (8,1);
  \end{tikzpicture} </script>

<p>Finally, if the first 4 rows of a covered 8-by-8 grid contain exactly 4 colored squares, up to symmetry each of these 2-by-1 rectangles contains a colored square.</p>

<p>Note that the above images generalize to any n-by-n grid for any n that is a multiple of 4.</p>

<p>Then, we have that the 3-by-m rectangles, where m is equal to the ceiling of n/3, must contain a colored square. This gives us a further restriction on the placement of colored squares in the first 4 rows of an n-by-n grid, assuming that there are exactly 4 colored squares in these first 4 rows.</p>

<p>We can then use this to show that this is impossible for n $&gt;$ 4, as described in the following images.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (8,4);
\draw[red, very thick] (0,3) rectangle (2,4);
\draw[red, very thick] (4,2) rectangle (6,3);
\draw[red, very thick] (2,1) rectangle (4,2);
\draw[red, very thick] (6,0) rectangle (8,1);
\draw[red, very thick] (0,0) rectangle (3,3);
\draw[red, very thick] (5,1) rectangle (8,4);
  \end{tikzpicture} </script>

<p>As the ceiling of 8/3 is 3, we note that the 3-by-3 rectangles in the indicated corners must contain a colored square.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (8,4);
\draw[red, very thick] (0,3) rectangle (2,4);
\draw[red, very thick] (4,2) rectangle (6,3);
\draw[red, very thick] (2,1) rectangle (4,2);
\draw[red, very thick] (6,0) rectangle (8,1);
\draw[red, very thick] (0,0) rectangle (3,3);
\draw[red, very thick] (5,1) rectangle (8,4);
\fill[pink] (2,1) rectangle (3,2);
\fill[pink] (5,2) rectangle (6,3);
  \end{tikzpicture} </script>

<p>In the n = 8 case, we note that this uniquely determines the placement of the colored squares in the second and third row.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (8,4);
\draw[red, very thick] (0,3) rectangle (2,4);
\draw[red, very thick] (4,2) rectangle (6,3);
\draw[red, very thick] (2,1) rectangle (4,2);
\draw[red, very thick] (6,0) rectangle (8,1);
\draw[red, very thick] (0,0) rectangle (3,3);
\draw[red, very thick] (5,1) rectangle (8,4);
\fill[pink] (2,1) rectangle (3,2);
\fill[pink] (5,2) rectangle (6,3);
\draw [decorate,decoration={brace,amplitude=10pt,mirror,raise=2ex}]
  (3,0) -- (5,0) node[midway,yshift=-2.5em]{$d \ge n - 2 \left \lceil \dfrac{n}{3} \right \rceil $};
  \end{tikzpicture} </script>

<p>In general, we get that the horizontal distance between the colored squares in the second and third row must be greater than n minus 2 times the ceiling of n/3.</p>

<script type="text/tikz">   \begin{tikzpicture}
\draw[step=1cm,black] (0,0) grid (8,4);
\fill[pink] (2,1) rectangle (3,2);
\fill[pink] (5,2) rectangle (6,3);
\draw[red, very thick] (3,0) rectangle (5,4);
\draw [decorate,decoration={brace,amplitude=10pt,mirror,raise=2ex}]
  (3,0) -- (5,0) node[midway,yshift=-2.5em]{$d \ge n - 2 \left \lceil \dfrac{n}{3} \right \rceil $};
  \end{tikzpicture} </script>

<p>As such, this results in there being a rectangle that contains no colored squares with an area of 4 times n minus 8 times the ceiling of n/3. For n = 8, the resulting rectangle has an area of 8, so here our claim holds.</p>

<p>From all this, we see that, given an n a multiple of 4, to prove that the first 4 rows of a covered n-by-n grid must contain more than 4 colored squares, we can simply show that the area of this rectangle between the colored squares in the second and third rows must be greater than n for n $&gt;$ 4.</p>

<p>We already have that this is true for n = 8, and the plot below shows that this does indeed hold true for n $&gt;$ 4. So this implies that T(n) is greater than n for all multiples of 4 !</p>

<p><img src="/images/posts/2023-01-GraTeX.png" alt="2023-01-GraTeX.png" /></p>

<p>In fact, we do a lot better than just this! Note that the exact same argument applies to every consecutive 4 rows in an n-by-n grid, so we actually get that T(4n) is greater than or equal to 5n.</p>

<p>Furthermore, if we prove that T(k) = m, we get that T(kn) is greater than or equal to mn for all n, as we can perform a similar argument!</p>

<p>However, this alone is not enough to make progress towards whether T(n) is O(n) or not. This is as far as I got, but I’d wager that T(n) is not O(n).</p>

<p>One justification for this is that if T(n) was O(n), what constant could the limit of T(n)/n possibly be?</p>

<p>However, a better reason I think that T(n) is not O(n) is that this implies there are no Danzer sets in dimension 2 with a growth rate of O(r$^2$)!</p>

<p><a href="https://en.wikipedia.org/wiki/Danzer_set">https://en.wikipedia.org/wiki/Danzer_set</a></p>

<p>A Danzer set is a set of points in the plane such that every convex region of area 1 contains a point in this set. Such a set has a growth rate of O(r$^2$) if this set has a bounded density in the plane.</p>

<p>So given such a Danzer set with a density bounded by some real number k, we can scale an n-by-n grid by a factor of 1/sqrt(n) in each direction and center the grid at the origin.</p>

<p>Then, each rectangle in this grid that originally had an area greater than n now has an area greater than 1, and thus each of these rectangles contains at least one point in the Danzer set.</p>

<p>As such, we can then color each square that contains a point in this set, which must result in the grid being covered.</p>

<p>Finally, as the area of this scaled grid is n, the number of points will be less than kn, and thus so too will the number of colored squares.</p>

<p>Thus, given a Danzer set with bounded density, we obtain that T(n) is indeed O(n). But such a Danzer set existing also seems unlikely to me for similar reasons, and no one has found one yet.</p>

<p>This also means that if T(n) is not O(n), then no Danzer set of dimension 2 can have a bounded density! I wouldn’t bet on the converse holding though.</p>

<p>So this would solve that open problem, as well as a similar problem posed by Conway, called the dead fly problem! This was actually the original motivation for this problem, since I tried looking at a discrete version of this, which then ended up being implied by the original question!</p>

<p>Anyways, hope all this was interesting! This entire thread is also on an Overleaf file, so you can view it there at</p>

<p><a href="https://www.overleaf.com/read/pdmjgyfthdzh}">https://www.overleaf.com/read/pdmjgyfthdzh</a></p>

<p>Have a good weekend everyone! :)</p>]]></content><author><name>Juli O&apos;Connor</name><email>sjoconno@andrew.cmu.edu</email></author><summary type="html"><![CDATA[I want to share a fun problem I don’t know how to solve! I discovered it a few years ago, but I only got a few partial results. It also has some neat implications I’ll talk about later!]]></summary></entry><entry><title type="html">Cameo in n-Category Cafe Post</title><link href="https://julianaoconnor.com/posts/2023/01/n-category-theory-cafe-cameo/" rel="alternate" type="text/html" title="Cameo in n-Category Cafe Post" /><published>2023-01-04T00:00:00-08:00</published><updated>2023-01-04T00:00:00-08:00</updated><id>https://julianaoconnor.com/posts/2023/01/n-category-cafe-cameo</id><content type="html" xml:base="https://julianaoconnor.com/posts/2023/01/n-category-theory-cafe-cameo/"><![CDATA[<p>Back in January I had a small cameo in John Baez’s article <a href="https://golem.ph.utexas.edu/category/2023/01/a_curious_integral.html">A Curious Integral</a> on the n-Category Cafe, which was cool! It’s a good read and a fun problem, so I’d definitely recommend checking it out!</p>]]></content><author><name>Juli O&apos;Connor</name><email>sjoconno@andrew.cmu.edu</email></author><summary type="html"><![CDATA[Back in January I had a small cameo in John Baez’s article A Curious Integral on the n-Category Cafe, which was cool! It’s a good read and a fun problem, so I’d definitely recommend checking it out!]]></summary></entry><entry><title type="html">Adjoint School 2022 - Group 2B Blog Post</title><link href="https://julianaoconnor.com/posts/2022/07/adjoint-school-2022/" rel="alternate" type="text/html" title="Adjoint School 2022 - Group 2B Blog Post" /><published>2022-07-27T00:00:00-07:00</published><updated>2022-07-27T00:00:00-07:00</updated><id>https://julianaoconnor.com/posts/2022/07/adjoint-school-2022</id><content type="html" xml:base="https://julianaoconnor.com/posts/2022/07/adjoint-school-2022/"><![CDATA[<p>A blog post I wrote with <a href="https://sites.google.com/ime.usp.br/analuizatenorio">Ana Luiza Tenório</a> as part of the Adjoint School 2022 program, titled “Learning to Lie with Sheaves”. A link to the blog post on the n-Category Café can be found <a href="https://golem.ph.utexas.edu/category/2022/07/learning_to_lie_with_sheaves.html">here</a>.</p>

<!-- Social networks are frequently represented by graphs: each agent/person is a vertex and the interactions between pairs of individuals are the edges. A starting point to think about the evolution of opinions over time is to associate to each vertex vv a real number x vx_v that represents the agreement of vv to respect a certain topic. For instance, fix the topic “category theory is cool”. In a social network of nn mathematicians, we will have some high positive x v∈ℝx_v \in \mathbb{R} representing a strong agreement with this assertion, some high negative x v′∈ℝx_{v'}\in \mathbb{R} for a strong disagreement, and some neutral opinions. Those mathematicians interact and may change their original opinion. What is the group’s opinion about category theory after a period of time? Clearly, eventually, everyone will agree that category theory is cool. Jokes (or not) aside, a standard way to try to answer this is to study the dynamical system generated by the heat equation
(1)
dxdt=−αLxforsomeα>0 \frac{d x}{d t} = -\alpha L x \; for \; some \; \alpha \gt 0

where x=(x v 1,...,v v n)∈ℝ nx = (x_{v_1},...,v_{v_n})\in \mathbb{R}^n and LL is the graph Laplacian, a matrix that represents a graph defined by the difference L=D−AL = D - A, with DD the degree matrix and AA the adjacency matrix of the graph. In this approach, originally proposed in Towards a mathematical theory of influence and attitude change, we study the evolution of opinion distributions without considering that expressed opinions may be different from personal opinions. In the paper Opinion Dynamics on Discourse Sheaves, Jakob Hansen and Robert Ghrist introduced a functor that addresses this distinction, and leads to a flexible model. We briefly present it here.
MathML-enabled post (click for more details).
Opinion Dynamics on Cellular Sheaves

Consider a poset category GG using the structure of a given undirected graph. The objects are the vertices/agents vv and the edges/interactions ee, while the morphisms are the unique arrows induced by the incidence pair v⊴ev \unlhd e, that is, when vv is an endpoint of ee. The incident pair provides a partial order relation by x⊴yx \unlhd y if and only if x=yx=y or xx is a vertex incident to an edge yy. Then the discourse sheaf is a functor F:G→VectF: G \to Vect defined by specifying the associated data as follows

In the objects:

    F(v)F(v) is the space of opinions (the private opinions), for each vertex vv;
    F(e)F(e) is the space of discourse (the public opinions), for each edge ee.

In the morphism:

    F v⊴e:F(v)→F(e)F_{v\unlhd e}: F(v) \to F(e) linear maps, for each incident pair v⊴ev\unlhd e.

Discourse_Sheaf

Remark: The base of the space of opinions F(v)F(v) is formed by the topics that the agent vv has an opinion on and talks about. Given e=u→ve = u \to v, the base of the space of discourse F(e)F(e) is formed by common topics which the two agents uu and vv may talk about. The bases of F(v)F(v), F(u)F(u), and F(e)F(e) do not have to be equal.

More generally, replacing VectVect by any other category and GG by any cell category — a poset category where the faces of a cell complex induce the order relation — we have a cellular sheaf. For a reader familiar with sheaves on topological spaces, cellular sheaves may not look like a sheaf at all, but in Sheaves, Cosheaves, and Applications (at II.4), Justin Curry gives a detailed description of how to construct a categorical equivalence between cellular sheaves and sheaves on topological spaces — with an Erratum of one of the arguments. Such equivalence motivates the reuse of standard sheaf theory terminology. For instance, the vector spaces F(v)F(v) and F(e)F(e) are called stalks and the linear maps F v⊴eF_{v\unlhd e} are the restriction maps.

Now, choose an orientation e=u→ve = u \to v and consider the linear map δ:⨁ v∈GF(v)→⨁ e∈GF(e)\delta: \bigoplus_{v \in G} F(v) \to \bigoplus_{e \in G} F(e) defined by
(δx)e=F v⊴ex v−F u⊴ex u.(\delta x)e = F_{v\unlhd e} x_v - F_{u\unlhd e} x_u.
In the general context of cellular sheaf cohomology, the domain and contra-domain of the cochain complex δ\delta are, respectively, 00-cochains and 11-cochains. We do not have other nn-cochains because they are related to the nn-cell structure. Then we only have the 00-cohomology given by H 0(G,F)=KerδH^0(G,F) = \mathrm{Ker} \delta but this already is highly expressive for the model: given an opinion distribution x∈⨁ v∈GF(v),x \in \bigoplus_{v \in G} F(v), the linear map δ\delta calculates the signed difference between the expressed opinions of agents vv and uu. In other words, the cohomology detects how far the social network is to achieve an apparent consensus.

We also use the cochain complex to define the sheaf Laplacian by L F=δ Tδ:C 0(G,F)→C 0(G,F)L_F = \delta^T\delta : C^0(G,F) \to C^0(G,F), which actually generalizes the graph Laplacian. When FF is the constant sheaf ℝ̲\underline{ \mathbb{R}}, with stalks ℝ{ \mathbb{R}} and identity maps, δ\delta is the transpose of the incidence matrix BB of the graph (so L ℝ̲=BB TL_{\underline{ \mathbb{R}}} = BB^T).

Thus, the idea is to study the dynamical system generated by an equation similar to the first one we presented but replacing the graph Laplacian by the sheaf Laplacian and x∈ℝx \in \mathbb{R} by x∈⨁ v∈GF(v).x \in \bigoplus_{v \in G} F(v). The first result we have is:

Solutions x(t)x(t) to dxdt=−αL Fx\frac{d x}{d t} = -\alpha L_F x converge to the orthogonal projection of x(0)x(0) onto H 0(G;F)H^0(G; F), as t→∞t \to \infty.

Here we highlight two points regarding the above theorem:

    The proof only relies on techniques from linear algebra and calculus; no advanced knowledge in category theory or homological theory is required to study the dynamics. This is true for all the proofs in the paper;

    The interpretation of this result is that the social network eventually arrives at the apparent consensus (with properties of the sheaf Laplacian influencing the rate of convergence).

Example: If FF is the constant sheaf ℝ n\mathbb{R}^n, then the base of nn topics is the same for every agent vv, all the restriction maps are identities, and so all agents are expressing their true opinion. Therefore, opinion dynamics by the analyses of (1)(1) may be seen as a particular case of opinion dynamics on sheaves.

Note that in the case of the constant sheaf ℝ̲\underline{\mathbb{R}}, we get that the private opinions of all agents in communication will converge to the same value, which is not as intriguing (or realistic) of a result as might have been hoped. So using cellular sheaves to model a social network and using the sheaf Laplacian to evolve the opinions of each agent over time is quite interesting, but by itself unfortunately limited considering what we presented so far. In the following, we summarize how Jakob Hansen and Robert Ghrist modify this framework by not only evolving the private opinions of each agent over time, but also the expressions of opinions of each agent (in the form of the restriction maps).
Learning to Lie

As a simple example of this idea, we can keep the private opinions of each agent fixed while allowing the restriction maps to vary with time. Here we model the change in the restriction maps by
ddtF v⊴e=−β(F v⊴ex v−F u⊴ex u)x v T,forsomeβ>0\frac{d}{dt}F_{v\unlhd e} = -\beta(F_{v\unlhd e}x_v - F_{u\unlhd e}x_u)x^T_v, \, for some \beta \gt 0
The result is that over time each agent modifies each of their expressed opinions to minimize disagreement with their neighbors. However, one interesting behavior that emerges from this system is that agents can “learn to lie” in the sense that their restriction maps change to instead express the opposite of the private opinion they hold. In other words, negative real numbers in the matrix that represents the restriction maps witness what we call a lie, while non-negative real numbers in the matrix witness an exaggeration or a reduction of the personal opinion.

This emergent behavior is more realistic than having all agents’ private opinions reach a consensus, but this comes at the cost of all the private opinions being kept fixed. Thankfully, we can actually vary both the restriction maps and the private opinions of each agent with time!

Indeed, defining a differential equation where both ddtF v⊴e=−β(F v⊴ex v−F u⊴ex u)x v T\frac{d}{dt}F_{v\unlhd e} = -\beta(F_{v\unlhd e}x_v - F_{u\unlhd e}x_u)x^T_v and dxdt=−αL Fx\frac{dx}{dt} = -\alpha L_F x hold gives us exactly this model! This has the pleasant corollary that by setting β=0\beta = 0 or α=0\alpha = 0 we can recover the cases where the restriction maps or the private opinions are kept fixed, respectively.

From this, we can observe these joint-dynamical systems where agents will both change their private opinions and how they express their opinions to minimize expressed disagreement. Agents in these models thus learn to exaggerate, soften, or lie about their private opinions depending on the expressed opinions of other agents they are in communication with, while at the same time modifying their own private opinions to minimize overall expressed disagreement.

Finally, one phenomenon that these types of linear models do not capture is how two agents expressing significantly different opinions will cease communication (in the sense that their private opinions will be unaffected by this communication). Note that while this is certainly a mechanism of polarization, the joint-dynamic models can still produce polarization due to the restriction maps not being fixed. In Jakob Hansen and Robert Ghrist’s paper, the solution for this arises by introducing a nonlinear term in the sheaf Laplacian, which can be used to ignore communications where there is significant expressed disagreement. While this does come at the cost of linearity, the cellular sheaf framework is still applicable with minimal changes to the differential equations.
A Simple Simulation

Suppose we have an agent v 0v_0 that is not a big fan of category theory, such preference is represented by the value x v 0=−1x_{v_0} = - 1; another agent appreciates category theory with intensity x v 1=3x_{v_1} = 3, and a third one likes it a bit, with x v 1=1 x_{v_1} = 1. All of them start the communication with each other being totally honest, that is, all restriction maps are represented by [1][1]. We then simulate the mixed situation where private and public opinion may change, and that the agents are interested in minimizing expressed disagreement. Taking α=0.1\alpha = 0.1 and β=1\beta = 1, we find the following:

Simulation_Sheaf_Opinion_Dynamics

Aiming for a better visualization, in the above picture we put the values x v ix_{v_i} instead of the vector spaces F(v i)=ℝF(v_i) = \mathbb{R} and e je_j to abstractly represent the values in F(e j)F(e_j) associated with the application of F v i⊴e jF_{v_i \unlhd e_j}. Note that the two category theory supporters do not lie to each other (they exaggerate or soften their opinion) but they do have to lie to the first agent. On the other hand, the first agent did not have to lie to anyone, they only softened their opinion to achieve the apparent consensus. It is also interesting to note that the agent with the strongest opinion in the beginning was the one forced to “lie more”, the same happened in Example 8.2 of Opinion Dynamics on Discourse Sheaves. One final note is that the communication between the first and last agents has effectively ceased, as both restriction maps are quite close to the zero map, which can be interpreted as the respective agent expressing no opinion whatsoever.

If you want to play with more complicated graphs, test other constants or different initial values, look at Sean’s Python code available in Github.
Conclusion

Cellular sheaves provide a framework to develop opinion dynamics: the calculations are relatively simple, and we obtain a flexible model. We focused on the ability to model agents that learn to lie, but the paper also explores, for instance, when we have agents that never change their (expressed) opinion; which additional hypothesis one should have to control the evolution of the group’s opinion; and the dynamics assuming a “bounded confidence” i.e., when the agents only take into consideration opinions that are similar to their own.

However, there still is much to be developed. The nonlinear case may lead to the study of the discourse sheaf with a contra-domain category different from VectVect (for example, the category of lattices). We also may change the category into the domain: since graphs only consider pairwise communication we may want to replace them by hypergraphs to study the multi-body interactions. Note that cellular sheaf theory provides a general setting that allows higher nn-cells. Such a framework should be useful to discuss simultaneous interactions in larger groups, but would require interpretation for the cohomology in higher degrees. Those are just a few examples of what we have to explore!

Finally, observe that we require just a few category theory notions, which were used to model the problem but the calculations are not from category theory. This is great to call attention to non-category theorists and apply analogous ideas in different contexts, with techniques already known from dynamical systems, for example. Certainly, it will be interesting to follow the next steps of applied cellular sheaf theory. -->]]></content><author><name>Juli O&apos;Connor</name><email>sjoconno@andrew.cmu.edu</email></author><summary type="html"><![CDATA[A blog post I wrote with Ana Luiza Tenório as part of the Adjoint School 2022 program, titled “Learning to Lie with Sheaves”. A link to the blog post on the n-Category Café can be found here.]]></summary></entry></feed>